Skip to content

Commit

Permalink
tree v2 Add the method of dynamically expanding and collapsing the tr…
Browse files Browse the repository at this point in the history
…ee, and add the method of getting the node
  • Loading branch information
sukney committed Feb 10, 2022
1 parent d953bd4 commit 948831c
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 1 deletion.
57 changes: 57 additions & 0 deletions packages/components/tree-v2/src/composables/useTree.ts
Original file line number Diff line number Diff line change
Expand Up @@ -228,11 +228,64 @@ export function useTree(props: TreeProps, emit) {
emit(NODE_EXPAND, node.data, node)
}

function expandByKeys(keys: Array<TreeKey>) {
if (keys && keys.length > 0) {
const keySet = expandedKeySet.value
if (tree?.value) {
// whether only one node among the same level can be expanded at one time
const { treeNodeMap } = tree.value

keys.forEach((key) => {
const node = treeNodeMap.get(key)
if (node) {
if (!keySet.has(node.key)) keySet.add(node.key)
emit(NODE_EXPAND, node.data, node)
}
})
}
}
}

function collapse(node: TreeNode) {
expandedKeySet.value.delete(node.key)
emit(NODE_COLLAPSE, node.data, node)
}

function collapseByKeys(keys: Array<TreeKey>) {
if (keys && keys.length > 0) {
const keySet = expandedKeySet.value
if (tree?.value) {
// whether only one node among the same level can be expanded at one time
const { treeNodeMap } = tree.value
keys.forEach((key) => {
const node = treeNodeMap.get(key)
if (node) {
if (keySet.has(node.key)) keySet.delete(node.key)
emit(NODE_COLLAPSE, node.data, node)
}
})
}
}
}

function getTreeNode(key: TreeKey) {
var nodes = getTreeNodes([key])
if (nodes && nodes.length > 0) return nodes[0]
else return undefined
}

function getTreeNodes(keys: Array<TreeKey>) {
let nodes: Array<TreeNode> = []
if (tree?.value) {
const { treeNodeMap } = tree.value
keys.forEach((x) => {
let node = treeNodeMap.get(x)
if (node) nodes.push(node)
})
}
return nodes
}

function isExpanded(node: TreeNode): boolean {
return expandedKeySet.value.has(node.key)
}
Expand Down Expand Up @@ -291,5 +344,9 @@ export function useTree(props: TreeProps, emit) {
setCheckedKeys,
filter,
setData,
expandByKeys,
collapseByKeys,
getTreeNode,
getTreeNodes,
}
}
13 changes: 12 additions & 1 deletion packages/components/tree-v2/src/tree.vue
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,12 @@ export default defineComponent({
setCheckedKeys,
filter,
setData,
expand,
collapse,
expandByKeys,
collapseByKeys,
getTreeNode,
getTreeNodes,
} = useTree(props, ctx.emit)
ctx.expose({
Expand All @@ -104,7 +110,12 @@ export default defineComponent({
setCheckedKeys,
filter,
setData,
toggleCheckbox,
expand,
collapse,
expandByKeys,
collapseByKeys,
getTreeNode,
getTreeNodes,
})
return {
Expand Down

0 comments on commit 948831c

Please sign in to comment.