From bc3ec6596729b36751920314bfcc457cf910fd16 Mon Sep 17 00:00:00 2001 From: huchenlei Date: Sat, 31 Aug 2024 17:44:44 -0400 Subject: [PATCH] Move --- src/components/common/TreeExplorer.vue | 170 ++++++++++++++++++ .../common/treeExplorer/TreeFolder.vue | 94 ++++++++++ .../common/treeExplorer/TreeNode.vue | 67 +++++++ src/types/treeExplorerTypes.ts | 30 ++++ 4 files changed, 361 insertions(+) create mode 100644 src/components/common/TreeExplorer.vue create mode 100644 src/components/common/treeExplorer/TreeFolder.vue create mode 100644 src/components/common/treeExplorer/TreeNode.vue create mode 100644 src/types/treeExplorerTypes.ts diff --git a/src/components/common/TreeExplorer.vue b/src/components/common/TreeExplorer.vue new file mode 100644 index 000000000..a26120c08 --- /dev/null +++ b/src/components/common/TreeExplorer.vue @@ -0,0 +1,170 @@ + + + diff --git a/src/components/common/treeExplorer/TreeFolder.vue b/src/components/common/treeExplorer/TreeFolder.vue new file mode 100644 index 000000000..ee1c8a3dc --- /dev/null +++ b/src/components/common/treeExplorer/TreeFolder.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/src/components/common/treeExplorer/TreeNode.vue b/src/components/common/treeExplorer/TreeNode.vue new file mode 100644 index 000000000..ea73c5513 --- /dev/null +++ b/src/components/common/treeExplorer/TreeNode.vue @@ -0,0 +1,67 @@ + + + + + diff --git a/src/types/treeExplorerTypes.ts b/src/types/treeExplorerTypes.ts new file mode 100644 index 000000000..71bbf04fa --- /dev/null +++ b/src/types/treeExplorerTypes.ts @@ -0,0 +1,30 @@ +import { Ref } from 'vue' + +export interface TreeExplorerNode { + key: string + label: string + data: T + leaf: boolean + children?: TreeExplorerNode[] + icon?: string | ((node: TreeExplorerNode) => string) +} + +export interface RenderedTreeExplorerNode extends TreeExplorerNode { + children?: RenderedTreeExplorerNode[] + icon: string + type: 'folder' | 'node' + // Total number of leaves in the subtree + totalLeaves: number +} + +export type TreeExplorerDragAndDropData = { + type: 'tree-explorer-node' + data: RenderedTreeExplorerNode +} + +export interface TreeExplorerNodeSlotProps { + node: RenderedTreeExplorerNode + handleItemDropped: (node: RenderedTreeExplorerNode) => void + renameEditingNode: Ref + handleRename: (node: RenderedTreeExplorerNode, newName: string) => void +}