mirror of
https://github.com/twbs/bootstrap.git
synced 2024-12-01 13:24:25 +01:00
Reset Popper.js styles for Dropdowns in navbar
This commit is contained in:
parent
ce98a1da5b
commit
af93db294b
@ -96,10 +96,11 @@ const Dropdown = (($) => {
|
||||
class Dropdown {
|
||||
|
||||
constructor(element, config) {
|
||||
this._element = element
|
||||
this._popper = null
|
||||
this._config = this._getConfig(config)
|
||||
this._menu = this._getMenuElement()
|
||||
this._element = element
|
||||
this._popper = null
|
||||
this._config = this._getConfig(config)
|
||||
this._menu = this._getMenuElement()
|
||||
this._inNavbar = this._detectNavbar()
|
||||
|
||||
this._addEventListeners()
|
||||
}
|
||||
@ -153,17 +154,7 @@ const Dropdown = (($) => {
|
||||
element = parent
|
||||
}
|
||||
}
|
||||
this._popper = new Popper(element, this._menu, {
|
||||
placement : this._getPlacement(),
|
||||
modifiers : {
|
||||
offset : {
|
||||
offset : this._config.offset
|
||||
},
|
||||
flip : {
|
||||
enabled : this._config.flip
|
||||
}
|
||||
}
|
||||
})
|
||||
this._popper = new Popper(element, this._menu, this._getPopperConfig())
|
||||
|
||||
// if this is a touch-enabled device we add extra
|
||||
// empty mouseover listeners to the body's immediate children;
|
||||
@ -253,10 +244,54 @@ const Dropdown = (($) => {
|
||||
} else if ($(this._menu).hasClass(ClassName.MENURIGHT)) {
|
||||
placement = AttachmentMap.BOTTOMEND
|
||||
}
|
||||
|
||||
return placement
|
||||
}
|
||||
|
||||
_detectNavbar() {
|
||||
return $(this._element).closest('.navbar').length > 0
|
||||
}
|
||||
|
||||
_navbarPositioning() {
|
||||
const $parentNavbar = $(this._element).closest('.navbar')
|
||||
if ($(this._menu).hasClass(ClassName.MENURIGHT)) {
|
||||
if (!$parentNavbar.hasClass('navbar-expand')) {
|
||||
return {
|
||||
position: 'static',
|
||||
transform: '',
|
||||
float: 'none'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return {}
|
||||
}
|
||||
|
||||
_getPopperConfig() {
|
||||
const popperConfig = {
|
||||
placement : this._getPlacement(),
|
||||
modifiers : {
|
||||
offset : {
|
||||
offset : this._config.offset
|
||||
},
|
||||
flip : {
|
||||
enabled : this._config.flip
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (this._inNavbar) {
|
||||
popperConfig.modifiers.AfterApplyStyle = {
|
||||
enabled: true,
|
||||
order: 901, // ApplyStyle order + 1
|
||||
fn: () => {
|
||||
// reset Popper styles
|
||||
$(this._menu).attr('style', '')
|
||||
}
|
||||
}
|
||||
}
|
||||
return popperConfig
|
||||
}
|
||||
|
||||
// static
|
||||
|
||||
static _jQueryInterface(config) {
|
||||
|
@ -77,9 +77,8 @@
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
position: static !important;
|
||||
position: static;
|
||||
float: none;
|
||||
transform: unset !important;
|
||||
}
|
||||
}
|
||||
|
||||
@ -142,6 +141,13 @@
|
||||
|
||||
&#{$infix} {
|
||||
@include media-breakpoint-down($breakpoint) {
|
||||
.navbar-nav {
|
||||
.dropdown-menu {
|
||||
position: static;
|
||||
float: none;
|
||||
}
|
||||
}
|
||||
|
||||
> .container,
|
||||
> .container-fluid {
|
||||
padding-right: 0;
|
||||
@ -158,8 +164,17 @@
|
||||
flex-direction: row;
|
||||
|
||||
.dropdown-menu {
|
||||
position: absolute !important;
|
||||
top: 100% !important;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.dropdown-menu-right {
|
||||
right: 0;
|
||||
left: auto; // Reset the default from `.dropdown-menu`
|
||||
}
|
||||
|
||||
.dropdown-menu-left {
|
||||
right: auto;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.nav-link {
|
||||
|
Loading…
Reference in New Issue
Block a user