]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
Collapse - preventDefault only on <a> elements not inside the collapsible
authorJohann-S <johann.servoire@gmail.com>
Fri, 25 Aug 2017 08:14:18 +0000 (10:14 +0200)
committerJohann-S <johann.servoire@gmail.com>
Fri, 25 Aug 2017 08:48:35 +0000 (09:48 +0100)
element

js/src/collapse.js
js/tests/unit/collapse.js
js/tests/visual/collapse.html

index 718630bd37918e17ae66ffe6abfb3f89e78fea01..7d1ba4c54fc3b829cc1d2ccd50317bbaebde2c21 100644 (file)
@@ -361,7 +361,8 @@ const Collapse = (($) => {
    */
 
   $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
-    if (!/input|textarea/i.test(event.target.tagName)) {
+    // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
+    if (event.target.tagName === 'A' && !$.contains(this, event.target)) {
       event.preventDefault()
     }
 
index 4470a18c2792d87f71fdab0b59dd69d8ae5c3190..9ecb60994ff9184854a0dad7fe2b248230a107a1 100644 (file)
@@ -673,4 +673,29 @@ $(function () {
     })
     $trigger3.trigger('click')
   })
+
+  QUnit.test('should not prevent interactions inside the collapse element', function (assert) {
+    assert.expect(2)
+    var done = assert.async()
+
+    var $target = $('<input type="checkbox" data-toggle="collapse" data-target="#collapsediv1" />').appendTo('#qunit-fixture')
+    var htmlCollapse =
+      '<div id="collapsediv1" class="collapse">' +
+      ' <input type="checkbox" id="testCheckbox" />' +
+      '</div>'
+
+    $(htmlCollapse)
+      .appendTo('#qunit-fixture')
+      .on('shown.bs.collapse', function () {
+        assert.ok($target.prop('checked'), '$trigger is checked')
+        var $testCheckbox = $('#testCheckbox')
+        $testCheckbox.trigger($.Event('click'))
+        setTimeout(function () {
+          assert.ok($testCheckbox.prop('checked'), '$testCheckbox is checked too')
+          done()
+        }, 5)
+      })
+
+    $target.trigger($.Event('click'))
+  })
 })
index 1d61ef19c9873deefe8a5ebf16d2c28397522f6e..6b4e89bfb3336f259f9f435ed630b563eb6418d1 100644 (file)
@@ -57,7 +57,7 @@
       </div>
     </div>
 
-    <script src="../../../docs/assets/js/vendor/jquery-slim.min.js"></script>
+    <script src="../../../assets/js/vendor/jquery-slim.min.js"></script>
     <script src="../../dist/util.js"></script>
     <script src="../../dist/collapse.js"></script>
   </body>