// The dropdown wrapper (`
`) .dropup, .dropend, .dropdown, .dropstart { position: relative; } .dropdown-toggle { white-space: nowrap; // Generate the caret automatically @include caret(); } // The dropdown menu .dropdown-menu { // scss-docs-start dropdown-css-vars --#{$variable-prefix}dropdown-min-width: #{$dropdown-min-width}; --#{$variable-prefix}dropdown-padding: #{$dropdown-padding-y $dropdown-padding-x}; --#{$variable-prefix}dropdown-spacer: #{$dropdown-spacer}; @include rfs($dropdown-font-size, --#{$variable-prefix}dropdown-font-size); --#{$variable-prefix}dropdown-color: #{$dropdown-color}; // stylelint-disable-line custom-property-empty-line-before --#{$variable-prefix}dropdown-bg: #{$dropdown-bg}; --#{$variable-prefix}dropdown-border-color: #{$dropdown-border-color}; --#{$variable-prefix}dropdown-border-radius: #{$dropdown-border-radius}; --#{$variable-prefix}dropdown-border-width: #{$dropdown-border-width}; --#{$variable-prefix}dropdown-inner-border-radius: #{$dropdown-inner-border-radius}; --#{$variable-prefix}dropdown-divider-bg: #{$dropdown-divider-bg}; --#{$variable-prefix}dropdown-divider-margin-y: #{$dropdown-divider-margin-y}; --#{$variable-prefix}dropdown-box-shadow: #{$dropdown-box-shadow}; --#{$variable-prefix}dropdown-link-color: #{$dropdown-link-color}; --#{$variable-prefix}dropdown-link-hover-color: #{$dropdown-link-hover-color}; --#{$variable-prefix}dropdown-link-hover-bg: #{$dropdown-link-hover-bg}; --#{$variable-prefix}dropdown-link-active-color: #{$dropdown-link-active-color}; --#{$variable-prefix}dropdown-link-active-bg: #{$dropdown-link-active-bg}; --#{$variable-prefix}dropdown-link-disabled-color: #{$dropdown-link-disabled-color}; --#{$variable-prefix}dropdown-item-padding: #{$dropdown-item-padding-y $dropdown-item-padding-x}; --#{$variable-prefix}dropdown-header-color: #{$dropdown-header-color}; --#{$variable-prefix}dropdown-header-padding: #{$dropdown-header-padding}; // scss-docs-end dropdown-css-vars position: absolute; z-index: $zindex-dropdown; display: none; // none by default, but block on "open" of the menu min-width: var(--#{$variable-prefix}dropdown-min-width); padding: var(--#{$variable-prefix}dropdown-padding); margin: 0; // Override default margin of ul @include font-size($dropdown-font-size); color: var(--#{$variable-prefix}dropdown-color); text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer) list-style: none; background-color: var(--#{$variable-prefix}dropdown-bg); background-clip: padding-box; border: var(--#{$variable-prefix}dropdown-border-width) solid var(--#{$variable-prefix}dropdown-border-color); @include border-radius(var(--#{$variable-prefix}dropdown-border-radius)); @include box-shadow(var(--#{$variable-prefix}dropdown-box-shadow)); &[data-bs-popper] { top: 100%; left: 0; margin-top: var(--#{$variable-prefix}dropdown-spacer); } } // 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; &[data-bs-popper] { right: auto; left: 0; } } .dropdown-menu#{$infix}-end { --bs-position: end; &[data-bs-popper] { right: 0; left: auto; } } } } // scss-docs-end responsive-breakpoints // Allow for dropdowns to go bottom up (aka, dropup-menu) // Just add .dropup after the standard .dropdown class and you're set. .dropup { .dropdown-menu[data-bs-popper] { top: auto; bottom: 100%; margin-top: 0; margin-bottom: var(--#{$variable-prefix}dropdown-spacer); } .dropdown-toggle { @include caret(up); } } .dropend { .dropdown-menu[data-bs-popper] { top: 0; right: auto; left: 100%; margin-top: 0; margin-left: var(--#{$variable-prefix}dropdown-spacer); } .dropdown-toggle { @include caret(end); &::after { vertical-align: 0; } } } .dropstart { .dropdown-menu[data-bs-popper] { top: 0; right: 100%; left: auto; margin-top: 0; margin-right: var(--#{$variable-prefix}dropdown-spacer); } .dropdown-toggle { @include caret(start); &::before { vertical-align: 0; } } } // Dividers (basically an `
`) within the dropdown .dropdown-divider { height: 0; margin: var(--#{$variable-prefix}dropdown-divider-margin-y) 0; overflow: hidden; border-top: 1px solid var(--#{$variable-prefix}dropdown-divider-bg); } // Links, buttons, and more within the dropdown menu // // `