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!);