Skip to content

Commit

Permalink
Fix conflict with Bootstrap CSS
Browse files Browse the repository at this point in the history
  • Loading branch information
MartijnCuppens authored and XhmikosR committed Dec 4, 2020
1 parent 359e386 commit 19c1cb7
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 28 deletions.
30 changes: 15 additions & 15 deletions js/src/dropdown.js
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,6 @@ const CLASS_NAME_SHOW = 'show'
const CLASS_NAME_DROPUP = 'dropup'
const CLASS_NAME_DROPEND = 'dropend'
const CLASS_NAME_DROPSTART = 'dropstart'
const CLASS_NAME_MENUEND = 'dropdown-menu-end'
const CLASS_NAME_NAVBAR = 'navbar'

const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="dropdown"]'
Expand Down Expand Up @@ -268,22 +267,23 @@ class Dropdown extends BaseComponent {

_getPlacement() {
const parentDropdown = this._element.parentNode
let placement = PLACEMENT_BOTTOM

// Handle dropup
if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {
return PLACEMENT_RIGHT
}

if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {
return PLACEMENT_LEFT
}

// We need to trim the value because custom properties can also include spaces
const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'

if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {
placement = this._menu.classList.contains(CLASS_NAME_MENUEND) ?
PLACEMENT_TOPEND :
PLACEMENT_TOP
} else if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {
placement = PLACEMENT_RIGHT
} else if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {
placement = PLACEMENT_LEFT
} else if (this._menu.classList.contains(CLASS_NAME_MENUEND)) {
placement = PLACEMENT_BOTTOMEND
}

return placement
return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP
}

return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM
}

_detectNavbar() {
Expand Down
23 changes: 10 additions & 13 deletions scss/_dropdown.scss
Original file line number Diff line number Diff line change
Expand Up @@ -32,19 +32,29 @@
border: $dropdown-border-width solid $dropdown-border-color;
@include border-radius($dropdown-border-radius);
@include box-shadow($dropdown-box-shadow);

// Reset positioning when positioned with Popper
&[style] {
right: auto; // TODO RTL?
}
}

// scss-docs-start responsive-breakpoints
// We deliberately hardcode the `bs-` prefix because we check
// this custom property in JS to determine Popper's positioning

@each $breakpoint in map-keys($grid-breakpoints) {
@include media-breakpoint-up($breakpoint) {
$infix: breakpoint-infix($breakpoint, $grid-breakpoints);

.dropdown-menu#{$infix}-start {
--bs-position: start;
right: auto #{"/* rtl:ignore */"};
left: 0 #{"/* rtl:ignore */"};
}

.dropdown-menu#{$infix}-end {
--bs-position: end;
right: 0 #{"/* rtl:ignore */"};
left: auto #{"/* rtl:ignore */"};
}
Expand Down Expand Up @@ -101,19 +111,6 @@
}
}

// When Popper is enabled, reset the basic dropdown position
// stylelint-disable-next-line no-duplicate-selectors
.dropdown-menu {
&[data-popper-placement^="top"],
&[data-popper-placement^="right"],
&[data-popper-placement^="bottom"],
&[data-popper-placement^="left"] {
right: auto;
bottom: auto;
left: auto;
}
}


// Dividers (basically an `<hr>`) within the dropdown
.dropdown-divider {
Expand Down

0 comments on commit 19c1cb7

Please sign in to comment.