From 1ffa87ea23a5d954bb93e31a2201cb2495037018 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Fri, 18 Sep 2020 17:28:19 +0200 Subject: [PATCH] Fix duplicate items in sortables (#7053) --- src/components/ha-sidebar.ts | 12 ++++++++++-- src/panels/lovelace/components/hui-entity-editor.ts | 4 ++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/components/ha-sidebar.ts b/src/components/ha-sidebar.ts index 275c4d5d32..12ac252e73 100644 --- a/src/components/ha-sidebar.ts +++ b/src/components/ha-sidebar.ts @@ -539,17 +539,25 @@ class HaSidebar extends LitElement { this._hiddenPanels = [...this._hiddenPanels, panel]; this._renderEmptySortable = true; await this.updateComplete; + const container = this.shadowRoot!.getElementById("sortable")!; + while (container.lastElementChild) { + container.removeChild(container.lastElementChild); + } this._renderEmptySortable = false; } private async _unhidePanel(ev: Event) { ev.preventDefault(); const panel = (ev.currentTarget as any).panel; - this._renderEmptySortable = true; - await this.updateComplete; this._hiddenPanels = this._hiddenPanels.filter( (hidden) => hidden !== panel ); + this._renderEmptySortable = true; + await this.updateComplete; + const container = this.shadowRoot!.getElementById("sortable")!; + while (container.lastElementChild) { + container.removeChild(container.lastElementChild); + } this._renderEmptySortable = false; } diff --git a/src/panels/lovelace/components/hui-entity-editor.ts b/src/panels/lovelace/components/hui-entity-editor.ts index ddde4ef768..73c148d20e 100644 --- a/src/panels/lovelace/components/hui-entity-editor.ts +++ b/src/panels/lovelace/components/hui-entity-editor.ts @@ -123,6 +123,10 @@ export class HuiEntityEditor extends LitElement { private async _handleEntitiesChanged() { this._renderEmptySortable = true; await this.updateComplete; + const container = this.shadowRoot!.querySelector(".entities")!; + while (container.lastElementChild) { + container.removeChild(container.lastElementChild); + } this._renderEmptySortable = false; }