tdesign-vue-next
Version:
TDesign Component for vue-next
1 lines • 26.3 kB
Source Map (JSON)
{"version":3,"file":"useTreeData.mjs","sources":["../../../../components/table/hooks/useTreeData.tsx"],"sourcesContent":["import { SetupContext, ref, watch, toRefs, onUnmounted, computed, h, shallowRef } from 'vue';\nimport {\n AddRectangleIcon as TdAddRectangleIcon,\n MinusRectangleIcon as TdMinusRectangleIcon,\n} from 'tdesign-icons-vue-next';\nimport { get } from 'lodash-es';\nimport TableTreeStore, { SwapParams } from '@tdesign/common-js/table/tree-store';\nimport {\n TdEnhancedTableProps,\n PrimaryTableCol,\n TableRowData,\n TableRowValue,\n TableRowState,\n PrimaryTableCellParams,\n} from '../type';\nimport useClassName from './useClassName';\nimport { renderCell } from '../components/tr';\nimport { useConfig, useGlobalIcon, useTNodeDefault } from '@tdesign/shared-hooks';\n\nimport useTreeDataExpand from './useTreeDataExpand';\n\nexport default function useTreeData(props: TdEnhancedTableProps, context: SetupContext) {\n const { data, columns } = toRefs(props);\n const { t, globalConfig } = useConfig('table', props.locale);\n const { AddRectangleIcon, MinusRectangleIcon } = useGlobalIcon({\n AddRectangleIcon: TdAddRectangleIcon,\n MinusRectangleIcon: TdMinusRectangleIcon,\n });\n\n const store = ref(new TableTreeStore());\n const treeNodeCol = shallowRef<PrimaryTableCol>();\n const dataSource = ref<TdEnhancedTableProps['data']>([]);\n const { tableTreeClasses } = useClassName();\n const renderTNode = useTNodeDefault();\n\n const rowDataKeys = computed(() => ({\n rowKey: props.rowKey || 'id',\n childrenKey: props.tree?.childrenKey || 'children',\n }));\n\n const {\n tExpandedTreeNode,\n isDefaultExpandAllExecute,\n isDefaultExpandedTreeNodesExecute,\n expandAll,\n foldAll,\n updateExpandOnDataChange,\n onExpandFoldIconClick,\n } = useTreeDataExpand(props, { store, dataSource, rowDataKeys });\n\n const checkedColumn = computed(() => columns.value.find((col) => col.colKey === 'row-select'));\n\n watch(checkedColumn, (column) => {\n if (!store.value) return;\n store.value.updateDisabledState(dataSource.value, column, rowDataKeys.value);\n });\n\n const foldIcon = (context: PrimaryTableCellParams<TableRowData>) => {\n const params = { ...context, type: 'fold' };\n const defaultFoldIcon = t(globalConfig.value.treeExpandAndFoldIcon, h, params) || <MinusRectangleIcon />;\n return renderTNode('treeExpandAndFoldIcon', {\n defaultNode: defaultFoldIcon,\n params,\n });\n };\n\n const expandIcon = (context: PrimaryTableCellParams<TableRowData>) => {\n const params = { ...context, type: 'expand' };\n const defaultExpandIcon = t(globalConfig.value.treeExpandAndFoldIcon, h, params) || <AddRectangleIcon />;\n return renderTNode('treeExpandAndFoldIcon', {\n defaultNode: defaultExpandIcon,\n params,\n });\n };\n\n watch(\n [data],\n () => {\n if (props.tree) {\n resetData(data.value);\n } else {\n dataSource.value = data.value;\n }\n },\n { immediate: true },\n );\n\n // 不能启用这部分代码。如果启用,会导致选中树形结构子节点时数据被重置,全部节点收起\n // watch([columns, rowDataKeys], ([columns, rowDataKeys]) => {\n // store.value.initialTreeStore(data.value, columns, rowDataKeys);\n // });\n\n onUnmounted(() => {\n if (!props.tree) return;\n store.value.treeDataMap?.clear();\n store.value = null;\n });\n\n watch(\n () => [columns, props.tree?.treeNodeColumnIndex],\n () => {\n treeNodeCol.value = getTreeNodeColumnCol();\n },\n { immediate: true },\n );\n\n function resetData(data: TableRowData[]) {\n const { columns, expandedTreeNodes, defaultExpandedTreeNodes, tree } = props;\n store.value.initialTreeStore(data, columns, rowDataKeys.value);\n const defaultNeedExpand = Boolean(!isDefaultExpandedTreeNodesExecute.value && defaultExpandedTreeNodes?.length);\n const needExpandAll = Boolean(tree?.defaultExpandAll && !isDefaultExpandAllExecute.value);\n if ((tExpandedTreeNode.value?.length && !!(expandedTreeNodes || defaultNeedExpand)) || needExpandAll) {\n updateExpandOnDataChange(data);\n isDefaultExpandedTreeNodesExecute.value = true;\n } else {\n dataSource.value = [...data];\n }\n }\n\n function getTreeNodeStyle(level: number) {\n if (level === undefined) return;\n const indent = props.tree?.indent === undefined ? 24 : props.tree?.indent;\n // 默认 1px 是为了临界省略\n return indent ? { paddingLeft: `${level * indent || 1}px` } : {};\n }\n\n /**\n * 组件实例方法,展开或收起某一行\n * @param p 行数据\n */\n function toggleExpandData(p: { row: TableRowData; rowIndex: number }, trigger?: 'expand-fold-icon' | 'row-click') {\n const currentData = { ...p };\n if (p.row.VIRTUAL_SCROLL_INDEX !== undefined) {\n currentData.rowIndex = p.row.VIRTUAL_SCROLL_INDEX;\n }\n dataSource.value = [...store.value.toggleExpandData(currentData, dataSource.value, rowDataKeys.value)];\n const rowValue = get(p.row, rowDataKeys.value.rowKey);\n const rowState = store.value?.treeDataMap?.get(rowValue);\n props.onTreeExpandChange?.({\n row: p.row,\n rowIndex: p.rowIndex,\n rowState,\n trigger,\n });\n }\n\n function getTreeNodeColumnCol() {\n const { columns } = props;\n let treeNodeColumnIndex = props.tree?.treeNodeColumnIndex || 0;\n // type 存在,则表示表格内部渲染的特殊列,比如:展开行按钮、复选框、单选按钮等,不能作为树结点列。因此树结点展开列向后顺移\n while (\n columns[treeNodeColumnIndex]?.type ||\n columns[treeNodeColumnIndex]?.colKey === '__EXPAND_ROW_ICON_COLUMN__'\n ) {\n treeNodeColumnIndex += 1;\n }\n return columns[treeNodeColumnIndex];\n }\n\n function formatTreeColumn(col: PrimaryTableCol): PrimaryTableCol {\n if (!props.tree || col.colKey !== treeNodeCol.value.colKey) return col;\n const newCol = { ...treeNodeCol.value };\n newCol.cell = (h, p) => {\n const cellInfo = renderCell({ ...p, col: { ...treeNodeCol.value } }, context.slots, {\n cellEmptyContent: props.cellEmptyContent,\n });\n const currentState = store.value.treeDataMap.get(get(p.row, rowDataKeys.value.rowKey));\n const colStyle = getTreeNodeStyle(currentState?.level);\n const classes = { [tableTreeClasses.inlineCol]: !!col.ellipsis };\n const childrenNodes = get(p.row, rowDataKeys.value.childrenKey);\n if ((childrenNodes && childrenNodes instanceof Array) || childrenNodes === true) {\n const iconNode = store.value.treeDataMap.get(get(p.row, rowDataKeys.value.rowKey))?.expanded\n ? foldIcon(p)\n : expandIcon(p);\n return (\n <div class={[tableTreeClasses.col, classes]} style={colStyle}>\n {!!(childrenNodes.length || childrenNodes === true) && (\n <span\n class={tableTreeClasses.icon}\n onClick={(e: MouseEvent) => {\n onExpandFoldIconClick(p, 'expand-fold-icon');\n e.stopPropagation();\n }}\n >\n {iconNode}\n </span>\n )}\n {cellInfo}\n </div>\n );\n }\n return (\n <div style={colStyle} class={[classes, tableTreeClasses.leafNode]}>\n <span class={tableTreeClasses.icon}></span>\n {cellInfo}\n </div>\n );\n };\n // 树形节点会显示操作符号 [+] 和 [-],但省略显示的浮层中不需要操作符\n if (newCol.ellipsis === true) {\n newCol.ellipsis = (h, p) => renderCell({ ...p, col: { ...treeNodeCol.value } }, context.slots);\n }\n return newCol;\n }\n\n /**\n * 对外暴露的组件实例方法,设置行数据,自动刷新界面\n * @param key 当前行唯一标识值\n * @param newRowData 新行数据\n */\n function setData<T>(key: TableRowValue, newRowData: T) {\n const rowIndex = store.value.updateData(key, newRowData, dataSource.value, rowDataKeys.value);\n const newData = [...dataSource.value];\n newData[rowIndex] = newRowData;\n dataSource.value = newData;\n }\n\n /**\n * 对外暴露的组件实例方法,获取当前行全部数据\n * @param key 行唯一标识\n * @returns {TableRowState} 当前行数据\n */\n function getData(key: TableRowValue): TableRowState {\n return store.value.getData(key);\n }\n\n /**\n * 对外暴露的组件实例方法,移除指定节点\n * @param key 行唯一标识\n */\n function remove(key: TableRowValue) {\n // 引用传值,可自动更新 dataSource。(dataSource 本是内部变量,可以在任何地方进行任何改变)\n dataSource.value = [...store.value.remove(key, dataSource.value, rowDataKeys.value)];\n }\n\n /**\n * 移除子节点\n * @param key 行唯一标识\n */\n function removeChildren(key: TableRowValue) {\n dataSource.value = [...store.value.removeChildren(key, dataSource.value, rowDataKeys.value)];\n }\n\n /**\n * 对外暴露的组件实例方法,为当前节点添加子节点,默认添加到最后一个节点\n * @param key 当前节点唯一标识,值为空,则表示给根节点添加元素\n * @param newData 待添加的新节点\n */\n function appendTo<T>(key: TableRowValue = '', newData: T | T[]) {\n if (!key) {\n dataSource.value = store.value.appendToRoot(newData, dataSource.value, rowDataKeys.value);\n return;\n }\n // 引用传值,可自动更新 dataSource。(dataSource 本是内部变量,可以在任何地方进行任何改变)\n dataSource.value = [...store.value.appendTo(key, newData, dataSource.value, rowDataKeys.value)];\n }\n\n /**\n * 对外暴露的组件实例方法,当前节点之后,插入节点\n */\n function insertAfter<T>(rowValue: TableRowValue, newData: T) {\n dataSource.value = [...store.value.insertAfter(rowValue, newData, dataSource.value, rowDataKeys.value)];\n }\n\n /**\n * 对外暴露的组件实例方法,当前节点之后,插入节点\n */\n function insertBefore<T>(rowValue: TableRowValue, newData: T) {\n dataSource.value = [...store.value.insertBefore(rowValue, newData, dataSource.value, rowDataKeys.value)];\n }\n\n /**\n * 对外暴露的组件实例方法,交换行数据\n */\n function swapData(params: SwapParams<TableRowData>) {\n const r = store.value.swapData(dataSource.value, params, rowDataKeys.value);\n if (r.result) {\n dataSource.value = [...r.dataSource];\n } else {\n const params = {\n code: r.code,\n reason: r.reason,\n };\n props.onAbnormalDragSort?.(params);\n }\n }\n\n /**\n * 对外暴露的组件实例方法,获取全部数据的树形结构\n * @param key 节点唯一标识\n */\n function getTreeNode() {\n return store.value.getTreeNode(dataSource.value, rowDataKeys.value);\n }\n\n /**\n * 对外暴露的组件实例方法,获取树形结构展开的节点\n */\n function getTreeExpandedRow(type: 'unique' | 'data' | 'all' = 'data') {\n return store.value.getTreeExpandedRow(dataSource.value, rowDataKeys.value, type);\n }\n\n return {\n store,\n rowDataKeys,\n dataSource,\n swapData,\n setData,\n getData,\n remove,\n removeChildren,\n appendTo,\n insertAfter,\n insertBefore,\n formatTreeColumn,\n toggleExpandData,\n expandAll,\n foldAll,\n getTreeNode,\n resetData,\n getTreeExpandedRow,\n onExpandFoldIconClick,\n };\n}\n"],"names":["useTreeData","props","context","_toRefs","toRefs","data","columns","_useConfig","useConfig","locale","t","globalConfig","_useGlobalIcon","useGlobalIcon","AddRectangleIcon","TdAddRectangleIcon","MinusRectangleIcon","TdMinusRectangleIcon","store","ref","TableTreeStore","treeNodeCol","shallowRef","dataSource","_useClassName","useClassName","tableTreeClasses","renderTNode","useTNodeDefault","rowDataKeys","computed","_props$tree","rowKey","childrenKey","tree","_useTreeDataExpand","useTreeDataExpand","tExpandedTreeNode","isDefaultExpandAllExecute","isDefaultExpandedTreeNodesExecute","expandAll","foldAll","updateExpandOnDataChange","onExpandFoldIconClick","checkedColumn","value","find","col","colKey","watch","column","updateDisabledState","foldIcon","params","_objectSpread","type","defaultFoldIcon","treeExpandAndFoldIcon","h","_createVNode","defaultNode","expandIcon","defaultExpandIcon","resetData","immediate","onUnmounted","_store$value$treeData","treeDataMap","clear","_props$tree2","treeNodeColumnIndex","getTreeNodeColumnCol","_tExpandedTreeNode$va","expandedTreeNodes","defaultExpandedTreeNodes","initialTreeStore","defaultNeedExpand","Boolean","length","needExpandAll","defaultExpandAll","_toConsumableArray","getTreeNodeStyle","level","_props$tree3","_props$tree4","indent","paddingLeft","concat","toggleExpandData","p","trigger","_store$value","_props$onTreeExpandCh","currentData","row","VIRTUAL_SCROLL_INDEX","rowIndex","rowValue","get","rowState","onTreeExpandChange","call","_props$tree5","_columns2$treeNodeCol","_columns2$treeNodeCol2","formatTreeColumn","newCol","cell","cellInfo","renderCell","slots","cellEmptyContent","currentState","colStyle","classes","_defineProperty","inlineCol","ellipsis","childrenNodes","Array","_store$value$treeData2","iconNode","expanded","icon","onClick","e","stopPropagation","leafNode","setData","key","newRowData","updateData","newData","getData","remove","removeChildren","appendTo","arguments","undefined","appendToRoot","insertAfter","insertBefore","swapData","r","result","_props$onAbnormalDrag","code","reason","onAbnormalDragSort","getTreeNode","getTreeExpandedRow"],"mappings":"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"}