diff options
| author | Mark Otto <[email protected]> | 2013-07-17 20:44:27 -0700 |
|---|---|---|
| committer | Mark Otto <[email protected]> | 2013-07-17 20:44:27 -0700 |
| commit | f0d071832284d968f2cb72b0bb576f8112a349de (patch) | |
| tree | 9766c8da2b7c6890cdc794a2d93d4ca81c191047 /js | |
| parent | c5fb401a626c3e0d99a764cb7961e1bd3e619e8f (diff) | |
| parent | bfebf0e490c795601220f74b7089adb4f47acda7 (diff) | |
| download | bootstrap-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.js | 26 | ||||
| -rw-r--r-- | js/popover.js | 2 | ||||
| -rw-r--r-- | js/tests/unit/collapse.js | 35 |
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() + }) + }) |
