From b07b604a20c44868717a1e938df00e0475c12003 Mon Sep 17 00:00:00 2001 From: Aidan Timson Date: Thu, 12 Feb 2026 08:33:48 +0000 Subject: [PATCH] Migrate zone config dialogs to wa (#29581) * Migrate config-zone dialog(s) to wa * Move cancel to new item, only delete if editing --- .../config/zone/dialog-home-zone-detail.ts | 94 ++++++------- src/panels/config/zone/dialog-zone-detail.ts | 125 +++++++++--------- 2 files changed, 105 insertions(+), 114 deletions(-) diff --git a/src/panels/config/zone/dialog-home-zone-detail.ts b/src/panels/config/zone/dialog-home-zone-detail.ts index 08e12f4e80..5c0aa87396 100644 --- a/src/panels/config/zone/dialog-home-zone-detail.ts +++ b/src/panels/config/zone/dialog-home-zone-detail.ts @@ -1,9 +1,10 @@ import type { CSSResultGroup } from "lit"; -import { css, html, LitElement, nothing } from "lit"; +import { html, LitElement, nothing } from "lit"; import { customElement, property, state } from "lit/decorators"; import memoizeOne from "memoize-one"; import { fireEvent } from "../../../common/dom/fire_event"; -import { createCloseHeading } from "../../../components/ha-dialog"; +import "../../../components/ha-dialog-footer"; +import "../../../components/ha-wa-dialog"; import "../../../components/ha-form/ha-form"; import "../../../components/ha-button"; import type { HomeZoneMutableParams } from "../../../data/zone"; @@ -29,6 +30,8 @@ class DialogHomeZoneDetail extends LitElement { @state() private _params?: HomeZoneDetailDialogParams; + @state() private _open = false; + @state() private _submitting = false; public showDialog(params: HomeZoneDetailDialogParams): void { @@ -40,9 +43,14 @@ class DialogHomeZoneDetail extends LitElement { longitude: this.hass.config.longitude, radius: this.hass.config.radius, }; + this._open = true; } public closeDialog(): void { + this._open = false; + } + + private _dialogClosed(): void { this._params = undefined; this._data = undefined; fireEvent(this, "dialog-closed", { dialog: this.localName }); @@ -58,41 +66,40 @@ class DialogHomeZoneDetail extends LitElement { const valid = !latInvalid && !lngInvalid; return html` - -
- -
- - ${this.hass!.localize("ui.common.cancel")} - - - ${this.hass!.localize("ui.common.save")} - -
+ + + + ${this.hass!.localize("ui.common.cancel")} + + + ${this.hass!.localize("ui.common.save")} + + + `; } @@ -130,20 +137,7 @@ class DialogHomeZoneDetail extends LitElement { } static get styles(): CSSResultGroup { - return [ - haStyleDialog, - css` - ha-dialog { - --mdc-dialog-min-width: min(600px, 95vw); - } - @media all and (max-width: 450px), all and (max-height: 500px) { - ha-dialog { - --mdc-dialog-min-width: 100vw; - --mdc-dialog-max-width: 100vw; - } - } - `, - ]; + return [haStyleDialog]; } } diff --git a/src/panels/config/zone/dialog-zone-detail.ts b/src/panels/config/zone/dialog-zone-detail.ts index 33a8779053..a8a5c0c50b 100644 --- a/src/panels/config/zone/dialog-zone-detail.ts +++ b/src/panels/config/zone/dialog-zone-detail.ts @@ -4,7 +4,8 @@ import { customElement, property, state } from "lit/decorators"; import memoizeOne from "memoize-one"; import { fireEvent } from "../../../common/dom/fire_event"; import { addDistanceToCoord } from "../../../common/location/add_distance_to_coord"; -import { createCloseHeading } from "../../../components/ha-dialog"; +import "../../../components/ha-dialog-footer"; +import "../../../components/ha-wa-dialog"; import "../../../components/ha-form/ha-form"; import "../../../components/ha-button"; import type { SchemaUnion } from "../../../components/ha-form/types"; @@ -24,6 +25,8 @@ class DialogZoneDetail extends LitElement { @state() private _params?: ZoneDetailDialogParams; + @state() private _open = false; + @state() private _submitting = false; public showDialog(params: ZoneDetailDialogParams): void { @@ -50,9 +53,14 @@ class DialogZoneDetail extends LitElement { radius: 100, }; } + this._open = true; } public closeDialog(): void { + this._open = false; + } + + private _dialogClosed(): void { this._params = undefined; this._data = undefined; fireEvent(this, "dialog-closed", { dialog: this.localName }); @@ -78,61 +86,59 @@ class DialogZoneDetail extends LitElement { !radiusInvalid; return html` - -
- -
- ${this._params.entry - ? html` - - ${this.hass!.localize("ui.panel.config.zone.detail.delete")} - - ` - : nothing} - - ${this.hass!.localize("ui.common.cancel")} - - + + ${this._params.entry - ? this.hass!.localize("ui.common.save") - : this.hass!.localize("ui.panel.config.zone.detail.create")} - -
+ ? html` + + ${this.hass!.localize("ui.panel.config.zone.detail.delete")} + + ` + : html` + + ${this.hass!.localize("ui.common.cancel")} + + `} + + ${this._params.entry + ? this.hass!.localize("ui.common.save") + : this.hass!.localize("ui.panel.config.zone.detail.create")} + + + `; } @@ -209,7 +215,7 @@ class DialogZoneDetail extends LitElement { this._submitting = true; try { if (await this._params!.removeEntry!()) { - this._params = undefined; + this.closeDialog(); } } finally { this._submitting = false; @@ -220,15 +226,6 @@ class DialogZoneDetail extends LitElement { return [ haStyleDialog, css` - ha-dialog { - --mdc-dialog-min-width: min(600px, 95vw); - } - @media all and (max-width: 450px), all and (max-height: 500px) { - ha-dialog { - --mdc-dialog-min-width: 100vw; - --mdc-dialog-max-width: 100vw; - } - } ha-form.passive { --zone-radius-color: var(--secondary-text-color); }