feat(sidebar): 添加一键折叠所有节点功能

- 在侧边栏中添加了“折叠所有”按钮,用户可以一键折叠所有展开的节点。
- 更新了相关的国际化文本,支持多语言。
- 增加了 collapseAllGroups 和 collapseExpandedTreeNodes 函数以支持新功能。
This commit is contained in:
二丫讲梵 authored and GitHub committed 2026-07-02 18:50:01 +08:00
1 parent e7dffeca37
commit af9ad39ffb
19 files changed
+191 -10

No files matched your search

+7
View File
@@ -309,6 +309,13 @@ export function toggleGroupCollapsed(layout: SidebarLayout, groupId: string): Si
};
}
export function collapseAllGroups(layout: SidebarLayout): SidebarLayout {
return {
...layout,
groups: layout.groups.map((group) => (group.collapsed ? group : { ...group, collapsed: true })),
};
}
export function removeConnectionFromSidebarLayout(layout: SidebarLayout, connectionId: string): SidebarLayout {
return { ...layout, order: removeConnectionFromEntries(layout.order, connectionId) };
}
@@ -0,0 +1,17 @@
import type { TreeNode } from "@/types/database";
export function collapseExpandedTreeNodes(nodes: TreeNode[]): number {
let collapsedCount = 0;
for (const node of nodes) {
if (node.isExpanded) {
node.isExpanded = false;
collapsedCount += 1;
}
if (node.children?.length) {
collapsedCount += collapseExpandedTreeNodes(node.children);
}
}
return collapsedCount;
}
+5
View File
@@ -33,6 +33,11 @@ export function treeNodeRowAction(type: TreeNodeType, canExpand: boolean, activa
return "none";
}
export function shouldRunTreeNodeRowAction(action: TreeNodeRowAction, clickDetail: number): boolean {
if (action === "none") return false;
return action === "toggle" || clickDetail <= 1;
}
export function treeNodeRowDoubleClickAction(type: TreeNodeType, canOpenObjectBrowser: boolean, activation: SidebarActivation = "single", canExpand = false): TreeNodeRowDoubleClickAction {
if (activation === "double") {
if (dataNodeTypes.has(type)) return "open-data";