From 6299d62125563965a96740cae381f64b1f86f169 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=8C=E4=B8=AB=E8=AE=B2=E6=A2=B5?= Date: Fri, 11 Sep 2026 12:07:36 +0800 Subject: [PATCH] feat(grid): add cell value conversion previews Refs: #7751 --- apps/desktop/src/components/grid/DataGrid.vue | 15 +- .../grid/DataGridCellDetailDialog.vue | 10 +- .../grid/DataGridCellDetailPanel.vue | 10 +- .../grid/DataGridValueTransform.vue | 162 +++++++++++++++++ .../grid/__tests__/DataGridSurfaces.spec.ts | 3 +- apps/desktop/src/i18n/locales/az.ts | 42 +++++ apps/desktop/src/i18n/locales/en.ts | 42 +++++ apps/desktop/src/i18n/locales/es.ts | 42 +++++ apps/desktop/src/i18n/locales/it.ts | 42 +++++ apps/desktop/src/i18n/locales/ja.ts | 42 +++++ apps/desktop/src/i18n/locales/ko.ts | 42 +++++ apps/desktop/src/i18n/locales/pt-BR.ts | 42 +++++ apps/desktop/src/i18n/locales/tr.ts | 42 +++++ apps/desktop/src/i18n/locales/zh-CN.ts | 42 +++++ apps/desktop/src/i18n/locales/zh-TW.ts | 42 +++++ .../src/lib/dataGrid/cellValueTransform.ts | 114 ++++++++++++ .../src/lib/dataGrid/dataGridDetail.ts | 3 + packages/app-tests/cellValueTransform.test.ts | 169 ++++++++++++++++++ packages/app-tests/dataGridDetail.test.ts | 1 + 19 files changed, 903 insertions(+), 4 deletions(-) create mode 100644 apps/desktop/src/components/grid/DataGridValueTransform.vue create mode 100644 apps/desktop/src/lib/dataGrid/cellValueTransform.ts create mode 100644 packages/app-tests/cellValueTransform.test.ts diff --git a/apps/desktop/src/components/grid/DataGrid.vue b/apps/desktop/src/components/grid/DataGrid.vue index baa6158c25..a859d61db5 100644 --- a/apps/desktop/src/components/grid/DataGrid.vue +++ b/apps/desktop/src/components/grid/DataGrid.vue @@ -67,6 +67,7 @@ import { Tabs, TabsContent } from "@/components/ui/tabs"; import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip"; import ErrorBanner from "@/components/ui/ErrorBanner.vue"; import DangerConfirmDialog from "@/components/editor/DangerConfirmDialog.vue"; +import DataGridValueTransform from "@/components/grid/DataGridValueTransform.vue"; import DataGridCellDetailPanel from "@/components/grid/DataGridCellDetailPanel.vue"; import DataGridPagination from "@/components/grid/DataGridPagination.vue"; import DataGridSearchBar from "@/components/grid/DataGridSearchBar.vue"; @@ -5782,6 +5783,10 @@ const showCompactDetailJson = computed(() => { // CodeMirror-based cell detail editors const valueEditorContainer = ref(); +const detailTransformOpen = ref(false); +watch([showCellDetail, activeCellDetailTab, () => activeCellDetail.value?.rowId, () => activeCellDetail.value?.colIndex], () => { + detailTransformOpen.value = false; +}); let valueDetailEditor: UseCellDetailEditorReturn | null = null; const editorThemeAccessor = () => settingsStore.editorSettings.theme; @@ -5812,7 +5817,7 @@ watch(valueEditorContainer, async (el) => { }, onEscape: () => restoreDetailOriginalValue(), onBlur: () => { - if (!detailValueDiffOpen.value) commitValueEditorEdit(); + if (!detailValueDiffOpen.value && !detailTransformOpen.value) commitValueEditorEdit(); }, editorTheme: editorThemeAccessor, appAppearance: editorAppAppearance, @@ -13204,6 +13209,14 @@ useUpdateBlocker(() => (hasPendingChanges.value || hasPendingDataEditorDraft.val
+