diff --git a/hassio/src/hassio-main.ts b/hassio/src/hassio-main.ts index 53df932748..d4a3a450e6 100644 --- a/hassio/src/hassio-main.ts +++ b/hassio/src/hassio-main.ts @@ -3,8 +3,8 @@ import { customElement, property } from "lit/decorators"; import { atLeastVersion } from "../../src/common/config/version"; import { applyThemesOnElement } from "../../src/common/dom/apply_themes_on_element"; import { fireEvent } from "../../src/common/dom/fire_event"; -import { isNavigationClick } from "../../src/common/dom/is-navigation-click"; import { mainWindow } from "../../src/common/dom/get_main_window"; +import { isNavigationClick } from "../../src/common/dom/is-navigation-click"; import { navigate } from "../../src/common/navigate"; import { HassioPanelInfo } from "../../src/data/hassio/supervisor"; import { Supervisor } from "../../src/data/supervisor/supervisor"; @@ -73,6 +73,14 @@ export class HassioMain extends SupervisorBaseElement { }); }); + // Forward keydown events to the main window for quickbar access + document.body.addEventListener("keydown", (ev) => { + // @ts-ignore + fireEvent(mainWindow, "hass-quick-bar-trigger", ev, { + bubbles: false, + }); + }); + makeDialogManager(this, this.shadowRoot!); } diff --git a/src/state/quick-bar-mixin.ts b/src/state/quick-bar-mixin.ts index d9067a48da..ec2738b78b 100644 --- a/src/state/quick-bar-mixin.ts +++ b/src/state/quick-bar-mixin.ts @@ -14,6 +14,7 @@ import { HassElement } from "./hass-element"; declare global { interface HASSDomEvents { "hass-quick-bar": QuickBarParams; + "hass-quick-bar-trigger": KeyboardEvent; "hass-enable-shortcuts": HomeAssistant["enableShortcuts"]; } } @@ -28,6 +29,20 @@ export default >(superClass: T) => storeState(this.hass!); }); + mainWindow.addEventListener("hass-quick-bar-trigger", (ev) => { + switch (ev.detail.key) { + case "e": + this._showQuickBar(ev.detail); + break; + case "c": + this._showQuickBar(ev.detail, true); + break; + case "m": + this._createMyLink(ev.detail); + break; + } + }); + this._registerShortcut(); }