@telekom/scale-components
Version:
Scale is the digital design system for Telekom products and experiences.
316 lines (274 loc) • 7.97 kB
CSS
:host {
--font-weight: var(--telekom-typography-font-weight-bold);
--height: var(--telekom-spacing-composition-space-13);
--color: var(--telekom-color-text-and-icon-standard);
--color-disabled: var(--telekom-color-text-and-icon-disabled);
--background-disabled: none;
--background-hover: var(--telekom-color-ui-state-fill-hovered);
--border: var(--telekom-spacing-composition-space-01) solid
var(--telekom-color-ui-border-standard);
--border-color-hover: var(--telekom-color-ui-border-hovered);
--border-color-focus: var(--telekom-color-ui-border-hovered);
--border-color-disabled: var(--telekom-color-ui-border-disabled);
--border-invalid: var(--telekom-spacing-composition-space-02) solid
var(--telekom-color-functional-danger-hovered);
--focus-outline: var(--telekom-line-weight-highlight) solid
var(--telekom-color-functional-focus-standard);
--spacing-x: var(--telekom-spacing-composition-space-05);
--transition: all var(--telekom-motion-duration-transition)
var(--telekom-motion-easing-standard);
--radius: var(--telekom-radius-standard);
--spacing-x-for-helper-text: var(--telekom-spacing-composition-space-03);
/*combobox*/
--transition-combobox: var(--transition);
--background-combobox: var(--telekom-color-ui-state-fill-standard);
/*
18px 32px 4px 12px
(subtracting 1px from border)
*/
--spacing-combobox: 1.125rem
calc(2rem - var(--telekom-spacing-composition-space-01)) 0.25rem
calc(0.75rem - var(--telekom-spacing-composition-space-01));
/*meta*/
--spacing-y-meta: var(--telekom-spacing-composition-space-03);
--color-meta: var(--telekom-color-text-and-icon-standard);
/*icon*/
--height-icon: 20px;
--color-icon: var(--telekom-color-text-and-icon-standard);
--color-icon-hover: var(--telekom-color-text-and-icon-standard);
--color-icon-active: var(--telekom-color-text-and-icon-standard);
--transition-icon: var(--transition);
/*label*/
--color-label: var(--telekom-color-text-and-icon-additional);
--z-index-label: var(--scl-z-index-10);
--transition-label: var(--transition);
--transform-label: translate(var(--spacing-x), 0.875rem);
--transform-label-animated: translate(
var(--spacing-x),
calc(0.25rem + var(--telekom-spacing-composition-space-01))
);
/*listbox*/
--background-listbox: var(--telekom-color-background-surface);
--box-shadow-listbox: 0 2px 4px 0 rgba(0, 0, 0, 0.1),
0 4px 16px 0 rgba(0, 0, 0, 0.1);
--max-height-listbox: 300px;
--z-index-listbox: 99;
}
/*combobox-container*/
[part='combobox-container'] *,
[part='combobox-container'] *::before,
[part='combobox-container'] *::after {
box-sizing: border-box;
}
[part='combobox-container'] {
display: block;
position: relative;
}
/*combobox*/
[part='combobox'] {
width: 100%;
height: var(--height);
margin: 0;
display: flex;
align-items: center;
outline: none;
padding: var(--spacing-combobox);
z-index: 1;
box-sizing: border-box;
transition: var(--transition-combobox);
font: var(--telekom-text-style-body);
border-radius: var(--radius);
border: var(--border);
box-sizing: border-box;
white-space: nowrap;
text-overflow: ellipsis;
appearance: none;
-webkit-appearance: none;
background-color: var(--background-combobox);
color: var(--color);
}
[part~='select']:not([part~='disabled'])
[part='combobox']:hover
~ [part='icon'] {
color: var(--color-icon-hover);
}
[part~='select']:not([part~='disabled'])
[part='combobox']:active
~ [part='icon'] {
color: var(--color-icon-active);
}
[part~='select']:not([part~='disabled']):not([part~='invalid'])
[part='combobox']:hover {
border-color: var(--border-color-hover);
background-color: var(--background-hover);
}
[part~='select']:not([part~='disabled'])[part~='invalid']
[part='combobox']:hover {
background-color: var(--background-hover);
}
[part~='select']:not([part~='disabled']):not([part~='invalid'])
[part='combobox']:focus {
border-color: var(--border-color-focus);
}
[part~='select']:not([part~='disabled']):not([part~='steal-focus'])
[part='combobox']:focus {
outline: var(--focus-outline);
outline-offset: 1px;
}
[part~='invalid'] [part='combobox'] {
border: var(--border-invalid);
}
[part~='transparent'] [part='combobox'] {
background-color: transparent;
}
[part~='disabled'] [part='combobox'] {
cursor: not-allowed;
border-color: var(--border-color-disabled);
color: var(--color-disabled);
background: var(--background-disabled);
}
/*combobox value*/
[part='combobox_value'] {
width: calc(100%);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
display: inline-block;
}
/*meta*/
[part='meta'] {
display: flex;
justify-content: space-between;
margin-top: var(--spacing-y-meta);
color: var(--color-meta);
}
/*icon*/
[part='icon'] {
top: 50%;
right: var(--spacing-x);
position: absolute;
transform: translateY(-50%);
pointer-events: none;
height: var(--height-icon);
color: var(--color-icon);
transition: var(--transition-icon);
}
[part~='disabled'] [part='icon'] {
color: var(--color-disabled);
}
/*label*/
[part='label'] {
width: calc(100% - 44px); /* 12px + 32px (x padding) */
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
top: 0;
left: 0;
color: var(--color-label);
display: inline-block;
z-index: var(--z-index-label);
position: absolute;
transition: var(--transition-label);
pointer-events: none;
font: var(--telekom-text-style-ui);
transform: var(--transform-label);
}
[part~='animated'] [part='label'] {
font: var(--telekom-text-style-small-bold);
transform: var(--transform-label-animated);
}
[part~='disabled'] [part='label'] {
cursor: not-allowed;
border-color: var(--border-color-disabled);
color: var(--color-disabled);
background: var(--background-disabled);
}
/* hidden label */
[part~='hide-label'] [part='combobox'] {
padding-top: 0.3125rem;
}
[part~='hide-label'] [part='label'] {
visibility: hidden;
}
/*listbox*/
[part='listbox'] {
position: relative;
}
[part='listbox-scroll-container'] {
max-height: var(--max-height-listbox);
overflow-y: auto;
}
[part='listbox-pad'] {
background: var(--background-listbox);
box-shadow: var(--box-shadow-listbox);
border-radius: var(--radius);
padding: var(--radius) 0;
margin-top: var(--telekom-spacing-composition-space-03);
left: 0;
position: absolute;
top: 100%;
width: 100%;
z-index: var(--z-index-listbox);
display: none;
}
[part~='open'] [part='listbox-pad'] {
display: block;
}
[part~='strategy-fixed'] [part='listbox-pad'] {
position: fixed;
}
[part~='transparent'] [part='listbox'] {
background-color: transparent;
}
/*option*/
[part~='option'] {
color: var(--color);
}
[part~='option']:hover {
background-color: var(--background-hover);
}
[part~='option'][part~='current'] {
outline: var(--focus-outline);
outline-offset: -2px;
border-radius: var(--radius);
}
[part~='option'][aria-selected='true'] {
padding-right: 30px;
position: relative;
}
[part~='option'][aria-selected='true'] scale-icon-action-checkmark {
position: absolute;
right: var(--telekom-spacing-composition-space-05);
top: var(--telekom-spacing-composition-space-05);
}
[part~='option'] scale-dropdown-select-item::part(base) {
padding: var(--telekom-spacing-composition-space-05);
}
/*helper-text*/
[part~='has-helper-text'] [part~='combobox-container'] {
margin-bottom: var(--spacing-x-for-helper-text);
}
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border-width: 0;
}
.hcm-disabled {
display: none;
}
@media screen and (forced-colors: active), (-ms-high-contrast: active) {
[part='listbox-pad'] {
outline: var(--focus-outline);
outline-offset: -2px;
border-radius: var(--radius);
}
.hcm-disabled {
display: block;
}
}