From ebc807a6a42699da8d232fe867db948ce5649952 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20S=C3=B8rensen?= Date: Wed, 27 Apr 2022 15:08:45 +0200 Subject: [PATCH] Add hass-quick-bar-trigger event to trigger quickbar from supervisor (#12467) --- hassio/src/hassio-main.ts | 10 +++++++++- src/state/quick-bar-mixin.ts | 15 +++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) 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(); }