Add sidebar actions to external bus (#15999)

This commit is contained in:
Bram Kragten 2023-03-31 16:36:11 +02:00 committed by GitHub
parent b0b7998757
commit 36c5d70597
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 42 additions and 5 deletions

View File

@ -44,6 +44,22 @@ const handleExternalMessage = (
success: true, success: true,
result: null, 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 { } else {
return false; return false;
} }

View File

@ -121,9 +121,23 @@ interface EMIncomingMessageShowNotifications {
command: "notifications/show"; command: "notifications/show";
} }
interface EMIncomingMessageToggleSidebar {
id: number;
type: "command";
command: "sidebar/toggle";
}
interface EMIncomingMessageShowSidebar {
id: number;
type: "command";
command: "sidebar/show";
}
export type EMIncomingMessageCommands = export type EMIncomingMessageCommands =
| EMIncomingMessageRestart | EMIncomingMessageRestart
| EMIncomingMessageShowNotifications; | EMIncomingMessageShowNotifications
| EMIncomingMessageToggleSidebar
| EMIncomingMessageShowSidebar;
type EMIncomingMessage = type EMIncomingMessage =
| EMMessageResultSuccess | EMMessageResultSuccess

View File

@ -19,12 +19,13 @@ import "./partial-panel-resolver";
declare global { declare global {
// for fire event // for fire event
interface HASSDomEvents { interface HASSDomEvents {
"hass-toggle-menu": undefined; "hass-toggle-menu": undefined | { open?: boolean };
"hass-edit-sidebar": EditSideBarEvent; "hass-edit-sidebar": EditSideBarEvent;
"hass-show-notifications": undefined; "hass-show-notifications": undefined;
} }
interface HTMLElementEventMap { interface HTMLElementEventMap {
"hass-edit-sidebar": HASSDomEvent<EditSideBarEvent>; "hass-edit-sidebar": HASSDomEvent<EditSideBarEvent>;
"hass-toggle-menu": HASSDomEvent<HASSDomEvents["hass-toggle-menu"]>;
} }
} }
@ -107,7 +108,7 @@ export class HomeAssistantMain extends LitElement {
} }
); );
this.addEventListener("hass-toggle-menu", () => { this.addEventListener("hass-toggle-menu", (ev) => {
if (this._sidebarEditMode) { if (this._sidebarEditMode) {
return; return;
} }
@ -118,10 +119,16 @@ export class HomeAssistantMain extends LitElement {
return; return;
} }
if (this._sidebarNarrow) { if (this._sidebarNarrow) {
this._drawerOpen = !this._drawerOpen; this._drawerOpen = ev.detail?.open ?? !this._drawerOpen;
} else { } else {
fireEvent(this, "hass-dock-sidebar", { 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",
}); });
} }
}); });