@economic/taco 2.29.2 → 2.30.0

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.
Files changed (24) hide show
  1. package/dist/esm/index.css +6 -2
  2. package/dist/esm/packages/taco/src/components/Table/hooks/useRowCreation.js +1 -1
  3. package/dist/esm/packages/taco/src/primitives/Table/Core/Table.js +1 -0
  4. package/dist/esm/packages/taco/src/primitives/Table/Core/Table.js.map +1 -1
  5. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Body/Body.js +13 -4
  6. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Body/Body.js.map +1 -1
  7. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableRenderer.js +20 -27
  8. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableRenderer.js.map +1 -1
  9. package/dist/esm/packages/taco/src/primitives/Table/Core/util/rows.js +1 -2
  10. package/dist/esm/packages/taco/src/primitives/Table/Core/util/rows.js.map +1 -1
  11. package/dist/esm/packages/taco/src/primitives/Table/types.js.map +1 -1
  12. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowActive.js +3 -3
  13. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowActive.js.map +1 -1
  14. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js +4 -5
  15. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js.map +1 -1
  16. package/dist/index.css +6 -2
  17. package/dist/primitives/Table/Core/components/Body/Body.d.ts +1 -0
  18. package/dist/primitives/Table/Core/util/rows.d.ts +0 -1
  19. package/dist/primitives/Table/types.d.ts +2 -2
  20. package/dist/taco.cjs.development.js +40 -40
  21. package/dist/taco.cjs.development.js.map +1 -1
  22. package/dist/taco.cjs.production.min.js +1 -1
  23. package/dist/taco.cjs.production.min.js.map +1 -1
  24. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sources":["../../../../../../../../../src/primitives/Table/useTableManager/util/setup.ts"],"sourcesContent":["import React from 'react';\nimport {\n createColumnHelper,\n getExpandedRowModel,\n getFilteredRowModel,\n getGroupedRowModel,\n getSortedRowModel,\n TableOptions as ReactTableOptions,\n Row as ReactTableRow,\n Column as ReactTableColumn,\n ColumnDef as ReactTableColumnDef,\n ColumnPinningState as ReactTableColumnPinningState,\n ColumnSizingState as ReactTableColumnSizingState,\n ColumnSort as ReactTableColumnSort,\n TableState as ReactTableState,\n VisibilityState as ReactTableVisibilityState,\n} from '@tanstack/react-table';\nimport { useTableManagerInternalColumns, useTableManagerInternalColumn } from '../types';\nimport { TableColumnProps, TableFeatureProps, TableGroupProps, TableProps, TableSettings } from '../../types';\nimport { getSortingFn } from './sorting';\nimport { ensureOrdering, freezeUptoExternalColumn, getCellMinWidth, unfreezeAllExternalColumns } from './columns';\nimport { columnFilterFn, globalFilterFn } from './filtering';\nimport { ignoreInternalColumns } from './settings';\n\n// mapping children to react-table columns\nfunction processChildren<TType>(\n child: React.ReactChild | React.ReactFragment | React.ReactPortal,\n columns: ReactTableColumnDef<TType>[],\n defaultSizing: ReactTableColumnSizingState,\n defaultSorting: ReactTableColumnSort[],\n defaultVisibility: ReactTableVisibilityState,\n settings: TableSettings,\n defaultRowGroupColumnId?: keyof TType\n): ReactTableColumnDef<TType>[] {\n const columnHelper = createColumnHelper<TType>();\n\n if (React.isValidElement<TableGroupProps>(child) && child.props.children) {\n const { children, id, header } = child.props;\n\n columns.push(\n columnHelper.group({\n id,\n header,\n columns: React.Children.toArray(children).reduce(\n (columns: ReactTableColumnDef<TType>[], child) =>\n processChildren<TType>(\n child,\n columns,\n defaultSizing,\n defaultSorting,\n defaultVisibility,\n settings,\n defaultRowGroupColumnId\n ),\n []\n ),\n // we don't want to let column groups be grouped/aggregrated\n enableGrouping: false,\n })\n );\n } else if (React.isValidElement<TableColumnProps<TType>>(child) && (child.props.accessor || child.props.id)) {\n const {\n id,\n accessor: accessorKey = id,\n // renderers\n renderer,\n aggregate,\n footer,\n header,\n // options\n aggregationFn,\n defaultHidden,\n defaultWidth,\n enableFiltering: enableColumnFilter = true,\n enableGrouping = false,\n enableHiding = true,\n enableOrdering = true,\n enablePrinting = true,\n enableResizing = true,\n enableSearch: enableGlobalFilter = true,\n enableSorting = true,\n enableTruncate = false,\n minWidth: minSize = getCellMinWidth(settings.fontSize),\n sort,\n sortFn,\n ...meta\n } = child.props;\n\n if (defaultHidden && enableHiding) {\n defaultVisibility[id] = false;\n }\n\n if (defaultWidth) {\n defaultSizing[id] = defaultWidth as any;\n }\n\n const isGrouped = defaultRowGroupColumnId === id;\n\n if (child.props.sort !== undefined || isGrouped) {\n defaultSorting.push({\n id,\n desc: sort === 'desc',\n });\n }\n\n const column: ReactTableColumnDef<TType, any> = {\n id,\n accessorKey,\n // To avoid errors caused by undefined row data values, we pass accessorFn as a preventive measure\n accessorFn: row => row?.[accessorKey as string],\n header: header,\n // features\n enableColumnFilter,\n enableGlobalFilter,\n enableGrouping,\n enableHiding: isGrouped ? false : enableHiding,\n enableResizing,\n enableSorting,\n // config - sizing\n minSize,\n // meta\n meta: {\n ...(meta as any),\n defaultWidth,\n enableOrdering: isGrouped ? false : enableOrdering,\n enablePrinting,\n enableTruncate,\n header,\n renderer,\n },\n };\n\n // renderers\n if (typeof renderer === 'function') {\n column.cell = info => renderer(info.getValue(), info.row.original);\n }\n\n if (typeof footer === 'function') {\n column.footer = info =>\n footer(\n info.table.getRowModel().rows.flatMap(row => (row.original?.[id] !== undefined ? [row.original[id]] : []))\n );\n }\n\n // config - filtering\n if (enableColumnFilter) {\n column.filterFn = 'tacoFilter' as any;\n }\n\n // config - grouping/aggregation\n if (enableGrouping) {\n column.aggregationFn = aggregationFn;\n\n if (typeof aggregate === 'function') {\n column.aggregatedCell = info => aggregate(info.getValue(), info.row.original);\n }\n }\n\n // config - sorting\n if (enableSorting) {\n column.sortingFn = getSortingFn<TType>(child.props.dataType, sortFn);\n column.sortDescFirst = false;\n column.sortUndefined = 1;\n }\n\n columns.push(column);\n }\n\n return columns;\n}\n\nfunction createInternalColumn<TType = unknown>(\n id: string,\n column: useTableManagerInternalColumn<TType>,\n defaultSizing: ReactTableColumnSizingState\n) {\n if (column.size) {\n defaultSizing[id] = column.size;\n }\n\n return {\n id,\n accessorKey: id,\n header: column.header,\n cell: column.renderer,\n // features\n enableColumnFilter: false,\n enableGlobalFilter: false,\n enableGrouping: false,\n enableHiding: false,\n enableResizing: false,\n enableSorting: false,\n // config - sizing\n size: column.size,\n minSize: column.size,\n // meta\n meta: {\n ...(column.meta as any),\n enableOrdering: false,\n enablePrinting: false,\n enableTruncate: false,\n },\n } as ReactTableColumnDef<TType, any>;\n}\n\nexport function mapTableChildrenToColumns<TType = unknown>(\n props: TableProps<TType>,\n settings: TableSettings,\n options: TableFeatureProps,\n internalColumns?: useTableManagerInternalColumns<TType>\n) {\n const { children, defaultRowGroupColumnId } = props;\n const defaultSizing: ReactTableColumnSizingState = {};\n const defaultSorting: ReactTableColumnSort[] = [];\n const defaultVisibility: ReactTableVisibilityState = {};\n\n const columns = React.Children.toArray(children).reduce(\n (columns: ReactTableColumnDef<TType>[], child) =>\n processChildren<TType>(\n child,\n columns,\n defaultSizing,\n defaultSorting,\n defaultVisibility,\n settings,\n defaultRowGroupColumnId\n ),\n\n []\n );\n\n if (internalColumns) {\n if (options.enableRowExpansion && props.rowExpansionRenderer && internalColumns.rowExpansion) {\n const column = createInternalColumn<TType>('__expansion', internalColumns.rowExpansion, defaultSizing);\n columns.unshift(column);\n }\n\n if ((options.enableRowSelection || options.enableRowSelectionSingle) && internalColumns.rowSelection) {\n const column = createInternalColumn<TType>('__select', internalColumns.rowSelection, defaultSizing);\n columns.unshift(column);\n }\n\n if (options.enableRowDrag && props.onRowDrag && internalColumns.rowDrag) {\n const column = createInternalColumn<TType>('__drag', internalColumns.rowDrag, defaultSizing);\n columns.unshift(column);\n }\n\n if (options.enableRowActions && props.rowActions?.length && internalColumns.rowActions) {\n const column = createInternalColumn<TType>('__actions', internalColumns.rowActions, defaultSizing);\n columns.push(column);\n }\n }\n\n return { columns, defaultSizing, defaultSorting, defaultVisibility };\n}\n\nexport function configureReactTableOptions<TType = unknown>(options: TableFeatureProps, props: TableProps<TType>) {\n const enableRowSelection = options.enableRowSelection || options.enableRowSelectionSingle;\n const tableOptions: Partial<ReactTableOptions<TType>> = {\n defaultColumn: {\n enableColumnFilter: options.enableFiltering || true,\n enableGrouping: false,\n enableHiding: options.enableColumnHiding || true,\n enableResizing: options.enableColumnResizing || true,\n enableGlobalFilter: options.enableSearch || true,\n enableSorting: options.enableSorting || true,\n minSize: 1,\n // the default is 150, which is a bit random\n size: 1,\n },\n enableColumnFilters: options.enableFiltering ?? false,\n enableColumnResizing: options.enableColumnResizing ?? false,\n enableExpanding: options.enableRowExpansion ?? false,\n enableGrouping: true, // users can't customise row grouping, so it can just be always enabled and left to the defaultRowGroupColumnId prop\n enableHiding: options.enableColumnHiding ?? false,\n enablePinning: options.enableColumnFreezing ?? false,\n enableRowSelection: enableRowSelection ?? false,\n enableMultiRowSelection: options.enableRowSelectionSingle === true ? false : enableRowSelection,\n enableSorting: options.enableSorting ?? false,\n // models for default features\n getExpandedRowModel: getExpandedRowModel<TType>(),\n getGroupedRowModel: getGroupedRowModel<TType>(),\n groupedColumnMode: false,\n };\n\n if (tableOptions.enableColumnResizing) {\n tableOptions.columnResizeMode = 'onChange';\n }\n\n if (tableOptions.enableColumnFilters) {\n // enter controlled filter mode (controlled could be local state, but usually the server)\n if (props.onChangeFilter) {\n // tableOptions.manualFiltering = true;\n // we don't set it because it breaks global filtering (used for search, which is fully client side)\n //\n // tableOptions.onColumnFiltersChange = ...\n // we don't set this because it expects state to be maintained externally, and we don't want\n // consumers to control state outside the table. instead we have a listener that calls onFilter\n } else {\n tableOptions.getFilteredRowModel = getFilteredRowModel<TType>();\n tableOptions.filterFns = {\n tacoFilter: (row: ReactTableRow<TType>, columnId: string, filter: any) =>\n columnFilterFn(row.getValue(columnId), filter),\n };\n }\n }\n\n if (options.enableSearch) {\n // always set these because enableGlobalFilter can be toggled on and off by the user\n tableOptions.getFilteredRowModel = getFilteredRowModel<TType>();\n tableOptions.globalFilterFn = globalFilterFn;\n tableOptions.getColumnCanGlobalFilter = (column: ReactTableColumn<TType>) => column.columnDef.meta?.enableSearch ?? true;\n\n // enter controlled search mode (controlled could be local state, but usually the server)\n if (props.onChangeSearch) {\n // tableOptions.manualFiltering = true;\n // we don't set this because controlled search is not currently supported, search is always client side\n //\n // tableOptions.onGlobalFilterChange = ...\n // we don't set this because it expects state to be maintained externally, and we don't want\n // consumers to control state outside the table. instead we have a listener that calls onSearch.\n //\n // we also don't always filter when searching, we have the highlight functionality as the default\n // and filtering can be toggled by the user\n }\n }\n\n if (tableOptions.enableSorting) {\n // enter controlled sort mode (controlled could be local state, but usually the server)\n if (props.onChangeSort) {\n tableOptions.manualSorting = true;\n\n // tableOptions.onSortingChange = ...\n // we don't set this because it expects state to be maintained externally, and we don't want\n // consumers to control state outside the table. instead we have a listener that calls onSort\n } else {\n tableOptions.getSortedRowModel = getSortedRowModel();\n }\n }\n\n return tableOptions;\n}\n\nexport function useReactTableInitialState<TType = unknown>(\n props: TableProps<TType>,\n columns: ReactTableColumnDef<TType>[],\n persistedSettings: TableSettings,\n defaults: {\n defaultSizing: ReactTableColumnSizingState;\n defaultSorting: ReactTableColumnSort[];\n defaultVisibility: ReactTableVisibilityState;\n }\n): Partial<ReactTableState> {\n return React.useMemo(() => {\n const ignoreNotDefinedColumns = column => columns.find(definedColumn => definedColumn.id === column.id);\n\n const columnPinning: ReactTableColumnPinningState =\n persistedSettings.columnPinning ?? props.defaultSettings?.columnPinning ?? {};\n\n const columnOrder = ensureOrdering<TType>(\n columns,\n persistedSettings.columnOrder ?? props.defaultSettings?.columnOrder,\n columnPinning.left\n );\n\n // ensure internal columns are pinned, and are pinned in the correct order\n if (columnPinning?.left?.length) {\n columnPinning.left = freezeUptoExternalColumn(\n columnOrder.indexOf(columnPinning.left[columnPinning.left.length - 1]),\n columnOrder\n );\n } else {\n if (props.defaultColumnFreezingIndex) {\n columnPinning.left = freezeUptoExternalColumn(props.defaultColumnFreezingIndex, columnOrder);\n } else {\n columnPinning.left = unfreezeAllExternalColumns(columnOrder);\n }\n }\n\n const state: Partial<ReactTableState> = {\n columnFilters: persistedSettings.columnFilters ?? props.defaultSettings?.columnFilters ?? [],\n columnOrder,\n columnPinning,\n columnSizing: ignoreInternalColumns(\n persistedSettings.columnSizing ?? props.defaultSettings?.columnSizing ?? defaults.defaultSizing ?? {}\n ),\n columnVisibility:\n persistedSettings.columnVisibility ?? props.defaultSettings?.columnVisibility ?? defaults.defaultVisibility ?? {},\n globalFilter: persistedSettings.searchQuery ?? props.defaultSettings?.searchQuery,\n sorting: persistedSettings.sorting\n ? persistedSettings.sorting.filter(ignoreNotDefinedColumns)\n : props.defaultSettings?.sorting ?? defaults.defaultSorting,\n };\n\n if (props.defaultRowGroupColumnId) {\n state.grouping = [props.defaultRowGroupColumnId as string];\n // row groups should (all) always be expanded by default\n state.expanded = true;\n }\n\n return state;\n }, []);\n}\n"],"names":["processChildren","child","columns","defaultSizing","defaultSorting","defaultVisibility","settings","defaultRowGroupColumnId","columnHelper","createColumnHelper","React","isValidElement","props","children","id","header","push","group","Children","toArray","reduce","enableGrouping","accessor","accessorKey","renderer","aggregate","footer","aggregationFn","defaultHidden","defaultWidth","enableFiltering","enableColumnFilter","enableHiding","enableOrdering","enablePrinting","enableResizing","enableSearch","enableGlobalFilter","enableSorting","enableTruncate","minWidth","minSize","getCellMinWidth","fontSize","sort","sortFn","meta","isGrouped","undefined","desc","column","accessorFn","row","cell","info","getValue","original","table","getRowModel","rows","flatMap","_row$original","filterFn","aggregatedCell","sortingFn","getSortingFn","dataType","sortDescFirst","sortUndefined","createInternalColumn","size","mapTableChildrenToColumns","options","internalColumns","_props$rowActions","enableRowExpansion","rowExpansionRenderer","rowExpansion","unshift","enableRowSelection","enableRowSelectionSingle","rowSelection","enableRowDrag","onRowDrag","rowDrag","enableRowActions","rowActions","length","configureReactTableOptions","tableOptions","defaultColumn","enableColumnHiding","enableColumnResizing","enableColumnFilters","_options$enableFilter","_options$enableColumn","enableExpanding","_options$enableRowExp","_options$enableColumn2","enablePinning","_options$enableColumn3","enableColumnFreezing","enableMultiRowSelection","_options$enableSortin","getExpandedRowModel","getGroupedRowModel","groupedColumnMode","columnResizeMode","onChangeFilter","getFilteredRowModel","filterFns","tacoFilter","columnId","filter","columnFilterFn","globalFilterFn","getColumnCanGlobalFilter","_column$columnDef$met","_column$columnDef$met2","columnDef","onChangeSort","manualSorting","getSortedRowModel","useReactTableInitialState","persistedSettings","defaults","useMemo","ignoreNotDefinedColumns","find","definedColumn","columnPinning","_ref","_persistedSettings$co","_props$defaultSetting","defaultSettings","columnOrder","ensureOrdering","_persistedSettings$co2","_props$defaultSetting2","left","_columnPinning$left","freezeUptoExternalColumn","indexOf","defaultColumnFreezingIndex","unfreezeAllExternalColumns","state","columnFilters","_ref2","_persistedSettings$co3","_props$defaultSetting3","columnSizing","ignoreInternalColumns","_ref3","_ref4","_persistedSettings$co4","_props$defaultSetting4","columnVisibility","_ref5","_ref6","_persistedSettings$co5","_props$defaultSetting5","globalFilter","_persistedSettings$se","searchQuery","_props$defaultSetting6","sorting","_props$defaultSetting7","_props$defaultSetting8","grouping","expanded"],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sources":["../../../../../../../../../src/primitives/Table/useTableManager/util/setup.ts"],"sourcesContent":["import React from 'react';\nimport {\n createColumnHelper,\n getExpandedRowModel,\n getFilteredRowModel,\n getGroupedRowModel,\n getSortedRowModel,\n TableOptions as ReactTableOptions,\n Row as ReactTableRow,\n Column as ReactTableColumn,\n ColumnDef as ReactTableColumnDef,\n ColumnPinningState as ReactTableColumnPinningState,\n ColumnSizingState as ReactTableColumnSizingState,\n ColumnSort as ReactTableColumnSort,\n TableState as ReactTableState,\n VisibilityState as ReactTableVisibilityState,\n} from '@tanstack/react-table';\nimport get from 'lodash/get';\n\nimport { useTableManagerInternalColumns, useTableManagerInternalColumn } from '../types';\nimport { TableColumnProps, TableFeatureProps, TableGroupProps, TableProps, TableSettings } from '../../types';\nimport { getSortingFn } from './sorting';\nimport { ensureOrdering, freezeUptoExternalColumn, getCellMinWidth, unfreezeAllExternalColumns } from './columns';\nimport { columnFilterFn, globalFilterFn } from './filtering';\nimport { ignoreInternalColumns } from './settings';\n\n// mapping children to react-table columns\nfunction processChildren<TType>(\n child: React.ReactChild | React.ReactFragment | React.ReactPortal,\n columns: ReactTableColumnDef<TType>[],\n defaultSizing: ReactTableColumnSizingState,\n defaultSorting: ReactTableColumnSort[],\n defaultVisibility: ReactTableVisibilityState,\n settings: TableSettings,\n defaultRowGroupColumnId?: keyof TType\n): ReactTableColumnDef<TType>[] {\n const columnHelper = createColumnHelper<TType>();\n\n if (React.isValidElement<TableGroupProps>(child) && child.props.children) {\n const { children, id, header } = child.props;\n\n columns.push(\n columnHelper.group({\n id,\n header,\n columns: React.Children.toArray(children).reduce(\n (columns: ReactTableColumnDef<TType>[], child) =>\n processChildren<TType>(\n child,\n columns,\n defaultSizing,\n defaultSorting,\n defaultVisibility,\n settings,\n defaultRowGroupColumnId\n ),\n []\n ),\n // we don't want to let column groups be grouped/aggregrated\n enableGrouping: false,\n })\n );\n } else if (React.isValidElement<TableColumnProps<TType>>(child) && (child.props.accessor || child.props.id)) {\n const {\n id,\n accessor: accessorKey = id,\n // renderers\n renderer,\n aggregate,\n footer,\n header,\n // options\n aggregationFn,\n defaultHidden,\n defaultWidth,\n enableFiltering: enableColumnFilter = true,\n enableGrouping = false,\n enableHiding = true,\n enableOrdering = true,\n enablePrinting = true,\n enableResizing = true,\n enableSearch: enableGlobalFilter = true,\n enableSorting = true,\n enableTruncate = false,\n minWidth: minSize = getCellMinWidth(settings.fontSize),\n sort,\n sortFn,\n ...meta\n } = child.props;\n\n if (defaultHidden && enableHiding) {\n defaultVisibility[id] = false;\n }\n\n if (defaultWidth) {\n defaultSizing[id] = defaultWidth as any;\n }\n\n const isGrouped = defaultRowGroupColumnId === id;\n\n if (child.props.sort !== undefined || isGrouped) {\n defaultSorting.push({\n id,\n desc: sort === 'desc',\n });\n }\n\n const column: ReactTableColumnDef<TType, any> = {\n id,\n accessorKey,\n // To avoid errors caused by undefined row data values, we pass accessorFn as a preventive measure\n // accessorKey can be dot notated strings, so we use lodash.get to access deeply nested children\n accessorFn: row => get(row, accessorKey),\n header: header,\n // features\n enableColumnFilter,\n enableGlobalFilter,\n enableGrouping,\n enableHiding: isGrouped ? false : enableHiding,\n enableResizing,\n enableSorting,\n // config - sizing\n minSize,\n // meta\n meta: {\n ...(meta as any),\n defaultWidth,\n enableOrdering: isGrouped ? false : enableOrdering,\n enablePrinting,\n enableTruncate,\n header,\n renderer,\n },\n };\n\n // renderers\n if (typeof renderer === 'function') {\n column.cell = info => renderer(info.getValue(), info.row.original);\n }\n\n if (typeof footer === 'function') {\n column.footer = info =>\n footer(info.table.getRowModel().rows.flatMap(row => (row.original !== undefined ? row.original : [])));\n }\n\n // config - filtering\n if (enableColumnFilter) {\n column.filterFn = 'tacoFilter' as any;\n }\n\n // config - grouping/aggregation\n if (enableGrouping) {\n column.aggregationFn = aggregationFn;\n\n if (typeof aggregate === 'function') {\n column.aggregatedCell = info => aggregate(info.getValue(), info.row.original);\n }\n }\n\n // config - sorting\n if (enableSorting) {\n column.sortingFn = getSortingFn<TType>(child.props.dataType, sortFn);\n column.sortDescFirst = false;\n column.sortUndefined = 1;\n }\n\n columns.push(column);\n }\n\n return columns;\n}\n\nfunction createInternalColumn<TType = unknown>(\n id: string,\n column: useTableManagerInternalColumn<TType>,\n defaultSizing: ReactTableColumnSizingState\n) {\n if (column.size) {\n defaultSizing[id] = column.size;\n }\n\n return {\n id,\n accessorKey: id,\n header: column.header,\n cell: column.renderer,\n // features\n enableColumnFilter: false,\n enableGlobalFilter: false,\n enableGrouping: false,\n enableHiding: false,\n enableResizing: false,\n enableSorting: false,\n // config - sizing\n size: column.size,\n minSize: column.size,\n // meta\n meta: {\n ...(column.meta as any),\n enableOrdering: false,\n enablePrinting: false,\n enableTruncate: false,\n },\n } as ReactTableColumnDef<TType, any>;\n}\n\nexport function mapTableChildrenToColumns<TType = unknown>(\n props: TableProps<TType>,\n settings: TableSettings,\n options: TableFeatureProps,\n internalColumns?: useTableManagerInternalColumns<TType>\n) {\n const { children, defaultRowGroupColumnId } = props;\n const defaultSizing: ReactTableColumnSizingState = {};\n const defaultSorting: ReactTableColumnSort[] = [];\n const defaultVisibility: ReactTableVisibilityState = {};\n\n const columns = React.Children.toArray(children).reduce(\n (columns: ReactTableColumnDef<TType>[], child) =>\n processChildren<TType>(\n child,\n columns,\n defaultSizing,\n defaultSorting,\n defaultVisibility,\n settings,\n defaultRowGroupColumnId\n ),\n\n []\n );\n\n if (internalColumns) {\n if (options.enableRowExpansion && props.rowExpansionRenderer && internalColumns.rowExpansion) {\n const column = createInternalColumn<TType>('__expansion', internalColumns.rowExpansion, defaultSizing);\n columns.unshift(column);\n }\n\n if ((options.enableRowSelection || options.enableRowSelectionSingle) && internalColumns.rowSelection) {\n const column = createInternalColumn<TType>('__select', internalColumns.rowSelection, defaultSizing);\n columns.unshift(column);\n }\n\n if (options.enableRowDrag && props.onRowDrag && internalColumns.rowDrag) {\n const column = createInternalColumn<TType>('__drag', internalColumns.rowDrag, defaultSizing);\n columns.unshift(column);\n }\n\n if (options.enableRowActions && props.rowActions?.length && internalColumns.rowActions) {\n const column = createInternalColumn<TType>('__actions', internalColumns.rowActions, defaultSizing);\n columns.push(column);\n }\n }\n\n return { columns, defaultSizing, defaultSorting, defaultVisibility };\n}\n\nexport function configureReactTableOptions<TType = unknown>(options: TableFeatureProps, props: TableProps<TType>) {\n const enableRowSelection = options.enableRowSelection || options.enableRowSelectionSingle;\n const tableOptions: Partial<ReactTableOptions<TType>> = {\n defaultColumn: {\n enableColumnFilter: options.enableFiltering || true,\n enableGrouping: false,\n enableHiding: options.enableColumnHiding || true,\n enableResizing: options.enableColumnResizing || true,\n enableGlobalFilter: options.enableSearch || true,\n enableSorting: options.enableSorting || true,\n minSize: 1,\n // the default is 150, which is a bit random\n size: 1,\n },\n enableColumnFilters: options.enableFiltering ?? false,\n enableColumnResizing: options.enableColumnResizing ?? false,\n enableExpanding: options.enableRowExpansion ?? false,\n enableGrouping: true, // users can't customise row grouping, so it can just be always enabled and left to the defaultRowGroupColumnId prop\n enableHiding: options.enableColumnHiding ?? false,\n enablePinning: options.enableColumnFreezing ?? false,\n enableRowSelection: enableRowSelection ?? false,\n enableMultiRowSelection: options.enableRowSelectionSingle === true ? false : enableRowSelection,\n enableSorting: options.enableSorting ?? false,\n // models for default features\n getExpandedRowModel: getExpandedRowModel<TType>(),\n getGroupedRowModel: getGroupedRowModel<TType>(),\n groupedColumnMode: false,\n };\n\n if (tableOptions.enableColumnResizing) {\n tableOptions.columnResizeMode = 'onChange';\n }\n\n if (tableOptions.enableColumnFilters) {\n // enter controlled filter mode (controlled could be local state, but usually the server)\n if (props.onChangeFilter) {\n // tableOptions.manualFiltering = true;\n // we don't set it because it breaks global filtering (used for search, which is fully client side)\n //\n // tableOptions.onColumnFiltersChange = ...\n // we don't set this because it expects state to be maintained externally, and we don't want\n // consumers to control state outside the table. instead we have a listener that calls onFilter\n } else {\n tableOptions.getFilteredRowModel = getFilteredRowModel<TType>();\n tableOptions.filterFns = {\n tacoFilter: (row: ReactTableRow<TType>, columnId: string, filter: any) =>\n columnFilterFn(row.getValue(columnId), filter),\n };\n }\n }\n\n if (options.enableSearch) {\n // always set these because enableGlobalFilter can be toggled on and off by the user\n tableOptions.getFilteredRowModel = getFilteredRowModel<TType>();\n tableOptions.globalFilterFn = globalFilterFn;\n tableOptions.getColumnCanGlobalFilter = (column: ReactTableColumn<TType>) => column.columnDef.meta?.enableSearch ?? true;\n\n // enter controlled search mode (controlled could be local state, but usually the server)\n if (props.onChangeSearch) {\n // tableOptions.manualFiltering = true;\n // we don't set this because controlled search is not currently supported, search is always client side\n //\n // tableOptions.onGlobalFilterChange = ...\n // we don't set this because it expects state to be maintained externally, and we don't want\n // consumers to control state outside the table. instead we have a listener that calls onSearch.\n //\n // we also don't always filter when searching, we have the highlight functionality as the default\n // and filtering can be toggled by the user\n }\n }\n\n if (tableOptions.enableSorting) {\n // enter controlled sort mode (controlled could be local state, but usually the server)\n if (props.onChangeSort) {\n tableOptions.manualSorting = true;\n\n // tableOptions.onSortingChange = ...\n // we don't set this because it expects state to be maintained externally, and we don't want\n // consumers to control state outside the table. instead we have a listener that calls onSort\n } else {\n tableOptions.getSortedRowModel = getSortedRowModel();\n }\n }\n\n return tableOptions;\n}\n\nexport function useReactTableInitialState<TType = unknown>(\n props: TableProps<TType>,\n columns: ReactTableColumnDef<TType>[],\n persistedSettings: TableSettings,\n defaults: {\n defaultSizing: ReactTableColumnSizingState;\n defaultSorting: ReactTableColumnSort[];\n defaultVisibility: ReactTableVisibilityState;\n }\n): Partial<ReactTableState> {\n return React.useMemo(() => {\n const ignoreNotDefinedColumns = column => columns.find(definedColumn => definedColumn.id === column.id);\n\n const columnPinning: ReactTableColumnPinningState =\n persistedSettings.columnPinning ?? props.defaultSettings?.columnPinning ?? {};\n\n const columnOrder = ensureOrdering<TType>(\n columns,\n persistedSettings.columnOrder ?? props.defaultSettings?.columnOrder,\n columnPinning.left\n );\n\n // ensure internal columns are pinned, and are pinned in the correct order\n if (columnPinning?.left?.length) {\n columnPinning.left = freezeUptoExternalColumn(\n columnOrder.indexOf(columnPinning.left[columnPinning.left.length - 1]),\n columnOrder\n );\n } else {\n if (props.defaultColumnFreezingIndex) {\n columnPinning.left = freezeUptoExternalColumn(props.defaultColumnFreezingIndex, columnOrder);\n } else {\n columnPinning.left = unfreezeAllExternalColumns(columnOrder);\n }\n }\n\n const state: Partial<ReactTableState> = {\n columnFilters: persistedSettings.columnFilters ?? props.defaultSettings?.columnFilters ?? [],\n columnOrder,\n columnPinning,\n columnSizing: ignoreInternalColumns(\n persistedSettings.columnSizing ?? props.defaultSettings?.columnSizing ?? defaults.defaultSizing ?? {}\n ),\n columnVisibility:\n persistedSettings.columnVisibility ?? props.defaultSettings?.columnVisibility ?? defaults.defaultVisibility ?? {},\n globalFilter: persistedSettings.searchQuery ?? props.defaultSettings?.searchQuery,\n sorting: persistedSettings.sorting\n ? persistedSettings.sorting.filter(ignoreNotDefinedColumns)\n : props.defaultSettings?.sorting ?? defaults.defaultSorting,\n };\n\n if (props.defaultRowGroupColumnId) {\n state.grouping = [props.defaultRowGroupColumnId as string];\n // row groups should (all) always be expanded by default\n state.expanded = true;\n }\n\n return state;\n }, []);\n}\n"],"names":["processChildren","child","columns","defaultSizing","defaultSorting","defaultVisibility","settings","defaultRowGroupColumnId","columnHelper","createColumnHelper","React","isValidElement","props","children","id","header","push","group","Children","toArray","reduce","enableGrouping","accessor","accessorKey","renderer","aggregate","footer","aggregationFn","defaultHidden","defaultWidth","enableFiltering","enableColumnFilter","enableHiding","enableOrdering","enablePrinting","enableResizing","enableSearch","enableGlobalFilter","enableSorting","enableTruncate","minWidth","minSize","getCellMinWidth","fontSize","sort","sortFn","meta","isGrouped","undefined","desc","column","accessorFn","row","get","cell","info","getValue","original","table","getRowModel","rows","flatMap","filterFn","aggregatedCell","sortingFn","getSortingFn","dataType","sortDescFirst","sortUndefined","createInternalColumn","size","mapTableChildrenToColumns","options","internalColumns","_props$rowActions","enableRowExpansion","rowExpansionRenderer","rowExpansion","unshift","enableRowSelection","enableRowSelectionSingle","rowSelection","enableRowDrag","onRowDrag","rowDrag","enableRowActions","rowActions","length","configureReactTableOptions","tableOptions","defaultColumn","enableColumnHiding","enableColumnResizing","enableColumnFilters","_options$enableFilter","_options$enableColumn","enableExpanding","_options$enableRowExp","_options$enableColumn2","enablePinning","_options$enableColumn3","enableColumnFreezing","enableMultiRowSelection","_options$enableSortin","getExpandedRowModel","getGroupedRowModel","groupedColumnMode","columnResizeMode","onChangeFilter","getFilteredRowModel","filterFns","tacoFilter","columnId","filter","columnFilterFn","globalFilterFn","getColumnCanGlobalFilter","_column$columnDef$met","_column$columnDef$met2","columnDef","onChangeSort","manualSorting","getSortedRowModel","useReactTableInitialState","persistedSettings","defaults","useMemo","ignoreNotDefinedColumns","find","definedColumn","columnPinning","_ref","_persistedSettings$co","_props$defaultSetting","defaultSettings","columnOrder","ensureOrdering","_persistedSettings$co2","_props$defaultSetting2","left","_columnPinning$left","freezeUptoExternalColumn","indexOf","defaultColumnFreezingIndex","unfreezeAllExternalColumns","state","columnFilters","_ref2","_persistedSettings$co3","_props$defaultSetting3","columnSizing","ignoreInternalColumns","_ref3","_ref4","_persistedSettings$co4","_props$defaultSetting4","columnVisibility","_ref5","_ref6","_persistedSettings$co5","_props$defaultSetting5","globalFilter","_persistedSettings$se","searchQuery","_props$defaultSetting6","sorting","_props$defaultSetting7","_props$defaultSetting8","grouping","expanded"],"mappings":"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"}
package/dist/index.css CHANGED
@@ -596,13 +596,17 @@ table[data-taco^='table'] tfoot {
596
596
  @apply col-span-full grid grid-cols-[subgrid];
597
597
  }
598
598
 
599
+ table[data-taco^='table'] tfoot td {
600
+ @apply items-center;
601
+ }
602
+
599
603
  table[data-taco^='table'] tbody {
600
604
  /* z-indexes & layout */
601
605
  @apply isolate z-10;
602
606
  /* grid */
603
607
  @apply col-span-full grid auto-rows-min grid-cols-[subgrid];
604
608
  /* printing - override virtualiser bottom spacing */
605
- @apply print:!h-auto print:!pb-0;
609
+ @apply print:!h-auto;
606
610
  }
607
611
 
608
612
  table[data-taco^='table'] tr {
@@ -621,7 +625,7 @@ table[data-taco^='table'] tr:last-child th:before {
621
625
  /* row groups */
622
626
 
623
627
  table[data-taco^='table'] tr[data-row-group] {
624
- @apply bg-grey-100 sticky top-[calc(var(--table-header-group-depth)_*_42px)] z-30 mt-10 print:mt-0;
628
+ @apply bg-grey-100 sticky top-[calc((var(--table-header-group-depth)_-_1)_*_40px_+_42px)] z-30 mt-10 print:mt-0;
625
629
  }
626
630
 
627
631
  table[data-taco^='table'] tr[data-row-group]:first-child {
@@ -2,6 +2,7 @@ import React from 'react';
2
2
  import { Table as ReactTable } from '@tanstack/react-table';
3
3
  declare type BodyProps<TType = unknown> = React.HTMLAttributes<HTMLTableSectionElement> & {
4
4
  enableHorizontalArrowKeyNavigation?: boolean;
5
+ scrollToIndex: (index: number) => void;
5
6
  table: ReactTable<TType>;
6
7
  };
7
8
  export declare function Body<TType = unknown>(props: BodyProps<TType>): JSX.Element;
@@ -4,4 +4,3 @@ export declare const ROW_HEIGHT_ESTIMATES: {
4
4
  tall: number;
5
5
  'extra-tall': number;
6
6
  };
7
- export declare const HEADER_FOOTER_ROW_HEIGHT_ESTIMATE: number;
@@ -57,7 +57,7 @@ export declare type TableColumnRendererControlProps = {
57
57
  value: any;
58
58
  };
59
59
  export declare type TableColumnRendererHeader = string;
60
- export declare type TableColumnRendererFooter<TValue> = (values: TValue[]) => JSX.Element | string | number | null;
60
+ export declare type TableColumnRendererFooter<TType> = (rows: TType[]) => JSX.Element | string | number | null;
61
61
  export declare type TableColumnSort = ReactTableColumnSort;
62
62
  export declare type TableColumnSortDirection = 'asc' | 'desc';
63
63
  export declare type TableColumnSortFn<TType = unknown> = ((rowA: TType, rowB: TType, columnId: string) => -1 | 0 | 1) | ReactTableBuiltInSortingFn | 'auto';
@@ -197,7 +197,7 @@ export declare type TableColumnProps<TType = unknown> = ValueOf<{
197
197
  /** Renderer to use if the cell is an aggregate cell and part of a grouped row */
198
198
  aggregate?: TableColumnRendererAggregate<TType, TType[Key]>;
199
199
  control?: TableColumnRendererControl<TType>;
200
- footer?: TableColumnRendererFooter<TType[Key]>;
200
+ footer?: TableColumnRendererFooter<TType>;
201
201
  header: TableColumnRendererHeader;
202
202
  /** Aggregation function to be used when the column is part of a grouped row */
203
203
  aggregationFn?: 'auto' | ReactTableBuiltInAggregationFn;
@@ -29,6 +29,7 @@ var DropdownMenuPrimitive = require('@radix-ui/react-dropdown-menu');
29
29
  var RadioGroupPrimitive = require('@radix-ui/react-radio-group');
30
30
  var reactPortal = require('@radix-ui/react-portal');
31
31
  var reactTable = require('@tanstack/react-table');
32
+ var get = _interopDefault(require('lodash/get'));
32
33
  var reactVirtual = require('@tanstack/react-virtual');
33
34
  var reactIntersectionObserver = require('react-intersection-observer');
34
35
  var core = require('@dnd-kit/core');
@@ -40,7 +41,6 @@ var reactWindow = require('react-window');
40
41
  var InfiniteLoader = _interopDefault(require('react-window-infinite-loader'));
41
42
  var set = _interopDefault(require('lodash/set'));
42
43
  var unset = _interopDefault(require('lodash/unset'));
43
- var get = _interopDefault(require('lodash/get'));
44
44
  var compact = _interopDefault(require('lodash/compact'));
45
45
  var pullAt = _interopDefault(require('lodash/pullAt'));
46
46
  var TabsPrimitive = require('@radix-ui/react-tabs');
@@ -9924,7 +9924,8 @@ function processChildren(child, columns, defaultSizing, defaultSorting, defaultV
9924
9924
  id,
9925
9925
  accessorKey,
9926
9926
  // To avoid errors caused by undefined row data values, we pass accessorFn as a preventive measure
9927
- accessorFn: row => row === null || row === void 0 ? void 0 : row[accessorKey],
9927
+ // accessorKey can be dot notated strings, so we use lodash.get to access deeply nested children
9928
+ accessorFn: row => get(row, accessorKey),
9928
9929
  header: header,
9929
9930
  // features
9930
9931
  enableColumnFilter,
@@ -9951,10 +9952,7 @@ function processChildren(child, columns, defaultSizing, defaultSorting, defaultV
9951
9952
  column.cell = info => renderer(info.getValue(), info.row.original);
9952
9953
  }
9953
9954
  if (typeof footer === 'function') {
9954
- column.footer = info => footer(info.table.getRowModel().rows.flatMap(row => {
9955
- var _row$original;
9956
- return ((_row$original = row.original) === null || _row$original === void 0 ? void 0 : _row$original[id]) !== undefined ? [row.original[id]] : [];
9957
- }));
9955
+ column.footer = info => footer(info.table.getRowModel().rows.flatMap(row => row.original !== undefined ? row.original : []));
9958
9956
  }
9959
9957
  // config - filtering
9960
9958
  if (enableColumnFilter) {
@@ -10436,8 +10434,8 @@ function useTableRowActive(isEnabled = false, initialRowActiveIndex) {
10436
10434
  event.preventDefault();
10437
10435
  if (event.ctrlKey || event.metaKey) {
10438
10436
  const newIndex = 0;
10439
- setRowActiveIndex(newIndex);
10440
10437
  scrollToIndex(newIndex);
10438
+ setRowActiveIndex(newIndex);
10441
10439
  } else {
10442
10440
  move(-1, length, scrollToIndex);
10443
10441
  }
@@ -10446,14 +10444,14 @@ function useTableRowActive(isEnabled = false, initialRowActiveIndex) {
10446
10444
  event.preventDefault();
10447
10445
  if (event.ctrlKey || event.metaKey) {
10448
10446
  const newIndex = length - 1;
10449
- setRowActiveIndex(newIndex);
10450
10447
  scrollToIndex(newIndex);
10448
+ setRowActiveIndex(newIndex);
10451
10449
  } else {
10452
10450
  move(+1, length, scrollToIndex);
10453
10451
  }
10454
10452
  return;
10455
10453
  }
10456
- }, [isEnabled]);
10454
+ }, [isEnabled, rowActiveIndex]);
10457
10455
  const onFocus = React__default.useCallback((event, length, scrollToIndex) => {
10458
10456
  if (!isEnabled || event.isDefaultPrevented()) {
10459
10457
  return;
@@ -11509,7 +11507,6 @@ const ROW_HEIGHT_ESTIMATES = {
11509
11507
  tall: 49,
11510
11508
  'extra-tall': 57
11511
11509
  };
11512
- const HEADER_FOOTER_ROW_HEIGHT_ESTIMATE = ROW_HEIGHT_ESTIMATES.medium + 2; // header includes 2px border
11513
11510
 
11514
11511
  function SkeletonRow(props) {
11515
11512
  const {
@@ -11599,15 +11596,11 @@ function Row(props) {
11599
11596
  })));
11600
11597
  }
11601
11598
 
11602
- const TABLE_SCROLL_PADDING_BOTTOM = 36;
11603
- const TABLE_PADDING_BOTTOM = 0;
11604
11599
  function useTableRenderer(renderers, table, tableRef, defaultRowActiveIndex) {
11605
11600
  var _table$getState$group, _ref, _virtualItems$padding, _virtualItems$padding2, _ref2, _virtualItems;
11606
11601
  const tableMeta = table.options.meta;
11607
11602
  const rows = table.getRowModel().rows;
11608
- const HEADER_OFFSET_TOTAL = HEADER_FOOTER_ROW_HEIGHT_ESTIMATE * table.getHeaderGroups().length;
11609
- const isTableGrouped = !!((_table$getState$group = table.getState().grouping) !== null && _table$getState$group !== void 0 && _table$getState$group.length);
11610
- const FOOTER_OFFSET_TOTAL = tableMeta.footer.isEnabled ? HEADER_FOOTER_ROW_HEIGHT_ESTIMATE : 0;
11603
+ const isTableRowGrouped = !!((_table$getState$group = table.getState().grouping) !== null && _table$getState$group !== void 0 && _table$getState$group.length);
11611
11604
  // expanded rows
11612
11605
  const {
11613
11606
  createRowMeasurer,
@@ -11615,16 +11608,24 @@ function useTableRenderer(renderers, table, tableRef, defaultRowActiveIndex) {
11615
11608
  } = useRowHeightVirtualisation(table);
11616
11609
  // row groups
11617
11610
  const rangeExtractor = useRowGroupVirtualisation(table);
11611
+ // account for thead and tfoot in the scroll area
11612
+ const scrollPaddingStart = ROW_HEIGHT_ESTIMATES.medium;
11613
+ // column groups offset the bottom padding :shrug:, multiplying by 1.5 ensures the bottom padding remains
11614
+ // consistent when there are groups and when there aren't. 1.5 is relatively arbitrary, but it gives alignment
11615
+ const scrollPaddingEnd = ROW_HEIGHT_ESTIMATES.medium * (table.getHeaderGroups().length > 1 ? 1.5 : 1);
11618
11616
  const virtualiser = reactVirtual.useVirtualizer({
11619
11617
  count: rows.length,
11620
11618
  estimateSize,
11621
11619
  getScrollElement: () => tableRef.current,
11622
11620
  overscan: tableMeta.printing.isPrinting ? rows.length : undefined,
11623
11621
  rangeExtractor,
11624
- scrollPaddingStart: isTableGrouped ? HEADER_FOOTER_ROW_HEIGHT_ESTIMATE : undefined,
11625
- scrollPaddingEnd: HEADER_OFFSET_TOTAL + TABLE_SCROLL_PADDING_BOTTOM,
11626
- paddingEnd: TABLE_PADDING_BOTTOM
11622
+ // correctly sets top and bottom spacing for the scroll container - very sensitive, don't change
11623
+ scrollMargin: isTableRowGrouped ? 0 : scrollPaddingStart,
11624
+ // correctly sets the scroll padding offset, e.g. when keyboard navigating rows in the list
11625
+ scrollPaddingStart,
11626
+ scrollPaddingEnd: tableMeta.footer.isEnabled ? scrollPaddingEnd * 2 : scrollPaddingEnd
11627
11627
  });
11628
+ const totalSize = virtualiser.getTotalSize();
11628
11629
  const virtualItems = virtualiser.getVirtualItems();
11629
11630
  const scrollToIndex = React__default.useCallback((index, options = {
11630
11631
  align: 'auto',
@@ -11637,29 +11638,18 @@ function useTableRenderer(renderers, table, tableRef, defaultRowActiveIndex) {
11637
11638
  if (tableRef.current) {
11638
11639
  if (index === 0) {
11639
11640
  virtualiser.scrollToOffset(0, notSmooth);
11640
- } else if (index >= virtualItems.length - 1) {
11641
- // scrolling to the last row isn't easy when rows have dynamic height
11642
- // because you don't know all the heights until they render...
11643
- // so when you skip to the last you don't know if "the end" is actually the end
11644
- virtualiser.scrollToIndex(index, notSmooth);
11645
- // https://github.com/TanStack/virtual/issues/216
11646
- setTimeout(() => {
11647
- virtualiser.scrollToIndex(index, notSmooth);
11648
- setTimeout(() => {
11649
- virtualiser.scrollToIndex(index, notSmooth);
11650
- }, 150);
11651
- }, 150);
11641
+ } else if (index === rows.length - 1) {
11642
+ // sometimes the last row doesn't fully show, so we just force scroll to the bottom
11643
+ tableRef.current.scrollTop = tableRef.current.scrollHeight;
11652
11644
  } else {
11653
11645
  virtualiser.scrollToIndex(index, options);
11654
11646
  }
11655
11647
  }
11656
- }, [virtualItems.length, tableRef.current]);
11648
+ }, [virtualItems.length, tableRef.current, totalSize, rows.length]);
11657
11649
  // use row 1 not 0, because 0 might be sticky in grouped tables and it's start value will always be 0
11658
- const paddingStartIndex = isTableGrouped && rows.length > 1 ? 1 : 0;
11650
+ const paddingStartIndex = isTableRowGrouped && rows.length > 1 ? 1 : 0;
11659
11651
  // styling for offsetting rows - this "is" the virtualisation
11660
- const [paddingTop, paddingBottom] = virtualItems.length > 0 ? [
11661
- // use row 1 not 0, because 0 might be sticky in grouped tables and it's start value will always be 0
11662
- Math.max(0, (_ref = ((_virtualItems$padding = virtualItems[paddingStartIndex]) === null || _virtualItems$padding === void 0 ? void 0 : _virtualItems$padding.start) - virtualiser.options.scrollMargin - ((_virtualItems$padding2 = virtualItems[paddingStartIndex]) === null || _virtualItems$padding2 === void 0 ? void 0 : _virtualItems$padding2.size)) !== null && _ref !== void 0 ? _ref : 0), Math.max(0, (_ref2 = virtualiser.getTotalSize() - ((_virtualItems = virtualItems[virtualItems.length - 1]) === null || _virtualItems === void 0 ? void 0 : _virtualItems.end)) !== null && _ref2 !== void 0 ? _ref2 : 0)] : [0, 0];
11652
+ const [paddingTop, paddingBottom] = virtualItems.length > 0 ? [Math.max(0, (_ref = ((_virtualItems$padding = virtualItems[paddingStartIndex]) === null || _virtualItems$padding === void 0 ? void 0 : _virtualItems$padding.start) - ((_virtualItems$padding2 = virtualItems[paddingStartIndex]) === null || _virtualItems$padding2 === void 0 ? void 0 : _virtualItems$padding2.size)) !== null && _ref !== void 0 ? _ref : 0), Math.max(0, (_ref2 = totalSize - ((_virtualItems = virtualItems[virtualItems.length - 1]) === null || _virtualItems === void 0 ? void 0 : _virtualItems.end)) !== null && _ref2 !== void 0 ? _ref2 : 0)] : [0, 0];
11663
11653
  // ensure default active rows are scrolled to
11664
11654
  React__default.useEffect(() => {
11665
11655
  if (defaultRowActiveIndex) {
@@ -11674,7 +11664,7 @@ function useTableRenderer(renderers, table, tableRef, defaultRowActiveIndex) {
11674
11664
  let content = null;
11675
11665
  if (rows.length) {
11676
11666
  style = {
11677
- height: `${virtualiser.getTotalSize() - HEADER_OFFSET_TOTAL + FOOTER_OFFSET_TOTAL}px`,
11667
+ height: `${totalSize}px`,
11678
11668
  paddingBottom,
11679
11669
  paddingTop
11680
11670
  };
@@ -13074,6 +13064,7 @@ function useAugmentedFocusManager() {
13074
13064
  function Body(props) {
13075
13065
  const {
13076
13066
  enableHorizontalArrowKeyNavigation = false,
13067
+ scrollToIndex,
13077
13068
  table,
13078
13069
  ...attributes
13079
13070
  } = props;
@@ -13103,16 +13094,24 @@ function Body(props) {
13103
13094
  // there are no previous elements to focus, go up a row or go outside the table
13104
13095
  // but only if there are actually any focusable elements in the row
13105
13096
  event.preventDefault();
13106
- tableMeta.rowActive.setRowActiveIndex(tableMeta.rowActive.rowActiveIndex - 1);
13107
- requestAnimationFrame(() => focusManager.focusLast());
13097
+ const prevIndex = tableMeta.rowActive.rowActiveIndex - 1;
13098
+ tableMeta.rowActive.setRowActiveIndex(prevIndex);
13099
+ requestAnimationFrame(() => {
13100
+ focusManager.focusLast();
13101
+ scrollToIndex(prevIndex);
13102
+ });
13108
13103
  }
13109
13104
  } else {
13110
13105
  if (!isLastRow) {
13111
13106
  // there are no next elements to focus, go down a row or go outside the table
13112
13107
  // but only if there are actually any focusable elements in the row
13113
13108
  event.preventDefault();
13114
- tableMeta.rowActive.setRowActiveIndex(tableMeta.rowActive.rowActiveIndex + 1);
13115
- requestAnimationFrame(() => focusManager.focusFirst());
13109
+ const nextIndex = tableMeta.rowActive.rowActiveIndex + 1;
13110
+ tableMeta.rowActive.setRowActiveIndex(nextIndex);
13111
+ requestAnimationFrame(() => {
13112
+ focusManager.focusFirst();
13113
+ scrollToIndex(nextIndex);
13114
+ });
13116
13115
  }
13117
13116
  }
13118
13117
  }
@@ -16170,6 +16169,7 @@ function TableGrid(props) {
16170
16169
  }))))))), table.instance.getRowModel().rows.length ? ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Body, {
16171
16170
  enableHorizontalArrowKeyNavigation: enableHorizontalArrowKeyNavigation,
16172
16171
  table: table.instance,
16172
+ scrollToIndex: table.renderer.scrollToIndex,
16173
16173
  style: table.renderer.style
16174
16174
  }, table.renderer.rows), table.meta.footer.isEnabled ? /*#__PURE__*/React__default.createElement(Foot, {
16175
16175
  table: table.instance