element-plus
Version:
A Component Library for Vue 3
1 lines • 16.2 kB
Source Map (JSON)
{"version":3,"file":"tree.mjs","sources":["../../../../../../../packages/components/table/src/store/tree.ts"],"sourcesContent":["import { computed, getCurrentInstance, ref, unref, watch } from 'vue'\nimport { isArray, isUndefined } from '@element-plus/utils'\nimport { getRowIdentity, walkTreeNode } from '../util'\n\nimport type { WatcherPropsData } from '.'\nimport type { DefaultRow, Table, TableProps, TreeNode } from '../table/defaults'\n\nexport interface TreeData extends TreeNode {\n children?: string[]\n lazy?: boolean\n loaded?: boolean\n}\n\nfunction useTree<T extends DefaultRow>(watcherData: WatcherPropsData<T>) {\n const expandRowKeys = ref<Array<string>>([])\n const treeData = ref<Record<string, TreeData>>({})\n const indent = ref(16)\n const lazy = ref(false)\n const lazyTreeNodeMap = ref<Record<string, T[]>>({})\n const lazyColumnIdentifier = ref('hasChildren')\n const childrenColumnName = ref('children')\n const checkStrictly = ref(false)\n const instance = getCurrentInstance() as Table<T>\n const normalizedData = computed(() => {\n if (!watcherData.rowKey.value) return {}\n const data = watcherData.data.value || []\n return normalize(data)\n })\n const normalizedLazyNode = computed(() => {\n const rowKey = watcherData.rowKey.value\n const keys = Object.keys(lazyTreeNodeMap.value)\n const res: Record<string, { children: string[] }> = {}\n if (!keys.length) return res\n keys.forEach((key) => {\n if (lazyTreeNodeMap.value[key].length) {\n const item: (typeof res)[number] = { children: [] }\n lazyTreeNodeMap.value[key].forEach((row) => {\n const currentRowKey = getRowIdentity(row, rowKey)\n item.children.push(currentRowKey)\n if (row[lazyColumnIdentifier.value] && !res[currentRowKey]) {\n res[currentRowKey] = { children: [] }\n }\n })\n res[key] = item\n }\n })\n return res\n })\n\n const normalize = (data: T[]) => {\n const rowKey = watcherData.rowKey.value\n const res = {} as Record<string, TreeData>\n walkTreeNode(\n data,\n (parent, children, level) => {\n const parentId = getRowIdentity(parent, rowKey)\n if (isArray(children)) {\n res[parentId] = {\n children: children.map((row) => getRowIdentity(row, rowKey)),\n level,\n }\n } else if (lazy.value) {\n // 当 children 不存在且 lazy 为 true,该节点即为懒加载的节点\n res[parentId] = {\n children: [],\n lazy: true,\n level,\n }\n }\n },\n childrenColumnName.value,\n lazyColumnIdentifier.value,\n lazy.value\n )\n return res\n }\n\n const updateTreeData = (\n ifChangeExpandRowKeys = false,\n ifExpandAll?: boolean\n ) => {\n ifExpandAll ||= instance.store?.states.defaultExpandAll.value\n const nested = normalizedData.value\n const normalizedLazyNode_ = normalizedLazyNode.value\n const keys = Object.keys(nested)\n const newTreeData: Record<string, TreeData> = {}\n if (keys.length) {\n const oldTreeData = unref(treeData)\n const rootLazyRowKeys: string[] = []\n const getExpanded = (oldValue: TreeData, key: string) => {\n if (ifChangeExpandRowKeys) {\n if (expandRowKeys.value) {\n return ifExpandAll || expandRowKeys.value.includes(key)\n } else {\n return !!(ifExpandAll || oldValue?.expanded)\n }\n } else {\n const included =\n ifExpandAll ||\n (expandRowKeys.value && expandRowKeys.value.includes(key))\n return !!(oldValue?.expanded || included)\n }\n }\n // 合并 expanded 与 display,确保数据刷新后,状态不变\n keys.forEach((key) => {\n const oldValue = oldTreeData[key]\n const newValue = { ...nested[key] }\n newValue.expanded = getExpanded(oldValue, key)\n if (newValue.lazy) {\n const { loaded = false, loading = false } = oldValue || {}\n newValue.loaded = !!loaded\n newValue.loading = !!loading\n rootLazyRowKeys.push(key)\n }\n newTreeData[key] = newValue\n })\n // 根据懒加载数据更新 treeData\n const lazyKeys = Object.keys(normalizedLazyNode_)\n if (lazy.value && lazyKeys.length && rootLazyRowKeys.length) {\n lazyKeys.forEach((key) => {\n const oldValue = oldTreeData[key]\n const lazyNodeChildren = normalizedLazyNode_[key].children\n if (rootLazyRowKeys.includes(key)) {\n // 懒加载的 root 节点,更新一下原有的数据,原来的 children 一定是空数组\n if (newTreeData[key].children?.length !== 0) {\n throw new Error('[ElTable]children must be an empty array.')\n }\n newTreeData[key].children = lazyNodeChildren\n } else {\n const { loaded = false, loading = false } = oldValue || {}\n newTreeData[key] = {\n lazy: true,\n loaded: !!loaded,\n loading: !!loading,\n expanded: getExpanded(oldValue, key),\n children: lazyNodeChildren,\n level: undefined,\n }\n }\n })\n }\n }\n treeData.value = newTreeData\n instance.store?.updateTableScrollY()\n }\n\n watch(\n () => expandRowKeys.value,\n () => {\n updateTreeData(true)\n }\n )\n\n watch(\n () => normalizedData.value,\n () => {\n updateTreeData()\n }\n )\n watch(\n () => normalizedLazyNode.value,\n () => {\n updateTreeData()\n }\n )\n\n const updateTreeExpandKeys = (value: string[]) => {\n expandRowKeys.value = value\n updateTreeData()\n }\n const isUseLazy = (data: TreeData) => {\n return lazy.value && data && 'loaded' in data && !data.loaded\n }\n const toggleTreeExpansion = (row: T, expanded?: boolean) => {\n instance.store.assertRowKey()\n\n const rowKey = watcherData.rowKey.value\n const id = getRowIdentity(row, rowKey)\n const data = id && treeData.value[id]\n if (id && data && 'expanded' in data) {\n const oldExpanded = data.expanded\n expanded = isUndefined(expanded) ? !data.expanded : expanded\n treeData.value[id].expanded = expanded\n if (oldExpanded !== expanded) {\n instance.emit('expand-change', row, expanded)\n }\n expanded && isUseLazy(data) && loadData(row, id, data)\n instance.store.updateTableScrollY()\n }\n }\n\n const loadOrToggle = (row: T) => {\n instance.store.assertRowKey()\n const rowKey = watcherData.rowKey.value\n const id = getRowIdentity(row, rowKey)\n const data = treeData.value[id]\n if (isUseLazy(data)) {\n loadData(row, id, data)\n } else {\n toggleTreeExpansion(row, undefined)\n }\n }\n\n const loadData = (row: T, key: string, treeNode: TreeNode) => {\n const { load } = instance.props as unknown as TableProps<T>\n if (load && !treeData.value[key].loaded) {\n treeData.value[key].loading = true\n load(row, treeNode, (data) => {\n if (!isArray(data)) {\n throw new TypeError('[ElTable] data must be an array')\n }\n treeData.value[key].loading = false\n treeData.value[key].loaded = true\n treeData.value[key].expanded = true\n if (data.length) {\n lazyTreeNodeMap.value[key] = data\n }\n instance.emit('expand-change', row, true)\n })\n }\n }\n\n const updateKeyChildren = (key: string, data: T[]) => {\n const { lazy, rowKey } = instance.props as unknown as TableProps<T>\n if (!lazy) return\n if (!rowKey) throw new Error('[Table] rowKey is required in updateKeyChild')\n\n if (lazyTreeNodeMap.value[key]) {\n lazyTreeNodeMap.value[key] = data\n }\n }\n\n return {\n loadData,\n loadOrToggle,\n toggleTreeExpansion,\n updateTreeExpandKeys,\n updateTreeData,\n updateKeyChildren,\n normalize,\n states: {\n expandRowKeys,\n treeData,\n indent,\n lazy,\n lazyTreeNodeMap,\n lazyColumnIdentifier,\n childrenColumnName,\n checkStrictly,\n },\n }\n}\n\nexport default useTree\n"],"names":["_a","lazy"],"mappings":"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"}