]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
Fixes #7213 Collapse plugin does not correctly set the "collapsed" class on accordion...
authorIvan Khalopik <ikhalopik@gmail.com>
Fri, 29 Mar 2013 14:55:14 +0000 (17:55 +0300)
committerIvan Khalopik <ikhalopik@gmail.com>
Fri, 29 Mar 2013 16:17:03 +0000 (19:17 +0300)
js/bootstrap-collapse.js
js/tests/unit/bootstrap-collapse.js

index 2730a48d45a9ea6abc1c7a9120cdaefce2cc6f3a..813462a24e9a086005192436a34b80aad774d154 100644 (file)
         || 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)
   })
index 4c5916ecd9317de93826a862cb6579d06c2aba10..dbbf5dcf1fad8eb6db5093a3af919aef2edc4473 100644 (file)
@@ -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', function () {
+            ok(target1.hasClass('collapsed'))
+            ok(target2.hasClass('collapsed'))
+            ok(!target3.hasClass('collapsed'))
+
+            start()
+          })
+
+        target3.click()
+      })
+
 })
\ No newline at end of file