{"version":3,"file":"header.mjs","sources":["../../../../../../../packages/components/table-v2/src/components/header.tsx"],"sourcesContent":["import { computed, defineComponent, nextTick, ref, unref } from 'vue'\nimport { useNamespace } from '@element-plus/hooks'\nimport { ensureArray } from '@element-plus/utils'\nimport { tableV2HeaderProps } from '../header'\nimport { enforceUnit } from '../utils'\n\nimport type { CSSProperties, UnwrapRef } from 'vue'\nimport type { TableV2HeaderProps } from '../header'\nimport type { UseColumnsReturn } from '../composables/use-columns'\n\nconst COMPONENT_NAME = 'ElTableV2Header'\nconst TableV2Header = defineComponent({\n name: COMPONENT_NAME,\n props: tableV2HeaderProps,\n setup(props, { slots, expose }) {\n const ns = useNamespace('table-v2')\n\n const headerRef = ref<HTMLElement>()\n\n const headerStyle = computed(() =>\n enforceUnit({\n width: props.width,\n height: props.height,\n })\n )\n\n const rowStyle = computed(() =>\n enforceUnit({\n width: props.rowWidth,\n height: props.height,\n })\n )\n\n const headerHeights = computed(() => ensureArray(unref(props.headerHeight)))\n\n const scrollToLeft = (left?: number) => {\n const headerEl = unref(headerRef)\n nextTick(() => {\n headerEl?.scroll &&\n headerEl.scroll({\n left,\n })\n })\n }\n\n const renderFixedRows = () => {\n const fixedRowClassName = ns.e('fixed-header-row')\n\n const { columns, fixedHeaderData, rowHeight } = props\n\n return fixedHeaderData?.map((fixedRowData, fixedRowIndex) => {\n const style: CSSProperties = enforceUnit({\n height: rowHeight,\n width: '100%',\n })\n\n return slots.fixed?.({\n class: fixedRowClassName,\n columns,\n rowData: fixedRowData,\n rowIndex: -(fixedRowIndex + 1),\n style,\n })\n })\n }\n\n const renderDynamicRows = () => {\n const dynamicRowClassName = ns.e('dynamic-header-row')\n const { columns } = props\n\n return unref(headerHeights).map((rowHeight, rowIndex) => {\n const style: CSSProperties = enforceUnit({\n width: '100%',\n height: rowHeight,\n })\n\n return slots.dynamic?.({\n class: dynamicRowClassName,\n columns,\n headerIndex: rowIndex,\n style,\n })\n })\n }\n\n expose({\n /**\n * @description scroll to position based on the provided value\n */\n scrollToLeft,\n })\n\n return () => {\n if (props.height <= 0) return\n\n return (\n <div\n ref={headerRef}\n class={props.class}\n style={unref(headerStyle)}\n role=\"rowgroup\"\n >\n <div style={unref(rowStyle)} class={ns.e('header')}>\n {renderDynamicRows()}\n {renderFixedRows()}\n </div>\n </div>\n )\n }\n },\n})\n\nexport default TableV2Header\n\nexport type TableV2HeaderInstance = InstanceType<typeof TableV2Header> & {\n /**\n * @description scroll to position based on the provided value\n */\n scrollToLeft: (left?: number) => void\n}\n\nexport type TableV2HeaderRendererParams = {\n class: string\n columns: TableV2HeaderProps['columns']\n columnsStyles: UnwrapRef<UseColumnsReturn['columnsStyles']>\n headerIndex: number\n style: CSSProperties\n}\n\nexport type TableV2HeaderRowRendererParams = {\n rowData: any\n rowIndex: number\n} & Omit<TableV2HeaderRendererParams, 'headerIndex'>\n"],"names":["COMPONENT_NAME","TableV2Header","defineComponent","name","props","tableV2HeaderProps","slots","expose","ns","headerRef","ref","computed","width","height","rowWidth","ensureArray","headerHeights","scrollToLeft","nextTick","headerEl","left","renderFixedRows","rowHeight","fixedHeaderData","style","enforceUnit","class","fixedRowClassName","columns","rowData","rowIndex","renderDynamicRows","unref","headerIndex","_createVNode","headerStyle"],"mappings":"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"}
|