hongluan-ui
Version:
Hongluan Component Library for Vue 3
1 lines • 13.7 kB
Source Map (JSON)
{"version":3,"file":"table-v2.mjs","sources":["../../../../../../packages/components/table-v2/src/table-v2.tsx"],"sourcesContent":["// @ts-nocheck\nimport { defineComponent, provide, unref } from 'vue'\nimport { useNamespace } from '@hongluan-ui/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 { TableGridRowSlotParams } from './table-grid'\nimport type { ScrollStrategy } from './composables/use-scrollbar'\nimport type {\n TableV2HeaderRendererParams,\n TableV2HeaderRowCellRendererParams,\n TableV2RowCellRenderParam,\n} from './components'\n\nconst COMPONENT_NAME = 'TableV2'\n\nconst TableV2 = defineComponent({\n name: COMPONENT_NAME,\n props: tableV2Props,\n setup(props, { slots, expose }) {\n const { namespace } = useNamespace('table-v2')\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 headerWidth,\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 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: 'table-v2-main',\n columns: unref(mainColumns),\n data: _data,\n fixedData,\n estimatedRowHeight,\n bodyWidth: unref(bodyWidth) + vScrollbarSize,\n headerHeight,\n headerWidth: unref(headerWidth),\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: 'table-v2-left',\n columns: unref(fixedColumnsOnLeft),\n data: _data,\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 const rightColumnsWidthWithScrollbar = rightColumnsWidth + vScrollbarSize\n\n const rightTableProps = {\n cache,\n class: 'table-v2-right',\n columns: unref(fixedColumnsOnRight),\n data: _data,\n estimatedRowHeight,\n rightTableRef,\n rowHeight,\n bodyWidth: rightColumnsWidthWithScrollbar,\n headerWidth: rightColumnsWidthWithScrollbar,\n headerHeight,\n height: _fixedTableHeight,\n rowKey,\n scrollbarAlwaysOn,\n scrollbarStartGap: 2,\n scrollbarEndGap: vScrollbarSize,\n width: rightColumnsWidthWithScrollbar,\n style: `--table-scrollbar-size: ${vScrollbarSize}px`,\n useIsScrolling,\n getRowHeight,\n onScroll: onVerticalScroll,\n }\n const _columnsStyles = unref(columnsStyles)\n\n const tableRowProps = {\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 }\n\n const tableHeaderProps = {\n headerClass,\n headerProps,\n columnsStyles: _columnsStyles,\n }\n\n const tableHeaderCellProps = {\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]}\n >\n {slots.cell(props)}\n </Cell>\n ) : (\n <Cell\n {...props}\n {...tableCellProps}\n style={_columnsStyles[props.column.key]}\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]}\n >\n {slots['header-cell'](props)}\n </HeaderCell>\n ) : (\n <HeaderCell\n {...props}\n {...tableHeaderCellProps}\n style={_columnsStyles[props.column.key]}\n />\n ),\n }}\n </Header>\n ),\n }\n\n const rootKls = [\n props.class,\n namespace.value,\n 'table-v2-root',\n {\n 'is-dynamic': unref(isDynamic),\n },\n ]\n\n const footerProps = {\n class: 'table-v2-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={'table-v2-empty'} style={unref(emptyStyle)}>\n {{ default: slots.empty }}\n </Empty>\n )}\n {slots.overlay && (\n <Overlay class={'table-v2-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"],"names":["name","props","setup","slots","expose","namespace","columnsStyles","fixedColumnsOnLeft","fixedColumnsOnRight","mainColumns","mainTableHeight","fixedTableHeight","leftTableWidth","rightTableWidth","data","depthMap","expandedRowKeys","hasFixedColumns","mainTableRef","leftTableRef","rightTableRef","isDynamic","isResetting","isScrolling","bodyWidth","emptyStyle","rootStyle","headerWidth","footerHeight","showEmpty","scrollTo","scrollToLeft","scrollToTop","scrollToRow","getRowHeight","onColumnSorted","onRowHeightChange","onRowHovered","onRowExpanded","onRowsRendered","onScroll","onVerticalScroll","provide","cache","cellProps","estimatedRowHeight","expandColumnKey","fixedData","headerHeight","headerClass","headerProps","headerCellProps","sortBy","sortState","rowHeight","rowClass","rowEventHandlers","rowKey","rowProps","scrollbarAlwaysOn","indentSize","iconSize","useIsScrolling","vScrollbarSize","width","class","columns","height","scrollbarStartGap","scrollbarEndGap","_data","style","row","cell","_columnsStyles","header"],"mappings":"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"}