import { LitElement, html } from "lit"; import { customElement, state } from "lit/decorators.js"; import { getGamesPlayed } from "../Utils"; const HELP_SEEN_KEY = "helpSeen"; @customElement("desktop-nav-bar") export class DesktopNavBar extends LitElement { @state() private _helpSeen = localStorage.getItem(HELP_SEEN_KEY) === "true"; createRenderRoot() { return this; } connectedCallback() { super.connectedCallback(); window.addEventListener("showPage", this._onShowPage); const current = (window as any).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"); } }); } private showHelpDot(): boolean { return getGamesPlayed() < 10 && !this._helpSeen; } private onHelpClick = () => { localStorage.setItem(HELP_SEEN_KEY, "true"); this._helpSeen = true; }; render() { return html` `; } }