mirror of
https://github.com/home-assistant/frontend.git
synced 2026-04-02 00:27:49 +01:00
Improve dialog open logic (#51328)
This commit is contained in:
@@ -11,6 +11,8 @@ export const DialogMixin = <
|
||||
superClass: T
|
||||
) =>
|
||||
class extends superClass implements HassDialogNext<P> {
|
||||
public dialogNext = true as const;
|
||||
|
||||
declare public params?: P;
|
||||
|
||||
private _closePromise?: Promise<boolean>;
|
||||
|
||||
@@ -26,6 +26,7 @@ export interface HassDialog<T = unknown> extends HTMLElement {
|
||||
}
|
||||
|
||||
export interface HassDialogNext<T = unknown> extends HTMLElement {
|
||||
dialogNext: true;
|
||||
params?: T;
|
||||
closeDialog?: (historyState?: any) => Promise<boolean> | boolean;
|
||||
}
|
||||
@@ -168,10 +169,12 @@ export const showDialog = async (
|
||||
dialogElement = await LOADED[dialogTag].element;
|
||||
}
|
||||
|
||||
if ("showDialog" in dialogElement!) {
|
||||
if ("dialogNext" in dialogElement! && dialogElement.dialogNext) {
|
||||
dialogElement!.params = dialogParams;
|
||||
} else if ("showDialog" in dialogElement!) {
|
||||
dialogElement.showDialog(dialogParams);
|
||||
} else {
|
||||
dialogElement!.params = dialogParams;
|
||||
throw new Error("Unknown dialog type loaded");
|
||||
}
|
||||
|
||||
(parentElement || element).shadowRoot!.appendChild(dialogElement!);
|
||||
|
||||
Reference in New Issue
Block a user