@trendyol/baklava
Version:
Trendyol Baklava Design System
12 lines (11 loc) • 2.51 kB
JavaScript
import{a as d}from"./chunk-IRDH7CN2.js";import{a as l,b as n,f as r}from"./chunk-4OT5AMS5.js";import{c as i}from"./chunk-VO7C5OZC.js";var b=l`.tabs{background-color:var(--bl-color-neutral-full);border-bottom:var(--bl-size-4xs) solid var(--bl-color-neutral-lightest);display:flex;flex-direction:row}.tabs-list{overflow-x:auto;border-radius:var(--bl-border-radius-m) var(--bl-border-radius-m) 0 0}.panels{border-radius:0 0 var(--bl-border-radius-m) var(--bl-border-radius-m)}`,o=b;var s=class extends r{constructor(){super(...arguments);this._connectedTabs=[];this._connectedPanels=[];this._tabFocus=0}static get styles(){return[o]}get tabs(){return this._connectedTabs}get panels(){return this._connectedPanels}registerTab(e){let t=this._connectedTabs.filter(a=>!a.disabled).length===0&&!e.disabled;this._connectedTabs.push(e),(!e.disabled&&e.selected||t)&&(this.selectedTabName=e.name,this._tabFocus=this._connectedTabs.length-1)}unregisterTab(e){var t;this._connectedTabs.splice(this._connectedTabs.indexOf(e),1),e.selected&&((t=this._connectedTabs.find(a=>!a.disabled))==null||t.select())}registerTabPanel(e){e.hidden=e.tab!==this.selectedTabName,e.tabIndex=0,this._connectedPanels.push(e)}unregisterTabPanel(e){this._connectedTabs.splice(this._connectedPanels.indexOf(e),1)}get selectedTabName(){return this._selectedTabName}set selectedTabName(e){this._selectedTabName=e,this._connectedTabs.forEach(t=>{t.selected=e===t.name}),this._connectedPanels.forEach(t=>{t.hidden=t.tab!==this._selectedTabName})}_handleTabSelected(e){this.selectedTabName=e.detail,this._tabFocus=this._connectedTabs.findIndex(t=>t.name===e.detail)}_handleTabListKeyDown(e){if(e.key==="ArrowRight"||e.key==="ArrowLeft"){if(e.key==="ArrowRight")do this._tabFocus++,this._tabFocus>=this._connectedTabs.length&&(this._tabFocus=0);while(this._connectedTabs[this._tabFocus].disabled);else if(e.key==="ArrowLeft")do this._tabFocus--,this._tabFocus<0&&(this._tabFocus=this._connectedTabs.length-1);while(this._connectedTabs[this._tabFocus].disabled);this._connectedTabs[this._tabFocus].focus()}}render(){return n` <div class="container" -tab-selected="${this._handleTabSelected}">
<div role="tablist" =${this._handleTabListKeyDown} class="tabs-list">
<div class="tabs">
<slot name="tabs"></slot>
</div>
</div>
<div role="tabpanel" class="panels">
<slot></slot>
</div>
</div>`}};s=i([d("bl-tab-group")],s);export{s as a};
//# sourceMappingURL=chunk-RD3RUK2N.js.map