element-plus
Version:
A Component Library for Vue 3
1 lines • 7.73 kB
Source Map (JSON)
{"version":3,"file":"cell.mjs","sources":["../../../../../../../packages/components/table-v2/src/renderers/cell.tsx"],"sourcesContent":["import { renderSlot } from 'vue'\nimport { 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, tryCall } from '../utils'\n\nimport type { FunctionalComponent, UnwrapNestedRefs, VNode } from 'vue'\nimport type { TableV2RowCellRenderParam } from '../components'\nimport type { Translator, 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<Pick<UseTableReturn, 'expandedRowKeys'>> & {\n ns: UseNamespaceReturn\n t: Translator\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 style,\n expandedRowKeys,\n ns,\n t,\n // derived props\n cellProps: _cellProps,\n expandColumnKey,\n indentSize,\n iconSize,\n rowKey,\n },\n { slots }\n) => {\n const cellStyle = enforceUnit(style)\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 cellData = isFunction(dataGetter)\n ? dataGetter({ columns, column, columnIndex, rowData, rowIndex })\n : get(rowData, dataKey ?? '')\n\n const extraCellProps = tryCall(_cellProps, {\n cellData,\n columns,\n column,\n columnIndex,\n rowIndex,\n rowData,\n })\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 const columnCellRenderer = componentToSlot<typeof cellProps>(cellRenderer)\n const Cell = columnCellRenderer\n ? columnCellRenderer(cellProps)\n : renderSlot(slots, 'default', cellProps, () => [\n <TableCell {...cellProps}></TableCell>,\n ])\n\n const kls = [\n ns.e('row-cell'),\n column.class,\n column.align === Alignment.CENTER && ns.is('align-center'),\n column.align === Alignment.RIGHT && ns.is('align-right'),\n ]\n\n const expandable =\n rowIndex >= 0 && expandColumnKey && 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 ariaLabel={t(\n expanded ? 'el.table.collapseRowLabel' : 'el.table.expandRowLabel'\n )}\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 class={kls} style={cellStyle} {...extraCellProps} role=\"cell\">\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","style","expandedRowKeys","ns","t","cellProps","_cellProps","expandColumnKey","indentSize","iconSize","rowKey","slots","cellStyle","enforceUnit","placeholderSign","_createVNode","em","cellRenderer","dataKey","dataGetter","cellData","isFunction","get","extraCellProps","tryCall","class","e","columnCellRenderer","componentToSlot","Cell","renderSlot","TableCell","kls","align","Alignment","CENTER","is","RIGHT","expandable","key","expanded","includes","IconOrPlaceholder","iconStyle","isObject","ExpandIcon","_mergeProps","join","inheritAttrs"],"mappings":"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"}