// Override default Bootstrap's dropdown component // Dropdown toggle .dropdown-toggle { display: flex; align-items: center; @if $enable-caret { &::after { flex-shrink: 0; width: $caret-width; height: $caret-width; margin-right: -.25rem; content: ""; background-color: currentcolor; border: 0 !important; -webkit-mask: escape-svg(url("data:image/svg+xml,")) no-repeat 50% 50%; // stylelint-disable-line property-no-vendor-prefix mask: escape-svg(url("data:image/svg+xml,")) no-repeat 50% 50%; -webkit-mask-size: cover; // stylelint-disable-line property-no-vendor-prefix mask-size: cover; } } } @if $enable-caret { .dropup .dropdown-toggle::after { -webkit-mask: escape-svg(url("data:image/svg+xml,")) no-repeat 50% 50%; // stylelint-disable-line property-no-vendor-prefix mask: escape-svg(url("data:image/svg+xml,")) no-repeat 50% 50%; } .dropend .dropdown-toggle::after { -webkit-mask: escape-svg(url("data:image/svg+xml,")) no-repeat 50% 50%; // stylelint-disable-line property-no-vendor-prefix mask: escape-svg(url("data:image/svg+xml,")) no-repeat 50% 50%; } [dir="rtl"] .dropend .dropdown-toggle::after { transform: rotate(180deg); } .dropstart .dropdown-toggle { &::before { flex-shrink: 0; width: $caret-width; height: $caret-width; margin-left: -.25rem; content: ""; background-color: currentcolor; border: 0 !important; -webkit-mask: escape-svg(url("data:image/svg+xml,")) no-repeat 50% 50%; // stylelint-disable-line property-no-vendor-prefix mask: escape-svg(url("data:image/svg+xml,")) no-repeat 50% 50%; -webkit-mask-size: cover; // stylelint-disable-line property-no-vendor-prefix mask-size: cover; } } [dir="rtl"] .dropstart .dropdown-toggle::before { transform: rotate(180deg); } .dropdown-toggle-split { &::after, &::before { margin: 0 -.25rem; } } } // Highlight dropdown-toggle with specific "filter-select" class if there is any checkbox checked inside dropdown-menu .dropdown:has(:checked) .filter-select { --#{$prefix}btn-border-color: #{$gray-900}; --#{$prefix}btn-hover-border-color: #{$gray-900}; } // Dropdown menu .dropdown-menu { --#{$prefix}dropdown-item-border-radius: #{$dropdown-item-border-radius}; --#{$prefix}dropdown-item-spacer: #{$dropdown-item-spacer}; padding-bottom: calc(var(--#{$prefix}dropdown-padding-y) - var(--#{$prefix}dropdown-item-spacer)); &.show { animation: fade-in .15s ease-in-out; } &::before, &::after { position: absolute; display: block; content: ""; } } .dropdown, .dropup { .dropdown-menu { margin: { top: var(--#{$prefix}dropdown-spacer) !important; bottom: var(--#{$prefix}dropdown-spacer) !important; } &::before, &::after { left: 0; width: 100%; height: calc(var(--#{$prefix}dropdown-spacer) * 1.5); } &::before { bottom: 100%; } &::after { top: 100%; } } } .dropstart, .dropend { .dropdown-menu { margin: { right: var(--#{$prefix}dropdown-spacer) !important; left: var(--#{$prefix}dropdown-spacer) !important; } &::before, &::after { top: 0; width: calc(var(--#{$prefix}dropdown-spacer) * 2); height: 100%; } &::before { left: calc(var(--#{$prefix}dropdown-spacer) * -2); } &::after { left: 100%; } } } .dropdown-item { display: flex; align-items: center; margin-bottom: var(--#{$prefix}dropdown-item-spacer); @include border-radius(var(--#{$prefix}dropdown-item-border-radius)); transition: $dropdown-link-transition; &.show, [data-bs-toggle].show > &, [data-bs-toggle]:hover > &, &:active { color: var(--#{$prefix}dropdown-link-hover-color); background-color: var(--#{$prefix}dropdown-link-hover-bg); } &:focus-visible { outline: none; box-shadow: $focus-ring-box-shadow; } &.dropdown-toggle::after { margin-left: auto; } .item-active-indicator { display: none; } &.active .item-active-indicator { display: flex; padding-left: .5rem; } } // Dark mode @if $enable-dark-mode { @include color-mode(dark) { .dropdown:not([data-bs-theme="light"]):has(:checked) .filter-select { --#{$prefix}btn-border-color: #{$white}; --#{$prefix}btn-hover-border-color: #{$white}; } } }