mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-20 13:36:02 +00:00
Merge pull request #942 from dbgate/feature-prevent-spawning-same-modal
feat: prevent spawning the same modal if one instance is opened
This commit is contained in:
@@ -2,18 +2,22 @@ import { openedModals } from '../stores';
|
|||||||
import { get } from 'svelte/store';
|
import { get } from 'svelte/store';
|
||||||
import uuidv1 from 'uuid/v1';
|
import uuidv1 from 'uuid/v1';
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
|
import invalidateCommands from '../commands/invalidateCommands';
|
||||||
|
|
||||||
export function showModal(component, props = {}) {
|
export function showModal(component, props = {}) {
|
||||||
const modalId = uuidv1();
|
const modalId = uuidv1();
|
||||||
openedModals.update(x => [...x, { component, modalId, props }]);
|
openedModals.update(x => [...x, { component, modalId, props }]);
|
||||||
|
invalidateCommands();
|
||||||
}
|
}
|
||||||
|
|
||||||
export function closeModal(modalId) {
|
export function closeModal(modalId) {
|
||||||
openedModals.update(x => x.filter(y => y.modalId != modalId));
|
openedModals.update(x => x.filter(y => y.modalId != modalId));
|
||||||
|
invalidateCommands();
|
||||||
}
|
}
|
||||||
|
|
||||||
export function closeCurrentModal() {
|
export function closeCurrentModal() {
|
||||||
openedModals.update(modals => modals.slice(0, modals.length - 1));
|
openedModals.update(modals => modals.slice(0, modals.length - 1));
|
||||||
|
invalidateCommands();
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getActiveModalId() {
|
export function getActiveModalId() {
|
||||||
|
|||||||
@@ -323,3 +323,9 @@ appliedCurrentSchema.subscribe(value => {
|
|||||||
appliedCurrentSchemaValue = value;
|
appliedCurrentSchemaValue = value;
|
||||||
});
|
});
|
||||||
export const getAppliedCurrentSchema = () => appliedCurrentSchemaValue;
|
export const getAppliedCurrentSchema = () => appliedCurrentSchemaValue;
|
||||||
|
|
||||||
|
let openedModalsValue = [];
|
||||||
|
openedModals.subscribe(value => {
|
||||||
|
openedModalsValue = value;
|
||||||
|
});
|
||||||
|
export const getOpenedModals = () => openedModalsValue;
|
||||||
|
|||||||
@@ -224,7 +224,12 @@
|
|||||||
category: 'Tabs',
|
category: 'Tabs',
|
||||||
name: 'Close tab',
|
name: 'Close tab',
|
||||||
keyText: isElectronAvailable() ? 'CtrlOrCommand+W' : null,
|
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,
|
onClick: closeCurrentTab,
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -283,6 +288,7 @@
|
|||||||
draggingDbGroupTarget,
|
draggingDbGroupTarget,
|
||||||
draggingTab,
|
draggingTab,
|
||||||
draggingTabTarget,
|
draggingTabTarget,
|
||||||
|
getOpenedModals,
|
||||||
} from '../stores';
|
} from '../stores';
|
||||||
import tabs from '../tabs';
|
import tabs from '../tabs';
|
||||||
import { setSelectedTab, switchCurrentDatabase } from '../utility/common';
|
import { setSelectedTab, switchCurrentDatabase } from '../utility/common';
|
||||||
|
|||||||
Reference in New Issue
Block a user