element-plus
Version:
A Component Library for Vue 3
1 lines • 16.1 kB
Source Map (JSON)
{"version":3,"file":"table-v2.mjs","names":["defineComponent","provide","unref","mergeProps","_mergeProps","isVNode","_isVNode","createVNode","_createVNode","useLocale","useNamespace","useTable","TableV2InjectionKey","tableV2Props","MainTable","LeftTable","RightTable","Row","Cell","Header","HeaderCell","Footer","Empty","Overlay","_isSlot","s","Object","prototype","toString","call","COMPONENT_NAME","TableV2","name","props","setup","slots","expose","ns","t","columnsStyles","fixedColumnsOnLeft","fixedColumnsOnRight","mainColumns","mainTableHeight","fixedTableHeight","leftTableWidth","rightTableWidth","data","depthMap","expandedRowKeys","hasFixedColumns","mainTableRef","leftTableRef","rightTableRef","isDynamic","isResetting","isScrolling","bodyWidth","emptyStyle","rootStyle","footerHeight","showEmpty","scrollTo","scrollToLeft","scrollToTop","scrollToRow","getRowHeight","onColumnSorted","onRowHeightChange","onRowHovered","onRowExpanded","onRowsRendered","onScroll","onVerticalScroll","cache","cellProps","estimatedRowHeight","expandColumnKey","fixedData","headerHeight","headerClass","headerProps","headerCellProps","sortBy","sortState","rowHeight","rowClass","rowEventHandlers","rowKey","rowProps","scrollbarAlwaysOn","indentSize","iconSize","useIsScrolling","vScrollbarSize","width","_data","mainTableProps","class","e","columns","headerWidth","height","scrollbarStartGap","scrollbarEndGap","leftColumnsWidth","_fixedTableHeight","leftTableProps","rightColumnsWidth","rightTableProps","style","cssVarName","_columnsStyles","tableRowProps","tableCellProps","tableHeaderProps","tableHeaderCellProps","tableSlots","row","cell","_slot","column","key","default","header","_slot2","rootKls","b","is","footerProps","footer","empty","overlay"],"sources":["../../../../../../packages/components/table-v2/src/table-v2.tsx"],"sourcesContent":["import { defineComponent, provide, unref } from 'vue'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport { useTable } from './use-table'\nimport { TableV2InjectionKey } from './tokens'\nimport { tableV2Props } from './table'\n// renderers\nimport MainTable from './renderers/main-table'\nimport LeftTable from './renderers/left-table'\nimport RightTable from './renderers/right-table'\nimport Row from './renderers/row'\nimport Cell from './renderers/cell'\nimport Header from './renderers/header'\nimport HeaderCell from './renderers/header-cell'\nimport Footer from './renderers/footer'\nimport Empty from './renderers/empty'\nimport Overlay from './renderers/overlay'\n\nimport type { CSSProperties } from 'vue'\nimport type { TableGridRowSlotParams } from './table-grid'\nimport type { ScrollStrategy } from './composables/use-scrollbar'\nimport type {\n TableV2HeaderRendererParams,\n TableV2HeaderRowCellRendererParams,\n TableV2RowCellRenderParam,\n} from './components'\nimport type { KeyType } from './types'\n\nconst COMPONENT_NAME = 'ElTableV2'\n\nconst TableV2 = defineComponent({\n name: COMPONENT_NAME,\n props: tableV2Props,\n setup(props, { slots, expose }) {\n const ns = useNamespace('table-v2')\n const { t } = useLocale()\n\n const {\n columnsStyles,\n fixedColumnsOnLeft,\n fixedColumnsOnRight,\n mainColumns,\n mainTableHeight,\n fixedTableHeight,\n leftTableWidth,\n rightTableWidth,\n data,\n depthMap,\n expandedRowKeys,\n hasFixedColumns,\n mainTableRef,\n leftTableRef,\n rightTableRef,\n isDynamic,\n isResetting,\n isScrolling,\n\n bodyWidth,\n emptyStyle,\n rootStyle,\n footerHeight,\n\n showEmpty,\n\n // exposes\n scrollTo,\n scrollToLeft,\n scrollToTop,\n scrollToRow,\n\n getRowHeight,\n onColumnSorted,\n onRowHeightChange,\n onRowHovered,\n onRowExpanded,\n onRowsRendered,\n onScroll,\n onVerticalScroll,\n } = useTable(props)\n\n expose({\n /**\n * @description scroll to a given position\n * @params params {{ scrollLeft?: number, scrollTop?: number }} where to scroll to.\n */\n scrollTo,\n /**\n * @description scroll to a given position horizontally\n * @params scrollLeft {Number} where to scroll to.\n */\n scrollToLeft,\n /**\n * @description scroll to a given position vertically\n * @params scrollTop { Number } where to scroll to.\n */\n scrollToTop,\n /**\n * @description scroll to a given row\n * @params row {Number} which row to scroll to\n * @params @optional strategy {ScrollStrategy} use what strategy to scroll to\n */\n scrollToRow,\n })\n\n provide(TableV2InjectionKey, {\n ns,\n isResetting,\n isScrolling,\n })\n\n return () => {\n const {\n cache,\n cellProps,\n estimatedRowHeight,\n expandColumnKey,\n fixedData,\n headerHeight,\n headerClass,\n headerProps,\n headerCellProps,\n sortBy,\n sortState,\n rowHeight,\n rowClass,\n rowEventHandlers,\n rowKey,\n rowProps,\n scrollbarAlwaysOn,\n indentSize,\n iconSize,\n useIsScrolling,\n vScrollbarSize,\n width,\n } = props\n\n const _data = unref(data)\n\n const mainTableProps = {\n cache,\n class: ns.e('main'),\n columns: unref(mainColumns),\n data: _data,\n fixedData,\n estimatedRowHeight,\n bodyWidth: unref(bodyWidth),\n headerHeight,\n headerWidth: unref(bodyWidth),\n height: unref(mainTableHeight),\n mainTableRef,\n rowKey,\n rowHeight,\n scrollbarAlwaysOn,\n scrollbarStartGap: 2,\n scrollbarEndGap: vScrollbarSize,\n useIsScrolling,\n width,\n getRowHeight,\n onRowsRendered,\n onScroll,\n }\n\n const leftColumnsWidth = unref(leftTableWidth)\n const _fixedTableHeight = unref(fixedTableHeight)\n\n const leftTableProps = {\n cache,\n class: ns.e('left'),\n columns: unref(fixedColumnsOnLeft),\n data: _data,\n fixedData,\n estimatedRowHeight,\n leftTableRef,\n rowHeight,\n bodyWidth: leftColumnsWidth,\n headerWidth: leftColumnsWidth,\n headerHeight,\n height: _fixedTableHeight,\n rowKey,\n scrollbarAlwaysOn,\n scrollbarStartGap: 2,\n scrollbarEndGap: vScrollbarSize,\n useIsScrolling,\n width: leftColumnsWidth,\n getRowHeight,\n onScroll: onVerticalScroll,\n }\n\n const rightColumnsWidth = unref(rightTableWidth)\n\n const rightTableProps = {\n cache,\n class: ns.e('right'),\n columns: unref(fixedColumnsOnRight),\n data: _data,\n fixedData,\n estimatedRowHeight,\n rightTableRef,\n rowHeight,\n bodyWidth: rightColumnsWidth,\n headerWidth: rightColumnsWidth,\n headerHeight,\n height: _fixedTableHeight,\n rowKey,\n scrollbarAlwaysOn,\n scrollbarStartGap: 2,\n scrollbarEndGap: vScrollbarSize,\n width: rightColumnsWidth,\n style: `${ns.cssVarName(\n 'table-scrollbar-size'\n )}: ${vScrollbarSize}px` as unknown as CSSProperties,\n useIsScrolling,\n getRowHeight,\n onScroll: onVerticalScroll,\n }\n const _columnsStyles = unref(columnsStyles)\n\n const tableRowProps = {\n ns,\n depthMap: unref(depthMap),\n columnsStyles: _columnsStyles,\n expandColumnKey,\n expandedRowKeys: unref(expandedRowKeys),\n estimatedRowHeight,\n hasFixedColumns: unref(hasFixedColumns),\n rowProps,\n rowClass,\n rowKey,\n rowEventHandlers,\n onRowHovered,\n onRowExpanded,\n onRowHeightChange,\n }\n\n const tableCellProps = {\n cellProps,\n expandColumnKey,\n indentSize,\n iconSize,\n rowKey,\n expandedRowKeys: unref(expandedRowKeys),\n ns,\n t,\n }\n\n const tableHeaderProps = {\n ns,\n headerClass,\n headerProps,\n columnsStyles: _columnsStyles,\n }\n\n const tableHeaderCellProps = {\n ns,\n t,\n\n sortBy,\n sortState,\n headerCellProps,\n onColumnSorted,\n }\n\n const tableSlots = {\n row: (props: TableGridRowSlotParams) => (\n <Row {...props} {...tableRowProps}>\n {{\n row: slots.row,\n cell: (props: TableV2RowCellRenderParam) =>\n slots.cell ? (\n <Cell\n {...props}\n {...tableCellProps}\n style={_columnsStyles[props.column.key as KeyType]}\n >\n {slots.cell(props)}\n </Cell>\n ) : (\n <Cell\n {...props}\n {...tableCellProps}\n style={_columnsStyles[props.column.key as KeyType]}\n />\n ),\n }}\n </Row>\n ),\n header: (props: TableV2HeaderRendererParams) => (\n <Header {...props} {...tableHeaderProps}>\n {{\n header: slots.header,\n cell: (props: TableV2HeaderRowCellRendererParams) =>\n slots['header-cell'] ? (\n <HeaderCell\n {...props}\n {...tableHeaderCellProps}\n style={_columnsStyles[props.column.key as KeyType]}\n >\n {slots['header-cell'](props)}\n </HeaderCell>\n ) : (\n <HeaderCell\n {...props}\n {...tableHeaderCellProps}\n style={_columnsStyles[props.column.key as KeyType]}\n />\n ),\n }}\n </Header>\n ),\n }\n\n const rootKls = [\n props.class,\n ns.b(),\n ns.e('root'),\n ns.is('dynamic', unref(isDynamic)),\n ]\n\n const footerProps = {\n class: ns.e('footer'),\n style: unref(footerHeight),\n }\n\n return (\n <div class={rootKls} style={unref(rootStyle)}>\n <MainTable {...mainTableProps}>{tableSlots}</MainTable>\n <LeftTable {...leftTableProps}>{tableSlots}</LeftTable>\n <RightTable {...rightTableProps}>{tableSlots}</RightTable>\n {slots.footer && (\n <Footer {...footerProps}>{{ default: slots.footer }}</Footer>\n )}\n {unref(showEmpty) && (\n <Empty class={ns.e('empty')} style={unref(emptyStyle)}>\n {{ default: slots.empty }}\n </Empty>\n )}\n {slots.overlay && (\n <Overlay class={ns.e('overlay')}>\n {{ default: slots.overlay }}\n </Overlay>\n )}\n </div>\n )\n }\n },\n})\n\nexport default TableV2\n\nexport type TableV2Instance = InstanceType<typeof TableV2> & {\n /**\n * @description scroll to a given position\n * @params params {{ scrollLeft?: number, scrollTop?: number }} where to scroll to.\n */\n scrollTo: (param: { scrollLeft?: number; scrollTop?: number }) => void\n /**\n * @description scroll to a given position horizontally\n * @params scrollLeft {Number} where to scroll to.\n */\n scrollToLeft: (scrollLeft: number) => void\n /**\n * @description scroll to a given position vertically\n * @params scrollTop { Number } where to scroll to.\n */\n scrollToTop: (scrollTop: number) => void\n /**\n * @description scroll to a given row\n * @params row {Number} which row to scroll to\n * @params strategy {ScrollStrategy} use what strategy to scroll to\n */\n scrollToRow(row: number, strategy?: ScrollStrategy): void\n}\n"],"mappings":"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"}