shoelace/src/components/tree-item/tree-item.styles.ts

159 wiersze
3.5 KiB
TypeScript

import { css } from 'lit';
import componentStyles from '../../styles/component.styles.js';
export default css`
${componentStyles}
:host {
display: block;
outline: 0;
z-index: 0;
}
:host(:focus) {
outline: none;
}
slot:not([name])::slotted(sl-icon) {
margin-inline-end: var(--sl-spacing-x-small);
}
.tree-item {
position: relative;
display: flex;
align-items: stretch;
flex-direction: column;
color: var(--sl-color-neutral-700);
cursor: pointer;
user-select: none;
-webkit-user-select: none;
}
.tree-item__checkbox {
pointer-events: none;
}
.tree-item__expand-button,
.tree-item__checkbox,
.tree-item__label {
font-family: var(--sl-font-sans);
font-size: var(--sl-font-size-medium);
font-weight: var(--sl-font-weight-normal);
line-height: var(--sl-line-height-dense);
letter-spacing: var(--sl-letter-spacing-normal);
}
.tree-item__checkbox::part(base) {
display: flex;
align-items: center;
}
.tree-item__indentation {
display: block;
width: 1em;
flex-shrink: 0;
}
.tree-item__expand-button {
display: flex;
align-items: center;
justify-content: center;
box-sizing: content-box;
color: var(--sl-color-neutral-500);
padding: var(--sl-spacing-x-small);
width: 1rem;
height: 1rem;
flex-shrink: 0;
cursor: pointer;
}
.tree-item__expand-button {
transition: var(--sl-transition-medium) rotate ease;
}
.tree-item--expanded .tree-item__expand-button {
rotate: 90deg;
}
.tree-item--expanded.tree-item--rtl .tree-item__expand-button {
rotate: -90deg;
}
.tree-item--expanded slot[name='expand-icon'],
.tree-item:not(.tree-item--expanded) slot[name='collapse-icon'] {
display: none;
}
.tree-item:not(.tree-item--has-expand-button) .tree-item__expand-icon-slot {
display: none;
}
.tree-item__expand-button--visible {
cursor: pointer;
}
.tree-item__item {
display: flex;
align-items: center;
border-inline-start: solid 3px transparent;
}
.tree-item--disabled .tree-item__item {
opacity: 0.5;
outline: none;
cursor: not-allowed;
}
:host(:focus-visible) .tree-item__item {
outline: var(--sl-focus-ring);
outline-offset: var(--sl-focus-ring-offset);
z-index: 2;
}
:host(:not([aria-disabled='true'])) .tree-item--selected .tree-item__item {
background-color: var(--sl-color-neutral-100);
border-inline-start-color: var(--sl-color-primary-600);
}
:host(:not([aria-disabled='true'])) .tree-item__expand-button {
color: var(--sl-color-neutral-600);
}
.tree-item__label {
display: flex;
align-items: center;
transition: var(--sl-transition-fast) color;
}
.tree-item__children {
display: block;
font-size: calc(1em + var(--indent-size, var(--sl-spacing-medium)));
}
/* Indentation lines */
.tree-item__children {
position: relative;
}
.tree-item__children::before {
content: '';
position: absolute;
top: var(--indent-guide-offset);
bottom: var(--indent-guide-offset);
left: calc(1em - (var(--indent-guide-width) / 2) - 1px);
border-inline-end: var(--indent-guide-width) var(--indent-guide-style) var(--indent-guide-color);
z-index: 1;
}
.tree-item--rtl .tree-item__children::before {
left: auto;
right: 1em;
}
@media (forced-colors: active) {
:host(:not([aria-disabled='true'])) .tree-item--selected .tree-item__item {
outline: dashed 1px SelectedItem;
}
}
`;