2025-06-24 00:35:17 +02:00

168 lines
3.1 KiB
SCSS

@use '../shared/input.scss' as *;
@use "@@/styles/shared" as *;
@use "@@/styles/tokens/tokens" as *;
@include input(ds-select);
.ds-select {
user-select: none;
.ds-select-is-open & {
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
border-bottom: none;
}
}
.ds-select-multiple {
display: flex;
align-items: center;
max-width: 100%;
}
.ds-select-search, .ds-select-value {
box-sizing: border-box;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
border: $input-border-size solid transparent;
padding: $input-padding-vertical $space-x-small;
line-height: $line-height-base;
.ds-input-size-small & {
padding: $input-padding-vertical-small $space-x-small;
}
.ds-input-size-large & {
padding: $input-padding-vertical-large $space-x-small;
}
.ds-select-has-icon & {
padding-left: $input-height;
.ds-input-size-small & {
padding-left: $input-height-small;
}
.ds-input-size-large & {
padding-left: $input-height-large;
}
}
.ds-select-has-icon-right & {
padding-right: $input-height;
.ds-input-size-small & {
padding-right: $input-height-small;
}
.ds-input-size-large & {
padding-right: $input-height-large;
}
}
}
.ds-select-search {
appearance: none;
font-size: inherit;
font-family: $font-family-text;
width: 100%;
background: transparent;
color: $text-color-base;
outline: none;
user-select: text;
opacity: 0;
&::placeholder {
color: $text-color-disabled;
}
.ds-select-is-open & {
opacity: 1;
}
.ds-select-multiple & {
position: relative;
display: inline-flex;
width: auto;
height: auto;
padding: 0;
opacity: 1;
}
}
.ds-select-placeholder, .ds-select-value {
pointer-events: none;
.ds-select-is-open & {
opacity: 0;
}
}
.ds-select-placeholder {
color: $text-color-disabled;
}
.ds-selected-options {
display: flex;
max-width: 100%;
overflow: hidden;
}
.ds-selected-option {
display: inline-flex;
align-items: center;
margin-right: $space-xx-small;
}
.ds-select-dropdown {
position: absolute;
z-index: $z-index-dropdown;
top: 100%;
left: 0;
width: 100%;
background-color: $background-color-base;
border: $input-border-size solid $border-color-active;
border-top: 0;
border-bottom-left-radius: $border-radius-base;
border-bottom-right-radius: $border-radius-base;
visibility: hidden;
opacity: 0;
transition: all $duration-short $ease-out, border-bottom 0ms;
max-height: 240px;
overflow: auto;
.ds-select-is-open & {
visibility: visible;
opacity: 1;
}
}
.ds-select-dropdown-message {
padding: $input-padding-vertical $space-x-small;
color: $text-color-disabled;
}
.ds-select-options {
@include reset-list;
}
.ds-select-option {
padding: $input-padding-vertical $space-x-small;
cursor: pointer;
transition: all $duration-short $ease-out, border-bottom 0ms;
&.ds-select-option-hover {
background-color: $background-color-softer;
color: $text-color-base;
}
}
.ds-select-option-is-selected {
background-color: $background-color-soft;
color: $text-color-primary;
}