From b55e1c998814137808dfcf7085fbc7581d3f9e85 Mon Sep 17 00:00:00 2001
From: Wendelin <12148533+wendevlin@users.noreply.github.com>
Date: Wed, 1 Apr 2026 10:40:40 +0200
Subject: [PATCH] Improve dialog open logic (#51328)
---
src/dialogs/dialog-mixin.ts | 2 ++
src/dialogs/make-dialog-manager.ts | 7 +++++--
2 files changed, 7 insertions(+), 2 deletions(-)
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!);