diff options
author | GeoSot <geo.sotis@gmail.com> | 2022-02-24 22:56:15 +0300 |
---|---|---|
committer | GeoSot <geo.sotis@gmail.com> | 2022-10-27 00:32:31 +0300 |
commit | 9954e052d215f9bbb70b4208bc71673f2fbba63e (patch) | |
tree | 4af665c93e40d16093582868e72efe84de3fd89b /js/src/dropdown.js | |
parent | a7a2253507ccaf606eb18878229c5bc4c0d9087b (diff) |
Dropdown: support dynamic popper on navbar
Diffstat (limited to 'js/src/dropdown.js')
-rw-r--r-- | js/src/dropdown.js | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/js/src/dropdown.js b/js/src/dropdown.js index 6f9adcbe69..e4bcddd106 100644 --- a/js/src/dropdown.js +++ b/js/src/dropdown.js @@ -55,7 +55,6 @@ const CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center' const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)' const SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE}.${CLASS_NAME_SHOW}` const SELECTOR_MENU = '.dropdown-menu' -const SELECTOR_NAVBAR = '.navbar' const SELECTOR_NAVBAR_NAV = '.navbar-nav' const SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)' @@ -136,7 +135,7 @@ class Dropdown extends BaseComponent { return } - this._createPopper() + this._popper = this._createPopper() // If this is a touch-enabled device we add extra // empty mouseover listeners to the body's immediate children; @@ -177,7 +176,6 @@ class Dropdown extends BaseComponent { } update() { - this._inNavbar = this._detectNavbar() if (this._popper) { this._popper.update() } @@ -238,7 +236,7 @@ class Dropdown extends BaseComponent { } const popperConfig = this._getPopperConfig() - this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig) + return Popper.createPopper(referenceElement, this._menu, popperConfig) } _isShown() { @@ -274,10 +272,6 @@ class Dropdown extends BaseComponent { return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM } - _detectNavbar() { - return this._element.closest(SELECTOR_NAVBAR) !== null - } - _getOffset() { const { offset } = this._config @@ -306,15 +300,21 @@ class Dropdown extends BaseComponent { options: { offset: this._getOffset() } - }] - } - - // Disable Popper if we have a static display or Dropdown is in Navbar - if (this._inNavbar || this._config.display === 'static') { - Manipulator.setDataAttribute(this._menu, 'popper', 'static') // todo:v6 remove - defaultBsPopperConfig.modifiers = [{ - name: 'applyStyles', - enabled: false + }, + { + name: 'applyCustomStyles', + enabled: true, + phase: 'afterWrite', + fn: () => { + this._menu.style.removeProperty('position') + const initialPosition = getComputedStyle(this._menu).position + if (this._config.display === 'static' || initialPosition === 'static') { + // this._menu.style.position = 'static' + this._menu.style.removeProperty('margin') + this._menu.style.removeProperty('transform') + Manipulator.setDataAttribute(this._menu, 'popper', 'static') // todo:v6 remove? + } + } }] } |