tdesign-vue-next
Version:
TDesign Component for vue-next
1 lines • 7.46 kB
Source Map (JSON)
{"version":3,"file":"useMultiHeader.mjs","sources":["../../../../components/table/hooks/useMultiHeader.ts"],"sourcesContent":["/**\n * 多级表头相关逻辑\n ** */\n\nimport { RowspanColspan } from '../type';\nimport { BaseTableColumns, ThRowspanAndColspan } from '../types';\n\n// 获取节点深度,即表头总层级\nexport function getNodeDepth(columns: BaseTableColumns, depthMap: Map<any, number>, depth = 1): number {\n let maxDepth = depth;\n // 树形结构递归已有较多函数上下文,此处不使用 forEach 迭代\n for (let i = 0, len = columns.length; i < len; i++) {\n const col = columns[i];\n depthMap.set(col, depth);\n if (col?.children?.length) {\n const deep = getNodeDepth(col.children, depthMap, depth + 1);\n if (deep > maxDepth) {\n maxDepth = deep;\n }\n }\n }\n return maxDepth;\n}\n\n// 或当前节点的叶子结点宽度\nexport function getChildrenNodeWidth(node: BaseTableColumns[0], count = 0) {\n let countNew = count;\n const childrenList = node?.children || [];\n for (let i = 0, len = childrenList.length; i < len; i++) {\n const item = childrenList[i];\n if (item.children) {\n countNew = getChildrenNodeWidth(item, countNew);\n } else {\n countNew += 1;\n }\n }\n return countNew;\n}\n\n// 获取多级表头对应的 colspan 和 rowspan,以及叶子节点\nexport function getThRowspanAndColspan(columns: BaseTableColumns) {\n const depthMap = new Map<any, number>();\n const columnsDepth = getNodeDepth(columns, depthMap);\n const rowspanAndColspanMap: ThRowspanAndColspan = new Map();\n const loop = (nodes: BaseTableColumns, leafColumns: BaseTableColumns) => {\n for (let i = 0, len = nodes.length; i < len; i++) {\n const col = nodes[i];\n const rowspan = col.children ? 1 : columnsDepth - depthMap.get(col) + 1;\n const colspan = col.children ? getChildrenNodeWidth(col) : 1;\n // 避免存在 rowspan 或者 colspan 空属性\n const span: RowspanColspan = {};\n rowspan > 1 && (span.rowspan = rowspan);\n colspan > 1 && (span.colspan = colspan);\n rowspanAndColspanMap.set(col, span);\n if (col?.children?.length) {\n loop(col.children, leafColumns);\n } else {\n leafColumns.push(col);\n }\n }\n };\n const leafColumns: BaseTableColumns = [];\n loop(columns, leafColumns);\n return { rowspanAndColspanMap, leafColumns };\n}\n\n// 表头渲染所需的二维数据\nexport function getThList(columns: BaseTableColumns): Array<BaseTableColumns> {\n const loop = (nodes: BaseTableColumns, thRows: Array<BaseTableColumns>) => {\n let thRowData: BaseTableColumns = [];\n let children: BaseTableColumns = [];\n for (let i = 0, len = nodes.length; i < len; i++) {\n const node = nodes[i];\n const thList = [node];\n thRowData = thRowData.concat(thList);\n if (node?.children?.length) {\n children = children.concat(node.children);\n }\n }\n if (children?.length) {\n loop(children, thRows);\n }\n thRows.push(thRowData);\n return thRowData;\n };\n let list: Array<BaseTableColumns> = [];\n loop(columns, list);\n list = list.reverse();\n return list;\n}\n"],"names":["getNodeDepth","columns","depthMap","depth","arguments","length","undefined","maxDepth","i","len","_col$children","col","set","children","deep","getChildrenNodeWidth","node","count","countNew","childrenList","item","getThRowspanAndColspan","Map","columnsDepth","rowspanAndColspanMap","loop","nodes","leafColumns","_col$children2","rowspan","get","colspan","span","push","getThList","thRows","_children","thRowData","_node$children","thList","concat","list","reverse"],"mappings":"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"}