import type { Corner, Menu, MenuCorner } from "@material/mwc-menu"; import type { TemplateResult } from "lit"; import { css, html, LitElement } from "lit"; import { customElement, property, query } from "lit/decorators"; import { mainWindow } from "../common/dom/get_main_window"; import { FOCUS_TARGET } from "../dialogs/make-dialog-manager"; import type { HaIconButton } from "./ha-icon-button"; import type { HaButton } from "./ha-button"; import "./ha-menu"; @customElement("ha-button-menu") export class HaButtonMenu extends LitElement { protected readonly [FOCUS_TARGET]; @property() public corner: Corner = "BOTTOM_START"; @property({ attribute: "menu-corner" }) public menuCorner: MenuCorner = "START"; @property({ type: Number }) public x: number | null = null; @property({ type: Number }) public y: number | null = null; @property({ type: Boolean }) public multi = false; @property({ type: Boolean }) public activatable = false; @property({ type: Boolean }) public disabled = false; @property({ type: Boolean }) public fixed = false; @property({ type: Boolean, attribute: "no-anchor" }) public noAnchor = false; @query("ha-menu", true) private _menu?: Menu; public get items() { return this._menu?.items; } public get selected() { return this._menu?.selected; } public override focus() { if (this._menu?.open) { this._menu.focusItemAtIndex(0); } else { this._triggerButton?.focus(); } } protected render(): TemplateResult { return html`