aboutsummaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
authorMark Otto <[email protected]>2013-07-17 20:44:27 -0700
committerMark Otto <[email protected]>2013-07-17 20:44:27 -0700
commitf0d071832284d968f2cb72b0bb576f8112a349de (patch)
tree9766c8da2b7c6890cdc794a2d93d4ca81c191047 /js
parentc5fb401a626c3e0d99a764cb7961e1bd3e619e8f (diff)
parentbfebf0e490c795601220f74b7089adb4f47acda7 (diff)
downloadbootstrap-f0d071832284d968f2cb72b0bb576f8112a349de.tar.xz
bootstrap-f0d071832284d968f2cb72b0bb576f8112a349de.zip
Merge branch '3.0.0-wip' into bs3_remove_examples
Conflicts: docs/_includes/nav-getting-started.html docs/examples/navbar-fixed-top.html docs/examples/navbar-static-top.html docs/examples/navbar.html docs/getting-started.html
Diffstat (limited to 'js')
-rw-r--r--js/collapse.js26
-rw-r--r--js/popover.js2
-rw-r--r--js/tests/unit/collapse.js35
3 files changed, 54 insertions, 9 deletions
diff --git a/js/collapse.js b/js/collapse.js
index f8b65b393..6b18e2577 100644
--- a/js/collapse.js
+++ b/js/collapse.js
@@ -44,6 +44,10 @@
Collapse.prototype.show = function () {
if (this.transitioning || this.$element.hasClass('in')) return
+ var startEvent = $.Event('show.bs.collapse')
+ this.$element.trigger(startEvent)
+ if (startEvent.isDefaultPrevented()) return
+
var dimension = this.dimension()
var scroll = $.camelCase(['scroll', dimension].join('-'))
var actives = this.$parent && this.$parent.find('> .accordion-group > .in')
@@ -56,16 +60,21 @@
}
this.$element[dimension](0)
- this.transition('addClass', $.Event('show.bs.collapse'), 'shown.bs.collapse')
+ this.transition('addClass', 'shown.bs.collapse')
if ($.support.transition) this.$element[dimension](this.$element[0][scroll])
}
Collapse.prototype.hide = function () {
if (this.transitioning || !this.$element.hasClass('in')) return
+
+ var startEvent = $.Event('hide.bs.collapse')
+ this.$element.trigger(startEvent)
+ if (startEvent.isDefaultPrevented()) return
+
var dimension = this.dimension()
this.reset(this.$element[dimension]())
- this.transition('removeClass', $.Event('hide.bs.collapse'), 'hidden')
+ this.transition('removeClass', 'shown.bs.hidden')
this.$element[dimension](0)
}
@@ -77,23 +86,19 @@
[dimension](size || 'auto')
[0].offsetWidth
- this.$element[size !== null ? 'addClass' : 'removeClass']('collapse')
+ this.$element[size != null ? 'addClass' : 'removeClass']('collapse')
return this
}
- Collapse.prototype.transition = function (method, startEvent, completeEvent) {
+ Collapse.prototype.transition = function (method, completeEvent) {
var that = this
var complete = function () {
- if (startEvent.type == 'show') that.reset()
+ if (completeEvent == 'shown.bs.collapse') that.reset()
that.transitioning = 0
that.$element.trigger(completeEvent)
}
- this.$element.trigger(startEvent)
-
- if (startEvent.isDefaultPrevented()) return
-
this.transitioning = 1
this.$element[method]('in')
@@ -145,7 +150,10 @@
|| e.preventDefault()
|| (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
var option = $(target).data('collapse') ? 'toggle' : $this.data()
+ var parent = $this.attr('data-parent')
+ var $parent = parent && $(parent)
+ if ($parent) $parent.find('[data-toggle=collapse][data-parent=' + parent + ']').not($this).addClass('collapsed')
$this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
$(target).collapse(option)
})
diff --git a/js/popover.js b/js/popover.js
index 33edadf7f..e58e24908 100644
--- a/js/popover.js
+++ b/js/popover.js
@@ -55,6 +55,8 @@
$tip.find('.popover-content')[this.options.html ? 'html' : 'text'](content)
$tip.removeClass('fade top bottom left right in')
+
+ $tip.find('.popover-title:empty').hide()
}
Popover.prototype.hasContent = function () {
diff --git a/js/tests/unit/collapse.js b/js/tests/unit/collapse.js
index dd2cee27d..73799c75d 100644
--- a/js/tests/unit/collapse.js
+++ b/js/tests/unit/collapse.js
@@ -91,4 +91,39 @@ $(function () {
target.click()
})
+ test("should remove active class from inactive accordion targets", function () {
+ $.support.transition = false
+ stop()
+
+ var accordion = $('<div id="accordion"><div class="accordion-group"></div><div class="accordion-group"></div><div class="accordion-group"></div></div>')
+ .appendTo($('#qunit-fixture'))
+
+ var target1 = $('<a data-toggle="collapse" href="#body1" data-parent="#accordion"></a>')
+ .appendTo(accordion.find('.accordion-group').eq(0))
+
+ var collapsible1 = $('<div id="body1" class="in"></div>')
+ .appendTo(accordion.find('.accordion-group').eq(0))
+
+ var target2 = $('<a class="collapsed" data-toggle="collapse" href="#body2" data-parent="#accordion"></a>')
+ .appendTo(accordion.find('.accordion-group').eq(1))
+
+ var collapsible2 = $('<div id="body2"></div>')
+ .appendTo(accordion.find('.accordion-group').eq(1))
+
+ var target3 = $('<a class="collapsed" data-toggle="collapse" href="#body3" data-parent="#accordion"></a>')
+ .appendTo(accordion.find('.accordion-group').eq(2))
+
+ var collapsible3 = $('<div id="body3"></div>')
+ .appendTo(accordion.find('.accordion-group').eq(2))
+ .on('show.bs.collapse', function () {
+ ok(target1.hasClass('collapsed'))
+ ok(target2.hasClass('collapsed'))
+ ok(!target3.hasClass('collapsed'))
+
+ start()
+ })
+
+ target3.click()
+ })
+
})