From 666095715325e270fb3b5ac353b735366040ff42 Mon Sep 17 00:00:00 2001 From: t8y2 <1156263951@qq.com> Date: Thu, 16 Jul 2026 22:52:10 +0800 Subject: [PATCH] feat(sidebar): decompose tree item runtime --- apps/desktop/src/App.vue | 4 +- apps/desktop/src/components/grid/DataGrid.vue | 3 + .../src/components/layout/SqlLibraryPanel.vue | 2 +- .../src/components/sidebar/ConnectionTree.vue | 75 +- .../sidebar/SidebarTreeRuntimeHost.vue | 4135 +++++++++++++ .../src/components/sidebar/TreeItem.vue | 5484 +---------------- .../useSidebarConnectionMutationRuntime.ts | 328 + .../composables/useSidebarDataOpenRuntime.ts | 308 + ...eSidebarDatabaseSpecificMutationRuntime.ts | 257 + .../useSidebarTableMutationRuntime.ts | 157 + .../useSidebarTreeExportRuntime.ts | 330 + .../composables/useSidebarTreeToolRuntime.ts | 145 + .../sidebar/sidebarActionTarget.spec.ts | 17 +- .../sidebar/sidebarExportRuntime.spec.ts | 29 + .../sidebarTreeMenuDescriptors.spec.ts | 36 + .../sidebar/sidebarTreeRuntime.spec.ts | 65 + .../table/objectBrowserRowAction.spec.ts | 2 +- .../src/lib/connection/connectionFile.ts | 2 +- apps/desktop/src/lib/dataGrid/dataGenerate.ts | 4 +- .../lib/database/mysqlConnectionOptions.ts | 3 +- apps/desktop/src/lib/document/gridfsFiles.ts | 2 +- apps/desktop/src/lib/nacos/nacosAdmin.ts | 2 +- .../src/lib/sidebar/sidebarActionTarget.ts | 5 + .../lib/sidebar/sidebarDataOpenCoordinator.ts | 2 +- .../src/lib/sidebar/sidebarExportRuntime.ts | 43 + .../lib/sidebar/sidebarTreeMenuDescriptors.ts | 44 + .../src/lib/sidebar/sidebarTreeRuntime.ts | 116 + apps/desktop/src/stores/connectionStore.ts | 2 +- apps/desktop/vite.config.ts | 2 + .../app-tests/codemirrorSqlDialect.test.ts | 2 +- packages/app-tests/dataGridProps.test.ts | 13 + .../productionGuardEntrypoints.test.ts | 2 +- .../app-tests/sidebarContextMenuHost.test.ts | 5 +- .../app-tests/sidebarDialogRouting.test.ts | 14 +- .../app-tests/sidebarMutationRuntime.test.ts | 61 + .../sidebarRuntimeDecomposition.test.ts | 47 + .../app-tests/sidebarTreeAffordances.test.ts | 4 +- .../app-tests/sidebarTreeItemCleanup.test.ts | 40 +- 38 files changed, 6498 insertions(+), 5294 deletions(-) create mode 100644 apps/desktop/src/components/sidebar/SidebarTreeRuntimeHost.vue create mode 100644 apps/desktop/src/composables/useSidebarConnectionMutationRuntime.ts create mode 100644 apps/desktop/src/composables/useSidebarDataOpenRuntime.ts create mode 100644 apps/desktop/src/composables/useSidebarDatabaseSpecificMutationRuntime.ts create mode 100644 apps/desktop/src/composables/useSidebarTableMutationRuntime.ts create mode 100644 apps/desktop/src/composables/useSidebarTreeExportRuntime.ts create mode 100644 apps/desktop/src/composables/useSidebarTreeToolRuntime.ts create mode 100644 apps/desktop/src/lib/__tests__/sidebar/sidebarExportRuntime.spec.ts create mode 100644 apps/desktop/src/lib/__tests__/sidebar/sidebarTreeMenuDescriptors.spec.ts create mode 100644 apps/desktop/src/lib/__tests__/sidebar/sidebarTreeRuntime.spec.ts create mode 100644 apps/desktop/src/lib/sidebar/sidebarExportRuntime.ts create mode 100644 apps/desktop/src/lib/sidebar/sidebarTreeMenuDescriptors.ts create mode 100644 apps/desktop/src/lib/sidebar/sidebarTreeRuntime.ts create mode 100644 packages/app-tests/sidebarMutationRuntime.test.ts create mode 100644 packages/app-tests/sidebarRuntimeDecomposition.test.ts diff --git a/apps/desktop/src/App.vue b/apps/desktop/src/App.vue index dd177570e8..02764afa64 100644 --- a/apps/desktop/src/App.vue +++ b/apps/desktop/src/App.vue @@ -11,7 +11,6 @@ import EditorToolbar from "@/components/layout/EditorToolbar.vue"; import ContentArea from "@/components/layout/ContentArea.vue"; import AppDialogs from "@/components/layout/AppDialogs.vue"; import WelcomeScreen from "@/components/layout/WelcomeScreen.vue"; -import DdlViewDialog from "@/components/objects/DdlViewDialog.vue"; import type { ConfigTab } from "@/components/connection/ConnectionDialog.vue"; import { useConnectionStore } from "@/stores/connectionStore"; import { useQueryStore } from "@/stores/queryStore"; @@ -106,6 +105,7 @@ const UpdateDialog = defineAsyncComponent(() => import("@/components/layout/Upda const CloseActionPromptDialog = defineAsyncComponent(() => import("@/components/layout/CloseActionPromptDialog.vue")); const LoginPage = defineAsyncComponent(() => import("@/components/auth/LoginPage.vue")); const QuickOpenDialog = defineAsyncComponent(() => import("@/components/quick-open/QuickOpenDialog.vue")); +const QueryEditorDdlViewDialog = defineAsyncComponent(() => import("@/components/objects/DdlViewDialog.vue")); const QueryEditorObjectSourceDialog = defineAsyncComponent(() => import("@/components/objects/ObjectSourceDialog.vue")); type AiAssistantHandle = { @@ -2294,7 +2294,7 @@ onUnmounted(() => { - :"/\\|?*\u0000-\u001F]/g, "_").trim() || "untitled"; + return name.replace(/[<>:"/\\|?*\p{Cc}]/gu, "_").trim() || "untitled"; } function relativeImportName(baseDir: string, filePath: string) { diff --git a/apps/desktop/src/components/sidebar/ConnectionTree.vue b/apps/desktop/src/components/sidebar/ConnectionTree.vue index c86d72dc84..79cf600cc9 100644 --- a/apps/desktop/src/components/sidebar/ConnectionTree.vue +++ b/apps/desktop/src/components/sidebar/ConnectionTree.vue @@ -1,5 +1,5 @@ + +