@tanstack/table-core 9.0.0-beta.2 → 9.0.0-beta.21
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/core/cells/constructCell.d.cts +3 -3
- package/dist/core/cells/constructCell.d.ts +3 -3
- package/dist/core/cells/coreCellsFeature.cjs +11 -20
- package/dist/core/cells/coreCellsFeature.cjs.map +1 -1
- package/dist/core/cells/coreCellsFeature.d.cts +4 -12
- package/dist/core/cells/coreCellsFeature.d.ts +4 -12
- package/dist/core/cells/coreCellsFeature.js +12 -20
- package/dist/core/cells/coreCellsFeature.js.map +1 -1
- package/dist/core/cells/coreCellsFeature.types.d.cts +6 -6
- package/dist/core/cells/coreCellsFeature.types.d.ts +6 -6
- package/dist/core/cells/coreCellsFeature.utils.d.cts +3 -3
- package/dist/core/cells/coreCellsFeature.utils.d.ts +3 -3
- package/dist/core/columns/constructColumn.cjs +5 -0
- package/dist/core/columns/constructColumn.cjs.map +1 -1
- package/dist/core/columns/constructColumn.d.cts +3 -3
- package/dist/core/columns/constructColumn.d.ts +3 -3
- package/dist/core/columns/constructColumn.js +5 -0
- package/dist/core/columns/constructColumn.js.map +1 -1
- package/dist/core/columns/coreColumnsFeature.cjs +59 -68
- package/dist/core/columns/coreColumnsFeature.cjs.map +1 -1
- package/dist/core/columns/coreColumnsFeature.d.cts +4 -12
- package/dist/core/columns/coreColumnsFeature.d.ts +4 -12
- package/dist/core/columns/coreColumnsFeature.js +60 -68
- package/dist/core/columns/coreColumnsFeature.js.map +1 -1
- package/dist/core/columns/coreColumnsFeature.types.d.cts +7 -7
- package/dist/core/columns/coreColumnsFeature.types.d.ts +7 -7
- package/dist/core/columns/coreColumnsFeature.utils.cjs +2 -2
- package/dist/core/columns/coreColumnsFeature.utils.cjs.map +1 -1
- package/dist/core/columns/coreColumnsFeature.utils.d.cts +9 -9
- package/dist/core/columns/coreColumnsFeature.utils.d.ts +9 -9
- package/dist/core/columns/coreColumnsFeature.utils.js +3 -3
- package/dist/core/columns/coreColumnsFeature.utils.js.map +1 -1
- package/dist/core/coreFeatures.cjs.map +1 -1
- package/dist/core/coreFeatures.d.cts +1 -1
- package/dist/core/coreFeatures.d.ts +1 -1
- package/dist/core/coreFeatures.js.map +1 -1
- package/dist/core/headers/buildHeaderGroups.cjs.map +1 -1
- package/dist/core/headers/buildHeaderGroups.d.cts +2 -2
- package/dist/core/headers/buildHeaderGroups.d.ts +2 -2
- package/dist/core/headers/buildHeaderGroups.js.map +1 -1
- package/dist/core/headers/constructHeader.d.cts +2 -2
- package/dist/core/headers/constructHeader.d.ts +2 -2
- package/dist/core/headers/coreHeadersFeature.cjs +44 -53
- package/dist/core/headers/coreHeadersFeature.cjs.map +1 -1
- package/dist/core/headers/coreHeadersFeature.d.cts +4 -12
- package/dist/core/headers/coreHeadersFeature.d.ts +4 -12
- package/dist/core/headers/coreHeadersFeature.js +45 -53
- package/dist/core/headers/coreHeadersFeature.js.map +1 -1
- package/dist/core/headers/coreHeadersFeature.types.d.cts +6 -6
- package/dist/core/headers/coreHeadersFeature.types.d.ts +6 -6
- package/dist/core/headers/coreHeadersFeature.utils.cjs.map +1 -1
- package/dist/core/headers/coreHeadersFeature.utils.d.cts +6 -6
- package/dist/core/headers/coreHeadersFeature.utils.d.ts +6 -6
- package/dist/core/headers/coreHeadersFeature.utils.js.map +1 -1
- package/dist/core/row-models/coreRowModelsFeature.cjs +17 -26
- package/dist/core/row-models/coreRowModelsFeature.cjs.map +1 -1
- package/dist/core/row-models/coreRowModelsFeature.d.cts +4 -12
- package/dist/core/row-models/coreRowModelsFeature.d.ts +4 -12
- package/dist/core/row-models/coreRowModelsFeature.js +18 -26
- package/dist/core/row-models/coreRowModelsFeature.js.map +1 -1
- package/dist/core/row-models/coreRowModelsFeature.types.d.cts +6 -16
- package/dist/core/row-models/coreRowModelsFeature.types.d.ts +6 -16
- package/dist/core/row-models/coreRowModelsFeature.utils.cjs +13 -13
- package/dist/core/row-models/coreRowModelsFeature.utils.cjs.map +1 -1
- package/dist/core/row-models/coreRowModelsFeature.utils.d.cts +14 -14
- package/dist/core/row-models/coreRowModelsFeature.utils.d.ts +14 -14
- package/dist/core/row-models/coreRowModelsFeature.utils.js +13 -13
- package/dist/core/row-models/coreRowModelsFeature.utils.js.map +1 -1
- package/dist/core/row-models/createCoreRowModel.cjs +2 -3
- package/dist/core/row-models/createCoreRowModel.cjs.map +1 -1
- package/dist/core/row-models/createCoreRowModel.d.cts +1 -1
- package/dist/core/row-models/createCoreRowModel.d.ts +1 -1
- package/dist/core/row-models/createCoreRowModel.js +3 -4
- package/dist/core/row-models/createCoreRowModel.js.map +1 -1
- package/dist/core/rows/constructRow.cjs +3 -2
- package/dist/core/rows/constructRow.cjs.map +1 -1
- package/dist/core/rows/constructRow.d.cts +2 -2
- package/dist/core/rows/constructRow.d.ts +2 -2
- package/dist/core/rows/constructRow.js +4 -2
- package/dist/core/rows/constructRow.js.map +1 -1
- package/dist/core/rows/coreRowsFeature.cjs +27 -36
- package/dist/core/rows/coreRowsFeature.cjs.map +1 -1
- package/dist/core/rows/coreRowsFeature.d.cts +4 -12
- package/dist/core/rows/coreRowsFeature.d.ts +4 -12
- package/dist/core/rows/coreRowsFeature.js +28 -36
- package/dist/core/rows/coreRowsFeature.js.map +1 -1
- package/dist/core/rows/coreRowsFeature.types.d.cts +6 -6
- package/dist/core/rows/coreRowsFeature.types.d.ts +6 -6
- package/dist/core/rows/coreRowsFeature.utils.cjs +3 -3
- package/dist/core/rows/coreRowsFeature.utils.cjs.map +1 -1
- package/dist/core/rows/coreRowsFeature.utils.d.cts +3 -3
- package/dist/core/rows/coreRowsFeature.utils.d.ts +3 -3
- package/dist/core/rows/coreRowsFeature.utils.js +4 -4
- package/dist/core/rows/coreRowsFeature.utils.js.map +1 -1
- package/dist/core/table/constructTable.cjs +21 -6
- package/dist/core/table/constructTable.cjs.map +1 -1
- package/dist/core/table/constructTable.d.cts +1 -1
- package/dist/core/table/constructTable.d.ts +1 -1
- package/dist/core/table/constructTable.js +21 -6
- package/dist/core/table/constructTable.js.map +1 -1
- package/dist/core/table/coreTablesFeature.cjs +7 -16
- package/dist/core/table/coreTablesFeature.cjs.map +1 -1
- package/dist/core/table/coreTablesFeature.d.cts +4 -12
- package/dist/core/table/coreTablesFeature.d.ts +4 -12
- package/dist/core/table/coreTablesFeature.js +8 -16
- package/dist/core/table/coreTablesFeature.js.map +1 -1
- package/dist/core/table/coreTablesFeature.types.d.cts +28 -16
- package/dist/core/table/coreTablesFeature.types.d.ts +28 -16
- package/dist/core/table/coreTablesFeature.utils.cjs +33 -12
- package/dist/core/table/coreTablesFeature.utils.cjs.map +1 -1
- package/dist/core/table/coreTablesFeature.utils.d.cts +8 -6
- package/dist/core/table/coreTablesFeature.utils.d.ts +8 -6
- package/dist/core/table/coreTablesFeature.utils.js +33 -12
- package/dist/core/table/coreTablesFeature.utils.js.map +1 -1
- package/dist/features/column-faceting/columnFacetingFeature.cjs +49 -61
- package/dist/features/column-faceting/columnFacetingFeature.cjs.map +1 -1
- package/dist/features/column-faceting/columnFacetingFeature.d.cts +4 -15
- package/dist/features/column-faceting/columnFacetingFeature.d.ts +4 -15
- package/dist/features/column-faceting/columnFacetingFeature.js +50 -61
- package/dist/features/column-faceting/columnFacetingFeature.js.map +1 -1
- package/dist/features/column-faceting/columnFacetingFeature.types.d.cts +8 -29
- package/dist/features/column-faceting/columnFacetingFeature.types.d.ts +8 -29
- package/dist/features/column-faceting/columnFacetingFeature.utils.cjs +12 -12
- package/dist/features/column-faceting/columnFacetingFeature.utils.cjs.map +1 -1
- package/dist/features/column-faceting/columnFacetingFeature.utils.d.cts +8 -8
- package/dist/features/column-faceting/columnFacetingFeature.utils.d.ts +8 -8
- package/dist/features/column-faceting/columnFacetingFeature.utils.js +12 -12
- package/dist/features/column-faceting/columnFacetingFeature.utils.js.map +1 -1
- package/dist/features/column-faceting/createFacetedMinMaxValues.cjs.map +1 -1
- package/dist/features/column-faceting/createFacetedMinMaxValues.d.cts +1 -1
- package/dist/features/column-faceting/createFacetedMinMaxValues.d.ts +1 -1
- package/dist/features/column-faceting/createFacetedMinMaxValues.js.map +1 -1
- package/dist/features/column-faceting/createFacetedRowModel.cjs.map +1 -1
- package/dist/features/column-faceting/createFacetedRowModel.d.cts +1 -1
- package/dist/features/column-faceting/createFacetedRowModel.d.ts +1 -1
- package/dist/features/column-faceting/createFacetedRowModel.js.map +1 -1
- package/dist/features/column-faceting/createFacetedUniqueValues.cjs.map +1 -1
- package/dist/features/column-faceting/createFacetedUniqueValues.d.cts +1 -1
- package/dist/features/column-faceting/createFacetedUniqueValues.d.ts +1 -1
- package/dist/features/column-faceting/createFacetedUniqueValues.js.map +1 -1
- package/dist/features/column-filtering/columnFilteringFeature.cjs +40 -53
- package/dist/features/column-filtering/columnFilteringFeature.cjs.map +1 -1
- package/dist/features/column-filtering/columnFilteringFeature.d.cts +4 -16
- package/dist/features/column-filtering/columnFilteringFeature.d.ts +4 -16
- package/dist/features/column-filtering/columnFilteringFeature.js +42 -54
- package/dist/features/column-filtering/columnFilteringFeature.js.map +1 -1
- package/dist/features/column-filtering/columnFilteringFeature.types.d.cts +40 -26
- package/dist/features/column-filtering/columnFilteringFeature.types.d.ts +40 -26
- package/dist/features/column-filtering/columnFilteringFeature.utils.cjs +1 -1
- package/dist/features/column-filtering/columnFilteringFeature.utils.cjs.map +1 -1
- package/dist/features/column-filtering/columnFilteringFeature.utils.d.cts +12 -12
- package/dist/features/column-filtering/columnFilteringFeature.utils.d.ts +12 -12
- package/dist/features/column-filtering/columnFilteringFeature.utils.js +1 -1
- package/dist/features/column-filtering/columnFilteringFeature.utils.js.map +1 -1
- package/dist/features/column-filtering/createFilteredRowModel.cjs +12 -7
- package/dist/features/column-filtering/createFilteredRowModel.cjs.map +1 -1
- package/dist/features/column-filtering/createFilteredRowModel.d.cts +5 -3
- package/dist/features/column-filtering/createFilteredRowModel.d.ts +5 -3
- package/dist/features/column-filtering/createFilteredRowModel.js +13 -8
- package/dist/features/column-filtering/createFilteredRowModel.js.map +1 -1
- package/dist/features/column-filtering/filterRowsUtils.cjs +3 -2
- package/dist/features/column-filtering/filterRowsUtils.cjs.map +1 -1
- package/dist/features/column-filtering/filterRowsUtils.js +3 -2
- package/dist/features/column-filtering/filterRowsUtils.js.map +1 -1
- package/dist/features/column-grouping/columnGroupingFeature.cjs +57 -69
- package/dist/features/column-grouping/columnGroupingFeature.cjs.map +1 -1
- package/dist/features/column-grouping/columnGroupingFeature.d.cts +4 -15
- package/dist/features/column-grouping/columnGroupingFeature.d.ts +4 -15
- package/dist/features/column-grouping/columnGroupingFeature.js +59 -70
- package/dist/features/column-grouping/columnGroupingFeature.js.map +1 -1
- package/dist/features/column-grouping/columnGroupingFeature.types.d.cts +28 -21
- package/dist/features/column-grouping/columnGroupingFeature.types.d.ts +28 -21
- package/dist/features/column-grouping/columnGroupingFeature.utils.cjs +4 -4
- package/dist/features/column-grouping/columnGroupingFeature.utils.cjs.map +1 -1
- package/dist/features/column-grouping/columnGroupingFeature.utils.d.cts +11 -11
- package/dist/features/column-grouping/columnGroupingFeature.utils.d.ts +11 -11
- package/dist/features/column-grouping/columnGroupingFeature.utils.js +5 -5
- package/dist/features/column-grouping/columnGroupingFeature.utils.js.map +1 -1
- package/dist/features/column-grouping/createGroupedRowModel.cjs +9 -7
- package/dist/features/column-grouping/createGroupedRowModel.cjs.map +1 -1
- package/dist/features/column-grouping/createGroupedRowModel.d.cts +6 -3
- package/dist/features/column-grouping/createGroupedRowModel.d.ts +6 -3
- package/dist/features/column-grouping/createGroupedRowModel.js +10 -8
- package/dist/features/column-grouping/createGroupedRowModel.js.map +1 -1
- package/dist/features/column-ordering/columnOrderingFeature.cjs +47 -59
- package/dist/features/column-ordering/columnOrderingFeature.cjs.map +1 -1
- package/dist/features/column-ordering/columnOrderingFeature.d.cts +4 -15
- package/dist/features/column-ordering/columnOrderingFeature.d.ts +4 -15
- package/dist/features/column-ordering/columnOrderingFeature.js +48 -59
- package/dist/features/column-ordering/columnOrderingFeature.js.map +1 -1
- package/dist/features/column-ordering/columnOrderingFeature.types.d.cts +1 -1
- package/dist/features/column-ordering/columnOrderingFeature.types.d.ts +1 -1
- package/dist/features/column-ordering/columnOrderingFeature.utils.d.cts +9 -9
- package/dist/features/column-ordering/columnOrderingFeature.utils.d.ts +9 -9
- package/dist/features/column-pinning/columnPinningFeature.cjs +209 -221
- package/dist/features/column-pinning/columnPinningFeature.cjs.map +1 -1
- package/dist/features/column-pinning/columnPinningFeature.d.cts +4 -15
- package/dist/features/column-pinning/columnPinningFeature.d.ts +4 -15
- package/dist/features/column-pinning/columnPinningFeature.js +210 -221
- package/dist/features/column-pinning/columnPinningFeature.js.map +1 -1
- package/dist/features/column-pinning/columnPinningFeature.types.d.cts +2 -2
- package/dist/features/column-pinning/columnPinningFeature.types.d.ts +2 -2
- package/dist/features/column-pinning/columnPinningFeature.utils.cjs.map +1 -1
- package/dist/features/column-pinning/columnPinningFeature.utils.d.cts +31 -30
- package/dist/features/column-pinning/columnPinningFeature.utils.d.ts +31 -30
- package/dist/features/column-pinning/columnPinningFeature.utils.js.map +1 -1
- package/dist/features/column-resizing/columnResizingFeature.cjs +31 -43
- package/dist/features/column-resizing/columnResizingFeature.cjs.map +1 -1
- package/dist/features/column-resizing/columnResizingFeature.d.cts +4 -15
- package/dist/features/column-resizing/columnResizingFeature.d.ts +4 -15
- package/dist/features/column-resizing/columnResizingFeature.js +32 -43
- package/dist/features/column-resizing/columnResizingFeature.js.map +1 -1
- package/dist/features/column-resizing/columnResizingFeature.types.d.cts +1 -4
- package/dist/features/column-resizing/columnResizingFeature.types.d.ts +1 -4
- package/dist/features/column-resizing/columnResizingFeature.utils.cjs +2 -5
- package/dist/features/column-resizing/columnResizingFeature.utils.cjs.map +1 -1
- package/dist/features/column-resizing/columnResizingFeature.utils.d.cts +6 -6
- package/dist/features/column-resizing/columnResizingFeature.utils.d.ts +6 -6
- package/dist/features/column-resizing/columnResizingFeature.utils.js +3 -6
- package/dist/features/column-resizing/columnResizingFeature.utils.js.map +1 -1
- package/dist/features/column-sizing/columnSizingFeature.cjs +112 -125
- package/dist/features/column-sizing/columnSizingFeature.cjs.map +1 -1
- package/dist/features/column-sizing/columnSizingFeature.d.cts +4 -16
- package/dist/features/column-sizing/columnSizingFeature.d.ts +4 -16
- package/dist/features/column-sizing/columnSizingFeature.js +113 -125
- package/dist/features/column-sizing/columnSizingFeature.js.map +1 -1
- package/dist/features/column-sizing/columnSizingFeature.utils.cjs +11 -4
- package/dist/features/column-sizing/columnSizingFeature.utils.cjs.map +1 -1
- package/dist/features/column-sizing/columnSizingFeature.utils.d.cts +12 -12
- package/dist/features/column-sizing/columnSizingFeature.utils.d.ts +12 -12
- package/dist/features/column-sizing/columnSizingFeature.utils.js +12 -5
- package/dist/features/column-sizing/columnSizingFeature.utils.js.map +1 -1
- package/dist/features/column-visibility/columnVisibilityFeature.cjs +83 -95
- package/dist/features/column-visibility/columnVisibilityFeature.cjs.map +1 -1
- package/dist/features/column-visibility/columnVisibilityFeature.d.cts +4 -15
- package/dist/features/column-visibility/columnVisibilityFeature.d.ts +4 -15
- package/dist/features/column-visibility/columnVisibilityFeature.js +84 -95
- package/dist/features/column-visibility/columnVisibilityFeature.js.map +1 -1
- package/dist/features/column-visibility/columnVisibilityFeature.types.d.cts +2 -2
- package/dist/features/column-visibility/columnVisibilityFeature.types.d.ts +2 -2
- package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs +12 -9
- package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs.map +1 -1
- package/dist/features/column-visibility/columnVisibilityFeature.utils.d.cts +14 -14
- package/dist/features/column-visibility/columnVisibilityFeature.utils.d.ts +14 -14
- package/dist/features/column-visibility/columnVisibilityFeature.utils.js +13 -10
- package/dist/features/column-visibility/columnVisibilityFeature.utils.js.map +1 -1
- package/dist/features/global-filtering/globalFilteringFeature.cjs +31 -43
- package/dist/features/global-filtering/globalFilteringFeature.cjs.map +1 -1
- package/dist/features/global-filtering/globalFilteringFeature.d.cts +4 -15
- package/dist/features/global-filtering/globalFilteringFeature.d.ts +4 -15
- package/dist/features/global-filtering/globalFilteringFeature.js +32 -43
- package/dist/features/global-filtering/globalFilteringFeature.js.map +1 -1
- package/dist/features/global-filtering/globalFilteringFeature.types.d.cts +2 -2
- package/dist/features/global-filtering/globalFilteringFeature.types.d.ts +2 -2
- package/dist/features/global-filtering/globalFilteringFeature.utils.cjs.map +1 -1
- package/dist/features/global-filtering/globalFilteringFeature.utils.d.cts +10 -8
- package/dist/features/global-filtering/globalFilteringFeature.utils.d.ts +10 -8
- package/dist/features/global-filtering/globalFilteringFeature.utils.js.map +1 -1
- package/dist/features/row-expanding/createExpandedRowModel.cjs.map +1 -1
- package/dist/features/row-expanding/createExpandedRowModel.d.cts +1 -1
- package/dist/features/row-expanding/createExpandedRowModel.d.ts +1 -1
- package/dist/features/row-expanding/createExpandedRowModel.js.map +1 -1
- package/dist/features/row-expanding/rowExpandingFeature.cjs +37 -49
- package/dist/features/row-expanding/rowExpandingFeature.cjs.map +1 -1
- package/dist/features/row-expanding/rowExpandingFeature.d.cts +4 -15
- package/dist/features/row-expanding/rowExpandingFeature.d.ts +4 -15
- package/dist/features/row-expanding/rowExpandingFeature.js +38 -49
- package/dist/features/row-expanding/rowExpandingFeature.js.map +1 -1
- package/dist/features/row-expanding/rowExpandingFeature.types.d.cts +5 -14
- package/dist/features/row-expanding/rowExpandingFeature.types.d.ts +5 -14
- package/dist/features/row-expanding/rowExpandingFeature.utils.cjs +21 -12
- package/dist/features/row-expanding/rowExpandingFeature.utils.cjs.map +1 -1
- package/dist/features/row-expanding/rowExpandingFeature.utils.d.cts +10 -10
- package/dist/features/row-expanding/rowExpandingFeature.utils.d.ts +10 -10
- package/dist/features/row-expanding/rowExpandingFeature.utils.js +22 -13
- package/dist/features/row-expanding/rowExpandingFeature.utils.js.map +1 -1
- package/dist/features/row-pagination/createPaginatedRowModel.cjs +1 -1
- package/dist/features/row-pagination/createPaginatedRowModel.cjs.map +1 -1
- package/dist/features/row-pagination/createPaginatedRowModel.d.cts +1 -1
- package/dist/features/row-pagination/createPaginatedRowModel.d.ts +1 -1
- package/dist/features/row-pagination/createPaginatedRowModel.js +1 -1
- package/dist/features/row-pagination/createPaginatedRowModel.js.map +1 -1
- package/dist/features/row-pagination/rowPaginationFeature.cjs +35 -47
- package/dist/features/row-pagination/rowPaginationFeature.cjs.map +1 -1
- package/dist/features/row-pagination/rowPaginationFeature.d.cts +4 -15
- package/dist/features/row-pagination/rowPaginationFeature.d.ts +4 -15
- package/dist/features/row-pagination/rowPaginationFeature.js +36 -47
- package/dist/features/row-pagination/rowPaginationFeature.js.map +1 -1
- package/dist/features/row-pagination/rowPaginationFeature.types.d.cts +4 -13
- package/dist/features/row-pagination/rowPaginationFeature.types.d.ts +4 -13
- package/dist/features/row-pagination/rowPaginationFeature.utils.d.cts +17 -17
- package/dist/features/row-pagination/rowPaginationFeature.utils.d.ts +17 -17
- package/dist/features/row-pinning/rowPinningFeature.cjs +55 -67
- package/dist/features/row-pinning/rowPinningFeature.cjs.map +1 -1
- package/dist/features/row-pinning/rowPinningFeature.d.cts +4 -15
- package/dist/features/row-pinning/rowPinningFeature.d.ts +4 -15
- package/dist/features/row-pinning/rowPinningFeature.js +56 -67
- package/dist/features/row-pinning/rowPinningFeature.js.map +1 -1
- package/dist/features/row-pinning/rowPinningFeature.types.d.cts +2 -2
- package/dist/features/row-pinning/rowPinningFeature.types.d.ts +2 -2
- package/dist/features/row-pinning/rowPinningFeature.utils.cjs +2 -2
- package/dist/features/row-pinning/rowPinningFeature.utils.cjs.map +1 -1
- package/dist/features/row-pinning/rowPinningFeature.utils.d.cts +7 -7
- package/dist/features/row-pinning/rowPinningFeature.utils.d.ts +7 -7
- package/dist/features/row-pinning/rowPinningFeature.utils.js +2 -2
- package/dist/features/row-pinning/rowPinningFeature.utils.js.map +1 -1
- package/dist/features/row-selection/rowSelectionFeature.cjs +108 -77
- package/dist/features/row-selection/rowSelectionFeature.cjs.map +1 -1
- package/dist/features/row-selection/rowSelectionFeature.d.cts +4 -15
- package/dist/features/row-selection/rowSelectionFeature.d.ts +4 -15
- package/dist/features/row-selection/rowSelectionFeature.js +110 -78
- package/dist/features/row-selection/rowSelectionFeature.js.map +1 -1
- package/dist/features/row-selection/rowSelectionFeature.types.d.cts +13 -5
- package/dist/features/row-selection/rowSelectionFeature.types.d.ts +13 -5
- package/dist/features/row-selection/rowSelectionFeature.utils.cjs +76 -60
- package/dist/features/row-selection/rowSelectionFeature.utils.cjs.map +1 -1
- package/dist/features/row-selection/rowSelectionFeature.utils.d.cts +48 -23
- package/dist/features/row-selection/rowSelectionFeature.utils.d.ts +48 -23
- package/dist/features/row-selection/rowSelectionFeature.utils.js +77 -62
- package/dist/features/row-selection/rowSelectionFeature.utils.js.map +1 -1
- package/dist/features/row-sorting/createSortedRowModel.cjs +5 -3
- package/dist/features/row-sorting/createSortedRowModel.cjs.map +1 -1
- package/dist/features/row-sorting/createSortedRowModel.d.cts +5 -3
- package/dist/features/row-sorting/createSortedRowModel.d.ts +5 -3
- package/dist/features/row-sorting/createSortedRowModel.js +6 -4
- package/dist/features/row-sorting/createSortedRowModel.js.map +1 -1
- package/dist/features/row-sorting/rowSortingFeature.cjs +45 -57
- package/dist/features/row-sorting/rowSortingFeature.cjs.map +1 -1
- package/dist/features/row-sorting/rowSortingFeature.d.cts +4 -15
- package/dist/features/row-sorting/rowSortingFeature.d.ts +4 -15
- package/dist/features/row-sorting/rowSortingFeature.js +46 -57
- package/dist/features/row-sorting/rowSortingFeature.js.map +1 -1
- package/dist/features/row-sorting/rowSortingFeature.types.d.cts +24 -21
- package/dist/features/row-sorting/rowSortingFeature.types.d.ts +24 -21
- package/dist/features/row-sorting/rowSortingFeature.utils.cjs +8 -5
- package/dist/features/row-sorting/rowSortingFeature.utils.cjs.map +1 -1
- package/dist/features/row-sorting/rowSortingFeature.utils.d.cts +16 -16
- package/dist/features/row-sorting/rowSortingFeature.utils.d.ts +16 -16
- package/dist/features/row-sorting/rowSortingFeature.utils.js +8 -5
- package/dist/features/row-sorting/rowSortingFeature.utils.js.map +1 -1
- package/dist/fns/aggregationFns.cjs +18 -18
- package/dist/fns/aggregationFns.cjs.map +1 -1
- package/dist/fns/aggregationFns.d.cts +21 -19
- package/dist/fns/aggregationFns.d.ts +21 -19
- package/dist/fns/aggregationFns.js +18 -18
- package/dist/fns/aggregationFns.js.map +1 -1
- package/dist/fns/filterFns.cjs +51 -65
- package/dist/fns/filterFns.cjs.map +1 -1
- package/dist/fns/filterFns.d.cts +82 -28
- package/dist/fns/filterFns.d.ts +82 -28
- package/dist/fns/filterFns.js +51 -65
- package/dist/fns/filterFns.js.map +1 -1
- package/dist/fns/sortFns.cjs +18 -6
- package/dist/fns/sortFns.cjs.map +1 -1
- package/dist/fns/sortFns.d.cts +15 -13
- package/dist/fns/sortFns.d.ts +15 -13
- package/dist/fns/sortFns.js +18 -6
- package/dist/fns/sortFns.js.map +1 -1
- package/dist/helpers/columnHelper.cjs.map +1 -1
- package/dist/helpers/columnHelper.d.cts +2 -2
- package/dist/helpers/columnHelper.d.ts +2 -2
- package/dist/helpers/columnHelper.js.map +1 -1
- package/dist/helpers/metaHelper.cjs +30 -0
- package/dist/helpers/metaHelper.cjs.map +1 -0
- package/dist/helpers/metaHelper.d.cts +26 -0
- package/dist/helpers/metaHelper.d.ts +26 -0
- package/dist/helpers/metaHelper.js +29 -0
- package/dist/helpers/metaHelper.js.map +1 -0
- package/dist/helpers/tableFeatures.cjs +31 -3
- package/dist/helpers/tableFeatures.cjs.map +1 -1
- package/dist/helpers/tableFeatures.d.cts +33 -5
- package/dist/helpers/tableFeatures.d.ts +33 -5
- package/dist/helpers/tableFeatures.js +31 -3
- package/dist/helpers/tableFeatures.js.map +1 -1
- package/dist/index.cjs +4 -20
- package/dist/index.d.cts +50 -49
- package/dist/index.d.ts +50 -49
- package/dist/index.js +23 -22
- 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 -1
- package/dist/store-reactivity-bindings.cjs.map +1 -1
- package/dist/store-reactivity-bindings.d.cts +1 -1
- package/dist/store-reactivity-bindings.d.ts +1 -1
- package/dist/store-reactivity-bindings.js +1 -1
- package/dist/store-reactivity-bindings.js.map +1 -1
- package/dist/types/Cell.d.cts +4 -9
- package/dist/types/Cell.d.ts +4 -9
- package/dist/types/Column.d.cts +11 -18
- package/dist/types/Column.d.ts +11 -18
- package/dist/types/ColumnDef.d.cts +23 -14
- package/dist/types/ColumnDef.d.ts +23 -14
- package/dist/types/Header.d.cts +5 -10
- package/dist/types/Header.d.ts +5 -10
- package/dist/types/HeaderGroup.d.cts +4 -9
- package/dist/types/HeaderGroup.d.ts +4 -9
- package/dist/types/Row.d.cts +7 -12
- package/dist/types/Row.d.ts +7 -12
- package/dist/types/RowModel.d.cts +12 -28
- package/dist/types/RowModel.d.ts +12 -28
- package/dist/types/RowModelFns.d.cts +6 -11
- package/dist/types/RowModelFns.d.ts +6 -11
- package/dist/types/Table.d.cts +26 -36
- package/dist/types/Table.d.ts +26 -36
- package/dist/types/TableFeatures.d.cts +328 -54
- package/dist/types/TableFeatures.d.ts +328 -54
- package/dist/types/TableOptions.d.cts +22 -17
- package/dist/types/TableOptions.d.ts +22 -17
- package/dist/types/TableState.d.cts +11 -16
- package/dist/types/TableState.d.ts +11 -16
- package/dist/utils.cjs +24 -2
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.d.cts +23 -7
- package/dist/utils.d.ts +23 -7
- package/dist/utils.js +23 -3
- package/dist/utils.js.map +1 -1
- package/package.json +2 -2
- package/skills/column-definitions/SKILL.md +3 -6
- package/skills/column-layout/SKILL.md +0 -2
- package/skills/customizing-feature-behavior/SKILL.md +63 -56
- package/skills/filtering/SKILL.md +60 -42
- package/skills/filtering/references/faceting-and-fuzzy.md +59 -32
- package/skills/grouping/SKILL.md +49 -54
- package/skills/migrate-v8-to-v9/SKILL.md +30 -33
- package/skills/pagination/SKILL.md +22 -20
- package/skills/row-expanding/SKILL.md +33 -25
- package/skills/row-pinning/SKILL.md +11 -7
- package/skills/row-selection/SKILL.md +0 -3
- package/skills/setup/SKILL.md +55 -65
- package/skills/sorting/SKILL.md +21 -21
- package/skills/state-management/SKILL.md +40 -25
- package/src/core/cells/coreCellsFeature.ts +17 -39
- package/src/core/cells/coreCellsFeature.types.ts +6 -6
- package/src/core/columns/constructColumn.ts +6 -0
- package/src/core/columns/coreColumnsFeature.ts +56 -83
- package/src/core/columns/coreColumnsFeature.types.ts +8 -8
- package/src/core/columns/coreColumnsFeature.utils.ts +4 -4
- package/src/core/coreFeatures.ts +1 -1
- package/src/core/headers/buildHeaderGroups.ts +4 -2
- package/src/core/headers/coreHeadersFeature.ts +42 -64
- package/src/core/headers/coreHeadersFeature.types.ts +12 -12
- package/src/core/headers/coreHeadersFeature.utils.ts +1 -1
- package/src/core/row-models/coreRowModelsFeature.ts +43 -64
- package/src/core/row-models/coreRowModelsFeature.types.ts +7 -24
- package/src/core/row-models/coreRowModelsFeature.utils.ts +7 -7
- package/src/core/row-models/createCoreRowModel.ts +7 -6
- package/src/core/rows/constructRow.ts +3 -2
- package/src/core/rows/coreRowsFeature.ts +45 -72
- package/src/core/rows/coreRowsFeature.types.ts +8 -8
- package/src/core/rows/coreRowsFeature.utils.ts +4 -4
- package/src/core/table/constructTable.ts +50 -13
- package/src/core/table/coreTablesFeature.ts +13 -35
- package/src/core/table/coreTablesFeature.types.ts +40 -17
- package/src/core/table/coreTablesFeature.utils.ts +52 -18
- package/src/features/column-faceting/columnFacetingFeature.ts +71 -102
- package/src/features/column-faceting/columnFacetingFeature.types.ts +11 -44
- package/src/features/column-faceting/columnFacetingFeature.utils.ts +6 -6
- package/src/features/column-faceting/createFacetedMinMaxValues.ts +1 -1
- package/src/features/column-faceting/createFacetedRowModel.ts +1 -1
- package/src/features/column-faceting/createFacetedUniqueValues.ts +1 -1
- package/src/features/column-filtering/columnFilteringFeature.ts +61 -103
- package/src/features/column-filtering/columnFilteringFeature.types.ts +55 -39
- package/src/features/column-filtering/columnFilteringFeature.utils.ts +2 -2
- package/src/features/column-filtering/createFilteredRowModel.ts +18 -17
- package/src/features/column-filtering/filterRowsUtils.ts +3 -2
- package/src/features/column-grouping/columnGroupingFeature.ts +83 -126
- package/src/features/column-grouping/columnGroupingFeature.types.ts +42 -34
- package/src/features/column-grouping/columnGroupingFeature.utils.ts +4 -2
- package/src/features/column-grouping/createGroupedRowModel.ts +17 -16
- package/src/features/column-ordering/columnOrderingFeature.ts +52 -84
- package/src/features/column-ordering/columnOrderingFeature.types.ts +2 -2
- package/src/features/column-pinning/columnPinningFeature.ts +268 -304
- package/src/features/column-pinning/columnPinningFeature.types.ts +4 -4
- package/src/features/column-pinning/columnPinningFeature.utils.ts +11 -19
- package/src/features/column-resizing/columnResizingFeature.ts +44 -78
- package/src/features/column-resizing/columnResizingFeature.types.ts +1 -4
- package/src/features/column-resizing/columnResizingFeature.utils.ts +5 -6
- package/src/features/column-sizing/columnSizingFeature.ts +115 -152
- package/src/features/column-sizing/columnSizingFeature.utils.ts +27 -5
- package/src/features/column-visibility/columnVisibilityFeature.ts +92 -129
- package/src/features/column-visibility/columnVisibilityFeature.types.ts +4 -4
- package/src/features/column-visibility/columnVisibilityFeature.utils.ts +31 -15
- package/src/features/global-filtering/globalFilteringFeature.ts +45 -79
- package/src/features/global-filtering/globalFilteringFeature.types.ts +4 -4
- package/src/features/global-filtering/globalFilteringFeature.utils.ts +5 -3
- package/src/features/row-expanding/createExpandedRowModel.ts +1 -1
- package/src/features/row-expanding/rowExpandingFeature.ts +65 -101
- package/src/features/row-expanding/rowExpandingFeature.types.ts +8 -22
- package/src/features/row-expanding/rowExpandingFeature.utils.ts +38 -13
- package/src/features/row-pagination/createPaginatedRowModel.ts +2 -2
- package/src/features/row-pagination/rowPaginationFeature.ts +69 -103
- package/src/features/row-pagination/rowPaginationFeature.types.ts +6 -20
- package/src/features/row-pinning/rowPinningFeature.ts +72 -104
- package/src/features/row-pinning/rowPinningFeature.types.ts +4 -4
- package/src/features/row-selection/rowSelectionFeature.ts +125 -135
- package/src/features/row-selection/rowSelectionFeature.types.ts +17 -7
- package/src/features/row-selection/rowSelectionFeature.utils.ts +144 -66
- package/src/features/row-sorting/createSortedRowModel.ts +12 -15
- package/src/features/row-sorting/rowSortingFeature.ts +73 -114
- package/src/features/row-sorting/rowSortingFeature.types.ts +33 -32
- package/src/features/row-sorting/rowSortingFeature.utils.ts +8 -6
- package/src/fns/aggregationFns.ts +26 -42
- package/src/fns/filterFns.ts +237 -264
- package/src/fns/sortFns.ts +51 -29
- package/src/helpers/columnHelper.ts +4 -4
- package/src/helpers/metaHelper.ts +24 -0
- package/src/helpers/tableFeatures.ts +36 -5
- package/src/index.ts +1 -0
- package/src/store-reactivity-bindings.ts +1 -1
- package/src/types/Cell.ts +5 -21
- package/src/types/Column.ts +12 -26
- package/src/types/ColumnDef.ts +28 -18
- package/src/types/Header.ts +4 -20
- package/src/types/HeaderGroup.ts +7 -18
- package/src/types/Row.ts +6 -21
- package/src/types/RowModel.ts +15 -88
- package/src/types/RowModelFns.ts +9 -24
- package/src/types/Table.ts +54 -44
- package/src/types/TableFeatures.ts +402 -123
- package/src/types/TableOptions.ts +59 -21
- package/src/types/TableState.ts +5 -17
- package/src/utils.ts +40 -8
|
@@ -3,8 +3,7 @@ name: customizing-feature-behavior
|
|
|
3
3
|
description: >
|
|
4
4
|
Override per-column `sortFn`, `filterFn`, `aggregationFn` and table-level
|
|
5
5
|
`globalFilterFn` in TanStack Table v9. Covers built-in `filterFns` / `sortFns` /
|
|
6
|
-
`aggregationFns` registries (
|
|
7
|
-
`createSortedRowModel(sortFns)` / `createGroupedRowModel(aggregationFns)`),
|
|
6
|
+
`aggregationFns` registries (registered as slots on `tableFeatures({...})`),
|
|
8
7
|
authoring custom functions with the `FilterFn` / `SortFn` / `AggregationFn`
|
|
9
8
|
signatures, chaining filter→sort via the `addMeta` callback +
|
|
10
9
|
`row.columnFiltersMeta`, `resolveFilterValue`, `autoRemove`, `invertSorting`,
|
|
@@ -31,7 +30,7 @@ This skill builds on `tanstack-table/state-management`. Read it first for how fe
|
|
|
31
30
|
|
|
32
31
|
v9 customization happens in three places:
|
|
33
32
|
|
|
34
|
-
1. **Built-in function registries** — `filterFns`, `sortFns`, `aggregationFns` —
|
|
33
|
+
1. **Built-in function registries** — `filterFns`, `sortFns`, `aggregationFns` — registered as named slots on `tableFeatures({...})` so unused fns tree-shake away.
|
|
35
34
|
2. **Per-column overrides** — `columnDef.filterFn`, `columnDef.sortFn`, `columnDef.aggregationFn` (string name OR inline function).
|
|
36
35
|
3. **Table-level overrides** — `tableOptions.globalFilterFn`.
|
|
37
36
|
|
|
@@ -50,9 +49,15 @@ import {
|
|
|
50
49
|
filterFns,
|
|
51
50
|
sortFns,
|
|
52
51
|
aggregationFns,
|
|
52
|
+
metaHelper,
|
|
53
53
|
createColumnHelper,
|
|
54
54
|
} from '@tanstack/table-core'
|
|
55
|
-
import type {
|
|
55
|
+
import type {
|
|
56
|
+
FilterFn,
|
|
57
|
+
SortFn,
|
|
58
|
+
AggregationFn,
|
|
59
|
+
TableFeatures,
|
|
60
|
+
} from '@tanstack/table-core'
|
|
56
61
|
import {
|
|
57
62
|
rankItem,
|
|
58
63
|
compareItems,
|
|
@@ -67,25 +72,15 @@ type Person = {
|
|
|
67
72
|
status: 'single' | 'complicated' | 'relationship'
|
|
68
73
|
}
|
|
69
74
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
globalFilteringFeature,
|
|
74
|
-
columnGroupingFeature,
|
|
75
|
-
rowExpandingFeature,
|
|
76
|
-
})
|
|
77
|
-
|
|
78
|
-
// Module augmentation registers custom fn names so columnDef.filterFn typechecks.
|
|
79
|
-
declare module '@tanstack/table-core' {
|
|
80
|
-
interface FilterFns {
|
|
81
|
-
fuzzy: FilterFn<typeof features, Person>
|
|
82
|
-
}
|
|
83
|
-
interface FilterMeta {
|
|
84
|
-
itemRank?: RankingInfo
|
|
85
|
-
}
|
|
75
|
+
// 1. Describe meta shape for the fuzzy filter.
|
|
76
|
+
interface FuzzyFilterMeta {
|
|
77
|
+
itemRank?: RankingInfo
|
|
86
78
|
}
|
|
87
79
|
|
|
88
|
-
|
|
80
|
+
// 2. Extend TableFeatures so FilterFn / SortFn can reference filterMeta types.
|
|
81
|
+
type FuzzyFeatures = TableFeatures & { filterMeta: FuzzyFilterMeta }
|
|
82
|
+
|
|
83
|
+
const fuzzyFilter: FilterFn<FuzzyFeatures, Person> = (
|
|
89
84
|
row,
|
|
90
85
|
columnId,
|
|
91
86
|
value,
|
|
@@ -96,11 +91,28 @@ const fuzzyFilter: FilterFn<typeof features, Person> = (
|
|
|
96
91
|
return itemRank.passed
|
|
97
92
|
}
|
|
98
93
|
|
|
94
|
+
// 3. Register everything on features — fn registries are named slots.
|
|
95
|
+
const features = tableFeatures({
|
|
96
|
+
rowSortingFeature,
|
|
97
|
+
columnFilteringFeature,
|
|
98
|
+
globalFilteringFeature,
|
|
99
|
+
columnGroupingFeature,
|
|
100
|
+
rowExpandingFeature,
|
|
101
|
+
filteredRowModel: createFilteredRowModel(),
|
|
102
|
+
sortedRowModel: createSortedRowModel(),
|
|
103
|
+
groupedRowModel: createGroupedRowModel(),
|
|
104
|
+
expandedRowModel: createExpandedRowModel(),
|
|
105
|
+
filterFns: { ...filterFns, fuzzy: fuzzyFilter }, // keep built-ins + add custom
|
|
106
|
+
sortFns,
|
|
107
|
+
aggregationFns,
|
|
108
|
+
filterMeta: metaHelper<FuzzyFilterMeta>(),
|
|
109
|
+
})
|
|
110
|
+
|
|
99
111
|
const columnHelper = createColumnHelper<typeof features, Person>()
|
|
100
112
|
|
|
101
113
|
const columns = columnHelper.columns([
|
|
102
114
|
columnHelper.accessor('firstName', {
|
|
103
|
-
filterFn: 'fuzzy', // ←
|
|
115
|
+
filterFn: 'fuzzy', // ← string ref typechecks because 'fuzzy' is in features.filterFns
|
|
104
116
|
sortFn: 'alphanumeric',
|
|
105
117
|
}),
|
|
106
118
|
columnHelper.accessor('revenue', {
|
|
@@ -111,15 +123,6 @@ const columns = columnHelper.columns([
|
|
|
111
123
|
|
|
112
124
|
const table = constructTable({
|
|
113
125
|
features,
|
|
114
|
-
rowModels: {
|
|
115
|
-
filteredRowModel: createFilteredRowModel({
|
|
116
|
-
...filterFns, // keep built-ins
|
|
117
|
-
fuzzy: fuzzyFilter, // add custom
|
|
118
|
-
}),
|
|
119
|
-
sortedRowModel: createSortedRowModel(sortFns),
|
|
120
|
-
groupedRowModel: createGroupedRowModel(aggregationFns),
|
|
121
|
-
expandedRowModel: createExpandedRowModel(),
|
|
122
|
-
},
|
|
123
126
|
columns,
|
|
124
127
|
data,
|
|
125
128
|
globalFilterFn: 'fuzzy',
|
|
@@ -198,12 +201,16 @@ const weightedMean: AggregationFn<typeof features, Person> = (
|
|
|
198
201
|
return totalWeight === 0 ? 0 : weightedSum / totalWeight
|
|
199
202
|
}
|
|
200
203
|
|
|
204
|
+
const customFeatures = tableFeatures({
|
|
205
|
+
columnGroupingFeature,
|
|
206
|
+
rowExpandingFeature,
|
|
207
|
+
groupedRowModel: createGroupedRowModel(),
|
|
208
|
+
expandedRowModel: createExpandedRowModel(),
|
|
209
|
+
aggregationFns: { ...aggregationFns, weightedMean },
|
|
210
|
+
})
|
|
211
|
+
|
|
201
212
|
const table = constructTable({
|
|
202
|
-
features,
|
|
203
|
-
rowModels: {
|
|
204
|
-
groupedRowModel: createGroupedRowModel({ ...aggregationFns, weightedMean }),
|
|
205
|
-
expandedRowModel: createExpandedRowModel(),
|
|
206
|
-
},
|
|
213
|
+
features: customFeatures,
|
|
207
214
|
columns: columnHelper.columns([
|
|
208
215
|
columnHelper.accessor('revenue', {
|
|
209
216
|
aggregationFn: 'weightedMean',
|
|
@@ -221,13 +228,15 @@ const table = constructTable({
|
|
|
221
228
|
Wrong:
|
|
222
229
|
|
|
223
230
|
```ts
|
|
224
|
-
// "fuzzy" string never registered
|
|
231
|
+
// "fuzzy" string never registered in features.filterFns
|
|
232
|
+
const features = tableFeatures({
|
|
233
|
+
columnFilteringFeature,
|
|
234
|
+
filteredRowModel: createFilteredRowModel(),
|
|
235
|
+
filterFns, // ❌ built-ins only — no fuzzy
|
|
236
|
+
})
|
|
225
237
|
const table = useTable({
|
|
226
238
|
features,
|
|
227
239
|
columns: [columnHelper.accessor('fullName', { filterFn: 'fuzzy' })],
|
|
228
|
-
rowModels: {
|
|
229
|
-
filteredRowModel: createFilteredRowModel(filterFns), // ❌ no fuzzy
|
|
230
|
-
},
|
|
231
240
|
data,
|
|
232
241
|
})
|
|
233
242
|
```
|
|
@@ -235,13 +244,7 @@ const table = useTable({
|
|
|
235
244
|
Correct:
|
|
236
245
|
|
|
237
246
|
```ts
|
|
238
|
-
|
|
239
|
-
interface FilterFns {
|
|
240
|
-
fuzzy: FilterFn<typeof features, Person>
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
const fuzzyFilter: FilterFn<typeof features, Person> = (
|
|
247
|
+
const fuzzyFilter: FilterFn<FuzzyFeatures, Person> = (
|
|
245
248
|
row,
|
|
246
249
|
columnId,
|
|
247
250
|
value,
|
|
@@ -252,20 +255,21 @@ const fuzzyFilter: FilterFn<typeof features, Person> = (
|
|
|
252
255
|
return itemRank.passed
|
|
253
256
|
}
|
|
254
257
|
|
|
258
|
+
const features = tableFeatures({
|
|
259
|
+
columnFilteringFeature,
|
|
260
|
+
filteredRowModel: createFilteredRowModel(),
|
|
261
|
+
filterFns: { ...filterFns, fuzzy: fuzzyFilter }, // ✅ registered
|
|
262
|
+
filterMeta: metaHelper<FuzzyFilterMeta>(),
|
|
263
|
+
})
|
|
264
|
+
|
|
255
265
|
const table = useTable({
|
|
256
266
|
features,
|
|
257
267
|
columns: [columnHelper.accessor('fullName', { filterFn: 'fuzzy' })],
|
|
258
|
-
rowModels: {
|
|
259
|
-
filteredRowModel: createFilteredRowModel({
|
|
260
|
-
...filterFns,
|
|
261
|
-
fuzzy: fuzzyFilter,
|
|
262
|
-
}),
|
|
263
|
-
},
|
|
264
268
|
data,
|
|
265
269
|
})
|
|
266
270
|
```
|
|
267
271
|
|
|
268
|
-
String values are looked up in `
|
|
272
|
+
String values are looked up in `features.filterFns`. Unregistered names log `Could not find a valid 'column.filterFn' …` in dev and silently no-op in prod.
|
|
269
273
|
|
|
270
274
|
Source: examples/react/filters-fuzzy/src/main.tsx; packages/table-core/src/features/column-filtering/columnFilteringFeature.utils.ts
|
|
271
275
|
|
|
@@ -399,8 +403,11 @@ Correct:
|
|
|
399
403
|
|
|
400
404
|
```ts
|
|
401
405
|
const table = useTable({
|
|
402
|
-
features: tableFeatures({
|
|
403
|
-
|
|
406
|
+
features: tableFeatures({
|
|
407
|
+
rowSortingFeature,
|
|
408
|
+
sortedRowModel: createSortedRowModel(),
|
|
409
|
+
sortFns,
|
|
410
|
+
}),
|
|
404
411
|
columns,
|
|
405
412
|
data,
|
|
406
413
|
})
|
|
@@ -3,7 +3,7 @@ name: filtering
|
|
|
3
3
|
description: >
|
|
4
4
|
Filter rows in TanStack Table v9 with the `filteredRowModel` pipeline stage.
|
|
5
5
|
Covers `columnFilteringFeature` + `globalFilteringFeature` + `columnFacetingFeature`,
|
|
6
|
-
`createFilteredRowModel(filterFns)
|
|
6
|
+
`createFilteredRowModel()` (registered on `features` with `filterFns` slot), `createFacetedRowModel()` /
|
|
7
7
|
`createFacetedUniqueValues()` / `createFacetedMinMaxValues()`, fuzzy filtering
|
|
8
8
|
with `@tanstack/match-sorter-utils`, the built-in `filterFns` registry, custom
|
|
9
9
|
`filterFn` + module augmentation, `state.columnFilters` (Array<{ id, value }>),
|
|
@@ -36,13 +36,13 @@ This skill builds on `tanstack-table/state-management` and `tanstack-table/custo
|
|
|
36
36
|
|
|
37
37
|
Filtering has five subsystems in v9 — register only the features you need:
|
|
38
38
|
|
|
39
|
-
| Subsystem | Feature | Row-model
|
|
40
|
-
| ---------------- | ------------------------ |
|
|
41
|
-
| column-filtering | `columnFilteringFeature` | `createFilteredRowModel(
|
|
42
|
-
| global-filtering | `globalFilteringFeature` | (same `filteredRowModel`)
|
|
43
|
-
| column-faceting | `columnFacetingFeature` | `createFacetedRowModel()` + helpers
|
|
44
|
-
| global-faceting | `globalFacetingFeature` | global versions of the helpers
|
|
45
|
-
| fuzzy-filtering | (custom filterFn) | `@tanstack/match-sorter-utils`
|
|
39
|
+
| Subsystem | Feature | Row-model |
|
|
40
|
+
| ---------------- | ------------------------ | --------------------------------------------- |
|
|
41
|
+
| column-filtering | `columnFilteringFeature` | `createFilteredRowModel()` + `filterFns` slot |
|
|
42
|
+
| global-filtering | `globalFilteringFeature` | (same `filteredRowModel`) |
|
|
43
|
+
| column-faceting | `columnFacetingFeature` | `createFacetedRowModel()` + helpers |
|
|
44
|
+
| global-faceting | `globalFacetingFeature` | global versions of the helpers |
|
|
45
|
+
| fuzzy-filtering | (custom filterFn) | `@tanstack/match-sorter-utils` |
|
|
46
46
|
|
|
47
47
|
```ts
|
|
48
48
|
import {
|
|
@@ -60,14 +60,13 @@ const features = tableFeatures({
|
|
|
60
60
|
columnFilteringFeature,
|
|
61
61
|
globalFilteringFeature,
|
|
62
62
|
rowPaginationFeature,
|
|
63
|
+
filteredRowModel: createFilteredRowModel(),
|
|
64
|
+
paginatedRowModel: createPaginatedRowModel(),
|
|
65
|
+
filterFns,
|
|
63
66
|
})
|
|
64
67
|
|
|
65
68
|
const table = constructTable({
|
|
66
69
|
features,
|
|
67
|
-
rowModels: {
|
|
68
|
-
filteredRowModel: createFilteredRowModel(filterFns),
|
|
69
|
-
paginatedRowModel: createPaginatedRowModel(),
|
|
70
|
-
},
|
|
71
70
|
columns,
|
|
72
71
|
data,
|
|
73
72
|
initialState: {
|
|
@@ -130,7 +129,7 @@ function Filter({ column }) {
|
|
|
130
129
|
|
|
131
130
|
### Faceted filter UIs and fuzzy global search
|
|
132
131
|
|
|
133
|
-
Faceting requires `createFacetedRowModel()` as the base plus `createFacetedUniqueValues()` / `createFacetedMinMaxValues()
|
|
132
|
+
Faceting requires `createFacetedRowModel()` as the base plus `createFacetedUniqueValues()` / `createFacetedMinMaxValues()` — all registered on the `features` object; fuzzy filtering wires a custom `FilterFn` backed by `@tanstack/match-sorter-utils` (`rankItem` / `compareItems`) with the `filterFns` registry slot and `filterMeta` slot for type-safe meta. Full examples in [faceting-and-fuzzy.md](references/faceting-and-fuzzy.md).
|
|
134
133
|
|
|
135
134
|
### Server-side filtering
|
|
136
135
|
|
|
@@ -143,7 +142,7 @@ const { data } = useQuery({
|
|
|
143
142
|
})
|
|
144
143
|
const table = useTable({
|
|
145
144
|
features: tableFeatures({ columnFilteringFeature }),
|
|
146
|
-
|
|
145
|
+
// no filteredRowModel registered — server filters
|
|
147
146
|
data,
|
|
148
147
|
columns,
|
|
149
148
|
manualFiltering: true,
|
|
@@ -155,12 +154,15 @@ const table = useTable({
|
|
|
155
154
|
### Filter tree data and keep matching descendants visible
|
|
156
155
|
|
|
157
156
|
```ts
|
|
157
|
+
const features = tableFeatures({
|
|
158
|
+
columnFilteringFeature,
|
|
159
|
+
rowExpandingFeature,
|
|
160
|
+
filteredRowModel: createFilteredRowModel(),
|
|
161
|
+
expandedRowModel: createExpandedRowModel(),
|
|
162
|
+
filterFns,
|
|
163
|
+
})
|
|
158
164
|
const table = constructTable({
|
|
159
|
-
features
|
|
160
|
-
rowModels: {
|
|
161
|
-
filteredRowModel: createFilteredRowModel(filterFns),
|
|
162
|
-
expandedRowModel: createExpandedRowModel(),
|
|
163
|
-
},
|
|
165
|
+
features,
|
|
164
166
|
columns,
|
|
165
167
|
data,
|
|
166
168
|
getSubRows: (r) => r.subRows,
|
|
@@ -176,13 +178,15 @@ Wrong:
|
|
|
176
178
|
|
|
177
179
|
```tsx
|
|
178
180
|
const table = useTable({
|
|
179
|
-
features: tableFeatures({
|
|
180
|
-
|
|
181
|
-
|
|
181
|
+
features: tableFeatures({
|
|
182
|
+
columnFacetingFeature,
|
|
183
|
+
columnFilteringFeature,
|
|
184
|
+
filteredRowModel: createFilteredRowModel(),
|
|
182
185
|
// BUG: missing facetedRowModel
|
|
183
186
|
facetedUniqueValues: createFacetedUniqueValues(),
|
|
184
187
|
facetedMinMaxValues: createFacetedMinMaxValues(),
|
|
185
|
-
|
|
188
|
+
filterFns,
|
|
189
|
+
}),
|
|
186
190
|
columns,
|
|
187
191
|
data,
|
|
188
192
|
})
|
|
@@ -196,14 +200,13 @@ const table = useTable({
|
|
|
196
200
|
columnFacetingFeature,
|
|
197
201
|
columnFilteringFeature,
|
|
198
202
|
rowPaginationFeature,
|
|
199
|
-
|
|
200
|
-
rowModels: {
|
|
201
|
-
filteredRowModel: createFilteredRowModel(filterFns),
|
|
203
|
+
filteredRowModel: createFilteredRowModel(),
|
|
202
204
|
paginatedRowModel: createPaginatedRowModel(),
|
|
203
205
|
facetedRowModel: createFacetedRowModel(), // REQUIRED base
|
|
204
206
|
facetedMinMaxValues: createFacetedMinMaxValues(),
|
|
205
207
|
facetedUniqueValues: createFacetedUniqueValues(),
|
|
206
|
-
|
|
208
|
+
filterFns,
|
|
209
|
+
}),
|
|
207
210
|
columns,
|
|
208
211
|
data,
|
|
209
212
|
})
|
|
@@ -220,8 +223,11 @@ Wrong:
|
|
|
220
223
|
```tsx
|
|
221
224
|
// manualFiltering bypasses the filteredRowModel — filter UI changes do nothing
|
|
222
225
|
const table = useTable({
|
|
223
|
-
features: tableFeatures({
|
|
224
|
-
|
|
226
|
+
features: tableFeatures({
|
|
227
|
+
columnFilteringFeature,
|
|
228
|
+
filteredRowModel: createFilteredRowModel(),
|
|
229
|
+
filterFns,
|
|
230
|
+
}),
|
|
225
231
|
data,
|
|
226
232
|
columns,
|
|
227
233
|
manualFiltering: true,
|
|
@@ -241,7 +247,7 @@ const { data } = useQuery({
|
|
|
241
247
|
|
|
242
248
|
const table = useTable({
|
|
243
249
|
features: tableFeatures({ columnFilteringFeature }),
|
|
244
|
-
|
|
250
|
+
// no filteredRowModel registered for manual mode
|
|
245
251
|
data,
|
|
246
252
|
columns,
|
|
247
253
|
manualFiltering: true,
|
|
@@ -260,9 +266,11 @@ Wrong:
|
|
|
260
266
|
|
|
261
267
|
```tsx
|
|
262
268
|
// drops the built-in registry
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
269
|
+
const features = tableFeatures({
|
|
270
|
+
columnFilteringFeature,
|
|
271
|
+
filteredRowModel: createFilteredRowModel(),
|
|
272
|
+
filterFns: { fuzzy: fuzzyFilter }, // BUG: drops built-ins
|
|
273
|
+
})
|
|
266
274
|
// Column with filterFn: 'includesString' now warns and never filters
|
|
267
275
|
```
|
|
268
276
|
|
|
@@ -271,13 +279,17 @@ Correct:
|
|
|
271
279
|
```tsx
|
|
272
280
|
import { filterFns } from '@tanstack/react-table'
|
|
273
281
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
282
|
+
const features = tableFeatures({
|
|
283
|
+
columnFilteringFeature,
|
|
284
|
+
filteredRowModel: createFilteredRowModel(),
|
|
285
|
+
filterFns: {
|
|
286
|
+
...filterFns, // KEEP built-ins
|
|
287
|
+
fuzzy: fuzzyFilter, // ADD custom
|
|
288
|
+
},
|
|
289
|
+
})
|
|
278
290
|
```
|
|
279
291
|
|
|
280
|
-
`
|
|
292
|
+
The `filterFns` slot replaces the registry with whatever you provide. Any column using a built-in name like `'includesString'` becomes a no-op if the built-ins are dropped.
|
|
281
293
|
|
|
282
294
|
Source: examples/react/filters-fuzzy/src/main.tsx
|
|
283
295
|
|
|
@@ -298,8 +310,11 @@ Correct:
|
|
|
298
310
|
|
|
299
311
|
```tsx
|
|
300
312
|
const table = useTable({
|
|
301
|
-
features: tableFeatures({
|
|
302
|
-
|
|
313
|
+
features: tableFeatures({
|
|
314
|
+
globalFilteringFeature,
|
|
315
|
+
filteredRowModel: createFilteredRowModel(),
|
|
316
|
+
filterFns,
|
|
317
|
+
}),
|
|
303
318
|
columns,
|
|
304
319
|
data,
|
|
305
320
|
globalFilterFn: 'includesString',
|
|
@@ -333,8 +348,11 @@ Correct:
|
|
|
333
348
|
|
|
334
349
|
```ts
|
|
335
350
|
const table = useTable({
|
|
336
|
-
features: tableFeatures({
|
|
337
|
-
|
|
351
|
+
features: tableFeatures({
|
|
352
|
+
columnFilteringFeature,
|
|
353
|
+
filteredRowModel: createFilteredRowModel(),
|
|
354
|
+
filterFns,
|
|
355
|
+
}),
|
|
338
356
|
columns,
|
|
339
357
|
data,
|
|
340
358
|
})
|
|
@@ -16,17 +16,16 @@ const features = tableFeatures({
|
|
|
16
16
|
columnFacetingFeature,
|
|
17
17
|
columnFilteringFeature,
|
|
18
18
|
rowPaginationFeature,
|
|
19
|
+
filteredRowModel: createFilteredRowModel(),
|
|
20
|
+
paginatedRowModel: createPaginatedRowModel(),
|
|
21
|
+
facetedRowModel: createFacetedRowModel(), // REQUIRED base
|
|
22
|
+
facetedMinMaxValues: createFacetedMinMaxValues(),
|
|
23
|
+
facetedUniqueValues: createFacetedUniqueValues(),
|
|
24
|
+
filterFns,
|
|
19
25
|
})
|
|
20
26
|
|
|
21
27
|
const table = constructTable({
|
|
22
28
|
features,
|
|
23
|
-
rowModels: {
|
|
24
|
-
filteredRowModel: createFilteredRowModel(filterFns),
|
|
25
|
-
paginatedRowModel: createPaginatedRowModel(),
|
|
26
|
-
facetedRowModel: createFacetedRowModel(), // REQUIRED base
|
|
27
|
-
facetedMinMaxValues: createFacetedMinMaxValues(),
|
|
28
|
-
facetedUniqueValues: createFacetedUniqueValues(),
|
|
29
|
-
},
|
|
30
29
|
columns,
|
|
31
30
|
data,
|
|
32
31
|
})
|
|
@@ -44,18 +43,28 @@ import {
|
|
|
44
43
|
compareItems,
|
|
45
44
|
type RankingInfo,
|
|
46
45
|
} from '@tanstack/match-sorter-utils'
|
|
47
|
-
import
|
|
46
|
+
import {
|
|
47
|
+
tableFeatures,
|
|
48
|
+
columnFilteringFeature,
|
|
49
|
+
globalFilteringFeature,
|
|
50
|
+
rowSortingFeature,
|
|
51
|
+
createFilteredRowModel,
|
|
52
|
+
createSortedRowModel,
|
|
53
|
+
filterFns,
|
|
54
|
+
sortFns,
|
|
55
|
+
metaHelper,
|
|
56
|
+
} from '@tanstack/table-core'
|
|
57
|
+
import type { FilterFn, SortFn, TableFeatures } from '@tanstack/table-core'
|
|
48
58
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
53
|
-
interface FilterMeta {
|
|
54
|
-
itemRank?: RankingInfo
|
|
55
|
-
}
|
|
59
|
+
// 1. Describe the filterMeta shape for this feature set.
|
|
60
|
+
interface FuzzyFilterMeta {
|
|
61
|
+
itemRank?: RankingInfo
|
|
56
62
|
}
|
|
57
63
|
|
|
58
|
-
|
|
64
|
+
// 2. Extend TableFeatures so FilterFn / SortFn can read filterMeta types.
|
|
65
|
+
type FuzzyFeatures = TableFeatures & { filterMeta: FuzzyFilterMeta }
|
|
66
|
+
|
|
67
|
+
const fuzzyFilter: FilterFn<FuzzyFeatures, Person> = (
|
|
59
68
|
row,
|
|
60
69
|
columnId,
|
|
61
70
|
value,
|
|
@@ -66,7 +75,7 @@ const fuzzyFilter: FilterFn<typeof features, Person> = (
|
|
|
66
75
|
return itemRank.passed
|
|
67
76
|
}
|
|
68
77
|
|
|
69
|
-
const fuzzySort: SortFn<
|
|
78
|
+
const fuzzySort: SortFn<FuzzyFeatures, Person> = (rowA, rowB, columnId) => {
|
|
70
79
|
let dir = 0
|
|
71
80
|
if (rowA.columnFiltersMeta[columnId]) {
|
|
72
81
|
dir = compareItems(
|
|
@@ -77,21 +86,35 @@ const fuzzySort: SortFn<typeof features, Person> = (rowA, rowB, columnId) => {
|
|
|
77
86
|
return dir === 0 ? sortFns.alphanumeric(rowA, rowB, columnId) : dir
|
|
78
87
|
}
|
|
79
88
|
|
|
89
|
+
// 3. Register everything on features — no rowModels option needed.
|
|
90
|
+
const features = tableFeatures({
|
|
91
|
+
columnFilteringFeature,
|
|
92
|
+
globalFilteringFeature,
|
|
93
|
+
rowSortingFeature,
|
|
94
|
+
filteredRowModel: createFilteredRowModel(),
|
|
95
|
+
sortedRowModel: createSortedRowModel(),
|
|
96
|
+
filterFns: { ...filterFns, fuzzy: fuzzyFilter },
|
|
97
|
+
sortFns: { ...sortFns, fuzzy: fuzzySort },
|
|
98
|
+
filterMeta: metaHelper<FuzzyFilterMeta>(),
|
|
99
|
+
})
|
|
100
|
+
|
|
80
101
|
const table = constructTable({
|
|
81
102
|
features,
|
|
82
|
-
rowModels: {
|
|
83
|
-
filteredRowModel: createFilteredRowModel({
|
|
84
|
-
...filterFns,
|
|
85
|
-
fuzzy: fuzzyFilter,
|
|
86
|
-
}),
|
|
87
|
-
sortedRowModel: createSortedRowModel(sortFns),
|
|
88
|
-
},
|
|
89
103
|
columns,
|
|
90
104
|
data,
|
|
91
105
|
globalFilterFn: 'fuzzy',
|
|
92
106
|
})
|
|
93
107
|
```
|
|
94
108
|
|
|
109
|
+
Use string refs in column defs when the fn is registered:
|
|
110
|
+
|
|
111
|
+
```ts
|
|
112
|
+
columnHelper.accessor('fullName', {
|
|
113
|
+
filterFn: 'fuzzy', // string ref — typechecks because 'fuzzy' is in features.filterFns
|
|
114
|
+
sortFn: 'fuzzy',
|
|
115
|
+
})
|
|
116
|
+
```
|
|
117
|
+
|
|
95
118
|
## Additional MEDIUM-priority failure modes
|
|
96
119
|
|
|
97
120
|
### Using `state.columnFilters` AND `initialState.columnFilters` simultaneously
|
|
@@ -131,11 +154,13 @@ Wrong:
|
|
|
131
154
|
```tsx
|
|
132
155
|
// filterFromLeafRows hides children that don't match individually
|
|
133
156
|
const table = useTable({
|
|
134
|
-
features: tableFeatures({
|
|
135
|
-
|
|
136
|
-
|
|
157
|
+
features: tableFeatures({
|
|
158
|
+
columnFilteringFeature,
|
|
159
|
+
rowExpandingFeature,
|
|
160
|
+
filteredRowModel: createFilteredRowModel(),
|
|
137
161
|
expandedRowModel: createExpandedRowModel(),
|
|
138
|
-
|
|
162
|
+
filterFns,
|
|
163
|
+
}),
|
|
139
164
|
columns,
|
|
140
165
|
data,
|
|
141
166
|
getSubRows: (r) => r.subRows,
|
|
@@ -150,11 +175,13 @@ Correct:
|
|
|
150
175
|
```tsx
|
|
151
176
|
// Filter root-only to preserve all sub-rows under a matching parent
|
|
152
177
|
const table = useTable({
|
|
153
|
-
features: tableFeatures({
|
|
154
|
-
|
|
155
|
-
|
|
178
|
+
features: tableFeatures({
|
|
179
|
+
columnFilteringFeature,
|
|
180
|
+
rowExpandingFeature,
|
|
181
|
+
filteredRowModel: createFilteredRowModel(),
|
|
156
182
|
expandedRowModel: createExpandedRowModel(),
|
|
157
|
-
|
|
183
|
+
filterFns,
|
|
184
|
+
}),
|
|
158
185
|
columns,
|
|
159
186
|
data,
|
|
160
187
|
getSubRows: (r) => r.subRows,
|