From af9ad39ffb4135f9f71be0a9502dae124d94aa42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=8C=E4=B8=AB=E8=AE=B2=E6=A2=B5?= Date: Thu, 2 Jul 2026 18:50:01 +0800 Subject: [PATCH] =?UTF-8?q?feat(sidebar):=20=E6=B7=BB=E5=8A=A0=E4=B8=80?= =?UTF-8?q?=E9=94=AE=E6=8A=98=E5=8F=A0=E6=89=80=E6=9C=89=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在侧边栏中添加了“折叠所有”按钮,用户可以一键折叠所有展开的节点。 - 更新了相关的国际化文本,支持多语言。 - 增加了 collapseAllGroups 和 collapseExpandedTreeNodes 函数以支持新功能。 --- .../src/components/layout/AppSidebar.vue | 14 ++++++- .../src/components/sidebar/ConnectionTree.vue | 11 ++++- .../src/components/sidebar/TreeItem.vue | 24 ++++++++--- apps/desktop/src/composables/useFlatTree.ts | 9 +++- apps/desktop/src/i18n/locales/en.ts | 1 + apps/desktop/src/i18n/locales/es.ts | 1 + apps/desktop/src/i18n/locales/it.ts | 1 + apps/desktop/src/i18n/locales/ja.ts | 1 + apps/desktop/src/i18n/locales/pt-BR.ts | 1 + apps/desktop/src/i18n/locales/zh-CN.ts | 1 + apps/desktop/src/i18n/locales/zh-TW.ts | 1 + apps/desktop/src/lib/sidebarLayout.ts | 7 ++++ apps/desktop/src/lib/sidebarTreeCollapse.ts | 17 ++++++++ apps/desktop/src/lib/treeNodeClick.ts | 5 +++ apps/desktop/src/stores/connectionStore.ts | 8 ++++ packages/app-tests/sidebarLayout.test.ts | 32 ++++++++++++++ .../app-tests/sidebarTreeCollapse.test.ts | 42 +++++++++++++++++++ packages/app-tests/treeNodeClick.test.ts | 10 ++++- packages/app-tests/useFlatTree.test.ts | 15 +++++++ 19 files changed, 191 insertions(+), 10 deletions(-) create mode 100644 apps/desktop/src/lib/sidebarTreeCollapse.ts create mode 100644 packages/app-tests/sidebarTreeCollapse.test.ts diff --git a/apps/desktop/src/components/layout/AppSidebar.vue b/apps/desktop/src/components/layout/AppSidebar.vue index cb451307a..3ce318099 100644 --- a/apps/desktop/src/components/layout/AppSidebar.vue +++ b/apps/desktop/src/components/layout/AppSidebar.vue @@ -2,7 +2,7 @@ import { computed, ref } from "vue"; import { useI18n } from "vue-i18n"; import { translateBackendError } from "@/i18n/backend-errors"; -import { Upload, Download, FolderPlus, RefreshCw, ChevronsLeft } from "@lucide/vue"; +import { Upload, Download, FolderPlus, RefreshCw, ChevronsLeft, ChevronsUp } from "@lucide/vue"; import { Button } from "@/components/ui/button"; import { Tooltip, TooltipTrigger, TooltipContent } from "@/components/ui/tooltip"; import LightDropdown from "@/components/ui/LightDropdown.vue"; @@ -45,6 +45,10 @@ function createNewGroup() { void connectionTreeRef.value?.createNewGroup(); } +function collapseAllTreeNodes() { + connectionTreeRef.value?.collapseAllTreeNodes(); +} + function focusSearch(): boolean { return connectionTreeRef.value?.focusSearch() ?? false; } @@ -88,6 +92,14 @@ defineExpose({ focusSearch }); {{ t("sidebar.export") }} + + + + + {{ t("sidebar.collapseAll") }} +