@scania/tegel
Version:
Tegel Design System
1 lines • 5.43 kB
JavaScript
import{t,p as o,H as s,c as i,h as d,a as e}from"./index.js";import{c as n}from"./p-CBZ6wC3m.js";import{d as l}from"./p-Zx1hN-_O.js";import{d as h}from"./p-CIt4YhvL.js";const r=o(class extends s{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.tdsSelect=i(this,"tdsSelect",6),this.tdsFocus=i(this,"tdsFocus",6),this.tdsBlur=i(this,"tdsBlur",6),this.internalValue="",this.disabled=!1,this.selected=!1,this.multiselect=!1,this.size="lg",this.parentDropdown=null,this.label="",this.componentWillRender=()=>{var t,o,s;this.host.parentElement&&(this.parentDropdown="TDS-DROPDOWN"===(null===(t=this.host.parentElement)||void 0===t?void 0:t.tagName)?this.host.parentElement:this.host.getRootNode().host,this.parentDropdown&&(this.multiselect=null!==(o=this.parentDropdown.multiselect)&&void 0!==o&&o,this.size=this.parentDropdown.size||"lg"),this.label=(null===(s=this.host.textContent)||void 0===s?void 0:s.trim())||"")},this.handleSingleSelect=()=>{var t,o;this.disabled||(this.selected=!0,null===(t=this.parentDropdown)||void 0===t||t.appendValue(this.internalValue),null===(o=this.parentDropdown)||void 0===o||o.close(),this.tdsSelect.emit({value:this.internalValue,selected:this.selected}))},this.handleMultiselect=t=>{var o,s;this.disabled||(t.detail.checked?(null===(o=this.parentDropdown)||void 0===o||o.appendValue(this.internalValue),this.selected=!0,this.tdsSelect.emit({value:this.internalValue,selected:this.selected})):(null===(s=this.parentDropdown)||void 0===s||s.removeValue(this.internalValue),this.selected=!1,this.tdsSelect.emit({value:this.internalValue,selected:this.selected})),t.stopPropagation())},this.handleFocus=t=>{this.parentDropdown||this.tdsFocus.emit(t)},this.handleBlur=t=>{this.parentDropdown||this.tdsBlur.emit(t)}}async setSelected(t){this.selected=t}valueWatcher(t){this.internalValue=n(t)}componentWillLoad(){this.internalValue=n(this.value)}render(){return d(e,{key:"35542ea54d2ba455982e2470190711f75f88a999"},d("div",{key:"4236d5281cf4675586a7d8b16e80141b9689dad3",class:`dropdown-option\n ${this.size}\n ${this.selected?"selected":""}\n ${this.disabled?"disabled":""}\n `},this.multiselect?d("div",{class:"multiselect",onKeyDown:t=>{var o;"Escape"===t.key&&(null===(o=this.parentDropdown)||void 0===o||o.close())}},d("tds-checkbox",{onTdsChange:t=>{this.handleMultiselect(t)},onTdsBlur:t=>{t.stopPropagation()},disabled:this.disabled,checked:this.selected,tdsAriaLabel:this.tdsAriaLabel,class:{[this.size]:!0}},d("div",{slot:"label"},d("slot",null)))):d("button",{role:"option","aria-disabled":this.disabled,"aria-selected":this.selected,"aria-label":this.tdsAriaLabel,onClick:()=>{this.handleSingleSelect()},onFocus:t=>this.handleFocus(t),onBlur:t=>this.handleBlur(t),disabled:this.disabled,class:this.size},d("div",{class:"single-select"},d("slot",null),this.selected&&d("tds-icon",{name:"tick",size:"16px"})))))}static get delegatesFocus(){return!0}get host(){return this}static get watchers(){return{value:[{valueWatcher:0}]}}static get style(){return":host{box-sizing:border-box;display:block;background-color:var(--tds-dropdown-option-background)}:host *{box-sizing:border-box}:host .dropdown-option{color:var(--tds-dropdown-option-color);border-bottom:1px solid var(--tds-dropdown-option-border);font:var(--tds-detail-02);letter-spacing:var(--tds-detail-02-ls);overflow-wrap:anywhere;transition:background-color var(--tds-motion-duration-fast-02) var(--tds-motion-easing-scania)}:host .dropdown-option.selected{background-color:var(--tds-dropdown-option-background-selected)}:host .dropdown-option.disabled{color:var(--tds-dropdown-option-color-disabled)}:host .dropdown-option button:focus{outline:2px solid var(--tds-focus-outline-color);box-shadow:inset 0 0 0 3px var(--tds-white);outline-offset:-2px}:host .dropdown-option button{all:unset;width:100%}:host .dropdown-option button.lg{padding:19px 0 20px}:host .dropdown-option button.md{padding:15px 0 16px}:host .dropdown-option button.sm{padding:11px 0 12px}:host .dropdown-option button.xs{padding:7px 0 8px}:host .dropdown-option button .single-select{display:flex;align-items:center;justify-content:space-between;padding:0 16px}:host .dropdown-option .multiselect{width:100%;height:100%}:host .dropdown-option .multiselect tds-checkbox{display:flex;height:100%;width:100%}:host .dropdown-option .multiselect tds-checkbox.lg{padding:15px 16px 16px}:host .dropdown-option .multiselect tds-checkbox.md{padding:11px 16px 12px}:host .dropdown-option .multiselect tds-checkbox.sm{padding:7px 16px 8px}:host .dropdown-option .multiselect tds-checkbox.xs{padding:7px 16px 8px}:host .dropdown-option:hover{border-bottom-color:var(--tds-dropdown-option-border-hover);cursor:pointer}:host .dropdown-option:hover.disabled{border-bottom-color:var(--tds-dropdown-option-border-hover);cursor:not-allowed}:host([hidden]){display:none}"}},[273,"tds-dropdown-option",{value:[8],disabled:[4],tdsAriaLabel:[1,"tds-aria-label"],internalValue:[32],selected:[32],multiselect:[32],size:[32],setSelected:[64]},void 0,{value:[{valueWatcher:0}]}]);function a(){"undefined"!=typeof customElements&&["tds-dropdown-option","tds-checkbox","tds-icon"].forEach((o=>{switch(o){case"tds-dropdown-option":customElements.get(t(o))||customElements.define(t(o),r);break;case"tds-checkbox":customElements.get(t(o))||l();break;case"tds-icon":customElements.get(t(o))||h()}}))}a();export{r as T,a as d}