import { LitElement, html } from "lit"; import { customElement } from "lit/decorators.js"; import { NavNotificationsController } from "./NavNotificationsController"; @customElement("desktop-nav-bar") export class DesktopNavBar extends LitElement { private _notifications = new NavNotificationsController(this); createRenderRoot() { return this; } connectedCallback() { super.connectedCallback(); window.addEventListener("showPage", this._onShowPage); const current = window.currentPageId; if (current) { // Wait for render 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() { window.currentPageId ??= "page-play"; const currentPage = window.currentPageId; return html` `; } }