From cf88a65f309b5681002664ac0f9ac7abec7d6d49 Mon Sep 17 00:00:00 2001 From: Heinrich Fenkart Date: Wed, 29 Oct 2014 06:47:51 +0200 Subject: Fix customizer download with Firefox. --- docs/assets/js/src/customizer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'docs/assets/js/src') diff --git a/docs/assets/js/src/customizer.js b/docs/assets/js/src/customizer.js index c1c7d7971..aab7298ae 100644 --- a/docs/assets/js/src/customizer.js +++ b/docs/assets/js/src/customizer.js @@ -466,7 +466,7 @@ window.onload = function () { // wait for load in a dumb way because B-0 generateZip(generateCSS(preamble), generateJS(preamble), generateFonts(), configJson, function (blob) { $compileBtn.removeAttr('disabled') - saveAs(blob, 'bootstrap.zip') + setTimeout(function () { saveAs(blob, 'bootstrap.zip') }, 0) }) }) }); -- cgit v1.2.3 From 94b59b57d6cae8ba6503b3040d361a4efda5cdc6 Mon Sep 17 00:00:00 2001 From: Mark Otto Date: Wed, 29 Oct 2014 08:56:20 -0700 Subject: version bump --- docs/assets/js/src/customizer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'docs/assets/js/src') diff --git a/docs/assets/js/src/customizer.js b/docs/assets/js/src/customizer.js index aab7298ae..1f0382dc7 100644 --- a/docs/assets/js/src/customizer.js +++ b/docs/assets/js/src/customizer.js @@ -11,7 +11,7 @@ window.onload = function () { // wait for load in a dumb way because B-0 'use strict'; var cw = '/*!\n' + - ' * Bootstrap v3.2.0 (http://getbootstrap.com)\n' + + ' * Bootstrap v3.3.0 (http://getbootstrap.com)\n' + ' * Copyright 2011-2014 Twitter, Inc.\n' + ' * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n' + ' */\n\n' -- cgit v1.2.3 From 12b3ba72787eedec75edd0af7c01616184930068 Mon Sep 17 00:00:00 2001 From: Heinrich Fenkart Date: Fri, 31 Oct 2014 10:58:03 +0100 Subject: Customizer: listen to the right event for manual file selection in import --- docs/assets/js/src/customizer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'docs/assets/js/src') diff --git a/docs/assets/js/src/customizer.js b/docs/assets/js/src/customizer.js index 1f0382dc7..8d9f5f7e0 100644 --- a/docs/assets/js/src/customizer.js +++ b/docs/assets/js/src/customizer.js @@ -401,7 +401,7 @@ window.onload = function () { // wait for load in a dumb way because B-0 .on('drop', handleConfigFileSelect) } - $('#import-file-select').on('select', handleConfigFileSelect) + $('#import-file-select').on('change', handleConfigFileSelect) $('#import-manual-trigger').on('click', removeImportAlerts) var inputsComponent = $('#less-section input') -- cgit v1.2.3 From 594831f4f3f3c1164812cfdd60497fe6d7438376 Mon Sep 17 00:00:00 2001 From: Chris Rebert Date: Mon, 3 Nov 2014 13:37:27 -0800 Subject: Add event.relatedTarget + `data-*` example to Modal docs Fixes #14245 --- docs/assets/js/src/application.js | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'docs/assets/js/src') diff --git a/docs/assets/js/src/application.js b/docs/assets/js/src/application.js index 571645e5f..c85c59dae 100644 --- a/docs/assets/js/src/application.js +++ b/docs/assets/js/src/application.js @@ -109,6 +109,17 @@ }, 3000) }) + // Modal relatedTarget demo + $('#exampleModal').on('show.bs.modal', function (event) { + var button = $(event.relatedTarget) // Button that triggered the modal + var recipient = button.data('whatever') // Extract info from data-* attributes + // If necessary, you could initiate an AJAX request here (and then do the updating in a callback). + // Update the modal's content. We'll use jQuery here, but you could use a data binding library or other methods instead. + var modal = $(this) + modal.find('.modal-title').text('New message to ' + recipient) + modal.find('.modal-body input').val(recipient) + }) + // Activate animated progress bar $('.bs-docs-activate-animated-progressbar').on('click', function () { $(this).siblings('.progress').find('.progress-bar-striped').toggleClass('active') -- cgit v1.2.3 From d10700427805c40497b24d7f4ffdd58a7a83c997 Mon Sep 17 00:00:00 2001 From: Heinrich Fenkart Date: Mon, 3 Nov 2014 16:19:40 +0100 Subject: Remove duplicate code from Customizer/Gruntfile by sharing it --- docs/assets/js/src/customizer.js | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) (limited to 'docs/assets/js/src') diff --git a/docs/assets/js/src/customizer.js b/docs/assets/js/src/customizer.js index 8d9f5f7e0..b2f15dfa0 100644 --- a/docs/assets/js/src/customizer.js +++ b/docs/assets/js/src/customizer.js @@ -6,13 +6,13 @@ * details, see http://creativecommons.org/licenses/by/3.0/. */ -/* global JSZip, less, saveAs, UglifyJS, __js, __less, __fonts */ +/* global JSZip, less, saveAs, UglifyJS, __configBridge, __js, __less, __fonts */ window.onload = function () { // wait for load in a dumb way because B-0 'use strict'; var cw = '/*!\n' + ' * Bootstrap v3.3.0 (http://getbootstrap.com)\n' + - ' * Copyright 2011-2014 Twitter, Inc.\n' + + ' * Copyright 2011-' + new Date().getFullYear() + ' Twitter, Inc.\n' + ' * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n' + ' */\n\n' @@ -319,19 +319,8 @@ window.onload = function () { // wait for load in a dumb way because B-0 function generateJS(preamble) { var $checked = $('#plugin-section input:checked') - var jqueryCheck = [ - 'if (typeof jQuery === \'undefined\') {', - ' throw new Error(\'Bootstrap\\\'s JavaScript requires jQuery\')', - '}\n' - ].join('\n') - var jqueryVersionCheck = [ - '+function ($) {', - ' var version = $.fn.jquery.split(\' \')[0].split(\'.\')', - ' if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) {', - ' throw new Error(\'Bootstrap\\\'s JavaScript requires jQuery version 1.9.1 or higher\')', - ' }', - '}(jQuery);\n\n' - ].join('\n') + var jqueryCheck = __configBridge.jqueryCheck.join('\n') + var jqueryVersionCheck = __configBridge.jqueryVersionCheck.join('\n') if (!$checked.length) return false -- cgit v1.2.3 From 15820391935170f9f7110a1d2d135044c95f722b Mon Sep 17 00:00:00 2001 From: Heinrich Fenkart Date: Mon, 3 Nov 2014 14:32:38 +0100 Subject: Use autoprefixer for Customizer builds --- docs/assets/js/src/customizer.js | 41 +++++++++++++++++++++++++++++----------- 1 file changed, 30 insertions(+), 11 deletions(-) (limited to 'docs/assets/js/src') diff --git a/docs/assets/js/src/customizer.js b/docs/assets/js/src/customizer.js index b2f15dfa0..b0fefb0f0 100644 --- a/docs/assets/js/src/customizer.js +++ b/docs/assets/js/src/customizer.js @@ -6,7 +6,7 @@ * details, see http://creativecommons.org/licenses/by/3.0/. */ -/* global JSZip, less, saveAs, UglifyJS, __configBridge, __js, __less, __fonts */ +/* global JSZip, less, autoprefixer, saveAs, UglifyJS, __configBridge, __js, __less, __fonts */ window.onload = function () { // wait for load in a dumb way because B-0 'use strict'; @@ -251,6 +251,7 @@ window.onload = function () { // wait for load in a dumb way because B-0 } function compileLESS(lessSource, baseFilename, intoResult) { + var promise = $.Deferred() var parser = new less.Parser({ paths: ['variables.less', 'mixins.less'], optimization: 0, @@ -259,14 +260,18 @@ window.onload = function () { // wait for load in a dumb way because B-0 parser.parse(lessSource, function (err, tree) { if (err) { - return showError('Ruh roh! Could not parse less files.', err) + return promise.reject(err) } intoResult[baseFilename + '.css'] = cw + tree.toCSS() intoResult[baseFilename + '.min.css'] = cw + tree.toCSS({ compress: true }) + promise.resolve() }) + + return promise.promise() } function generateCSS(preamble) { + var promise = $.Deferred() var oneChecked = false var lessFileIncludes = {} $('#less-section input').each(function () { @@ -290,14 +295,22 @@ window.onload = function () { // wait for load in a dumb way because B-0 var bsLessSource = preamble + generateLESS('bootstrap.less', lessFileIncludes, vars) var themeLessSource = preamble + generateLESS('theme.less', lessFileIncludes, vars) - try { - compileLESS(bsLessSource, 'bootstrap', result) + var prefixer = autoprefixer({ browsers: __configBridge.autoprefixerBrowsers }) + + $.when( + compileLESS(bsLessSource, 'bootstrap', result), compileLESS(themeLessSource, 'bootstrap-theme', result) - } catch (err) { - return showError('Ruh roh! Could not parse less files.', err) - } + ).done(function () { + for (var key in result) { + result[key] = prefixer.process(result[key]).css + } + promise.resolve(result) + }).fail(function (err) { + showError('Ruh roh! Could not parse less files.', err) + promise.reject() + }) - return result + return promise.promise() } function uglify(js) { @@ -453,9 +466,15 @@ window.onload = function () { // wait for load in a dumb way because B-0 ' * Config saved to config.json and ' + gistUrl + '\n' + ' */\n' - generateZip(generateCSS(preamble), generateJS(preamble), generateFonts(), configJson, function (blob) { - $compileBtn.removeAttr('disabled') - setTimeout(function () { saveAs(blob, 'bootstrap.zip') }, 0) + $.when( + generateCSS(preamble), + generateJS(preamble), + generateFonts() + ).done(function (css, js, fonts) { + generateZip(css, js, fonts, configJson, function (blob) { + $compileBtn.removeAttr('disabled') + setTimeout(function () { saveAs(blob, 'bootstrap.zip') }, 0) + }) }) }) }); -- cgit v1.2.3 From d77546963b823629c86fcbec949d9fd895fc0922 Mon Sep 17 00:00:00 2001 From: Heinrich Fenkart Date: Wed, 5 Nov 2014 19:10:48 +0100 Subject: Customizer: Remove file type check from config import Fixes #14978. --- docs/assets/js/src/customizer.js | 32 +++++++++++++------------------- 1 file changed, 13 insertions(+), 19 deletions(-) (limited to 'docs/assets/js/src') diff --git a/docs/assets/js/src/customizer.js b/docs/assets/js/src/customizer.js index b0fefb0f0..407427a15 100644 --- a/docs/assets/js/src/customizer.js +++ b/docs/assets/js/src/customizer.js @@ -361,32 +361,26 @@ window.onload = function () { // wait for load in a dumb way because B-0 var file = (e.originalEvent.hasOwnProperty('dataTransfer')) ? e.originalEvent.dataTransfer.files[0] : e.originalEvent.target.files[0] - if (!file.type.match('application/json')) { - return showAlert('danger', 'Ruh roh. We can only read .json files. Please try again.', importDropTarget) - } - var reader = new FileReader() - reader.onload = (function () { - return function (e) { - var text = e.target.result + reader.onload = function (e) { + var text = e.target.result - try { - var json = JSON.parse(text) - - if (typeof json != 'object') { - throw new Error('JSON data from config file is not an object.') - } + try { + var json = JSON.parse(text) - updateCustomizerFromJson(json) - showAlert('success', 'Woohoo! Your configuration was successfully uploaded. Tweak your settings, then hit Download.', importDropTarget) - } catch (err) { - return showAlert('danger', 'Shucks. We can only read valid .json files. Please try again.', importDropTarget) + if (!$.isPlainObject(json)) { + throw new Error('JSON data from config file is not an object.') } + + updateCustomizerFromJson(json) + showAlert('success', 'Woohoo! Your configuration was successfully uploaded. Tweak your settings, then hit Download.', importDropTarget) + } catch (err) { + return showAlert('danger', 'Shucks. We can only read valid .json files. Please try again.', importDropTarget) } - })(file) + } - reader.readAsText(file) + reader.readAsText(file, 'utf-8') } function handleConfigDragOver(e) { -- cgit v1.2.3 From 9391ef207ff05f28e3952afdb92639c02b5920f5 Mon Sep 17 00:00:00 2001 From: "Patrick H. Lauke" Date: Tue, 11 Nov 2014 22:41:21 +0000 Subject: aria-hidden added to some stray glyphicons plus minor tweak to customizer's generated alerts --- docs/assets/js/src/customizer.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'docs/assets/js/src') diff --git a/docs/assets/js/src/customizer.js b/docs/assets/js/src/customizer.js index 407427a15..773db8549 100644 --- a/docs/assets/js/src/customizer.js +++ b/docs/assets/js/src/customizer.js @@ -22,8 +22,8 @@ window.onload = function () { // wait for load in a dumb way because B-0 function showError(msg, err) { $('
' + '
' + - '×' + - '

' + msg + '

' + + '' + + '

Warning:' + msg + '

' + (err.extract ? '
' + err.extract.join('\n') + '
' : '') + '
' + '
').appendTo('body').alert() @@ -32,7 +32,7 @@ window.onload = function () { // wait for load in a dumb way because B-0 function showSuccess(msg) { $('
' + - '' + msg + + '' + msg + '
').insertAfter('.bs-customize-download') } @@ -50,7 +50,7 @@ window.onload = function () { // wait for load in a dumb way because B-0 } function showAlert(type, msg, insertAfter) { - $('
' + msg + '
') + $('
' + msg + '
') .insertAfter(insertAfter) } -- cgit v1.2.3