]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
Dropdown - Disable applyStyle modifier instead of removing inline style applied by...
authorJohann-S <johann.servoire@gmail.com>
Tue, 4 Jul 2017 08:26:25 +0000 (10:26 +0200)
committerJohann-S <johann.servoire@gmail.com>
Tue, 4 Jul 2017 08:37:44 +0000 (10:37 +0200)
js/src/dropdown.js
js/tests/unit/dropdown.js

index 057cfa4334ad259a581cb58b48ae859f95f3a985..234d23447d69d20132d9dfb264fb9db40ae62f7d 100644 (file)
@@ -265,14 +265,10 @@ const Dropdown = (($) => {
         }
       }
 
+      // Disable Popper.js for Dropdown in Navbar
       if (this._inNavbar) {
-        popperConfig.modifiers.AfterApplyStyle = {
-          enabled: true,
-          order: 901, // ApplyStyle order + 1
-          fn: () => {
-            // reset Popper styles
-            $(this._menu).attr('style', '')
-          }
+        popperConfig.modifiers.applyStyle = {
+          enabled: !this._inNavbar
         }
       }
       return popperConfig
index 7e96745ab62f73adaf0ac0c6f5afc2d6c56b261f..e44e47bbcb998f7e72ee5cf6478a9e74d5edeead 100644 (file)
@@ -620,4 +620,33 @@ $(function () {
       })
     $dropdown.trigger('click')
   })
+
+  QUnit.test('Dropdown should not use Popper.js in navbar', function (assert) {
+    assert.expect(1)
+    var done = assert.async()
+    var html = '<nav class="navbar navbar-expand-md navbar-light bg-light">'
+        + '<div class="dropdown">'
+        + '  <a class="nav-link dropdown-toggle" href="#" id="dropdown" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Dropdown</a>'
+        + '  <div class="dropdown-menu" aria-labelledby="dropdown">'
+        + '    <a class="dropdown-item" href="#">Action</a>'
+        + '    <a class="dropdown-item" href="#">Another action</a>'
+        + '    <a class="dropdown-item" href="#">Something else here</a>'
+        + '  </div>'
+        + '</div>'
+        + '</nav>'
+
+    $(html).appendTo('#qunit-fixture')
+    var $triggerDropdown = $('#qunit-fixture')
+      .find('[data-toggle="dropdown"]')
+      .bootstrapDropdown()
+    var $dropdownMenu = $triggerDropdown.next()
+
+    $triggerDropdown
+      .parent('.dropdown')
+      .on('shown.bs.dropdown', function () {
+        assert.ok($dropdownMenu.attr('style') === undefined, 'No inline style applied by Popper.js')
+        done()
+      })
+    $triggerDropdown.trigger($.Event('click'))
+  })
 })