mirror of
https://github.com/twbs/bootstrap.git
synced 2025-01-29 21:52:22 +01:00
Merge branch '2.2.3' of github.com:twitter/bootstrap into 2.2.3
This commit is contained in:
commit
5d776bcfd2
20
Makefile
20
Makefile
@ -18,8 +18,8 @@ build:
|
|||||||
@jshint js/*.js --config js/.jshintrc
|
@jshint js/*.js --config js/.jshintrc
|
||||||
@jshint js/tests/unit/*.js --config js/.jshintrc
|
@jshint js/tests/unit/*.js --config js/.jshintrc
|
||||||
@echo "Running JSHint on javascript... ${CHECK} Done"
|
@echo "Running JSHint on javascript... ${CHECK} Done"
|
||||||
@recess --compile ${BOOTSTRAP_LESS} > ${BOOTSTRAP}
|
@./node_modules/.bin/recess --compile ${BOOTSTRAP_LESS} > ${BOOTSTRAP}
|
||||||
@recess --compile ${BOOTSTRAP_RESPONSIVE_LESS} > ${BOOTSTRAP_RESPONSIVE}
|
@./node_modules/.bin/recess --compile ${BOOTSTRAP_RESPONSIVE_LESS} > ${BOOTSTRAP_RESPONSIVE}
|
||||||
@echo "Compiling LESS with Recess... ${CHECK} Done"
|
@echo "Compiling LESS with Recess... ${CHECK} Done"
|
||||||
@node docs/build
|
@node docs/build
|
||||||
@cp img/* docs/assets/img/
|
@cp img/* docs/assets/img/
|
||||||
@ -27,7 +27,7 @@ build:
|
|||||||
@cp js/tests/vendor/jquery.js docs/assets/js/
|
@cp js/tests/vendor/jquery.js docs/assets/js/
|
||||||
@echo "Compiling documentation... ${CHECK} Done"
|
@echo "Compiling documentation... ${CHECK} Done"
|
||||||
@cat js/bootstrap-transition.js js/bootstrap-alert.js js/bootstrap-button.js js/bootstrap-carousel.js js/bootstrap-collapse.js js/bootstrap-dropdown.js js/bootstrap-modal.js js/bootstrap-tooltip.js js/bootstrap-popover.js js/bootstrap-scrollspy.js js/bootstrap-tab.js js/bootstrap-typeahead.js js/bootstrap-affix.js > docs/assets/js/bootstrap.js
|
@cat js/bootstrap-transition.js js/bootstrap-alert.js js/bootstrap-button.js js/bootstrap-carousel.js js/bootstrap-collapse.js js/bootstrap-dropdown.js js/bootstrap-modal.js js/bootstrap-tooltip.js js/bootstrap-popover.js js/bootstrap-scrollspy.js js/bootstrap-tab.js js/bootstrap-typeahead.js js/bootstrap-affix.js > docs/assets/js/bootstrap.js
|
||||||
@uglifyjs docs/assets/js/bootstrap.js -nc > docs/assets/js/bootstrap.min.tmp.js
|
@./node_modules/.bin/uglifyjs -nc docs/assets/js/bootstrap.js > docs/assets/js/bootstrap.min.tmp.js
|
||||||
@echo "/**\n* Bootstrap.js v2.2.3 by @fat & @mdo\n* Copyright 2012 Twitter, Inc.\n* http://www.apache.org/licenses/LICENSE-2.0.txt\n*/" > docs/assets/js/copyright.js
|
@echo "/**\n* Bootstrap.js v2.2.3 by @fat & @mdo\n* Copyright 2012 Twitter, Inc.\n* http://www.apache.org/licenses/LICENSE-2.0.txt\n*/" > docs/assets/js/copyright.js
|
||||||
@cat docs/assets/js/copyright.js docs/assets/js/bootstrap.min.tmp.js > docs/assets/js/bootstrap.min.js
|
@cat docs/assets/js/copyright.js docs/assets/js/bootstrap.min.tmp.js > docs/assets/js/bootstrap.min.js
|
||||||
@rm docs/assets/js/copyright.js docs/assets/js/bootstrap.min.tmp.js
|
@rm docs/assets/js/copyright.js docs/assets/js/bootstrap.min.tmp.js
|
||||||
@ -43,8 +43,8 @@ build:
|
|||||||
#
|
#
|
||||||
|
|
||||||
test:
|
test:
|
||||||
jshint js/*.js --config js/.jshintrc
|
./node_modules/.bin/jshint js/*.js --config js/.jshintrc
|
||||||
jshint js/tests/unit/*.js --config js/.jshintrc
|
./node_modules/.bin/jshint js/tests/unit/*.js --config js/.jshintrc
|
||||||
node js/tests/server.js &
|
node js/tests/server.js &
|
||||||
phantomjs js/tests/phantom.js "http://localhost:3000/js/tests"
|
phantomjs js/tests/phantom.js "http://localhost:3000/js/tests"
|
||||||
kill -9 `cat js/tests/pid.txt`
|
kill -9 `cat js/tests/pid.txt`
|
||||||
@ -67,12 +67,12 @@ bootstrap:
|
|||||||
mkdir -p bootstrap/css
|
mkdir -p bootstrap/css
|
||||||
mkdir -p bootstrap/js
|
mkdir -p bootstrap/js
|
||||||
cp img/* bootstrap/img/
|
cp img/* bootstrap/img/
|
||||||
recess --compile ${BOOTSTRAP_LESS} > bootstrap/css/bootstrap.css
|
./node_modules/.bin/recess --compile ${BOOTSTRAP_LESS} > bootstrap/css/bootstrap.css
|
||||||
recess --compress ${BOOTSTRAP_LESS} > bootstrap/css/bootstrap.min.css
|
./node_modules/.bin/recess --compress ${BOOTSTRAP_LESS} > bootstrap/css/bootstrap.min.css
|
||||||
recess --compile ${BOOTSTRAP_RESPONSIVE_LESS} > bootstrap/css/bootstrap-responsive.css
|
./node_modules/.bin/recess --compile ${BOOTSTRAP_RESPONSIVE_LESS} > bootstrap/css/bootstrap-responsive.css
|
||||||
recess --compress ${BOOTSTRAP_RESPONSIVE_LESS} > bootstrap/css/bootstrap-responsive.min.css
|
./node_modules/.bin/recess --compress ${BOOTSTRAP_RESPONSIVE_LESS} > bootstrap/css/bootstrap-responsive.min.css
|
||||||
cat js/bootstrap-transition.js js/bootstrap-alert.js js/bootstrap-button.js js/bootstrap-carousel.js js/bootstrap-collapse.js js/bootstrap-dropdown.js js/bootstrap-modal.js js/bootstrap-tooltip.js js/bootstrap-popover.js js/bootstrap-scrollspy.js js/bootstrap-tab.js js/bootstrap-typeahead.js js/bootstrap-affix.js > bootstrap/js/bootstrap.js
|
cat js/bootstrap-transition.js js/bootstrap-alert.js js/bootstrap-button.js js/bootstrap-carousel.js js/bootstrap-collapse.js js/bootstrap-dropdown.js js/bootstrap-modal.js js/bootstrap-tooltip.js js/bootstrap-popover.js js/bootstrap-scrollspy.js js/bootstrap-tab.js js/bootstrap-typeahead.js js/bootstrap-affix.js > bootstrap/js/bootstrap.js
|
||||||
uglifyjs bootstrap/js/bootstrap.js -nc > bootstrap/js/bootstrap.min.tmp.js
|
./node_modules/.bin/uglifyjs -nc bootstrap/js/bootstrap.js > bootstrap/js/bootstrap.min.tmp.js
|
||||||
echo "/*!\n* Bootstrap.js by @fat & @mdo\n* Copyright 2012 Twitter, Inc.\n* http://www.apache.org/licenses/LICENSE-2.0.txt\n*/" > bootstrap/js/copyright.js
|
echo "/*!\n* Bootstrap.js by @fat & @mdo\n* Copyright 2012 Twitter, Inc.\n* http://www.apache.org/licenses/LICENSE-2.0.txt\n*/" > bootstrap/js/copyright.js
|
||||||
cat bootstrap/js/copyright.js bootstrap/js/bootstrap.min.tmp.js > bootstrap/js/bootstrap.min.js
|
cat bootstrap/js/copyright.js bootstrap/js/bootstrap.min.tmp.js > bootstrap/js/bootstrap.min.js
|
||||||
rm bootstrap/js/copyright.js bootstrap/js/bootstrap.min.tmp.js
|
rm bootstrap/js/copyright.js bootstrap/js/bootstrap.min.tmp.js
|
||||||
|
@ -14,12 +14,14 @@
|
|||||||
})
|
})
|
||||||
|
|
||||||
// side bar
|
// side bar
|
||||||
|
setTimeout(function () {
|
||||||
$('.bs-docs-sidenav').affix({
|
$('.bs-docs-sidenav').affix({
|
||||||
offset: {
|
offset: {
|
||||||
top: function () { return $window.width() <= 980 ? 290 : 210 }
|
top: function () { return $window.width() <= 980 ? 290 : 210 }
|
||||||
, bottom: 270
|
, bottom: 270
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
}, 100)
|
||||||
|
|
||||||
// make code pretty
|
// make code pretty
|
||||||
window.prettyPrint && prettyPrint()
|
window.prettyPrint && prettyPrint()
|
||||||
@ -34,7 +36,7 @@
|
|||||||
// add tipsies to grid for scaffolding
|
// add tipsies to grid for scaffolding
|
||||||
if ($('#gridSystem').length) {
|
if ($('#gridSystem').length) {
|
||||||
$('#gridSystem').tooltip({
|
$('#gridSystem').tooltip({
|
||||||
selector: '.show-grid > div'
|
selector: '.show-grid > div:not(.tooltip)'
|
||||||
, title: function () { return $(this).width() + 'px' }
|
, title: function () { return $(this).width() + 'px' }
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
25
docs/assets/js/bootstrap-carousel.js
vendored
25
docs/assets/js/bootstrap-carousel.js
vendored
@ -28,6 +28,7 @@
|
|||||||
|
|
||||||
var Carousel = function (element, options) {
|
var Carousel = function (element, options) {
|
||||||
this.$element = $(element)
|
this.$element = $(element)
|
||||||
|
this.$indicators = this.$element.find('.carousel-indicators')
|
||||||
this.options = options
|
this.options = options
|
||||||
this.options.pause == 'hover' && this.$element
|
this.options.pause == 'hover' && this.$element
|
||||||
.on('mouseenter', $.proxy(this.pause, this))
|
.on('mouseenter', $.proxy(this.pause, this))
|
||||||
@ -44,13 +45,17 @@
|
|||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
|
, getActiveIndex: function () {
|
||||||
|
this.$active = this.$element.find('.item.active')
|
||||||
|
this.$items = this.$active.parent().children()
|
||||||
|
return this.$items.index(this.$active)
|
||||||
|
}
|
||||||
|
|
||||||
, to: function (pos) {
|
, to: function (pos) {
|
||||||
var $active = this.$element.find('.item.active')
|
var activeIndex = this.getActiveIndex()
|
||||||
, children = $active.parent().children()
|
|
||||||
, activePos = children.index($active)
|
|
||||||
, that = this
|
, that = this
|
||||||
|
|
||||||
if (pos > (children.length - 1) || pos < 0) return
|
if (pos > (this.$items.length - 1) || pos < 0) return
|
||||||
|
|
||||||
if (this.sliding) {
|
if (this.sliding) {
|
||||||
return this.$element.one('slid', function () {
|
return this.$element.one('slid', function () {
|
||||||
@ -58,11 +63,11 @@
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if (activePos == pos) {
|
if (activeIndex == pos) {
|
||||||
return this.pause().cycle()
|
return this.pause().cycle()
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos]))
|
return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
|
||||||
}
|
}
|
||||||
|
|
||||||
, pause: function (e) {
|
, pause: function (e) {
|
||||||
@ -107,6 +112,14 @@
|
|||||||
|
|
||||||
if ($next.hasClass('active')) return
|
if ($next.hasClass('active')) return
|
||||||
|
|
||||||
|
if (this.$indicators.length) {
|
||||||
|
this.$indicators.find('.active').removeClass('active')
|
||||||
|
this.$element.one('slid', function () {
|
||||||
|
var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])
|
||||||
|
$nextIndicator && $nextIndicator.addClass('active')
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
if ($.support.transition && this.$element.hasClass('slide')) {
|
if ($.support.transition && this.$element.hasClass('slide')) {
|
||||||
this.$element.trigger(e)
|
this.$element.trigger(e)
|
||||||
if (e.isDefaultPrevented()) return
|
if (e.isDefaultPrevented()) return
|
||||||
|
5
docs/assets/js/bootstrap-dropdown.js
vendored
5
docs/assets/js/bootstrap-dropdown.js
vendored
@ -115,8 +115,9 @@
|
|||||||
selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
|
selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
|
||||||
}
|
}
|
||||||
|
|
||||||
$parent = $(selector)
|
$parent = selector && $(selector)
|
||||||
$parent.length || ($parent = $this.parent())
|
|
||||||
|
if (!$parent || !$parent.length) $parent = $this.parent()
|
||||||
|
|
||||||
return $parent
|
return $parent
|
||||||
}
|
}
|
||||||
|
3
docs/assets/js/bootstrap-modal.js
vendored
3
docs/assets/js/bootstrap-modal.js
vendored
@ -60,8 +60,7 @@
|
|||||||
that.$element.appendTo(document.body) //don't move modals dom position
|
that.$element.appendTo(document.body) //don't move modals dom position
|
||||||
}
|
}
|
||||||
|
|
||||||
that.$element
|
that.$element.show()
|
||||||
.show()
|
|
||||||
|
|
||||||
if (transition) {
|
if (transition) {
|
||||||
that.$element[0].offsetWidth // force reflow
|
that.$element[0].offsetWidth // force reflow
|
||||||
|
18
docs/assets/js/bootstrap-tooltip.js
vendored
18
docs/assets/js/bootstrap-tooltip.js
vendored
@ -97,7 +97,6 @@
|
|||||||
|
|
||||||
, show: function () {
|
, show: function () {
|
||||||
var $tip
|
var $tip
|
||||||
, inside
|
|
||||||
, pos
|
, pos
|
||||||
, actualWidth
|
, actualWidth
|
||||||
, actualHeight
|
, actualHeight
|
||||||
@ -116,19 +115,17 @@
|
|||||||
this.options.placement.call(this, $tip[0], this.$element[0]) :
|
this.options.placement.call(this, $tip[0], this.$element[0]) :
|
||||||
this.options.placement
|
this.options.placement
|
||||||
|
|
||||||
inside = /in/.test(placement)
|
|
||||||
|
|
||||||
$tip
|
$tip
|
||||||
.detach()
|
.detach()
|
||||||
.css({ top: 0, left: 0, display: 'block' })
|
.css({ top: 0, left: 0, display: 'block' })
|
||||||
.insertAfter(this.$element)
|
.insertAfter(this.$element)
|
||||||
|
|
||||||
pos = this.getPosition(inside)
|
pos = this.getPosition()
|
||||||
|
|
||||||
actualWidth = $tip[0].offsetWidth
|
actualWidth = $tip[0].offsetWidth
|
||||||
actualHeight = $tip[0].offsetHeight
|
actualHeight = $tip[0].offsetHeight
|
||||||
|
|
||||||
switch (inside ? placement.split(' ')[1] : placement) {
|
switch (placement) {
|
||||||
case 'bottom':
|
case 'bottom':
|
||||||
tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
|
tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
|
||||||
break
|
break
|
||||||
@ -193,11 +190,12 @@
|
|||||||
return this.getTitle()
|
return this.getTitle()
|
||||||
}
|
}
|
||||||
|
|
||||||
, getPosition: function (inside) {
|
, getPosition: function () {
|
||||||
return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), {
|
var el = this.$element[0]
|
||||||
width: this.$element[0].offsetWidth
|
return $.extend({}, el.getBoundingClientRect ? el.getBoundingClientRect() : {
|
||||||
, height: this.$element[0].offsetHeight
|
width: el.offsetWidth
|
||||||
})
|
, height: el.offsetHeight
|
||||||
|
}, this.$element.offset())
|
||||||
}
|
}
|
||||||
|
|
||||||
, getTitle: function () {
|
, getTitle: function () {
|
||||||
|
16
docs/assets/js/bootstrap-typeahead.js
vendored
16
docs/assets/js/bootstrap-typeahead.js
vendored
@ -172,6 +172,7 @@
|
|||||||
|
|
||||||
, listen: function () {
|
, listen: function () {
|
||||||
this.$element
|
this.$element
|
||||||
|
.on('focus', $.proxy(this.focus, this))
|
||||||
.on('blur', $.proxy(this.blur, this))
|
.on('blur', $.proxy(this.blur, this))
|
||||||
.on('keypress', $.proxy(this.keypress, this))
|
.on('keypress', $.proxy(this.keypress, this))
|
||||||
.on('keyup', $.proxy(this.keyup, this))
|
.on('keyup', $.proxy(this.keyup, this))
|
||||||
@ -183,6 +184,7 @@
|
|||||||
this.$menu
|
this.$menu
|
||||||
.on('click', $.proxy(this.click, this))
|
.on('click', $.proxy(this.click, this))
|
||||||
.on('mouseenter', 'li', $.proxy(this.mouseenter, this))
|
.on('mouseenter', 'li', $.proxy(this.mouseenter, this))
|
||||||
|
.on('mouseleave', 'li', $.proxy(this.mouseleave, this))
|
||||||
}
|
}
|
||||||
|
|
||||||
, eventSupported: function(eventName) {
|
, eventSupported: function(eventName) {
|
||||||
@ -256,9 +258,13 @@
|
|||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
, focus: function (e) {
|
||||||
|
this.focused = true
|
||||||
|
}
|
||||||
|
|
||||||
, blur: function (e) {
|
, blur: function (e) {
|
||||||
var that = this
|
this.focused = false
|
||||||
setTimeout(function () { that.hide() }, 150)
|
if (!this.mousedover && this.shown) this.hide()
|
||||||
}
|
}
|
||||||
|
|
||||||
, click: function (e) {
|
, click: function (e) {
|
||||||
@ -268,10 +274,16 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
, mouseenter: function (e) {
|
, mouseenter: function (e) {
|
||||||
|
this.mousedover = true
|
||||||
this.$menu.find('.active').removeClass('active')
|
this.$menu.find('.active').removeClass('active')
|
||||||
$(e.currentTarget).addClass('active')
|
$(e.currentTarget).addClass('active')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
, mouseleave: function (e) {
|
||||||
|
this.mousedover = false
|
||||||
|
if (!this.focused && this.shown) this.hide()
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
67
docs/assets/js/bootstrap.js
vendored
67
docs/assets/js/bootstrap.js
vendored
@ -289,6 +289,7 @@
|
|||||||
|
|
||||||
var Carousel = function (element, options) {
|
var Carousel = function (element, options) {
|
||||||
this.$element = $(element)
|
this.$element = $(element)
|
||||||
|
this.$indicators = this.$element.find('.carousel-indicators')
|
||||||
this.options = options
|
this.options = options
|
||||||
this.options.pause == 'hover' && this.$element
|
this.options.pause == 'hover' && this.$element
|
||||||
.on('mouseenter', $.proxy(this.pause, this))
|
.on('mouseenter', $.proxy(this.pause, this))
|
||||||
@ -305,13 +306,17 @@
|
|||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
|
, getActiveIndex: function () {
|
||||||
|
this.$active = this.$element.find('.item.active')
|
||||||
|
this.$items = this.$active.parent().children()
|
||||||
|
return this.$items.index(this.$active)
|
||||||
|
}
|
||||||
|
|
||||||
, to: function (pos) {
|
, to: function (pos) {
|
||||||
var $active = this.$element.find('.item.active')
|
var activeIndex = this.getActiveIndex()
|
||||||
, children = $active.parent().children()
|
|
||||||
, activePos = children.index($active)
|
|
||||||
, that = this
|
, that = this
|
||||||
|
|
||||||
if (pos > (children.length - 1) || pos < 0) return
|
if (pos > (this.$items.length - 1) || pos < 0) return
|
||||||
|
|
||||||
if (this.sliding) {
|
if (this.sliding) {
|
||||||
return this.$element.one('slid', function () {
|
return this.$element.one('slid', function () {
|
||||||
@ -319,11 +324,11 @@
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if (activePos == pos) {
|
if (activeIndex == pos) {
|
||||||
return this.pause().cycle()
|
return this.pause().cycle()
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos]))
|
return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
|
||||||
}
|
}
|
||||||
|
|
||||||
, pause: function (e) {
|
, pause: function (e) {
|
||||||
@ -368,6 +373,14 @@
|
|||||||
|
|
||||||
if ($next.hasClass('active')) return
|
if ($next.hasClass('active')) return
|
||||||
|
|
||||||
|
if (this.$indicators.length) {
|
||||||
|
this.$indicators.find('.active').removeClass('active')
|
||||||
|
this.$element.one('slid', function () {
|
||||||
|
var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])
|
||||||
|
$nextIndicator && $nextIndicator.addClass('active')
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
if ($.support.transition && this.$element.hasClass('slide')) {
|
if ($.support.transition && this.$element.hasClass('slide')) {
|
||||||
this.$element.trigger(e)
|
this.$element.trigger(e)
|
||||||
if (e.isDefaultPrevented()) return
|
if (e.isDefaultPrevented()) return
|
||||||
@ -726,8 +739,9 @@
|
|||||||
selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
|
selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
|
||||||
}
|
}
|
||||||
|
|
||||||
$parent = $(selector)
|
$parent = selector && $(selector)
|
||||||
$parent.length || ($parent = $this.parent())
|
|
||||||
|
if (!$parent || !$parent.length) $parent = $this.parent()
|
||||||
|
|
||||||
return $parent
|
return $parent
|
||||||
}
|
}
|
||||||
@ -831,8 +845,7 @@
|
|||||||
that.$element.appendTo(document.body) //don't move modals dom position
|
that.$element.appendTo(document.body) //don't move modals dom position
|
||||||
}
|
}
|
||||||
|
|
||||||
that.$element
|
that.$element.show()
|
||||||
.show()
|
|
||||||
|
|
||||||
if (transition) {
|
if (transition) {
|
||||||
that.$element[0].offsetWidth // force reflow
|
that.$element[0].offsetWidth // force reflow
|
||||||
@ -1113,7 +1126,6 @@
|
|||||||
|
|
||||||
, show: function () {
|
, show: function () {
|
||||||
var $tip
|
var $tip
|
||||||
, inside
|
|
||||||
, pos
|
, pos
|
||||||
, actualWidth
|
, actualWidth
|
||||||
, actualHeight
|
, actualHeight
|
||||||
@ -1132,19 +1144,17 @@
|
|||||||
this.options.placement.call(this, $tip[0], this.$element[0]) :
|
this.options.placement.call(this, $tip[0], this.$element[0]) :
|
||||||
this.options.placement
|
this.options.placement
|
||||||
|
|
||||||
inside = /in/.test(placement)
|
|
||||||
|
|
||||||
$tip
|
$tip
|
||||||
.detach()
|
.detach()
|
||||||
.css({ top: 0, left: 0, display: 'block' })
|
.css({ top: 0, left: 0, display: 'block' })
|
||||||
.insertAfter(this.$element)
|
.insertAfter(this.$element)
|
||||||
|
|
||||||
pos = this.getPosition(inside)
|
pos = this.getPosition()
|
||||||
|
|
||||||
actualWidth = $tip[0].offsetWidth
|
actualWidth = $tip[0].offsetWidth
|
||||||
actualHeight = $tip[0].offsetHeight
|
actualHeight = $tip[0].offsetHeight
|
||||||
|
|
||||||
switch (inside ? placement.split(' ')[1] : placement) {
|
switch (placement) {
|
||||||
case 'bottom':
|
case 'bottom':
|
||||||
tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
|
tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
|
||||||
break
|
break
|
||||||
@ -1209,11 +1219,12 @@
|
|||||||
return this.getTitle()
|
return this.getTitle()
|
||||||
}
|
}
|
||||||
|
|
||||||
, getPosition: function (inside) {
|
, getPosition: function () {
|
||||||
return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), {
|
var el = this.$element[0]
|
||||||
width: this.$element[0].offsetWidth
|
return $.extend({}, el.getBoundingClientRect ? el.getBoundingClientRect() : {
|
||||||
, height: this.$element[0].offsetHeight
|
width: el.offsetWidth
|
||||||
})
|
, height: el.offsetHeight
|
||||||
|
}, this.$element.offset())
|
||||||
}
|
}
|
||||||
|
|
||||||
, getTitle: function () {
|
, getTitle: function () {
|
||||||
@ -1891,6 +1902,7 @@
|
|||||||
|
|
||||||
, listen: function () {
|
, listen: function () {
|
||||||
this.$element
|
this.$element
|
||||||
|
.on('focus', $.proxy(this.focus, this))
|
||||||
.on('blur', $.proxy(this.blur, this))
|
.on('blur', $.proxy(this.blur, this))
|
||||||
.on('keypress', $.proxy(this.keypress, this))
|
.on('keypress', $.proxy(this.keypress, this))
|
||||||
.on('keyup', $.proxy(this.keyup, this))
|
.on('keyup', $.proxy(this.keyup, this))
|
||||||
@ -1902,6 +1914,7 @@
|
|||||||
this.$menu
|
this.$menu
|
||||||
.on('click', $.proxy(this.click, this))
|
.on('click', $.proxy(this.click, this))
|
||||||
.on('mouseenter', 'li', $.proxy(this.mouseenter, this))
|
.on('mouseenter', 'li', $.proxy(this.mouseenter, this))
|
||||||
|
.on('mouseleave', 'li', $.proxy(this.mouseleave, this))
|
||||||
}
|
}
|
||||||
|
|
||||||
, eventSupported: function(eventName) {
|
, eventSupported: function(eventName) {
|
||||||
@ -1975,9 +1988,13 @@
|
|||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
, focus: function (e) {
|
||||||
|
this.focused = true
|
||||||
|
}
|
||||||
|
|
||||||
, blur: function (e) {
|
, blur: function (e) {
|
||||||
var that = this
|
this.focused = false
|
||||||
setTimeout(function () { that.hide() }, 150)
|
if (!this.mousedover && this.shown) this.hide()
|
||||||
}
|
}
|
||||||
|
|
||||||
, click: function (e) {
|
, click: function (e) {
|
||||||
@ -1987,10 +2004,16 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
, mouseenter: function (e) {
|
, mouseenter: function (e) {
|
||||||
|
this.mousedover = true
|
||||||
this.$menu.find('.active').removeClass('active')
|
this.$menu.find('.active').removeClass('active')
|
||||||
$(e.currentTarget).addClass('active')
|
$(e.currentTarget).addClass('active')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
, mouseleave: function (e) {
|
||||||
|
this.mousedover = false
|
||||||
|
if (!this.focused && this.shown) this.hide()
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
2
docs/assets/js/bootstrap.min.js
vendored
2
docs/assets/js/bootstrap.min.js
vendored
File diff suppressed because one or more lines are too long
@ -1422,6 +1422,11 @@ $('#myCollapsible').on('hidden', function () {
|
|||||||
<p>The slideshow below shows a generic plugin and component for cycling through elements like a carousel.</p>
|
<p>The slideshow below shows a generic plugin and component for cycling through elements like a carousel.</p>
|
||||||
<div class="bs-docs-example">
|
<div class="bs-docs-example">
|
||||||
<div id="myCarousel" class="carousel slide">
|
<div id="myCarousel" class="carousel slide">
|
||||||
|
<ol class="carousel-indicators">
|
||||||
|
<li class="active"></li>
|
||||||
|
<li></li>
|
||||||
|
<li></li>
|
||||||
|
</ol>
|
||||||
<div class="carousel-inner">
|
<div class="carousel-inner">
|
||||||
<div class="item active">
|
<div class="item active">
|
||||||
<img src="assets/img/bootstrap-mdo-sfmoma-01.jpg" alt="">
|
<img src="assets/img/bootstrap-mdo-sfmoma-01.jpg" alt="">
|
||||||
@ -1671,14 +1676,6 @@ $('.carousel').carousel({
|
|||||||
<p>Call the affix plugin via JavaScript:</p>
|
<p>Call the affix plugin via JavaScript:</p>
|
||||||
<pre class="prettyprint linenums">$('#navbar').affix()</pre>
|
<pre class="prettyprint linenums">$('#navbar').affix()</pre>
|
||||||
|
|
||||||
<h3>Methods</h3>
|
|
||||||
<h4>.affix('refresh')</h4>
|
|
||||||
<p>When using affix in conjunction with adding or removing of elements from the DOM, you'll want to call the refresh method:</p>
|
|
||||||
<pre class="prettyprint linenums">
|
|
||||||
$('[data-spy="affix"]').each(function () {
|
|
||||||
$(this).affix('refresh')
|
|
||||||
});
|
|
||||||
</pre>
|
|
||||||
<h3>Options</h3>
|
<h3>Options</h3>
|
||||||
<p>Options can be passed via data attributes or JavaScript. For data attributes, append the option name to <code>data-</code>, as in <code>data-offset-top="200"</code>.</p>
|
<p>Options can be passed via data attributes or JavaScript. For data attributes, append the option name to <code>data-</code>, as in <code>data-offset-top="200"</code>.</p>
|
||||||
<table class="table table-bordered table-striped">
|
<table class="table table-bordered table-striped">
|
||||||
|
13
docs/templates/pages/javascript.mustache
vendored
13
docs/templates/pages/javascript.mustache
vendored
@ -1352,6 +1352,11 @@ $('#myCollapsible').on('hidden', function () {
|
|||||||
<p>{{_i}}The slideshow below shows a generic plugin and component for cycling through elements like a carousel.{{/i}}</p>
|
<p>{{_i}}The slideshow below shows a generic plugin and component for cycling through elements like a carousel.{{/i}}</p>
|
||||||
<div class="bs-docs-example">
|
<div class="bs-docs-example">
|
||||||
<div id="myCarousel" class="carousel slide">
|
<div id="myCarousel" class="carousel slide">
|
||||||
|
<ol class="carousel-indicators">
|
||||||
|
<li class="active"></li>
|
||||||
|
<li></li>
|
||||||
|
<li></li>
|
||||||
|
</ol>
|
||||||
<div class="carousel-inner">
|
<div class="carousel-inner">
|
||||||
<div class="item active">
|
<div class="item active">
|
||||||
<img src="assets/img/bootstrap-mdo-sfmoma-01.jpg" alt="">
|
<img src="assets/img/bootstrap-mdo-sfmoma-01.jpg" alt="">
|
||||||
@ -1601,14 +1606,6 @@ $('.carousel').carousel({
|
|||||||
<p>{{_i}}Call the affix plugin via JavaScript:{{/i}}</p>
|
<p>{{_i}}Call the affix plugin via JavaScript:{{/i}}</p>
|
||||||
<pre class="prettyprint linenums">$('#navbar').affix()</pre>
|
<pre class="prettyprint linenums">$('#navbar').affix()</pre>
|
||||||
|
|
||||||
<h3>{{_i}}Methods{{/i}}</h3>
|
|
||||||
<h4>.affix('refresh')</h4>
|
|
||||||
<p>{{_i}}When using affix in conjunction with adding or removing of elements from the DOM, you'll want to call the refresh method:{{/i}}</p>
|
|
||||||
<pre class="prettyprint linenums">
|
|
||||||
$('[data-spy="affix"]').each(function () {
|
|
||||||
$(this).affix('refresh')
|
|
||||||
});
|
|
||||||
</pre>
|
|
||||||
<h3>{{_i}}Options{{/i}}</h3>
|
<h3>{{_i}}Options{{/i}}</h3>
|
||||||
<p>{{_i}}Options can be passed via data attributes or JavaScript. For data attributes, append the option name to <code>data-</code>, as in <code>data-offset-top="200"</code>.{{/i}}</p>
|
<p>{{_i}}Options can be passed via data attributes or JavaScript. For data attributes, append the option name to <code>data-</code>, as in <code>data-offset-top="200"</code>.{{/i}}</p>
|
||||||
<table class="table table-bordered table-striped">
|
<table class="table table-bordered table-striped">
|
||||||
|
25
js/bootstrap-carousel.js
vendored
25
js/bootstrap-carousel.js
vendored
@ -28,6 +28,7 @@
|
|||||||
|
|
||||||
var Carousel = function (element, options) {
|
var Carousel = function (element, options) {
|
||||||
this.$element = $(element)
|
this.$element = $(element)
|
||||||
|
this.$indicators = this.$element.find('.carousel-indicators')
|
||||||
this.options = options
|
this.options = options
|
||||||
this.options.pause == 'hover' && this.$element
|
this.options.pause == 'hover' && this.$element
|
||||||
.on('mouseenter', $.proxy(this.pause, this))
|
.on('mouseenter', $.proxy(this.pause, this))
|
||||||
@ -44,13 +45,17 @@
|
|||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
|
, getActiveIndex: function () {
|
||||||
|
this.$active = this.$element.find('.item.active')
|
||||||
|
this.$items = this.$active.parent().children()
|
||||||
|
return this.$items.index(this.$active)
|
||||||
|
}
|
||||||
|
|
||||||
, to: function (pos) {
|
, to: function (pos) {
|
||||||
var $active = this.$element.find('.item.active')
|
var activeIndex = this.getActiveIndex()
|
||||||
, children = $active.parent().children()
|
|
||||||
, activePos = children.index($active)
|
|
||||||
, that = this
|
, that = this
|
||||||
|
|
||||||
if (pos > (children.length - 1) || pos < 0) return
|
if (pos > (this.$items.length - 1) || pos < 0) return
|
||||||
|
|
||||||
if (this.sliding) {
|
if (this.sliding) {
|
||||||
return this.$element.one('slid', function () {
|
return this.$element.one('slid', function () {
|
||||||
@ -58,11 +63,11 @@
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if (activePos == pos) {
|
if (activeIndex == pos) {
|
||||||
return this.pause().cycle()
|
return this.pause().cycle()
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos]))
|
return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
|
||||||
}
|
}
|
||||||
|
|
||||||
, pause: function (e) {
|
, pause: function (e) {
|
||||||
@ -107,6 +112,14 @@
|
|||||||
|
|
||||||
if ($next.hasClass('active')) return
|
if ($next.hasClass('active')) return
|
||||||
|
|
||||||
|
if (this.$indicators.length) {
|
||||||
|
this.$indicators.find('.active').removeClass('active')
|
||||||
|
this.$element.one('slid', function () {
|
||||||
|
var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])
|
||||||
|
$nextIndicator && $nextIndicator.addClass('active')
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
if ($.support.transition && this.$element.hasClass('slide')) {
|
if ($.support.transition && this.$element.hasClass('slide')) {
|
||||||
this.$element.trigger(e)
|
this.$element.trigger(e)
|
||||||
if (e.isDefaultPrevented()) return
|
if (e.isDefaultPrevented()) return
|
||||||
|
5
js/bootstrap-dropdown.js
vendored
5
js/bootstrap-dropdown.js
vendored
@ -115,8 +115,9 @@
|
|||||||
selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
|
selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
|
||||||
}
|
}
|
||||||
|
|
||||||
$parent = $(selector)
|
$parent = selector && $(selector)
|
||||||
$parent.length || ($parent = $this.parent())
|
|
||||||
|
if (!$parent || !$parent.length) $parent = $this.parent()
|
||||||
|
|
||||||
return $parent
|
return $parent
|
||||||
}
|
}
|
||||||
|
3
js/bootstrap-modal.js
vendored
3
js/bootstrap-modal.js
vendored
@ -60,8 +60,7 @@
|
|||||||
that.$element.appendTo(document.body) //don't move modals dom position
|
that.$element.appendTo(document.body) //don't move modals dom position
|
||||||
}
|
}
|
||||||
|
|
||||||
that.$element
|
that.$element.show()
|
||||||
.show()
|
|
||||||
|
|
||||||
if (transition) {
|
if (transition) {
|
||||||
that.$element[0].offsetWidth // force reflow
|
that.$element[0].offsetWidth // force reflow
|
||||||
|
18
js/bootstrap-tooltip.js
vendored
18
js/bootstrap-tooltip.js
vendored
@ -97,7 +97,6 @@
|
|||||||
|
|
||||||
, show: function () {
|
, show: function () {
|
||||||
var $tip
|
var $tip
|
||||||
, inside
|
|
||||||
, pos
|
, pos
|
||||||
, actualWidth
|
, actualWidth
|
||||||
, actualHeight
|
, actualHeight
|
||||||
@ -116,19 +115,17 @@
|
|||||||
this.options.placement.call(this, $tip[0], this.$element[0]) :
|
this.options.placement.call(this, $tip[0], this.$element[0]) :
|
||||||
this.options.placement
|
this.options.placement
|
||||||
|
|
||||||
inside = /in/.test(placement)
|
|
||||||
|
|
||||||
$tip
|
$tip
|
||||||
.detach()
|
.detach()
|
||||||
.css({ top: 0, left: 0, display: 'block' })
|
.css({ top: 0, left: 0, display: 'block' })
|
||||||
.insertAfter(this.$element)
|
.insertAfter(this.$element)
|
||||||
|
|
||||||
pos = this.getPosition(inside)
|
pos = this.getPosition()
|
||||||
|
|
||||||
actualWidth = $tip[0].offsetWidth
|
actualWidth = $tip[0].offsetWidth
|
||||||
actualHeight = $tip[0].offsetHeight
|
actualHeight = $tip[0].offsetHeight
|
||||||
|
|
||||||
switch (inside ? placement.split(' ')[1] : placement) {
|
switch (placement) {
|
||||||
case 'bottom':
|
case 'bottom':
|
||||||
tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
|
tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
|
||||||
break
|
break
|
||||||
@ -193,11 +190,12 @@
|
|||||||
return this.getTitle()
|
return this.getTitle()
|
||||||
}
|
}
|
||||||
|
|
||||||
, getPosition: function (inside) {
|
, getPosition: function () {
|
||||||
return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), {
|
var el = this.$element[0]
|
||||||
width: this.$element[0].offsetWidth
|
return $.extend({}, el.getBoundingClientRect ? el.getBoundingClientRect() : {
|
||||||
, height: this.$element[0].offsetHeight
|
width: el.offsetWidth
|
||||||
})
|
, height: el.offsetHeight
|
||||||
|
}, this.$element.offset())
|
||||||
}
|
}
|
||||||
|
|
||||||
, getTitle: function () {
|
, getTitle: function () {
|
||||||
|
16
js/bootstrap-typeahead.js
vendored
16
js/bootstrap-typeahead.js
vendored
@ -172,6 +172,7 @@
|
|||||||
|
|
||||||
, listen: function () {
|
, listen: function () {
|
||||||
this.$element
|
this.$element
|
||||||
|
.on('focus', $.proxy(this.focus, this))
|
||||||
.on('blur', $.proxy(this.blur, this))
|
.on('blur', $.proxy(this.blur, this))
|
||||||
.on('keypress', $.proxy(this.keypress, this))
|
.on('keypress', $.proxy(this.keypress, this))
|
||||||
.on('keyup', $.proxy(this.keyup, this))
|
.on('keyup', $.proxy(this.keyup, this))
|
||||||
@ -183,6 +184,7 @@
|
|||||||
this.$menu
|
this.$menu
|
||||||
.on('click', $.proxy(this.click, this))
|
.on('click', $.proxy(this.click, this))
|
||||||
.on('mouseenter', 'li', $.proxy(this.mouseenter, this))
|
.on('mouseenter', 'li', $.proxy(this.mouseenter, this))
|
||||||
|
.on('mouseleave', 'li', $.proxy(this.mouseleave, this))
|
||||||
}
|
}
|
||||||
|
|
||||||
, eventSupported: function(eventName) {
|
, eventSupported: function(eventName) {
|
||||||
@ -256,9 +258,13 @@
|
|||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
, focus: function (e) {
|
||||||
|
this.focused = true
|
||||||
|
}
|
||||||
|
|
||||||
, blur: function (e) {
|
, blur: function (e) {
|
||||||
var that = this
|
this.focused = false
|
||||||
setTimeout(function () { that.hide() }, 150)
|
if (!this.mousedover && this.shown) this.hide()
|
||||||
}
|
}
|
||||||
|
|
||||||
, click: function (e) {
|
, click: function (e) {
|
||||||
@ -268,10 +274,16 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
, mouseenter: function (e) {
|
, mouseenter: function (e) {
|
||||||
|
this.mousedover = true
|
||||||
this.$menu.find('.active').removeClass('active')
|
this.$menu.find('.active').removeClass('active')
|
||||||
$(e.currentTarget).addClass('active')
|
$(e.currentTarget).addClass('active')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
, mouseleave: function (e) {
|
||||||
|
this.mousedover = false
|
||||||
|
if (!this.focused && this.shown) this.hide()
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
, "devDependencies": {
|
, "devDependencies": {
|
||||||
"uglify-js": "1.2.6"
|
"uglify-js": "1.3.4"
|
||||||
, "jshint": "0.6.1"
|
, "jshint": "0.6.1"
|
||||||
, "recess": "1.0.3"
|
, "recess": "1.0.3"
|
||||||
, "connect": "2.1.3"
|
, "connect": "2.1.3"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user