From 9661c608128242faf68f92efa7b2d08b376624ca Mon Sep 17 00:00:00 2001 From: t8y2 <1156263951@qq.com> Date: Sun, 10 May 2026 21:51:48 +0800 Subject: [PATCH] feat(connections): import Navicat NCX files --- src/components/layout/AppSidebar.vue | 27 +++- src/composables/useDialogSources.ts | 13 +- src/i18n/locales/en.ts | 4 + src/i18n/locales/zh-CN.ts | 3 + src/lib/navicatImport.ts | 186 +++++++++++++++++++++++++++ src/stores/connectionStore.ts | 65 ++++++---- 6 files changed, 263 insertions(+), 35 deletions(-) create mode 100644 src/lib/navicatImport.ts diff --git a/src/components/layout/AppSidebar.vue b/src/components/layout/AppSidebar.vue index 8e438a2a5..5a95c3f68 100644 --- a/src/components/layout/AppSidebar.vue +++ b/src/components/layout/AppSidebar.vue @@ -3,6 +3,12 @@ import { useI18n } from "vue-i18n"; import { Upload, Download, RefreshCw } from "lucide-vue-next"; import { Button } from "@/components/ui/button"; import { Tooltip, TooltipTrigger, TooltipContent } from "@/components/ui/tooltip"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuTrigger, +} from "@/components/ui/dropdown-menu"; import ConnectionTree from "@/components/sidebar/ConnectionTree.vue"; import { useConnectionStore } from "@/stores/connectionStore"; import { useToast } from "@/composables/useToast"; @@ -13,7 +19,7 @@ defineProps<{ }>(); const emit = defineEmits<{ - import: []; + import: [source: "dbx" | "navicat"]; export: []; startResize: [event: MouseEvent]; }>(); @@ -52,14 +58,21 @@ async function refreshTree() { {{ t("contextMenu.refreshChildren") }} - - - - - {{ t("sidebar.import") }} - + + + + {{ t("sidebar.importDbx") }} + + + {{ t("sidebar.importNavicat") }} + + +