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,
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;
}

View File

@ -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

View File

@ -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<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) {
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",
});
}
});