From 83ac45f8cf8c2371db038cfd29d556264b092b9a Mon Sep 17 00:00:00 2001 From: Nybkox Date: Thu, 21 Nov 2024 14:32:05 +0100 Subject: [PATCH 1/2] feat: invalidate commands on modal show/close --- packages/web/src/modals/modalTools.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/web/src/modals/modalTools.ts b/packages/web/src/modals/modalTools.ts index 83bdee52f..3c3f4a3d8 100644 --- a/packages/web/src/modals/modalTools.ts +++ b/packages/web/src/modals/modalTools.ts @@ -2,18 +2,22 @@ import { openedModals } from '../stores'; import { get } from 'svelte/store'; import uuidv1 from 'uuid/v1'; import _ from 'lodash'; +import invalidateCommands from '../commands/invalidateCommands'; export function showModal(component, props = {}) { const modalId = uuidv1(); openedModals.update(x => [...x, { component, modalId, props }]); + invalidateCommands(); } export function closeModal(modalId) { openedModals.update(x => x.filter(y => y.modalId != modalId)); + invalidateCommands(); } export function closeCurrentModal() { openedModals.update(modals => modals.slice(0, modals.length - 1)); + invalidateCommands(); } export function getActiveModalId() { From e1d759041d34b769f026cf274c29cbd4ba22ae78 Mon Sep 17 00:00:00 2001 From: Nybkox Date: Thu, 21 Nov 2024 14:32:18 +0100 Subject: [PATCH 2/2] 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';