Don't close 2 dialogs from 1 escape keydown (more-info) (#23702)

This commit is contained in:
karwosts 2025-01-16 07:44:50 -08:00 committed by GitHub
parent 21c2351137
commit 2105793355
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -97,6 +97,8 @@ export class MoreInfoDialog extends LitElement {
@state() private _infoEditMode = false;
@state() private _isEscapeEnabled = true;
@state() private _sensorNumericDeviceClasses?: string[] = [];
public showDialog(params: MoreInfoDialogParams) {
@ -132,6 +134,9 @@ export class MoreInfoDialog extends LitElement {
this._childView = undefined;
this._infoEditMode = false;
this._initialView = DEFAULT_VIEW;
this._isEscapeEnabled = true;
window.removeEventListener("dialog-closed", this._enableEscapeKeyClose);
window.removeEventListener("show-dialog", this._disableEscapeKeyClose);
fireEvent(this, "dialog-closed", { dialog: this.localName });
}
@ -290,6 +295,8 @@ export class MoreInfoDialog extends LitElement {
<ha-dialog
open
@closed=${this.closeDialog}
@opened=${this._handleOpened}
.escapeKeyAction=${this._isEscapeEnabled ? undefined : ""}
.heading=${title}
hideActions
flexContent
@ -540,6 +547,19 @@ export class MoreInfoDialog extends LitElement {
this.large = !this.large;
}
private _handleOpened() {
window.addEventListener("dialog-closed", this._enableEscapeKeyClose);
window.addEventListener("show-dialog", this._disableEscapeKeyClose);
}
private _enableEscapeKeyClose = () => {
this._isEscapeEnabled = true;
};
private _disableEscapeKeyClose = () => {
this._isEscapeEnabled = false;
};
static get styles() {
return [
haStyleDialog,