UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 18 kB
{"version":3,"file":"table-grid.mjs","sources":["../../../../../../packages/components/table-v2/src/table-grid.tsx"],"sourcesContent":["import {\n computed,\n defineComponent,\n inject,\n nextTick,\n onActivated,\n provide,\n ref,\n unref,\n watch,\n} from 'vue'\nimport {\n DynamicSizeGrid,\n FixedSizeGrid,\n} from '@element-plus/components/virtual-list'\nimport { isNumber, isObject } from '@element-plus/utils'\nimport { Header } from './components'\nimport { TABLE_V2_GRID_INJECTION_KEY, TableV2InjectionKey } from './tokens'\nimport { tableV2GridProps } from './grid'\nimport { sum } from './utils'\n\nimport type { UnwrapRef } from 'vue'\nimport type {\n DynamicSizeGridInstance,\n GridDefaultSlotParams,\n GridItemKeyGetter,\n GridItemRenderedEvtParams,\n GridScrollOptions,\n ResetAfterIndex,\n Alignment as ScrollStrategy,\n} from '@element-plus/components/virtual-list'\nimport type { TableV2HeaderInstance } from './components'\nimport type { TableV2GridProps } from './grid'\n\nconst COMPONENT_NAME = 'ElTableV2Grid'\n\nconst useTableGrid = (props: TableV2GridProps) => {\n const headerRef = ref<TableV2HeaderInstance>()\n const bodyRef = ref<DynamicSizeGridInstance>()\n const scrollLeft = ref(0)\n\n const totalHeight = computed(() => {\n const { data, rowHeight, estimatedRowHeight } = props\n\n if (estimatedRowHeight) {\n return\n }\n\n return data.length * (rowHeight as number)\n })\n\n const fixedRowHeight = computed(() => {\n const { fixedData, rowHeight } = props\n\n return (fixedData?.length || 0) * (rowHeight as number)\n })\n\n const headerHeight = computed(() => sum(props.headerHeight))\n\n const gridHeight = computed(() => {\n const { height } = props\n return Math.max(0, height - unref(headerHeight) - unref(fixedRowHeight))\n })\n\n const hasHeader = computed(() => {\n return unref(headerHeight) + unref(fixedRowHeight) > 0\n })\n\n const itemKey: GridItemKeyGetter = ({ data, rowIndex }) =>\n data[rowIndex][props.rowKey]\n\n function onItemRendered({\n rowCacheStart,\n rowCacheEnd,\n rowVisibleStart,\n rowVisibleEnd,\n }: GridItemRenderedEvtParams) {\n props.onRowsRendered?.({\n rowCacheStart,\n rowCacheEnd,\n rowVisibleStart,\n rowVisibleEnd,\n })\n }\n\n function resetAfterRowIndex(index: number, forceUpdate: boolean) {\n bodyRef.value?.resetAfterRowIndex(index, forceUpdate)\n }\n\n function scrollTo(x: number, y: number): void\n function scrollTo(options: GridScrollOptions): void\n function scrollTo(leftOrOptions: number | GridScrollOptions, top?: number) {\n const header$ = unref(headerRef)\n const body$ = unref(bodyRef)\n\n if (isObject(leftOrOptions)) {\n header$?.scrollToLeft(leftOrOptions.scrollLeft)\n scrollLeft.value = leftOrOptions.scrollLeft!\n body$?.scrollTo(leftOrOptions)\n } else {\n header$?.scrollToLeft(leftOrOptions)\n scrollLeft.value = leftOrOptions\n body$?.scrollTo({\n scrollLeft: leftOrOptions,\n scrollTop: top,\n })\n }\n }\n\n function scrollToTop(scrollTop: number) {\n unref(bodyRef)?.scrollTo({\n scrollTop,\n })\n }\n\n function scrollToRow(row: number, strategy: ScrollStrategy) {\n const body = unref(bodyRef)\n if (!body) return\n\n const prevScrollLeft = scrollLeft.value\n\n body.scrollToItem(row, 0, strategy)\n\n if (prevScrollLeft) {\n scrollTo({\n scrollLeft: prevScrollLeft,\n })\n }\n }\n\n function forceUpdate() {\n unref(bodyRef)?.$forceUpdate()\n unref(headerRef)?.$forceUpdate()\n }\n\n watch(\n () => props.bodyWidth,\n () => {\n if (isNumber(props.estimatedRowHeight))\n bodyRef.value?.resetAfter({ columnIndex: 0 }, false)\n }\n )\n\n return {\n bodyRef,\n forceUpdate,\n fixedRowHeight,\n gridHeight,\n hasHeader,\n headerHeight,\n headerRef,\n totalHeight,\n\n itemKey,\n onItemRendered,\n resetAfterRowIndex,\n scrollTo,\n scrollToTop,\n scrollToRow,\n scrollLeft,\n }\n}\n\nconst TableGrid = defineComponent({\n name: COMPONENT_NAME,\n props: tableV2GridProps,\n setup(props, { slots, expose }) {\n const { ns } = inject(TableV2InjectionKey)!\n\n const {\n bodyRef,\n fixedRowHeight,\n gridHeight,\n hasHeader,\n headerRef,\n headerHeight,\n totalHeight,\n\n forceUpdate,\n itemKey,\n onItemRendered,\n resetAfterRowIndex,\n scrollTo,\n scrollToTop,\n scrollToRow,\n scrollLeft,\n } = useTableGrid(props)\n\n provide(TABLE_V2_GRID_INJECTION_KEY, scrollLeft)\n\n onActivated(async () => {\n await nextTick()\n const scrollTop = bodyRef.value?.states.scrollTop\n scrollTop && scrollToTop(Math.round(scrollTop) + 1)\n })\n\n expose({\n forceUpdate,\n /**\n * @description fetch total height\n */\n totalHeight,\n /**\n * @description scroll to a position\n */\n scrollTo,\n /**\n * @description scroll vertically to position y\n */\n scrollToTop,\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,\n /**\n * @description reset rendered state after row index\n */\n resetAfterRowIndex,\n })\n\n const getColumnWidth = () => props.bodyWidth\n\n return () => {\n const {\n cache,\n columns,\n data,\n fixedData,\n useIsScrolling,\n scrollbarAlwaysOn,\n scrollbarEndGap,\n scrollbarStartGap,\n style,\n rowHeight,\n bodyWidth,\n estimatedRowHeight,\n headerWidth,\n height,\n width,\n\n getRowHeight,\n onScroll,\n } = props\n\n const isDynamicRowEnabled = isNumber(estimatedRowHeight)\n const Grid = isDynamicRowEnabled ? DynamicSizeGrid : FixedSizeGrid\n const _headerHeight = unref(headerHeight)\n\n return (\n <div role=\"table\" class={[ns.e('table'), props.class]} style={style}>\n <Grid\n ref={bodyRef}\n // special attrs\n data={data}\n useIsScrolling={useIsScrolling}\n itemKey={itemKey}\n // column attrs\n columnCache={0}\n columnWidth={isDynamicRowEnabled ? getColumnWidth : bodyWidth}\n totalColumn={1}\n // row attrs\n totalRow={data.length}\n rowCache={cache}\n rowHeight={isDynamicRowEnabled ? getRowHeight : rowHeight}\n // DOM attrs\n width={width}\n height={unref(gridHeight)}\n class={ns.e('body')}\n role=\"rowgroup\"\n scrollbarStartGap={scrollbarStartGap}\n scrollbarEndGap={scrollbarEndGap}\n scrollbarAlwaysOn={scrollbarAlwaysOn}\n // handlers\n onScroll={onScroll}\n onItemRendered={onItemRendered}\n perfMode={false}\n >\n {{\n default: (params: GridDefaultSlotParams) => {\n const rowData = data[params.rowIndex]\n return slots.row?.({\n ...params,\n columns,\n rowData,\n })\n },\n }}\n </Grid>\n {unref(hasHeader) && (\n <Header\n ref={headerRef}\n class={ns.e('header-wrapper')}\n columns={columns}\n headerData={data}\n headerHeight={props.headerHeight}\n fixedHeaderData={fixedData}\n rowWidth={headerWidth}\n rowHeight={rowHeight}\n width={width}\n height={Math.min(_headerHeight + unref(fixedRowHeight), height)}\n >\n {{\n dynamic: slots.header,\n fixed: slots.row,\n }}\n </Header>\n )}\n </div>\n )\n }\n },\n})\n\nexport default TableGrid\n\nexport type TableGridRowSlotParams = {\n columns: TableV2GridProps['columns']\n rowData: any\n} & GridDefaultSlotParams\n\nexport type TableGridInstance = InstanceType<typeof TableGrid> &\n UnwrapRef<{\n forceUpdate: () => void\n /**\n * @description fetch total height\n */\n totalHeight: number\n\n /**\n * @description scrollTo a position\n * @param { number | ScrollToOptions } arg1\n * @param { number } arg2\n */\n scrollTo(leftOrOptions: number | GridScrollOptions, top?: number): void\n\n /**\n * @description scroll vertically to position y\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 @optional strategy {ScrollStrategy} use what strategy to scroll to\n */\n scrollToRow(row: number, strategy: ScrollStrategy): void\n /**\n * @description reset rendered state after row index\n * @param { number } rowIndex\n * @param { boolean } forceUpdate\n */\n resetAfterRowIndex: ResetAfterIndex\n }>\n"],"names":["COMPONENT_NAME","useTableGrid","props","headerRef","ref","bodyRef","scrollLeft","totalHeight","computed","data","rowHeight","estimatedRowHeight","length","fixedRowHeight","fixedData","headerHeight","sum","gridHeight","height","Math","max","unref","hasHeader","itemKey","rowIndex","rowKey","onItemRendered","rowCacheStart","rowCacheEnd","rowVisibleStart","rowVisibleEnd","onRowsRendered","resetAfterRowIndex","index","forceUpdate","value","scrollTo","leftOrOptions","top","header$","body$","isObject","scrollToLeft","scrollTop","scrollToTop","scrollToRow","row","strategy","body","prevScrollLeft","scrollToItem","$forceUpdate","watch","bodyWidth","isNumber","resetAfter","columnIndex","TableGrid","defineComponent","name","tableV2GridProps","setup","slots","expose","ns","inject","TableV2InjectionKey","provide","TABLE_V2_GRID_INJECTION_KEY","onActivated","nextTick","states","round","getColumnWidth","cache","columns","useIsScrolling","scrollbarAlwaysOn","scrollbarEndGap","scrollbarStartGap","style","headerWidth","width","getRowHeight","onScroll","isDynamicRowEnabled","Grid","DynamicSizeGrid","FixedSizeGrid","_headerHeight","_createVNode","e","class","default","params","rowData","Header","min","dynamic","header","fixed"],"mappings":"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"}