UNPKG

tav-ui

Version:
1 lines 13.4 kB
{"version":3,"file":"useTree2.mjs","sources":["../../../../../../../packages/components/tree/src/useTree.ts"],"sourcesContent":["import { unref } from 'vue'\nimport { cloneDeep } from 'lodash-es'\nimport { forEach } from '@tav-ui/utils/helper/treeHelper'\nimport type { FieldNames, InsertNodeParams, Keys } from './types'\nimport type { ComputedRef, Ref } from 'vue'\nimport type { TreeDataItem } from 'ant-design-vue/es/tree/Tree'\n\nexport function useTree(treeDataRef: Ref<TreeDataItem[]>, getFieldNames: ComputedRef<FieldNames>) {\n function getAllKeys(list?: TreeDataItem[]) {\n const keys: string[] = []\n const treeData = list || unref(treeDataRef)\n const { key: keyField, children: childrenField } = unref(getFieldNames)\n if (!childrenField || !keyField) return keys\n\n for (let index = 0; index < treeData.length; index++) {\n const node = treeData[index]\n keys.push(node[keyField]!)\n const children = node[childrenField]\n if (children && children.length) {\n keys.push(...(getAllKeys(children) as string[]))\n }\n }\n return keys as Keys\n }\n // get keys that can be checked and selected\n function getEnabledKeys(list?: TreeDataItem[]) {\n const keys: string[] = []\n const treeData = list || unref(treeDataRef)\n const { key: keyField, children: childrenField } = unref(getFieldNames)\n if (!childrenField || !keyField) return keys\n\n for (let index = 0; index < treeData.length; index++) {\n const node = treeData[index]\n node.disabled !== true && node.selectable !== false && keys.push(node[keyField]!)\n const children = node[childrenField]\n if (children && children.length) {\n keys.push(...(getEnabledKeys(children) as string[]))\n }\n }\n return keys as Keys\n }\n\n function getChildrenKeys(nodeKey: string | number, list?: TreeDataItem[]): Keys {\n const keys: Keys = []\n const treeData = list || unref(treeDataRef)\n const { key: keyField, children: childrenField } = unref(getFieldNames)\n if (!childrenField || !keyField) return keys\n for (let index = 0; index < treeData.length; index++) {\n const node = treeData[index]\n const children = node[childrenField]\n if (nodeKey === node[keyField]) {\n keys.push(node[keyField]!)\n if (children && children.length) {\n keys.push(...(getAllKeys(children) as string[]))\n }\n } else {\n if (children && children.length) {\n keys.push(...getChildrenKeys(nodeKey, children))\n }\n }\n }\n return keys as Keys\n }\n\n // Update node\n function updateNodeByKey(key: string, node: TreeDataItem, list?: TreeDataItem[]) {\n if (!key) return\n const treeData = list || unref(treeDataRef)\n const { key: keyField, children: childrenField } = unref(getFieldNames)\n\n if (!childrenField || !keyField) return\n\n for (let index = 0; index < treeData.length; index++) {\n const element: any = treeData[index]\n const children = element[childrenField]\n\n if (element[keyField] === key) {\n treeData[index] = { ...treeData[index], ...node }\n break\n } else if (children && children.length) {\n updateNodeByKey(key, node, element[childrenField])\n }\n }\n }\n\n // Expand the specified level\n function filterByLevel(level = 1, list?: TreeDataItem[], currentLevel = 1) {\n if (!level) {\n return []\n }\n const res: (string | number)[] = []\n const data = list || unref(treeDataRef) || []\n for (let index = 0; index < data.length; index++) {\n const item = data[index]\n\n const { key: keyField, children: childrenField } = unref(getFieldNames)\n const key = keyField ? item[keyField] : ''\n const children = childrenField ? item[childrenField] : []\n res.push(key)\n if (children && children.length && currentLevel < level) {\n currentLevel += 1\n res.push(...filterByLevel(level, children, currentLevel))\n }\n }\n return res as string[] | number[]\n }\n\n /**\n * 添加节点\n */\n function insertNodeByKey({ parentKey = null, node, push = 'push' }: InsertNodeParams) {\n const treeData: any = cloneDeep(unref(treeDataRef))\n if (!parentKey) {\n treeData[push](node)\n treeDataRef.value = treeData\n return\n }\n const { key: keyField, children: childrenField } = unref(getFieldNames)\n if (!childrenField || !keyField) return\n\n forEach(treeData, (treeItem) => {\n if (treeItem[keyField] === parentKey) {\n treeItem[childrenField] = treeItem[childrenField] || []\n treeItem[childrenField][push](node)\n return true\n }\n })\n treeDataRef.value = treeData\n }\n /**\n * 批量添加节点\n */\n function insertNodesByKey({ parentKey = null, list, push = 'push' }: InsertNodeParams) {\n const treeData: any = cloneDeep(unref(treeDataRef))\n if (!list || list.length < 1) {\n return\n }\n if (!parentKey) {\n for (let i = 0; i < list.length; i++) {\n treeData[push](list[i])\n }\n } else {\n const { key: keyField, children: childrenField } = unref(getFieldNames)\n if (!childrenField || !keyField) return\n\n forEach(treeData, (treeItem) => {\n if (treeItem[keyField] === parentKey) {\n treeItem[childrenField] = treeItem[childrenField] || []\n for (let i = 0; i < list.length; i++) {\n treeItem[childrenField][push](list[i])\n }\n treeDataRef.value = treeData\n return true\n }\n })\n }\n }\n // Delete node\n function deleteNodeByKey(key: string, list?: TreeDataItem[]) {\n if (!key) return\n const treeData = list || unref(treeDataRef)\n const { key: keyField, children: childrenField } = unref(getFieldNames)\n if (!childrenField || !keyField) return\n\n for (let index = 0; index < treeData.length; index++) {\n const element: any = treeData[index]\n const children = element[childrenField]\n\n if (element[keyField] === key) {\n treeData.splice(index, 1)\n break\n } else if (children && children.length) {\n deleteNodeByKey(key, element[childrenField])\n }\n }\n }\n return {\n deleteNodeByKey,\n insertNodeByKey,\n insertNodesByKey,\n filterByLevel,\n updateNodeByKey,\n getAllKeys,\n getChildrenKeys,\n getEnabledKeys,\n }\n}\n"],"names":[],"mappings":"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"}