mirror of
https://github.com/tenrok/bootstrap.git
synced 2026-06-23 20:40:36 +03:00
Merge branch 'master' into pr/13736
Conflicts: dist/css/bootstrap.css.map dist/css/bootstrap.min.css
This commit is contained in:
+4
-5
@@ -53,6 +53,9 @@ module.exports = function (grunt) {
|
||||
src: 'js/*.js'
|
||||
},
|
||||
test: {
|
||||
options: {
|
||||
jshintrc: 'js/tests/unit/.jshintrc'
|
||||
},
|
||||
src: 'js/tests/unit/*.js'
|
||||
},
|
||||
assets: {
|
||||
@@ -65,10 +68,6 @@ module.exports = function (grunt) {
|
||||
config: 'js/.jscsrc'
|
||||
},
|
||||
grunt: {
|
||||
options: {
|
||||
requireCamelCaseOrUpperCaseIdentifiers: null,
|
||||
requireParenthesesAroundIIFE: true
|
||||
},
|
||||
src: '<%= jshint.grunt.src %>'
|
||||
},
|
||||
src: {
|
||||
@@ -233,7 +232,7 @@ module.exports = function (grunt) {
|
||||
core: {
|
||||
files: {
|
||||
'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: {
|
||||
|
||||
@@ -14,7 +14,7 @@ To get started, check out <http://getbootstrap.com>!
|
||||
- [Contributing](#contributing)
|
||||
- [Community](#community)
|
||||
- [Versioning](#versioning)
|
||||
- [Authors](#authors)
|
||||
- [Creators](#creators)
|
||||
- [Copyright and license](#copyright-and-license)
|
||||
|
||||
## Quick start
|
||||
@@ -134,22 +134,9 @@ Keep track of development and community news.
|
||||
|
||||
|
||||
|
||||
|
||||
## Versioning
|
||||
|
||||
For transparency into our release cycle and in striving to maintain backward compatibility, Bootstrap is maintained under the Semantic Versioning guidelines. Sometimes we screw up, but we'll adhere to these rules whenever possible.
|
||||
|
||||
Releases will be numbered with the following format:
|
||||
|
||||
`<major>.<minor>.<patch>`
|
||||
|
||||
And constructed with the following guidelines:
|
||||
|
||||
- Breaking backward compatibility **bumps the major** while resetting minor and patch
|
||||
- New additions without breaking backward compatibility **bumps the minor** while resetting the patch
|
||||
- Bug fixes and misc changes **bumps only the patch**
|
||||
|
||||
For more information on SemVer, please visit <http://semver.org/>.
|
||||
For transparency into our release cycle and in striving to maintain backward compatibility, Bootstrap is maintained under [the Semantic Versioning guidelines](http://semver.org/). Sometimes we screw up, but we'll adhere to those rules whenever possible.
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -30,5 +30,8 @@
|
||||
"branch-alias": {
|
||||
"dev-master": "3.1.x-dev"
|
||||
}
|
||||
},
|
||||
"replace": {
|
||||
"twitter/bootstrap": "self.version"
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+26
-16
@@ -2440,18 +2440,24 @@ input[type="month"].input-lg {
|
||||
}
|
||||
input[type="radio"][disabled],
|
||||
input[type="checkbox"][disabled],
|
||||
.radio[disabled],
|
||||
.radio-inline[disabled],
|
||||
.checkbox[disabled],
|
||||
.checkbox-inline[disabled],
|
||||
input[type="radio"].disabled,
|
||||
input[type="checkbox"].disabled,
|
||||
fieldset[disabled] input[type="radio"],
|
||||
fieldset[disabled] input[type="checkbox"],
|
||||
fieldset[disabled] .radio,
|
||||
fieldset[disabled] input[type="checkbox"] {
|
||||
cursor: not-allowed;
|
||||
}
|
||||
.radio-inline.disabled,
|
||||
.checkbox-inline.disabled,
|
||||
fieldset[disabled] .radio-inline,
|
||||
fieldset[disabled] .checkbox,
|
||||
fieldset[disabled] .checkbox-inline {
|
||||
cursor: not-allowed;
|
||||
}
|
||||
.radio.disabled label,
|
||||
.checkbox.disabled label,
|
||||
fieldset[disabled] .radio label,
|
||||
fieldset[disabled] .checkbox label {
|
||||
cursor: not-allowed;
|
||||
}
|
||||
.input-sm {
|
||||
height: 30px;
|
||||
padding: 5px 10px;
|
||||
@@ -3816,6 +3822,9 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
|
||||
right: 0;
|
||||
left: 0;
|
||||
z-index: 1030;
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
-o-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0);
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.navbar-fixed-top,
|
||||
@@ -5127,7 +5136,7 @@ a.list-group-item-danger.active:focus {
|
||||
.panel-group .panel-heading {
|
||||
border-bottom: 0;
|
||||
}
|
||||
.panel-group .panel-heading + .panel-collapse .panel-body {
|
||||
.panel-group .panel-heading + .panel-collapse > .panel-body {
|
||||
border-top: 1px solid #ddd;
|
||||
}
|
||||
.panel-group .panel-footer {
|
||||
@@ -5312,16 +5321,14 @@ button.close {
|
||||
-webkit-transition: -webkit-transform .3s ease-out;
|
||||
-o-transition: -o-transform .3s ease-out;
|
||||
transition: transform .3s ease-out;
|
||||
-webkit-transform: translate(0, -25%);
|
||||
-ms-transform: translate(0, -25%);
|
||||
-o-transform: translate(0, -25%);
|
||||
transform: translate(0, -25%);
|
||||
-webkit-transform: translate3d(0, -25%, 0);
|
||||
-o-transform: translate3d(0, -25%, 0);
|
||||
transform: translate3d(0, -25%, 0);
|
||||
}
|
||||
.modal.in .modal-dialog {
|
||||
-webkit-transform: translate(0, 0);
|
||||
-ms-transform: translate(0, 0);
|
||||
-o-transform: translate(0, 0);
|
||||
transform: translate(0, 0);
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
-o-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0);
|
||||
}
|
||||
.modal-dialog {
|
||||
position: relative;
|
||||
@@ -5907,6 +5914,9 @@ button.close {
|
||||
}
|
||||
.affix {
|
||||
position: fixed;
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
-o-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0);
|
||||
}
|
||||
@-ms-viewport {
|
||||
width: device-width;
|
||||
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+46
-29
@@ -42,7 +42,8 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
||||
|
||||
// http://blog.alexmaccaw.com/css-transitions
|
||||
$.fn.emulateTransitionEnd = function (duration) {
|
||||
var called = false, $el = this
|
||||
var called = false
|
||||
var $el = this
|
||||
$(this).one($.support.transition.end, function () { called = true })
|
||||
var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
|
||||
setTimeout(callback, duration)
|
||||
@@ -364,10 +365,13 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
||||
$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 slideEvent = $.Event('slide.bs.carousel', { relatedTarget: relatedTarget, direction: direction })
|
||||
var slideEvent = $.Event('slide.bs.carousel', {
|
||||
relatedTarget: relatedTarget,
|
||||
direction: direction
|
||||
})
|
||||
this.$element.trigger(slideEvent)
|
||||
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')
|
||||
$active.removeClass(['active', direction].join(' '))
|
||||
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)
|
||||
} 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) {
|
||||
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 options = $.extend({}, $target.data(), $this.data())
|
||||
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)
|
||||
|
||||
if (slideIndex = $this.attr('data-slide-to')) {
|
||||
if (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) {
|
||||
var $this = $(this), href
|
||||
var href
|
||||
var $this = $(this)
|
||||
var target = $this.attr('data-target')
|
||||
|| e.preventDefault()
|
||||
|| (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
|
||||
@@ -1014,7 +1022,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
||||
}
|
||||
|
||||
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)
|
||||
}
|
||||
|
||||
@@ -1073,11 +1081,14 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
||||
|
||||
if ($this.is('a')) e.preventDefault()
|
||||
|
||||
Plugin.call($target, option, this)
|
||||
$target.one('hide.bs.modal', function () {
|
||||
$target.one('show.bs.modal', function (showEvent) {
|
||||
if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown
|
||||
$target.one('hidden.bs.modal', function () {
|
||||
$this.is(':visible') && $this.trigger('focus')
|
||||
})
|
||||
})
|
||||
Plugin.call($target, option, this)
|
||||
})
|
||||
|
||||
}(jQuery);
|
||||
|
||||
@@ -1228,8 +1239,9 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
||||
if (this.hasContent() && this.enabled) {
|
||||
this.$element.trigger(e)
|
||||
|
||||
if (e.isDefaultPrevented()) return
|
||||
var that = this;
|
||||
var inDom = $.contains(document.documentElement, this.$element[0])
|
||||
if (e.isDefaultPrevented() || !inDom) return
|
||||
var that = this
|
||||
|
||||
var $tip = this.tip()
|
||||
|
||||
@@ -1461,11 +1473,11 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
||||
}
|
||||
|
||||
Tooltip.prototype.tip = function () {
|
||||
return this.$tip = this.$tip || $(this.options.template)
|
||||
return (this.$tip = this.$tip || $(this.options.template))
|
||||
}
|
||||
|
||||
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 () {
|
||||
@@ -1612,7 +1624,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
||||
}
|
||||
|
||||
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 () {
|
||||
@@ -1668,20 +1680,17 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
||||
// ==========================
|
||||
|
||||
function ScrollSpy(element, options) {
|
||||
var href
|
||||
var process = $.proxy(this.process, this)
|
||||
|
||||
this.$element = $(element).is('body') ? $(window) : $(element)
|
||||
this.$body = $('body')
|
||||
this.$scrollElement = this.$element.on('scroll.bs.scrollspy', process)
|
||||
this.$scrollElement = $(element).is('body') ? $(window) : $(element)
|
||||
this.options = $.extend({}, ScrollSpy.DEFAULTS, options)
|
||||
this.selector = (this.options.target
|
||||
|| ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
|
||||
|| '') + ' .nav li > a'
|
||||
this.offsets = $([])
|
||||
this.targets = $([])
|
||||
this.selector = (this.options.target || '') + ' .nav li > a'
|
||||
this.offsets = []
|
||||
this.targets = []
|
||||
this.activeTarget = null
|
||||
|
||||
this.$scrollElement.on('scroll.bs.scrollspy', process)
|
||||
this.refresh()
|
||||
this.process()
|
||||
}
|
||||
@@ -1693,10 +1702,16 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
||||
}
|
||||
|
||||
ScrollSpy.prototype.refresh = function () {
|
||||
var offsetMethod = this.$element[0] == window ? 'offset' : 'position'
|
||||
var offsetMethod = 'offset'
|
||||
var offsetBase = 0
|
||||
|
||||
this.offsets = $([])
|
||||
this.targets = $([])
|
||||
if (!$.isWindow(this.$scrollElement[0])) {
|
||||
offsetMethod = 'position'
|
||||
offsetBase = this.$scrollElement.scrollTop()
|
||||
}
|
||||
|
||||
this.offsets = []
|
||||
this.targets = []
|
||||
|
||||
var self = this
|
||||
|
||||
@@ -1711,7 +1726,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
||||
return ($href
|
||||
&& $href.length
|
||||
&& $href.is(':visible')
|
||||
&& [[ $href[offsetMethod]().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]]) || null
|
||||
&& [[$href[offsetMethod]().top + offsetBase, href]]) || null
|
||||
})
|
||||
.sort(function (a, b) { return a[0] - b[0] })
|
||||
.each(function () {
|
||||
@@ -1730,7 +1745,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
||||
var i
|
||||
|
||||
if (scrollTop >= maxScroll) {
|
||||
return activeTarget != (i = targets.last()[0]) && this.activate(i)
|
||||
return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)
|
||||
}
|
||||
|
||||
if (activeTarget && scrollTop <= offsets[0]) {
|
||||
@@ -2028,7 +2043,9 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
|
||||
.trigger($.Event(affixType.replace('affix', 'affixed')))
|
||||
|
||||
if (affix == 'bottom') {
|
||||
this.$element.offset({ top: scrollHeight - this.$element.height() - offsetBottom })
|
||||
this.$element.offset({
|
||||
top: scrollHeight - this.$element.height() - offsetBottom
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
@@ -207,7 +207,8 @@
|
||||
{% endhighlight %}
|
||||
|
||||
<h3>Checkboxes and radios</h3>
|
||||
<p>Checkboxes are for selecting one or several options in a list while radios are for selecting one option from many.</p>
|
||||
<p>Checkboxes are for selecting one or several options in a list, while radios are for selecting one option from many.</p>
|
||||
<p>A checkbox or radio with the <code>disabled</code> attribute will be styled appropriately. To have the <code><label></code> for the checkbox or radio also display a "not-allowed" cursor when the user hovers over the label, add the <code>.disabled</code> class to your <code>.radio</code>, <code>.radio-inline</code>, <code>.checkbox</code>, <code>.checkbox-inline</code>, or <code><fieldset></code>.</p>
|
||||
<h4>Default (stacked)</h4>
|
||||
<div class="bs-example">
|
||||
<form role="form">
|
||||
@@ -217,6 +218,12 @@
|
||||
Option one is this and that—be sure to include why it's great
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox disabled">
|
||||
<label>
|
||||
<input type="checkbox" value="" disabled>
|
||||
Option two is disabled
|
||||
</label>
|
||||
</div>
|
||||
<br>
|
||||
<div class="radio">
|
||||
<label>
|
||||
@@ -230,6 +237,12 @@
|
||||
Option two can be something else and selecting it will deselect option one
|
||||
</label>
|
||||
</div>
|
||||
<div class="radio disabled">
|
||||
<label>
|
||||
<input type="radio" name="optionsRadios" id="optionsRadios3" value="option3" disabled>
|
||||
Option three is disabled
|
||||
</label>
|
||||
</div>
|
||||
</form>
|
||||
</div><!-- /.bs-example -->
|
||||
{% highlight html %}
|
||||
@@ -239,6 +252,12 @@
|
||||
Option one is this and that—be sure to include why it's great
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox disabled">
|
||||
<label>
|
||||
<input type="checkbox" value="" disabled>
|
||||
Option two is disabled
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="radio">
|
||||
<label>
|
||||
@@ -252,6 +271,12 @@
|
||||
Option two can be something else and selecting it will deselect option one
|
||||
</label>
|
||||
</div>
|
||||
<div class="radio disabled">
|
||||
<label>
|
||||
<input type="radio" name="optionsRadios" id="optionsRadios3" value="option3" disabled>
|
||||
Option three is disabled
|
||||
</label>
|
||||
</div>
|
||||
{% endhighlight %}
|
||||
|
||||
<h4>Inline checkboxes and radios</h4>
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
|
||||
|
||||
!function ($) {
|
||||
'use strict';
|
||||
|
||||
$(function () {
|
||||
|
||||
|
||||
@@ -6,7 +6,10 @@
|
||||
* 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
|
||||
'use strict';
|
||||
var cw = '/*!\n' +
|
||||
' * Bootstrap v3.1.1 (http://getbootstrap.com)\n' +
|
||||
' * Copyright 2011-2014 Twitter, Inc.\n' +
|
||||
@@ -24,6 +27,12 @@ window.onload = function () { // wait for load in a dumb way because B-0
|
||||
throw err
|
||||
}
|
||||
|
||||
function showSuccess(msg) {
|
||||
$('<div class="bs-callout bs-callout-info">' +
|
||||
'<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>' + msg +
|
||||
'</div>').insertAfter('.bs-customize-download')
|
||||
}
|
||||
|
||||
function showCallout(msg, showUpTop) {
|
||||
var callout = $('<div class="bs-callout bs-callout-danger">' +
|
||||
'<h4>Attention!</h4>' +
|
||||
@@ -60,16 +69,18 @@ window.onload = function () { // wait for load in a dumb way because B-0
|
||||
data: JSON.stringify(data)
|
||||
})
|
||||
.success(function (result) {
|
||||
var gistUrl = result.html_url;
|
||||
var origin = window.location.protocol + '//' + window.location.host
|
||||
var newUrl = origin + window.location.pathname + '?id=' + result.id
|
||||
history.replaceState(false, document.title, newUrl)
|
||||
callback(result.html_url, newUrl)
|
||||
var customizerUrl = origin + window.location.pathname + '?id=' + result.id
|
||||
showSuccess('<strong>Success!</strong> Your configuration has been saved to <a href="' + gistUrl + '">' + gistUrl + '</a> ' +
|
||||
'and can be revisited here at <a href="' + customizerUrl + '">' + customizerUrl + '</a> for further customization.')
|
||||
history.replaceState(false, document.title, customizerUrl)
|
||||
callback(gistUrl, customizerUrl)
|
||||
})
|
||||
.error(function (err) {
|
||||
try {
|
||||
showError('<strong>Ruh roh!</strong> Could not save gist file, configuration not saved.', err)
|
||||
}
|
||||
catch (sameErr) {
|
||||
} catch (sameErr) {
|
||||
// deliberately ignore the error
|
||||
}
|
||||
callback('<none>', '<none>')
|
||||
@@ -404,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
|
||||
// this browser.
|
||||
failback()
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
$('<img>')
|
||||
.on('load', function () {
|
||||
$compileBtn.prop('disabled', false)
|
||||
|
||||
Vendored
+2
-2
File diff suppressed because one or more lines are too long
Vendored
+1
-1
@@ -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
|
||||
* 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
|
||||
|
||||
(function () {
|
||||
'use strict';
|
||||
if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
|
||||
var msViewportStyle = document.createElement('style')
|
||||
msViewportStyle.appendChild(
|
||||
|
||||
@@ -9,5 +9,5 @@
|
||||
*/
|
||||
// Intended to prevent false-positive bug reports about responsive styling supposedly not working in IE8.
|
||||
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.')
|
||||
}
|
||||
|
||||
Vendored
+2
-2
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
@@ -22,7 +22,7 @@ body {
|
||||
}
|
||||
|
||||
/* Flip around the padding for proper display in narrow viewports */
|
||||
.navbar-wrapper .container {
|
||||
.navbar-wrapper > .container {
|
||||
padding-right: 0;
|
||||
padding-left: 0;
|
||||
}
|
||||
@@ -30,6 +30,9 @@ body {
|
||||
padding-right: 15px;
|
||||
padding-left: 15px;
|
||||
}
|
||||
.navbar-wrapper .navbar .container {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
|
||||
/* CUSTOMIZE THE CAROUSEL
|
||||
@@ -63,12 +66,6 @@ body {
|
||||
/* MARKETING CONTENT
|
||||
-------------------------------------------------- */
|
||||
|
||||
/* Pad the edges of the mobile views a bit */
|
||||
.marketing {
|
||||
padding-right: 15px;
|
||||
padding-left: 15px;
|
||||
}
|
||||
|
||||
/* Center align the text within the three columns below the carousel */
|
||||
.marketing .col-lg-4 {
|
||||
margin-bottom: 20px;
|
||||
@@ -104,12 +101,6 @@ body {
|
||||
|
||||
@media (min-width: 768px) {
|
||||
|
||||
/* Remove the edge padding needed for mobile */
|
||||
.marketing {
|
||||
padding-right: 0;
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
/* Navbar positioning foo */
|
||||
.navbar-wrapper {
|
||||
margin-top: 20px;
|
||||
|
||||
@@ -12,3 +12,7 @@ body {
|
||||
.theme-showcase > p > .btn {
|
||||
margin: 5px 0;
|
||||
}
|
||||
|
||||
.theme-showcase .navbar .container {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
@@ -32,21 +32,19 @@
|
||||
|
||||
<body>
|
||||
|
||||
<button class="btn pull-right tooltip-bottom" title="This should be shifted to the left">Shift Left</button>
|
||||
<button class="btn tooltip-bottom" title="This should be shifted to the right">Shift Right</button>
|
||||
<button class="btn tooltip-right" title="This should be shifted down">Shift Down</button>
|
||||
<button class="btn btn-default pull-right tooltip-bottom" title="This should be shifted to the left">Shift Left</button>
|
||||
<button class="btn btn-default tooltip-bottom" title="This should be shifted to the right">Shift Right</button>
|
||||
<button class="btn btn-default tooltip-right" title="This should be shifted down">Shift Down</button>
|
||||
|
||||
<div class="placeholder">There is a button down there ↓</div>
|
||||
|
||||
<button class="btn tooltip-right" title="This should be shifted up">Shift Up</button>
|
||||
<button class="btn btn-default tooltip-right btn-bottom" title="This should be shifted up">Shift Up</button>
|
||||
|
||||
<div class="container-viewport">
|
||||
<button class="btn tooltip-viewport-bottom" title="This should be shifted to the left">Shift Left</button>
|
||||
<button class="btn tooltip-viewport-right" title="This should be shifted down">Shift Down</button>
|
||||
<button class="btn btn-default tooltip-viewport-bottom" title="This should be shifted to the left">Shift Left</button>
|
||||
<button class="btn btn-default tooltip-viewport-right" title="This should be shifted down">Shift Down</button>
|
||||
|
||||
<button class="btn pull-right tooltip-viewport-bottom" title="This should be shifted to the right">Shift Right</button>
|
||||
<button class="btn btn-default pull-right tooltip-viewport-bottom" title="This should be shifted to the right">Shift Right</button>
|
||||
|
||||
<button class="btn tooltip-viewport-right btn-bottom" title="This should be shifted up">Shift Up</button>
|
||||
<button class="btn btn-default tooltip-viewport-right btn-bottom" title="This should be shifted up">Shift Up</button>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
@@ -8,18 +8,16 @@ body {
|
||||
.tooltip .tooltip-inner {
|
||||
min-width: 250px;
|
||||
max-width: 500px;
|
||||
min-height: 200px;
|
||||
}
|
||||
.placeholder {
|
||||
height: 900px;
|
||||
min-height: 100px;
|
||||
text-align: left;
|
||||
}
|
||||
.container-viewport {
|
||||
position: absolute;
|
||||
top: 600px;
|
||||
left: 200px;
|
||||
width: 600px;
|
||||
height: 400px;
|
||||
background: #c00;
|
||||
top: 100px;
|
||||
right: 250px;
|
||||
left: 250px;
|
||||
height: 300px;
|
||||
background-color: #eee;
|
||||
}
|
||||
.btn-bottom {
|
||||
position: absolute;
|
||||
|
||||
+4
-9
@@ -1,11 +1,6 @@
|
||||
{
|
||||
"curly" : true,
|
||||
"eqeqeq": true,
|
||||
"newcap": true,
|
||||
"noarg" : true,
|
||||
"node" : true,
|
||||
"nonbsp": true,
|
||||
"strict": true,
|
||||
"undef" : true,
|
||||
"unused": true
|
||||
"extends" : "../js/.jshintrc",
|
||||
"browser" : false,
|
||||
"es3" : false,
|
||||
"node" : true
|
||||
}
|
||||
|
||||
+9
-2
@@ -1,16 +1,22 @@
|
||||
{
|
||||
"disallowEmptyBlocks": true,
|
||||
"disallowKeywords": ["with"],
|
||||
"disallowLeftStickedOperators": ["?", "+", "-", "/", "*", "=", "==", "===", "!=", "!==", ">", ">=", "<", "<="],
|
||||
"disallowLeftStickedOperators": ["?", "/", "*", "=", "==", "===", "!=", "!==", ">", ">=", "<", "<="],
|
||||
"disallowMixedSpacesAndTabs": true,
|
||||
"disallowMultipleLineStrings": true,
|
||||
"disallowMultipleVarDecl": true,
|
||||
"disallowQuotedKeysInObjects": "allButReserved",
|
||||
"disallowRightStickedOperators": ["?", "/", "*", ":", "=", "==", "===", "!=", "!==", ">", ">=", "<", "<="],
|
||||
"disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~", "!"],
|
||||
"disallowSpaceBeforePostfixUnaryOperators": ["++", "--"],
|
||||
"disallowSpacesInNamedFunctionExpression": { "beforeOpeningRoundBrace": true },
|
||||
"disallowSpacesInsideArrayBrackets": true,
|
||||
"disallowSpacesInsideParentheses": true,
|
||||
"disallowTrailingComma": true,
|
||||
"disallowTrailingWhitespace": true,
|
||||
"requireCamelCaseOrUpperCaseIdentifiers": true,
|
||||
"requireCapitalizedConstructors": true,
|
||||
"requireCommaBeforeLineBreak": true,
|
||||
"requireDotNotation": true,
|
||||
"requireLeftStickedOperators": [","],
|
||||
"requireLineFeedAtFileEnd": true,
|
||||
@@ -18,10 +24,11 @@
|
||||
"requireSpaceAfterBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!==", ">", "<", ">=", "<="],
|
||||
"requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch"],
|
||||
"requireSpaceBeforeBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!==", ">", "<", ">=", "<="],
|
||||
"requireSpacesInAnonymousFunctionExpression": { "beforeOpeningCurlyBrace": true },
|
||||
"requireSpacesInAnonymousFunctionExpression": { "beforeOpeningCurlyBrace": true, "beforeOpeningRoundBrace": true },
|
||||
"requireSpacesInFunctionDeclaration": { "beforeOpeningCurlyBrace": true },
|
||||
"requireSpacesInFunctionExpression": { "beforeOpeningCurlyBrace": true },
|
||||
"requireSpacesInNamedFunctionExpression": { "beforeOpeningCurlyBrace": true },
|
||||
"requireSpacesInsideObjectBrackets": "allButNested",
|
||||
"validateIndentation": 2,
|
||||
"validateLineBreaks": "LF",
|
||||
"validateQuoteMarks": "'"
|
||||
|
||||
+7
-5
@@ -1,13 +1,15 @@
|
||||
{
|
||||
"asi" : true,
|
||||
"boss" : true,
|
||||
"browser" : true,
|
||||
"debug" : true,
|
||||
"devel" : true,
|
||||
"eqeqeq" : false,
|
||||
"eqnull" : true,
|
||||
"es3" : true,
|
||||
"expr" : true,
|
||||
"jquery" : true,
|
||||
"latedef" : true,
|
||||
"laxbreak" : true,
|
||||
"unused" : true,
|
||||
"validthis": true
|
||||
"nonbsp" : true,
|
||||
"strict" : true,
|
||||
"undef" : true,
|
||||
"unused" : true
|
||||
}
|
||||
|
||||
+3
-1
@@ -86,7 +86,9 @@
|
||||
.trigger($.Event(affixType.replace('affix', 'affixed')))
|
||||
|
||||
if (affix == 'bottom') {
|
||||
this.$element.offset({ top: scrollHeight - this.$element.height() - offsetBottom })
|
||||
this.$element.offset({
|
||||
top: scrollHeight - this.$element.height() - offsetBottom
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+11
-5
@@ -103,10 +103,13 @@
|
||||
$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 slideEvent = $.Event('slide.bs.carousel', { relatedTarget: relatedTarget, direction: direction })
|
||||
var slideEvent = $.Event('slide.bs.carousel', {
|
||||
relatedTarget: relatedTarget,
|
||||
direction: direction
|
||||
})
|
||||
this.$element.trigger(slideEvent)
|
||||
if (slideEvent.isDefaultPrevented()) return
|
||||
|
||||
@@ -133,7 +136,9 @@
|
||||
$next.removeClass([type, direction].join(' ')).addClass('active')
|
||||
$active.removeClass(['active', direction].join(' '))
|
||||
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)
|
||||
} else {
|
||||
@@ -185,7 +190,8 @@
|
||||
// =================
|
||||
|
||||
$(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 options = $.extend({}, $target.data(), $this.data())
|
||||
var slideIndex = $this.attr('data-slide-to')
|
||||
@@ -193,7 +199,7 @@
|
||||
|
||||
Plugin.call($target, options)
|
||||
|
||||
if (slideIndex = $this.attr('data-slide-to')) {
|
||||
if (slideIndex) {
|
||||
$target.data('bs.carousel').to(slideIndex)
|
||||
}
|
||||
|
||||
|
||||
+2
-1
@@ -159,7 +159,8 @@
|
||||
// =================
|
||||
|
||||
$(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')
|
||||
|| e.preventDefault()
|
||||
|| (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
|
||||
|
||||
+6
-3
@@ -209,7 +209,7 @@
|
||||
}
|
||||
|
||||
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)
|
||||
}
|
||||
|
||||
@@ -268,10 +268,13 @@
|
||||
|
||||
if ($this.is('a')) e.preventDefault()
|
||||
|
||||
Plugin.call($target, option, this)
|
||||
$target.one('hide.bs.modal', function () {
|
||||
$target.one('show.bs.modal', function (showEvent) {
|
||||
if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown
|
||||
$target.one('hidden.bs.modal', function () {
|
||||
$this.is(':visible') && $this.trigger('focus')
|
||||
})
|
||||
})
|
||||
Plugin.call($target, option, this)
|
||||
})
|
||||
|
||||
}(jQuery);
|
||||
|
||||
+1
-1
@@ -72,7 +72,7 @@
|
||||
}
|
||||
|
||||
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 () {
|
||||
|
||||
+16
-13
@@ -14,20 +14,17 @@
|
||||
// ==========================
|
||||
|
||||
function ScrollSpy(element, options) {
|
||||
var href
|
||||
var process = $.proxy(this.process, this)
|
||||
|
||||
this.$element = $(element).is('body') ? $(window) : $(element)
|
||||
this.$body = $('body')
|
||||
this.$scrollElement = this.$element.on('scroll.bs.scrollspy', process)
|
||||
this.$scrollElement = $(element).is('body') ? $(window) : $(element)
|
||||
this.options = $.extend({}, ScrollSpy.DEFAULTS, options)
|
||||
this.selector = (this.options.target
|
||||
|| ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
|
||||
|| '') + ' .nav li > a'
|
||||
this.offsets = $([])
|
||||
this.targets = $([])
|
||||
this.selector = (this.options.target || '') + ' .nav li > a'
|
||||
this.offsets = []
|
||||
this.targets = []
|
||||
this.activeTarget = null
|
||||
|
||||
this.$scrollElement.on('scroll.bs.scrollspy', process)
|
||||
this.refresh()
|
||||
this.process()
|
||||
}
|
||||
@@ -39,10 +36,16 @@
|
||||
}
|
||||
|
||||
ScrollSpy.prototype.refresh = function () {
|
||||
var offsetMethod = this.$element[0] == window ? 'offset' : 'position'
|
||||
var offsetMethod = 'offset'
|
||||
var offsetBase = 0
|
||||
|
||||
this.offsets = $([])
|
||||
this.targets = $([])
|
||||
if (!$.isWindow(this.$scrollElement[0])) {
|
||||
offsetMethod = 'position'
|
||||
offsetBase = this.$scrollElement.scrollTop()
|
||||
}
|
||||
|
||||
this.offsets = []
|
||||
this.targets = []
|
||||
|
||||
var self = this
|
||||
|
||||
@@ -57,7 +60,7 @@
|
||||
return ($href
|
||||
&& $href.length
|
||||
&& $href.is(':visible')
|
||||
&& [[ $href[offsetMethod]().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]]) || null
|
||||
&& [[$href[offsetMethod]().top + offsetBase, href]]) || null
|
||||
})
|
||||
.sort(function (a, b) { return a[0] - b[0] })
|
||||
.each(function () {
|
||||
@@ -76,7 +79,7 @@
|
||||
var i
|
||||
|
||||
if (scrollTop >= maxScroll) {
|
||||
return activeTarget != (i = targets.last()[0]) && this.activate(i)
|
||||
return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)
|
||||
}
|
||||
|
||||
if (activeTarget && scrollTop <= offsets[0]) {
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"extends" : "../../.jshintrc",
|
||||
"devel" : true,
|
||||
"qunit" : true
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
$(function () {
|
||||
'use strict';
|
||||
|
||||
module('affix plugin')
|
||||
|
||||
@@ -53,7 +54,9 @@ $(function () {
|
||||
|
||||
setTimeout(function () {
|
||||
window.scrollTo(0, document.body.scrollHeight)
|
||||
setTimeout(function () { window.scroll(0,0) }, 0)
|
||||
setTimeout(function () {
|
||||
window.scroll(0, 0)
|
||||
}, 0)
|
||||
}, 0)
|
||||
})
|
||||
})
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
$(function () {
|
||||
'use strict';
|
||||
|
||||
module('alert plugin')
|
||||
|
||||
@@ -29,8 +30,8 @@ $(function () {
|
||||
var alertHTML = '<div class="alert-message warning fade in">' +
|
||||
'<a class="close" href="#" data-dismiss="alert">×</a>' +
|
||||
'<p><strong>Holy guacamole!</strong> Best check yo self, you\'re not looking too good.</p>' +
|
||||
'</div>',
|
||||
alert = $(alertHTML).bootstrapAlert()
|
||||
'</div>'
|
||||
var alert = $(alertHTML).bootstrapAlert()
|
||||
|
||||
alert.find('.close').click()
|
||||
|
||||
@@ -43,8 +44,8 @@ $(function () {
|
||||
var alertHTML = '<div class="alert-message warning fade in">' +
|
||||
'<a class="close" href="#" data-dismiss="alert">×</a>' +
|
||||
'<p><strong>Holy guacamole!</strong> Best check yo self, you\'re not looking too good.</p>' +
|
||||
'</div>',
|
||||
alert = $(alertHTML).appendTo('#qunit-fixture').bootstrapAlert()
|
||||
'</div>'
|
||||
var alert = $(alertHTML).appendTo('#qunit-fixture').bootstrapAlert()
|
||||
|
||||
ok($('#qunit-fixture').find('.alert-message').length, 'element added to dom')
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
$(function () {
|
||||
'use strict';
|
||||
|
||||
module('button plugin')
|
||||
|
||||
@@ -88,8 +89,8 @@ $(function () {
|
||||
})
|
||||
|
||||
test('should toggle active when btn children are clicked', function () {
|
||||
var btn = $('<button class="btn" data-toggle="button">mdo</button>'),
|
||||
inner = $('<i></i>')
|
||||
var btn = $('<button class="btn" data-toggle="button">mdo</button>')
|
||||
var inner = $('<i></i>')
|
||||
btn
|
||||
.append(inner)
|
||||
.appendTo($('#qunit-fixture'))
|
||||
@@ -99,9 +100,9 @@ $(function () {
|
||||
})
|
||||
|
||||
test('should toggle active when btn children are clicked within btn-group', function () {
|
||||
var btngroup = $('<div class="btn-group" data-toggle="buttons"></div>'),
|
||||
btn = $('<button class="btn">fat</button>'),
|
||||
inner = $('<i></i>')
|
||||
var btngroup = $('<div class="btn-group" data-toggle="buttons"></div>')
|
||||
var btn = $('<button class="btn">fat</button>')
|
||||
var inner = $('<i></i>')
|
||||
btngroup
|
||||
.append(btn.append(inner))
|
||||
.appendTo($('#qunit-fixture'))
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
$(function () {
|
||||
'use strict';
|
||||
|
||||
module('carousel plugin')
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
$(function () {
|
||||
'use strict';
|
||||
|
||||
module('collapse plugin')
|
||||
|
||||
|
||||
+19
-18
@@ -1,4 +1,5 @@
|
||||
$(function () {
|
||||
'use strict';
|
||||
|
||||
module('dropdowns plugin')
|
||||
|
||||
@@ -37,8 +38,8 @@ $(function () {
|
||||
'<li><a href="#">Another link</a></li>' +
|
||||
'</ul>' +
|
||||
'</li>' +
|
||||
'</ul>',
|
||||
dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').bootstrapDropdown().click()
|
||||
'</ul>'
|
||||
var dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').bootstrapDropdown().click()
|
||||
|
||||
ok(!dropdown.parent('.dropdown').hasClass('open'), 'open class added on click')
|
||||
})
|
||||
@@ -54,8 +55,8 @@ $(function () {
|
||||
'<li><a href="#">Another link</a></li>' +
|
||||
'</ul>' +
|
||||
'</li>' +
|
||||
'</ul>',
|
||||
dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').bootstrapDropdown().click()
|
||||
'</ul>'
|
||||
var dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').bootstrapDropdown().click()
|
||||
|
||||
ok(!dropdown.parent('.dropdown').hasClass('open'), 'open class added on click')
|
||||
})
|
||||
@@ -71,8 +72,8 @@ $(function () {
|
||||
'<li><a href="#">Another link</a></li>' +
|
||||
'</ul>' +
|
||||
'</li>' +
|
||||
'</ul>',
|
||||
dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').bootstrapDropdown().click()
|
||||
'</ul>'
|
||||
var dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').bootstrapDropdown().click()
|
||||
|
||||
ok(dropdown.parent('.dropdown').hasClass('open'), 'open class added on click')
|
||||
})
|
||||
@@ -88,8 +89,8 @@ $(function () {
|
||||
'<li><a href="#">Another link</a></li>' +
|
||||
'</ul>' +
|
||||
'</li>' +
|
||||
'</ul>',
|
||||
dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').bootstrapDropdown().click()
|
||||
'</ul>'
|
||||
var dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').bootstrapDropdown().click()
|
||||
|
||||
ok(dropdown.parent('.dropdown').hasClass('open'), 'open class added on click')
|
||||
})
|
||||
@@ -106,8 +107,8 @@ $(function () {
|
||||
'<li><a href="#">Another link</a></li>' +
|
||||
'</ul>' +
|
||||
'</li>' +
|
||||
'</ul>',
|
||||
dropdown = $(dropdownHTML)
|
||||
'</ul>'
|
||||
var dropdown = $(dropdownHTML)
|
||||
.appendTo('#qunit-fixture')
|
||||
.find('[data-toggle="dropdown"]')
|
||||
.bootstrapDropdown()
|
||||
@@ -135,10 +136,10 @@ $(function () {
|
||||
' <ul class="dropdown-menu">' +
|
||||
' <li><a href="#">Action 1</a></li>' +
|
||||
' </ul>' +
|
||||
'</div>',
|
||||
dropdowns = $(dropdownHTML).appendTo('#qunit-fixture').find('[data-toggle="dropdown"]'),
|
||||
first = dropdowns.first(),
|
||||
last = dropdowns.last()
|
||||
'</div>'
|
||||
var dropdowns = $(dropdownHTML).appendTo('#qunit-fixture').find('[data-toggle="dropdown"]')
|
||||
var first = dropdowns.first()
|
||||
var last = dropdowns.last()
|
||||
|
||||
ok(dropdowns.length == 2, 'Should be two dropdowns')
|
||||
|
||||
@@ -168,8 +169,8 @@ $(function () {
|
||||
'<li><a href="#">Another link</a></li>' +
|
||||
'</ul>' +
|
||||
'</li>' +
|
||||
'</ul>',
|
||||
dropdown = $(dropdownHTML)
|
||||
'</ul>'
|
||||
var dropdown = $(dropdownHTML)
|
||||
.appendTo('#qunit-fixture')
|
||||
.find('[data-toggle="dropdown"]')
|
||||
.bootstrapDropdown()
|
||||
@@ -202,8 +203,8 @@ $(function () {
|
||||
'<li><a href="#">Another link</a></li>' +
|
||||
'</ul>' +
|
||||
'</li>' +
|
||||
'</ul>',
|
||||
dropdown = $(dropdownHTML)
|
||||
'</ul>'
|
||||
var dropdown = $(dropdownHTML)
|
||||
.appendTo('#qunit-fixture')
|
||||
.find('[data-toggle="dropdown"]')
|
||||
.bootstrapDropdown()
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
$(function () {
|
||||
'use strict';
|
||||
|
||||
module('modal plugin')
|
||||
|
||||
@@ -201,4 +202,55 @@ $(function () {
|
||||
|
||||
div.remove()
|
||||
})
|
||||
|
||||
test('should restore focus to toggling element when modal is hidden after having been opened via data-api', function () {
|
||||
stop()
|
||||
$.support.transition = false
|
||||
var toggleBtn = $('<button data-toggle="modal" data-target="#modal-test">Launch modal</button>').appendTo('#qunit-fixture')
|
||||
var div = $('<div id="modal-test"><div class="contents"><div id="close" data-dismiss="modal"></div></div></div>')
|
||||
div
|
||||
.on('hidden.bs.modal', function () {
|
||||
window.setTimeout(function () { // give the focus restoration callback a chance to run
|
||||
equal(document.activeElement, toggleBtn[0], 'toggling element is once again focused')
|
||||
div.remove()
|
||||
toggleBtn.remove()
|
||||
start()
|
||||
}, 0)
|
||||
})
|
||||
.on('shown.bs.modal', function () {
|
||||
$('#close').click()
|
||||
})
|
||||
.appendTo('#qunit-fixture')
|
||||
toggleBtn.click()
|
||||
})
|
||||
|
||||
test('should not restore focus to toggling element if the associated show event gets prevented', function () {
|
||||
stop()
|
||||
$.support.transition = false
|
||||
var toggleBtn = $('<button data-toggle="modal" data-target="#modal-test">Launch modal</button>').appendTo('#qunit-fixture')
|
||||
var otherBtn = $('<button id="other-btn">Golden boy</button>').appendTo('#qunit-fixture')
|
||||
var div = $('<div id="modal-test"><div class="contents"><div id="close" data-dismiss="modal"></div></div></div>')
|
||||
div
|
||||
.one('show.bs.modal', function (e) {
|
||||
e.preventDefault()
|
||||
otherBtn.focus()
|
||||
window.setTimeout(function () { // give the focus event from the previous line a chance to run
|
||||
div.bootstrapModal('show')
|
||||
}, 0)
|
||||
})
|
||||
.on('hidden.bs.modal', function () {
|
||||
window.setTimeout(function () { // give the focus restoration callback a chance to run (except it shouldn't run in this case)
|
||||
equal(document.activeElement, otherBtn[0], 'show was prevented, so focus should not have been restored to toggling element')
|
||||
div.remove()
|
||||
toggleBtn.remove()
|
||||
otherBtn.remove()
|
||||
start()
|
||||
}, 0)
|
||||
})
|
||||
.on('shown.bs.modal', function () {
|
||||
$('#close').click()
|
||||
})
|
||||
.appendTo('#qunit-fixture')
|
||||
toggleBtn.click()
|
||||
})
|
||||
})
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
* Licensed under the MIT license.
|
||||
*/
|
||||
|
||||
/*global QUnit:true, alert:true*/
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
$(function () {
|
||||
'use strict';
|
||||
|
||||
module('popover plugin')
|
||||
|
||||
@@ -83,7 +84,7 @@ $(function () {
|
||||
test('should not duplicate HTML object', function () {
|
||||
$.support.transition = false
|
||||
|
||||
$div = $('<div>').html('loves writing tests (╯°□°)╯︵ ┻━┻')
|
||||
var $div = $('<div>').html('loves writing tests (╯°□°)╯︵ ┻━┻')
|
||||
|
||||
var popover = $('<a href="#">@fat</a>')
|
||||
.appendTo('#qunit-fixture')
|
||||
@@ -166,7 +167,9 @@ $(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($._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')
|
||||
|
||||
+12
-10
@@ -1,4 +1,5 @@
|
||||
$(function () {
|
||||
'use strict';
|
||||
|
||||
module('scrollspy plugin')
|
||||
|
||||
@@ -26,8 +27,9 @@ $(function () {
|
||||
})
|
||||
|
||||
test('should switch active class on scroll', function () {
|
||||
var sectionHTML = '<div id="masthead"></div>',
|
||||
topbarHTML = '<div class="topbar">' +
|
||||
var sectionHTML = '<div id="masthead"></div>'
|
||||
$(sectionHTML).append('#qunit-fixture')
|
||||
var topbarHTML = '<div class="topbar">' +
|
||||
'<div class="topbar-inner">' +
|
||||
'<div class="container">' +
|
||||
'<h3><a href="#">Bootstrap</a></h3>' +
|
||||
@@ -35,8 +37,8 @@ $(function () {
|
||||
'</ul>' +
|
||||
'</div>' +
|
||||
'</div>' +
|
||||
'</div>',
|
||||
$topbar = $(topbarHTML).bootstrapScrollspy()
|
||||
'</div>'
|
||||
var $topbar = $(topbarHTML).bootstrapScrollspy()
|
||||
|
||||
$(sectionHTML).append('#qunit-fixture')
|
||||
ok($topbar.find('.active', true))
|
||||
@@ -69,9 +71,9 @@ $(function () {
|
||||
'</p>' +
|
||||
'</div>' +
|
||||
'</div>' +
|
||||
'</div>',
|
||||
$section = $(sectionHTML).appendTo('#qunit-fixture'),
|
||||
$scrollSpy = $section
|
||||
'</div>'
|
||||
var $section = $(sectionHTML).appendTo('#qunit-fixture')
|
||||
var $scrollSpy = $section
|
||||
.show()
|
||||
.find('#scrollspy-example')
|
||||
.bootstrapScrollspy({ target: '#ss-target' })
|
||||
@@ -97,9 +99,9 @@ $(function () {
|
||||
'<div id="one" style="height: 500px;"></div>' +
|
||||
'<div id="two" style="height: 300px;"></div>' +
|
||||
'<div id="three" style="height: 10px;"></div>' +
|
||||
'</div>',
|
||||
$section = $(sectionHTML).appendTo('#qunit-fixture'),
|
||||
$scrollSpy = $section
|
||||
'</div>'
|
||||
var $section = $(sectionHTML).appendTo('#qunit-fixture')
|
||||
var $scrollSpy = $section
|
||||
.show()
|
||||
.filter('#content')
|
||||
$scrollSpy.bootstrapScrollspy({ target: '#navigation', offset: $scrollSpy.position().top })
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
$(function () {
|
||||
'use strict';
|
||||
|
||||
module('tabs plugin')
|
||||
|
||||
|
||||
+72
-35
@@ -1,4 +1,5 @@
|
||||
$(function () {
|
||||
'use strict';
|
||||
|
||||
module('tooltip plugin')
|
||||
|
||||
@@ -65,8 +66,8 @@ $(function () {
|
||||
test('should assign a unique id tooltip element', function () {
|
||||
$('<a href="#" rel="tooltip" title="Another tooltip"></a>')
|
||||
.appendTo('#qunit-fixture')
|
||||
.bootstrapTooltip('show'),
|
||||
id = $('.tooltip').attr('id')
|
||||
.bootstrapTooltip('show')
|
||||
var id = $('.tooltip').attr('id')
|
||||
|
||||
ok($('#' + id).length == 1 && id.indexOf('tooltip') === 0, 'generated prefixed and unique tooltip id')
|
||||
})
|
||||
@@ -117,9 +118,11 @@ $(function () {
|
||||
|
||||
test('should fire shown event', function () {
|
||||
stop()
|
||||
$('<div title="tooltip title"></div>')
|
||||
var tooltip = $('<div title="tooltip title"></div>').appendTo('#qunit-fixture')
|
||||
tooltip
|
||||
.on('shown.bs.tooltip', function () {
|
||||
ok(true, 'shown was called')
|
||||
tooltip.remove()
|
||||
start()
|
||||
})
|
||||
.bootstrapTooltip('show')
|
||||
@@ -141,12 +144,14 @@ $(function () {
|
||||
|
||||
test('should fire hide event', function () {
|
||||
stop()
|
||||
$('<div title="tooltip title"></div>')
|
||||
var tooltip = $('<div title="tooltip title"></div>').appendTo('#qunit-fixture')
|
||||
tooltip
|
||||
.on('shown.bs.tooltip', function () {
|
||||
$(this).bootstrapTooltip('hide')
|
||||
})
|
||||
.on('hide.bs.tooltip', function () {
|
||||
ok(true, 'hide was called')
|
||||
tooltip.remove()
|
||||
start()
|
||||
})
|
||||
.bootstrapTooltip('show')
|
||||
@@ -154,12 +159,14 @@ $(function () {
|
||||
|
||||
test('should fire hidden event', function () {
|
||||
stop()
|
||||
$('<div title="tooltip title"></div>')
|
||||
var tooltip = $('<div title="tooltip title"></div>').appendTo('#qunit-fixture')
|
||||
tooltip
|
||||
.on('shown.bs.tooltip', function () {
|
||||
$(this).bootstrapTooltip('hide')
|
||||
})
|
||||
.on('hidden.bs.tooltip', function () {
|
||||
ok(true, 'hidden was called')
|
||||
tooltip.remove()
|
||||
start()
|
||||
})
|
||||
.bootstrapTooltip('show')
|
||||
@@ -167,13 +174,15 @@ $(function () {
|
||||
|
||||
test('should not fire hidden event when default prevented', function () {
|
||||
stop()
|
||||
$('<div title="tooltip title"></div>')
|
||||
var tooltip = $('<div title="tooltip title"></div>').appendTo('#qunit-fixture')
|
||||
tooltip
|
||||
.on('shown.bs.tooltip', function () {
|
||||
$(this).bootstrapTooltip('hide')
|
||||
})
|
||||
.on('hide.bs.tooltip', function (e) {
|
||||
e.preventDefault()
|
||||
ok(true, 'hide was called')
|
||||
tooltip.remove()
|
||||
start()
|
||||
})
|
||||
.on('hidden.bs.tooltip', function () {
|
||||
@@ -311,8 +320,9 @@ $(function () {
|
||||
|
||||
test('should show tooltip with delegate selector on click', function () {
|
||||
var div = $('<div><a href="#" rel="tooltip" title="Another tooltip"></a></div>')
|
||||
div.appendTo('#qunit-fixture')
|
||||
.bootstrapTooltip({ selector: 'a[rel="tooltip"]', trigger: 'click' })
|
||||
div.appendTo('#qunit-fixture').bootstrapTooltip({
|
||||
selector: 'a[rel="tooltip"]', trigger: 'click'
|
||||
})
|
||||
div.find('a').trigger('click')
|
||||
ok($('.tooltip').is('.fade.in'), 'tooltip is faded in')
|
||||
})
|
||||
@@ -367,9 +377,9 @@ $(function () {
|
||||
|
||||
test('should place tooltip on top of element', function () {
|
||||
var container = $('<div />').appendTo('body')
|
||||
.css({position: 'absolute', bottom: 0, left: 0, textAlign: 'right', width: 300, height: 300}),
|
||||
p = $('<p style="margin-top:200px" />').appendTo(container),
|
||||
tooltiped = $('<a href="#" title="very very very very very very very long tooltip">Hover me</a>')
|
||||
.css({ position: 'absolute', bottom: 0, left: 0, textAlign: 'right', width: 300, height: 300 })
|
||||
var p = $('<p style="margin-top:200px" />').appendTo(container)
|
||||
var tooltiped = $('<a href="#" title="very very very very very very very long tooltip">Hover me</a>')
|
||||
.css({ marginTop: 200 })
|
||||
.appendTo(p)
|
||||
.bootstrapTooltip({ placement: 'top', animate: false })
|
||||
@@ -389,12 +399,12 @@ $(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>')
|
||||
|
||||
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 container = $('<div />').appendTo('body')
|
||||
var target = $('<a href="#" rel="tooltip" title="very very very very very very very very long tooltip in one line"></a>')
|
||||
.appendTo(container)
|
||||
.bootstrapTooltip({ placement: 'right', viewport: null })
|
||||
.bootstrapTooltip('show'),
|
||||
tooltip = container.find('.tooltip')
|
||||
.bootstrapTooltip('show')
|
||||
var tooltip = container.find('.tooltip')
|
||||
|
||||
// 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))
|
||||
@@ -482,12 +492,12 @@ $(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>')
|
||||
|
||||
var container = $('<div />').appendTo('body'),
|
||||
target = $('<a href="#" rel="tooltip" title="tip" style="position: fixed; top: 0px; left: 0px;"></a>')
|
||||
var container = $('<div />').appendTo('body')
|
||||
var target = $('<a href="#" rel="tooltip" title="tip" style="position: fixed; top: 0px; left: 0px;"></a>')
|
||||
.appendTo(container)
|
||||
.bootstrapTooltip({ placement: 'right', viewport: { selector: 'body', padding: 12 }})
|
||||
.bootstrapTooltip('show'),
|
||||
tooltip = container.find('.tooltip')
|
||||
.bootstrapTooltip('show')
|
||||
var tooltip = container.find('.tooltip')
|
||||
|
||||
ok(Math.round(tooltip.offset().top) === 12)
|
||||
target.bootstrapTooltip('hide')
|
||||
@@ -497,12 +507,12 @@ $(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>')
|
||||
|
||||
var container = $('<div />').appendTo('body'),
|
||||
target = $('<a href="#" rel="tooltip" title="tip" style="position: fixed; bottom: 0px; left: 0px;"></a>')
|
||||
var container = $('<div />').appendTo('body')
|
||||
var target = $('<a href="#" rel="tooltip" title="tip" style="position: fixed; bottom: 0px; left: 0px;"></a>')
|
||||
.appendTo(container)
|
||||
.bootstrapTooltip({ placement: 'right', viewport: { selector: 'body', padding: 12 }})
|
||||
.bootstrapTooltip('show'),
|
||||
tooltip = container.find('.tooltip')
|
||||
.bootstrapTooltip('show')
|
||||
var tooltip = container.find('.tooltip')
|
||||
|
||||
ok(Math.round(tooltip.offset().top) === Math.round($(window).height() - 12 - tooltip[0].offsetHeight))
|
||||
target.bootstrapTooltip('hide')
|
||||
@@ -512,12 +522,12 @@ $(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>')
|
||||
|
||||
var container = $('<div />').appendTo('body'),
|
||||
target = $('<a href="#" rel="tooltip" title="tip" style="position: fixed; top: 0px; left: 0px;"></a>')
|
||||
var container = $('<div />').appendTo('body')
|
||||
var target = $('<a href="#" rel="tooltip" title="tip" style="position: fixed; top: 0px; left: 0px;"></a>')
|
||||
.appendTo(container)
|
||||
.bootstrapTooltip({ placement: 'bottom', viewport: { selector: 'body', padding: 12 }})
|
||||
.bootstrapTooltip('show'),
|
||||
tooltip = container.find('.tooltip')
|
||||
.bootstrapTooltip('show')
|
||||
var tooltip = container.find('.tooltip')
|
||||
|
||||
ok(Math.round(tooltip.offset().left) === 12)
|
||||
target.bootstrapTooltip('hide')
|
||||
@@ -527,12 +537,12 @@ $(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>')
|
||||
|
||||
var container = $('<div />').appendTo('body'),
|
||||
target = $('<a href="#" rel="tooltip" title="tip" style="position: fixed; top: 0px; right: 0px;"></a>')
|
||||
var container = $('<div />').appendTo('body')
|
||||
var target = $('<a href="#" rel="tooltip" title="tip" style="position: fixed; top: 0px; right: 0px;"></a>')
|
||||
.appendTo(container)
|
||||
.bootstrapTooltip({ placement: 'bottom', viewport: { selector: 'body', padding: 12 }})
|
||||
.bootstrapTooltip('show'),
|
||||
tooltip = container.find('.tooltip')
|
||||
.bootstrapTooltip('show')
|
||||
var tooltip = container.find('.tooltip')
|
||||
|
||||
ok(Math.round(tooltip.offset().left) === Math.round($(window).width() - 12 - tooltip[0].offsetWidth))
|
||||
target.bootstrapTooltip('hide')
|
||||
@@ -543,16 +553,43 @@ $(function () {
|
||||
$('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>')
|
||||
|
||||
var container = $('<div />', {class: 'container-viewport'}).appendTo('body'),
|
||||
target = $('<a href="#" rel="tooltip" title="tip" style="position: fixed; top: 50px; left: 350px;"></a>')
|
||||
var container = $('<div />', { 'class': 'container-viewport' }).appendTo('body')
|
||||
var target = $('<a href="#" rel="tooltip" title="tip" style="position: fixed; top: 50px; left: 350px;"></a>')
|
||||
.appendTo(container)
|
||||
.bootstrapTooltip({ placement: 'bottom', viewport: '.container-viewport' })
|
||||
.bootstrapTooltip('show'),
|
||||
tooltip = container.find('.tooltip')
|
||||
.bootstrapTooltip('show')
|
||||
var tooltip = container.find('.tooltip')
|
||||
|
||||
ok(Math.round(tooltip.offset().left) === Math.round(60 + container.width() - tooltip[0].offsetWidth))
|
||||
target.bootstrapTooltip('hide')
|
||||
$('head #test').remove()
|
||||
$('head #viewport-style').remove()
|
||||
})
|
||||
|
||||
test('should not error when trying to show an auto-placed tooltip that has been removed from the dom', function () {
|
||||
var tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"></a>').appendTo('#qunit-fixture')
|
||||
|
||||
tooltip
|
||||
.one('show.bs.tooltip', function () {
|
||||
tooltip.remove()
|
||||
})
|
||||
.bootstrapTooltip({ placement: 'auto' })
|
||||
|
||||
var passed = true
|
||||
try {
|
||||
tooltip.bootstrapTooltip('show')
|
||||
}
|
||||
catch (err) {
|
||||
passed = false
|
||||
console.log(err)
|
||||
}
|
||||
ok(passed, '.tooltip(\'show\') should not throw an error in this case')
|
||||
|
||||
try {
|
||||
tooltip.remove()
|
||||
}
|
||||
catch (err) {
|
||||
// tooltip may have already been removed
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
+5
-4
@@ -145,8 +145,9 @@
|
||||
if (this.hasContent() && this.enabled) {
|
||||
this.$element.trigger(e)
|
||||
|
||||
if (e.isDefaultPrevented()) return
|
||||
var that = this;
|
||||
var inDom = $.contains(document.documentElement, this.$element[0])
|
||||
if (e.isDefaultPrevented() || !inDom) return
|
||||
var that = this
|
||||
|
||||
var $tip = this.tip()
|
||||
|
||||
@@ -378,11 +379,11 @@
|
||||
}
|
||||
|
||||
Tooltip.prototype.tip = function () {
|
||||
return this.$tip = this.$tip || $(this.options.template)
|
||||
return (this.$tip = this.$tip || $(this.options.template))
|
||||
}
|
||||
|
||||
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 () {
|
||||
|
||||
+2
-1
@@ -34,7 +34,8 @@
|
||||
|
||||
// http://blog.alexmaccaw.com/css-transitions
|
||||
$.fn.emulateTransitionEnd = function (duration) {
|
||||
var called = false, $el = this
|
||||
var called = false
|
||||
var $el = this
|
||||
$(this).one($.support.transition.end, function () { called = true })
|
||||
var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
|
||||
setTimeout(callback, duration)
|
||||
|
||||
+21
-5
@@ -247,19 +247,35 @@ input[type="month"] {
|
||||
}
|
||||
|
||||
// Apply same disabled cursor tweak as for inputs
|
||||
// Some special care is needed because <label>s don't inherit their parent's `cursor`.
|
||||
//
|
||||
// Note: Neither radios nor checkboxes can be readonly.
|
||||
input[type="radio"],
|
||||
input[type="checkbox"],
|
||||
.radio,
|
||||
.radio-inline,
|
||||
.checkbox,
|
||||
.checkbox-inline {
|
||||
input[type="checkbox"] {
|
||||
&[disabled],
|
||||
&.disabled,
|
||||
fieldset[disabled] & {
|
||||
cursor: not-allowed;
|
||||
}
|
||||
}
|
||||
// These classes are used directly on <label>s
|
||||
.radio-inline,
|
||||
.checkbox-inline {
|
||||
&.disabled,
|
||||
fieldset[disabled] & {
|
||||
cursor: not-allowed;
|
||||
}
|
||||
}
|
||||
// These classes are used on elements with <label> descendants
|
||||
.radio,
|
||||
.checkbox {
|
||||
&.disabled,
|
||||
fieldset[disabled] & {
|
||||
label {
|
||||
cursor: not-allowed;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Form control sizing
|
||||
|
||||
@@ -10,11 +10,11 @@
|
||||
// Import the fonts
|
||||
@font-face {
|
||||
font-family: 'Glyphicons Halflings';
|
||||
src: ~"url('@{icon-font-path}@{icon-font-name}.eot')";
|
||||
src: ~"url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype')",
|
||||
~"url('@{icon-font-path}@{icon-font-name}.woff') format('woff')",
|
||||
~"url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype')",
|
||||
~"url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg')";
|
||||
src: url('@{icon-font-path}@{icon-font-name}.eot');
|
||||
src: url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype'),
|
||||
url('@{icon-font-path}@{icon-font-name}.woff') format('woff'),
|
||||
url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype'),
|
||||
url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg');
|
||||
}
|
||||
|
||||
// Catchall baseclass
|
||||
|
||||
+2
-2
@@ -31,10 +31,10 @@
|
||||
|
||||
// When fading in the modal, animate it to slide down
|
||||
&.fade .modal-dialog {
|
||||
.translate(0, -25%);
|
||||
.translate3d(0, -25%, 0);
|
||||
.transition-transform(~"0.3s ease-out");
|
||||
}
|
||||
&.in .modal-dialog { .translate(0, 0)}
|
||||
&.in .modal-dialog { .translate3d(0, 0, 0) }
|
||||
}
|
||||
|
||||
// Shell div to position the modal with bottom padding
|
||||
|
||||
@@ -141,6 +141,7 @@
|
||||
right: 0;
|
||||
left: 0;
|
||||
z-index: @zindex-navbar-fixed;
|
||||
.translate3d(0, 0, 0);
|
||||
|
||||
// Undo the rounded corners
|
||||
@media (min-width: @grid-float-breakpoint) {
|
||||
|
||||
+1
-1
@@ -208,7 +208,7 @@
|
||||
|
||||
.panel-heading {
|
||||
border-bottom: 0;
|
||||
+ .panel-collapse .panel-body {
|
||||
+ .panel-collapse > .panel-body {
|
||||
border-top: 1px solid @panel-inner-border;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,4 +53,5 @@
|
||||
|
||||
.affix {
|
||||
position: fixed;
|
||||
.translate3d(0, 0, 0);
|
||||
}
|
||||
|
||||
+3
-3
@@ -42,10 +42,10 @@
|
||||
"grunt-contrib-copy": "~0.5.0",
|
||||
"grunt-contrib-csslint": "~0.2.0",
|
||||
"grunt-contrib-cssmin": "~0.9.0",
|
||||
"grunt-contrib-jade": "~0.11.0",
|
||||
"grunt-contrib-jade": "~0.12.0",
|
||||
"grunt-contrib-jshint": "~0.10.0",
|
||||
"grunt-contrib-less": "~0.11.0",
|
||||
"grunt-contrib-qunit": "~0.4.0",
|
||||
"grunt-contrib-qunit": "~0.5.1",
|
||||
"grunt-contrib-uglify": "~0.4.0",
|
||||
"grunt-contrib-watch": "~0.6.1",
|
||||
"grunt-csscomb": "~2.0.1",
|
||||
@@ -53,7 +53,7 @@
|
||||
"grunt-html-validation": "~0.1.15",
|
||||
"grunt-jekyll": "~0.4.1",
|
||||
"grunt-jscs-checker": "~0.4.3",
|
||||
"grunt-saucelabs": "~7.0.0",
|
||||
"grunt-saucelabs": "~8.0.2",
|
||||
"grunt-sed": "~0.1.1",
|
||||
"load-grunt-tasks": "~0.4.0",
|
||||
"markdown": "~0.5.0",
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user