From 36c5d70597951ba7ac327052611b76ba1e567fdf Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Fri, 31 Mar 2023 16:36:11 +0200 Subject: [PATCH] Add sidebar actions to external bus (#15999) --- src/external_app/external_app_entrypoint.ts | 16 ++++++++++++++++ src/external_app/external_messaging.ts | 16 +++++++++++++++- src/layouts/home-assistant-main.ts | 15 +++++++++++---- 3 files changed, 42 insertions(+), 5 deletions(-) diff --git a/src/external_app/external_app_entrypoint.ts b/src/external_app/external_app_entrypoint.ts index 0f059a11ae..e39ca5b566 100644 --- a/src/external_app/external_app_entrypoint.ts +++ b/src/external_app/external_app_entrypoint.ts @@ -44,6 +44,22 @@ const handleExternalMessage = ( success: true, result: null, }); + } else if (msg.command === "sidebar/toggle") { + fireEvent(hassMainEl, "hass-toggle-menu"); + bus.fireMessage({ + id: msg.id, + type: "result", + success: true, + result: null, + }); + } else if (msg.command === "sidebar/show") { + fireEvent(hassMainEl, "hass-toggle-menu", { open: true }); + bus.fireMessage({ + id: msg.id, + type: "result", + success: true, + result: null, + }); } else { return false; } diff --git a/src/external_app/external_messaging.ts b/src/external_app/external_messaging.ts index 87663cc9d5..3cc58ffcee 100644 --- a/src/external_app/external_messaging.ts +++ b/src/external_app/external_messaging.ts @@ -121,9 +121,23 @@ interface EMIncomingMessageShowNotifications { command: "notifications/show"; } +interface EMIncomingMessageToggleSidebar { + id: number; + type: "command"; + command: "sidebar/toggle"; +} + +interface EMIncomingMessageShowSidebar { + id: number; + type: "command"; + command: "sidebar/show"; +} + export type EMIncomingMessageCommands = | EMIncomingMessageRestart - | EMIncomingMessageShowNotifications; + | EMIncomingMessageShowNotifications + | EMIncomingMessageToggleSidebar + | EMIncomingMessageShowSidebar; type EMIncomingMessage = | EMMessageResultSuccess diff --git a/src/layouts/home-assistant-main.ts b/src/layouts/home-assistant-main.ts index 23e4617b36..32e9503956 100644 --- a/src/layouts/home-assistant-main.ts +++ b/src/layouts/home-assistant-main.ts @@ -19,12 +19,13 @@ import "./partial-panel-resolver"; declare global { // for fire event interface HASSDomEvents { - "hass-toggle-menu": undefined; + "hass-toggle-menu": undefined | { open?: boolean }; "hass-edit-sidebar": EditSideBarEvent; "hass-show-notifications": undefined; } interface HTMLElementEventMap { "hass-edit-sidebar": HASSDomEvent; + "hass-toggle-menu": HASSDomEvent; } } @@ -107,7 +108,7 @@ export class HomeAssistantMain extends LitElement { } ); - this.addEventListener("hass-toggle-menu", () => { + this.addEventListener("hass-toggle-menu", (ev) => { if (this._sidebarEditMode) { return; } @@ -118,10 +119,16 @@ export class HomeAssistantMain extends LitElement { return; } if (this._sidebarNarrow) { - this._drawerOpen = !this._drawerOpen; + this._drawerOpen = ev.detail?.open ?? !this._drawerOpen; } else { fireEvent(this, "hass-dock-sidebar", { - dock: this.hass.dockedSidebar === "auto" ? "docked" : "auto", + dock: ev.detail?.open + ? "docked" + : ev.detail?.open === false + ? "auto" + : this.hass.dockedSidebar === "auto" + ? "docked" + : "auto", }); } });