Files

136 lines
3.0 KiB
SCSS

@use '../config' as *;
.dropdown-menu {
--dropdown-item-gap: #{$dropdown-item-gap};
--dropdown-item-icon-size: #{$icon-size};
--dropdown-item-icon-color: var(--tertiary);
--dropdown-header-padding-bottom: #{$dropdown-header-padding-bottom};
--dropdown-menu-columns-gap: #{$dropdown-menu-columns-gap};
--dropdown-arrow-offset: #{$dropdown-arrow-offset};
--dropdown-arrow-inset: #{$dropdown-arrow-inset};
--dropdown-dropend-offset: #{$dropdown-dropend-offset};
--dropdown-menu-card-min-width: #{$dropdown-menu-card-min-width};
user-select: none;
background-clip: border-box;
&.card {
display: none;
min-width: $dropdown-max-width;
padding: 0;
&.show {
display: flex;
}
}
@include media-print() {
display: none;
}
}
.dropdown-item {
display: flex;
gap: var(--dropdown-item-gap, #{$dropdown-item-gap});
align-items: center;
min-width: $dropdown-min-width;
margin: 0;
line-height: $line-height-base;
}
.dropdown-item-icon {
width: var(--dropdown-item-icon-size) !important;
height: var(--dropdown-item-icon-size) !important;
color: var(--dropdown-item-icon-color);
text-align: center;
}
.dropdown-item-indicator {
display: inline-flex;
align-items: center;
height: var(--dropdown-item-icon-size);
line-height: 1;
vertical-align: bottom;
}
.dropdown-header {
@include subheader();
padding-bottom: var(--dropdown-header-padding-bottom);
pointer-events: none;
}
.dropdown-menu-scrollable {
height: auto;
max-height: $dropdown-scrollable-height;
overflow-x: hidden;
overscroll-behavior: contain;
}
.dropdown-menu-column {
min-width: $dropdown-min-width;
.dropdown-item {
min-width: 0;
}
}
.dropdown-menu-columns {
display: flex;
gap: var(--dropdown-menu-columns-gap);
}
.dropdown-menu-arrow {
&::before {
position: absolute;
inset-inline-start: var(--dropdown-arrow-inset);
top: calc(-1 * var(--dropdown-arrow-offset));
z-index: -1;
display: block;
width: 14px;
height: 14px;
clip-path: inset(0 5px 5px 0);
content: '';
background: inherit;
// The menu draws its edge with the 1px ring in --dropdown-box-shadow and has
// no border, so `inherit` would give the arrow the text color.
border: 1px solid var(--dropdown-border-color);
// clip-path + border + rotate renders garbled edges on Firefox; only the
// top/left border survives the clip anyway, so drop the rest.
border-width: 1px 0 0 1px;
/* rtl:ignore */
transform: rotate(45deg);
transform-origin: center;
}
&.dropdown-menu-end {
&::before {
inset-inline-start: auto;
inset-inline-end: var(--dropdown-arrow-inset);
}
}
}
.dropend {
> .dropdown-menu {
margin-inline-start: calc(-1 * var(--dropdown-dropend-offset));
margin-top: subtract(calc(-1 * $dropdown-padding-y), 1px);
}
.dropdown-toggle {
&::after {
margin-inline-start: auto;
}
}
}
.dropdown-menu-card {
min-width: var(--dropdown-menu-card-min-width);
padding: 0;
> .card {
margin: 0;
border: 0;
box-shadow: none;
}
}