Comply to the new style.

This commit is contained in:
XhmikosR 2014-03-17 09:12:55 +02:00
parent 5ef9383f53
commit 7b0acf14d8
24 changed files with 171 additions and 152 deletions

View File

@ -232,7 +232,7 @@ module.exports = function (grunt) {
core: { core: {
files: { files: {
'dist/css/<%= pkg.name %>.min.css': 'dist/css/<%= pkg.name %>.css', 'dist/css/<%= pkg.name %>.min.css': 'dist/css/<%= pkg.name %>.css',
'dist/css/<%= pkg.name %>-theme.min.css': 'dist/css/<%= pkg.name %>-theme.css', 'dist/css/<%= pkg.name %>-theme.min.css': 'dist/css/<%= pkg.name %>-theme.css'
} }
}, },
docs: { docs: {
@ -314,9 +314,9 @@ module.exports = function (grunt) {
pretty: true, pretty: true,
data: function () { data: function () {
var filePath = path.join(__dirname, 'less/variables.less'); var filePath = path.join(__dirname, 'less/variables.less');
var fileContent = fs.readFileSync(filePath, {encoding: 'utf8'}); var fileContent = fs.readFileSync(filePath, { encoding: 'utf8' });
var parser = new BsLessdocParser(fileContent); var parser = new BsLessdocParser(fileContent);
return {sections: parser.parseFile()}; return { sections: parser.parseFile() };
} }
}, },
files: { files: {
@ -391,7 +391,7 @@ module.exports = function (grunt) {
// These plugins provide necessary tasks. // These plugins provide necessary tasks.
require('load-grunt-tasks')(grunt, {scope: 'devDependencies'}); require('load-grunt-tasks')(grunt, { scope: 'devDependencies' });
require('time-grunt')(grunt); require('time-grunt')(grunt);
// Docs HTML validation task // Docs HTML validation task

View File

@ -11,6 +11,7 @@
!function ($) { !function ($) {
'use strict';
$(function () { $(function () {

View File

@ -6,7 +6,10 @@
* details, see http://creativecommons.org/licenses/by/3.0/. * details, see http://creativecommons.org/licenses/by/3.0/.
*/ */
/* global JSZip, less, saveAs, UglifyJS, __js, __less, __fonts */
window.onload = function () { // wait for load in a dumb way because B-0 window.onload = function () { // wait for load in a dumb way because B-0
'use strict';
var cw = '/*!\n' + var cw = '/*!\n' +
' * Bootstrap v3.1.1 (http://getbootstrap.com)\n' + ' * Bootstrap v3.1.1 (http://getbootstrap.com)\n' +
' * Copyright 2011-2014 Twitter, Inc.\n' + ' * Copyright 2011-2014 Twitter, Inc.\n' +
@ -159,7 +162,7 @@ window.onload = function () { // wait for load in a dumb way because B-0
if (fonts) { if (fonts) {
var fontsFolder = zip.folder('fonts') var fontsFolder = zip.folder('fonts')
for (var fontsFileName in fonts) { for (var fontsFileName in fonts) {
fontsFolder.file(fontsFileName, fonts[fontsFileName], {base64: true}) fontsFolder.file(fontsFileName, fonts[fontsFileName], { base64: true })
} }
} }
@ -217,7 +220,7 @@ window.onload = function () { // wait for load in a dumb way because B-0
var lessSource = __less[lessFilename] var lessSource = __less[lessFilename]
var lessFilenames = includedLessFilenames(lessFilename) var lessFilenames = includedLessFilenames(lessFilename)
$.each(lessFilenames, function(index, filename) { $.each(lessFilenames, function (index, filename) {
var fileInclude = lessFileIncludes[filename] var fileInclude = lessFileIncludes[filename]
// Files not explicitly unchecked are compiled into the final stylesheet. // Files not explicitly unchecked are compiled into the final stylesheet.
@ -254,7 +257,7 @@ window.onload = function () { // wait for load in a dumb way because B-0
function generateCSS(preamble) { function generateCSS(preamble) {
var oneChecked = false var oneChecked = false
var lessFileIncludes = {} var lessFileIncludes = {}
$('#less-section input').each(function() { $('#less-section input').each(function () {
var $this = $(this) var $this = $(this)
var checked = $this.is(':checked') var checked = $this.is(':checked')
lessFileIncludes[$this.val()] = checked lessFileIncludes[$this.val()] = checked
@ -405,7 +408,7 @@ window.onload = function () { // wait for load in a dumb way because B-0
var url = window.webkitURL || window.URL // Safari 6 uses "webkitURL". var url = window.webkitURL || window.URL // Safari 6 uses "webkitURL".
var svg = new Blob( var svg = new Blob(
['<svg xmlns=\'http://www.w3.org/2000/svg\'></svg>'], ['<svg xmlns=\'http://www.w3.org/2000/svg\'></svg>'],
{type: 'image/svg+xml;charset=utf-8'} { type: 'image/svg+xml;charset=utf-8' }
) )
var objectUrl = url.createObjectURL(svg); var objectUrl = url.createObjectURL(svg);
if (/^blob:/.exec(objectUrl) === null) { if (/^blob:/.exec(objectUrl) === null) {

View File

@ -9,6 +9,7 @@
// http://getbootstrap.com/getting-started/#support-ie10-width // http://getbootstrap.com/getting-started/#support-ie10-width
(function () { (function () {
'use strict';
if (navigator.userAgent.match(/IEMobile\/10\.0/)) { if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
var msViewportStyle = document.createElement('style') var msViewportStyle = document.createElement('style')
msViewportStyle.appendChild( msViewportStyle.appendChild(

View File

@ -9,5 +9,5 @@
*/ */
// Intended to prevent false-positive bug reports about responsive styling supposedly not working in IE8. // Intended to prevent false-positive bug reports about responsive styling supposedly not working in IE8.
if (window.location.protocol == 'file:') { if (window.location.protocol == 'file:') {
alert('ERROR: Bootstrap\'s responsive CSS is disabled!\nSee getbootstrap.com/getting-started/#respond-file-proto for details.') window.alert('ERROR: Bootstrap\'s responsive CSS is disabled!\nSee getbootstrap.com/getting-started/#respond-file-proto for details.')
} }

View File

@ -103,7 +103,7 @@
$next = this.$element.find('.item')[fallback]() $next = this.$element.find('.item')[fallback]()
} }
if ($next.hasClass('active')) return this.sliding = false if ($next.hasClass('active')) return (this.sliding = false)
var relatedTarget = $next[0] var relatedTarget = $next[0]
var slideEvent = $.Event('slide.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) var slideEvent = $.Event('slide.bs.carousel', { relatedTarget: relatedTarget, direction: direction })
@ -185,7 +185,8 @@
// ================= // =================
$(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) { $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {
var $this = $(this), href var href
var $this = $(this)
var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
var options = $.extend({}, $target.data(), $this.data()) var options = $.extend({}, $target.data(), $this.data())
var slideIndex = $this.attr('data-slide-to') var slideIndex = $this.attr('data-slide-to')

View File

@ -159,7 +159,8 @@
// ================= // =================
$(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
var $this = $(this), href var href
var $this = $(this)
var target = $this.attr('data-target') var target = $this.attr('data-target')
|| e.preventDefault() || e.preventDefault()
|| (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7

View File

@ -188,7 +188,7 @@
} else if (!this.isShown && this.$backdrop) { } else if (!this.isShown && this.$backdrop) {
this.$backdrop.removeClass('in') this.$backdrop.removeClass('in')
var callbackRemove = function() { var callbackRemove = function () {
that.removeBackdrop() that.removeBackdrop()
callback && callback() callback && callback()
} }
@ -209,7 +209,7 @@
} }
Modal.prototype.setScrollbar = function () { Modal.prototype.setScrollbar = function () {
var bodyPad = parseInt(this.$body.css('padding-right') || 0) var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
if (this.scrollbarWidth) this.$body.css('padding-right', bodyPad + this.scrollbarWidth) if (this.scrollbarWidth) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)
} }

View File

@ -72,7 +72,7 @@
} }
Popover.prototype.arrow = function () { Popover.prototype.arrow = function () {
return this.$arrow = this.$arrow || this.tip().find('.arrow') return (this.$arrow = this.$arrow || this.tip().find('.arrow'))
} }
Popover.prototype.tip = function () { Popover.prototype.tip = function () {

View File

@ -43,7 +43,6 @@
this.offsets = $([]) this.offsets = $([])
this.targets = $([]) this.targets = $([])
var self = this var self = this
this.$body this.$body
@ -57,7 +56,7 @@
return ($href return ($href
&& $href.length && $href.length
&& $href.is(':visible') && $href.is(':visible')
&& [[ $href[offsetMethod]().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]]) || null && [[$href[offsetMethod]().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href]]) || null
}) })
.sort(function (a, b) { return a[0] - b[0] }) .sort(function (a, b) { return a[0] - b[0] })
.each(function () { .each(function () {
@ -87,7 +86,7 @@
activeTarget != targets[i] activeTarget != targets[i]
&& scrollTop >= offsets[i] && scrollTop >= offsets[i]
&& (!offsets[i + 1] || scrollTop <= offsets[i + 1]) && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
&& this.activate( targets[i] ) && this.activate(targets[i])
} }
} }

View File

@ -92,7 +92,7 @@
// TAB PLUGIN DEFINITION // TAB PLUGIN DEFINITION
// ===================== // =====================
function Plugin( option ) { function Plugin(option) {
return this.each(function () { return this.each(function () {
var $this = $(this) var $this = $(this)
var data = $this.data('bs.tab') var data = $this.data('bs.tab')

View File

@ -1,4 +1,5 @@
$(function () { $(function () {
'use strict';
module('affix plugin') module('affix plugin')
@ -7,11 +8,11 @@ $(function () {
}) })
module('affix', { module('affix', {
setup: function() { setup: function () {
// Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode // Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode
$.fn.bootstrapAffix = $.fn.affix.noConflict() $.fn.bootstrapAffix = $.fn.affix.noConflict()
}, },
teardown: function() { teardown: function () {
$.fn.affix = $.fn.bootstrapAffix $.fn.affix = $.fn.bootstrapAffix
delete $.fn.bootstrapAffix delete $.fn.bootstrapAffix
} }
@ -45,7 +46,7 @@ $(function () {
.on('affix.bs.affix', function () { .on('affix.bs.affix', function () {
ok(true, 'affix event triggered') ok(true, 'affix event triggered')
}).on('affixed.bs.affix', function () { }).on('affixed.bs.affix', function () {
ok(true,'affixed event triggered') ok(true, 'affixed event triggered')
$('#affixTarget').remove() $('#affixTarget').remove()
$('#affixAfter').remove() $('#affixAfter').remove()
start() start()
@ -53,7 +54,7 @@ $(function () {
setTimeout(function () { setTimeout(function () {
window.scrollTo(0, document.body.scrollHeight) window.scrollTo(0, document.body.scrollHeight)
setTimeout(function () { window.scroll(0,0) }, 0) setTimeout(function () { window.scroll(0, 0) }, 0)
},0) }, 0)
}) })
}) })

View File

@ -1,4 +1,5 @@
$(function () { $(function () {
'use strict';
module('alert plugin') module('alert plugin')
@ -7,11 +8,11 @@ $(function () {
}) })
module('alert', { module('alert', {
setup: function() { setup: function () {
// Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode // Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode
$.fn.bootstrapAlert = $.fn.alert.noConflict() $.fn.bootstrapAlert = $.fn.alert.noConflict()
}, },
teardown: function() { teardown: function () {
$.fn.alert = $.fn.bootstrapAlert $.fn.alert = $.fn.bootstrapAlert
delete $.fn.bootstrapAlert delete $.fn.bootstrapAlert
} }
@ -29,8 +30,8 @@ $(function () {
var alertHTML = '<div class="alert-message warning fade in">' + var alertHTML = '<div class="alert-message warning fade in">' +
'<a class="close" href="#" data-dismiss="alert">×</a>' + '<a class="close" href="#" data-dismiss="alert">×</a>' +
'<p><strong>Holy guacamole!</strong> Best check yo self, you\'re not looking too good.</p>' + '<p><strong>Holy guacamole!</strong> Best check yo self, you\'re not looking too good.</p>' +
'</div>', '</div>'
alert = $(alertHTML).bootstrapAlert() var alert = $(alertHTML).bootstrapAlert()
alert.find('.close').click() alert.find('.close').click()
@ -43,8 +44,8 @@ $(function () {
var alertHTML = '<div class="alert-message warning fade in">' + var alertHTML = '<div class="alert-message warning fade in">' +
'<a class="close" href="#" data-dismiss="alert">×</a>' + '<a class="close" href="#" data-dismiss="alert">×</a>' +
'<p><strong>Holy guacamole!</strong> Best check yo self, you\'re not looking too good.</p>' + '<p><strong>Holy guacamole!</strong> Best check yo self, you\'re not looking too good.</p>' +
'</div>', '</div>'
alert = $(alertHTML).appendTo('#qunit-fixture').bootstrapAlert() var alert = $(alertHTML).appendTo('#qunit-fixture').bootstrapAlert()
ok($('#qunit-fixture').find('.alert-message').length, 'element added to dom') ok($('#qunit-fixture').find('.alert-message').length, 'element added to dom')

View File

@ -1,4 +1,5 @@
$(function () { $(function () {
'use strict';
module('button plugin') module('button plugin')
@ -7,11 +8,11 @@ $(function () {
}) })
module('button', { module('button', {
setup: function() { setup: function () {
// Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode // Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode
$.fn.bootstrapButton = $.fn.button.noConflict() $.fn.bootstrapButton = $.fn.button.noConflict()
}, },
teardown: function() { teardown: function () {
$.fn.button = $.fn.bootstrapButton $.fn.button = $.fn.bootstrapButton
delete $.fn.bootstrapButton delete $.fn.bootstrapButton
} }
@ -88,8 +89,8 @@ $(function () {
}) })
test('should toggle active when btn children are clicked', function () { test('should toggle active when btn children are clicked', function () {
var btn = $('<button class="btn" data-toggle="button">mdo</button>'), var btn = $('<button class="btn" data-toggle="button">mdo</button>')
inner = $('<i></i>') var inner = $('<i></i>')
btn btn
.append(inner) .append(inner)
.appendTo($('#qunit-fixture')) .appendTo($('#qunit-fixture'))
@ -99,9 +100,9 @@ $(function () {
}) })
test('should toggle active when btn children are clicked within btn-group', function () { test('should toggle active when btn children are clicked within btn-group', function () {
var btngroup = $('<div class="btn-group" data-toggle="buttons"></div>'), var btngroup = $('<div class="btn-group" data-toggle="buttons"></div>')
btn = $('<button class="btn">fat</button>'), var btn = $('<button class="btn">fat</button>')
inner = $('<i></i>') var inner = $('<i></i>')
btngroup btngroup
.append(btn.append(inner)) .append(btn.append(inner))
.appendTo($('#qunit-fixture')) .appendTo($('#qunit-fixture'))

View File

@ -1,4 +1,5 @@
$(function () { $(function () {
'use strict';
module('carousel plugin') module('carousel plugin')
@ -7,11 +8,11 @@ $(function () {
}) })
module('carousel', { module('carousel', {
setup: function() { setup: function () {
// Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode // Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode
$.fn.bootstrapCarousel = $.fn.carousel.noConflict() $.fn.bootstrapCarousel = $.fn.carousel.noConflict()
}, },
teardown: function() { teardown: function () {
$.fn.carousel = $.fn.bootstrapCarousel $.fn.carousel = $.fn.bootstrapCarousel
delete $.fn.bootstrapCarousel delete $.fn.bootstrapCarousel
} }

View File

@ -1,4 +1,5 @@
$(function () { $(function () {
'use strict';
module('collapse plugin') module('collapse plugin')
@ -7,11 +8,11 @@ $(function () {
}) })
module('collapse', { module('collapse', {
setup: function() { setup: function () {
// Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode // Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode
$.fn.bootstrapCollapse = $.fn.collapse.noConflict() $.fn.bootstrapCollapse = $.fn.collapse.noConflict()
}, },
teardown: function() { teardown: function () {
$.fn.collapse = $.fn.bootstrapCollapse $.fn.collapse = $.fn.bootstrapCollapse
delete $.fn.bootstrapCollapse delete $.fn.bootstrapCollapse
} }

View File

@ -1,4 +1,5 @@
$(function () { $(function () {
'use strict';
module('dropdowns plugin') module('dropdowns plugin')
@ -7,11 +8,11 @@ $(function () {
}) })
module('dropdowns', { module('dropdowns', {
setup: function() { setup: function () {
// Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode // Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode
$.fn.bootstrapDropdown = $.fn.dropdown.noConflict() $.fn.bootstrapDropdown = $.fn.dropdown.noConflict()
}, },
teardown: function() { teardown: function () {
$.fn.dropdown = $.fn.bootstrapDropdown $.fn.dropdown = $.fn.bootstrapDropdown
delete $.fn.bootstrapDropdown delete $.fn.bootstrapDropdown
} }
@ -37,8 +38,8 @@ $(function () {
'<li><a href="#">Another link</a></li>' + '<li><a href="#">Another link</a></li>' +
'</ul>' + '</ul>' +
'</li>' + '</li>' +
'</ul>', '</ul>'
dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').bootstrapDropdown().click() var dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').bootstrapDropdown().click()
ok(!dropdown.parent('.dropdown').hasClass('open'), 'open class added on click') ok(!dropdown.parent('.dropdown').hasClass('open'), 'open class added on click')
}) })
@ -54,8 +55,8 @@ $(function () {
'<li><a href="#">Another link</a></li>' + '<li><a href="#">Another link</a></li>' +
'</ul>' + '</ul>' +
'</li>' + '</li>' +
'</ul>', '</ul>'
dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').bootstrapDropdown().click() var dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').bootstrapDropdown().click()
ok(!dropdown.parent('.dropdown').hasClass('open'), 'open class added on click') ok(!dropdown.parent('.dropdown').hasClass('open'), 'open class added on click')
}) })
@ -71,8 +72,8 @@ $(function () {
'<li><a href="#">Another link</a></li>' + '<li><a href="#">Another link</a></li>' +
'</ul>' + '</ul>' +
'</li>' + '</li>' +
'</ul>', '</ul>'
dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').bootstrapDropdown().click() var dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').bootstrapDropdown().click()
ok(dropdown.parent('.dropdown').hasClass('open'), 'open class added on click') ok(dropdown.parent('.dropdown').hasClass('open'), 'open class added on click')
}) })
@ -88,8 +89,8 @@ $(function () {
'<li><a href="#">Another link</a></li>' + '<li><a href="#">Another link</a></li>' +
'</ul>' + '</ul>' +
'</li>' + '</li>' +
'</ul>', '</ul>'
dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').bootstrapDropdown().click() var dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').bootstrapDropdown().click()
ok(dropdown.parent('.dropdown').hasClass('open'), 'open class added on click') ok(dropdown.parent('.dropdown').hasClass('open'), 'open class added on click')
}) })
@ -106,8 +107,8 @@ $(function () {
'<li><a href="#">Another link</a></li>' + '<li><a href="#">Another link</a></li>' +
'</ul>' + '</ul>' +
'</li>' + '</li>' +
'</ul>', '</ul>'
dropdown = $(dropdownHTML) var dropdown = $(dropdownHTML)
.appendTo('#qunit-fixture') .appendTo('#qunit-fixture')
.find('[data-toggle="dropdown"]') .find('[data-toggle="dropdown"]')
.bootstrapDropdown() .bootstrapDropdown()
@ -135,10 +136,10 @@ $(function () {
' <ul class="dropdown-menu">' + ' <ul class="dropdown-menu">' +
' <li><a href="#">Action 1</a></li>' + ' <li><a href="#">Action 1</a></li>' +
' </ul>' + ' </ul>' +
'</div>', '</div>'
dropdowns = $(dropdownHTML).appendTo('#qunit-fixture').find('[data-toggle="dropdown"]'), var dropdowns = $(dropdownHTML).appendTo('#qunit-fixture').find('[data-toggle="dropdown"]')
first = dropdowns.first(), var first = dropdowns.first()
last = dropdowns.last() var last = dropdowns.last()
ok(dropdowns.length == 2, 'Should be two dropdowns') ok(dropdowns.length == 2, 'Should be two dropdowns')
@ -168,8 +169,8 @@ $(function () {
'<li><a href="#">Another link</a></li>' + '<li><a href="#">Another link</a></li>' +
'</ul>' + '</ul>' +
'</li>' + '</li>' +
'</ul>', '</ul>'
dropdown = $(dropdownHTML) var dropdown = $(dropdownHTML)
.appendTo('#qunit-fixture') .appendTo('#qunit-fixture')
.find('[data-toggle="dropdown"]') .find('[data-toggle="dropdown"]')
.bootstrapDropdown() .bootstrapDropdown()
@ -202,8 +203,8 @@ $(function () {
'<li><a href="#">Another link</a></li>' + '<li><a href="#">Another link</a></li>' +
'</ul>' + '</ul>' +
'</li>' + '</li>' +
'</ul>', '</ul>'
dropdown = $(dropdownHTML) var dropdown = $(dropdownHTML)
.appendTo('#qunit-fixture') .appendTo('#qunit-fixture')
.find('[data-toggle="dropdown"]') .find('[data-toggle="dropdown"]')
.bootstrapDropdown() .bootstrapDropdown()

View File

@ -1,4 +1,5 @@
$(function () { $(function () {
'use strict';
module('modal plugin') module('modal plugin')
@ -8,11 +9,11 @@ $(function () {
}) })
module('modal', { module('modal', {
setup: function() { setup: function () {
// Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode // Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode
$.fn.bootstrapModal = $.fn.modal.noConflict() $.fn.bootstrapModal = $.fn.modal.noConflict()
}, },
teardown: function() { teardown: function () {
$.fn.modal = $.fn.bootstrapModal $.fn.modal = $.fn.bootstrapModal
delete $.fn.bootstrapModal delete $.fn.bootstrapModal
} }

View File

@ -1,4 +1,5 @@
$(function () { $(function () {
'use strict';
module('popover plugin') module('popover plugin')
@ -8,11 +9,11 @@ $(function () {
}) })
module('popover', { module('popover', {
setup: function() { setup: function () {
// Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode // Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode
$.fn.bootstrapPopover = $.fn.popover.noConflict() $.fn.bootstrapPopover = $.fn.popover.noConflict()
}, },
teardown: function() { teardown: function () {
$.fn.popover = $.fn.bootstrapPopover $.fn.popover = $.fn.bootstrapPopover
delete $.fn.bootstrapPopover delete $.fn.bootstrapPopover
} }
@ -83,7 +84,7 @@ $(function () {
test('should not duplicate HTML object', function () { test('should not duplicate HTML object', function () {
$.support.transition = false $.support.transition = false
$div = $('<div>').html('loves writing tests (╯°□°)╯︵ ┻━┻') var $div = $('<div>').html('loves writing tests (╯°□°)╯︵ ┻━┻')
var popover = $('<a href="#">@fat</a>') var popover = $('<a href="#">@fat</a>')
.appendTo('#qunit-fixture') .appendTo('#qunit-fixture')
@ -166,7 +167,7 @@ $(function () {
}) })
test('should destroy popover', function () { test('should destroy popover', function () {
var popover = $('<div/>').bootstrapPopover({trigger: 'hover'}).on('click.foo', function () {}) var popover = $('<div/>').bootstrapPopover({ trigger: 'hover' }).on('click.foo', function () {})
ok(popover.data('bs.popover'), 'popover has data') ok(popover.data('bs.popover'), 'popover has data')
ok($._data(popover[0], 'events').mouseover && $._data(popover[0], 'events').mouseout, 'popover has hover event') ok($._data(popover[0], 'events').mouseover && $._data(popover[0], 'events').mouseout, 'popover has hover event')
ok($._data(popover[0], 'events').click[0].namespace == 'foo', 'popover has extra click.foo event') ok($._data(popover[0], 'events').click[0].namespace == 'foo', 'popover has extra click.foo event')
@ -174,7 +175,7 @@ $(function () {
popover.bootstrapPopover('destroy') popover.bootstrapPopover('destroy')
ok(!popover.hasClass('in'), 'popover is hidden') ok(!popover.hasClass('in'), 'popover is hidden')
ok(!popover.data('popover'), 'popover does not have data') ok(!popover.data('popover'), 'popover does not have data')
ok($._data(popover[0],'events').click[0].namespace == 'foo', 'popover still has click.foo') ok($._data(popover[0], 'events').click[0].namespace == 'foo', 'popover still has click.foo')
ok(!$._data(popover[0], 'events').mouseover && !$._data(popover[0], 'events').mouseout, 'popover does not have any events') ok(!$._data(popover[0], 'events').mouseover && !$._data(popover[0], 'events').mouseout, 'popover does not have any events')
}) })

View File

@ -1,4 +1,5 @@
$(function () { $(function () {
'use strict';
module('scrollspy plugin') module('scrollspy plugin')
@ -7,11 +8,11 @@ $(function () {
}) })
module('scrollspy', { module('scrollspy', {
setup: function() { setup: function () {
// Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode // Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode
$.fn.bootstrapScrollspy = $.fn.scrollspy.noConflict() $.fn.bootstrapScrollspy = $.fn.scrollspy.noConflict()
}, },
teardown: function() { teardown: function () {
$.fn.scrollspy = $.fn.bootstrapScrollspy $.fn.scrollspy = $.fn.bootstrapScrollspy
delete $.fn.bootstrapScrollspy delete $.fn.bootstrapScrollspy
} }
@ -26,8 +27,9 @@ $(function () {
}) })
test('should switch active class on scroll', function () { test('should switch active class on scroll', function () {
var sectionHTML = '<div id="masthead"></div>', var sectionHTML = '<div id="masthead"></div>'
topbarHTML = '<div class="topbar">' + $(sectionHTML).append('#qunit-fixture')
var topbarHTML = '<div class="topbar">' +
'<div class="topbar-inner">' + '<div class="topbar-inner">' +
'<div class="container">' + '<div class="container">' +
'<h3><a href="#">Bootstrap</a></h3>' + '<h3><a href="#">Bootstrap</a></h3>' +
@ -35,8 +37,8 @@ $(function () {
'</ul>' + '</ul>' +
'</div>' + '</div>' +
'</div>' + '</div>' +
'</div>', '</div>'
$topbar = $(topbarHTML).bootstrapScrollspy() var $topbar = $(topbarHTML).bootstrapScrollspy()
$(sectionHTML).append('#qunit-fixture') $(sectionHTML).append('#qunit-fixture')
ok($topbar.find('.active', true)) ok($topbar.find('.active', true))
@ -69,12 +71,12 @@ $(function () {
'</p>' + '</p>' +
'</div>' + '</div>' +
'</div>' + '</div>' +
'</div>', '</div>'
$section = $(sectionHTML).appendTo('#qunit-fixture'), var $section = $(sectionHTML).appendTo('#qunit-fixture')
$scrollSpy = $section var $scrollSpy = $section
.show() .show()
.find('#scrollspy-example') .find('#scrollspy-example')
.bootstrapScrollspy({target: '#ss-target'}) .bootstrapScrollspy({ target: '#ss-target' })
$scrollSpy.on('scroll.bs.scrollspy', function () { $scrollSpy.on('scroll.bs.scrollspy', function () {
ok($section.hasClass('active'), 'Active class still on root node') ok($section.hasClass('active'), 'Active class still on root node')
@ -97,12 +99,12 @@ $(function () {
'<div id="one" style="height: 500px;"></div>' + '<div id="one" style="height: 500px;"></div>' +
'<div id="two" style="height: 300px;"></div>' + '<div id="two" style="height: 300px;"></div>' +
'<div id="three" style="height: 10px;"></div>' + '<div id="three" style="height: 10px;"></div>' +
'</div>', '</div>'
$section = $(sectionHTML).appendTo('#qunit-fixture'), var $section = $(sectionHTML).appendTo('#qunit-fixture')
$scrollSpy = $section var $scrollSpy = $section
.show() .show()
.filter('#content') .filter('#content')
$scrollSpy.bootstrapScrollspy({target: '#navigation', offset: $scrollSpy.position().top}) $scrollSpy.bootstrapScrollspy({ target: '#navigation', offset: $scrollSpy.position().top })
$scrollSpy.on('scroll.bs.scrollspy', function () { $scrollSpy.on('scroll.bs.scrollspy', function () {
ok(!$section.find('#one-link').parent().hasClass('active'), 'Active class removed from first section') ok(!$section.find('#one-link').parent().hasClass('active'), 'Active class removed from first section')

View File

@ -1,4 +1,5 @@
$(function () { $(function () {
'use strict';
module('tabs plugin') module('tabs plugin')
@ -7,11 +8,11 @@ $(function () {
}) })
module('tabs', { module('tabs', {
setup: function() { setup: function () {
// Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode // Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode
$.fn.bootstrapTab = $.fn.tab.noConflict() $.fn.bootstrapTab = $.fn.tab.noConflict()
}, },
teardown: function() { teardown: function () {
$.fn.tab = $.fn.bootstrapTab $.fn.tab = $.fn.bootstrapTab
delete $.fn.bootstrapTab delete $.fn.bootstrapTab
} }

View File

@ -1,4 +1,5 @@
$(function () { $(function () {
'use strict';
module('tooltip plugin') module('tooltip plugin')
@ -8,11 +9,11 @@ $(function () {
}) })
module('tooltip', { module('tooltip', {
setup: function() { setup: function () {
// Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode // Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode
$.fn.bootstrapTooltip = $.fn.tooltip.noConflict() $.fn.bootstrapTooltip = $.fn.tooltip.noConflict()
}, },
teardown: function() { teardown: function () {
$.fn.tooltip = $.fn.bootstrapTooltip $.fn.tooltip = $.fn.bootstrapTooltip
delete $.fn.bootstrapTooltip delete $.fn.bootstrapTooltip
} }
@ -41,7 +42,7 @@ $(function () {
equal(tooltip.attr('data-original-title'), 'Another tooltip', 'original title preserved in data attribute') equal(tooltip.attr('data-original-title'), 'Another tooltip', 'original title preserved in data attribute')
}) })
test('should add set set aria describedby to the element called on show', function() { test('should add set set aria describedby to the element called on show', function () {
var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>').bootstrapTooltip() var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>').bootstrapTooltip()
.appendTo('#qunit-fixture') .appendTo('#qunit-fixture')
.bootstrapTooltip('show') .bootstrapTooltip('show')
@ -53,7 +54,7 @@ $(function () {
ok(tooltip.attr('aria-describedby') !== undefined, 'has the right attributes') ok(tooltip.attr('aria-describedby') !== undefined, 'has the right attributes')
}) })
test('should remove the aria-describedby attributes on hide', function() { test('should remove the aria-describedby attributes on hide', function () {
var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>').bootstrapTooltip() var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>').bootstrapTooltip()
.appendTo('#qunit-fixture') .appendTo('#qunit-fixture')
.bootstrapTooltip('show') .bootstrapTooltip('show')
@ -65,17 +66,17 @@ $(function () {
test('should assign a unique id tooltip element', function () { test('should assign a unique id tooltip element', function () {
$('<a href="#" rel="tooltip" title="Another tooltip"></a>') $('<a href="#" rel="tooltip" title="Another tooltip"></a>')
.appendTo('#qunit-fixture') .appendTo('#qunit-fixture')
.bootstrapTooltip('show'), .bootstrapTooltip('show')
id = $('.tooltip').attr('id') var id = $('.tooltip').attr('id')
ok( $('#' + id).length == 1 && id.indexOf('tooltip') === 0, 'generated prefixed and unique tooltip id') ok($('#' + id).length == 1 && id.indexOf('tooltip') === 0, 'generated prefixed and unique tooltip id')
}) })
test('should place tooltips relative to placement option', function () { test('should place tooltips relative to placement option', function () {
$.support.transition = false $.support.transition = false
var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>') var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>')
.appendTo('#qunit-fixture') .appendTo('#qunit-fixture')
.bootstrapTooltip({placement: 'bottom'}) .bootstrapTooltip({ placement: 'bottom' })
.bootstrapTooltip('show') .bootstrapTooltip('show')
ok($('.tooltip').is('.fade.bottom.in'), 'has correct classes applied') ok($('.tooltip').is('.fade.bottom.in'), 'has correct classes applied')
@ -86,7 +87,7 @@ $(function () {
$.support.transition = false $.support.transition = false
var tooltip = $('<a href="#" rel="tooltip" title="<b>@fat</b>"></a>') var tooltip = $('<a href="#" rel="tooltip" title="<b>@fat</b>"></a>')
.appendTo('#qunit-fixture') .appendTo('#qunit-fixture')
.bootstrapTooltip({html: true}) .bootstrapTooltip({ html: true })
.bootstrapTooltip('show') .bootstrapTooltip('show')
ok($('.tooltip b').length, 'b tag was inserted') ok($('.tooltip b').length, 'b tag was inserted')
@ -97,7 +98,7 @@ $(function () {
test('should respect custom classes', function () { test('should respect custom classes', function () {
var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>') var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>')
.appendTo('#qunit-fixture') .appendTo('#qunit-fixture')
.bootstrapTooltip({ template: '<div class="tooltip some-class"><div class="tooltip-arrow"/><div class="tooltip-inner"/></div>'}) .bootstrapTooltip({ template: '<div class="tooltip some-class"><div class="tooltip-arrow"/><div class="tooltip-inner"/></div>' })
.bootstrapTooltip('show') .bootstrapTooltip('show')
ok($('.tooltip').hasClass('some-class'), 'custom class is present') ok($('.tooltip').hasClass('some-class'), 'custom class is present')
@ -204,7 +205,7 @@ $(function () {
test('should not show tooltip if leave event occurs before delay expires, even if hide delay is 0', function () { test('should not show tooltip if leave event occurs before delay expires, even if hide delay is 0', function () {
var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>') var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>')
.appendTo('#qunit-fixture') .appendTo('#qunit-fixture')
.bootstrapTooltip({ delay: { show: 200, hide: 0} }) .bootstrapTooltip({ delay: { show: 200, hide: 0 }})
stop() stop()
@ -223,7 +224,7 @@ $(function () {
test('should wait 200 ms before hiding the tooltip', 3, function () { test('should wait 200 ms before hiding the tooltip', 3, function () {
var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>') var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>')
.appendTo('#qunit-fixture') .appendTo('#qunit-fixture')
.bootstrapTooltip({ delay: { show: 0, hide: 200} }) .bootstrapTooltip({ delay: { show: 0, hide: 200 }})
stop() stop()
@ -245,7 +246,7 @@ $(function () {
test('should not hide tooltip if leave event occurs, then tooltip is show immediately again', function () { test('should not hide tooltip if leave event occurs, then tooltip is show immediately again', function () {
var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>') var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>')
.appendTo('#qunit-fixture') .appendTo('#qunit-fixture')
.bootstrapTooltip({ delay: { show: 0, hide: 200} }) .bootstrapTooltip({ delay: { show: 0, hide: 200 }})
stop() stop()
@ -320,7 +321,7 @@ $(function () {
test('should show tooltip when toggle is called', function () { test('should show tooltip when toggle is called', function () {
$('<a href="#" rel="tooltip" title="tooltip on toggle"></a>') $('<a href="#" rel="tooltip" title="tooltip on toggle"></a>')
.appendTo('#qunit-fixture') .appendTo('#qunit-fixture')
.bootstrapTooltip({trigger: 'manual'}) .bootstrapTooltip({ trigger: 'manual' })
.bootstrapTooltip('toggle') .bootstrapTooltip('toggle')
ok($('.tooltip').is('.fade.in'), 'tooltip should be toggled in') ok($('.tooltip').is('.fade.in'), 'tooltip should be toggled in')
}) })
@ -328,7 +329,7 @@ $(function () {
test('should hide shown tooltip when toggle is called on tooltip', function () { test('should hide shown tooltip when toggle is called on tooltip', function () {
var tooltip = $('<a href="#" rel="tooltip" title="tooltip on toggle">@ResentedHook</a>') var tooltip = $('<a href="#" rel="tooltip" title="tooltip on toggle">@ResentedHook</a>')
.appendTo('#qunit-fixture') .appendTo('#qunit-fixture')
.bootstrapTooltip({trigger: 'manual'}) .bootstrapTooltip({ trigger: 'manual' })
.bootstrapTooltip('toggle') .bootstrapTooltip('toggle')
$('.tooltip', '#qunit-fixture').bootstrapTooltip('toggle') $('.tooltip', '#qunit-fixture').bootstrapTooltip('toggle')
ok($('.tooltip').not('.fade.in'), 'tooltip should be toggled out') ok($('.tooltip').not('.fade.in'), 'tooltip should be toggled out')
@ -339,7 +340,7 @@ $(function () {
test('should place tooltips inside the body', function () { test('should place tooltips inside the body', function () {
var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>') var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>')
.appendTo('#qunit-fixture') .appendTo('#qunit-fixture')
.bootstrapTooltip({container: 'body'}) .bootstrapTooltip({ container: 'body' })
.bootstrapTooltip('show') .bootstrapTooltip('show')
ok($('body > .tooltip').length, 'inside the body') ok($('body > .tooltip').length, 'inside the body')
ok(!$('#qunit-fixture > .tooltip').length, 'not found in parent') ok(!$('#qunit-fixture > .tooltip').length, 'not found in parent')
@ -348,11 +349,11 @@ $(function () {
test('should place tooltip inside window', function () { test('should place tooltip inside window', function () {
var container = $('<div />').appendTo('body') var container = $('<div />').appendTo('body')
.css({position: 'absolute', width: 200, height: 200, bottom: 0, left: 0}) .css({ position: 'absolute', width: 200, height: 200, bottom: 0, left: 0 })
$('<a href="#" title="Very very very very very very very very long tooltip">Hover me</a>') $('<a href="#" title="Very very very very very very very very long tooltip">Hover me</a>')
.css({position: 'absolute', top: 0, left: 0}) .css({ position: 'absolute', top: 0, left: 0 })
.appendTo(container) .appendTo(container)
.bootstrapTooltip({placement: 'top', animate: false}) .bootstrapTooltip({ placement: 'top', animate: false })
.bootstrapTooltip('show') .bootstrapTooltip('show')
stop() stop()
@ -367,12 +368,12 @@ $(function () {
test('should place tooltip on top of element', function () { test('should place tooltip on top of element', function () {
var container = $('<div />').appendTo('body') var container = $('<div />').appendTo('body')
.css({position: 'absolute', bottom: 0, left: 0, textAlign: 'right', width: 300, height: 300}), .css({ position: 'absolute', bottom: 0, left: 0, textAlign: 'right', width: 300, height: 300 })
p = $('<p style="margin-top:200px" />').appendTo(container), var p = $('<p style="margin-top:200px" />').appendTo(container)
tooltiped = $('<a href="#" title="very very very very very very very long tooltip">Hover me</a>') var tooltiped = $('<a href="#" title="very very very very very very very long tooltip">Hover me</a>')
.css({marginTop: 200}) .css({ marginTop: 200 })
.appendTo(p) .appendTo(p)
.bootstrapTooltip({placement: 'top', animate: false}) .bootstrapTooltip({ placement: 'top', animate: false })
.bootstrapTooltip('show') .bootstrapTooltip('show')
stop() stop()
@ -389,17 +390,17 @@ $(function () {
test('should add position class before positioning so that position-specific styles are taken into account', function () { test('should add position class before positioning so that position-specific styles are taken into account', function () {
$('head').append('<style id="test"> .tooltip.right { white-space: nowrap; } .tooltip.right .tooltip-inner { max-width: none; } </style>') $('head').append('<style id="test"> .tooltip.right { white-space: nowrap; } .tooltip.right .tooltip-inner { max-width: none; } </style>')
var container = $('<div />').appendTo('body'), var container = $('<div />').appendTo('body')
target = $('<a href="#" rel="tooltip" title="very very very very very very very very long tooltip in one line"></a>') var target = $('<a href="#" rel="tooltip" title="very very very very very very very very long tooltip in one line"></a>')
.appendTo(container) .appendTo(container)
.bootstrapTooltip({placement: 'right', viewport: null}) .bootstrapTooltip({ placement: 'right', viewport: null })
.bootstrapTooltip('show'), .bootstrapTooltip('show')
tooltip = container.find('.tooltip') var tooltip = container.find('.tooltip')
// this is some dumb hack shit because sub pixels in firefox // this is some dumb hack shit because sub pixels in firefox
var top = Math.round(target.offset().top + (target[0].offsetHeight / 2) - (tooltip[0].offsetHeight / 2)) var top = Math.round(target.offset().top + (target[0].offsetHeight / 2) - (tooltip[0].offsetHeight / 2))
var top2 = Math.round(tooltip.offset().top) var top2 = Math.round(tooltip.offset().top)
var topDiff = top - top2 var topDiff = top - top2
ok(topDiff <= 1 && topDiff >= -1) ok(topDiff <= 1 && topDiff >= -1)
target.bootstrapTooltip('hide') target.bootstrapTooltip('hide')
$('head #test').remove() $('head #test').remove()
@ -453,7 +454,7 @@ $(function () {
var topTooltip = $('<div style="display: inline-block; position: absolute; left: 0; top: 0;" rel="tooltip" title="Top tooltip">Top Dynamic Tooltip</div>') var topTooltip = $('<div style="display: inline-block; position: absolute; left: 0; top: 0;" rel="tooltip" title="Top tooltip">Top Dynamic Tooltip</div>')
.appendTo('#dynamic-tt-test') .appendTo('#dynamic-tt-test')
.bootstrapTooltip({placement: 'auto'}) .bootstrapTooltip({ placement: 'auto' })
.bootstrapTooltip('show') .bootstrapTooltip('show')
ok($('.tooltip').is('.bottom'), 'top positioned tooltip is dynamically positioned bottom') ok($('.tooltip').is('.bottom'), 'top positioned tooltip is dynamically positioned bottom')
@ -462,7 +463,7 @@ $(function () {
var rightTooltip = $('<div style="display: inline-block; position: absolute; right: 0;" rel="tooltip" title="Right tooltip">Right Dynamic Tooltip</div>') var rightTooltip = $('<div style="display: inline-block; position: absolute; right: 0;" rel="tooltip" title="Right tooltip">Right Dynamic Tooltip</div>')
.appendTo('#dynamic-tt-test') .appendTo('#dynamic-tt-test')
.bootstrapTooltip({placement: 'right auto'}) .bootstrapTooltip({ placement: 'right auto' })
.bootstrapTooltip('show') .bootstrapTooltip('show')
ok($('.tooltip').is('.left'), 'right positioned tooltip is dynamically positioned left') ok($('.tooltip').is('.left'), 'right positioned tooltip is dynamically positioned left')
@ -470,7 +471,7 @@ $(function () {
var leftTooltip = $('<div style="display: inline-block; position: absolute; left: 0;" rel="tooltip" title="Left tooltip">Left Dynamic Tooltip</div>') var leftTooltip = $('<div style="display: inline-block; position: absolute; left: 0;" rel="tooltip" title="Left tooltip">Left Dynamic Tooltip</div>')
.appendTo('#dynamic-tt-test') .appendTo('#dynamic-tt-test')
.bootstrapTooltip({placement: 'auto left'}) .bootstrapTooltip({ placement: 'auto left' })
.bootstrapTooltip('show') .bootstrapTooltip('show')
ok($('.tooltip').is('.right'), 'left positioned tooltip is dynamically positioned right') ok($('.tooltip').is('.right'), 'left positioned tooltip is dynamically positioned right')
@ -482,14 +483,14 @@ $(function () {
test('should adjust the tip\'s top when up against the top of the viewport', function () { test('should adjust the tip\'s top when up against the top of the viewport', function () {
$('head').append('<style id="test"> .tooltip .tooltip-inner { width: 200px; height: 200px; max-width: none; } </style>') $('head').append('<style id="test"> .tooltip .tooltip-inner { width: 200px; height: 200px; max-width: none; } </style>')
var container = $('<div />').appendTo('body'), var container = $('<div />').appendTo('body')
target = $('<a href="#" rel="tooltip" title="tip" style="position: fixed; top: 0px; left: 0px;"></a>') var target = $('<a href="#" rel="tooltip" title="tip" style="position: fixed; top: 0px; left: 0px;"></a>')
.appendTo(container) .appendTo(container)
.bootstrapTooltip({placement: 'right', viewport: {selector: 'body', padding: 12}}) .bootstrapTooltip({ placement: 'right', viewport: { selector: 'body', padding: 12 }})
.bootstrapTooltip('show'), .bootstrapTooltip('show')
tooltip = container.find('.tooltip') var tooltip = container.find('.tooltip')
ok( Math.round(tooltip.offset().top) === 12 ) ok(Math.round(tooltip.offset().top) === 12)
target.bootstrapTooltip('hide') target.bootstrapTooltip('hide')
$('head #test').remove() $('head #test').remove()
}) })
@ -497,14 +498,14 @@ $(function () {
test('should adjust the tip\'s top when up against the bottom of the viewport', function () { test('should adjust the tip\'s top when up against the bottom of the viewport', function () {
$('head').append('<style id="test"> .tooltip .tooltip-inner { width: 200px; height: 200px; max-width: none; } </style>') $('head').append('<style id="test"> .tooltip .tooltip-inner { width: 200px; height: 200px; max-width: none; } </style>')
var container = $('<div />').appendTo('body'), var container = $('<div />').appendTo('body')
target = $('<a href="#" rel="tooltip" title="tip" style="position: fixed; bottom: 0px; left: 0px;"></a>') var target = $('<a href="#" rel="tooltip" title="tip" style="position: fixed; bottom: 0px; left: 0px;"></a>')
.appendTo(container) .appendTo(container)
.bootstrapTooltip({placement: 'right', viewport: {selector: 'body', padding: 12}}) .bootstrapTooltip({ placement: 'right', viewport: { selector: 'body', padding: 12 }})
.bootstrapTooltip('show'), .bootstrapTooltip('show')
tooltip = container.find('.tooltip') var tooltip = container.find('.tooltip')
ok( Math.round(tooltip.offset().top) === Math.round($(window).height() - 12 - tooltip[0].offsetHeight) ) ok(Math.round(tooltip.offset().top) === Math.round($(window).height() - 12 - tooltip[0].offsetHeight))
target.bootstrapTooltip('hide') target.bootstrapTooltip('hide')
$('head #test').remove() $('head #test').remove()
}) })
@ -512,14 +513,14 @@ $(function () {
test('should adjust the tip\'s left when up against the left of the viewport', function () { test('should adjust the tip\'s left when up against the left of the viewport', function () {
$('head').append('<style id="test"> .tooltip .tooltip-inner { width: 200px; height: 200px; max-width: none; } </style>') $('head').append('<style id="test"> .tooltip .tooltip-inner { width: 200px; height: 200px; max-width: none; } </style>')
var container = $('<div />').appendTo('body'), var container = $('<div />').appendTo('body')
target = $('<a href="#" rel="tooltip" title="tip" style="position: fixed; top: 0px; left: 0px;"></a>') var target = $('<a href="#" rel="tooltip" title="tip" style="position: fixed; top: 0px; left: 0px;"></a>')
.appendTo(container) .appendTo(container)
.bootstrapTooltip({placement: 'bottom', viewport: {selector: 'body', padding: 12}}) .bootstrapTooltip({ placement: 'bottom', viewport: { selector: 'body', padding: 12 }})
.bootstrapTooltip('show'), .bootstrapTooltip('show')
tooltip = container.find('.tooltip') var tooltip = container.find('.tooltip')
ok( Math.round(tooltip.offset().left) === 12 ) ok(Math.round(tooltip.offset().left) === 12)
target.bootstrapTooltip('hide') target.bootstrapTooltip('hide')
$('head #test').remove() $('head #test').remove()
}) })
@ -527,14 +528,14 @@ $(function () {
test('should adjust the tip\'s left when up against the right of the viewport', function () { test('should adjust the tip\'s left when up against the right of the viewport', function () {
$('head').append('<style id="test"> .tooltip .tooltip-inner { width: 200px; height: 200px; max-width: none; } </style>') $('head').append('<style id="test"> .tooltip .tooltip-inner { width: 200px; height: 200px; max-width: none; } </style>')
var container = $('<div />').appendTo('body'), var container = $('<div />').appendTo('body')
target = $('<a href="#" rel="tooltip" title="tip" style="position: fixed; top: 0px; right: 0px;"></a>') var target = $('<a href="#" rel="tooltip" title="tip" style="position: fixed; top: 0px; right: 0px;"></a>')
.appendTo(container) .appendTo(container)
.bootstrapTooltip({placement: 'bottom', viewport: {selector: 'body', padding: 12}}) .bootstrapTooltip({ placement: 'bottom', viewport: { selector: 'body', padding: 12 }})
.bootstrapTooltip('show'), .bootstrapTooltip('show')
tooltip = container.find('.tooltip') var tooltip = container.find('.tooltip')
ok( Math.round(tooltip.offset().left) === Math.round($(window).width() - 12 - tooltip[0].offsetWidth) ) ok(Math.round(tooltip.offset().left) === Math.round($(window).width() - 12 - tooltip[0].offsetWidth))
target.bootstrapTooltip('hide') target.bootstrapTooltip('hide')
$('head #test').remove() $('head #test').remove()
}) })
@ -543,14 +544,14 @@ $(function () {
$('head').append('<style id="test"> .tooltip, .tooltip .tooltip-inner { width: 200px; height: 200px; max-width: none; } </style>') $('head').append('<style id="test"> .tooltip, .tooltip .tooltip-inner { width: 200px; height: 200px; max-width: none; } </style>')
$('head').append('<style id="viewport-style"> .container-viewport { position: absolute; top: 50px; left: 60px; width: 300px; height: 300px; } </style>') $('head').append('<style id="viewport-style"> .container-viewport { position: absolute; top: 50px; left: 60px; width: 300px; height: 300px; } </style>')
var container = $('<div />', {class: 'container-viewport'}).appendTo('body'), var container = $('<div />', { 'class': 'container-viewport' }).appendTo('body')
target = $('<a href="#" rel="tooltip" title="tip" style="position: fixed; top: 50px; left: 350px;"></a>') var target = $('<a href="#" rel="tooltip" title="tip" style="position: fixed; top: 50px; left: 350px;"></a>')
.appendTo(container) .appendTo(container)
.bootstrapTooltip({placement: 'bottom', viewport: '.container-viewport'}) .bootstrapTooltip({ placement: 'bottom', viewport: '.container-viewport' })
.bootstrapTooltip('show'), .bootstrapTooltip('show')
tooltip = container.find('.tooltip') var tooltip = container.find('.tooltip')
ok( Math.round(tooltip.offset().left) === Math.round(60 + container.width() - tooltip[0].offsetWidth) ) ok(Math.round(tooltip.offset().left) === Math.round(60 + container.width() - tooltip[0].offsetWidth))
target.bootstrapTooltip('hide') target.bootstrapTooltip('hide')
$('head #test').remove() $('head #test').remove()
$('head #viewport-style').remove() $('head #viewport-style').remove()

View File

@ -199,7 +199,7 @@
this.applyPlacement(calculatedOffset, placement) this.applyPlacement(calculatedOffset, placement)
this.hoverState = null this.hoverState = null
var complete = function() { var complete = function () {
that.$element.trigger('shown.bs.' + that.type) that.$element.trigger('shown.bs.' + that.type)
} }
@ -321,7 +321,7 @@
scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop(), scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop(),
width: isBody ? $(window).width() : $element.outerWidth(), width: isBody ? $(window).width() : $element.outerWidth(),
height: isBody ? $(window).height() : $element.outerHeight() height: isBody ? $(window).height() : $element.outerHeight()
}, isBody ? {top: 0, left: 0} : $element.offset()) }, isBody ? { top: 0, left: 0 } : $element.offset())
} }
Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
@ -378,11 +378,11 @@
} }
Tooltip.prototype.tip = function () { Tooltip.prototype.tip = function () {
return this.$tip = this.$tip || $(this.options.template) return (this.$tip = this.$tip || $(this.options.template))
} }
Tooltip.prototype.arrow = function () { Tooltip.prototype.arrow = function () {
return this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow') return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))
} }
Tooltip.prototype.validate = function () { Tooltip.prototype.validate = function () {

View File

@ -34,7 +34,8 @@
// http://blog.alexmaccaw.com/css-transitions // http://blog.alexmaccaw.com/css-transitions
$.fn.emulateTransitionEnd = function (duration) { $.fn.emulateTransitionEnd = function (duration) {
var called = false, $el = this var called = false
var $el = this
$(this).one($.support.transition.end, function () { called = true }) $(this).one($.support.transition.end, function () { called = true })
var callback = function () { if (!called) $($el).trigger($.support.transition.end) } var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
setTimeout(callback, duration) setTimeout(callback, duration)