UNPKG

hongluan-ui

Version:
1 lines 6.32 kB
{"version":3,"file":"use-tree.mjs","sources":["../../../../../../../packages/components/simple-table/src/composables/use-tree.ts"],"sourcesContent":["import { getCurrentInstance, ref } from 'vue'\n\nimport type { Ref } from 'vue'\nimport type { Indexable } from '@hongluan-ui/utils'\nimport type { GetRowKey, TreeProps, LoadFunction } from '../simple-table'\n\nexport type TableTreeNode = {\n isLoading: boolean\n lazy: boolean\n level: number\n expanded?: boolean\n}\n\nfunction useTree({ load, treeProps, getRowKey, defaultExpandAll, expandRowKeys }: {\n load: LoadFunction\n treeProps: TreeProps\n getRowKey: GetRowKey\n defaultExpandAll: Ref<boolean>\n expandRowKeys: Ref<string[]>\n}) {\n\n const tableTreeMap = ref<Indexable<TableTreeNode>>({})\n\n const { emit } = getCurrentInstance()!\n const childrenKey = treeProps.children\n const hasChildrenKey = treeProps.hasChildren\n\n const hasChildren = (row: Record<string, any>) => {\n if (row[childrenKey] && Array.isArray(row[childrenKey]) && row[childrenKey].length) return true\n if (row[hasChildrenKey]) return true\n }\n\n const walkTreeNode = (data: unknown[], level = 0) => {\n data && data.forEach((row: any) => {\n const rowKey = getRowKey(row)\n const expanded = expandRowKeys.value.includes(rowKey) ? true : defaultExpandAll.value\n if (row[childrenKey] && Array.isArray(row[childrenKey])) {\n tableTreeMap.value[rowKey] = {\n lazy: false,\n isLoading: false,\n expanded,\n level,\n }\n walkTreeNode(row[childrenKey], level + 1)\n } else if (row[hasChildrenKey]) {\n tableTreeMap.value[rowKey] = {\n lazy: true,\n isLoading: false,\n expanded: false,\n level,\n }\n expanded && toggleExpandTree(row)\n }\n })\n }\n\n const loadChildren = (row: Record<string, any>, level: number, finish?: () => void) => {\n tableTreeMap.value[getRowKey(row)] = {\n lazy: false,\n isLoading: true,\n expanded: false,\n level: level,\n }\n if (load) {\n load(row, { level }, (children: unknown[]) => {\n row[childrenKey] = children\n tableTreeMap.value[getRowKey(row)].isLoading = false\n walkTreeNode(children, level + 1)\n finish && finish()\n })\n } else {\n row[childrenKey] = []\n tableTreeMap.value[getRowKey(row)].isLoading = false\n finish && finish()\n }\n }\n\n const toggleExpandTree = (row: Record<string, any>) => {\n return new Promise<void>(resolve => {\n if (tableTreeMap.value[getRowKey(row)].lazy) {\n loadChildren(row, tableTreeMap.value[getRowKey(row)].level, () => {\n tableTreeMap.value[getRowKey(row)].expanded = true\n resolve()\n emit('tree-expand', true, row)\n })\n } else {\n tableTreeMap.value[getRowKey(row)].expanded = !tableTreeMap.value[getRowKey(row)].expanded\n resolve()\n emit('tree-expand', tableTreeMap.value[getRowKey(row)].expanded, row)\n }\n })\n }\n\n return {\n walkTreeNode,\n hasChildren,\n loadChildren,\n tableTreeMap,\n toggleExpandTree,\n }\n}\n\nexport { useTree }\n"],"names":[],"mappings":"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"}