From 351c3034d3f159d03920613469c7bf46df7b9676 Mon Sep 17 00:00:00 2001 From: Timo Schneller Date: Thu, 5 Jan 2023 16:12:05 +0100 Subject: [PATCH] fix: cleanup shownPanels stream when new model supplied, closes #55 --- .../src/lib/stacked-panels.service.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/projects/stacked-panels/src/lib/stacked-panels.service.ts b/projects/stacked-panels/src/lib/stacked-panels.service.ts index 5cd32b0..41365e3 100644 --- a/projects/stacked-panels/src/lib/stacked-panels.service.ts +++ b/projects/stacked-panels/src/lib/stacked-panels.service.ts @@ -32,7 +32,7 @@ export class StackedPanelsService { this._subPanelsMap.clear(); this._panelDataMap.clear(); this._panels$.next([rootPanel]); - this._showPanel(rootPanel); + this._showPanel(rootPanel, undefined, true); } private _hidePanelById(panelId: string): void { @@ -73,7 +73,16 @@ export class StackedPanelsService { return true; } - private _showPanel(panel: Panel, context?: C): void { + private _showPanel(panel: Panel, context?: C, cleanupShownPanels: boolean = false): void { + this._addSubPanelsAndAddDataToDataMap(panel, context); + if (cleanupShownPanels) { + this._shownPanels$.next([panel]); + } else { + this._shownPanels$.next([...this._shownPanels, panel]); + } + } + + private _addSubPanelsAndAddDataToDataMap(panel: Panel, context?: C): void { if (panel.subPanels && panel.subPanels.length > 0) { this._addPanels(panel.id, panel.subPanels); } @@ -95,7 +104,6 @@ export class StackedPanelsService { } this._panelDataMap.set(panel.id, data); } - this._shownPanels$.next([...this._shownPanels, panel]); } public getController(panelId: string): StackedPanelsController {