UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 7.09 kB
{"version":3,"file":"header-cell.mjs","sources":["../../../../../../../packages/components/table-v2/src/renderers/header-cell.tsx"],"sourcesContent":["import { renderSlot } from 'vue'\nimport { HeaderCell, SortIcon } from '../components'\n// import ColumnResizer from '../table-column-resizer'\nimport { Alignment, SortOrder, oppositeOrderMap } from '../constants'\nimport { placeholderSign } from '../private'\nimport { componentToSlot, enforceUnit, tryCall } from '../utils'\n\nimport type { FunctionalComponent, UnwrapNestedRefs } from 'vue'\nimport type { Translator, UseNamespaceReturn } from '@element-plus/hooks'\nimport type { TableV2HeaderRowCellRendererParams } from '../components'\nimport type { UseTableReturn } from '../use-table'\nimport type { TableV2Props } from '../table'\n\nexport type HeaderCellRendererProps = TableV2HeaderRowCellRendererParams &\n UnwrapNestedRefs<Pick<UseTableReturn, 'onColumnSorted'>> &\n Pick<TableV2Props, 'sortBy' | 'sortState' | 'headerCellProps'> & {\n ns: UseNamespaceReturn\n t: Translator\n }\n\nconst HeaderCellRenderer: FunctionalComponent<HeaderCellRendererProps> = (\n props,\n { slots }\n) => {\n const { column, ns, t, style, onColumnSorted } = props\n\n const cellStyle = enforceUnit(style)\n\n if (column.placeholderSign === placeholderSign) {\n return (\n <div class={ns.em('header-row-cell', 'placeholder')} style={cellStyle} />\n )\n }\n\n const { headerCellRenderer, headerClass, sortable } = column\n\n /**\n * render Cell children\n */\n\n const cellProps = {\n ...props,\n class: ns.e('header-cell-text'),\n }\n\n const columnCellRenderer =\n componentToSlot<typeof cellProps>(headerCellRenderer)\n\n const Cell = columnCellRenderer\n ? columnCellRenderer(cellProps)\n : renderSlot(slots, 'default', cellProps, () => [\n <HeaderCell {...cellProps} />,\n ])\n\n /**\n * Render cell container and sort indicator\n */\n const { sortBy, sortState, headerCellProps } = props\n\n let sorting: boolean, sortOrder: SortOrder, ariaSort: string | undefined\n if (sortState) {\n const order = sortState[column.key!]\n sorting = Boolean(oppositeOrderMap[order])\n sortOrder = sorting ? order : SortOrder.ASC\n } else {\n sorting = column.key === sortBy.key\n sortOrder = sorting ? sortBy.order : SortOrder.ASC\n }\n if (sortOrder === SortOrder.ASC) {\n ariaSort = 'ascending'\n } else if (sortOrder === SortOrder.DESC) {\n ariaSort = 'descending'\n } else {\n ariaSort = undefined\n }\n\n const cellKls = [\n ns.e('header-cell'),\n tryCall(headerClass, props, ''),\n column.align === Alignment.CENTER && ns.is('align-center'),\n column.align === Alignment.RIGHT && ns.is('align-right'),\n sortable && ns.is('sortable'),\n ]\n\n const cellWrapperProps = {\n ...tryCall(headerCellProps, props),\n onClick: column.sortable ? onColumnSorted : undefined,\n ariaSort: sortable ? ariaSort : undefined,\n class: cellKls,\n style: cellStyle,\n ['data-key']: column.key,\n }\n\n // For now we don't deliver resizable column feature since it has some UX issue.\n return (\n <div {...cellWrapperProps} role=\"columnheader\">\n {Cell}\n\n {sortable && (\n <SortIcon\n class={[ns.e('sort-icon'), sorting && ns.is('sorting')]}\n sortOrder={sortOrder}\n ariaLabel={t('el.table.sortLabel', { column: column.title || '' })}\n />\n )}\n </div>\n )\n}\n\nexport default HeaderCellRenderer\nexport type HeaderCellSlotProps = HeaderCellRendererProps & { class: string }\n"],"names":["HeaderCellRenderer","props","slots","column","ns","t","style","onColumnSorted","cellStyle","enforceUnit","placeholderSign","_createVNode","em","headerCellRenderer","headerClass","sortable","cellProps","class","e","columnCellRenderer","componentToSlot","Cell","renderSlot","HeaderCell","sortBy","sortState","headerCellProps","sorting","sortOrder","ariaSort","order","key","Boolean","oppositeOrderMap","SortOrder","ASC","DESC","undefined","cellKls","tryCall","align","Alignment","CENTER","is","RIGHT","cellWrapperProps","onClick","_mergeProps","SortIcon","title"],"mappings":"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"}