@economic/taco 2.53.0 → 2.53.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.js +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableRenderer.js +4 -1
- package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableRenderer.js.map +1 -1
- package/dist/primitives/Table/Core/types.d.ts +1 -1
- package/dist/taco.cjs.development.js +5 -2
- package/dist/taco.cjs.development.js.map +1 -1
- package/dist/taco.cjs.production.min.js +1 -1
- package/dist/taco.cjs.production.min.js.map +1 -1
- package/package.json +3 -3
package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.js
CHANGED
@@ -116,7 +116,7 @@ const DisplayRow = /*#__PURE__*/React__default.memo(function DisplayRow(props) {
|
|
116
116
|
var _ref$current$getBound, _ref$current, _expansionRef$current, _expansionRef$current2;
|
117
117
|
const rowHeight = (_ref$current$getBound = (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.getBoundingClientRect().height) !== null && _ref$current$getBound !== void 0 ? _ref$current$getBound : 0;
|
118
118
|
const expansionHeight = (_expansionRef$current = (_expansionRef$current2 = expansionRef.current) === null || _expansionRef$current2 === void 0 ? void 0 : _expansionRef$current2.getBoundingClientRect().height) !== null && _expansionRef$current !== void 0 ? _expansionRef$current : 0;
|
119
|
-
measureRow(
|
119
|
+
measureRow(rowHeight + expansionHeight);
|
120
120
|
}, [expansionRef.current]);
|
121
121
|
const className = cn('group/row', otherAttributes.className, {
|
122
122
|
'hover:cursor-grab': tableMeta.rowDrag.isEnabled && typeof attributes.onClick !== 'function',
|
package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"DisplayRow.js","sources":["../../../../../../../../../../../src/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.tsx"],"sourcesContent":["import React from 'react';\nimport { TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport cn from 'clsx';\nimport { Cell } from '../../Columns/Cell/Cell';\nimport { TableRowRendererProps } from '../../../types';\nimport { TableRowWithMetaData } from '../../../../types';\nimport { isElementInteractive } from '../../../../../../utils/dom';\nimport { useDropTarget } from '../../../../../../utils/hooks/useDropTarget';\n\nexport type DisplayRowProps<TType = unknown> = React.HTMLAttributes<HTMLTableRowElement> & TableRowRendererProps<TType>;\n\nexport const DisplayRow = React.memo(function DisplayRow<TType = unknown>(props: DisplayRowProps<TType>) {\n const { children, cellRenderer: CellRenderer, index, measureRow, row, table, ...otherAttributes } = props;\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n\n const attributes: any = {\n ...otherAttributes,\n 'data-row-id': row.id,\n 'data-row-index': index,\n tabIndex: -1,\n };\n\n const handleClick = React.useCallback(\n (event: React.MouseEvent<HTMLTableRowElement>) => {\n const clickedElement = event.target as HTMLElement;\n\n if (!event.currentTarget?.contains(event.target as HTMLElement) || isElementInteractive(clickedElement)) {\n return;\n }\n\n tableMeta.rowClick.handleClick(event, row.original);\n },\n [row.original]\n );\n const handleClickCapture = React.useCallback(() => {\n tableMeta.rowActive.setRowActiveIndex(index);\n }, [index]);\n\n // row active\n if (tableMeta.rowActive.isEnabled) {\n attributes['data-row-active'] = tableMeta.rowActive.rowActiveIndex === index ? true : undefined;\n // we use capture because it let's us picks up clicks on components inside the row, e.g. checkboxes\n attributes.onClickCapture = handleClickCapture;\n }\n\n // row click\n if (tableMeta.rowClick.isEnabled(row.original)) {\n attributes.onClick = handleClick;\n }\n\n // row drag\n if (tableMeta.rowDrag.isEnabled) {\n attributes['aria-grabbed'] = !!tableMeta.rowDrag.dragging[row.id];\n attributes.draggable = true;\n const GHOST_ELEMENT_ID = 'taco_table_dragging';\n\n attributes.onDragStart = (event: React.DragEvent): void => {\n let rows = [row];\n\n if (row.getCanSelect()) {\n rows = row.getIsSelected() ? table.getSelectedRowModel().rows : [row, ...table.getSelectedRowModel().rows];\n }\n\n const data = rows.map(row => row.original);\n\n tableMeta.rowDrag.setDragging?.(\n rows.reduce((dragging, rowBeingDragged) => ({ ...dragging, [rowBeingDragged.id]: true }), {})\n );\n\n // set a default data value so that the consumer doesn't have to\n event.dataTransfer.setData('text', JSON.stringify(data));\n\n const showPlaceholder = (text: string) => {\n const ghost = document.createElement('div');\n ghost.id = GHOST_ELEMENT_ID;\n ghost.className = 'wcag-blue rounded flex w-48 p-4 absolute -ml-[100vw]';\n ghost.innerText = text;\n document.body.appendChild(ghost);\n event.dataTransfer.setDragImage(ghost, 0, 0);\n };\n\n const setDataTransfer = (text: string) => event.dataTransfer.setData('text', text);\n\n tableMeta.rowDrag.handleRowDrag?.(data, showPlaceholder, setDataTransfer);\n };\n\n attributes.onDragEnd = (): void => {\n document.getElementById(GHOST_ELEMENT_ID)?.remove();\n tableMeta.rowDrag.setDragging?.({});\n };\n }\n\n // row drop\n const [isDraggedOver, dropTargetProps] = useDropTarget(event => tableMeta.rowDrop.handleDrop?.(event, row.original));\n\n if (tableMeta.rowDrop.isEnabled) {\n attributes.onDragEnter = dropTargetProps?.onDragEnter;\n attributes.onDragLeave = dropTargetProps?.onDragLeave;\n attributes.onDragOver = dropTargetProps?.onDragOver;\n attributes.onDrop = dropTargetProps?.onDrop;\n attributes['data-row-dragged-over'] = isDraggedOver;\n }\n\n // row grouping\n if (table.options.enableGrouping) {\n attributes['data-row-group'] = row.getIsGrouped() ? true : undefined;\n }\n\n // row selection\n if (row.getCanSelect()) {\n attributes['data-row-selected'] = row.getIsSelected() || row.getIsAllSubRowsSelected() ? true : undefined;\n }\n\n // row expansion\n let expandedRow;\n\n if (tableMeta.rowExpansion.isEnabled && row.getIsExpanded()) {\n attributes['data-row-expanded'] = true;\n expandedRow = tableMeta.rowExpansion.rowExpansionRenderer?.(row.original)?.();\n }\n\n const rowMeta = (row.original as TableRowWithMetaData<TType>)._meta;\n\n if (rowMeta) {\n if (rowMeta.layout) {\n attributes['data-row-meta-layout'] = rowMeta.layout;\n }\n }\n\n const ref = React.useRef<HTMLTableRowElement>(null);\n const expansionRef = React.useRef<HTMLTableRowElement>(null);\n\n React.useEffect(() => {\n const rowHeight = ref.current?.getBoundingClientRect().height ?? 0;\n const expansionHeight = expansionRef.current?.getBoundingClientRect().height ?? 0;\n\n measureRow(index, rowHeight + expansionHeight);\n }, [expansionRef.current]);\n\n const className = cn('group/row', otherAttributes.className, {\n 'hover:cursor-grab': tableMeta.rowDrag.isEnabled && typeof attributes.onClick !== 'function',\n 'hover:cursor-pointer': typeof attributes.onClick === 'function',\n });\n\n const isGrouped = row.getIsGrouped();\n\n return (\n <>\n <tr {...attributes} className={className} ref={ref}>\n {children}\n {row\n .getVisibleCells()\n // Filter out the row actions cell from rendering in Grouped Row\n .filter(cell => !(isGrouped && cell.column.id === '__actions'))\n .map((cell, cellIndex) => (\n <Cell key={cell.id} cell={cell} index={cellIndex} renderer={CellRenderer} />\n ))}\n </tr>\n {expandedRow ? (\n <tr data-row-parent-id={row.id} ref={expansionRef}>\n <td className=\"col-span-full\">{expandedRow}</td>\n </tr>\n ) : null}\n </>\n );\n}) as <TType = unknown>(props: TableRowRendererProps<TType>) => JSX.Element;\n"],"names":["DisplayRow","React","memo","props","children","cellRenderer","CellRenderer","index","measureRow","row","table","otherAttributes","tableMeta","options","meta","attributes","id","tabIndex","handleClick","useCallback","event","clickedElement","target","_event$currentTarget","currentTarget","contains","isElementInteractive","rowClick","original","handleClickCapture","rowActive","setRowActiveIndex","isEnabled","rowActiveIndex","undefined","onClickCapture","onClick","rowDrag","dragging","draggable","GHOST_ELEMENT_ID","onDragStart","rows","getCanSelect","getIsSelected","getSelectedRowModel","data","map","_tableMeta$rowDrag$se","_tableMeta$rowDrag","setDragging","call","reduce","rowBeingDragged","dataTransfer","setData","JSON","stringify","showPlaceholder","text","ghost","document","createElement","className","innerText","body","appendChild","setDragImage","setDataTransfer","_tableMeta$rowDrag$ha","_tableMeta$rowDrag2","handleRowDrag","onDragEnd","_document$getElementB","getElementById","remove","_tableMeta$rowDrag$se2","_tableMeta$rowDrag3","isDraggedOver","dropTargetProps","useDropTarget","_tableMeta$rowDrop$ha","_tableMeta$rowDrop","rowDrop","handleDrop","onDragEnter","onDragLeave","onDragOver","onDrop","enableGrouping","getIsGrouped","getIsAllSubRowsSelected","expandedRow","rowExpansion","getIsExpanded","_tableMeta$rowExpansi","_tableMeta$rowExpansi2","_tableMeta$rowExpansi3","rowExpansionRenderer","rowMeta","_meta","layout","ref","useRef","expansionRef","useEffect","rowHeight","_ref$current$getBound","_ref$current","current","getBoundingClientRect","height","expansionHeight","_expansionRef$current","_expansionRef$current2","cn","isGrouped","getVisibleCells","filter","cell","column","cellIndex","Cell","key","renderer"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"DisplayRow.js","sources":["../../../../../../../../../../../src/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.tsx"],"sourcesContent":["import React from 'react';\nimport { TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport cn from 'clsx';\nimport { Cell } from '../../Columns/Cell/Cell';\nimport { TableRowRendererProps } from '../../../types';\nimport { TableRowWithMetaData } from '../../../../types';\nimport { isElementInteractive } from '../../../../../../utils/dom';\nimport { useDropTarget } from '../../../../../../utils/hooks/useDropTarget';\n\nexport type DisplayRowProps<TType = unknown> = React.HTMLAttributes<HTMLTableRowElement> & TableRowRendererProps<TType>;\n\nexport const DisplayRow = React.memo(function DisplayRow<TType = unknown>(props: DisplayRowProps<TType>) {\n const { children, cellRenderer: CellRenderer, index, measureRow, row, table, ...otherAttributes } = props;\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n\n const attributes: any = {\n ...otherAttributes,\n 'data-row-id': row.id,\n 'data-row-index': index,\n tabIndex: -1,\n };\n\n const handleClick = React.useCallback(\n (event: React.MouseEvent<HTMLTableRowElement>) => {\n const clickedElement = event.target as HTMLElement;\n\n if (!event.currentTarget?.contains(event.target as HTMLElement) || isElementInteractive(clickedElement)) {\n return;\n }\n\n tableMeta.rowClick.handleClick(event, row.original);\n },\n [row.original]\n );\n const handleClickCapture = React.useCallback(() => {\n tableMeta.rowActive.setRowActiveIndex(index);\n }, [index]);\n\n // row active\n if (tableMeta.rowActive.isEnabled) {\n attributes['data-row-active'] = tableMeta.rowActive.rowActiveIndex === index ? true : undefined;\n // we use capture because it let's us picks up clicks on components inside the row, e.g. checkboxes\n attributes.onClickCapture = handleClickCapture;\n }\n\n // row click\n if (tableMeta.rowClick.isEnabled(row.original)) {\n attributes.onClick = handleClick;\n }\n\n // row drag\n if (tableMeta.rowDrag.isEnabled) {\n attributes['aria-grabbed'] = !!tableMeta.rowDrag.dragging[row.id];\n attributes.draggable = true;\n const GHOST_ELEMENT_ID = 'taco_table_dragging';\n\n attributes.onDragStart = (event: React.DragEvent): void => {\n let rows = [row];\n\n if (row.getCanSelect()) {\n rows = row.getIsSelected() ? table.getSelectedRowModel().rows : [row, ...table.getSelectedRowModel().rows];\n }\n\n const data = rows.map(row => row.original);\n\n tableMeta.rowDrag.setDragging?.(\n rows.reduce((dragging, rowBeingDragged) => ({ ...dragging, [rowBeingDragged.id]: true }), {})\n );\n\n // set a default data value so that the consumer doesn't have to\n event.dataTransfer.setData('text', JSON.stringify(data));\n\n const showPlaceholder = (text: string) => {\n const ghost = document.createElement('div');\n ghost.id = GHOST_ELEMENT_ID;\n ghost.className = 'wcag-blue rounded flex w-48 p-4 absolute -ml-[100vw]';\n ghost.innerText = text;\n document.body.appendChild(ghost);\n event.dataTransfer.setDragImage(ghost, 0, 0);\n };\n\n const setDataTransfer = (text: string) => event.dataTransfer.setData('text', text);\n\n tableMeta.rowDrag.handleRowDrag?.(data, showPlaceholder, setDataTransfer);\n };\n\n attributes.onDragEnd = (): void => {\n document.getElementById(GHOST_ELEMENT_ID)?.remove();\n tableMeta.rowDrag.setDragging?.({});\n };\n }\n\n // row drop\n const [isDraggedOver, dropTargetProps] = useDropTarget(event => tableMeta.rowDrop.handleDrop?.(event, row.original));\n\n if (tableMeta.rowDrop.isEnabled) {\n attributes.onDragEnter = dropTargetProps?.onDragEnter;\n attributes.onDragLeave = dropTargetProps?.onDragLeave;\n attributes.onDragOver = dropTargetProps?.onDragOver;\n attributes.onDrop = dropTargetProps?.onDrop;\n attributes['data-row-dragged-over'] = isDraggedOver;\n }\n\n // row grouping\n if (table.options.enableGrouping) {\n attributes['data-row-group'] = row.getIsGrouped() ? true : undefined;\n }\n\n // row selection\n if (row.getCanSelect()) {\n attributes['data-row-selected'] = row.getIsSelected() || row.getIsAllSubRowsSelected() ? true : undefined;\n }\n\n // row expansion\n let expandedRow;\n\n if (tableMeta.rowExpansion.isEnabled && row.getIsExpanded()) {\n attributes['data-row-expanded'] = true;\n expandedRow = tableMeta.rowExpansion.rowExpansionRenderer?.(row.original)?.();\n }\n\n const rowMeta = (row.original as TableRowWithMetaData<TType>)._meta;\n\n if (rowMeta) {\n if (rowMeta.layout) {\n attributes['data-row-meta-layout'] = rowMeta.layout;\n }\n }\n\n const ref = React.useRef<HTMLTableRowElement>(null);\n const expansionRef = React.useRef<HTMLTableRowElement>(null);\n\n React.useEffect(() => {\n const rowHeight = ref.current?.getBoundingClientRect().height ?? 0;\n const expansionHeight = expansionRef.current?.getBoundingClientRect().height ?? 0;\n\n measureRow(rowHeight + expansionHeight);\n }, [expansionRef.current]);\n\n const className = cn('group/row', otherAttributes.className, {\n 'hover:cursor-grab': tableMeta.rowDrag.isEnabled && typeof attributes.onClick !== 'function',\n 'hover:cursor-pointer': typeof attributes.onClick === 'function',\n });\n\n const isGrouped = row.getIsGrouped();\n\n return (\n <>\n <tr {...attributes} className={className} ref={ref}>\n {children}\n {row\n .getVisibleCells()\n // Filter out the row actions cell from rendering in Grouped Row\n .filter(cell => !(isGrouped && cell.column.id === '__actions'))\n .map((cell, cellIndex) => (\n <Cell key={cell.id} cell={cell} index={cellIndex} renderer={CellRenderer} />\n ))}\n </tr>\n {expandedRow ? (\n <tr data-row-parent-id={row.id} ref={expansionRef}>\n <td className=\"col-span-full\">{expandedRow}</td>\n </tr>\n ) : null}\n </>\n );\n}) as <TType = unknown>(props: TableRowRendererProps<TType>) => JSX.Element;\n"],"names":["DisplayRow","React","memo","props","children","cellRenderer","CellRenderer","index","measureRow","row","table","otherAttributes","tableMeta","options","meta","attributes","id","tabIndex","handleClick","useCallback","event","clickedElement","target","_event$currentTarget","currentTarget","contains","isElementInteractive","rowClick","original","handleClickCapture","rowActive","setRowActiveIndex","isEnabled","rowActiveIndex","undefined","onClickCapture","onClick","rowDrag","dragging","draggable","GHOST_ELEMENT_ID","onDragStart","rows","getCanSelect","getIsSelected","getSelectedRowModel","data","map","_tableMeta$rowDrag$se","_tableMeta$rowDrag","setDragging","call","reduce","rowBeingDragged","dataTransfer","setData","JSON","stringify","showPlaceholder","text","ghost","document","createElement","className","innerText","body","appendChild","setDragImage","setDataTransfer","_tableMeta$rowDrag$ha","_tableMeta$rowDrag2","handleRowDrag","onDragEnd","_document$getElementB","getElementById","remove","_tableMeta$rowDrag$se2","_tableMeta$rowDrag3","isDraggedOver","dropTargetProps","useDropTarget","_tableMeta$rowDrop$ha","_tableMeta$rowDrop","rowDrop","handleDrop","onDragEnter","onDragLeave","onDragOver","onDrop","enableGrouping","getIsGrouped","getIsAllSubRowsSelected","expandedRow","rowExpansion","getIsExpanded","_tableMeta$rowExpansi","_tableMeta$rowExpansi2","_tableMeta$rowExpansi3","rowExpansionRenderer","rowMeta","_meta","layout","ref","useRef","expansionRef","useEffect","rowHeight","_ref$current$getBound","_ref$current","current","getBoundingClientRect","height","expansionHeight","_expansionRef$current","_expansionRef$current2","cn","isGrouped","getVisibleCells","filter","cell","column","cellIndex","Cell","key","renderer"],"mappings":"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"}
|
@@ -134,13 +134,16 @@ function useTableRenderer(renderers, table, tableRef, length, defaultRowActiveIn
|
|
134
134
|
table: table
|
135
135
|
});
|
136
136
|
}
|
137
|
+
const measureRow = rowHeight => {
|
138
|
+
virtualiser.resizeItem(virtualRow, rowHeight);
|
139
|
+
};
|
137
140
|
return /*#__PURE__*/React__default.createElement(Row, {
|
138
141
|
key: row.id,
|
139
142
|
row: row,
|
140
143
|
index: virtualRow.index,
|
141
144
|
scrollDirection: (_virtualiser$scrollDi2 = virtualiser.scrollDirection) !== null && _virtualiser$scrollDi2 !== void 0 ? _virtualiser$scrollDi2 : undefined,
|
142
145
|
table: table,
|
143
|
-
measureRow:
|
146
|
+
measureRow: measureRow,
|
144
147
|
renderer: renderers.row,
|
145
148
|
cellRenderer: renderers.cell
|
146
149
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useTableRenderer.js","sources":["../../../../../../../../../src/primitives/Table/Core/features/useTableRenderer.tsx"],"sourcesContent":["import React, { CSSProperties } from 'react';\nimport { Table as ReactTable, TableMeta as ReactTableMeta, Row as ReactTableRow } from '@tanstack/react-table';\nimport {\n useVirtualizer,\n defaultRangeExtractor,\n ScrollToOptions as ReactVirtualScrollToOptions,\n Range,\n} from '@tanstack/react-virtual';\nimport { ROW_HEIGHT_ESTIMATES } from '../util/rows';\nimport { Row } from '../components/Row/Row';\nimport { useTableRenderers, useTableRenderOptions } from '../types';\nimport { TableRef } from '../../types';\nimport { SkeletonRow } from '../components/Row/BuiltIns/SkeletonRow';\n\n// scroll padding end is designed to always show half of the next row\nfunction getScrollPaddingEndOffset<TType = unknown>(table: ReactTable<TType>) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n let offset = 2;\n\n if (tableMeta.footer.isEnabled) {\n offset += 1;\n }\n\n if (table.getHeaderGroups().length > 1) {\n offset += table.getHeaderGroups().length - 1;\n }\n\n let height = ROW_HEIGHT_ESTIMATES.medium * offset;\n\n const bottomRows = table.getBottomRows();\n\n if (bottomRows.length) {\n // 1.4 offsets for half rows and also accounts for increased row heights (which is likely in pinned rows)\n height += ROW_HEIGHT_ESTIMATES[tableMeta.rowHeight.height] * 1.4 * bottomRows.length;\n }\n\n return height;\n}\n\n// scroll padding end is designed to always show half of the next row\nfunction getPaddingEndOffset<TType = unknown>(table: ReactTable<TType>, options?: useTableRenderOptions) {\n const bottomRows = table.getBottomRows() ?? [];\n return ROW_HEIGHT_ESTIMATES.medium * (options?.virtualiserPaddingEndOffset ?? 1) * bottomRows.length;\n}\n\n// A higher number ensure less scroll jumping for dynamic row heights, but too high can reduce performance. 8 worked well\nconst OVERSCAN_ROW_COUNT = 8;\n\nexport function useTableRenderer<TType = unknown>(\n renderers: useTableRenderers<TType>,\n table: ReactTable<TType>,\n tableRef: React.RefObject<TableRef>,\n length: number,\n defaultRowActiveIndex?: number | undefined,\n options?: useTableRenderOptions\n) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const isTableRowGrouped = !!table.getState().grouping?.length;\n const rows = table.getCenterRows() ?? [];\n\n // row groups\n const rangeExtractor = useRowGroupVirtualisation<TType>(table);\n\n // account for thead and tfoot in the scroll area - both are always medium row height\n const scrollPaddingStart = ROW_HEIGHT_ESTIMATES.medium;\n\n const count = tableMeta.server.isEnabled && tableMeta.server._experimentalDataLoader2 ? length : rows.length;\n\n const virtualiser = useVirtualizer({\n count,\n estimateSize: () => {\n return tableMeta.rowHeight.height ? ROW_HEIGHT_ESTIMATES[tableMeta.rowHeight.height] : ROW_HEIGHT_ESTIMATES.medium;\n },\n getScrollElement: () => tableRef.current,\n overscan: tableMeta.printing.isPrinting ? count : OVERSCAN_ROW_COUNT,\n rangeExtractor,\n // correctly sets the scroll padding offset, e.g. when keyboard navigating rows in the list\n scrollPaddingStart,\n scrollPaddingEnd: getScrollPaddingEndOffset(table),\n paddingEnd: getPaddingEndOffset(table, options),\n });\n\n React.useEffect(() => {\n virtualiser.measure();\n }, [table.getState().expanded]);\n\n const totalSize = virtualiser.getTotalSize();\n const virtualItems = virtualiser.getVirtualItems();\n\n const scrollToIndex = React.useCallback(\n (index: number, options: ReactVirtualScrollToOptions = { align: 'auto', behavior: 'smooth' }) => {\n const notSmooth: ReactVirtualScrollToOptions = { ...options, behavior: 'auto' };\n\n if (tableRef.current) {\n if (index === 0) {\n virtualiser.scrollToOffset(0, notSmooth);\n } else if (index === count - 1) {\n // sometimes the last row doesn't fully show, so we just force scroll to the bottom\n tableRef.current.scrollTop = tableRef.current.scrollHeight;\n } else {\n virtualiser.scrollToIndex(index, options);\n }\n }\n },\n [virtualItems.length, tableRef.current, totalSize, count]\n );\n\n // use row 1 not 0, because 0 might be sticky in grouped tables and it's start value will always be 0\n const paddingStartIndex = isTableRowGrouped && count > 1 ? 1 : 0;\n\n const startValue = isTableRowGrouped\n ? virtualItems[paddingStartIndex]?.start - virtualItems[paddingStartIndex]?.size\n : virtualItems[paddingStartIndex]?.start;\n\n // styling for offsetting rows - this \"is\" the virtualisation\n const [paddingTop, paddingBottom] =\n virtualItems.length > 0\n ? [Math.max(0, startValue ?? 0), Math.max(0, totalSize - (virtualItems[virtualItems.length - 1]?.end ?? 0))]\n : [0, 0];\n\n // ensure default active rows are scrolled to\n React.useEffect(() => {\n if (defaultRowActiveIndex) {\n scrollToIndex(defaultRowActiveIndex, { align: 'center', behavior: 'auto' });\n }\n }, []);\n\n // rendered output\n let style: CSSProperties = {};\n let content: (JSX.Element | null)[] | null = null;\n\n // bottom rows aren't virtualised (they're sticky) but we need to set the height\n if (count || table.getBottomRows().length) {\n style = {\n height: totalSize,\n paddingBottom: isNaN(paddingBottom) ? 0 : paddingBottom,\n paddingTop: isNaN(paddingTop) ? 0 : paddingTop,\n };\n }\n\n // only render non sticky rows\n if (count) {\n content = virtualItems.map(virtualRow => {\n // there appears to be a react-virtual bug where it inserts a single `undefined` item at the end of the row, which crashes here\n if (!virtualRow) {\n return null;\n }\n\n let row: ReactTableRow<TType> | undefined;\n\n if (tableMeta.server.isEnabled && tableMeta.server._experimentalDataLoader2) {\n const currentPageIndex =\n (Math.floor(virtualRow.index / tableMeta.server.pageSize) * tableMeta.server.pageSize) /\n tableMeta.server.pageSize;\n const pagePosition = tableMeta.server.pages?.indexOf(currentPageIndex) ?? -1;\n\n if (pagePosition > -1) {\n // \"flatten\" row indexes down into the dataloader2 dataset size\n // for example, with a page size of 100...\n // row index 14267 is actually one of index 67, 167, 267 etc within the dataset (depending on number of pages stored)\n const fakeIndex = pagePosition * tableMeta.server.pageSize + (virtualRow.index % tableMeta.server.pageSize);\n row = rows[fakeIndex];\n }\n } else {\n row = rows[virtualRow.index];\n }\n\n if (!row?.original) {\n return (\n <SkeletonRow\n key={virtualRow.index}\n index={virtualRow.index}\n scrollDirection={virtualiser.scrollDirection ?? undefined}\n table={table}\n />\n );\n }\n\n return (\n <Row\n key={row.id}\n row={row}\n index={virtualRow.index}\n scrollDirection={virtualiser.scrollDirection ?? undefined}\n table={table}\n measureRow={virtualiser.resizeItem}\n renderer={renderers.row}\n cellRenderer={renderers.cell}\n />\n );\n });\n }\n\n return {\n rows: content,\n style,\n scrollToIndex,\n };\n}\n\n// support virtualised row groups (where the row group headers are sticky)\nfunction useRowGroupVirtualisation<TType = unknown>(table: ReactTable<TType>) {\n const rows = table.getRowModel().rows;\n const isTableGrouped = !!table.getState().grouping.length;\n\n const rowGroupIndexes = React.useMemo(() => {\n const indexes: number[] = [];\n\n if (isTableGrouped) {\n rows.forEach((row, index) => {\n if (row.getIsGrouped()) {\n indexes.push(index);\n }\n });\n }\n\n return indexes;\n }, [rows]);\n\n // this is taken from the react-virtual docs/examples\n const rangeExtractor = React.useCallback(\n (range: Range) => {\n const activeRowGroupIndex =\n [...rowGroupIndexes].reverse().find(index => range.startIndex >= index) ?? rowGroupIndexes[0];\n\n const next = new Set([activeRowGroupIndex, ...defaultRangeExtractor(range)]);\n return [...next].sort((a, b) => a - b);\n },\n [rowGroupIndexes]\n );\n\n return isTableGrouped ? rangeExtractor : undefined;\n}\n"],"names":["getScrollPaddingEndOffset","table","tableMeta","options","meta","offset","footer","isEnabled","getHeaderGroups","length","height","ROW_HEIGHT_ESTIMATES","medium","bottomRows","getBottomRows","rowHeight","getPaddingEndOffset","_table$getBottomRows","_options$virtualiserP","virtualiserPaddingEndOffset","OVERSCAN_ROW_COUNT","useTableRenderer","renderers","tableRef","defaultRowActiveIndex","isTableRowGrouped","_table$getState$group","getState","grouping","rows","_table$getCenterRows","getCenterRows","rangeExtractor","useRowGroupVirtualisation","scrollPaddingStart","count","server","_experimentalDataLoader2","virtualiser","useVirtualizer","estimateSize","getScrollElement","current","overscan","printing","isPrinting","scrollPaddingEnd","paddingEnd","React","useEffect","measure","expanded","totalSize","getTotalSize","virtualItems","getVirtualItems","scrollToIndex","useCallback","index","align","behavior","notSmooth","scrollToOffset","scrollTop","scrollHeight","paddingStartIndex","startValue","_virtualItems$padding","start","_virtualItems$padding2","size","_virtualItems$padding3","paddingTop","paddingBottom","Math","max","_virtualItems$end","_virtualItems","end","style","content","isNaN","map","virtualRow","row","_tableMeta$server$pag","_tableMeta$server$pag2","currentPageIndex","floor","pageSize","pagePosition","pages","indexOf","fakeIndex","_row","original","_virtualiser$scrollDi","SkeletonRow","key","scrollDirection","undefined","Row","id","_virtualiser$scrollDi2","measureRow","resizeItem","renderer","cellRenderer","cell","getRowModel","isTableGrouped","rowGroupIndexes","useMemo","indexes","forEach","getIsGrouped","push","range","activeRowGroupIndex","_reverse$find","reverse","find","startIndex","next","Set","defaultRangeExtractor","sort","a","b"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"useTableRenderer.js","sources":["../../../../../../../../../src/primitives/Table/Core/features/useTableRenderer.tsx"],"sourcesContent":["import React, { CSSProperties } from 'react';\nimport { Table as ReactTable, TableMeta as ReactTableMeta, Row as ReactTableRow } from '@tanstack/react-table';\nimport {\n useVirtualizer,\n defaultRangeExtractor,\n ScrollToOptions as ReactVirtualScrollToOptions,\n Range,\n} from '@tanstack/react-virtual';\nimport { ROW_HEIGHT_ESTIMATES } from '../util/rows';\nimport { Row } from '../components/Row/Row';\nimport { useTableRenderers, useTableRenderOptions } from '../types';\nimport { TableRef } from '../../types';\nimport { SkeletonRow } from '../components/Row/BuiltIns/SkeletonRow';\n\n// scroll padding end is designed to always show half of the next row\nfunction getScrollPaddingEndOffset<TType = unknown>(table: ReactTable<TType>) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n let offset = 2;\n\n if (tableMeta.footer.isEnabled) {\n offset += 1;\n }\n\n if (table.getHeaderGroups().length > 1) {\n offset += table.getHeaderGroups().length - 1;\n }\n\n let height = ROW_HEIGHT_ESTIMATES.medium * offset;\n\n const bottomRows = table.getBottomRows();\n\n if (bottomRows.length) {\n // 1.4 offsets for half rows and also accounts for increased row heights (which is likely in pinned rows)\n height += ROW_HEIGHT_ESTIMATES[tableMeta.rowHeight.height] * 1.4 * bottomRows.length;\n }\n\n return height;\n}\n\n// scroll padding end is designed to always show half of the next row\nfunction getPaddingEndOffset<TType = unknown>(table: ReactTable<TType>, options?: useTableRenderOptions) {\n const bottomRows = table.getBottomRows() ?? [];\n return ROW_HEIGHT_ESTIMATES.medium * (options?.virtualiserPaddingEndOffset ?? 1) * bottomRows.length;\n}\n\n// A higher number ensure less scroll jumping for dynamic row heights, but too high can reduce performance. 8 worked well\nconst OVERSCAN_ROW_COUNT = 8;\n\nexport function useTableRenderer<TType = unknown>(\n renderers: useTableRenderers<TType>,\n table: ReactTable<TType>,\n tableRef: React.RefObject<TableRef>,\n length: number,\n defaultRowActiveIndex?: number | undefined,\n options?: useTableRenderOptions\n) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const isTableRowGrouped = !!table.getState().grouping?.length;\n const rows = table.getCenterRows() ?? [];\n\n // row groups\n const rangeExtractor = useRowGroupVirtualisation<TType>(table);\n\n // account for thead and tfoot in the scroll area - both are always medium row height\n const scrollPaddingStart = ROW_HEIGHT_ESTIMATES.medium;\n\n const count = tableMeta.server.isEnabled && tableMeta.server._experimentalDataLoader2 ? length : rows.length;\n\n const virtualiser = useVirtualizer({\n count,\n estimateSize: () => {\n return tableMeta.rowHeight.height ? ROW_HEIGHT_ESTIMATES[tableMeta.rowHeight.height] : ROW_HEIGHT_ESTIMATES.medium;\n },\n getScrollElement: () => tableRef.current,\n overscan: tableMeta.printing.isPrinting ? count : OVERSCAN_ROW_COUNT,\n rangeExtractor,\n // correctly sets the scroll padding offset, e.g. when keyboard navigating rows in the list\n scrollPaddingStart,\n scrollPaddingEnd: getScrollPaddingEndOffset(table),\n paddingEnd: getPaddingEndOffset(table, options),\n });\n\n React.useEffect(() => {\n virtualiser.measure();\n }, [table.getState().expanded]);\n\n const totalSize = virtualiser.getTotalSize();\n const virtualItems = virtualiser.getVirtualItems();\n\n const scrollToIndex = React.useCallback(\n (index: number, options: ReactVirtualScrollToOptions = { align: 'auto', behavior: 'smooth' }) => {\n const notSmooth: ReactVirtualScrollToOptions = { ...options, behavior: 'auto' };\n\n if (tableRef.current) {\n if (index === 0) {\n virtualiser.scrollToOffset(0, notSmooth);\n } else if (index === count - 1) {\n // sometimes the last row doesn't fully show, so we just force scroll to the bottom\n tableRef.current.scrollTop = tableRef.current.scrollHeight;\n } else {\n virtualiser.scrollToIndex(index, options);\n }\n }\n },\n [virtualItems.length, tableRef.current, totalSize, count]\n );\n\n // use row 1 not 0, because 0 might be sticky in grouped tables and it's start value will always be 0\n const paddingStartIndex = isTableRowGrouped && count > 1 ? 1 : 0;\n\n const startValue = isTableRowGrouped\n ? virtualItems[paddingStartIndex]?.start - virtualItems[paddingStartIndex]?.size\n : virtualItems[paddingStartIndex]?.start;\n\n // styling for offsetting rows - this \"is\" the virtualisation\n const [paddingTop, paddingBottom] =\n virtualItems.length > 0\n ? [Math.max(0, startValue ?? 0), Math.max(0, totalSize - (virtualItems[virtualItems.length - 1]?.end ?? 0))]\n : [0, 0];\n\n // ensure default active rows are scrolled to\n React.useEffect(() => {\n if (defaultRowActiveIndex) {\n scrollToIndex(defaultRowActiveIndex, { align: 'center', behavior: 'auto' });\n }\n }, []);\n\n // rendered output\n let style: CSSProperties = {};\n let content: (JSX.Element | null)[] | null = null;\n\n // bottom rows aren't virtualised (they're sticky) but we need to set the height\n if (count || table.getBottomRows().length) {\n style = {\n height: totalSize,\n paddingBottom: isNaN(paddingBottom) ? 0 : paddingBottom,\n paddingTop: isNaN(paddingTop) ? 0 : paddingTop,\n };\n }\n\n // only render non sticky rows\n if (count) {\n content = virtualItems.map(virtualRow => {\n // there appears to be a react-virtual bug where it inserts a single `undefined` item at the end of the row, which crashes here\n if (!virtualRow) {\n return null;\n }\n\n let row: ReactTableRow<TType> | undefined;\n\n if (tableMeta.server.isEnabled && tableMeta.server._experimentalDataLoader2) {\n const currentPageIndex =\n (Math.floor(virtualRow.index / tableMeta.server.pageSize) * tableMeta.server.pageSize) /\n tableMeta.server.pageSize;\n const pagePosition = tableMeta.server.pages?.indexOf(currentPageIndex) ?? -1;\n\n if (pagePosition > -1) {\n // \"flatten\" row indexes down into the dataloader2 dataset size\n // for example, with a page size of 100...\n // row index 14267 is actually one of index 67, 167, 267 etc within the dataset (depending on number of pages stored)\n const fakeIndex = pagePosition * tableMeta.server.pageSize + (virtualRow.index % tableMeta.server.pageSize);\n row = rows[fakeIndex];\n }\n } else {\n row = rows[virtualRow.index];\n }\n\n if (!row?.original) {\n return (\n <SkeletonRow\n key={virtualRow.index}\n index={virtualRow.index}\n scrollDirection={virtualiser.scrollDirection ?? undefined}\n table={table}\n />\n );\n }\n\n const measureRow = (rowHeight: number) => {\n virtualiser.resizeItem(virtualRow, rowHeight);\n };\n\n return (\n <Row\n key={row.id}\n row={row}\n index={virtualRow.index}\n scrollDirection={virtualiser.scrollDirection ?? undefined}\n table={table}\n measureRow={measureRow}\n renderer={renderers.row}\n cellRenderer={renderers.cell}\n />\n );\n });\n }\n\n return {\n rows: content,\n style,\n scrollToIndex,\n };\n}\n\n// support virtualised row groups (where the row group headers are sticky)\nfunction useRowGroupVirtualisation<TType = unknown>(table: ReactTable<TType>) {\n const rows = table.getRowModel().rows;\n const isTableGrouped = !!table.getState().grouping.length;\n\n const rowGroupIndexes = React.useMemo(() => {\n const indexes: number[] = [];\n\n if (isTableGrouped) {\n rows.forEach((row, index) => {\n if (row.getIsGrouped()) {\n indexes.push(index);\n }\n });\n }\n\n return indexes;\n }, [rows]);\n\n // this is taken from the react-virtual docs/examples\n const rangeExtractor = React.useCallback(\n (range: Range) => {\n const activeRowGroupIndex =\n [...rowGroupIndexes].reverse().find(index => range.startIndex >= index) ?? rowGroupIndexes[0];\n\n const next = new Set([activeRowGroupIndex, ...defaultRangeExtractor(range)]);\n return [...next].sort((a, b) => a - b);\n },\n [rowGroupIndexes]\n );\n\n return isTableGrouped ? rangeExtractor : undefined;\n}\n"],"names":["getScrollPaddingEndOffset","table","tableMeta","options","meta","offset","footer","isEnabled","getHeaderGroups","length","height","ROW_HEIGHT_ESTIMATES","medium","bottomRows","getBottomRows","rowHeight","getPaddingEndOffset","_table$getBottomRows","_options$virtualiserP","virtualiserPaddingEndOffset","OVERSCAN_ROW_COUNT","useTableRenderer","renderers","tableRef","defaultRowActiveIndex","isTableRowGrouped","_table$getState$group","getState","grouping","rows","_table$getCenterRows","getCenterRows","rangeExtractor","useRowGroupVirtualisation","scrollPaddingStart","count","server","_experimentalDataLoader2","virtualiser","useVirtualizer","estimateSize","getScrollElement","current","overscan","printing","isPrinting","scrollPaddingEnd","paddingEnd","React","useEffect","measure","expanded","totalSize","getTotalSize","virtualItems","getVirtualItems","scrollToIndex","useCallback","index","align","behavior","notSmooth","scrollToOffset","scrollTop","scrollHeight","paddingStartIndex","startValue","_virtualItems$padding","start","_virtualItems$padding2","size","_virtualItems$padding3","paddingTop","paddingBottom","Math","max","_virtualItems$end","_virtualItems","end","style","content","isNaN","map","virtualRow","row","_tableMeta$server$pag","_tableMeta$server$pag2","currentPageIndex","floor","pageSize","pagePosition","pages","indexOf","fakeIndex","_row","original","_virtualiser$scrollDi","SkeletonRow","key","scrollDirection","undefined","measureRow","resizeItem","Row","id","_virtualiser$scrollDi2","renderer","cellRenderer","cell","getRowModel","isTableGrouped","rowGroupIndexes","useMemo","indexes","forEach","getIsGrouped","push","range","activeRowGroupIndex","_reverse$find","reverse","find","startIndex","next","Set","defaultRangeExtractor","sort","a","b"],"mappings":"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"}
|
@@ -12,7 +12,7 @@ export declare type TableRowRendererProps<TType = unknown> = {
|
|
12
12
|
hideInternalColumns?: boolean;
|
13
13
|
hideRowActions?: boolean;
|
14
14
|
index: number;
|
15
|
-
measureRow: (
|
15
|
+
measureRow: (size: number) => void;
|
16
16
|
row: ReactTableRow<TType>;
|
17
17
|
table: ReactTable<TType>;
|
18
18
|
};
|
@@ -12550,13 +12550,16 @@ function useTableRenderer(renderers, table, tableRef, length, defaultRowActiveIn
|
|
12550
12550
|
table: table
|
12551
12551
|
});
|
12552
12552
|
}
|
12553
|
+
const measureRow = rowHeight => {
|
12554
|
+
virtualiser.resizeItem(virtualRow, rowHeight);
|
12555
|
+
};
|
12553
12556
|
return /*#__PURE__*/React__default.createElement(Row, {
|
12554
12557
|
key: row.id,
|
12555
12558
|
row: row,
|
12556
12559
|
index: virtualRow.index,
|
12557
12560
|
scrollDirection: (_virtualiser$scrollDi2 = virtualiser.scrollDirection) !== null && _virtualiser$scrollDi2 !== void 0 ? _virtualiser$scrollDi2 : undefined,
|
12558
12561
|
table: table,
|
12559
|
-
measureRow:
|
12562
|
+
measureRow: measureRow,
|
12560
12563
|
renderer: renderers.row,
|
12561
12564
|
cellRenderer: renderers.cell
|
12562
12565
|
});
|
@@ -13258,7 +13261,7 @@ const DisplayRow = /*#__PURE__*/React__default.memo(function DisplayRow(props) {
|
|
13258
13261
|
var _ref$current$getBound, _ref$current, _expansionRef$current, _expansionRef$current2;
|
13259
13262
|
const rowHeight = (_ref$current$getBound = (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.getBoundingClientRect().height) !== null && _ref$current$getBound !== void 0 ? _ref$current$getBound : 0;
|
13260
13263
|
const expansionHeight = (_expansionRef$current = (_expansionRef$current2 = expansionRef.current) === null || _expansionRef$current2 === void 0 ? void 0 : _expansionRef$current2.getBoundingClientRect().height) !== null && _expansionRef$current !== void 0 ? _expansionRef$current : 0;
|
13261
|
-
measureRow(
|
13264
|
+
measureRow(rowHeight + expansionHeight);
|
13262
13265
|
}, [expansionRef.current]);
|
13263
13266
|
const className = cn('group/row', otherAttributes.className, {
|
13264
13267
|
'hover:cursor-grab': tableMeta.rowDrag.isEnabled && typeof attributes.onClick !== 'function',
|