diff --git a/src/dialogs/dialog-mixin.ts b/src/dialogs/dialog-mixin.ts index 0f92d28e9c..57e59d6006 100644 --- a/src/dialogs/dialog-mixin.ts +++ b/src/dialogs/dialog-mixin.ts @@ -11,6 +11,8 @@ export const DialogMixin = < superClass: T ) => class extends superClass implements HassDialogNext

{ + public dialogNext = true as const; + declare public params?: P; private _closePromise?: Promise; diff --git a/src/dialogs/make-dialog-manager.ts b/src/dialogs/make-dialog-manager.ts index a7be30d801..d12b276320 100644 --- a/src/dialogs/make-dialog-manager.ts +++ b/src/dialogs/make-dialog-manager.ts @@ -26,6 +26,7 @@ export interface HassDialog extends HTMLElement { } export interface HassDialogNext extends HTMLElement { + dialogNext: true; params?: T; closeDialog?: (historyState?: any) => Promise | 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!);