mirror of
https://github.com/twbs/bootstrap.git
synced 2025-01-17 21:49:09 +01:00
first prototype of new customizer
This commit is contained in:
parent
5db9a10138
commit
b35b65d0b3
24
Gruntfile.js
24
Gruntfile.js
@ -34,6 +34,7 @@ module.exports = function(grunt) {
|
||||
src: ['js/tests/unit/*.js']
|
||||
}
|
||||
},
|
||||
|
||||
concat: {
|
||||
options: {
|
||||
banner: '<%= banner %><%= jqueryCheck %>',
|
||||
@ -57,6 +58,7 @@ module.exports = function(grunt) {
|
||||
dest: 'dist/js/<%= pkg.name %>.js'
|
||||
}
|
||||
},
|
||||
|
||||
uglify: {
|
||||
options: {
|
||||
banner: '<%= banner %>'
|
||||
@ -90,6 +92,7 @@ module.exports = function(grunt) {
|
||||
},
|
||||
files: ['js/tests/*.html']
|
||||
},
|
||||
|
||||
connect: {
|
||||
server: {
|
||||
options: {
|
||||
@ -141,4 +144,25 @@ module.exports = function(grunt) {
|
||||
|
||||
// Default task.
|
||||
grunt.registerTask('default', ['test', 'dist']);
|
||||
|
||||
// task for building customizer
|
||||
grunt.registerTask('build-customizer', 'Add scripts/less files to customizer.', function () {
|
||||
var fs = require('fs')
|
||||
|
||||
function getFiles(type) {
|
||||
var files = {}
|
||||
fs.readdirSync(type)
|
||||
.filter(function (path) {
|
||||
return new RegExp('\\.' + type + '$').test(path)
|
||||
})
|
||||
.forEach(function (path) {
|
||||
return files[path] = fs.readFileSync(type + '/' + path, 'utf8')
|
||||
})
|
||||
return 'var __' + type + ' = ' + JSON.stringify(files) + '\n'
|
||||
}
|
||||
|
||||
var customize = fs.readFileSync('customize.html', 'utf-8')
|
||||
var files = '<!-- generated -->\n<script id="files">\n' + getFiles('js') + getFiles('less') + '<\/script>\n<!-- /generated -->'
|
||||
fs.writeFileSync('customize.html', customize.replace(/<!-- generated -->(.|[\n\r])*<!-- \/generated -->/, files))
|
||||
});
|
||||
};
|
||||
|
@ -22,9 +22,9 @@
|
||||
<!-- Callout for the old docs link -->
|
||||
{% include old-bs-docs.html %}
|
||||
|
||||
<div class="bs-customize-placeholder">
|
||||
<div class="container bs-docs-container">
|
||||
<p class="lead">Until RC2, the Bootstrap 3 customizer will be disabled. In the mean time, snag the <a href="{{ site.repo }}/releases">compiled CSS and JavaScript</a>. Hang tight!</p>
|
||||
<div class="container bs-docs-container">
|
||||
<div class="col-lg-12">
|
||||
{{ content }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -73,88 +73,6 @@
|
||||
|
||||
// carousel demo
|
||||
$('.bs-docs-carousel-example').carousel()
|
||||
|
||||
// javascript build logic
|
||||
var inputsComponent = $("#less input")
|
||||
, inputsPlugin = $("#plugins input")
|
||||
, inputsVariables = $("#less-variables input")
|
||||
|
||||
// toggle all plugin checkboxes
|
||||
$('#less .toggle').on('click', function (e) {
|
||||
e.preventDefault()
|
||||
inputsComponent.prop('checked', !inputsComponent.is(':checked'))
|
||||
})
|
||||
|
||||
$('#plugins .toggle').on('click', function (e) {
|
||||
e.preventDefault()
|
||||
inputsPlugin.prop('checked', !inputsPlugin.is(':checked'))
|
||||
})
|
||||
|
||||
$('#less-variables .toggle').on('click', function (e) {
|
||||
e.preventDefault()
|
||||
inputsVariables.val('')
|
||||
})
|
||||
|
||||
// request built javascript
|
||||
$('.bs-customize-download .btn').on('click', function (e) {
|
||||
e.preventDefault()
|
||||
|
||||
var css = $("#less input:checked")
|
||||
.map(function () { return this.value })
|
||||
.toArray()
|
||||
, js = $("#plugins input:checked")
|
||||
.map(function () { return this.value })
|
||||
.toArray()
|
||||
, vars = {}
|
||||
|
||||
$("#less-variables input")
|
||||
.each(function () {
|
||||
$(this).val() && (vars[ $(this).prev().text() ] = $(this).val())
|
||||
})
|
||||
|
||||
$.ajax({
|
||||
type: 'POST'
|
||||
, url: /localhost/.test(window.location) ? 'http://localhost:9001' : 'http://bootstrap.herokuapp.com'
|
||||
, dataType: 'jsonpi'
|
||||
, params: {
|
||||
js: js
|
||||
, css: css
|
||||
, vars: vars
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
// Modified from the original jsonpi https://github.com/benvinegar/jquery-jsonpi
|
||||
$.ajaxTransport('jsonpi', function(opts, originalOptions, jqXHR) {
|
||||
var url = opts.url;
|
||||
|
||||
return {
|
||||
send: function(_, completeCallback) {
|
||||
var name = 'jQuery_iframe_' + jQuery.now()
|
||||
, iframe, form
|
||||
|
||||
iframe = $('<iframe>')
|
||||
.attr('name', name)
|
||||
.appendTo('head')
|
||||
|
||||
form = $('<form>')
|
||||
.attr('method', opts.type) // GET or POST
|
||||
.attr('action', url)
|
||||
.attr('target', name)
|
||||
|
||||
$.each(opts.params, function(k, v) {
|
||||
|
||||
$('<input>')
|
||||
.attr('type', 'hidden')
|
||||
.attr('name', k)
|
||||
.attr('value', typeof v == 'string' ? v : JSON.stringify(v))
|
||||
.appendTo(form)
|
||||
})
|
||||
|
||||
form.appendTo('body').submit()
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
}(window.jQuery)
|
||||
|
1425
assets/js/jszip.js
Normal file
1425
assets/js/jszip.js
Normal file
File diff suppressed because it is too large
Load Diff
9
assets/js/less.js
Normal file
9
assets/js/less.js
Normal file
File diff suppressed because one or more lines are too long
14
assets/js/uglify.js
Normal file
14
assets/js/uglify.js
Normal file
File diff suppressed because one or more lines are too long
140
customize.html
140
customize.html
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user