element-plus
Version:
A Component Library for Vue 3
1 lines • 18.7 kB
Source Map (JSON)
{"version":3,"file":"render-helper.mjs","sources":["../../../../../../../packages/components/table/src/table-body/render-helper.ts"],"sourcesContent":["import { computed, h, inject } from 'vue'\nimport { merge } from 'lodash-unified'\nimport { useNamespace } from '@element-plus/hooks'\nimport { isBoolean, isPropAbsent } from '@element-plus/utils'\nimport { getRowIdentity } from '../util'\nimport { TABLE_INJECTION_KEY } from '../tokens'\nimport useEvents from './events-helper'\nimport useStyles from './styles-helper'\nimport TdWrapper from './td-wrapper.vue'\n\nimport type { TableBodyProps } from './defaults'\nimport type {\n DefaultRow,\n RenderRowData,\n Table,\n TableColumnCtx,\n TableProps,\n TreeNode,\n} from '../table/defaults'\nimport type { TreeData } from '../store/tree'\nimport type { TableOverflowTooltipOptions } from '../util'\n\nfunction useRender<T extends DefaultRow>(props: Partial<TableBodyProps<T>>) {\n const parent = inject(TABLE_INJECTION_KEY) as Table<T>\n const ns = useNamespace('table')\n const {\n handleDoubleClick,\n handleClick,\n handleContextMenu,\n handleMouseEnter,\n handleMouseLeave,\n handleCellMouseEnter,\n handleCellMouseLeave,\n tooltipContent,\n tooltipTrigger,\n } = useEvents(props)\n const {\n getRowStyle,\n getRowClass,\n getCellStyle,\n getCellClass,\n getSpan,\n getColspanRealWidth,\n } = useStyles(props)\n\n let displayIndex = -1\n\n const firstDefaultColumnIndex = computed(() => {\n return props.store?.states.columns.value.findIndex(\n ({ type }) => type === 'default'\n )\n })\n const getKeyOfRow = (row: T, index: number) => {\n const rowKey = (parent?.props as Partial<TableProps<T>>)?.rowKey\n if (rowKey) {\n return getRowIdentity(row, rowKey)\n }\n return index\n }\n const rowRender = (\n row: T,\n $index: number,\n treeRowData?: TreeNode,\n expanded = false\n ) => {\n const { tooltipEffect, tooltipOptions, store } = props\n const { indent, columns } = store!.states\n const rowClasses = []\n let display = true\n if (treeRowData) {\n rowClasses.push(ns.em('row', `level-${treeRowData.level}`))\n display = !!treeRowData.display\n }\n if ($index === 0) {\n displayIndex = -1\n }\n if (props.stripe && display) {\n displayIndex++\n }\n rowClasses.push(...getRowClass(row, $index, displayIndex))\n const displayStyle = display ? null : { display: 'none' }\n return h(\n 'tr',\n {\n style: [displayStyle, getRowStyle(row, $index)],\n class: rowClasses,\n key: getKeyOfRow(row, $index),\n onDblclick: ($event: Event) => handleDoubleClick($event, row),\n onClick: ($event: Event) => handleClick($event, row),\n onContextmenu: ($event: Event) => handleContextMenu($event, row),\n onMouseenter: () => handleMouseEnter($index),\n onMouseleave: handleMouseLeave,\n },\n columns.value.map((column, cellIndex) => {\n const { rowspan, colspan } = getSpan(row, column, $index, cellIndex)\n if (!rowspan || !colspan) {\n return null\n }\n const columnData = Object.assign({}, column)\n columnData.realWidth = getColspanRealWidth(\n columns.value,\n colspan,\n cellIndex\n )\n const data: RenderRowData<T> = {\n store: store!,\n _self: props.context || parent!,\n column: columnData,\n row,\n $index,\n cellIndex,\n expanded,\n }\n if (cellIndex === firstDefaultColumnIndex.value && treeRowData) {\n data.treeNode = {\n indent: treeRowData.level && treeRowData.level * indent.value,\n level: treeRowData.level,\n }\n if (isBoolean(treeRowData.expanded)) {\n data.treeNode.expanded = treeRowData.expanded\n // 表明是懒加载\n if ('loading' in treeRowData) {\n data.treeNode.loading = treeRowData.loading\n }\n if ('noLazyChildren' in treeRowData) {\n data.treeNode.noLazyChildren = treeRowData.noLazyChildren\n }\n }\n }\n const baseKey = `${getKeyOfRow(row, $index)},${cellIndex}`\n const patchKey = columnData.columnKey || columnData.rawColumnKey || ''\n const mergedTooltipOptions =\n column.showOverflowTooltip &&\n merge(\n {\n effect: tooltipEffect,\n },\n tooltipOptions,\n column.showOverflowTooltip\n )\n return h(\n TdWrapper,\n {\n style: getCellStyle($index, cellIndex, row, column),\n class: getCellClass($index, cellIndex, row, column, colspan - 1),\n key: `${patchKey}${baseKey}`,\n rowspan,\n colspan,\n onMouseenter: ($event: MouseEvent) =>\n handleCellMouseEnter(\n $event,\n row,\n mergedTooltipOptions as TableOverflowTooltipOptions\n ),\n onMouseleave: handleCellMouseLeave,\n },\n {\n default: () => cellChildren(cellIndex, column, data),\n }\n )\n })\n )\n }\n const cellChildren = <T extends DefaultRow>(\n _cellIndex: number,\n column: TableColumnCtx<T>,\n data: RenderRowData<T>\n ) => {\n return column.renderCell(data)\n }\n\n const wrappedRowRender = (row: T, $index: number) => {\n const store = props.store!\n const { isRowExpanded, assertRowKey } = store\n const { treeData, lazyTreeNodeMap, childrenColumnName, rowKey } =\n store.states\n const columns = store.states.columns.value\n const hasExpandColumn = columns.some(({ type }) => type === 'expand')\n if (hasExpandColumn) {\n const expanded = isRowExpanded(row)\n const tr = rowRender(row, $index, undefined, expanded)\n const renderExpanded = parent?.renderExpanded\n if (!renderExpanded) {\n console.error('[Element Error]renderExpanded is required.')\n return tr\n }\n\n // 在没设置时候避免 h 执行\n // 非保留模式且未展开时,直接返回\n // 使用二维数组包装,避免修改 $index\n const rows = [[tr]]\n\n // 仅在需要时创建展开行(保留模式或展开状态)\n if (parent.props.preserveExpandedContent || expanded) {\n rows[0].push(\n h(\n 'tr',\n {\n key: `expanded-row__${tr.key as string}`,\n style: { display: expanded ? '' : 'none' },\n },\n [\n h(\n 'td',\n {\n colspan: columns.length,\n class: `${ns.e('cell')} ${ns.e('expanded-cell')}`,\n },\n [renderExpanded({ row, $index, store, expanded })]\n ),\n ]\n )\n )\n }\n\n return rows\n } else if (Object.keys(treeData.value).length) {\n assertRowKey()\n // TreeTable 时,rowKey 必须由用户设定,不使用 getKeyOfRow 计算\n // 在调用 rowRender 函数时,仍然会计算 rowKey,不太好的操作\n const key = getRowIdentity(row, rowKey.value)\n let cur = treeData.value[key]\n let treeRowData = null\n if (cur) {\n treeRowData = {\n expanded: cur.expanded,\n level: cur.level,\n display: true,\n noLazyChildren: undefined as boolean | undefined,\n loading: undefined as boolean | undefined,\n }\n if (isBoolean(cur.lazy)) {\n if (treeRowData && isBoolean(cur.loaded) && cur.loaded) {\n treeRowData.noLazyChildren = !(cur.children && cur.children.length)\n }\n treeRowData.loading = cur.loading\n }\n }\n const tmp = [rowRender(row, $index, treeRowData ?? undefined)]\n // 渲染嵌套数据\n if (cur) {\n // currentRow 记录的是 index,所以还需主动增加 TreeTable 的 index\n let i = 0\n const traverse = (children: T[], parent: TreeData) => {\n if (!(children && children.length && parent)) return\n children.forEach((node) => {\n // 父节点的 display 状态影响子节点的显示状态\n const innerTreeRowData: Partial<Record<string, any>> = {\n display: parent.display && parent.expanded,\n level: parent.level! + 1,\n expanded: false,\n noLazyChildren: false,\n loading: false,\n }\n const childKey = getRowIdentity(node, rowKey.value)\n if (isPropAbsent(childKey)) {\n throw new Error('For nested data item, row-key is required.')\n }\n cur = { ...treeData.value[childKey] }\n // 对于当前节点,分成有无子节点两种情况。\n // 如果包含子节点的,设置 expanded 属性。\n // 对于它子节点的 display 属性由它本身的 expanded 与 display 共同决定。\n if (cur) {\n innerTreeRowData.expanded = cur.expanded\n // 懒加载的某些节点,level 未知\n cur.level = cur.level || innerTreeRowData.level\n cur.display = !!(cur.expanded && innerTreeRowData.display)\n if (isBoolean(cur.lazy)) {\n if (isBoolean(cur.loaded) && cur.loaded) {\n innerTreeRowData.noLazyChildren = !(\n cur.children && cur.children.length\n )\n }\n innerTreeRowData.loading = cur.loading\n }\n }\n i++\n tmp.push(rowRender(node, $index + i, innerTreeRowData))\n if (cur) {\n const nodes =\n lazyTreeNodeMap.value[childKey] ||\n node[childrenColumnName.value]\n traverse(nodes, cur)\n }\n })\n }\n // 对于 root 节点,display 一定为 true\n cur.display = true\n const nodes =\n lazyTreeNodeMap.value[key] || row[childrenColumnName.value]\n traverse(nodes, cur)\n }\n return tmp\n } else {\n return rowRender(row, $index, undefined)\n }\n }\n\n return {\n wrappedRowRender,\n tooltipContent,\n tooltipTrigger,\n }\n}\n\nexport default useRender\n"],"names":["TdWrapper","parent","nodes"],"mappings":"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"}