From 0ddc82601ae5b70c7f7136b4184fc79d3fab93b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Lov=C3=A9n?= Date: Tue, 15 Jan 2019 18:30:33 +0100 Subject: [PATCH] Fix ll-rebuild only keeps the card that should be deleted (#2481) * Fix ll-rebuild only keeps the card that should be deleted * Do the same thing for stack cards. (Untested. Leeeeroyyyyy Jenkins) * Copy then replace instead of mutating * Use map --- src/panels/lovelace/cards/hui-stack-card.ts | 12 +++++------- src/panels/lovelace/hui-view.ts | 10 ++++++---- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/panels/lovelace/cards/hui-stack-card.ts b/src/panels/lovelace/cards/hui-stack-card.ts index 4a08f32294..c3fdd18ba6 100644 --- a/src/panels/lovelace/cards/hui-stack-card.ts +++ b/src/panels/lovelace/cards/hui-stack-card.ts @@ -75,15 +75,13 @@ export abstract class HuiStackCard extends LitElement implements LovelaceCard { } private _rebuildCard( - element: LovelaceCard, + cardElToReplace: LovelaceCard, config: LovelaceCardConfig ): void { - const newCard = this._createCardElement(config); - element.replaceWith(newCard); - this._cards = this._cards!.splice( - this._cards!.indexOf(element), - 1, - newCard + const newCardEl = this._createCardElement(config); + cardElToReplace.parentElement!.replaceChild(newCardEl, cardElToReplace); + this._cards = this._cards!.map((curCardEl) => + curCardEl === cardElToReplace ? newCardEl : curCardEl ); } } diff --git a/src/panels/lovelace/hui-view.ts b/src/panels/lovelace/hui-view.ts index b9caadf627..11be407f7a 100644 --- a/src/panels/lovelace/hui-view.ts +++ b/src/panels/lovelace/hui-view.ts @@ -306,12 +306,14 @@ export class HUIView extends hassLocalizeLitMixin(LitElement) { } private _rebuildCard( - element: LovelaceCard, + cardElToReplace: LovelaceCard, config: LovelaceCardConfig ): void { - const newCard = this._createCardElement(config); - element.parentElement!.replaceChild(newCard, element); - this._cards = this._cards.splice(this._cards.indexOf(element), 1, newCard); + const newCardEl = this._createCardElement(config); + cardElToReplace.parentElement!.replaceChild(newCardEl, cardElToReplace); + this._cards = this._cards!.map((curCardEl) => + curCardEl === cardElToReplace ? newCardEl : curCardEl + ); } }