188 lines
6 KiB
SCSS
188 lines
6 KiB
SCSS
@use "../utilities/css-variables" as cv;
|
|
@use "../utilities/initial-variables" as iv;
|
|
@use "../utilities/extends";
|
|
@use "../utilities/mixins" as mx;
|
|
|
|
$dropdown-menu-min-width: 12rem !default;
|
|
|
|
$dropdown-content-background-color: cv.getVar("scheme-main") !default;
|
|
$dropdown-content-offset: 0.25rem !default;
|
|
$dropdown-content-padding-bottom: 0.5rem !default;
|
|
$dropdown-content-padding-top: 0.5rem !default;
|
|
$dropdown-content-radius: cv.getVar("radius") !default;
|
|
$dropdown-content-shadow: cv.getVar("shadow") !default;
|
|
$dropdown-content-z: 20 !default;
|
|
|
|
$dropdown-item-h: cv.getVar("scheme-h");
|
|
$dropdown-item-s: cv.getVar("scheme-s");
|
|
$dropdown-item-l: cv.getVar("scheme-main-l");
|
|
$dropdown-item-background-l: cv.getVar("scheme-main-l");
|
|
$dropdown-item-background-l-delta: 0%;
|
|
$dropdown-item-hover-background-l-delta: cv.getVar("hover-background-l-delta");
|
|
$dropdown-item-active-background-l-delta: cv.getVar(
|
|
"active-background-l-delta"
|
|
);
|
|
$dropdown-item-color-l: cv.getVar("text-strong-l");
|
|
$dropdown-item-selected-h: cv.getVar("link-h");
|
|
$dropdown-item-selected-s: cv.getVar("link-s");
|
|
$dropdown-item-selected-l: cv.getVar("link-l");
|
|
$dropdown-item-selected-background-l: cv.getVar("link-l");
|
|
$dropdown-item-selected-color-l: cv.getVar("link-invert-l");
|
|
|
|
$dropdown-divider-background-color: cv.getVar("border-weak") !default;
|
|
|
|
.#{iv.$class-prefix}dropdown {
|
|
// prettier-ignore-start
|
|
@include cv.register-vars(
|
|
(
|
|
"dropdown-menu-min-width": #{$dropdown-menu-min-width},
|
|
"dropdown-content-background-color": #{$dropdown-content-background-color},
|
|
"dropdown-content-offset": #{$dropdown-content-offset},
|
|
"dropdown-content-padding-bottom": #{$dropdown-content-padding-bottom},
|
|
"dropdown-content-padding-top": #{$dropdown-content-padding-top},
|
|
"dropdown-content-radius": #{$dropdown-content-radius},
|
|
"dropdown-content-shadow": #{$dropdown-content-shadow},
|
|
"dropdown-content-z": #{$dropdown-content-z},
|
|
"dropdown-item-h": #{$dropdown-item-h},
|
|
"dropdown-item-s": #{$dropdown-item-s},
|
|
"dropdown-item-l": #{$dropdown-item-l},
|
|
"dropdown-item-background-l": #{$dropdown-item-background-l},
|
|
"dropdown-item-background-l-delta": #{$dropdown-item-background-l-delta},
|
|
"dropdown-item-hover-background-l-delta": #{$dropdown-item-hover-background-l-delta},
|
|
"dropdown-item-active-background-l-delta": #{$dropdown-item-active-background-l-delta},
|
|
"dropdown-item-color-l": #{$dropdown-item-color-l},
|
|
"dropdown-item-selected-h": #{$dropdown-item-selected-h},
|
|
"dropdown-item-selected-s": #{$dropdown-item-selected-s},
|
|
"dropdown-item-selected-l": #{$dropdown-item-selected-l},
|
|
"dropdown-item-selected-background-l": #{$dropdown-item-selected-background-l},
|
|
"dropdown-item-selected-color-l": #{$dropdown-item-selected-color-l},
|
|
"dropdown-divider-background-color": #{$dropdown-divider-background-color},
|
|
)
|
|
);
|
|
// prettier-ignore-end
|
|
}
|
|
|
|
.#{iv.$class-prefix}dropdown {
|
|
display: inline-flex;
|
|
position: relative;
|
|
vertical-align: top;
|
|
|
|
&.#{iv.$class-prefix}is-active,
|
|
&.#{iv.$class-prefix}is-hoverable:hover {
|
|
.#{iv.$class-prefix}dropdown-menu {
|
|
display: block;
|
|
}
|
|
}
|
|
|
|
&.#{iv.$class-prefix}is-right {
|
|
.#{iv.$class-prefix}dropdown-menu {
|
|
left: auto;
|
|
right: 0;
|
|
}
|
|
}
|
|
|
|
&.#{iv.$class-prefix}is-up {
|
|
.#{iv.$class-prefix}dropdown-menu {
|
|
bottom: 100%;
|
|
padding-bottom: cv.getVar("dropdown-content-offset");
|
|
padding-top: initial;
|
|
top: auto;
|
|
}
|
|
}
|
|
}
|
|
|
|
.#{iv.$class-prefix}dropdown-menu {
|
|
display: none;
|
|
@include mx.ltr-position(0, false);
|
|
min-width: cv.getVar("dropdown-menu-min-width");
|
|
padding-top: cv.getVar("dropdown-content-offset");
|
|
position: absolute;
|
|
top: 100%;
|
|
z-index: cv.getVar("dropdown-content-z");
|
|
}
|
|
|
|
.#{iv.$class-prefix}dropdown-content {
|
|
background-color: cv.getVar("dropdown-content-background-color");
|
|
border-radius: cv.getVar("dropdown-content-radius");
|
|
box-shadow: cv.getVar("dropdown-content-shadow");
|
|
padding-bottom: cv.getVar("dropdown-content-padding-bottom");
|
|
padding-top: cv.getVar("dropdown-content-padding-top");
|
|
}
|
|
|
|
.#{iv.$class-prefix}dropdown-item {
|
|
color: hsl(
|
|
#{cv.getVar("dropdown-item-h")},
|
|
#{cv.getVar("dropdown-item-s")},
|
|
#{cv.getVar("dropdown-item-color-l")}
|
|
);
|
|
display: block;
|
|
font-size: 0.875rem;
|
|
line-height: 1.5;
|
|
padding: 0.375rem 1rem;
|
|
}
|
|
|
|
a.#{iv.$class-prefix}dropdown-item,
|
|
button.#{iv.$class-prefix}dropdown-item {
|
|
background-color: hsl(
|
|
#{cv.getVar("dropdown-item-h")},
|
|
#{cv.getVar("dropdown-item-s")},
|
|
calc(
|
|
#{cv.getVar("dropdown-item-background-l")} + #{cv.getVar(
|
|
"dropdown-item-background-l-delta"
|
|
)}
|
|
)
|
|
);
|
|
padding-inline-end: 3rem;
|
|
text-align: inherit;
|
|
white-space: nowrap;
|
|
width: 100%;
|
|
|
|
&:hover {
|
|
@include cv.register-vars(
|
|
(
|
|
"dropdown-item-background-l-delta": #{cv.getVar(
|
|
"dropdown-item-hover-background-l-delta"
|
|
)},
|
|
"dropdown-item-border-l-delta": #{cv.getVar(
|
|
"dropdown-item-hover-border-l-delta"
|
|
)},
|
|
)
|
|
);
|
|
}
|
|
|
|
&:active {
|
|
@include cv.register-vars(
|
|
(
|
|
"dropdown-item-background-l-delta": #{cv.getVar(
|
|
"dropdown-item-active-background-l-delta"
|
|
)},
|
|
"dropdown-item-border-l-delta": #{cv.getVar(
|
|
"dropdown-item-active-border-l-delta"
|
|
)},
|
|
)
|
|
);
|
|
}
|
|
|
|
&.#{iv.$class-prefix}is-active,
|
|
&.#{iv.$class-prefix}is-selected {
|
|
@include cv.register-vars(
|
|
(
|
|
"dropdown-item-h": #{cv.getVar("dropdown-item-selected-h")},
|
|
"dropdown-item-s": #{cv.getVar("dropdown-item-selected-s")},
|
|
"dropdown-item-l": #{cv.getVar("dropdown-item-selected-l")},
|
|
"dropdown-item-background-l": #{cv.getVar(
|
|
"dropdown-item-selected-background-l"
|
|
)},
|
|
"dropdown-item-color-l": #{cv.getVar("dropdown-item-selected-color-l")},
|
|
)
|
|
);
|
|
}
|
|
}
|
|
|
|
.#{iv.$class-prefix}dropdown-divider {
|
|
background-color: cv.getVar("dropdown-divider-background-color");
|
|
border: none;
|
|
display: block;
|
|
height: 1px;
|
|
margin: 0.5rem 0;
|
|
}
|