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