@scania/tegel
Version:
Tegel Design System
1 lines • 3.5 kB
JavaScript
import{r as t,h as r,H as e,g as s}from"./p-2049fab2.js";import{g as a}from"./p-11648030.js";import{i as o}from"./p-0bd4c19c.js";import"./p-3fe9cbbf.js";const i=class{constructor(r){t(this,r),this.uuid=a(),this.open=!1,this.buttonEl=void 0,this.hasListTypeMenu=!1,this.tdsAriaLabel=void 0}onAnyClick(t){!t.composedPath().includes(this.host)&&(this.open=!1)}handleKeyDown(t){"Escape"===t.key&&this.open&&(this.open=!1,this.buttonEl.shadowRoot.querySelector("button").focus())}componentDidLoad(){const t=!!this.host.querySelector("tds-header-launcher-list");this.hasListTypeMenu=t}toggleLauncher(){this.open=!this.open,this.open&&requestAnimationFrame((()=>{const t="a, [tabindex='0']",r=this.host.shadowRoot.querySelector(t)||this.host.querySelector(t);r instanceof HTMLElement&&r.focus()}))}connectedCallback(){this.tdsAriaLabel||console.warn("Tegel Header Launcher component: missing tdsAriaLabel prop")}render(){this.ariaAttributes=Object.assign(Object.assign({},this.ariaAttributes),o(this.host,["role"]));const t=Object.assign(Object.assign({},this.ariaAttributes),{"aria-expanded":`${this.open}`,"aria-controls":`launcher-${this.uuid}`,class:"button",active:this.open,onClick:()=>{this.toggleLauncher()},ref:t=>{this.buttonEl=t}});return r(e,{key:"a1c8cce3e26d57b654700893add3e5e1554e23d0"},r("div",{key:"bfc4e2f77d142f4913a4509b0c16b7503c942bf3",class:{wrapper:!0,"state-open":this.open,"state-list-type-menu":this.hasListTypeMenu}},r("tds-header-launcher-button",Object.assign({key:"c30e8b26d73a8d3a5aa5bf476226419b70c26061"},t,{"tds-aria-label":this.tdsAriaLabel})),this.buttonEl&&r("tds-popover-canvas",{key:"10e13ac7fb52c3123dd51d1f91754262feb56134",id:`tds-launcher-${this.uuid}`,class:"menu",referenceEl:this.buttonEl,placement:"bottom-start",show:this.open,offsetDistance:0,modifiers:[{name:"flip",options:{fallbackPlacements:[]}}]},this.open?r("slot",null):null)))}get host(){return s(this)}};i.style=":host{--tds-scrollbar-width-standard:thin;--tds-scrollbar-width:10px;--tds-scrollbar-height:10px;--tds-scrollbar-thumb-border-width:3px;--tds-scrollbar-thumb-border-hover-width:2px}body{scrollbar-width:thin}:host .wrapper{height:var(--tds-header-height);position:relative}:host .wrapper .menu{flex-direction:column;overflow-y:auto;max-height:calc(100vh - var(--tds-header-height));box-shadow:var(--tds-nav-dropdown-menu-box);background-color:var(--tds-header-app-launcher-menu-background);border-radius:0}:host .wrapper .menu:hover::-webkit-scrollbar-thumb{border:var(--tds-scrollbar-thumb-border-hover-width) solid transparent;background:var(--tds-scrollbar-hover-thumb-color);background-clip:padding-box}:host .wrapper .menu::-webkit-scrollbar{width:var(--tds-scrollbar-width)}:host .wrapper .menu::-webkit-scrollbar-track{background:var(--tds-scrollbar-track-color)}:host .wrapper .menu::-webkit-scrollbar-thumb{border-radius:40px;background:var(--tds-scrollbar-thumb-color);border:var(--tds-scrollbar-thumb-border-width) solid transparent;background-clip:padding-box}:host .wrapper .menu::-webkit-scrollbar-button{height:0;width:0}@supports not selector(::-webkit-scrollbar){:host .wrapper .menu{scrollbar-color:var(--tds-scrollbar-thumb-color) var(--tds-scrollbar-track-color);scrollbar-width:var(--tds-scrollbar-width-standard)}}@media all and (max-width: 384px){:host .wrapper .menu{width:100vw}}:host .wrapper.state-list-type-menu .menu{height:calc(100vh - var(--tds-header-height))}:host .wrapper.state-open .button{position:relative;z-index:901}";export{i as tds_header_launcher}