mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-19 20:06:00 +00:00
close tab with confirmation on double ctrl+W
This commit is contained in:
@@ -2,15 +2,10 @@
|
||||
import { commandsCustomized, visibleCommandPalette } from '../stores';
|
||||
import { get } from 'svelte/store';
|
||||
import { runGroupCommand } from './runCommand';
|
||||
import { isMac, resolveKeyText } from '../utility/common';
|
||||
import { getKeyTextFromEvent, isMac, resolveKeyText } from '../utility/common';
|
||||
|
||||
export function handleCommandKeyDown(e) {
|
||||
let keyText = '';
|
||||
if (e.ctrlKey) keyText += 'Ctrl+';
|
||||
if (e.metaKey) keyText += 'Command+';
|
||||
if (e.shiftKey) keyText += 'Shift+';
|
||||
if (e.altKey) keyText += 'Alt+';
|
||||
keyText += e.key;
|
||||
const keyText = getKeyTextFromEvent(e);
|
||||
|
||||
// console.log('keyText', keyText);
|
||||
|
||||
|
||||
@@ -1,15 +1,28 @@
|
||||
<script lang="ts">
|
||||
import { get } from 'svelte/store';
|
||||
import FormStyledButton from '../buttons/FormStyledButton.svelte';
|
||||
|
||||
import FormProvider from '../forms/FormProvider.svelte';
|
||||
import FormSubmit from '../forms/FormSubmit.svelte';
|
||||
import FontIcon from '../icons/FontIcon.svelte';
|
||||
import { getKeyTextFromEvent, resolveKeyText } from '../utility/common';
|
||||
import ModalBase from './ModalBase.svelte';
|
||||
import { closeCurrentModal } from './modalTools';
|
||||
import { commandsCustomized } from '../stores';
|
||||
|
||||
export let tabs;
|
||||
export let onConfirm;
|
||||
export let onCancel;
|
||||
|
||||
function handleKeyDown(e) {
|
||||
const commandsValue = get(commandsCustomized);
|
||||
|
||||
const command = commandsValue['tabs.closeTab'];
|
||||
if (resolveKeyText(command.keyText).toLowerCase() == getKeyTextFromEvent(e).toLowerCase()) {
|
||||
closeCurrentModal();
|
||||
onConfirm();
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<FormProvider>
|
||||
@@ -45,3 +58,5 @@
|
||||
</svelte:fragment>
|
||||
</ModalBase>
|
||||
</FormProvider>
|
||||
|
||||
<svelte:window on:keydown={handleKeyDown} />
|
||||
|
||||
@@ -261,7 +261,7 @@
|
||||
id: 'tabs.closeTab',
|
||||
category: 'Tabs',
|
||||
name: _t('command.tabs.closeTab', { defaultMessage: 'Close tab' }),
|
||||
keyText: isElectronAvailable() ? 'CtrlOrCommand+W' : 'CtrlOrCommand+Shift+W',
|
||||
keyText: isElectronAvailable() ? 'CtrlOrCommand+W' : 'Alt+W',
|
||||
testEnabled: () => {
|
||||
const hasAnyOtherTab = getOpenedTabs().filter(x => !x.closedTime).length >= 1;
|
||||
const hasAnyModalOpen = getOpenedModals().length > 0;
|
||||
|
||||
@@ -134,3 +134,13 @@ export async function switchCurrentDatabase(data) {
|
||||
currentDatabase.set(data);
|
||||
}
|
||||
}
|
||||
|
||||
export function getKeyTextFromEvent(e) {
|
||||
let keyText = '';
|
||||
if (e.ctrlKey) keyText += 'Ctrl+';
|
||||
if (e.metaKey) keyText += 'Command+';
|
||||
if (e.shiftKey) keyText += 'Shift+';
|
||||
if (e.altKey) keyText += 'Alt+';
|
||||
keyText += e.key;
|
||||
return keyText;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user