element-plus
Version:
A Component Library for Vue 3
1 lines • 6.64 kB
Source Map (JSON)
{"version":3,"file":"cell.mjs","sources":["../../../../../../../packages/components/table-v2/src/renderers/cell.tsx"],"sourcesContent":["import { get } from 'lodash-unified'\nimport { isFunction, isObject } from '@element-plus/utils'\nimport { ExpandIcon, TableCell } from '../components'\nimport { Alignment } from '../constants'\nimport { placeholderSign } from '../private'\nimport { componentToSlot, enforceUnit } from '../utils'\n\nimport type { FunctionalComponent, UnwrapNestedRefs, VNode } from 'vue'\nimport type { CellRendererParams } from '../types'\nimport type { TableV2RowCellRenderParam } from '../components'\nimport type { UseNamespaceReturn } from '@element-plus/hooks'\nimport type { UseTableReturn } from '../use-table'\nimport type { TableV2Props } from '../table'\n\ntype CellRendererProps = TableV2RowCellRenderParam &\n Pick<\n TableV2Props,\n 'cellProps' | 'expandColumnKey' | 'indentSize' | 'iconSize' | 'rowKey'\n > &\n UnwrapNestedRefs<\n Pick<UseTableReturn, 'columnsStyles' | 'expandedRowKeys'>\n > & {\n ns: UseNamespaceReturn\n }\n\nconst CellRenderer: FunctionalComponent<CellRendererProps> = (\n {\n // renderer props\n columns,\n column,\n columnIndex,\n depth,\n expandIconProps,\n isScrolling,\n rowData,\n rowIndex,\n // from use-table\n columnsStyles,\n expandedRowKeys,\n ns,\n // derived props\n expandColumnKey,\n indentSize,\n iconSize,\n rowKey,\n },\n { slots }\n) => {\n const cellStyle = enforceUnit(columnsStyles[column.key])\n\n if (column.placeholderSign === placeholderSign) {\n return <div class={ns.em('row-cell', 'placeholder')} style={cellStyle} />\n }\n const { cellRenderer, dataKey, dataGetter } = column\n\n const columnCellRenderer = componentToSlot(cellRenderer)\n\n const CellComponent =\n columnCellRenderer ||\n slots.default ||\n ((props: CellRendererParams<any>) => <TableCell {...props} />)\n\n const cellData = isFunction(dataGetter)\n ? dataGetter({ columns, column, columnIndex, rowData, rowIndex })\n : get(rowData, dataKey ?? '')\n\n const cellProps = {\n class: ns.e('cell-text'),\n columns,\n column,\n columnIndex,\n cellData,\n isScrolling,\n rowData,\n rowIndex,\n }\n\n const Cell = CellComponent(cellProps)\n\n const kls = [\n ns.e('row-cell'),\n column.align === Alignment.CENTER && ns.is('align-center'),\n column.align === Alignment.RIGHT && ns.is('align-right'),\n ]\n\n const expandable = rowIndex >= 0 && column.key === expandColumnKey\n const expanded = rowIndex >= 0 && expandedRowKeys.includes(rowData[rowKey])\n\n let IconOrPlaceholder: VNode | undefined\n const iconStyle = `margin-inline-start: ${depth * indentSize}px;`\n if (expandable) {\n if (isObject(expandIconProps)) {\n IconOrPlaceholder = (\n <ExpandIcon\n {...expandIconProps}\n class={[ns.e('expand-icon'), ns.is('expanded', expanded)]}\n size={iconSize}\n expanded={expanded}\n style={iconStyle}\n expandable\n />\n )\n } else {\n IconOrPlaceholder = (\n <div\n style={[\n iconStyle,\n `width: ${iconSize}px; height: ${iconSize}px;`,\n ].join(' ')}\n />\n )\n }\n }\n\n return (\n <div\n // {...tryCall(cellProps, {\n // columns,\n // column,\n // columnIndex,\n // rowData,\n // rowIndex,\n // })}\n class={kls}\n style={cellStyle}\n >\n {IconOrPlaceholder}\n {Cell}\n </div>\n )\n}\n\nCellRenderer.inheritAttrs = false\n\nexport default CellRenderer\n"],"names":["CellRenderer","columns","column","columnIndex","depth","expandIconProps","isScrolling","rowData","rowIndex","columnsStyles","expandedRowKeys","ns","expandColumnKey","indentSize","iconSize","rowKey","slots","cellStyle","enforceUnit","_createVNode","TableCell","cellRenderer","dataKey","dataGetter","default","cellData","class","_mergeProps","kls","e","align","expandable","expanded","iconStyle","IconOrPlaceholder"],"mappings":"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"}