mirror of
https://github.com/twbs/bootstrap.git
synced 2025-08-01 03:10:14 +02:00
first prototype of new customizer
This commit is contained in:
24
Gruntfile.js
24
Gruntfile.js
@@ -34,6 +34,7 @@ module.exports = function(grunt) {
|
|||||||
src: ['js/tests/unit/*.js']
|
src: ['js/tests/unit/*.js']
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
concat: {
|
concat: {
|
||||||
options: {
|
options: {
|
||||||
banner: '<%= banner %><%= jqueryCheck %>',
|
banner: '<%= banner %><%= jqueryCheck %>',
|
||||||
@@ -57,6 +58,7 @@ module.exports = function(grunt) {
|
|||||||
dest: 'dist/js/<%= pkg.name %>.js'
|
dest: 'dist/js/<%= pkg.name %>.js'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
uglify: {
|
uglify: {
|
||||||
options: {
|
options: {
|
||||||
banner: '<%= banner %>'
|
banner: '<%= banner %>'
|
||||||
@@ -90,6 +92,7 @@ module.exports = function(grunt) {
|
|||||||
},
|
},
|
||||||
files: ['js/tests/*.html']
|
files: ['js/tests/*.html']
|
||||||
},
|
},
|
||||||
|
|
||||||
connect: {
|
connect: {
|
||||||
server: {
|
server: {
|
||||||
options: {
|
options: {
|
||||||
@@ -141,4 +144,25 @@ module.exports = function(grunt) {
|
|||||||
|
|
||||||
// Default task.
|
// Default task.
|
||||||
grunt.registerTask('default', ['test', 'dist']);
|
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 -->
|
<!-- Callout for the old docs link -->
|
||||||
{% include old-bs-docs.html %}
|
{% include old-bs-docs.html %}
|
||||||
|
|
||||||
<div class="bs-customize-placeholder">
|
<div class="container bs-docs-container">
|
||||||
<div class="container bs-docs-container">
|
<div class="col-lg-12">
|
||||||
<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>
|
{{ content }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@@ -73,88 +73,6 @@
|
|||||||
|
|
||||||
// carousel demo
|
// carousel demo
|
||||||
$('.bs-docs-carousel-example').carousel()
|
$('.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)
|
}(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
Reference in New Issue
Block a user