From 41c782567775d3bbcfc62d163ae22a531277b5e2 Mon Sep 17 00:00:00 2001 From: Ivan Khalopik Date: Fri, 29 Mar 2013 17:55:14 +0300 Subject: Fixes #7213 Collapse plugin does not correctly set the "collapsed" class on accordion heading links --- js/bootstrap-collapse.js | 6 ++++++ js/tests/unit/bootstrap-collapse.js | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) (limited to 'js') diff --git a/js/bootstrap-collapse.js b/js/bootstrap-collapse.js index 2730a48d4..813462a24 100644 --- a/js/bootstrap-collapse.js +++ b/js/bootstrap-collapse.js @@ -160,6 +160,12 @@ || e.preventDefault() || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 , option = $(target).data('collapse') ? 'toggle' : $this.data() + , parent = $this.attr('data-parent') + , $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/tests/unit/bootstrap-collapse.js b/js/tests/unit/bootstrap-collapse.js index 4c5916ecd..dbbf5dcf1 100644 --- a/js/tests/unit/bootstrap-collapse.js +++ b/js/tests/unit/bootstrap-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 = $('
') + .appendTo($('#qunit-fixture')) + + var target1 = $('') + .appendTo(accordion.find('.accordion-group').eq(0)) + + var collapsible1 = $('
') + .appendTo(accordion.find('.accordion-group').eq(0)) + + var target2 = $('') + .appendTo(accordion.find('.accordion-group').eq(1)) + + var collapsible2 = $('
') + .appendTo(accordion.find('.accordion-group').eq(1)) + + var target3 = $('') + .appendTo(accordion.find('.accordion-group').eq(2)) + + var collapsible3 = $('
') + .appendTo(accordion.find('.accordion-group').eq(2)) + .on('show', function () { + ok(target1.hasClass('collapsed')) + ok(target2.hasClass('collapsed')) + ok(!target3.hasClass('collapsed')) + + start() + }) + + target3.click() + }) + }) \ No newline at end of file -- cgit v1.2.3 From 2aec6dae597b69502d09aec983598e5f955ca558 Mon Sep 17 00:00:00 2001 From: Mark Otto Date: Thu, 20 Jun 2013 16:01:59 -0700 Subject: Fixes #7730: Better hiding of empty titles in popovers If the popover's title contains no text, hide it via JS. Previously was done via CSS's `:empty` property, but that doesn't work in IE8, so JS it is. /cc @fat becaue I probably did this wrong <3 --- js/popover.js | 2 ++ 1 file changed, 2 insertions(+) (limited to 'js') 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 () { -- cgit v1.2.3 From b0da97588e3d1e4d7eb688d16b3e40e0a27459f3 Mon Sep 17 00:00:00 2001 From: fat Date: Thu, 27 Jun 2013 19:19:22 -0700 Subject: fixes #6982 --- js/collapse.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'js') diff --git a/js/collapse.js b/js/collapse.js index f8b65b393..b2678e0a5 100644 --- a/js/collapse.js +++ b/js/collapse.js @@ -77,7 +77,7 @@ [dimension](size || 'auto') [0].offsetWidth - this.$element[size !== null ? 'addClass' : 'removeClass']('collapse') + this.$element[size != null ? 'addClass' : 'removeClass']('collapse') return this } -- cgit v1.2.3 From 13cad5061d46573c55def0e7a43cab1631317262 Mon Sep 17 00:00:00 2001 From: fat Date: Wed, 17 Jul 2013 19:28:43 -0700 Subject: maybe fix this old ass issue #5973 --- js/collapse.js | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) (limited to 'js') diff --git a/js/collapse.js b/js/collapse.js index 7c3c20da1..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) } @@ -82,18 +91,14 @@ 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') -- cgit v1.2.3