diff --git a/web/src/elements/Tabs.ts b/web/src/elements/Tabs.ts index 74440897f..73eeeb38b 100644 --- a/web/src/elements/Tabs.ts +++ b/web/src/elements/Tabs.ts @@ -18,9 +18,17 @@ export class Tabs extends AKElement { @property() currentPage?: string; - @property({ type: Boolean }) + @property({ type: Boolean, reflect: true }) vertical = false; + @property({ type: Boolean }) + autoVertical = false; + + @property({ attribute: false }) + verticalEnabled = (): boolean => { + return this.vertical; + }; + static get styles(): CSSResult[] { return [ PFGlobal, @@ -46,12 +54,16 @@ export class Tabs extends AKElement { } observer: MutationObserver; + resizer: ResizeObserver; constructor() { super(); this.observer = new MutationObserver(() => { this.requestUpdate(); }); + this.resizer = new ResizeObserver(() => { + this.vertical = this.verticalEnabled(); + }); } connectedCallback(): void { @@ -61,10 +73,12 @@ export class Tabs extends AKElement { childList: true, subtree: true, }); + this.resizer.observe(document.body); } disconnectedCallback(): void { this.observer.disconnect(); + this.resizer.disconnect(); super.disconnectedCallback(); } @@ -106,7 +120,7 @@ export class Tabs extends AKElement { const wantedPage = pages[0].attributes.getNamedItem("slot")?.value; this.onClick(wantedPage); } - return html`