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 + ); } }