From e1d759041d34b769f026cf274c29cbd4ba22ae78 Mon Sep 17 00:00:00 2001 From: Nybkox Date: Thu, 21 Nov 2024 14:32:18 +0100 Subject: [PATCH] feat: prevent closing tab if any modal is open --- packages/web/src/stores.ts | 6 ++++++ packages/web/src/tabpanel/TabsPanel.svelte | 8 +++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/web/src/stores.ts b/packages/web/src/stores.ts index 5f9abcd6a..98d7ae912 100644 --- a/packages/web/src/stores.ts +++ b/packages/web/src/stores.ts @@ -323,3 +323,9 @@ appliedCurrentSchema.subscribe(value => { appliedCurrentSchemaValue = value; }); export const getAppliedCurrentSchema = () => appliedCurrentSchemaValue; + +let openedModalsValue = []; +openedModals.subscribe(value => { + openedModalsValue = value; +}); +export const getOpenedModals = () => openedModalsValue; diff --git a/packages/web/src/tabpanel/TabsPanel.svelte b/packages/web/src/tabpanel/TabsPanel.svelte index 2ab5a20be..d18e0c906 100644 --- a/packages/web/src/tabpanel/TabsPanel.svelte +++ b/packages/web/src/tabpanel/TabsPanel.svelte @@ -224,7 +224,12 @@ category: 'Tabs', name: 'Close tab', keyText: isElectronAvailable() ? 'CtrlOrCommand+W' : null, - testEnabled: () => getOpenedTabs().filter(x => !x.closedTime).length >= 1, + testEnabled: () => { + const hasAnyOtherTab = getOpenedTabs().filter(x => !x.closedTime).length >= 1; + const hasAnyModalOpen = getOpenedModals().length > 0; + + return hasAnyOtherTab && !hasConfirmModalOpen; + }, onClick: closeCurrentTab, }); @@ -283,6 +288,7 @@ draggingDbGroupTarget, draggingTab, draggingTabTarget, + getOpenedModals, } from '../stores'; import tabs from '../tabs'; import { setSelectedTab, switchCurrentDatabase } from '../utility/common';