UNPKG

@ionic/core

Version:
4 lines • 3.58 kB
/*! * (C) Ionic http://ionicframework.com - MIT License */ import{d as t,H as e,i,h as s,f as o,t as n,c as a}from"./p-Ct2aBEue.js";const h=t(class extends e{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.ionNavWillLoad=i(this,"ionNavWillLoad",7),this.ionTabsWillChange=i(this,"ionTabsWillChange",3),this.ionTabsDidChange=i(this,"ionTabsDidChange",3),this.transitioning=!1,this.useRouter=!1,this.onTabClicked=t=>{const{href:e,tab:i}=t.detail;if(this.useRouter&&void 0!==e){const t=document.querySelector("ion-router");t&&t.push(e)}else this.select(i)}}async componentWillLoad(){if(this.useRouter||(this.useRouter=!(!this.el.querySelector("ion-router-outlet")&&!document.querySelector("ion-router")||this.el.closest("[no-router]"))),!this.useRouter){const t=this.tabs;t.length>0&&await this.select(t[0])}this.ionNavWillLoad.emit()}componentDidLoad(){this.updateTabBar()}componentDidUpdate(){this.updateTabBar()}updateTabBar(){const t=this.el.querySelector("ion-tab-bar");if(!t)return;const e=this.selectedTab?this.selectedTab.tab:void 0;void 0!==e&&t.selectedTab!==e&&(t.selectedTab=e)}async select(t){const e=r(this.tabs,t);return!!this.shouldSwitch(e)&&(await this.setActive(e),await this.notifyRouter(),this.tabSwitch(),!0)}async getTab(t){return r(this.tabs,t)}getSelected(){return Promise.resolve(this.selectedTab?this.selectedTab.tab:void 0)}async setRouteId(t){const e=r(this.tabs,t);return this.shouldSwitch(e)?(await this.setActive(e),{changed:!0,element:this.selectedTab,markVisible:()=>this.tabSwitch()}):{changed:!1,element:this.selectedTab}}async getRouteId(){const t=this.selectedTab?.tab;return void 0!==t?{id:t,element:this.selectedTab}:void 0}setActive(t){return this.transitioning?Promise.reject("transitioning already happening"):(this.transitioning=!0,this.leavingTab=this.selectedTab,this.selectedTab=t,this.ionTabsWillChange.emit({tab:t.tab}),t.active=!0,this.updateTabBar(),Promise.resolve())}tabSwitch(){const t=this.selectedTab,e=this.leavingTab;this.leavingTab=void 0,this.transitioning=!1,t&&e!==t&&(e&&(e.active=!1),this.ionTabsDidChange.emit({tab:t.tab}))}notifyRouter(){if(this.useRouter){const t=document.querySelector("ion-router");if(t)return t.navChanged("forward")}return Promise.resolve(!1)}shouldSwitch(t){return void 0!==t&&t!==this.selectedTab&&!this.transitioning}get tabs(){return Array.from(this.el.querySelectorAll("ion-tab"))}render(){return s(o,{key:"7b8c6455e0673e343d0c759ed85e0d9970de3bb8",onIonTabButtonClick:this.onTabClicked},s("slot",{key:"7d0d840ae03312ca22bcb694ffca738d6648218e",name:"top"}),s("div",{key:"f336d903800af34af0d36adfc94223b940111e6a",class:"tabs-inner"},s("slot",{key:"14656154959a24ae176eff20f6463043180d2eae"})),s("slot",{key:"2be4d114f058d24b0e70fb12cfb0eccd3d6e6a74",name:"bottom"}))}get el(){return this}static get style(){return":host{left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;width:100%;height:100%;contain:layout size style;z-index:0}.tabs-inner{position:relative;-ms-flex:1;flex:1;contain:layout size style}"}},[257,"ion-tabs",{useRouter:[1028,"use-router"],selectedTab:[32],select:[64],getTab:[64],getSelected:[64],setRouteId:[64],getRouteId:[64]}]),r=(t,e)=>{const i="string"==typeof e?t.find((t=>t.tab===e)):e;return i||a(`[ion-tabs] - Tab with id: "${i}" does not exist`),i},d=h,c=function(){"undefined"!=typeof customElements&&["ion-tabs"].forEach((t=>{"ion-tabs"===t&&(customElements.get(n(t))||customElements.define(n(t),h))}))};export{d as IonTabs,c as defineCustomElement}