From 1a7164b466dc604075e8a4dd11a7697d56d2cd08 Mon Sep 17 00:00:00 2001 From: Zack Barett Date: Mon, 24 Jan 2022 10:36:49 -0600 Subject: [PATCH] Fix Logbook Icons, Card Editor Close/Cancel buttons, View Editor Dirty (#11153) --- src/panels/logbook/ha-logbook.ts | 6 +++++- .../editor/card-editor/hui-dialog-edit-card.ts | 6 ++---- .../editor/view-editor/hui-dialog-edit-view.ts | 16 ++++++++++++++-- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/panels/logbook/ha-logbook.ts b/src/panels/logbook/ha-logbook.ts index b5cb1a65f0..bafff2cd9c 100644 --- a/src/panels/logbook/ha-logbook.ts +++ b/src/panels/logbook/ha-logbook.ts @@ -15,6 +15,7 @@ import { formatTimeWithSeconds } from "../../common/datetime/format_time"; import { restoreScroll } from "../../common/decorators/restore-scroll"; import { fireEvent } from "../../common/dom/fire_event"; import { computeDomain } from "../../common/entity/compute_domain"; +import { domainIcon } from "../../common/entity/domain_icon"; import { computeRTL, emitRTLDirection } from "../../common/util/compute_rtl"; import "../../components/entity/state-badge"; import "../../components/ha-circular-progress"; @@ -150,7 +151,10 @@ class HaLogbook extends LitElement { html` ${this.hass!.localize("ui.common.cancel")} - ${this._cardConfig !== undefined + ${this._cardConfig !== undefined && this._dirty ? html` ` - : this._dirty - ? this.hass!.localize("ui.common.save") - : this.hass!.localize("ui.common.close")} + : this.hass!.localize("ui.common.save")} ` : ``} diff --git a/src/panels/lovelace/editor/view-editor/hui-dialog-edit-view.ts b/src/panels/lovelace/editor/view-editor/hui-dialog-edit-view.ts index b261b3c549..203a7d770f 100644 --- a/src/panels/lovelace/editor/view-editor/hui-dialog-edit-view.ts +++ b/src/panels/lovelace/editor/view-editor/hui-dialog-edit-view.ts @@ -36,6 +36,7 @@ import { PANEL_VIEW_LAYOUT, VIEWS_NO_BADGE_SUPPORT, } from "../../views/const"; +import { deepEqual } from "../../../../common/util/deep-equal"; @customElement("hui-dialog-edit-view") export class HuiDialogEditView extends LitElement { @@ -53,6 +54,8 @@ export class HuiDialogEditView extends LitElement { @state() private _curTab?: string; + @state() private _dirty = false; + private _curTabIndex = 0; get _type(): string { @@ -71,6 +74,7 @@ export class HuiDialogEditView extends LitElement { this._config = {}; this._badges = []; this._cards = []; + this._dirty = false; } else { const { cards, badges, ...viewConfig } = this._params.lovelace!.config.views[this._params.viewIndex]; @@ -85,6 +89,7 @@ export class HuiDialogEditView extends LitElement { this._params = undefined; this._config = {}; this._badges = []; + this._dirty = false; fireEvent(this, "dialog-closed", { dialog: this.localName }); } @@ -214,7 +219,7 @@ export class HuiDialogEditView extends LitElement { > ${this._saving @@ -316,8 +321,13 @@ export class HuiDialogEditView extends LitElement { } private _viewConfigChanged(ev: ViewEditEvent): void { - if (ev.detail && ev.detail.config) { + if ( + ev.detail && + ev.detail.config && + !deepEqual(this._config, ev.detail.config) + ) { this._config = ev.detail.config; + this._dirty = true; } } @@ -327,6 +337,7 @@ export class HuiDialogEditView extends LitElement { if (ev.detail.visible && this._config) { this._config.visible = ev.detail.visible; } + this._dirty = true; } private _badgesChanged(ev: EntitiesEditorEvent): void { @@ -334,6 +345,7 @@ export class HuiDialogEditView extends LitElement { return; } this._badges = processEditorEntities(ev.detail.entities); + this._dirty = true; } private _isConfigChanged(): boolean {