mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-20 12:26:01 +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 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() {
|
||||
|
||||
@@ -323,3 +323,9 @@ appliedCurrentSchema.subscribe(value => {
|
||||
appliedCurrentSchemaValue = value;
|
||||
});
|
||||
export const getAppliedCurrentSchema = () => appliedCurrentSchemaValue;
|
||||
|
||||
let openedModalsValue = [];
|
||||
openedModals.subscribe(value => {
|
||||
openedModalsValue = value;
|
||||
});
|
||||
export const getOpenedModals = () => openedModalsValue;
|
||||
|
||||
@@ -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';
|
||||
|
||||
Reference in New Issue
Block a user