import { css } from 'lit'; import componentStyles from '../../styles/component.styles'; import formControlStyles from '../../styles/form-control.styles'; export default css` ${componentStyles} ${formControlStyles} :host { --focus-ring: 0 0 0 var(--sl-focus-ring-width) rgb(var(--sl-color-primary-500) / var(--sl-focus-ring-alpha)); display: block; } .select { display: block; } .select__box { display: inline-flex; align-items: center; justify-content: start; position: relative; width: 100%; font-family: var(--sl-input-font-family); font-weight: var(--sl-input-font-weight); letter-spacing: var(--sl-input-letter-spacing); background-color: rgb(var(--sl-input-background-color)); border: solid var(--sl-input-border-width) rgb(var(--sl-input-border-color)); vertical-align: middle; overflow: hidden; transition: var(--sl-transition-fast) color, var(--sl-transition-fast) border, var(--sl-transition-fast) box-shadow; cursor: pointer; } .select:not(.select--disabled) .select__box:hover { background-color: rgb(var(--sl-input-background-color-hover)); border-color: rgb(var(--sl-input-border-color-hover)); color: rgb(var(--sl-input-color-hover)); } .select.select--focused:not(.select--disabled) .select__box { background-color: rgb(var(--sl-input-background-color-focus)); border-color: rgb(var(--sl-input-border-color-focus)); box-shadow: var(--focus-ring); outline: none; color: rgb(var(--sl-input-color-focus)); } .select--disabled .select__box { background-color: rgb(var(--sl-input-background-color-disabled)); border-color: rgb(var(--sl-input-border-color-disabled)); color: rgb(var(--sl-input-color-disabled)); opacity: 0.5; cursor: not-allowed; outline: none; } .select--disabled .select__tags, .select--disabled .select__clear { pointer-events: none; } .select__label { flex: 1 1 auto; display: flex; align-items: center; user-select: none; overflow-x: auto; overflow-y: hidden; white-space: nowrap; /* Hide scrollbar in Firefox */ scrollbar-width: none; } /* Hide scrollbar in Chrome/Safari */ .select__label::-webkit-scrollbar { width: 0; height: 0; } .select__clear { flex: 0 0 auto; } .select__icon { flex: 0 0 auto; display: inline-flex; transition: var(--sl-transition-medium) transform ease; } .select--open .select__icon { transform: rotate(-180deg); } /* Placeholder */ .select--placeholder-visible .select__label { color: rgb(var(--sl-input-placeholder-color)); } .select--disabled.select--placeholder-visible .select__label { color: rgb(var(--sl-input-placeholder-color-disabled)); } /* Tags */ .select__tags { display: inline-flex; align-items: center; flex-wrap: wrap; justify-content: left; margin-left: var(--sl-spacing-xx-small); } /* Hidden input (for form control validation to show) */ .select__hidden-select { position: absolute; top: 0; left: 0; width: 100%; height: 100%; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; } /* * Size modifiers */ /* Small */ .select--small .select__box { border-radius: var(--sl-input-border-radius-small); font-size: var(--sl-input-font-size-small); min-height: var(--sl-input-height-small); } .select--small .select__label { margin: 0 var(--sl-input-spacing-small); } .select--small .select__clear { margin-right: var(--sl-input-spacing-small); } .select--small .select__icon { margin-right: var(--sl-input-spacing-small); } .select--small .select__tags { padding-bottom: 2px; } .select--small .select__tags sl-tag { padding-top: 2px; } .select--small .select__tags sl-tag:not(:last-of-type) { margin-right: var(--sl-spacing-xx-small); } .select--small.select--has-tags .select__label { margin-left: 0; } /* Medium */ .select--medium .select__box { border-radius: var(--sl-input-border-radius-medium); font-size: var(--sl-input-font-size-medium); min-height: var(--sl-input-height-medium); } .select--medium .select__label { margin: 0 var(--sl-input-spacing-medium); } .select--medium .select__clear { margin-right: var(--sl-input-spacing-medium); } .select--medium .select__icon { margin-right: var(--sl-input-spacing-medium); } .select--medium .select__tags { padding-bottom: 3px; } .select--medium .select__tags sl-tag { padding-top: 3px; } .select--medium .select__tags sl-tag:not(:last-of-type) { margin-right: var(--sl-spacing-xx-small); } .select--medium.select--has-tags .select__label { margin-left: 0; } /* Large */ .select--large .select__box { border-radius: var(--sl-input-border-radius-large); font-size: var(--sl-input-font-size-large); min-height: var(--sl-input-height-large); } .select--large .select__label { margin: 0 var(--sl-input-spacing-large); } .select--large .select__clear { margin-right: var(--sl-input-spacing-large); } .select--large .select__icon { margin-right: var(--sl-input-spacing-large); } .select--large .select__tags { padding-bottom: 4px; } .select--large .select__tags sl-tag { padding-top: 4px; } .select--large .select__tags sl-tag:not(:last-of-type) { margin-right: var(--sl-spacing-xx-small); } .select--large.select--has-tags .select__label { margin-left: 0; } /* * Pill modifier */ .select--pill.select--small .select__box { border-radius: var(--sl-input-height-small); } .select--pill.select--medium .select__box { border-radius: var(--sl-input-height-medium); } .select--pill.select--large .select__box { border-radius: var(--sl-input-height-large); } `;