From a6a0d615c58e6a70737654f6c6c75111a23bfb7e Mon Sep 17 00:00:00 2001 From: Mo Date: Mon, 5 Dec 2022 06:55:39 -0600 Subject: [PATCH] fix: fixes issue where toggled-off panes would reappear after making selection --- .../PaneController/PaneController.ts | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/packages/web/src/javascripts/Controllers/PaneController/PaneController.ts b/packages/web/src/javascripts/Controllers/PaneController/PaneController.ts index 40638d242..a2a527e1f 100644 --- a/packages/web/src/javascripts/Controllers/PaneController/PaneController.ts +++ b/packages/web/src/javascripts/Controllers/PaneController/PaneController.ts @@ -32,6 +32,9 @@ export class PaneController extends AbstractViewController { currentItemsPanelWidth = 0 focusModeEnabled = false + listPaneExplicitelyCollapsed = false + navigationPaneExplicitelyCollapsed = false + constructor(application: WebApplication, eventBus: InternalEventBus) { super(application, eventBus) @@ -150,7 +153,17 @@ export class PaneController extends AbstractViewController { setPaneLayout = (layout: PaneLayout) => { log(LoggingDomain.Panes, 'Set pane layout', layout) - this.replacePanes(panesForLayout(layout, this.application)) + const panes = panesForLayout(layout, this.application) + + if (panes.includes(AppPaneId.Items) && this.listPaneExplicitelyCollapsed) { + removeFromArray(panes, AppPaneId.Items) + } + + if (panes.includes(AppPaneId.Navigation) && this.navigationPaneExplicitelyCollapsed) { + removeFromArray(panes, AppPaneId.Navigation) + } + + this.replacePanes(panes) } replacePanes = (panes: AppPaneId[]) => { @@ -211,20 +224,24 @@ export class PaneController extends AbstractViewController { toggleListPane = () => { if (this.panes.includes(AppPaneId.Items)) { this.removePane(AppPaneId.Items) + this.listPaneExplicitelyCollapsed = true } else { if (this.panes.includes(AppPaneId.Navigation)) { this.insertPaneAtIndex(AppPaneId.Items, 1) } else { this.insertPaneAtIndex(AppPaneId.Items, 0) } + this.listPaneExplicitelyCollapsed = false } } toggleNavigationPane = () => { if (this.panes.includes(AppPaneId.Navigation)) { this.removePane(AppPaneId.Navigation) + this.navigationPaneExplicitelyCollapsed = true } else { this.insertPaneAtIndex(AppPaneId.Navigation, 0) + this.navigationPaneExplicitelyCollapsed = false } }