UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 5.36 kB
{"version":3,"file":"header-cell.mjs","sources":["../../../../../../../packages/components/table-v2/src/renderers/header-cell.tsx"],"sourcesContent":["import { 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 { UseNamespaceReturn } from '@element-plus/hooks'\nimport type { TableV2HeaderRowCellRendererParams } from '../components'\nimport type { UseTableReturn } from '../use-table'\nimport type { TableV2Props } from '../table'\nimport type { TableV2HeaderCell } from '../header-cell'\n\ntype HeaderCellRendererProps = TableV2HeaderRowCellRendererParams &\n UnwrapNestedRefs<Pick<UseTableReturn, 'columnsStyles' | 'onColumnSorted'>> &\n Pick<TableV2Props, 'sortBy' | 'sortState' | 'headerCellProps'> & {\n ns: UseNamespaceReturn\n }\n\nconst HeaderCellRenderer: FunctionalComponent<HeaderCellRendererProps> = (\n props,\n { slots }\n) => {\n const { column, ns, columnsStyles, onColumnSorted } = props\n\n const style = enforceUnit(columnsStyles[column.key])\n\n if (column.placeholderSign === placeholderSign) {\n return <div class={ns.em('header-row-cell', 'placeholder')} style={style} />\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 cellRenderer =\n componentToSlot<typeof cellProps>(headerCellRenderer) ||\n slots.default ||\n ((props: TableV2HeaderCell) => <HeaderCell {...props} />)\n\n const Cell = cellRenderer(cellProps)\n\n /**\n * Render cell container and sort indicator\n */\n const { sortBy, sortState, headerCellProps } = props\n\n let sorting: boolean, sortOrder: SortOrder\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\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 class: cellKls,\n style,\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}>\n {Cell}\n\n {sortable && (\n <SortIcon\n class={[ns.e('sort-icon'), sorting && ns.is('sorting')]}\n sortOrder={sortOrder}\n />\n )}\n </div>\n )\n}\n\nexport default HeaderCellRenderer\n"],"names":["enforceUnit","HeaderCellRenderer","slots","column","ns","columnsStyles","onColumnSorted","props","style","placeholderSign","headerCellRenderer","headerClass","sortable","_createVNode","class","sortBy","sortState","headerCellProps","sorting","oppositeOrderMap","sortOrder","SortOrder","ASC"],"mappings":";;;;;;;;AAIA,MAAA,kBAAA,GAA0BA,CAAAA,KAAAA,EAAAA;;AAe1B,CAAA,KAAMC;AAEFC,EAAAA,MAAAA;AAAF,IACG,MAAA;AACH,IAAM,EAAA;AAAEC,IAAAA,aAAF;AAAUC,IAAAA,cAAV;AAAcC,GAAAA,GAAd,KAAA,CAAA;AAA6BC,EAAAA,MAAAA,KAAAA,GAAAA,WAAAA,CAAAA,aAAAA,CAAAA,MAAAA,CAAAA,GAAAA,CAAAA,CAAAA,CAAAA;AAA7B,EAAA,IAAgDC,MAAtD,CAAA,eAAA,KAAA,eAAA,EAAA;AAEA,IAAMC,OAAAA,WAAQR,CAAAA,KAAYK,EAAAA;;AAE1B,MAAIF,OAAOM,EAAP,KAAA;AACF,KAAA,EAAA,IAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAAmED,MAAAA;AAAnE,IAAA,kBAAA;AACD,IAAA,WAAA;;AAED,GAAM,GAAA,MAAA,CAAA;AAAEE,EAAAA,MAAF,SAAA,GAAA;AAAsBC,IAAAA,GAAtB,KAAA;AAAmCC,IAAAA,KAAAA,EAAAA,EAAAA,CAAAA,CAAAA,CAAAA,kBAAAA,CAAAA;AAAnC,GAAA,CAAA;AAEN,EAAA,MAAA,YAAA,GAAA,eAAA,CAAA,kBAAA,CAAA,IAAA,KAAA,CAAA,OAAA,KAAA,CAAA,MAAA,KAAAC,WAAA,CAAA,UAAA,EAAA,MAAA,EAAA,IAAA,CAAA,CAAA,CAAA;AACF,EAAA,MAAA,IAAA,GAAA,YAAA,CAAA,SAAA,CAAA,CAAA;AACA,EAAA,MAAA;;AAEE,IAAA,SAAe;AAEbC,IAAAA,eAAO;AAFS,GAAlB,GAAA,KAAA,CAAA;;AAKA,EAAA,IAAA,SAAkB,EAAA;;AAKlB,IAAA,OAAU,GAAA,OAAe,CAAA,gBAAzB,CAAA,KAAA,CAAA,CAAA,CAAA;AAEA,IAAA,SAAA,GAAA,OAAA,GAAA,KAAA,GAAA,SAAA,CAAA,GAAA,CAAA;AACF,GAAA,MAAA;AACA,IAAA,OAAA,GAAA,MAAA,CAAA,GAAA,KAAA,MAAA,CAAA,GAAA,CAAA;;AACE,GAAM;AAAEC,EAAAA,MAAF,OAAA,GAAA,CAAA,EAAA,CAAA,CAAA,CAAA,aAAA,CAAA,EAAA,GAAA,OAAA,CAAA,WAAA,EAAA,KAAA,EAAA,EAAA,CAAA,EAAA,MAAA,CAAA,KAAA,KAAA,SAAA,CAAA,MAAA,IAAA,EAAA,CAAA,EAAA,CAAA,cAAA,CAAA,EAAA,MAAA,CAAA,KAAA,KAAA,SAAA,CAAA,KAAA,IAAA,EAAA,CAAA,EAAA,CAAA,aAAA,CAAA,EAAA,QAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,CAAA,CAAA;AAAUC,EAAAA,MAAV,gBAAA,GAAA;AAAqBC,IAAAA,GAAAA,OAAAA,CAAAA,eAAAA,EAAAA,KAAAA,CAAAA;AAArB,IAAA,OAAN,EAAA,MAAA,CAAA,QAAA,GAAA,cAAA,GAAA,KAAA,CAAA;AAEA,IAAIC,KAAAA,EAAAA,OAAJ;;AACA,IAAA,CAAA,UAAA,GAAe,MAAA,CAAA,GAAA;AACb,GAAA,CAAA;AACAA,EAAAA,OAAAA,WAAiB,CAACC,uBAAD,EAAjB,CAAA,IAAA,EAAA,QAAA,IAAAN,WAAA,CAAA,QAAA,EAAA;AACAO,IAAAA,OAAAA,EAAS,GAAGF,CAAO,CAAA,CAAA,YAAA,EAAWG,OAAAA,IAAUC,EAAxC,CAAA,EAAA,CAAA,SAAA,CAAA,CAAA;AACD,IAAM,WAAA,EAAA,SAAA;AACLJ,GAAAA,EAAAA,IAAAA,CAAAA,CAAO;AACPE;;;;"}