You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 lines
7.4 KiB
1 lines
7.4 KiB
{"ast":null,"code":"import { createVNode, renderSlot, mergeProps } from 'vue';\nimport { oppositeOrderMap, SortOrder, Alignment } from '../constants.mjs';\nimport { placeholderSign } from '../private.mjs';\nimport { enforceUnit, componentToSlot, tryCall } from '../utils.mjs';\nimport HeaderCell$1 from '../components/header-cell.mjs';\nimport SortIcon from '../components/sort-icon.mjs';\nconst HeaderCellRenderer = (props, {\n slots\n}) => {\n const {\n column,\n ns,\n style,\n onColumnSorted\n } = props;\n const cellStyle = enforceUnit(style);\n if (column.placeholderSign === placeholderSign) {\n return createVNode(\"div\", {\n \"class\": ns.em(\"header-row-cell\", \"placeholder\"),\n \"style\": cellStyle\n }, null);\n }\n const {\n headerCellRenderer,\n headerClass,\n sortable\n } = column;\n const cellProps = {\n ...props,\n class: ns.e(\"header-cell-text\")\n };\n const columnCellRenderer = componentToSlot(headerCellRenderer);\n const Cell = columnCellRenderer ? columnCellRenderer(cellProps) : renderSlot(slots, \"default\", cellProps, () => [createVNode(HeaderCell$1, cellProps, null)]);\n const {\n sortBy,\n sortState,\n headerCellProps\n } = props;\n let sorting, 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 const cellKls = [ns.e(\"header-cell\"), tryCall(headerClass, props, \"\"), column.align === Alignment.CENTER && ns.is(\"align-center\"), column.align === Alignment.RIGHT && ns.is(\"align-right\"), sortable && ns.is(\"sortable\")];\n const cellWrapperProps = {\n ...tryCall(headerCellProps, props),\n onClick: column.sortable ? onColumnSorted : void 0,\n class: cellKls,\n style: cellStyle,\n [\"data-key\"]: column.key\n };\n return createVNode(\"div\", mergeProps(cellWrapperProps, {\n \"role\": \"columnheader\"\n }), [Cell, sortable && createVNode(SortIcon, {\n \"class\": [ns.e(\"sort-icon\"), sorting && ns.is(\"sorting\")],\n \"sortOrder\": sortOrder\n }, null)]);\n};\nvar HeaderCell = HeaderCellRenderer;\nexport { HeaderCell as default };","map":{"version":3,"names":["HeaderCellRenderer","props","column","ns","style","onColumnSorted","cellStyle","enforceUnit","placeholderSign","createVNode","headerCellRenderer","headerClass","cellProps","class","e","columnCellRenderer","componentToSlot","Cell","renderSlot","slots","HeaderCell$1","sortState","headerCellProps","sorting","sortOrder","order","key","Boolean","oppositeOrderMap","SortOrder","ASC","sortBy","cellKls","tryCall","align","Alignment","CENTER","is","RIGHT","sortable","cellWrapperProps","mergeProps","SortIcon","HeaderCell"],"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 { 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 }\n\nconst HeaderCellRenderer: FunctionalComponent<HeaderCellRendererProps> = (\n props,\n { slots }\n) => {\n const { column, ns, 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\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: 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 />\n )}\n </div>\n )\n}\n\nexport default HeaderCellRenderer\nexport type HeaderCellSlotProps = HeaderCellRendererProps & { class: string }\n"],"mappings":";;;;;;AAKA,MAAAA,kBAAA,GAA0BA,CAAAC,KAAA;;AAc1B,MAAM;EAEF;IACCC,MAAA;IACGC,EAAA;IAAEC,KAAF;IAAUC;MAAVJ,KAAA;EAAqB,MAAAK,SAAA,GAAAC,WAAA,CAAAH,KAAA;EAArB,IAAwCF,MAA9C,CAAAM,eAAA,KAAAA,eAAA;IAEA,OAAeC,WAAc;;MAEzB,OAAO,EAAPH;IACF;EAAA;QAC8D;IAD9DI,kBAAA;IAGDC,WAAA;;GAEK,GAAAT,MAAA;QAAAU,SAAA;IAAsB,GAAtBX,KAAA;IAAmCY,KAAA,EAAAV,EAAA,CAAAW,CAAA;EAAnC;EAEN,MAAAC,kBAAA,GAAAC,eAAA,CAAAN,kBAAA;EACF,MAAAO,IAAA,GAAAF,kBAAA,GAAAA,kBAAA,CAAAH,SAAA,IAAAM,UAAA,CAAAC,KAAA,aAAAP,SAAA,SAAAH,WAAA,CAAAW,YAAA,EAAAR,SAAA;EACA;;IAEES,SAAe;IAEbC;GAFF,GAAArB,KAAA;EAKA,IAAAsB,OAAwB,EAAAC,SAAA;EAGxB,IAAMH,SAAO,EAAkB;IAM/B,MAAAI,KAAA,GAAAJ,SAAA,CAAAnB,MAAA,CAAAwB,GAAA;IACFH,OAAA,GAAAI,OAAA,CAAAC,gBAAA,CAAAH,KAAA;IACAD,SAAA,GAAAD,OAAA,GAAAE,KAAA,GAAAI,SAAA,CAAAC,GAAA;;IACQP,OAAA,GAAArB,MAAA,CAAAwB,GAAA,KAAAK,MAAA,CAAAL,GAAA;IAAEF,SAAF,GAAAD,OAAA,GAAAQ,MAAA,CAAAN,KAAA,GAAAI,SAAA,CAAAC,GAAA;;EAAqB,MAAAE,OAAA,IAAA7B,EAAA,CAAAW,CAAA,iBAAAmB,OAAA,CAAAtB,WAAA,EAAAV,KAAA,OAAAC,MAAA,CAAAgC,KAAA,KAAAC,SAAA,CAAAC,MAAA,IAAAjC,EAAA,CAAAkC,EAAA,kBAAAnC,MAAA,CAAAgC,KAAA,KAAAC,SAAA,CAAAG,KAAA,IAAAnC,EAAA,CAAAkC,EAAA,iBAAAE,QAAA,IAAApC,EAAA,CAAAkC,EAAA;EAArB,MAANG,gBAAA;IAEI,GAAAP,OAAA,CAAkBX,eAAtB,EAAArB,KAAA;;IACAY,KAAA,EAAAmB,OAAe;IACb5B,KAAA,EAAAE,SAAc;IACd,WAAiB,GAAAJ,MAAA,CAAAwB;EACjB;EACD,OAAMjB,WAAA,QAAAgC,UAAA,CAAAD,gBAAA;IACL;IACA,EAAS,CAAAvB,IAAA,EAAAsB,QAAA,IAAa9B,WAAH,CAAAiC,QAA2B;IAC/C,UAAAvC,EAAA,CAAAW,CAAA,eAAAS,OAAA,IAAApB,EAAA,CAAAkC,EAAA;;GAEK;;AAUJ,IAAAM,UAAA,GAAe3C,kBAAY","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|