@tanstack/table-core 9.0.0-alpha.46 → 9.0.0-alpha.48
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/README.md +10 -0
- package/dist/core/cells/constructCell.cjs +4 -3
- package/dist/core/cells/constructCell.cjs.map +1 -1
- package/dist/core/cells/constructCell.js +4 -3
- package/dist/core/cells/constructCell.js.map +1 -1
- package/dist/core/cells/coreCellsFeature.utils.cjs +11 -8
- package/dist/core/cells/coreCellsFeature.utils.cjs.map +1 -1
- package/dist/core/cells/coreCellsFeature.utils.d.cts +11 -8
- package/dist/core/cells/coreCellsFeature.utils.d.ts +11 -8
- package/dist/core/cells/coreCellsFeature.utils.js +11 -8
- package/dist/core/cells/coreCellsFeature.utils.js.map +1 -1
- package/dist/core/columns/constructColumn.cjs +6 -4
- package/dist/core/columns/constructColumn.cjs.map +1 -1
- package/dist/core/columns/constructColumn.js +6 -4
- package/dist/core/columns/constructColumn.js.map +1 -1
- package/dist/core/columns/coreColumnsFeature.types.d.cts +7 -6
- package/dist/core/columns/coreColumnsFeature.types.d.ts +7 -6
- package/dist/core/columns/coreColumnsFeature.utils.cjs +47 -29
- package/dist/core/columns/coreColumnsFeature.utils.cjs.map +1 -1
- package/dist/core/columns/coreColumnsFeature.utils.d.cts +37 -27
- package/dist/core/columns/coreColumnsFeature.utils.d.ts +37 -27
- package/dist/core/columns/coreColumnsFeature.utils.js +47 -29
- package/dist/core/columns/coreColumnsFeature.utils.js.map +1 -1
- package/dist/core/headers/buildHeaderGroups.cjs +27 -19
- package/dist/core/headers/buildHeaderGroups.cjs.map +1 -1
- package/dist/core/headers/buildHeaderGroups.js +27 -19
- package/dist/core/headers/buildHeaderGroups.js.map +1 -1
- package/dist/core/headers/constructHeader.cjs +4 -3
- package/dist/core/headers/constructHeader.cjs.map +1 -1
- package/dist/core/headers/constructHeader.js +4 -3
- package/dist/core/headers/constructHeader.js.map +1 -1
- package/dist/core/headers/coreHeadersFeature.cjs +1 -6
- package/dist/core/headers/coreHeadersFeature.cjs.map +1 -1
- package/dist/core/headers/coreHeadersFeature.js +2 -7
- package/dist/core/headers/coreHeadersFeature.js.map +1 -1
- package/dist/core/headers/coreHeadersFeature.types.d.cts +6 -4
- package/dist/core/headers/coreHeadersFeature.types.d.ts +6 -4
- package/dist/core/headers/coreHeadersFeature.utils.cjs +43 -36
- package/dist/core/headers/coreHeadersFeature.utils.cjs.map +1 -1
- package/dist/core/headers/coreHeadersFeature.utils.d.cts +24 -19
- package/dist/core/headers/coreHeadersFeature.utils.d.ts +24 -19
- package/dist/core/headers/coreHeadersFeature.utils.js +44 -37
- package/dist/core/headers/coreHeadersFeature.utils.js.map +1 -1
- package/dist/core/reactivity/coreReactivityFeature.types.d.cts +4 -0
- package/dist/core/reactivity/coreReactivityFeature.types.d.ts +4 -0
- package/dist/core/row-models/coreRowModelsFeature.utils.cjs +48 -36
- package/dist/core/row-models/coreRowModelsFeature.utils.cjs.map +1 -1
- package/dist/core/row-models/coreRowModelsFeature.utils.d.cts +48 -36
- package/dist/core/row-models/coreRowModelsFeature.utils.d.ts +48 -36
- package/dist/core/row-models/coreRowModelsFeature.utils.js +48 -36
- package/dist/core/row-models/coreRowModelsFeature.utils.js.map +1 -1
- package/dist/core/rows/constructRow.cjs +8 -6
- package/dist/core/rows/constructRow.cjs.map +1 -1
- package/dist/core/rows/constructRow.js +8 -6
- package/dist/core/rows/constructRow.js.map +1 -1
- package/dist/core/rows/coreRowsFeature.types.d.cts +4 -4
- package/dist/core/rows/coreRowsFeature.types.d.ts +4 -4
- package/dist/core/rows/coreRowsFeature.utils.cjs +43 -32
- package/dist/core/rows/coreRowsFeature.utils.cjs.map +1 -1
- package/dist/core/rows/coreRowsFeature.utils.d.cts +34 -28
- package/dist/core/rows/coreRowsFeature.utils.d.ts +34 -28
- package/dist/core/rows/coreRowsFeature.utils.js +43 -32
- package/dist/core/rows/coreRowsFeature.utils.js.map +1 -1
- package/dist/core/table/constructTable.cjs +9 -5
- package/dist/core/table/constructTable.cjs.map +1 -1
- package/dist/core/table/constructTable.js +9 -5
- package/dist/core/table/constructTable.js.map +1 -1
- package/dist/core/table/coreTablesFeature.types.d.cts +6 -2
- package/dist/core/table/coreTablesFeature.types.d.ts +6 -2
- package/dist/core/table/coreTablesFeature.utils.cjs +7 -3
- package/dist/core/table/coreTablesFeature.utils.cjs.map +1 -1
- package/dist/core/table/coreTablesFeature.utils.d.cts +2 -2
- package/dist/core/table/coreTablesFeature.utils.d.ts +2 -2
- package/dist/core/table/coreTablesFeature.utils.js +7 -3
- package/dist/core/table/coreTablesFeature.utils.js.map +1 -1
- package/dist/features/column-faceting/columnFacetingFeature.types.d.cts +16 -10
- package/dist/features/column-faceting/columnFacetingFeature.types.d.ts +16 -10
- package/dist/features/column-faceting/columnFacetingFeature.utils.cjs +26 -18
- package/dist/features/column-faceting/columnFacetingFeature.utils.cjs.map +1 -1
- package/dist/features/column-faceting/columnFacetingFeature.utils.d.cts +26 -18
- package/dist/features/column-faceting/columnFacetingFeature.utils.d.ts +26 -18
- package/dist/features/column-faceting/columnFacetingFeature.utils.js +26 -18
- package/dist/features/column-faceting/columnFacetingFeature.utils.js.map +1 -1
- package/dist/features/column-faceting/createFacetedMinMaxValues.cjs +8 -5
- package/dist/features/column-faceting/createFacetedMinMaxValues.cjs.map +1 -1
- package/dist/features/column-faceting/createFacetedMinMaxValues.js +8 -5
- package/dist/features/column-faceting/createFacetedMinMaxValues.js.map +1 -1
- package/dist/features/column-faceting/createFacetedRowModel.cjs +8 -3
- package/dist/features/column-faceting/createFacetedRowModel.cjs.map +1 -1
- package/dist/features/column-faceting/createFacetedRowModel.js +8 -3
- package/dist/features/column-faceting/createFacetedRowModel.js.map +1 -1
- package/dist/features/column-faceting/createFacetedUniqueValues.cjs +7 -4
- package/dist/features/column-faceting/createFacetedUniqueValues.cjs.map +1 -1
- package/dist/features/column-faceting/createFacetedUniqueValues.js +7 -4
- package/dist/features/column-faceting/createFacetedUniqueValues.js.map +1 -1
- package/dist/features/column-filtering/columnFilteringFeature.types.d.cts +21 -11
- package/dist/features/column-filtering/columnFilteringFeature.types.d.ts +21 -11
- package/dist/features/column-filtering/columnFilteringFeature.utils.cjs +39 -28
- package/dist/features/column-filtering/columnFilteringFeature.utils.cjs.map +1 -1
- package/dist/features/column-filtering/columnFilteringFeature.utils.d.cts +39 -28
- package/dist/features/column-filtering/columnFilteringFeature.utils.d.ts +39 -28
- package/dist/features/column-filtering/columnFilteringFeature.utils.js +39 -28
- package/dist/features/column-filtering/columnFilteringFeature.utils.js.map +1 -1
- package/dist/features/column-filtering/createFilteredRowModel.cjs +11 -5
- package/dist/features/column-filtering/createFilteredRowModel.cjs.map +1 -1
- package/dist/features/column-filtering/createFilteredRowModel.js +11 -5
- package/dist/features/column-filtering/createFilteredRowModel.js.map +1 -1
- package/dist/features/column-grouping/columnGroupingFeature.types.d.cts +18 -14
- package/dist/features/column-grouping/columnGroupingFeature.types.d.ts +18 -14
- package/dist/features/column-grouping/columnGroupingFeature.utils.cjs +55 -43
- package/dist/features/column-grouping/columnGroupingFeature.utils.cjs.map +1 -1
- package/dist/features/column-grouping/columnGroupingFeature.utils.d.cts +55 -43
- package/dist/features/column-grouping/columnGroupingFeature.utils.d.ts +55 -43
- package/dist/features/column-grouping/columnGroupingFeature.utils.js +55 -43
- package/dist/features/column-grouping/columnGroupingFeature.utils.js.map +1 -1
- package/dist/features/column-ordering/columnOrderingFeature.types.d.cts +14 -5
- package/dist/features/column-ordering/columnOrderingFeature.types.d.ts +14 -5
- package/dist/features/column-ordering/columnOrderingFeature.utils.cjs +46 -29
- package/dist/features/column-ordering/columnOrderingFeature.utils.cjs.map +1 -1
- package/dist/features/column-ordering/columnOrderingFeature.utils.d.cts +30 -23
- package/dist/features/column-ordering/columnOrderingFeature.utils.d.ts +30 -23
- package/dist/features/column-ordering/columnOrderingFeature.utils.js +46 -29
- package/dist/features/column-ordering/columnOrderingFeature.utils.js.map +1 -1
- package/dist/features/column-pinning/columnPinningFeature.types.d.cts +43 -31
- package/dist/features/column-pinning/columnPinningFeature.types.d.ts +43 -31
- package/dist/features/column-pinning/columnPinningFeature.utils.cjs +152 -115
- package/dist/features/column-pinning/columnPinningFeature.utils.cjs.map +1 -1
- package/dist/features/column-pinning/columnPinningFeature.utils.d.cts +116 -95
- package/dist/features/column-pinning/columnPinningFeature.utils.d.ts +116 -95
- package/dist/features/column-pinning/columnPinningFeature.utils.js +153 -116
- package/dist/features/column-pinning/columnPinningFeature.utils.js.map +1 -1
- package/dist/features/column-resizing/columnResizingFeature.types.d.cts +9 -9
- package/dist/features/column-resizing/columnResizingFeature.types.d.ts +9 -9
- package/dist/features/column-resizing/columnResizingFeature.utils.cjs +28 -19
- package/dist/features/column-resizing/columnResizingFeature.utils.cjs.map +1 -1
- package/dist/features/column-resizing/columnResizingFeature.utils.d.cts +28 -19
- package/dist/features/column-resizing/columnResizingFeature.utils.d.ts +28 -19
- package/dist/features/column-resizing/columnResizingFeature.utils.js +28 -19
- package/dist/features/column-resizing/columnResizingFeature.utils.js.map +1 -1
- package/dist/features/column-sizing/columnSizingFeature.cjs +28 -4
- package/dist/features/column-sizing/columnSizingFeature.cjs.map +1 -1
- package/dist/features/column-sizing/columnSizingFeature.js +28 -4
- package/dist/features/column-sizing/columnSizingFeature.js.map +1 -1
- package/dist/features/column-sizing/columnSizingFeature.types.d.cts +19 -12
- package/dist/features/column-sizing/columnSizingFeature.types.d.ts +19 -12
- package/dist/features/column-sizing/columnSizingFeature.utils.cjs +52 -41
- package/dist/features/column-sizing/columnSizingFeature.utils.cjs.map +1 -1
- package/dist/features/column-sizing/columnSizingFeature.utils.d.cts +52 -41
- package/dist/features/column-sizing/columnSizingFeature.utils.d.ts +52 -41
- package/dist/features/column-sizing/columnSizingFeature.utils.js +52 -41
- package/dist/features/column-sizing/columnSizingFeature.utils.js.map +1 -1
- package/dist/features/column-visibility/columnVisibilityFeature.cjs +23 -14
- package/dist/features/column-visibility/columnVisibilityFeature.cjs.map +1 -1
- package/dist/features/column-visibility/columnVisibilityFeature.js +24 -15
- package/dist/features/column-visibility/columnVisibilityFeature.js.map +1 -1
- package/dist/features/column-visibility/columnVisibilityFeature.types.d.cts +19 -12
- package/dist/features/column-visibility/columnVisibilityFeature.types.d.ts +19 -12
- package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs +91 -52
- package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs.map +1 -1
- package/dist/features/column-visibility/columnVisibilityFeature.utils.d.cts +63 -40
- package/dist/features/column-visibility/columnVisibilityFeature.utils.d.ts +63 -40
- package/dist/features/column-visibility/columnVisibilityFeature.utils.js +91 -53
- package/dist/features/column-visibility/columnVisibilityFeature.utils.js.map +1 -1
- package/dist/features/global-filtering/globalFilteringFeature.types.d.cts +10 -5
- package/dist/features/global-filtering/globalFilteringFeature.types.d.ts +10 -5
- package/dist/features/global-filtering/globalFilteringFeature.utils.cjs +20 -14
- package/dist/features/global-filtering/globalFilteringFeature.utils.cjs.map +1 -1
- package/dist/features/global-filtering/globalFilteringFeature.utils.d.cts +20 -14
- package/dist/features/global-filtering/globalFilteringFeature.utils.d.ts +20 -14
- package/dist/features/global-filtering/globalFilteringFeature.utils.js +20 -14
- package/dist/features/global-filtering/globalFilteringFeature.utils.js.map +1 -1
- package/dist/features/row-expanding/rowExpandingFeature.types.d.cts +16 -15
- package/dist/features/row-expanding/rowExpandingFeature.types.d.ts +16 -15
- package/dist/features/row-expanding/rowExpandingFeature.utils.cjs +58 -43
- package/dist/features/row-expanding/rowExpandingFeature.utils.cjs.map +1 -1
- package/dist/features/row-expanding/rowExpandingFeature.utils.d.cts +56 -41
- package/dist/features/row-expanding/rowExpandingFeature.utils.d.ts +56 -41
- package/dist/features/row-expanding/rowExpandingFeature.utils.js +58 -43
- package/dist/features/row-expanding/rowExpandingFeature.utils.js.map +1 -1
- package/dist/features/row-pagination/rowPaginationFeature.types.d.cts +19 -12
- package/dist/features/row-pagination/rowPaginationFeature.types.d.ts +19 -12
- package/dist/features/row-pagination/rowPaginationFeature.utils.cjs +49 -32
- package/dist/features/row-pagination/rowPaginationFeature.utils.cjs.map +1 -1
- package/dist/features/row-pagination/rowPaginationFeature.utils.d.cts +49 -32
- package/dist/features/row-pagination/rowPaginationFeature.utils.d.ts +49 -32
- package/dist/features/row-pagination/rowPaginationFeature.utils.js +49 -32
- package/dist/features/row-pagination/rowPaginationFeature.utils.js.map +1 -1
- package/dist/features/row-pinning/rowPinningFeature.types.d.cts +12 -8
- package/dist/features/row-pinning/rowPinningFeature.types.d.ts +12 -8
- package/dist/features/row-pinning/rowPinningFeature.utils.cjs +52 -36
- package/dist/features/row-pinning/rowPinningFeature.utils.cjs.map +1 -1
- package/dist/features/row-pinning/rowPinningFeature.utils.d.cts +39 -29
- package/dist/features/row-pinning/rowPinningFeature.utils.d.ts +39 -29
- package/dist/features/row-pinning/rowPinningFeature.utils.js +52 -36
- package/dist/features/row-pinning/rowPinningFeature.utils.js.map +1 -1
- package/dist/features/row-selection/rowSelectionFeature.types.d.cts +30 -24
- package/dist/features/row-selection/rowSelectionFeature.types.d.ts +30 -24
- package/dist/features/row-selection/rowSelectionFeature.utils.cjs +95 -72
- package/dist/features/row-selection/rowSelectionFeature.utils.cjs.map +1 -1
- package/dist/features/row-selection/rowSelectionFeature.utils.d.cts +89 -69
- package/dist/features/row-selection/rowSelectionFeature.utils.d.ts +89 -69
- package/dist/features/row-selection/rowSelectionFeature.utils.js +95 -72
- package/dist/features/row-selection/rowSelectionFeature.utils.js.map +1 -1
- package/dist/features/row-sorting/createSortedRowModel.cjs +13 -8
- package/dist/features/row-sorting/createSortedRowModel.cjs.map +1 -1
- package/dist/features/row-sorting/createSortedRowModel.js +13 -8
- package/dist/features/row-sorting/createSortedRowModel.js.map +1 -1
- package/dist/features/row-sorting/rowSortingFeature.types.d.cts +10 -8
- package/dist/features/row-sorting/rowSortingFeature.types.d.ts +10 -8
- package/dist/features/row-sorting/rowSortingFeature.utils.cjs +63 -46
- package/dist/features/row-sorting/rowSortingFeature.utils.cjs.map +1 -1
- package/dist/features/row-sorting/rowSortingFeature.utils.d.cts +61 -44
- package/dist/features/row-sorting/rowSortingFeature.utils.d.ts +61 -44
- package/dist/features/row-sorting/rowSortingFeature.utils.js +63 -46
- package/dist/features/row-sorting/rowSortingFeature.utils.js.map +1 -1
- package/dist/fns/aggregationFns.cjs +47 -16
- package/dist/fns/aggregationFns.cjs.map +1 -1
- package/dist/fns/aggregationFns.d.cts +33 -9
- package/dist/fns/aggregationFns.d.ts +33 -9
- package/dist/fns/aggregationFns.js +47 -17
- package/dist/fns/aggregationFns.js.map +1 -1
- package/dist/fns/filterFns.cjs +48 -17
- package/dist/fns/filterFns.cjs.map +1 -1
- package/dist/fns/filterFns.d.cts +42 -15
- package/dist/fns/filterFns.d.ts +42 -15
- package/dist/fns/filterFns.js +48 -17
- package/dist/fns/filterFns.js.map +1 -1
- package/dist/helpers/columnHelper.cjs +9 -4
- package/dist/helpers/columnHelper.cjs.map +1 -1
- package/dist/helpers/columnHelper.d.cts +9 -4
- package/dist/helpers/columnHelper.d.ts +9 -4
- package/dist/helpers/columnHelper.js +9 -4
- package/dist/helpers/columnHelper.js.map +1 -1
- package/dist/helpers/tableOptions.cjs.map +1 -1
- package/dist/helpers/tableOptions.d.cts +12 -9
- package/dist/helpers/tableOptions.d.ts +12 -9
- package/dist/helpers/tableOptions.js.map +1 -1
- package/dist/index.cjs +0 -4
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/static-functions.cjs +1 -0
- package/dist/static-functions.d.cts +2 -2
- package/dist/static-functions.d.ts +2 -2
- package/dist/static-functions.js +2 -2
- package/dist/store-reactivity-bindings.cjs +1 -0
- package/dist/store-reactivity-bindings.cjs.map +1 -1
- package/dist/store-reactivity-bindings.js +1 -0
- package/dist/store-reactivity-bindings.js.map +1 -1
- package/dist/types/ColumnDef.d.cts +38 -0
- package/dist/types/ColumnDef.d.ts +38 -0
- package/dist/types/TableOptions.d.cts +15 -0
- package/dist/types/TableOptions.d.ts +15 -0
- package/dist/types/TableState.d.cts +12 -0
- package/dist/types/TableState.d.ts +12 -0
- package/dist/utils.cjs +18 -39
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.d.cts +1 -23
- package/dist/utils.d.ts +1 -23
- package/dist/utils.js +19 -36
- package/dist/utils.js.map +1 -1
- package/package.json +5 -3
- package/skills/column-definitions/SKILL.md +333 -0
- package/skills/column-layout/SKILL.md +328 -0
- package/skills/column-layout/references/subsystems.md +220 -0
- package/skills/customizing-feature-behavior/SKILL.md +416 -0
- package/skills/filtering/SKILL.md +357 -0
- package/skills/filtering/references/faceting-and-fuzzy.md +191 -0
- package/skills/grouping/SKILL.md +448 -0
- package/skills/migrate-v8-to-v9/SKILL.md +495 -0
- package/skills/pagination/SKILL.md +385 -0
- package/skills/row-expanding/SKILL.md +348 -0
- package/skills/row-pinning/SKILL.md +269 -0
- package/skills/row-selection/SKILL.md +391 -0
- package/skills/setup/SKILL.md +400 -0
- package/skills/sorting/SKILL.md +344 -0
- package/skills/state-management/SKILL.md +388 -0
- package/src/core/cells/constructCell.ts +3 -2
- package/src/core/cells/coreCellsFeature.utils.ts +11 -8
- package/src/core/columns/constructColumn.ts +5 -3
- package/src/core/columns/coreColumnsFeature.types.ts +7 -6
- package/src/core/columns/coreColumnsFeature.utils.ts +43 -29
- package/src/core/headers/buildHeaderGroups.ts +29 -30
- package/src/core/headers/constructHeader.ts +3 -2
- package/src/core/headers/coreHeadersFeature.ts +2 -27
- package/src/core/headers/coreHeadersFeature.types.ts +6 -4
- package/src/core/headers/coreHeadersFeature.utils.ts +52 -61
- package/src/core/reactivity/coreReactivityFeature.types.ts +4 -0
- package/src/core/row-models/coreRowModelsFeature.utils.ts +48 -36
- package/src/core/rows/constructRow.ts +6 -4
- package/src/core/rows/coreRowsFeature.types.ts +4 -4
- package/src/core/rows/coreRowsFeature.utils.ts +45 -32
- package/src/core/table/constructTable.ts +6 -4
- package/src/core/table/coreTablesFeature.types.ts +6 -2
- package/src/core/table/coreTablesFeature.utils.ts +5 -3
- package/src/features/column-faceting/columnFacetingFeature.types.ts +16 -10
- package/src/features/column-faceting/columnFacetingFeature.utils.ts +26 -18
- package/src/features/column-faceting/createFacetedMinMaxValues.ts +8 -10
- package/src/features/column-faceting/createFacetedRowModel.ts +10 -6
- package/src/features/column-faceting/createFacetedUniqueValues.ts +4 -3
- package/src/features/column-filtering/columnFilteringFeature.types.ts +21 -11
- package/src/features/column-filtering/columnFilteringFeature.utils.ts +39 -28
- package/src/features/column-filtering/createFilteredRowModel.ts +14 -8
- package/src/features/column-grouping/columnGroupingFeature.types.ts +18 -14
- package/src/features/column-grouping/columnGroupingFeature.utils.ts +55 -43
- package/src/features/column-ordering/columnOrderingFeature.types.ts +14 -5
- package/src/features/column-ordering/columnOrderingFeature.utils.ts +44 -29
- package/src/features/column-pinning/columnPinningFeature.types.ts +43 -31
- package/src/features/column-pinning/columnPinningFeature.utils.ts +164 -128
- package/src/features/column-resizing/columnResizingFeature.types.ts +9 -9
- package/src/features/column-resizing/columnResizingFeature.utils.ts +28 -19
- package/src/features/column-sizing/columnSizingFeature.ts +16 -0
- package/src/features/column-sizing/columnSizingFeature.types.ts +19 -12
- package/src/features/column-sizing/columnSizingFeature.utils.ts +52 -41
- package/src/features/column-visibility/columnVisibilityFeature.ts +8 -0
- package/src/features/column-visibility/columnVisibilityFeature.types.ts +22 -12
- package/src/features/column-visibility/columnVisibilityFeature.utils.ts +101 -56
- package/src/features/global-filtering/globalFilteringFeature.types.ts +10 -5
- package/src/features/global-filtering/globalFilteringFeature.utils.ts +20 -14
- package/src/features/row-expanding/rowExpandingFeature.types.ts +16 -15
- package/src/features/row-expanding/rowExpandingFeature.utils.ts +58 -43
- package/src/features/row-pagination/rowPaginationFeature.types.ts +19 -12
- package/src/features/row-pagination/rowPaginationFeature.utils.ts +49 -32
- package/src/features/row-pinning/rowPinningFeature.types.ts +12 -8
- package/src/features/row-pinning/rowPinningFeature.utils.ts +59 -47
- package/src/features/row-selection/rowSelectionFeature.types.ts +30 -24
- package/src/features/row-selection/rowSelectionFeature.utils.ts +109 -88
- package/src/features/row-sorting/createSortedRowModel.ts +16 -13
- package/src/features/row-sorting/rowSortingFeature.types.ts +10 -8
- package/src/features/row-sorting/rowSortingFeature.utils.ts +63 -46
- package/src/fns/aggregationFns.ts +53 -17
- package/src/fns/filterFns.ts +48 -17
- package/src/helpers/columnHelper.ts +9 -4
- package/src/helpers/tableOptions.ts +12 -9
- package/src/store-reactivity-bindings.ts +1 -0
- package/src/types/ColumnDef.ts +38 -0
- package/src/types/TableOptions.ts +15 -0
- package/src/types/TableState.ts +12 -0
- package/src/utils.ts +19 -46
|
@@ -0,0 +1,400 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: setup
|
|
3
|
+
description: >
|
|
4
|
+
Install a TanStack Table v9 framework adapter and wire up a first table with
|
|
5
|
+
`tableFeatures({...})` declaring `_features`, an `_rowModels` map of factory
|
|
6
|
+
results (`createSortedRowModel(sortFns)`, `createFilteredRowModel(filterFns)`,
|
|
7
|
+
`createPaginatedRowModel()`, …), a `createColumnHelper<typeof _features, TData>()`
|
|
8
|
+
column set, and the framework `useTable` / `injectTable` / `createTable` /
|
|
9
|
+
`constructTable` entry point. Covers the registry model, why `_features` must
|
|
10
|
+
be module-scoped, when to reach for `stockFeatures`, and `coreFeatures`.
|
|
11
|
+
type: core
|
|
12
|
+
library: tanstack-table
|
|
13
|
+
library_version: '9.0.0-alpha.47'
|
|
14
|
+
requires:
|
|
15
|
+
- state-management
|
|
16
|
+
- column-definitions
|
|
17
|
+
sources:
|
|
18
|
+
- TanStack/table:docs/installation.md
|
|
19
|
+
- TanStack/table:docs/overview.md
|
|
20
|
+
- TanStack/table:docs/guide/tables.md
|
|
21
|
+
- TanStack/table:docs/guide/features.md
|
|
22
|
+
- TanStack/table:packages/table-core/src/index.ts
|
|
23
|
+
- TanStack/table:examples/react/basic-use-table/src/main.tsx
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
This skill builds on `tanstack-table/state-management` and `tanstack-table/column-definitions`. Read those first for the v9 atom model and the `createColumnHelper<typeof _features, TData>()` shape.
|
|
27
|
+
|
|
28
|
+
## Setup
|
|
29
|
+
|
|
30
|
+
TanStack Table v9 separates a framework-agnostic core (`@tanstack/table-core`) from per-framework adapters. Every table — vanilla or framework — must declare two new v9-required options at construction time: `_features` (the registry of feature plugins) and `_rowModels` (the map of pipeline factories).
|
|
31
|
+
|
|
32
|
+
```ts
|
|
33
|
+
// Framework-agnostic, using @tanstack/table-core directly.
|
|
34
|
+
import {
|
|
35
|
+
constructTable,
|
|
36
|
+
tableFeatures,
|
|
37
|
+
createColumnHelper,
|
|
38
|
+
rowSortingFeature,
|
|
39
|
+
createSortedRowModel,
|
|
40
|
+
sortFns,
|
|
41
|
+
} from '@tanstack/table-core'
|
|
42
|
+
|
|
43
|
+
type Person = { firstName: string; lastName: string; age: number }
|
|
44
|
+
|
|
45
|
+
// 1. Declare features at MODULE scope (stable reference). This is required —
|
|
46
|
+
// a fresh `_features` object on every call destroys feature registration.
|
|
47
|
+
const _features = tableFeatures({ rowSortingFeature })
|
|
48
|
+
|
|
49
|
+
// 2. Build a column helper bound to BOTH TFeatures and TData.
|
|
50
|
+
const columnHelper = createColumnHelper<typeof _features, Person>()
|
|
51
|
+
|
|
52
|
+
const columns = columnHelper.columns([
|
|
53
|
+
columnHelper.accessor('firstName', { header: 'First' }),
|
|
54
|
+
columnHelper.accessor('lastName', { header: 'Last' }),
|
|
55
|
+
columnHelper.accessor('age', { header: 'Age', sortFn: 'alphanumeric' }),
|
|
56
|
+
])
|
|
57
|
+
|
|
58
|
+
const data: Person[] = [
|
|
59
|
+
{ firstName: 'Ada', lastName: 'Lovelace', age: 36 },
|
|
60
|
+
{ firstName: 'Grace', lastName: 'Hopper', age: 85 },
|
|
61
|
+
]
|
|
62
|
+
|
|
63
|
+
const table = constructTable({
|
|
64
|
+
_features,
|
|
65
|
+
_rowModels: {
|
|
66
|
+
// Pair every feature with its matching row-model factory.
|
|
67
|
+
sortedRowModel: createSortedRowModel(sortFns),
|
|
68
|
+
},
|
|
69
|
+
columns,
|
|
70
|
+
data,
|
|
71
|
+
})
|
|
72
|
+
|
|
73
|
+
// Read header groups and row model to render.
|
|
74
|
+
table.getHeaderGroups()
|
|
75
|
+
table.getRowModel().rows
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Framework adapters wrap this with reactivity:
|
|
79
|
+
|
|
80
|
+
| Framework | Entry point | Package |
|
|
81
|
+
| ------------------------------ | ---------------------------------------------- | ------------------------- |
|
|
82
|
+
| React, Preact, Vue, Solid, Lit | `useTable` / `createTable` / `TableController` | `@tanstack/<fw>-table` |
|
|
83
|
+
| Angular | `injectTable` | `@tanstack/angular-table` |
|
|
84
|
+
| Svelte 5 | `createTable` (runes) | `@tanstack/svelte-table` |
|
|
85
|
+
| Vanilla JS | `constructTable` + `storeReactivityBindings()` | `@tanstack/table-core` |
|
|
86
|
+
|
|
87
|
+
## Core Patterns
|
|
88
|
+
|
|
89
|
+
### Minimum table (no extra features)
|
|
90
|
+
|
|
91
|
+
```ts
|
|
92
|
+
const _features = tableFeatures({}) // core features only
|
|
93
|
+
const table = constructTable({
|
|
94
|
+
_features,
|
|
95
|
+
_rowModels: {}, // core row model auto-included
|
|
96
|
+
columns,
|
|
97
|
+
data,
|
|
98
|
+
})
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
`tableFeatures({})` is the canonical "I only want the core read pipeline" setup.
|
|
102
|
+
|
|
103
|
+
### Add features and their row models together
|
|
104
|
+
|
|
105
|
+
```ts
|
|
106
|
+
import {
|
|
107
|
+
rowSortingFeature,
|
|
108
|
+
rowPaginationFeature,
|
|
109
|
+
columnFilteringFeature,
|
|
110
|
+
createSortedRowModel,
|
|
111
|
+
createFilteredRowModel,
|
|
112
|
+
createPaginatedRowModel,
|
|
113
|
+
sortFns,
|
|
114
|
+
filterFns,
|
|
115
|
+
} from '@tanstack/table-core'
|
|
116
|
+
|
|
117
|
+
const _features = tableFeatures({
|
|
118
|
+
rowSortingFeature,
|
|
119
|
+
rowPaginationFeature,
|
|
120
|
+
columnFilteringFeature,
|
|
121
|
+
})
|
|
122
|
+
|
|
123
|
+
const table = constructTable({
|
|
124
|
+
_features,
|
|
125
|
+
_rowModels: {
|
|
126
|
+
sortedRowModel: createSortedRowModel(sortFns),
|
|
127
|
+
filteredRowModel: createFilteredRowModel(filterFns),
|
|
128
|
+
paginatedRowModel: createPaginatedRowModel(),
|
|
129
|
+
},
|
|
130
|
+
columns,
|
|
131
|
+
data,
|
|
132
|
+
})
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Each feature and its row-model factory are registered together — TypeScript exposes the feature's APIs (`table.setSorting`, `table.nextPage`, `table.setColumnFilters`) only when its feature plugin is present in `_features`.
|
|
136
|
+
|
|
137
|
+
### Vanilla JS reactivity binding
|
|
138
|
+
|
|
139
|
+
```ts
|
|
140
|
+
import { constructTable, tableFeatures } from '@tanstack/table-core'
|
|
141
|
+
import { storeReactivityBindings } from '@tanstack/table-core'
|
|
142
|
+
|
|
143
|
+
const _features = tableFeatures({})
|
|
144
|
+
|
|
145
|
+
const table = constructTable({
|
|
146
|
+
_features,
|
|
147
|
+
_rowModels: {},
|
|
148
|
+
columns,
|
|
149
|
+
data,
|
|
150
|
+
_rowModelFns: {},
|
|
151
|
+
// Use the vanilla binding when no framework adapter exists
|
|
152
|
+
_processingMode: 'core',
|
|
153
|
+
})
|
|
154
|
+
|
|
155
|
+
// Subscribe to a slice
|
|
156
|
+
const unsub = table.atoms.sorting.subscribe((sorting) => {
|
|
157
|
+
console.log('sorting changed', sorting)
|
|
158
|
+
})
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### `stockFeatures` for v8-like "everything on"
|
|
162
|
+
|
|
163
|
+
Reach for this only as a transitional aid. It re-introduces v8 bundle size (~15–20kb) and undoes v9's tree-shaking benefit.
|
|
164
|
+
|
|
165
|
+
```ts
|
|
166
|
+
import { stockFeatures, tableFeatures } from '@tanstack/table-core'
|
|
167
|
+
|
|
168
|
+
// Discouraged in new code. Register only what you use.
|
|
169
|
+
const _features = tableFeatures(stockFeatures)
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
## Common Mistakes
|
|
173
|
+
|
|
174
|
+
### [CRITICAL] API/state slice missing because the feature was not registered in `_features`
|
|
175
|
+
|
|
176
|
+
Wrong:
|
|
177
|
+
|
|
178
|
+
```ts
|
|
179
|
+
// rowSortingFeature missing — table.setSorting / state.sorting unavailable
|
|
180
|
+
const _features = tableFeatures({}) // empty
|
|
181
|
+
const table = useTable({ _features, _rowModels: {}, columns, data })
|
|
182
|
+
table.setSorting([{ id: 'age', desc: true }]) // ❌ does not exist on this table type
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
Correct:
|
|
186
|
+
|
|
187
|
+
```ts
|
|
188
|
+
// Register every feature you intend to use; pair with its row model when applicable
|
|
189
|
+
const _features = tableFeatures({ rowSortingFeature, rowPaginationFeature })
|
|
190
|
+
const table = useTable({
|
|
191
|
+
_features,
|
|
192
|
+
_rowModels: {
|
|
193
|
+
sortedRowModel: createSortedRowModel(sortFns),
|
|
194
|
+
paginatedRowModel: createPaginatedRowModel(),
|
|
195
|
+
},
|
|
196
|
+
columns,
|
|
197
|
+
data,
|
|
198
|
+
})
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
In v9, `_features` is a tree-shakeable registry — TypeScript hides APIs for unregistered features and the runtime atom is never created. Agents who see `table.setColumnFilters` "missing" often incorrectly conclude the API was removed.
|
|
202
|
+
|
|
203
|
+
Source: maintainer interview (Phase 4, 2026-05-17)
|
|
204
|
+
|
|
205
|
+
### [CRITICAL] Hallucinating v7 / v8 `useReactTable` + `getCoreRowModel()` shape
|
|
206
|
+
|
|
207
|
+
Wrong:
|
|
208
|
+
|
|
209
|
+
```ts
|
|
210
|
+
// v7
|
|
211
|
+
import { useTable, useSortBy } from 'react-table'
|
|
212
|
+
const table = useTable({ columns, data }, useSortBy)
|
|
213
|
+
|
|
214
|
+
// v8
|
|
215
|
+
import { useReactTable, getCoreRowModel } from '@tanstack/react-table'
|
|
216
|
+
const table = useReactTable({
|
|
217
|
+
columns,
|
|
218
|
+
data,
|
|
219
|
+
getCoreRowModel: getCoreRowModel(),
|
|
220
|
+
})
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
Correct:
|
|
224
|
+
|
|
225
|
+
```ts
|
|
226
|
+
import {
|
|
227
|
+
useTable,
|
|
228
|
+
tableFeatures,
|
|
229
|
+
rowSortingFeature,
|
|
230
|
+
createSortedRowModel,
|
|
231
|
+
sortFns,
|
|
232
|
+
} from '@tanstack/react-table'
|
|
233
|
+
|
|
234
|
+
const _features = tableFeatures({ rowSortingFeature })
|
|
235
|
+
const table = useTable({
|
|
236
|
+
_features,
|
|
237
|
+
_rowModels: { sortedRowModel: createSortedRowModel(sortFns) },
|
|
238
|
+
columns,
|
|
239
|
+
data,
|
|
240
|
+
})
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
v7→v8 and v8→v9 both reshaped the API substantially. Agents trained on older data confidently emit v7/v8 shapes; v9 enforces `_features` + `_rowModels`.
|
|
244
|
+
|
|
245
|
+
Source: maintainer interview (Phase 4, 2026-05-17)
|
|
246
|
+
|
|
247
|
+
### [HIGH] Calling `tableFeatures({})` inside the component body
|
|
248
|
+
|
|
249
|
+
Wrong:
|
|
250
|
+
|
|
251
|
+
```tsx
|
|
252
|
+
function MyTable() {
|
|
253
|
+
// ❌ new object every render — destroys stable feature registration
|
|
254
|
+
const _features = tableFeatures({ rowSortingFeature })
|
|
255
|
+
const table = useTable({ _features, _rowModels: {}, columns, data })
|
|
256
|
+
}
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
Correct:
|
|
260
|
+
|
|
261
|
+
```tsx
|
|
262
|
+
// ✅ module-scoped, stable reference
|
|
263
|
+
const _features = tableFeatures({ rowSortingFeature })
|
|
264
|
+
|
|
265
|
+
function MyTable() {
|
|
266
|
+
const table = useTable({ _features, _rowModels: {}, columns, data })
|
|
267
|
+
}
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
A fresh `_features` reference on each render churns the table's feature registry — the same way unstable `columns` or `data` cause infinite re-renders. Hoist to module scope or memoize.
|
|
271
|
+
|
|
272
|
+
Source: docs/guide/data.md; examples/react/basic-use-table/src/main.tsx
|
|
273
|
+
|
|
274
|
+
### [HIGH] Adding a row-model factory without registering its feature
|
|
275
|
+
|
|
276
|
+
Wrong:
|
|
277
|
+
|
|
278
|
+
```ts
|
|
279
|
+
// rowSortingFeature missing — sortedRowModel is orphaned and never runs
|
|
280
|
+
const _features = tableFeatures({ rowPaginationFeature })
|
|
281
|
+
const table = useTable({
|
|
282
|
+
_features,
|
|
283
|
+
_rowModels: {
|
|
284
|
+
sortedRowModel: createSortedRowModel(sortFns), // no-op
|
|
285
|
+
paginatedRowModel: createPaginatedRowModel(),
|
|
286
|
+
},
|
|
287
|
+
columns,
|
|
288
|
+
data,
|
|
289
|
+
})
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
Correct:
|
|
293
|
+
|
|
294
|
+
```ts
|
|
295
|
+
const _features = tableFeatures({ rowSortingFeature, rowPaginationFeature })
|
|
296
|
+
const table = useTable({
|
|
297
|
+
_features,
|
|
298
|
+
_rowModels: {
|
|
299
|
+
sortedRowModel: createSortedRowModel(sortFns),
|
|
300
|
+
paginatedRowModel: createPaginatedRowModel(),
|
|
301
|
+
},
|
|
302
|
+
columns,
|
|
303
|
+
data,
|
|
304
|
+
})
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
Row-model factories only run if their matching feature is in `_features`. Runtime silently degrades.
|
|
308
|
+
|
|
309
|
+
Source: docs/guide/row-models.md; examples/react/basic-external-atoms/src/main.tsx
|
|
310
|
+
|
|
311
|
+
### [CRITICAL] Reimplementing what built-in APIs already provide
|
|
312
|
+
|
|
313
|
+
Wrong:
|
|
314
|
+
|
|
315
|
+
```ts
|
|
316
|
+
// ❌ Reimplements sorting state manually instead of using the API
|
|
317
|
+
const [sorting, setSorting] = useState([])
|
|
318
|
+
const sortedData = useMemo(() => [...data].sort((a, b) => /* …custom… */), [data, sorting])
|
|
319
|
+
// then uses sortedData directly, bypassing the table
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
Correct:
|
|
323
|
+
|
|
324
|
+
```ts
|
|
325
|
+
const table = useTable({
|
|
326
|
+
_features: tableFeatures({ rowSortingFeature }),
|
|
327
|
+
_rowModels: { sortedRowModel: createSortedRowModel(sortFns) },
|
|
328
|
+
columns,
|
|
329
|
+
data,
|
|
330
|
+
})
|
|
331
|
+
// then: table.setSorting(...), column.toggleSorting(), header.getToggleSortingHandler()
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
TanStack Table IS a state-management coordinator. The maintainer flags hand-rolled state/sort/filter loops as the #1 tell that an AI wrote the code. Reach for `table.setSorting`, `row.toggleSelected`, `table.nextPage`, `table.setColumnFilters`, `column.toggleVisibility` first.
|
|
335
|
+
|
|
336
|
+
Source: maintainer interview (Phase 4, 2026-05-17)
|
|
337
|
+
|
|
338
|
+
### [HIGH] Bundling `stockFeatures` when only a few features are used
|
|
339
|
+
|
|
340
|
+
Wrong:
|
|
341
|
+
|
|
342
|
+
```ts
|
|
343
|
+
// Pulls in every feature even though only sorting+pagination are used
|
|
344
|
+
import { stockFeatures, tableFeatures } from '@tanstack/react-table'
|
|
345
|
+
const _features = tableFeatures(stockFeatures)
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
Correct:
|
|
349
|
+
|
|
350
|
+
```ts
|
|
351
|
+
import {
|
|
352
|
+
tableFeatures,
|
|
353
|
+
rowSortingFeature,
|
|
354
|
+
rowPaginationFeature,
|
|
355
|
+
} from '@tanstack/react-table'
|
|
356
|
+
const _features = tableFeatures({ rowSortingFeature, rowPaginationFeature })
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
Tree-shaking via `_features` is the headline reason for the v9 redesign. `stockFeatures` exists as a v8-style transitional escape hatch, not a default.
|
|
360
|
+
|
|
361
|
+
Source: maintainer interview (Phase 4, 2026-05-17)
|
|
362
|
+
|
|
363
|
+
### [CRITICAL] Empty array literal for `data` causes infinite re-renders
|
|
364
|
+
|
|
365
|
+
Wrong:
|
|
366
|
+
|
|
367
|
+
```tsx
|
|
368
|
+
// ❌ Fresh [] each render — infinite loop when items is undefined
|
|
369
|
+
const table = useTable({
|
|
370
|
+
_features,
|
|
371
|
+
_rowModels: {},
|
|
372
|
+
columns,
|
|
373
|
+
data: items ?? [],
|
|
374
|
+
})
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
Correct:
|
|
378
|
+
|
|
379
|
+
```tsx
|
|
380
|
+
// ✅ Hoist the empty fallback OR memoize
|
|
381
|
+
const EMPTY: Person[] = []
|
|
382
|
+
|
|
383
|
+
const table = useTable({
|
|
384
|
+
_features,
|
|
385
|
+
_rowModels: {},
|
|
386
|
+
columns,
|
|
387
|
+
data: items ?? EMPTY,
|
|
388
|
+
})
|
|
389
|
+
// or: const data = useMemo(() => items ?? [], [items])
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
A new `[]` reference each render means the table sees a fresh `data` prop and rebuilds row models. Top recurring beginner issue.
|
|
393
|
+
|
|
394
|
+
Source: https://github.com/TanStack/table/issues/4566; https://github.com/TanStack/table/issues/6002
|
|
395
|
+
|
|
396
|
+
## See also
|
|
397
|
+
|
|
398
|
+
- `tanstack-table/state-management` — atom model, ownership precedence, state slices
|
|
399
|
+
- `tanstack-table/column-definitions` — `createColumnHelper<typeof _features, TData>()` and `getRowId`
|
|
400
|
+
- `tanstack-table/migrate-v8-to-v9` — full rename + restructure table for v8 → v9 upgrades
|