From 3d4b10caab9c64058e2f5c1052109eede923cbe3 Mon Sep 17 00:00:00 2001 From: Aidan Timson Date: Wed, 11 Feb 2026 10:40:33 +0000 Subject: [PATCH] Migrate cloud dialog to wa (#29563) --- .../cloud/account/dialog-cloud-tts-try.ts | 77 ++++++++++-------- .../dialog-cloud-already-connected.ts | 57 +++++++------ .../dialog-cloud-certificate.ts | 44 ++++++----- .../dialog-manage-cloudhook.ts | 79 +++++++++---------- 4 files changed, 139 insertions(+), 118 deletions(-) diff --git a/src/panels/config/cloud/account/dialog-cloud-tts-try.ts b/src/panels/config/cloud/account/dialog-cloud-tts-try.ts index 4fbcbd3de9..d5ef75ad36 100644 --- a/src/panels/config/cloud/account/dialog-cloud-tts-try.ts +++ b/src/panels/config/cloud/account/dialog-cloud-tts-try.ts @@ -8,7 +8,7 @@ import { computeStateDomain } from "../../../../common/entity/compute_state_doma import { computeStateName } from "../../../../common/entity/compute_state_name"; import { supportsFeature } from "../../../../common/entity/supports-feature"; import "../../../../components/ha-button"; -import { createCloseHeading } from "../../../../components/ha-dialog"; +import "../../../../components/ha-dialog-footer"; import "../../../../components/ha-select"; import type { HaSelectOption, @@ -16,6 +16,7 @@ import type { } from "../../../../components/ha-select"; import "../../../../components/ha-textarea"; import type { HaTextArea } from "../../../../components/ha-textarea"; +import "../../../../components/ha-wa-dialog"; import { showAutomationEditor } from "../../../../data/automation"; import { MediaPlayerEntityFeature } from "../../../../data/media-player"; import { convertTextToSpeech } from "../../../../data/tts"; @@ -30,6 +31,8 @@ export class DialogTryTts extends LitElement { @state() private _loadingExample = false; + @state() private _open = false; + @state() private _params?: TryTtsDialogParams; @query("#message") private _messageInput?: HaTextArea; @@ -50,9 +53,15 @@ export class DialogTryTts extends LitElement { public showDialog(params: TryTtsDialogParams) { this._params = params; + this._open = true; } public closeDialog() { + this._open = false; + } + + private _dialogClosed() { + this._open = false; this._params = undefined; fireEvent(this, "dialog-closed", { dialog: this.localName }); } @@ -82,20 +91,20 @@ export class DialogTryTts extends LitElement { }); return html` -
- - - ${this.hass.localize("ui.panel.config.cloud.account.tts.dialog.play")} - - - - ${this.hass.localize( - "ui.panel.config.cloud.account.tts.dialog.create_automation" - )} - -
+ + + + ${this.hass.localize( + "ui.panel.config.cloud.account.tts.dialog.create_automation" + )} + + + + ${this.hass.localize( + "ui.panel.config.cloud.account.tts.dialog.play" + )} + + + `; } @@ -223,9 +239,6 @@ export class DialogTryTts extends LitElement { return [ haStyleDialog, css` - ha-dialog { - --mdc-dialog-max-width: 500px; - } ha-textarea, ha-select { display: block; diff --git a/src/panels/config/cloud/dialog-cloud-already-connected/dialog-cloud-already-connected.ts b/src/panels/config/cloud/dialog-cloud-already-connected/dialog-cloud-already-connected.ts index 0295a9ffa2..16ab4a3aed 100644 --- a/src/panels/config/cloud/dialog-cloud-already-connected/dialog-cloud-already-connected.ts +++ b/src/panels/config/cloud/dialog-cloud-already-connected/dialog-cloud-already-connected.ts @@ -6,8 +6,9 @@ import { formatDateTime } from "../../../../common/datetime/format_date_time"; import { fireEvent } from "../../../../common/dom/fire_event"; import "../../../../components/ha-alert"; import "../../../../components/ha-button"; -import { createCloseHeading } from "../../../../components/ha-dialog"; +import "../../../../components/ha-dialog-footer"; import "../../../../components/ha-icon-button"; +import "../../../../components/ha-wa-dialog"; import { haStyleDialog } from "../../../../resources/styles"; import type { HomeAssistant } from "../../../../types"; import { obfuscateUrl } from "../../../../util/url"; @@ -19,13 +20,21 @@ class DialogCloudAlreadyConnected extends LitElement { @state() private _params?: CloudAlreadyConnectedDialogParams; + @state() private _open = false; + @state() private _obfuscateIp = true; public showDialog(params: CloudAlreadyConnectedDialogParams) { this._params = params; + this._open = true; } public closeDialog() { + this._open = false; + } + + private _dialogClosed() { + this._open = false; this._params?.closeDialog?.(); this._params = undefined; this._obfuscateIp = true; @@ -39,15 +48,14 @@ class DialogCloudAlreadyConnected extends LitElement { const { details } = this._params; return html` -
@@ -131,19 +139,21 @@ class DialogCloudAlreadyConnected extends LitElement { )} - - ${this.hass!.localize("ui.common.cancel")} - - - ${this.hass!.localize( - "ui.panel.config.cloud.dialog_already_connected.login_here" - )} - - + + + ${this.hass!.localize("ui.common.cancel")} + + + ${this.hass!.localize( + "ui.panel.config.cloud.dialog_already_connected.login_here" + )} + + + `; } @@ -160,9 +170,6 @@ class DialogCloudAlreadyConnected extends LitElement { return [ haStyleDialog, css` - ha-dialog { - --mdc-dialog-max-width: 535px; - } .intro b { display: block; margin-top: 16px; diff --git a/src/panels/config/cloud/dialog-cloud-certificate/dialog-cloud-certificate.ts b/src/panels/config/cloud/dialog-cloud-certificate/dialog-cloud-certificate.ts index 44f4629fe8..7e9c89867a 100644 --- a/src/panels/config/cloud/dialog-cloud-certificate/dialog-cloud-certificate.ts +++ b/src/panels/config/cloud/dialog-cloud-certificate/dialog-cloud-certificate.ts @@ -3,10 +3,11 @@ import { css, html, LitElement, nothing } from "lit"; import { customElement, state } from "lit/decorators"; import { formatDateTime } from "../../../../common/datetime/format_date_time"; import { fireEvent } from "../../../../common/dom/fire_event"; -import { createCloseHeading } from "../../../../components/ha-dialog"; +import "../../../../components/ha-dialog-footer"; import { haStyleDialog } from "../../../../resources/styles"; import type { HomeAssistant } from "../../../../types"; import "../../../../components/ha-button"; +import "../../../../components/ha-wa-dialog"; import type { CloudCertificateParams as CloudCertificateDialogParams } from "./show-dialog-cloud-certificate"; @customElement("dialog-cloud-certificate") @@ -15,11 +16,19 @@ class DialogCloudCertificate extends LitElement { @state() private _params?: CloudCertificateDialogParams; + @state() private _open = false; + public showDialog(params: CloudCertificateDialogParams) { this._params = params; + this._open = true; } public closeDialog() { + this._open = false; + } + + private _dialogClosed() { + this._open = false; this._params = undefined; fireEvent(this, "dialog-closed", { dialog: this.localName }); } @@ -31,16 +40,14 @@ class DialogCloudCertificate extends LitElement { const { certificateInfo } = this._params; return html` -

@@ -74,12 +81,14 @@ class DialogCloudCertificate extends LitElement {

- - ${this.hass!.localize( - "ui.panel.config.cloud.dialog_certificate.close" - )} - -
+ + + ${this.hass!.localize( + "ui.panel.config.cloud.dialog_certificate.close" + )} + + + `; } @@ -87,9 +96,6 @@ class DialogCloudCertificate extends LitElement { return [ haStyleDialog, css` - ha-dialog { - --mdc-dialog-max-width: 535px; - } .break-word { overflow-wrap: break-word; } diff --git a/src/panels/config/cloud/dialog-manage-cloudhook/dialog-manage-cloudhook.ts b/src/panels/config/cloud/dialog-manage-cloudhook/dialog-manage-cloudhook.ts index 180debd449..28fadacc5a 100644 --- a/src/panels/config/cloud/dialog-manage-cloudhook/dialog-manage-cloudhook.ts +++ b/src/panels/config/cloud/dialog-manage-cloudhook/dialog-manage-cloudhook.ts @@ -3,7 +3,7 @@ import type { CSSResultGroup } from "lit"; import { css, html, LitElement, nothing } from "lit"; import { customElement, state } from "lit/decorators"; import { fireEvent } from "../../../../common/dom/fire_event"; -import { createCloseHeading } from "../../../../components/ha-dialog"; +import "../../../../components/ha-dialog-footer"; import { showConfirmationDialog } from "../../../../dialogs/generic/show-dialog-box"; import { haStyle, haStyleDialog } from "../../../../resources/styles"; import type { HomeAssistant } from "../../../../types"; @@ -12,6 +12,7 @@ import type { WebhookDialogParams } from "./show-dialog-manage-cloudhook"; import "../../../../components/ha-button"; import "../../../../components/ha-copy-textfield"; +import "../../../../components/ha-wa-dialog"; @customElement("dialog-manage-cloudhook") export class DialogManageCloudhook extends LitElement { @@ -19,11 +20,19 @@ export class DialogManageCloudhook extends LitElement { @state() private _params?: WebhookDialogParams; + @state() private _open = false; + public showDialog(params: WebhookDialogParams) { this._params = params; + this._open = true; } public closeDialog() { + this._open = false; + } + + private _dialogClosed() { + this._open = false; this._params = undefined; fireEvent(this, "dialog-closed", { dialog: this.localName }); } @@ -41,17 +50,14 @@ export class DialogManageCloudhook extends LitElement { ) : documentationUrl(this.hass!, `/integrations/${webhook.domain}/`); return html` -

@@ -71,13 +77,6 @@ export class DialogManageCloudhook extends LitElement { )}. `} -
- - ${this.hass!.localize( - "ui.panel.config.cloud.dialog_cloudhook.view_documentation" - )} - -

- - ${this.hass!.localize( - "ui.panel.config.cloud.dialog_cloudhook.view_documentation" - )} - - - ${this.hass!.localize("ui.panel.config.cloud.dialog_cloudhook.close")} - -
+ + + ${this.hass!.localize( + "ui.panel.config.cloud.dialog_cloudhook.view_documentation" + )} + + + + ${this.hass!.localize( + "ui.panel.config.cloud.dialog_cloudhook.close" + )} + + + `; } @@ -129,19 +133,10 @@ export class DialogManageCloudhook extends LitElement { haStyle, haStyleDialog, css` - ha-dialog { - width: 650px; - } button.link { color: var(--primary-color); text-decoration: none; } - a { - text-decoration: none; - } - a ha-svg-icon { - --mdc-icon-size: 16px; - } p { margin-top: 0; margin-bottom: 16px;