import { LitElement, html } from "lit"; import { customElement } from "lit/decorators.js"; @customElement("mobile-nav-bar") export class MobileNavBar extends LitElement { createRenderRoot() { return this; } connectedCallback() { super.connectedCallback(); window.addEventListener("showPage", this._onShowPage); const current = (window as any).currentPageId; if (current) { this.updateComplete.then(() => { this._updateActiveState(current); }); } } disconnectedCallback() { super.disconnectedCallback(); window.removeEventListener("showPage", this._onShowPage); } private _onShowPage = (e: Event) => { const pageId = (e as CustomEvent).detail; this._updateActiveState(pageId); }; private _updateActiveState(pageId: string) { this.querySelectorAll(".nav-menu-item").forEach((el) => { if ((el as HTMLElement).dataset.page === pageId) { el.classList.add("active"); } else { el.classList.remove("active"); } }); } render() { return html`
`; } }