@puzzleitc/puzzle-shell
Version:
The standard design for Puzzle tools
65 lines (64 loc) • 2.28 kB
TypeScript
import { LitElement } from "lit";
import "./Backdrop";
/**
* Responsive menu component that is coupled with the topbar component
* (for mobile menu toggling and actions display on desktop) and the
* banner component (nav display on desktop) via events.
*
* @slot nav - Slot for application navigation that is visible in the
* banner on desktop and moves into the hamburger menu on mobile
* @slot items - Slot for menu content that is visible on the page on
* desktop (typically on the left of the content) and moves into the
* hamburger menu on mobile
* @slot actions - Slot for application-wide menu actions (like help,
* logout etc.) that are visible in the topbar on desktop and move
* into the hamburger menu on mobile
* @fires pzsh-menu-change
* @fires pzsh-menu-nav-change
*/
export declare class Menu extends LitElement {
open: boolean;
/**
* The selector for the scroll container which will be blocked from
* scrolling while menu is open.
*/
scrollContainerSelector: string;
available: boolean;
hasNav: boolean;
hasSubnav: boolean;
actionsObserver: MutationObserver;
static styles: import("lit").CSSResult[];
constructor();
connectedCallback(): void;
disconnectedCallback(): void;
toggleMenu(e: Event): void;
toggleBackdrop(): void;
handleEvent(e: Event): void;
handleMenuClose(e: Event): void;
handleMenuNavigation(e: Event): void;
/**
* Flatten all menu actions & dropdown items to an array
*/
getMenuItems(): ReadonlyArray<HTMLElement>;
handleSlotChange(e: Event): void;
handleActionsChange(): void;
updateMenuAvailablity(): void;
hasMenuItems(): boolean;
/**
* Emit an event for the pzsh-topbar component to show/hide the
* hamburger menu button or update its open/closed state.
*/
triggerMenuChange(available: boolean, open: boolean): void;
updateNavAvailability(): void;
/**
* Emit an event for the pzsh-banner component to preserve spacing
* for the absolute positioned nav.
*/
triggerNavChange(hasNav: boolean, hasSubnav: boolean): void;
render(): import("lit-html").TemplateResult<1>;
}
declare global {
interface HTMLElementTagNameMap {
"pzsh-menu": Menu;
}
}