mirror of
https://github.com/twbs/bootstrap.git
synced 2025-02-26 23:54:23 +01:00
commit
3b99a41246
15
Gruntfile.js
15
Gruntfile.js
@ -53,6 +53,9 @@ module.exports = function (grunt) {
|
|||||||
src: 'js/*.js'
|
src: 'js/*.js'
|
||||||
},
|
},
|
||||||
test: {
|
test: {
|
||||||
|
options: {
|
||||||
|
jshintrc: 'js/tests/unit/.jshintrc'
|
||||||
|
},
|
||||||
src: 'js/tests/unit/*.js'
|
src: 'js/tests/unit/*.js'
|
||||||
},
|
},
|
||||||
assets: {
|
assets: {
|
||||||
@ -65,10 +68,6 @@ module.exports = function (grunt) {
|
|||||||
config: 'js/.jscsrc'
|
config: 'js/.jscsrc'
|
||||||
},
|
},
|
||||||
grunt: {
|
grunt: {
|
||||||
options: {
|
|
||||||
requireCamelCaseOrUpperCaseIdentifiers: null,
|
|
||||||
requireParenthesesAroundIIFE: true
|
|
||||||
},
|
|
||||||
src: '<%= jshint.grunt.src %>'
|
src: '<%= jshint.grunt.src %>'
|
||||||
},
|
},
|
||||||
src: {
|
src: {
|
||||||
@ -233,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: {
|
||||||
@ -315,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: {
|
||||||
@ -392,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
|
||||||
|
53
dist/js/bootstrap.js
vendored
53
dist/js/bootstrap.js
vendored
@ -42,7 +42,8 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|||||||
|
|
||||||
// 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)
|
||||||
@ -297,7 +298,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|||||||
wrap: true
|
wrap: true
|
||||||
}
|
}
|
||||||
|
|
||||||
Carousel.prototype.cycle = function (e) {
|
Carousel.prototype.cycle = function (e) {
|
||||||
e || (this.paused = false)
|
e || (this.paused = false)
|
||||||
|
|
||||||
this.interval && clearInterval(this.interval)
|
this.interval && clearInterval(this.interval)
|
||||||
@ -364,10 +365,13 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|||||||
$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
|
||||||
|
})
|
||||||
this.$element.trigger(slideEvent)
|
this.$element.trigger(slideEvent)
|
||||||
if (slideEvent.isDefaultPrevented()) return
|
if (slideEvent.isDefaultPrevented()) return
|
||||||
|
|
||||||
@ -394,7 +398,9 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|||||||
$next.removeClass([type, direction].join(' ')).addClass('active')
|
$next.removeClass([type, direction].join(' ')).addClass('active')
|
||||||
$active.removeClass(['active', direction].join(' '))
|
$active.removeClass(['active', direction].join(' '))
|
||||||
that.sliding = false
|
that.sliding = false
|
||||||
setTimeout(function () { that.$element.trigger(slidEvent) }, 0)
|
setTimeout(function () {
|
||||||
|
that.$element.trigger(slidEvent)
|
||||||
|
}, 0)
|
||||||
})
|
})
|
||||||
.emulateTransitionEnd($active.css('transition-duration').slice(0, -1) * 1000)
|
.emulateTransitionEnd($active.css('transition-duration').slice(0, -1) * 1000)
|
||||||
} else {
|
} else {
|
||||||
@ -446,7 +452,8 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|||||||
// =================
|
// =================
|
||||||
|
|
||||||
$(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')
|
||||||
@ -454,7 +461,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|||||||
|
|
||||||
Plugin.call($target, options)
|
Plugin.call($target, options)
|
||||||
|
|
||||||
if (slideIndex = $this.attr('data-slide-to')) {
|
if (slideIndex) {
|
||||||
$target.data('bs.carousel').to(slideIndex)
|
$target.data('bs.carousel').to(slideIndex)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -631,7 +638,8 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|||||||
// =================
|
// =================
|
||||||
|
|
||||||
$(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
|
||||||
@ -993,7 +1001,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|||||||
} 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()
|
||||||
}
|
}
|
||||||
@ -1013,8 +1021,8 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|||||||
this.scrollbarWidth = this.scrollbarWidth || this.measureScrollbar()
|
this.scrollbarWidth = this.scrollbarWidth || this.measureScrollbar()
|
||||||
}
|
}
|
||||||
|
|
||||||
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)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1282,7 +1290,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|||||||
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)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1387,7 +1395,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|||||||
|
|
||||||
Tooltip.prototype.fixTitle = function () {
|
Tooltip.prototype.fixTitle = function () {
|
||||||
var $e = this.$element
|
var $e = this.$element
|
||||||
if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
|
if ($e.attr('title') || typeof ($e.attr('data-original-title')) != 'string') {
|
||||||
$e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
|
$e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1404,7 +1412,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|||||||
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) {
|
||||||
@ -1461,11 +1469,11 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|||||||
}
|
}
|
||||||
|
|
||||||
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 () {
|
||||||
@ -1612,7 +1620,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|||||||
}
|
}
|
||||||
|
|
||||||
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 () {
|
||||||
@ -1697,7 +1705,6 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|||||||
|
|
||||||
this.offsets = $([])
|
this.offsets = $([])
|
||||||
this.targets = $([])
|
this.targets = $([])
|
||||||
|
|
||||||
var self = this
|
var self = this
|
||||||
|
|
||||||
this.$body
|
this.$body
|
||||||
@ -1711,7 +1718,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|||||||
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 () {
|
||||||
@ -1741,7 +1748,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|||||||
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])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1905,7 +1912,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|||||||
// 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')
|
||||||
@ -2028,7 +2035,9 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
|||||||
.trigger($.Event(affixType.replace('affix', 'affixed')))
|
.trigger($.Event(affixType.replace('affix', 'affixed')))
|
||||||
|
|
||||||
if (affix == 'bottom') {
|
if (affix == 'bottom') {
|
||||||
this.$element.offset({ top: scrollHeight - this.$element.height() - offsetBottom })
|
this.$element.offset({
|
||||||
|
top: scrollHeight - this.$element.height() - offsetBottom
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
2
dist/js/bootstrap.min.js
vendored
2
dist/js/bootstrap.min.js
vendored
File diff suppressed because one or more lines are too long
@ -11,6 +11,7 @@
|
|||||||
|
|
||||||
|
|
||||||
!function ($) {
|
!function ($) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
$(function () {
|
$(function () {
|
||||||
|
|
||||||
|
@ -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' +
|
||||||
@ -77,8 +80,7 @@ window.onload = function () { // wait for load in a dumb way because B-0
|
|||||||
.error(function (err) {
|
.error(function (err) {
|
||||||
try {
|
try {
|
||||||
showError('<strong>Ruh roh!</strong> Could not save gist file, configuration not saved.', err)
|
showError('<strong>Ruh roh!</strong> Could not save gist file, configuration not saved.', err)
|
||||||
}
|
} catch (sameErr) {
|
||||||
catch (sameErr) {
|
|
||||||
// deliberately ignore the error
|
// deliberately ignore the error
|
||||||
}
|
}
|
||||||
callback('<none>', '<none>')
|
callback('<none>', '<none>')
|
||||||
@ -159,7 +161,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 +219,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 +256,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 +407,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) {
|
||||||
@ -413,8 +415,7 @@ window.onload = function () { // wait for load in a dumb way because B-0
|
|||||||
// than "blob:", which means it has been polyfilled and is not supported by
|
// than "blob:", which means it has been polyfilled and is not supported by
|
||||||
// this browser.
|
// this browser.
|
||||||
failback()
|
failback()
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$('<img>')
|
$('<img>')
|
||||||
.on('load', function () {
|
.on('load', function () {
|
||||||
$compileBtn.prop('disabled', false)
|
$compileBtn.prop('disabled', false)
|
||||||
|
4
docs/assets/js/customize.min.js
vendored
4
docs/assets/js/customize.min.js
vendored
File diff suppressed because one or more lines are too long
2
docs/assets/js/docs.min.js
vendored
2
docs/assets/js/docs.min.js
vendored
@ -13,4 +13,4 @@ var Holder=Holder||{};!function(a,b){function c(a,b,c){b=parseInt(b,10),a=parseI
|
|||||||
* Licensed under the Creative Commons Attribution 3.0 Unported License. For
|
* Licensed under the Creative Commons Attribution 3.0 Unported License. For
|
||||||
* details, see http://creativecommons.org/licenses/by/3.0/.
|
* details, see http://creativecommons.org/licenses/by/3.0/.
|
||||||
*/
|
*/
|
||||||
!function(a){a(function(){var b=a(window),c=a(document.body);c.scrollspy({target:".bs-docs-sidebar"}),b.on("load",function(){c.scrollspy("refresh")}),a(".bs-docs-container [href=#]").click(function(a){a.preventDefault()}),setTimeout(function(){var b=a(".bs-docs-sidebar");b.affix({offset:{top:function(){var c=b.offset().top,d=parseInt(b.children(0).css("margin-top"),10),e=a(".bs-docs-nav").height();return this.top=c-e-d},bottom:function(){return this.bottom=a(".bs-docs-footer").outerHeight(!0)}}})},100),setTimeout(function(){a(".bs-top").affix()},100),function(){var b=a("#bs-theme-stylesheet"),c=a(".bs-docs-theme-toggle");c.click(function(){var a=b.attr("href");a&&0!==a.indexOf("data")?(b.attr("href",""),c.text("Preview theme")):(b.attr("href",b.attr("data-href")),c.text("Disable theme preview"))})}(),a(".tooltip-demo").tooltip({selector:'[data-toggle="tooltip"]',container:"body"}),a(".tooltip-test").tooltip(),a(".popover-test").popover(),a(".bs-docs-navbar").tooltip({selector:'a[data-toggle="tooltip"]',container:".bs-docs-navbar .nav"}),a(".bs-docs-popover").popover(),a(".bs-docs-popover-dismiss").popover({trigger:"focus"}),a("#loading-example-btn").click(function(){var b=a(this);b.button("loading"),setTimeout(function(){b.button("reset")},3e3)})})}(jQuery);
|
!function(a){"use strict";a(function(){var b=a(window),c=a(document.body);c.scrollspy({target:".bs-docs-sidebar"}),b.on("load",function(){c.scrollspy("refresh")}),a(".bs-docs-container [href=#]").click(function(a){a.preventDefault()}),setTimeout(function(){var b=a(".bs-docs-sidebar");b.affix({offset:{top:function(){var c=b.offset().top,d=parseInt(b.children(0).css("margin-top"),10),e=a(".bs-docs-nav").height();return this.top=c-e-d},bottom:function(){return this.bottom=a(".bs-docs-footer").outerHeight(!0)}}})},100),setTimeout(function(){a(".bs-top").affix()},100),function(){var b=a("#bs-theme-stylesheet"),c=a(".bs-docs-theme-toggle");c.click(function(){var a=b.attr("href");a&&0!==a.indexOf("data")?(b.attr("href",""),c.text("Preview theme")):(b.attr("href",b.attr("data-href")),c.text("Disable theme preview"))})}(),a(".tooltip-demo").tooltip({selector:'[data-toggle="tooltip"]',container:"body"}),a(".tooltip-test").tooltip(),a(".popover-test").popover(),a(".bs-docs-navbar").tooltip({selector:'a[data-toggle="tooltip"]',container:".bs-docs-navbar .nav"}),a(".bs-docs-popover").popover(),a(".bs-docs-popover-dismiss").popover({trigger:"focus"}),a("#loading-example-btn").click(function(){var b=a(this);b.button("loading"),setTimeout(function(){b.button("reset")},3e3)})})}(jQuery);
|
@ -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(
|
||||||
|
@ -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.')
|
||||||
}
|
}
|
||||||
|
4
docs/assets/js/raw-files.min.js
vendored
4
docs/assets/js/raw-files.min.js
vendored
File diff suppressed because one or more lines are too long
2
docs/dist/js/bootstrap.min.js
vendored
2
docs/dist/js/bootstrap.min.js
vendored
File diff suppressed because one or more lines are too long
@ -1,11 +1,6 @@
|
|||||||
{
|
{
|
||||||
"curly" : true,
|
"extends" : "../js/.jshintrc",
|
||||||
"eqeqeq": true,
|
"browser" : false,
|
||||||
"newcap": true,
|
"es3" : false,
|
||||||
"noarg" : true,
|
"node" : true
|
||||||
"node" : true,
|
|
||||||
"nonbsp": true,
|
|
||||||
"strict": true,
|
|
||||||
"undef" : true,
|
|
||||||
"unused": true
|
|
||||||
}
|
}
|
||||||
|
11
js/.jscsrc
11
js/.jscsrc
@ -1,16 +1,22 @@
|
|||||||
{
|
{
|
||||||
"disallowEmptyBlocks": true,
|
"disallowEmptyBlocks": true,
|
||||||
"disallowKeywords": ["with"],
|
"disallowKeywords": ["with"],
|
||||||
"disallowLeftStickedOperators": ["?", "+", "-", "/", "*", "=", "==", "===", "!=", "!==", ">", ">=", "<", "<="],
|
"disallowLeftStickedOperators": ["?", "/", "*", "=", "==", "===", "!=", "!==", ">", ">=", "<", "<="],
|
||||||
"disallowMixedSpacesAndTabs": true,
|
"disallowMixedSpacesAndTabs": true,
|
||||||
"disallowMultipleLineStrings": true,
|
"disallowMultipleLineStrings": true,
|
||||||
|
"disallowMultipleVarDecl": true,
|
||||||
"disallowQuotedKeysInObjects": "allButReserved",
|
"disallowQuotedKeysInObjects": "allButReserved",
|
||||||
"disallowRightStickedOperators": ["?", "/", "*", ":", "=", "==", "===", "!=", "!==", ">", ">=", "<", "<="],
|
"disallowRightStickedOperators": ["?", "/", "*", ":", "=", "==", "===", "!=", "!==", ">", ">=", "<", "<="],
|
||||||
"disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~", "!"],
|
"disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~", "!"],
|
||||||
"disallowSpaceBeforePostfixUnaryOperators": ["++", "--"],
|
"disallowSpaceBeforePostfixUnaryOperators": ["++", "--"],
|
||||||
|
"disallowSpacesInNamedFunctionExpression": { "beforeOpeningRoundBrace": true },
|
||||||
|
"disallowSpacesInsideArrayBrackets": true,
|
||||||
|
"disallowSpacesInsideParentheses": true,
|
||||||
|
"disallowTrailingComma": true,
|
||||||
"disallowTrailingWhitespace": true,
|
"disallowTrailingWhitespace": true,
|
||||||
"requireCamelCaseOrUpperCaseIdentifiers": true,
|
"requireCamelCaseOrUpperCaseIdentifiers": true,
|
||||||
"requireCapitalizedConstructors": true,
|
"requireCapitalizedConstructors": true,
|
||||||
|
"requireCommaBeforeLineBreak": true,
|
||||||
"requireDotNotation": true,
|
"requireDotNotation": true,
|
||||||
"requireLeftStickedOperators": [","],
|
"requireLeftStickedOperators": [","],
|
||||||
"requireLineFeedAtFileEnd": true,
|
"requireLineFeedAtFileEnd": true,
|
||||||
@ -18,10 +24,11 @@
|
|||||||
"requireSpaceAfterBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!==", ">", "<", ">=", "<="],
|
"requireSpaceAfterBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!==", ">", "<", ">=", "<="],
|
||||||
"requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch"],
|
"requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch"],
|
||||||
"requireSpaceBeforeBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!==", ">", "<", ">=", "<="],
|
"requireSpaceBeforeBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!==", ">", "<", ">=", "<="],
|
||||||
"requireSpacesInAnonymousFunctionExpression": { "beforeOpeningCurlyBrace": true },
|
"requireSpacesInAnonymousFunctionExpression": { "beforeOpeningCurlyBrace": true, "beforeOpeningRoundBrace": true },
|
||||||
"requireSpacesInFunctionDeclaration": { "beforeOpeningCurlyBrace": true },
|
"requireSpacesInFunctionDeclaration": { "beforeOpeningCurlyBrace": true },
|
||||||
"requireSpacesInFunctionExpression": { "beforeOpeningCurlyBrace": true },
|
"requireSpacesInFunctionExpression": { "beforeOpeningCurlyBrace": true },
|
||||||
"requireSpacesInNamedFunctionExpression": { "beforeOpeningCurlyBrace": true },
|
"requireSpacesInNamedFunctionExpression": { "beforeOpeningCurlyBrace": true },
|
||||||
|
"requireSpacesInsideObjectBrackets": "allButNested",
|
||||||
"validateIndentation": 2,
|
"validateIndentation": 2,
|
||||||
"validateLineBreaks": "LF",
|
"validateLineBreaks": "LF",
|
||||||
"validateQuoteMarks": "'"
|
"validateQuoteMarks": "'"
|
||||||
|
12
js/.jshintrc
12
js/.jshintrc
@ -1,13 +1,15 @@
|
|||||||
{
|
{
|
||||||
"asi" : true,
|
"asi" : true,
|
||||||
"boss" : true,
|
|
||||||
"browser" : true,
|
"browser" : true,
|
||||||
"debug" : true,
|
|
||||||
"devel" : true,
|
|
||||||
"eqeqeq" : false,
|
"eqeqeq" : false,
|
||||||
"eqnull" : true,
|
"eqnull" : true,
|
||||||
|
"es3" : true,
|
||||||
"expr" : true,
|
"expr" : true,
|
||||||
|
"jquery" : true,
|
||||||
|
"latedef" : true,
|
||||||
"laxbreak" : true,
|
"laxbreak" : true,
|
||||||
"unused" : true,
|
"nonbsp" : true,
|
||||||
"validthis": true
|
"strict" : true,
|
||||||
|
"undef" : true,
|
||||||
|
"unused" : true
|
||||||
}
|
}
|
||||||
|
@ -86,7 +86,9 @@
|
|||||||
.trigger($.Event(affixType.replace('affix', 'affixed')))
|
.trigger($.Event(affixType.replace('affix', 'affixed')))
|
||||||
|
|
||||||
if (affix == 'bottom') {
|
if (affix == 'bottom') {
|
||||||
this.$element.offset({ top: scrollHeight - this.$element.height() - offsetBottom })
|
this.$element.offset({
|
||||||
|
top: scrollHeight - this.$element.height() - offsetBottom
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@
|
|||||||
wrap: true
|
wrap: true
|
||||||
}
|
}
|
||||||
|
|
||||||
Carousel.prototype.cycle = function (e) {
|
Carousel.prototype.cycle = function (e) {
|
||||||
e || (this.paused = false)
|
e || (this.paused = false)
|
||||||
|
|
||||||
this.interval && clearInterval(this.interval)
|
this.interval && clearInterval(this.interval)
|
||||||
@ -103,10 +103,13 @@
|
|||||||
$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
|
||||||
|
})
|
||||||
this.$element.trigger(slideEvent)
|
this.$element.trigger(slideEvent)
|
||||||
if (slideEvent.isDefaultPrevented()) return
|
if (slideEvent.isDefaultPrevented()) return
|
||||||
|
|
||||||
@ -133,7 +136,9 @@
|
|||||||
$next.removeClass([type, direction].join(' ')).addClass('active')
|
$next.removeClass([type, direction].join(' ')).addClass('active')
|
||||||
$active.removeClass(['active', direction].join(' '))
|
$active.removeClass(['active', direction].join(' '))
|
||||||
that.sliding = false
|
that.sliding = false
|
||||||
setTimeout(function () { that.$element.trigger(slidEvent) }, 0)
|
setTimeout(function () {
|
||||||
|
that.$element.trigger(slidEvent)
|
||||||
|
}, 0)
|
||||||
})
|
})
|
||||||
.emulateTransitionEnd($active.css('transition-duration').slice(0, -1) * 1000)
|
.emulateTransitionEnd($active.css('transition-duration').slice(0, -1) * 1000)
|
||||||
} else {
|
} else {
|
||||||
@ -185,7 +190,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')
|
||||||
@ -193,7 +199,7 @@
|
|||||||
|
|
||||||
Plugin.call($target, options)
|
Plugin.call($target, options)
|
||||||
|
|
||||||
if (slideIndex = $this.attr('data-slide-to')) {
|
if (slideIndex) {
|
||||||
$target.data('bs.carousel').to(slideIndex)
|
$target.data('bs.carousel').to(slideIndex)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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()
|
||||||
}
|
}
|
||||||
@ -208,8 +208,8 @@
|
|||||||
this.scrollbarWidth = this.scrollbarWidth || this.measureScrollbar()
|
this.scrollbarWidth = this.scrollbarWidth || this.measureScrollbar()
|
||||||
}
|
}
|
||||||
|
|
||||||
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)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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 () {
|
||||||
|
@ -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])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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')
|
||||||
|
5
js/tests/unit/.jshintrc
Normal file
5
js/tests/unit/.jshintrc
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"extends" : "../../.jshintrc",
|
||||||
|
"devel" : true,
|
||||||
|
"qunit" : true
|
||||||
|
}
|
@ -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,9 @@ $(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 () {
|
||||||
},0)
|
window.scroll(0, 0)
|
||||||
|
}, 0)
|
||||||
|
}, 0)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
@ -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')
|
||||||
|
|
||||||
|
@ -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'))
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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()
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,6 @@
|
|||||||
* Licensed under the MIT license.
|
* Licensed under the MIT license.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*global QUnit:true, alert:true*/
|
|
||||||
(function () {
|
(function () {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
@ -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,9 @@ $(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 +177,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')
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -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')
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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()
|
||||||
|
|
||||||
@ -311,8 +312,9 @@ $(function () {
|
|||||||
|
|
||||||
test('should show tooltip with delegate selector on click', function () {
|
test('should show tooltip with delegate selector on click', function () {
|
||||||
var div = $('<div><a href="#" rel="tooltip" title="Another tooltip"></a></div>')
|
var div = $('<div><a href="#" rel="tooltip" title="Another tooltip"></a></div>')
|
||||||
div.appendTo('#qunit-fixture')
|
div.appendTo('#qunit-fixture').bootstrapTooltip({
|
||||||
.bootstrapTooltip({ selector: 'a[rel="tooltip"]', trigger: 'click' })
|
selector: 'a[rel="tooltip"]', trigger: 'click'
|
||||||
|
})
|
||||||
div.find('a').trigger('click')
|
div.find('a').trigger('click')
|
||||||
ok($('.tooltip').is('.fade.in'), 'tooltip is faded in')
|
ok($('.tooltip').is('.fade.in'), 'tooltip is faded in')
|
||||||
})
|
})
|
||||||
@ -320,7 +322,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 +330,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 +341,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 +350,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 +369,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 +391,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()
|
||||||
@ -442,18 +444,18 @@ $(function () {
|
|||||||
test('tooltips should be placed dynamically, with the dynamic placement option', function () {
|
test('tooltips should be placed dynamically, with the dynamic placement option', function () {
|
||||||
$.support.transition = false
|
$.support.transition = false
|
||||||
var ttContainer = $('<div id="dynamic-tt-test"/>').css({
|
var ttContainer = $('<div id="dynamic-tt-test"/>').css({
|
||||||
height : 400,
|
height: 400,
|
||||||
overflow : 'hidden',
|
overflow: 'hidden',
|
||||||
position : 'absolute',
|
position: 'absolute',
|
||||||
top : 0,
|
top: 0,
|
||||||
left : 0,
|
left: 0,
|
||||||
width : 600
|
width: 600
|
||||||
})
|
})
|
||||||
.appendTo('body')
|
.appendTo('body')
|
||||||
|
|
||||||
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 +464,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 +472,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 +484,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 +499,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 +514,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 +529,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 +545,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()
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -304,7 +304,7 @@
|
|||||||
|
|
||||||
Tooltip.prototype.fixTitle = function () {
|
Tooltip.prototype.fixTitle = function () {
|
||||||
var $e = this.$element
|
var $e = this.$element
|
||||||
if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
|
if ($e.attr('title') || typeof ($e.attr('data-original-title')) != 'string') {
|
||||||
$e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
|
$e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -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 () {
|
||||||
|
@ -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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user