Fix:修复数据表保存快捷键与提示不一致
This commit is contained in:
parent
bc409cffc0
commit
ded6e002b5
|
|
@ -117,7 +117,7 @@ import { buildDataGridCellDetail, buildDataGridColumnDetail, buildDataGridRowDet
|
|||
import { applyColumnFormatter, buildColumnFormatterKey, normalizeColumnFormatter, resolveColumnFormatter, type ColumnFormatterConfig, type DateTimeFormatterUnit } from "@/lib/columnFormatter";
|
||||
import { temporalCellEditorKind, type TemporalCellEditorKind } from "@/lib/dataGridTemporalEditor";
|
||||
import { isEnumColumn, enumValuesForColumn } from "@/lib/dataGridEnumEditor";
|
||||
import { isCancelSearchShortcut, isCopyCurrentRowShortcut, isDeleteCurrentRowShortcut, isFocusSearchShortcut, isModRShortcut, isToggleTransposeShortcut } from "@/lib/keyboardShortcuts";
|
||||
import { isCancelSearchShortcut, isCopyCurrentRowShortcut, isDeleteCurrentRowShortcut, isFocusSearchShortcut, isModRShortcut, isSaveShortcut, isToggleTransposeShortcut } from "@/lib/keyboardShortcuts";
|
||||
import { dataGridHeaderContentWidth, scrollbarGutterWidth } from "@/lib/dataGridScrollGutter";
|
||||
import { canGoNextDataGridPage } from "@/lib/dataGridPagination";
|
||||
import { dataGridScrollPosition, isDataGridNearScrollBottom, shouldCheckInfiniteScrollAfterScroll, type DataGridScrollPosition } from "@/lib/dataGridInfiniteScroll";
|
||||
|
|
@ -151,6 +151,7 @@ import { forgetDataGridConditionHistory, loadDataGridConditionHistory, rememberD
|
|||
import { caretPositionInsideInsertedSqlSingleQuotes, insertedSqlSingleQuoteAtCaret } from "@/lib/sqlQuoteCaret";
|
||||
import { effectiveDatabaseTypeForConnection } from "@/lib/jdbcDialect";
|
||||
import { isMacOS } from "@/lib/platform";
|
||||
import { formatShortcut } from "@/lib/shortcutRegistry";
|
||||
|
||||
const SqlPreviewPanel = defineAsyncComponent(() => import("@/components/editor/SqlPreviewPanel.vue"));
|
||||
const FORMATTED_JSON_EDIT_WARNING_STORAGE_KEY = "dbx-cell-detail-formatted-json-edit-warning-shown";
|
||||
|
|
@ -227,6 +228,7 @@ const dataGridCreatedAt = performance.now();
|
|||
const dataGridElapsed = () => `${Math.round(performance.now() - dataGridCreatedAt)}ms`;
|
||||
const isMac = isMacOS();
|
||||
const shortcutMod = isMac ? "Cmd" : "Ctrl";
|
||||
const saveShortcutLabel = computed(() => formatShortcut(settingsStore.editorSettings.shortcuts.saveSql));
|
||||
const DATA_GRID_COMPACT_TOPBAR_WIDTH = 900;
|
||||
|
||||
const emit = defineEmits<{
|
||||
|
|
@ -5587,6 +5589,26 @@ function commitGridEdit() {
|
|||
nextTick(() => gridRef.value?.focus({ preventScroll: true }));
|
||||
}
|
||||
|
||||
async function saveGridChangesFromShortcut() {
|
||||
if (!saveToolbarState.value.showActions || saveToolbarState.value.actionsDisabled) return false;
|
||||
await onToolbarCommit();
|
||||
return true;
|
||||
}
|
||||
|
||||
async function onCellEditKeydown(event: KeyboardEvent) {
|
||||
if (isSaveShortcut(event, settingsStore.editorSettings.shortcuts)) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
commitEdit();
|
||||
await nextTick();
|
||||
if (await saveGridChangesFromShortcut()) {
|
||||
gridRef.value?.focus({ preventScroll: true });
|
||||
}
|
||||
return;
|
||||
}
|
||||
onEditKeydown(event);
|
||||
}
|
||||
|
||||
function undoGridChange(): boolean {
|
||||
if (editingCell.value || !canUndoPendingChange.value) return false;
|
||||
undoPendingChange();
|
||||
|
|
@ -5641,11 +5663,10 @@ async function onGridKeydown(event: KeyboardEvent) {
|
|||
}
|
||||
return;
|
||||
}
|
||||
if ((event.metaKey || event.ctrlKey) && !event.shiftKey && event.key.toLowerCase() === "s") {
|
||||
if (saveToolbarState.value.showActions && !saveToolbarState.value.actionsDisabled) {
|
||||
if (isSaveShortcut(event, settingsStore.editorSettings.shortcuts)) {
|
||||
if (await saveGridChangesFromShortcut()) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
await onToolbarCommit();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
|
@ -7561,7 +7582,7 @@ const gridContextMenuItems = computed<ContextMenuItem[]>(() => {
|
|||
<span class="data-grid-topbar-action-label" :class="{ 'data-grid-topbar-action-label--compact': compactDataGridToolbar }">{{ t(saveActionMode.labelKey, { count: pendingChangeCount }) }}</span>
|
||||
</Button>
|
||||
</TooltipTrigger>
|
||||
<TooltipContent side="bottom" class="max-w-sm"> {{ t(saveActionMode.tooltipKey, { count: pendingChangeCount }) }} ({{ shortcutMod }}+S) </TooltipContent>
|
||||
<TooltipContent side="bottom" class="max-w-sm"> {{ t(saveActionMode.tooltipKey, { count: pendingChangeCount }) }} ({{ saveShortcutLabel }}) </TooltipContent>
|
||||
</Tooltip>
|
||||
<Tooltip>
|
||||
<TooltipTrigger as-child>
|
||||
|
|
@ -7739,7 +7760,7 @@ const gridContextMenuItems = computed<ContextMenuItem[]>(() => {
|
|||
@click.stop
|
||||
@focus="onCellEditTextareaInput"
|
||||
@input="onCellEditTextareaInput"
|
||||
@keydown.stop="onEditKeydown"
|
||||
@keydown.stop="onCellEditKeydown"
|
||||
@paste.stop="onCellEditTextareaPaste"
|
||||
/>
|
||||
<input
|
||||
|
|
@ -7753,7 +7774,7 @@ const gridContextMenuItems = computed<ContextMenuItem[]>(() => {
|
|||
@blur="commitEditFromBlur"
|
||||
@click.stop
|
||||
@input="onCellEditTextareaInput"
|
||||
@keydown.stop="onEditKeydown"
|
||||
@keydown.stop="onCellEditKeydown"
|
||||
@paste.stop="onCellEditTextareaPaste"
|
||||
/>
|
||||
</template>
|
||||
|
|
@ -8197,7 +8218,7 @@ const gridContextMenuItems = computed<ContextMenuItem[]>(() => {
|
|||
@click.stop
|
||||
@focus="onCellEditTextareaInput"
|
||||
@input="onCellEditTextareaInput"
|
||||
@keydown.stop="onEditKeydown"
|
||||
@keydown.stop="onCellEditKeydown"
|
||||
@paste.stop="onCellEditTextareaPaste"
|
||||
/>
|
||||
<input
|
||||
|
|
@ -8211,7 +8232,7 @@ const gridContextMenuItems = computed<ContextMenuItem[]>(() => {
|
|||
@blur="commitEditFromBlur"
|
||||
@click.stop
|
||||
@input="onCellEditTextareaInput"
|
||||
@keydown.stop="onEditKeydown"
|
||||
@keydown.stop="onCellEditKeydown"
|
||||
@paste.stop="onCellEditTextareaPaste"
|
||||
/>
|
||||
</div>
|
||||
|
|
@ -8329,7 +8350,7 @@ const gridContextMenuItems = computed<ContextMenuItem[]>(() => {
|
|||
@click.stop
|
||||
@focus="onCellEditTextareaInput"
|
||||
@input="onCellEditTextareaInput"
|
||||
@keydown.stop="onEditKeydown"
|
||||
@keydown.stop="onCellEditKeydown"
|
||||
@paste.stop="onCellEditTextareaPaste"
|
||||
/>
|
||||
<input
|
||||
|
|
@ -8343,7 +8364,7 @@ const gridContextMenuItems = computed<ContextMenuItem[]>(() => {
|
|||
@blur="commitEditFromBlur"
|
||||
@click.stop
|
||||
@input="onCellEditTextareaInput"
|
||||
@keydown.stop="onEditKeydown"
|
||||
@keydown.stop="onCellEditKeydown"
|
||||
@paste.stop="onCellEditTextareaPaste"
|
||||
/>
|
||||
</template>
|
||||
|
|
|
|||
Loading…
Reference in New Issue