aboutsummaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
authorMark Otto <[email protected]>2013-12-31 13:53:33 -0800
committerMark Otto <[email protected]>2013-12-31 13:53:33 -0800
commitb253cb2c1e34a41940c4933fb95c46da833fc5f9 (patch)
treee5a40b963eba273c42e4aad21fb3858a657002dd /js
parent9e1153d0498a9e9612c1db85922642fe2aa38c2a (diff)
parent8812856de1ce17bb2f482c75370fb2e3db7ac6de (diff)
downloadbootstrap-b253cb2c1e34a41940c4933fb95c46da833fc5f9.tar.xz
bootstrap-b253cb2c1e34a41940c4933fb95c46da833fc5f9.zip
Merge branch 'master' into docs_derp
Conflicts: _config.yml docs/_includes/footer.html docs/_includes/nav-main.html docs/_includes/old-bs-docs.html docs/_layouts/default.html docs/_layouts/home.html docs/getting-started.html docs/index.html
Diffstat (limited to 'js')
-rw-r--r--js/carousel.js2
-rw-r--r--js/dropdown.js19
-rw-r--r--js/modal.js14
-rw-r--r--js/popover.js4
-rw-r--r--js/scrollspy.js5
5 files changed, 30 insertions, 14 deletions
diff --git a/js/carousel.js b/js/carousel.js
index fbd055116..a9a2eb2d1 100644
--- a/js/carousel.js
+++ b/js/carousel.js
@@ -100,7 +100,7 @@
$next = this.$element.find('.item')[fallback]()
}
- if ($next.hasClass('active')) return
+ if ($next.hasClass('active')) return this.sliding = false
var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction })
this.$element.trigger(e)
diff --git a/js/dropdown.js b/js/dropdown.js
index 48752fda5..1e25403fc 100644
--- a/js/dropdown.js
+++ b/js/dropdown.js
@@ -34,13 +34,14 @@
$('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus)
}
- $parent.trigger(e = $.Event('show.bs.dropdown'))
+ var relatedTarget = { relatedTarget: this }
+ $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
if (e.isDefaultPrevented()) return
$parent
.toggleClass('open')
- .trigger('shown.bs.dropdown')
+ .trigger('shown.bs.dropdown', relatedTarget)
$this.focus()
}
@@ -66,7 +67,8 @@
return $this.click()
}
- var $items = $('[role=menu] li:not(.divider):visible a', $parent)
+ var desc = ' li:not(.divider):visible a'
+ var $items = $parent.find('[role=menu]' + desc + ', [role=listbox]' + desc)
if (!$items.length) return
@@ -79,14 +81,15 @@
$items.eq(index).focus()
}
- function clearMenus() {
+ function clearMenus(e) {
$(backdrop).remove()
- $(toggle).each(function (e) {
+ $(toggle).each(function () {
var $parent = getParent($(this))
+ var relatedTarget = { relatedTarget: this }
if (!$parent.hasClass('open')) return
- $parent.trigger(e = $.Event('hide.bs.dropdown'))
+ $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
if (e.isDefaultPrevented()) return
- $parent.removeClass('open').trigger('hidden.bs.dropdown')
+ $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)
})
}
@@ -138,6 +141,6 @@
.on('click.bs.dropdown.data-api', clearMenus)
.on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
.on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
- .on('keydown.bs.dropdown.data-api', toggle + ', [role=menu]', Dropdown.prototype.keydown)
+ .on('keydown.bs.dropdown.data-api', toggle + ', [role=menu], [role=listbox]', Dropdown.prototype.keydown)
}(jQuery);
diff --git a/js/modal.js b/js/modal.js
index 5fd53b849..856ea7cd8 100644
--- a/js/modal.js
+++ b/js/modal.js
@@ -18,9 +18,13 @@
this.$backdrop =
this.isShown = null
- if (this.options.remote) this.$element.find('.modal-content').load(this.options.remote, $.proxy(function () {
- this.$element.trigger('loaded.bs.modal')
- }, this))
+ if (this.options.remote) {
+ this.$element
+ .find('.modal-content')
+ .load(this.options.remote, $.proxy(function () {
+ this.$element.trigger('loaded.bs.modal')
+ }, this))
+ }
}
Modal.DEFAULTS = {
@@ -54,7 +58,9 @@
that.$element.appendTo(document.body) // don't move modals dom position
}
- that.$element.show()
+ that.$element
+ .show()
+ .scrollTop(0)
if (transition) {
that.$element[0].offsetWidth // force reflow
diff --git a/js/popover.js b/js/popover.js
index 1e8104c4f..3fd29802d 100644
--- a/js/popover.js
+++ b/js/popover.js
@@ -43,7 +43,9 @@
var content = this.getContent()
$tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
- $tip.find('.popover-content')[this.options.html ? 'html' : 'text'](content)
+ $tip.find('.popover-content')[ // we use append for html objects to maintain js events
+ this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'
+ ](content)
$tip.removeClass('fade top bottom left right in')
diff --git a/js/scrollspy.js b/js/scrollspy.js
index 571dafbde..fecd8a446 100644
--- a/js/scrollspy.js
+++ b/js/scrollspy.js
@@ -51,6 +51,7 @@
return ($href
&& $href.length
+ && $href.is(':visible')
&& [[ $href[offsetMethod]().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]]) || null
})
.sort(function (a, b) { return a[0] - b[0] })
@@ -73,6 +74,10 @@
return activeTarget != (i = targets.last()[0]) && this.activate(i)
}
+ if (activeTarget && scrollTop <= offsets[0]) {
+ return activeTarget != (i = targets[0]) && this.activate(i)
+ }
+
for (i = offsets.length; i--;) {
activeTarget != targets[i]
&& scrollTop >= offsets[i]