@tanstack/table-core 9.0.0-alpha.0 → 9.0.0-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/core/cells/constructCell.d.ts +7 -0
- package/dist/esm/core/cells/constructCell.js +21 -0
- package/dist/esm/core/cells/constructCell.js.map +1 -0
- package/dist/esm/core/cells/coreCellsFeature.d.ts +10 -0
- package/dist/esm/core/cells/coreCellsFeature.js +26 -0
- package/dist/esm/core/cells/coreCellsFeature.js.map +1 -0
- package/dist/esm/core/cells/coreCellsFeature.types.d.ts +52 -0
- package/dist/esm/core/cells/coreCellsFeature.utils.d.ts +13 -0
- package/dist/esm/core/cells/coreCellsFeature.utils.js +23 -0
- package/dist/esm/core/cells/coreCellsFeature.utils.js.map +1 -0
- package/dist/esm/core/columns/constructColumn.d.ts +6 -0
- package/dist/esm/core/columns/constructColumn.js +60 -0
- package/dist/esm/core/columns/constructColumn.js.map +1 -0
- package/dist/esm/core/columns/coreColumnsFeature.d.ts +10 -0
- package/dist/esm/core/columns/coreColumnsFeature.js +61 -0
- package/dist/esm/core/columns/coreColumnsFeature.js.map +1 -0
- package/dist/esm/core/columns/coreColumnsFeature.types.d.ts +84 -0
- package/dist/esm/core/columns/coreColumnsFeature.utils.d.ts +13 -0
- package/dist/esm/core/columns/coreColumnsFeature.utils.js +91 -0
- package/dist/esm/core/columns/coreColumnsFeature.utils.js.map +1 -0
- package/dist/esm/core/coreFeatures.d.ts +15 -0
- package/dist/esm/core/coreFeatures.js +18 -0
- package/dist/esm/core/coreFeatures.js.map +1 -0
- package/dist/esm/core/headers/buildHeaderGroups.d.ts +6 -0
- package/dist/esm/core/headers/buildHeaderGroups.js +99 -0
- package/dist/esm/core/headers/buildHeaderGroups.js.map +1 -0
- package/dist/esm/core/headers/constructHeader.d.ts +12 -0
- package/dist/esm/core/headers/constructHeader.js +28 -0
- package/dist/esm/core/headers/constructHeader.js.map +1 -0
- package/dist/esm/core/headers/coreHeadersFeature.d.ts +10 -0
- package/dist/esm/core/headers/coreHeadersFeature.js +68 -0
- package/dist/esm/core/headers/coreHeadersFeature.js.map +1 -0
- package/dist/esm/core/headers/coreHeadersFeature.types.d.ts +99 -0
- package/dist/esm/core/headers/coreHeadersFeature.utils.d.ts +15 -0
- package/dist/esm/core/headers/coreHeadersFeature.utils.js +85 -0
- package/dist/esm/core/headers/coreHeadersFeature.utils.js.map +1 -0
- package/dist/esm/core/row-models/coreRowModelsFeature.d.ts +10 -0
- package/dist/esm/core/row-models/coreRowModelsFeature.js +52 -0
- package/dist/esm/core/row-models/coreRowModelsFeature.js.map +1 -0
- package/dist/esm/core/row-models/coreRowModelsFeature.types.d.ts +39 -0
- package/dist/esm/core/row-models/coreRowModelsFeature.utils.d.ts +16 -0
- package/dist/esm/core/row-models/coreRowModelsFeature.utils.js +85 -0
- package/dist/esm/core/row-models/coreRowModelsFeature.utils.js.map +1 -0
- package/dist/esm/core/row-models/createCoreRowModel.d.ts +5 -0
- package/dist/esm/core/row-models/createCoreRowModel.js +54 -0
- package/dist/esm/core/row-models/createCoreRowModel.js.map +1 -0
- package/dist/esm/core/rows/constructRow.d.ts +5 -0
- package/dist/esm/core/rows/constructRow.js +29 -0
- package/dist/esm/core/rows/constructRow.js.map +1 -0
- package/dist/esm/core/rows/coreRowsFeature.d.ts +10 -0
- package/dist/esm/core/rows/coreRowsFeature.js +52 -0
- package/dist/esm/core/rows/coreRowsFeature.js.map +1 -0
- package/dist/esm/core/rows/coreRowsFeature.types.d.ts +91 -0
- package/dist/esm/core/rows/coreRowsFeature.utils.d.ts +15 -0
- package/dist/esm/core/rows/coreRowsFeature.utils.js +94 -0
- package/dist/esm/core/rows/coreRowsFeature.utils.js.map +1 -0
- package/dist/esm/core/table/constructTable.d.ts +9 -0
- package/dist/esm/core/table/constructTable.js +65 -0
- package/dist/esm/core/table/constructTable.js.map +1 -0
- package/dist/esm/core/table/coreTablesFeature.d.ts +10 -0
- package/dist/esm/core/table/coreTablesFeature.js +22 -0
- package/dist/esm/core/table/coreTablesFeature.js.map +1 -0
- package/dist/esm/core/table/coreTablesFeature.types.d.ts +105 -0
- package/dist/esm/core/table/coreTablesFeature.utils.d.ts +7 -0
- package/dist/esm/core/table/coreTablesFeature.utils.js +23 -0
- package/dist/esm/core/table/coreTablesFeature.utils.js.map +1 -0
- package/dist/esm/features/column-faceting/columnFacetingFeature.d.ts +10 -0
- package/dist/esm/features/column-faceting/columnFacetingFeature.js +80 -0
- package/dist/esm/features/column-faceting/columnFacetingFeature.js.map +1 -0
- package/dist/esm/features/column-faceting/columnFacetingFeature.types.d.ts +68 -0
- package/dist/esm/features/column-faceting/columnFacetingFeature.utils.d.ts +11 -0
- package/dist/esm/features/column-faceting/columnFacetingFeature.utils.js +33 -0
- package/dist/esm/features/column-faceting/columnFacetingFeature.utils.js.map +1 -0
- package/dist/esm/features/column-faceting/createFacetedMinMaxValues.d.ts +4 -0
- package/dist/esm/features/column-faceting/createFacetedMinMaxValues.js +41 -0
- package/dist/esm/features/column-faceting/createFacetedMinMaxValues.js.map +1 -0
- package/dist/esm/features/column-faceting/createFacetedRowModel.d.ts +5 -0
- package/dist/esm/features/column-faceting/createFacetedRowModel.js +47 -0
- package/dist/esm/features/column-faceting/createFacetedRowModel.js.map +1 -0
- package/dist/esm/features/column-faceting/createFacetedUniqueValues.d.ts +4 -0
- package/dist/esm/features/column-faceting/createFacetedUniqueValues.js +46 -0
- package/dist/esm/features/column-faceting/createFacetedUniqueValues.js.map +1 -0
- package/dist/esm/features/column-filtering/columnFilteringFeature.d.ts +11 -0
- package/dist/esm/features/column-filtering/columnFilteringFeature.js +69 -0
- package/dist/esm/features/column-filtering/columnFilteringFeature.js.map +1 -0
- package/dist/esm/features/column-filtering/columnFilteringFeature.types.d.ts +145 -0
- package/dist/esm/features/column-filtering/columnFilteringFeature.utils.d.ts +16 -0
- package/dist/esm/features/column-filtering/columnFilteringFeature.utils.js +118 -0
- package/dist/esm/features/column-filtering/columnFilteringFeature.utils.js.map +1 -0
- package/dist/esm/features/column-filtering/createFilteredRowModel.d.ts +6 -0
- package/dist/esm/features/column-filtering/createFilteredRowModel.js +110 -0
- package/dist/esm/features/column-filtering/createFilteredRowModel.js.map +1 -0
- package/dist/esm/features/column-filtering/filterRowsUtils.d.ts +6 -0
- package/dist/esm/{utils → features/column-filtering}/filterRowsUtils.js +15 -19
- package/dist/esm/features/column-filtering/filterRowsUtils.js.map +1 -0
- package/dist/esm/features/column-grouping/columnGroupingFeature.d.ts +10 -0
- package/dist/esm/features/column-grouping/columnGroupingFeature.js +91 -0
- package/dist/esm/features/column-grouping/columnGroupingFeature.js.map +1 -0
- package/dist/esm/features/column-grouping/columnGroupingFeature.types.d.ts +153 -0
- package/dist/esm/features/column-grouping/columnGroupingFeature.utils.d.ts +22 -0
- package/dist/esm/features/column-grouping/columnGroupingFeature.utils.js +99 -0
- package/dist/esm/features/column-grouping/columnGroupingFeature.utils.js.map +1 -0
- package/dist/esm/features/column-grouping/createGroupedRowModel.d.ts +6 -0
- package/dist/esm/features/column-grouping/createGroupedRowModel.js +144 -0
- package/dist/esm/features/column-grouping/createGroupedRowModel.js.map +1 -0
- package/dist/esm/features/column-ordering/columnOrderingFeature.d.ts +10 -0
- package/dist/esm/features/column-ordering/columnOrderingFeature.js +60 -0
- package/dist/esm/features/column-ordering/columnOrderingFeature.js.map +1 -0
- package/dist/{cjs/features/ColumnOrdering.d.cts → esm/features/column-ordering/columnOrderingFeature.types.d.ts} +8 -22
- package/dist/esm/features/column-ordering/columnOrderingFeature.utils.d.ts +14 -0
- package/dist/esm/features/column-ordering/columnOrderingFeature.utils.js +72 -0
- package/dist/esm/features/column-ordering/columnOrderingFeature.utils.js.map +1 -0
- package/dist/esm/features/column-pinning/columnPinningFeature.d.ts +10 -0
- package/dist/esm/features/column-pinning/columnPinningFeature.js +260 -0
- package/dist/esm/features/column-pinning/columnPinningFeature.js.map +1 -0
- package/dist/esm/features/column-pinning/columnPinningFeature.types.d.ts +157 -0
- package/dist/esm/features/column-pinning/columnPinningFeature.utils.d.ts +39 -0
- package/dist/esm/features/column-pinning/columnPinningFeature.utils.js +325 -0
- package/dist/esm/features/column-pinning/columnPinningFeature.utils.js.map +1 -0
- package/dist/esm/features/column-resizing/columnResizingFeature.d.ts +11 -0
- package/dist/esm/features/column-resizing/columnResizingFeature.js +52 -0
- package/dist/esm/features/column-resizing/columnResizingFeature.js.map +1 -0
- package/dist/esm/features/column-resizing/columnResizingFeature.types.d.ts +68 -0
- package/dist/esm/features/column-resizing/columnResizingFeature.utils.d.ts +14 -0
- package/dist/esm/features/column-resizing/columnResizingFeature.utils.js +193 -0
- package/dist/esm/features/column-resizing/columnResizingFeature.utils.js.map +1 -0
- package/dist/esm/features/column-sizing/columnSizingFeature.d.ts +11 -0
- package/dist/esm/features/column-sizing/columnSizingFeature.js +95 -0
- package/dist/esm/features/column-sizing/columnSizingFeature.js.map +1 -0
- package/dist/esm/features/column-sizing/columnSizingFeature.types.d.ts +81 -0
- package/dist/esm/features/column-sizing/columnSizingFeature.utils.d.ts +25 -0
- package/dist/esm/features/column-sizing/columnSizingFeature.utils.js +128 -0
- package/dist/esm/features/column-sizing/columnSizingFeature.utils.js.map +1 -0
- package/dist/esm/features/column-visibility/columnVisibilityFeature.d.ts +10 -0
- package/dist/esm/features/column-visibility/columnVisibilityFeature.js +100 -0
- package/dist/esm/features/column-visibility/columnVisibilityFeature.js.map +1 -0
- package/dist/esm/features/column-visibility/columnVisibilityFeature.types.d.ts +84 -0
- package/dist/esm/features/column-visibility/columnVisibilityFeature.utils.d.ts +22 -0
- package/dist/esm/features/column-visibility/columnVisibilityFeature.utils.js +105 -0
- package/dist/esm/features/column-visibility/columnVisibilityFeature.utils.js.map +1 -0
- package/dist/esm/features/global-filtering/globalFilteringFeature.d.ts +11 -0
- package/dist/esm/features/global-filtering/globalFilteringFeature.js +51 -0
- package/dist/esm/features/global-filtering/globalFilteringFeature.js.map +1 -0
- package/dist/esm/features/global-filtering/globalFilteringFeature.types.d.ts +59 -0
- package/dist/esm/features/global-filtering/globalFilteringFeature.utils.d.ts +10 -0
- package/dist/esm/features/global-filtering/globalFilteringFeature.utils.js +30 -0
- package/dist/esm/features/global-filtering/globalFilteringFeature.utils.js.map +1 -0
- package/dist/esm/features/row-expanding/createExpandedRowModel.d.ts +6 -0
- package/dist/esm/features/row-expanding/createExpandedRowModel.js +49 -0
- package/dist/esm/features/row-expanding/createExpandedRowModel.js.map +1 -0
- package/dist/esm/features/row-expanding/rowExpandingFeature.d.ts +10 -0
- package/dist/esm/features/row-expanding/rowExpandingFeature.js +74 -0
- package/dist/esm/features/row-expanding/rowExpandingFeature.js.map +1 -0
- package/dist/esm/features/row-expanding/rowExpandingFeature.types.d.ts +116 -0
- package/dist/esm/features/row-expanding/rowExpandingFeature.utils.d.ts +20 -0
- package/dist/esm/features/row-expanding/rowExpandingFeature.utils.js +125 -0
- package/dist/esm/features/row-expanding/rowExpandingFeature.utils.js.map +1 -0
- package/dist/esm/features/row-pagination/createPaginatedRowModel.d.ts +5 -0
- package/dist/esm/features/row-pagination/createPaginatedRowModel.js +58 -0
- package/dist/esm/features/row-pagination/createPaginatedRowModel.js.map +1 -0
- package/dist/esm/features/row-pagination/rowPaginationFeature.d.ts +10 -0
- package/dist/esm/features/row-pagination/rowPaginationFeature.js +78 -0
- package/dist/esm/features/row-pagination/rowPaginationFeature.js.map +1 -0
- package/dist/esm/features/row-pagination/rowPaginationFeature.types.d.ts +119 -0
- package/dist/esm/features/row-pagination/rowPaginationFeature.utils.d.ts +21 -0
- package/dist/esm/features/row-pagination/rowPaginationFeature.utils.js +126 -0
- package/dist/esm/features/row-pagination/rowPaginationFeature.utils.js.map +1 -0
- package/dist/esm/features/row-pinning/rowPinningFeature.d.ts +10 -0
- package/dist/esm/features/row-pinning/rowPinningFeature.js +80 -0
- package/dist/esm/features/row-pinning/rowPinningFeature.js.map +1 -0
- package/dist/esm/features/row-pinning/rowPinningFeature.types.d.ts +72 -0
- package/dist/esm/features/row-pinning/rowPinningFeature.utils.d.ts +16 -0
- package/dist/esm/features/row-pinning/rowPinningFeature.utils.js +115 -0
- package/dist/esm/features/row-pinning/rowPinningFeature.utils.js.map +1 -0
- package/dist/esm/features/row-selection/rowSelectionFeature.d.ts +10 -0
- package/dist/esm/features/row-selection/rowSelectionFeature.js +112 -0
- package/dist/esm/features/row-selection/rowSelectionFeature.js.map +1 -0
- package/dist/esm/features/row-selection/rowSelectionFeature.types.d.ts +123 -0
- package/dist/esm/features/row-selection/rowSelectionFeature.utils.d.ts +34 -0
- package/dist/esm/features/row-selection/rowSelectionFeature.utils.js +290 -0
- package/dist/esm/features/row-selection/rowSelectionFeature.utils.js.map +1 -0
- package/dist/esm/features/row-sorting/createSortedRowModel.d.ts +6 -0
- package/dist/esm/features/row-sorting/createSortedRowModel.js +94 -0
- package/dist/esm/features/row-sorting/createSortedRowModel.js.map +1 -0
- package/dist/esm/features/row-sorting/rowSortingFeature.d.ts +10 -0
- package/dist/esm/features/row-sorting/rowSortingFeature.js +82 -0
- package/dist/esm/features/row-sorting/rowSortingFeature.js.map +1 -0
- package/dist/esm/features/row-sorting/rowSortingFeature.types.d.ts +178 -0
- package/dist/esm/features/row-sorting/rowSortingFeature.utils.d.ts +20 -0
- package/dist/esm/features/row-sorting/rowSortingFeature.utils.js +181 -0
- package/dist/esm/features/row-sorting/rowSortingFeature.utils.js.map +1 -0
- package/dist/esm/features/stockFeatures.d.ts +31 -0
- package/dist/esm/features/stockFeatures.js +34 -0
- package/dist/esm/features/stockFeatures.js.map +1 -0
- package/dist/esm/fns/aggregationFns.d.ts +49 -0
- package/dist/esm/fns/aggregationFns.js +110 -0
- package/dist/esm/fns/aggregationFns.js.map +1 -0
- package/dist/esm/fns/filterFns.d.ts +76 -0
- package/dist/esm/fns/filterFns.js +134 -0
- package/dist/esm/fns/filterFns.js.map +1 -0
- package/dist/esm/fns/sortFns.d.ts +17 -0
- package/dist/esm/{sortingFns.js → fns/sortFns.js} +21 -15
- package/dist/esm/fns/sortFns.js.map +1 -0
- package/dist/esm/helpers/columnHelper.d.ts +61 -0
- package/dist/esm/{columnHelper.js → helpers/columnHelper.js} +1 -0
- package/dist/esm/helpers/columnHelper.js.map +1 -0
- package/dist/esm/helpers/tableFeatures.d.ts +13 -0
- package/dist/esm/helpers/tableFeatures.js +7 -0
- package/dist/esm/helpers/tableFeatures.js.map +1 -0
- package/dist/esm/helpers/tableHelper.d.ts +25 -0
- package/dist/esm/helpers/tableHelper.js +13 -0
- package/dist/esm/helpers/tableHelper.js.map +1 -0
- package/dist/esm/helpers/tableOptions.d.ts +23 -0
- package/dist/esm/helpers/tableOptions.js +7 -0
- package/dist/esm/helpers/tableOptions.js.map +1 -0
- package/dist/esm/index.d.ts +109 -33
- package/dist/esm/index.js +397 -65
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/Cell.d.ts +13 -0
- package/dist/esm/types/Column.d.ts +26 -0
- package/dist/esm/types/ColumnDef.d.ts +64 -0
- package/dist/esm/types/Header.d.ts +14 -0
- package/dist/esm/types/HeaderGroup.d.ts +12 -0
- package/dist/esm/types/Row.d.ts +19 -0
- package/dist/esm/types/RowModel.d.ts +23 -0
- package/dist/esm/types/RowModelFns.d.ts +15 -0
- package/dist/esm/types/Table.d.ts +53 -0
- package/dist/esm/types/TableFeatures.d.ts +77 -0
- package/dist/esm/types/TableOptions.d.ts +39 -0
- package/dist/esm/types/TableState.d.ts +23 -0
- package/dist/esm/types/type-utils.d.ts +22 -0
- package/dist/esm/utils.d.ts +66 -33
- package/dist/esm/utils.js +183 -52
- package/dist/esm/utils.js.map +1 -1
- package/package.json +21 -12
- package/src/core/cells/constructCell.ts +49 -0
- package/src/core/cells/coreCellsFeature.ts +44 -0
- package/src/core/cells/coreCellsFeature.types.ts +68 -0
- package/src/core/cells/coreCellsFeature.utils.ts +35 -0
- package/src/core/columns/constructColumn.ts +111 -0
- package/src/core/columns/coreColumnsFeature.ts +90 -0
- package/src/core/columns/coreColumnsFeature.types.ts +103 -0
- package/src/core/columns/coreColumnsFeature.utils.ts +160 -0
- package/src/core/coreFeatures.ts +24 -0
- package/src/core/headers/buildHeaderGroups.ts +177 -0
- package/src/core/headers/constructHeader.ts +61 -0
- package/src/core/headers/coreHeadersFeature.ts +98 -0
- package/src/core/headers/coreHeadersFeature.types.ts +123 -0
- package/src/core/headers/coreHeadersFeature.utils.ts +131 -0
- package/src/core/row-models/coreRowModelsFeature.ts +78 -0
- package/src/core/row-models/coreRowModelsFeature.types.ts +67 -0
- package/src/core/row-models/coreRowModelsFeature.utils.ts +140 -0
- package/src/core/row-models/createCoreRowModel.ts +88 -0
- package/src/core/rows/constructRow.ts +59 -0
- package/src/core/rows/coreRowsFeature.ts +84 -0
- package/src/core/rows/coreRowsFeature.types.ts +111 -0
- package/src/core/rows/coreRowsFeature.utils.ts +152 -0
- package/src/core/table/constructTable.ts +95 -0
- package/src/core/table/coreTablesFeature.ts +36 -0
- package/src/core/table/coreTablesFeature.types.ts +123 -0
- package/src/core/table/coreTablesFeature.utils.ts +40 -0
- package/src/features/column-faceting/columnFacetingFeature.ts +112 -0
- package/src/features/column-faceting/columnFacetingFeature.types.ts +97 -0
- package/src/features/column-faceting/columnFacetingFeature.utils.ts +77 -0
- package/src/features/column-faceting/createFacetedMinMaxValues.ts +63 -0
- package/src/features/column-faceting/createFacetedRowModel.ts +76 -0
- package/src/features/column-faceting/createFacetedUniqueValues.ts +60 -0
- package/src/features/column-filtering/columnFilteringFeature.ts +121 -0
- package/src/features/column-filtering/columnFilteringFeature.types.ts +219 -0
- package/src/features/column-filtering/columnFilteringFeature.utils.ts +213 -0
- package/src/features/column-filtering/createFilteredRowModel.ts +171 -0
- package/src/features/column-filtering/filterRowsUtils.ts +152 -0
- package/src/features/column-grouping/columnGroupingFeature.ts +151 -0
- package/src/features/column-grouping/columnGroupingFeature.types.ts +218 -0
- package/src/features/column-grouping/columnGroupingFeature.utils.ts +192 -0
- package/src/features/column-grouping/createGroupedRowModel.ts +215 -0
- package/src/features/column-ordering/columnOrderingFeature.ts +96 -0
- package/src/features/column-ordering/columnOrderingFeature.types.ts +49 -0
- package/src/features/column-ordering/columnOrderingFeature.utils.ts +133 -0
- package/src/features/column-pinning/columnPinningFeature.ts +324 -0
- package/src/features/column-pinning/columnPinningFeature.types.ts +176 -0
- package/src/features/column-pinning/columnPinningFeature.utils.ts +537 -0
- package/src/features/column-resizing/columnResizingFeature.ts +92 -0
- package/src/features/column-resizing/columnResizingFeature.types.ts +81 -0
- package/src/features/column-resizing/columnResizingFeature.utils.ts +265 -0
- package/src/features/column-sizing/columnSizingFeature.ts +146 -0
- package/src/features/column-sizing/columnSizingFeature.types.ts +92 -0
- package/src/features/column-sizing/columnSizingFeature.utils.ts +211 -0
- package/src/features/column-visibility/columnVisibilityFeature.ts +155 -0
- package/src/features/column-visibility/columnVisibilityFeature.types.ts +101 -0
- package/src/features/column-visibility/columnVisibilityFeature.utils.ts +183 -0
- package/src/features/global-filtering/globalFilteringFeature.ts +92 -0
- package/src/features/global-filtering/globalFilteringFeature.types.ts +84 -0
- package/src/features/global-filtering/globalFilteringFeature.utils.ts +60 -0
- package/src/features/row-expanding/createExpandedRowModel.ts +72 -0
- package/src/features/row-expanding/rowExpandingFeature.ts +122 -0
- package/src/features/row-expanding/rowExpandingFeature.types.ts +141 -0
- package/src/features/row-expanding/rowExpandingFeature.utils.ts +207 -0
- package/src/features/row-pagination/createPaginatedRowModel.ts +78 -0
- package/src/features/row-pagination/rowPaginationFeature.ts +121 -0
- package/src/features/row-pagination/rowPaginationFeature.types.ts +141 -0
- package/src/features/row-pagination/rowPaginationFeature.utils.ts +204 -0
- package/src/features/row-pinning/rowPinningFeature.ts +121 -0
- package/src/features/row-pinning/rowPinningFeature.types.ts +89 -0
- package/src/features/row-pinning/rowPinningFeature.utils.ts +197 -0
- package/src/features/row-selection/rowSelectionFeature.ts +164 -0
- package/src/features/row-selection/rowSelectionFeature.types.ts +143 -0
- package/src/features/row-selection/rowSelectionFeature.utils.ts +464 -0
- package/src/features/row-sorting/createSortedRowModel.ts +147 -0
- package/src/features/row-sorting/rowSortingFeature.ts +136 -0
- package/src/features/row-sorting/rowSortingFeature.types.ts +229 -0
- package/src/features/row-sorting/rowSortingFeature.utils.ts +320 -0
- package/src/features/stockFeatures.ts +48 -0
- package/src/fns/aggregationFns.ts +220 -0
- package/src/fns/filterFns.ts +379 -0
- package/src/{sortingFns.ts → fns/sortFns.ts} +66 -21
- package/src/helpers/columnHelper.ts +117 -0
- package/src/helpers/tableFeatures.ts +24 -0
- package/src/helpers/tableHelper.ts +61 -0
- package/src/helpers/tableOptions.ts +82 -0
- package/src/index.ts +156 -42
- package/src/types/Cell.ts +41 -0
- package/src/types/Column.ts +86 -0
- package/src/types/ColumnDef.ts +217 -0
- package/src/types/Header.ts +45 -0
- package/src/types/HeaderGroup.ts +24 -0
- package/src/types/Row.ts +55 -0
- package/src/types/RowModel.ts +137 -0
- package/src/types/RowModelFns.ts +51 -0
- package/src/types/Table.ts +125 -0
- package/src/types/TableFeatures.ts +150 -0
- package/src/types/TableOptions.ts +125 -0
- package/src/types/TableState.ts +88 -0
- package/src/types/type-utils.ts +84 -0
- package/src/utils.ts +344 -163
- package/dist/cjs/aggregationFns.cjs +0 -98
- package/dist/cjs/aggregationFns.cjs.map +0 -1
- package/dist/cjs/aggregationFns.d.cts +0 -14
- package/dist/cjs/columnHelper.cjs +0 -19
- package/dist/cjs/columnHelper.cjs.map +0 -1
- package/dist/cjs/columnHelper.d.cts +0 -9
- package/dist/cjs/core/cell.cjs +0 -38
- package/dist/cjs/core/cell.cjs.map +0 -1
- package/dist/cjs/core/cell.d.cts +0 -50
- package/dist/cjs/core/column.cjs +0 -81
- package/dist/cjs/core/column.cjs.map +0 -1
- package/dist/cjs/core/column.d.cts +0 -56
- package/dist/cjs/core/headers.cjs +0 -310
- package/dist/cjs/core/headers.cjs.map +0 -1
- package/dist/cjs/core/headers.d.cts +0 -195
- package/dist/cjs/core/row.cjs +0 -93
- package/dist/cjs/core/row.cjs.map +0 -1
- package/dist/cjs/core/row.d.cts +0 -92
- package/dist/cjs/core/table.cjs +0 -228
- package/dist/cjs/core/table.cjs.map +0 -1
- package/dist/cjs/core/table.d.cts +0 -221
- package/dist/cjs/features/ColumnFaceting.cjs +0 -29
- package/dist/cjs/features/ColumnFaceting.cjs.map +0 -1
- package/dist/cjs/features/ColumnFaceting.d.cts +0 -35
- package/dist/cjs/features/ColumnFiltering.cjs +0 -137
- package/dist/cjs/features/ColumnFiltering.cjs.map +0 -1
- package/dist/cjs/features/ColumnFiltering.d.cts +0 -195
- package/dist/cjs/features/ColumnGrouping.cjs +0 -134
- package/dist/cjs/features/ColumnGrouping.cjs.map +0 -1
- package/dist/cjs/features/ColumnGrouping.d.cts +0 -202
- package/dist/cjs/features/ColumnOrdering.cjs +0 -76
- package/dist/cjs/features/ColumnOrdering.cjs.map +0 -1
- package/dist/cjs/features/ColumnPinning.cjs +0 -145
- package/dist/cjs/features/ColumnPinning.cjs.map +0 -1
- package/dist/cjs/features/ColumnPinning.d.cts +0 -127
- package/dist/cjs/features/ColumnSizing.cjs +0 -308
- package/dist/cjs/features/ColumnSizing.cjs.map +0 -1
- package/dist/cjs/features/ColumnSizing.d.cts +0 -194
- package/dist/cjs/features/ColumnVisibility.cjs +0 -144
- package/dist/cjs/features/ColumnVisibility.cjs.map +0 -1
- package/dist/cjs/features/ColumnVisibility.d.cts +0 -130
- package/dist/cjs/features/GlobalFaceting.cjs +0 -29
- package/dist/cjs/features/GlobalFaceting.cjs.map +0 -1
- package/dist/cjs/features/GlobalFaceting.d.cts +0 -27
- package/dist/cjs/features/GlobalFiltering.cjs +0 -50
- package/dist/cjs/features/GlobalFiltering.cjs.map +0 -1
- package/dist/cjs/features/GlobalFiltering.d.cts +0 -80
- package/dist/cjs/features/RowExpanding.cjs +0 -154
- package/dist/cjs/features/RowExpanding.cjs.map +0 -1
- package/dist/cjs/features/RowExpanding.d.cts +0 -155
- package/dist/cjs/features/RowPagination.cjs +0 -162
- package/dist/cjs/features/RowPagination.cjs.map +0 -1
- package/dist/cjs/features/RowPagination.d.cts +0 -166
- package/dist/cjs/features/RowPinning.cjs +0 -133
- package/dist/cjs/features/RowPinning.cjs.map +0 -1
- package/dist/cjs/features/RowPinning.d.cts +0 -99
- package/dist/cjs/features/RowSelection.cjs +0 -298
- package/dist/cjs/features/RowSelection.cjs.map +0 -1
- package/dist/cjs/features/RowSelection.d.cts +0 -177
- package/dist/cjs/features/RowSorting.cjs +0 -201
- package/dist/cjs/features/RowSorting.cjs.map +0 -1
- package/dist/cjs/features/RowSorting.d.cts +0 -238
- package/dist/cjs/filterFns.cjs +0 -88
- package/dist/cjs/filterFns.cjs.map +0 -1
- package/dist/cjs/filterFns.d.cts +0 -14
- package/dist/cjs/index.cjs +0 -87
- package/dist/cjs/index.cjs.map +0 -1
- package/dist/cjs/index.d.cts +0 -34
- package/dist/cjs/sortingFns.cjs +0 -91
- package/dist/cjs/sortingFns.cjs.map +0 -1
- package/dist/cjs/sortingFns.d.cts +0 -12
- package/dist/cjs/types.d.cts +0 -120
- package/dist/cjs/utils/filterRowsUtils.cjs +0 -99
- package/dist/cjs/utils/filterRowsUtils.cjs.map +0 -1
- package/dist/cjs/utils/filterRowsUtils.d.cts +0 -3
- package/dist/cjs/utils/getCoreRowModel.cjs +0 -54
- package/dist/cjs/utils/getCoreRowModel.cjs.map +0 -1
- package/dist/cjs/utils/getCoreRowModel.d.cts +0 -3
- package/dist/cjs/utils/getExpandedRowModel.cjs +0 -41
- package/dist/cjs/utils/getExpandedRowModel.cjs.map +0 -1
- package/dist/cjs/utils/getExpandedRowModel.d.cts +0 -8
- package/dist/cjs/utils/getFacetedMinMaxValues.cjs +0 -36
- package/dist/cjs/utils/getFacetedMinMaxValues.cjs.map +0 -1
- package/dist/cjs/utils/getFacetedMinMaxValues.d.cts +0 -3
- package/dist/cjs/utils/getFacetedRowModel.cjs +0 -35
- package/dist/cjs/utils/getFacetedRowModel.cjs.map +0 -1
- package/dist/cjs/utils/getFacetedRowModel.d.cts +0 -3
- package/dist/cjs/utils/getFacetedUniqueValues.cjs +0 -38
- package/dist/cjs/utils/getFacetedUniqueValues.cjs.map +0 -1
- package/dist/cjs/utils/getFacetedUniqueValues.d.cts +0 -3
- package/dist/cjs/utils/getFilteredRowModel.cjs +0 -116
- package/dist/cjs/utils/getFilteredRowModel.cjs.map +0 -1
- package/dist/cjs/utils/getFilteredRowModel.d.cts +0 -3
- package/dist/cjs/utils/getGroupedRowModel.cjs +0 -118
- package/dist/cjs/utils/getGroupedRowModel.cjs.map +0 -1
- package/dist/cjs/utils/getGroupedRowModel.d.cts +0 -3
- package/dist/cjs/utils/getPaginationRowModel.cjs +0 -49
- package/dist/cjs/utils/getPaginationRowModel.cjs.map +0 -1
- package/dist/cjs/utils/getPaginationRowModel.d.cts +0 -5
- package/dist/cjs/utils/getSortedRowModel.cjs +0 -91
- package/dist/cjs/utils/getSortedRowModel.cjs.map +0 -1
- package/dist/cjs/utils/getSortedRowModel.d.cts +0 -3
- package/dist/cjs/utils.cjs +0 -100
- package/dist/cjs/utils.cjs.map +0 -1
- package/dist/cjs/utils.d.cts +0 -39
- package/dist/esm/aggregationFns.d.ts +0 -14
- package/dist/esm/aggregationFns.js +0 -98
- package/dist/esm/aggregationFns.js.map +0 -1
- package/dist/esm/columnHelper.d.ts +0 -9
- package/dist/esm/columnHelper.js.map +0 -1
- package/dist/esm/core/cell.d.ts +0 -50
- package/dist/esm/core/cell.js +0 -38
- package/dist/esm/core/cell.js.map +0 -1
- package/dist/esm/core/column.d.ts +0 -56
- package/dist/esm/core/column.js +0 -81
- package/dist/esm/core/column.js.map +0 -1
- package/dist/esm/core/headers.d.ts +0 -195
- package/dist/esm/core/headers.js +0 -310
- package/dist/esm/core/headers.js.map +0 -1
- package/dist/esm/core/row.d.ts +0 -92
- package/dist/esm/core/row.js +0 -93
- package/dist/esm/core/row.js.map +0 -1
- package/dist/esm/core/table.d.ts +0 -221
- package/dist/esm/core/table.js +0 -228
- package/dist/esm/core/table.js.map +0 -1
- package/dist/esm/features/ColumnFaceting.d.ts +0 -35
- package/dist/esm/features/ColumnFaceting.js +0 -29
- package/dist/esm/features/ColumnFaceting.js.map +0 -1
- package/dist/esm/features/ColumnFiltering.d.ts +0 -195
- package/dist/esm/features/ColumnFiltering.js +0 -137
- package/dist/esm/features/ColumnFiltering.js.map +0 -1
- package/dist/esm/features/ColumnGrouping.d.ts +0 -202
- package/dist/esm/features/ColumnGrouping.js +0 -134
- package/dist/esm/features/ColumnGrouping.js.map +0 -1
- package/dist/esm/features/ColumnOrdering.d.ts +0 -54
- package/dist/esm/features/ColumnOrdering.js +0 -76
- package/dist/esm/features/ColumnOrdering.js.map +0 -1
- package/dist/esm/features/ColumnPinning.d.ts +0 -127
- package/dist/esm/features/ColumnPinning.js +0 -145
- package/dist/esm/features/ColumnPinning.js.map +0 -1
- package/dist/esm/features/ColumnSizing.d.ts +0 -194
- package/dist/esm/features/ColumnSizing.js +0 -308
- package/dist/esm/features/ColumnSizing.js.map +0 -1
- package/dist/esm/features/ColumnVisibility.d.ts +0 -130
- package/dist/esm/features/ColumnVisibility.js +0 -144
- package/dist/esm/features/ColumnVisibility.js.map +0 -1
- package/dist/esm/features/GlobalFaceting.d.ts +0 -27
- package/dist/esm/features/GlobalFaceting.js +0 -29
- package/dist/esm/features/GlobalFaceting.js.map +0 -1
- package/dist/esm/features/GlobalFiltering.d.ts +0 -80
- package/dist/esm/features/GlobalFiltering.js +0 -50
- package/dist/esm/features/GlobalFiltering.js.map +0 -1
- package/dist/esm/features/RowExpanding.d.ts +0 -155
- package/dist/esm/features/RowExpanding.js +0 -154
- package/dist/esm/features/RowExpanding.js.map +0 -1
- package/dist/esm/features/RowPagination.d.ts +0 -166
- package/dist/esm/features/RowPagination.js +0 -162
- package/dist/esm/features/RowPagination.js.map +0 -1
- package/dist/esm/features/RowPinning.d.ts +0 -99
- package/dist/esm/features/RowPinning.js +0 -133
- package/dist/esm/features/RowPinning.js.map +0 -1
- package/dist/esm/features/RowSelection.d.ts +0 -177
- package/dist/esm/features/RowSelection.js +0 -298
- package/dist/esm/features/RowSelection.js.map +0 -1
- package/dist/esm/features/RowSorting.d.ts +0 -238
- package/dist/esm/features/RowSorting.js +0 -201
- package/dist/esm/features/RowSorting.js.map +0 -1
- package/dist/esm/filterFns.d.ts +0 -14
- package/dist/esm/filterFns.js +0 -88
- package/dist/esm/filterFns.js.map +0 -1
- package/dist/esm/sortingFns.d.ts +0 -12
- package/dist/esm/sortingFns.js.map +0 -1
- package/dist/esm/types.d.ts +0 -120
- package/dist/esm/utils/filterRowsUtils.d.ts +0 -3
- package/dist/esm/utils/filterRowsUtils.js.map +0 -1
- package/dist/esm/utils/getCoreRowModel.d.ts +0 -3
- package/dist/esm/utils/getCoreRowModel.js +0 -54
- package/dist/esm/utils/getCoreRowModel.js.map +0 -1
- package/dist/esm/utils/getExpandedRowModel.d.ts +0 -8
- package/dist/esm/utils/getExpandedRowModel.js +0 -41
- package/dist/esm/utils/getExpandedRowModel.js.map +0 -1
- package/dist/esm/utils/getFacetedMinMaxValues.d.ts +0 -3
- package/dist/esm/utils/getFacetedMinMaxValues.js +0 -36
- package/dist/esm/utils/getFacetedMinMaxValues.js.map +0 -1
- package/dist/esm/utils/getFacetedRowModel.d.ts +0 -3
- package/dist/esm/utils/getFacetedRowModel.js +0 -35
- package/dist/esm/utils/getFacetedRowModel.js.map +0 -1
- package/dist/esm/utils/getFacetedUniqueValues.d.ts +0 -3
- package/dist/esm/utils/getFacetedUniqueValues.js +0 -38
- package/dist/esm/utils/getFacetedUniqueValues.js.map +0 -1
- package/dist/esm/utils/getFilteredRowModel.d.ts +0 -3
- package/dist/esm/utils/getFilteredRowModel.js +0 -116
- package/dist/esm/utils/getFilteredRowModel.js.map +0 -1
- package/dist/esm/utils/getGroupedRowModel.d.ts +0 -3
- package/dist/esm/utils/getGroupedRowModel.js +0 -118
- package/dist/esm/utils/getGroupedRowModel.js.map +0 -1
- package/dist/esm/utils/getPaginationRowModel.d.ts +0 -5
- package/dist/esm/utils/getPaginationRowModel.js +0 -49
- package/dist/esm/utils/getPaginationRowModel.js.map +0 -1
- package/dist/esm/utils/getSortedRowModel.d.ts +0 -3
- package/dist/esm/utils/getSortedRowModel.js +0 -91
- package/dist/esm/utils/getSortedRowModel.js.map +0 -1
- package/src/aggregationFns.ts +0 -123
- package/src/columnHelper.ts +0 -91
- package/src/core/cell.ts +0 -91
- package/src/core/column.ts +0 -165
- package/src/core/headers.ts +0 -639
- package/src/core/row.ts +0 -201
- package/src/core/table.ts +0 -527
- package/src/features/ColumnFaceting.ts +0 -84
- package/src/features/ColumnFiltering.ts +0 -429
- package/src/features/ColumnGrouping.ts +0 -422
- package/src/features/ColumnOrdering.ts +0 -161
- package/src/features/ColumnPinning.ts +0 -336
- package/src/features/ColumnSizing.ts +0 -579
- package/src/features/ColumnVisibility.ts +0 -317
- package/src/features/GlobalFaceting.ts +0 -66
- package/src/features/GlobalFiltering.ts +0 -162
- package/src/features/RowExpanding.ts +0 -355
- package/src/features/RowPagination.ts +0 -396
- package/src/features/RowPinning.ts +0 -273
- package/src/features/RowSelection.ts +0 -668
- package/src/features/RowSorting.ts +0 -542
- package/src/filterFns.ts +0 -150
- package/src/types.ts +0 -361
- package/src/utils/filterRowsUtils.ts +0 -130
- package/src/utils/getCoreRowModel.ts +0 -82
- package/src/utils/getExpandedRowModel.ts +0 -51
- package/src/utils/getFacetedMinMaxValues.ts +0 -42
- package/src/utils/getFacetedRowModel.ts +0 -44
- package/src/utils/getFacetedUniqueValues.ts +0 -42
- package/src/utils/getFilteredRowModel.ts +0 -151
- package/src/utils/getGroupedRowModel.ts +0 -181
- package/src/utils/getPaginationRowModel.ts +0 -60
- package/src/utils/getSortedRowModel.ts +0 -121
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import {
|
|
2
|
+
assignPrototypeAPIs,
|
|
3
|
+
assignTableAPIs,
|
|
4
|
+
makeStateUpdater,
|
|
5
|
+
} from '../../utils'
|
|
6
|
+
import {
|
|
7
|
+
column_getAutoFilterFn,
|
|
8
|
+
column_getCanFilter,
|
|
9
|
+
column_getFilterFn,
|
|
10
|
+
column_getFilterIndex,
|
|
11
|
+
column_getFilterValue,
|
|
12
|
+
column_getIsFiltered,
|
|
13
|
+
column_setFilterValue,
|
|
14
|
+
getDefaultColumnFiltersState,
|
|
15
|
+
table_resetColumnFilters,
|
|
16
|
+
table_setColumnFilters,
|
|
17
|
+
} from './columnFilteringFeature.utils'
|
|
18
|
+
import type { RowData } from '../../types/type-utils'
|
|
19
|
+
import type { TableFeature, TableFeatures } from '../../types/TableFeatures'
|
|
20
|
+
// import type {
|
|
21
|
+
// CachedRowModel_Filtered,
|
|
22
|
+
// ColumnDef_ColumnFiltering,
|
|
23
|
+
// Column_ColumnFiltering,
|
|
24
|
+
// CreateRowModel_Filtered,
|
|
25
|
+
// RowModelFns_ColumnFiltering,
|
|
26
|
+
// Row_ColumnFiltering,
|
|
27
|
+
// TableOptions_ColumnFiltering,
|
|
28
|
+
// TableState_ColumnFiltering,
|
|
29
|
+
// Table_ColumnFiltering,
|
|
30
|
+
// } from './columnFilteringFeature.types'
|
|
31
|
+
|
|
32
|
+
interface ColumnFilteringFeatureConstructors<
|
|
33
|
+
TFeatures extends TableFeatures,
|
|
34
|
+
TData extends RowData,
|
|
35
|
+
> {
|
|
36
|
+
// CachedRowModel: CachedRowModel_Filtered<TFeatures, TData>
|
|
37
|
+
// Column: Column_ColumnFiltering<TFeatures, TData>
|
|
38
|
+
// ColumnDef: ColumnDef_ColumnFiltering<TFeatures, TData>
|
|
39
|
+
// CreateRowModels: CreateRowModel_Filtered<TFeatures, TData>
|
|
40
|
+
// Row: Row_ColumnFiltering<TFeatures, TData>
|
|
41
|
+
// RowModelFns: RowModelFns_ColumnFiltering<TFeatures, TData>
|
|
42
|
+
// Table: Table_ColumnFiltering<TFeatures, TData>
|
|
43
|
+
// TableOptions: TableOptions_ColumnFiltering<TFeatures, TData>
|
|
44
|
+
// TableState: TableState_ColumnFiltering
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export function constructColumnFilteringFeature<
|
|
48
|
+
TFeatures extends TableFeatures,
|
|
49
|
+
TData extends RowData,
|
|
50
|
+
>(): TableFeature<ColumnFilteringFeatureConstructors<TFeatures, TData>> {
|
|
51
|
+
return {
|
|
52
|
+
getInitialState: (initialState) => {
|
|
53
|
+
return {
|
|
54
|
+
columnFilters: getDefaultColumnFiltersState(),
|
|
55
|
+
...initialState,
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
|
|
59
|
+
getDefaultColumnDef: () => {
|
|
60
|
+
return {
|
|
61
|
+
filterFn: 'auto',
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
|
|
65
|
+
getDefaultTableOptions: (table) => {
|
|
66
|
+
return {
|
|
67
|
+
onColumnFiltersChange: makeStateUpdater('columnFilters', table),
|
|
68
|
+
filterFromLeafRows: false,
|
|
69
|
+
maxLeafRowFilterDepth: 100,
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
|
|
73
|
+
assignColumnPrototype: (prototype, table) => {
|
|
74
|
+
assignPrototypeAPIs('columnFilteringFeature', prototype, table, {
|
|
75
|
+
column_getAutoFilterFn: {
|
|
76
|
+
fn: (column) => column_getAutoFilterFn(column),
|
|
77
|
+
},
|
|
78
|
+
column_getFilterFn: {
|
|
79
|
+
fn: (column) => column_getFilterFn(column),
|
|
80
|
+
},
|
|
81
|
+
column_getCanFilter: {
|
|
82
|
+
fn: (column) => column_getCanFilter(column),
|
|
83
|
+
},
|
|
84
|
+
column_getIsFiltered: {
|
|
85
|
+
fn: (column) => column_getIsFiltered(column),
|
|
86
|
+
},
|
|
87
|
+
column_getFilterValue: {
|
|
88
|
+
fn: (column) => column_getFilterValue(column),
|
|
89
|
+
},
|
|
90
|
+
column_getFilterIndex: {
|
|
91
|
+
fn: (column) => column_getFilterIndex(column),
|
|
92
|
+
},
|
|
93
|
+
column_setFilterValue: {
|
|
94
|
+
fn: (column, value) => column_setFilterValue(column, value),
|
|
95
|
+
},
|
|
96
|
+
})
|
|
97
|
+
},
|
|
98
|
+
|
|
99
|
+
initRowInstanceData: (row) => {
|
|
100
|
+
;(row as any).columnFilters = {}
|
|
101
|
+
;(row as any).columnFiltersMeta = {}
|
|
102
|
+
},
|
|
103
|
+
|
|
104
|
+
constructTableAPIs: (table) => {
|
|
105
|
+
assignTableAPIs('columnFilteringFeature', table, {
|
|
106
|
+
table_setColumnFilters: {
|
|
107
|
+
fn: (updater) => table_setColumnFilters(table, updater),
|
|
108
|
+
},
|
|
109
|
+
table_resetColumnFilters: {
|
|
110
|
+
fn: (defaultState) => table_resetColumnFilters(table, defaultState),
|
|
111
|
+
},
|
|
112
|
+
})
|
|
113
|
+
},
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* The Column Filtering feature adds column filtering state and APIs to the table, row, and column objects.
|
|
119
|
+
* **Note:** This does not include Global Filtering. The globalFilteringFeature feature has been split out into its own standalone feature.
|
|
120
|
+
*/
|
|
121
|
+
export const columnFilteringFeature = constructColumnFilteringFeature()
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import type { Table } from '../../types/Table'
|
|
2
|
+
import type { BuiltInFilterFn } from '../../fns/filterFns'
|
|
3
|
+
import type {
|
|
4
|
+
CellData,
|
|
5
|
+
OnChangeFn,
|
|
6
|
+
RowData,
|
|
7
|
+
Updater,
|
|
8
|
+
} from '../../types/type-utils'
|
|
9
|
+
import type { TableFeatures } from '../../types/TableFeatures'
|
|
10
|
+
import type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'
|
|
11
|
+
import type { Row } from '../../types/Row'
|
|
12
|
+
import type { Column } from '../../types/Column'
|
|
13
|
+
|
|
14
|
+
export interface FilterMeta {}
|
|
15
|
+
|
|
16
|
+
export interface FilterFns {}
|
|
17
|
+
|
|
18
|
+
export interface TableState_ColumnFiltering {
|
|
19
|
+
columnFilters: ColumnFiltersState
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export type ColumnFiltersState = Array<ColumnFilter>
|
|
23
|
+
|
|
24
|
+
export interface ColumnFilter {
|
|
25
|
+
id: string
|
|
26
|
+
value: unknown
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export interface ResolvedColumnFilter<
|
|
30
|
+
TFeatures extends TableFeatures,
|
|
31
|
+
TData extends RowData,
|
|
32
|
+
> {
|
|
33
|
+
filterFn: FilterFn<TFeatures, TData>
|
|
34
|
+
id: string
|
|
35
|
+
resolvedValue: unknown
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export interface RowModelFns_ColumnFiltering<
|
|
39
|
+
TFeatures extends TableFeatures,
|
|
40
|
+
TData extends RowData,
|
|
41
|
+
> {
|
|
42
|
+
filterFns: Record<keyof FilterFns, FilterFn<TFeatures, TData>>
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export interface FilterFn<
|
|
46
|
+
TFeatures extends TableFeatures,
|
|
47
|
+
TData extends RowData,
|
|
48
|
+
> {
|
|
49
|
+
(
|
|
50
|
+
row: Row<TFeatures, TData>,
|
|
51
|
+
columnId: string,
|
|
52
|
+
filterValue: any,
|
|
53
|
+
addMeta?: (meta: FilterMeta) => void,
|
|
54
|
+
): boolean
|
|
55
|
+
autoRemove?: ColumnFilterAutoRemoveTestFn<TFeatures, TData>
|
|
56
|
+
resolveFilterValue?: TransformFilterValueFn<TFeatures, TData>
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export type TransformFilterValueFn<
|
|
60
|
+
TFeatures extends TableFeatures,
|
|
61
|
+
TData extends RowData,
|
|
62
|
+
TValue extends CellData = CellData,
|
|
63
|
+
> = (value: any, column?: Column<TFeatures, TData, TValue>) => TValue
|
|
64
|
+
|
|
65
|
+
export type ColumnFilterAutoRemoveTestFn<
|
|
66
|
+
TFeatures extends TableFeatures,
|
|
67
|
+
TData extends RowData,
|
|
68
|
+
TValue extends CellData = CellData,
|
|
69
|
+
> = (value: any, column?: Column<TFeatures, TData, TValue>) => boolean
|
|
70
|
+
|
|
71
|
+
export type CustomFilterFns<
|
|
72
|
+
TFeatures extends TableFeatures,
|
|
73
|
+
TData extends RowData,
|
|
74
|
+
> = Record<string, FilterFn<TFeatures, TData>>
|
|
75
|
+
|
|
76
|
+
export type FilterFnOption<
|
|
77
|
+
TFeatures extends TableFeatures,
|
|
78
|
+
TData extends RowData,
|
|
79
|
+
> = 'auto' | BuiltInFilterFn | keyof FilterFns | FilterFn<TFeatures, TData>
|
|
80
|
+
|
|
81
|
+
export interface ColumnDef_ColumnFiltering<
|
|
82
|
+
TFeatures extends TableFeatures,
|
|
83
|
+
TData extends RowData,
|
|
84
|
+
> {
|
|
85
|
+
/**
|
|
86
|
+
* Enables/disables the **column** filter for this column.
|
|
87
|
+
*/
|
|
88
|
+
enableColumnFilter?: boolean
|
|
89
|
+
/**
|
|
90
|
+
* The filter function to use with this column. Can be the name of a built-in filter function or a custom filter function.
|
|
91
|
+
*/
|
|
92
|
+
filterFn?: FilterFnOption<TFeatures, TData>
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export interface Column_ColumnFiltering<
|
|
96
|
+
TFeatures extends TableFeatures,
|
|
97
|
+
TData extends RowData,
|
|
98
|
+
> {
|
|
99
|
+
/**
|
|
100
|
+
* Returns an automatically calculated filter function for the column based off of the columns first known value.
|
|
101
|
+
*/
|
|
102
|
+
getAutoFilterFn: () => FilterFn<TFeatures, TData>
|
|
103
|
+
/**
|
|
104
|
+
* Returns whether or not the column can be **column** filtered.
|
|
105
|
+
*/
|
|
106
|
+
getCanFilter: () => boolean
|
|
107
|
+
/**
|
|
108
|
+
* Returns the filter function (either user-defined or automatic, depending on configuration) for the columnId specified.
|
|
109
|
+
*/
|
|
110
|
+
getFilterFn: () => FilterFn<TFeatures, TData>
|
|
111
|
+
/**
|
|
112
|
+
* Returns the index (including `-1`) of the column filter in the table's `state.columnFilters` array.
|
|
113
|
+
*/
|
|
114
|
+
getFilterIndex: () => number
|
|
115
|
+
/**
|
|
116
|
+
* Returns the current filter value for the column.
|
|
117
|
+
*/
|
|
118
|
+
getFilterValue: () => unknown
|
|
119
|
+
/**
|
|
120
|
+
* Returns whether or not the column is currently filtered.
|
|
121
|
+
*/
|
|
122
|
+
getIsFiltered: () => boolean
|
|
123
|
+
/**
|
|
124
|
+
* A function that sets the current filter value for the column. You can pass it a value or an updater function for immutability-safe operations on existing values.
|
|
125
|
+
*/
|
|
126
|
+
setFilterValue: (updater: Updater<any>) => void
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
export interface Row_ColumnFiltering<
|
|
130
|
+
TFeatures extends TableFeatures,
|
|
131
|
+
TData extends RowData,
|
|
132
|
+
> {
|
|
133
|
+
/**
|
|
134
|
+
* The column filters map for the row. This object tracks whether a row is passing/failing specific filters by their column ID.
|
|
135
|
+
*/
|
|
136
|
+
columnFilters: Record<string, boolean>
|
|
137
|
+
/**
|
|
138
|
+
* The column filters meta map for the row. This object tracks any filter meta for a row as optionally provided during the filtering process.
|
|
139
|
+
*/
|
|
140
|
+
columnFiltersMeta: Record<string, FilterMeta>
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
export interface TableOptions_ColumnFiltering<
|
|
144
|
+
TFeatures extends TableFeatures,
|
|
145
|
+
TData extends RowData,
|
|
146
|
+
> {
|
|
147
|
+
/**
|
|
148
|
+
* Enables/disables **column** filtering for all columns.
|
|
149
|
+
*/
|
|
150
|
+
enableColumnFilters?: boolean
|
|
151
|
+
/**
|
|
152
|
+
* Enables/disables all filtering for the table.
|
|
153
|
+
*/
|
|
154
|
+
enableFilters?: boolean
|
|
155
|
+
/**
|
|
156
|
+
* By default, filtering is done from parent rows down (so if a parent row is filtered out, all of its children will be filtered out as well). Setting this option to `true` will cause filtering to be done from leaf rows up (which means parent rows will be included so long as one of their child or grand-child rows is also included).
|
|
157
|
+
*/
|
|
158
|
+
filterFromLeafRows?: boolean
|
|
159
|
+
/**
|
|
160
|
+
* Disables the `getFilteredRowModel` from being used to filter data. This may be useful if your table needs to dynamically support both client-side and server-side filtering.
|
|
161
|
+
*/
|
|
162
|
+
manualFiltering?: boolean
|
|
163
|
+
/**
|
|
164
|
+
* By default, filtering is done for all rows (max depth of 100), no matter if they are root level parent rows or the child leaf rows of a parent row. Setting this option to `0` will cause filtering to only be applied to the root level parent rows, with all sub-rows remaining unfiltered. Similarly, setting this option to `1` will cause filtering to only be applied to child leaf rows 1 level deep, and so on.
|
|
165
|
+
|
|
166
|
+
* This is useful for situations where you want a row's entire child hierarchy to be visible regardless of the applied filter.
|
|
167
|
+
*/
|
|
168
|
+
maxLeafRowFilterDepth?: number
|
|
169
|
+
/**
|
|
170
|
+
* If provided, this function will be called with an `updaterFn` when `state.columnFilters` changes. This overrides the default internal state management, so you will need to persist the state change either fully or partially outside of the table.
|
|
171
|
+
*/
|
|
172
|
+
onColumnFiltersChange?: OnChangeFn<ColumnFiltersState>
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
export interface Table_ColumnFiltering {
|
|
176
|
+
/**
|
|
177
|
+
* Resets the **columnFilters** state to `initialState.columnFilters`, or `true` can be passed to force a default blank state reset to `[]`.
|
|
178
|
+
*/
|
|
179
|
+
resetColumnFilters: (defaultState?: boolean) => void
|
|
180
|
+
/**
|
|
181
|
+
* Sets or updates the `state.columnFilters` state.
|
|
182
|
+
*/
|
|
183
|
+
setColumnFilters: (updater: Updater<ColumnFiltersState>) => void
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
export interface Table_RowModels_Filtered<
|
|
187
|
+
TFeatures extends TableFeatures,
|
|
188
|
+
TData extends RowData,
|
|
189
|
+
> {
|
|
190
|
+
/**
|
|
191
|
+
* Returns the row model for the table after **column** filtering has been applied.
|
|
192
|
+
*/
|
|
193
|
+
getFilteredRowModel: () => RowModel<TFeatures, TData>
|
|
194
|
+
/**
|
|
195
|
+
* Returns the row model for the table before any **column** filtering has been applied.
|
|
196
|
+
*/
|
|
197
|
+
getPreFilteredRowModel: () => RowModel<TFeatures, TData>
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
export interface CreateRowModel_Filtered<
|
|
201
|
+
TFeatures extends TableFeatures,
|
|
202
|
+
TData extends RowData,
|
|
203
|
+
> {
|
|
204
|
+
/**
|
|
205
|
+
* If provided, this function is called **once** per table and should return a **new function** which will calculate and return the row model for the table when it's filtered.
|
|
206
|
+
* - For server-side filtering, this function is unnecessary and can be ignored since the server should already return the filtered row model.
|
|
207
|
+
* - For client-side filtering, this function is required. A default implementation is provided via any table adapter's `{ getFilteredRowModel }` export.
|
|
208
|
+
*/
|
|
209
|
+
filteredRowModel?: (
|
|
210
|
+
table: Table<TFeatures, TData>,
|
|
211
|
+
) => () => RowModel<TFeatures, TData>
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
export interface CachedRowModel_Filtered<
|
|
215
|
+
TFeatures extends TableFeatures,
|
|
216
|
+
TData extends RowData,
|
|
217
|
+
> {
|
|
218
|
+
filteredRowModel: () => RowModel<TFeatures, TData>
|
|
219
|
+
}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { functionalUpdate, isFunction } from '../../utils'
|
|
2
|
+
import type { CellData, RowData, Updater } from '../../types/type-utils'
|
|
3
|
+
import type { TableFeatures } from '../../types/TableFeatures'
|
|
4
|
+
import type { Table_Internal } from '../../types/Table'
|
|
5
|
+
import type { Column_Internal } from '../../types/Column'
|
|
6
|
+
import type {
|
|
7
|
+
ColumnFiltersState,
|
|
8
|
+
FilterFn,
|
|
9
|
+
} from './columnFilteringFeature.types'
|
|
10
|
+
|
|
11
|
+
export function getDefaultColumnFiltersState(): ColumnFiltersState {
|
|
12
|
+
return structuredClone([])
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function column_getAutoFilterFn<
|
|
16
|
+
TFeatures extends TableFeatures,
|
|
17
|
+
TData extends RowData,
|
|
18
|
+
TValue extends CellData = CellData,
|
|
19
|
+
>(column: Column_Internal<TFeatures, TData, TValue>) {
|
|
20
|
+
const filterFns = column.table._rowModelFns.filterFns as
|
|
21
|
+
| Record<string, FilterFn<TFeatures, TData>>
|
|
22
|
+
| undefined
|
|
23
|
+
|
|
24
|
+
const firstRow = column.table.getCoreRowModel().flatRows[0]
|
|
25
|
+
|
|
26
|
+
const value = firstRow ? firstRow.getValue(column.id) : undefined
|
|
27
|
+
|
|
28
|
+
if (typeof value === 'string') {
|
|
29
|
+
return filterFns?.includesString
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
if (typeof value === 'number') {
|
|
33
|
+
return filterFns?.inNumberRange
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
if (typeof value === 'boolean') {
|
|
37
|
+
return filterFns?.equals
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if (value !== null && typeof value === 'object') {
|
|
41
|
+
return filterFns?.equals
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if (Array.isArray(value)) {
|
|
45
|
+
return filterFns?.arrIncludes
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return filterFns?.weakEquals
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export function column_getFilterFn<
|
|
52
|
+
TFeatures extends TableFeatures,
|
|
53
|
+
TData extends RowData,
|
|
54
|
+
TValue extends CellData = CellData,
|
|
55
|
+
>(
|
|
56
|
+
column: Column_Internal<TFeatures, TData, TValue>,
|
|
57
|
+
): FilterFn<TFeatures, TData> | undefined {
|
|
58
|
+
let filterFn = null
|
|
59
|
+
const filterFns = column.table._rowModelFns.filterFns as
|
|
60
|
+
| Record<string, FilterFn<TFeatures, TData>>
|
|
61
|
+
| undefined
|
|
62
|
+
filterFn = isFunction(column.columnDef.filterFn)
|
|
63
|
+
? column.columnDef.filterFn
|
|
64
|
+
: column.columnDef.filterFn === 'auto'
|
|
65
|
+
? column_getAutoFilterFn(column)
|
|
66
|
+
: filterFns?.[column.columnDef.filterFn as string]
|
|
67
|
+
|
|
68
|
+
if (process.env.NODE_ENV === 'development' && !filterFn) {
|
|
69
|
+
console.warn(
|
|
70
|
+
`Could not find a valid 'column.filterFn' for column with the ID: ${column.id}.`,
|
|
71
|
+
)
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return filterFn
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export function column_getCanFilter<
|
|
78
|
+
TFeatures extends TableFeatures,
|
|
79
|
+
TData extends RowData,
|
|
80
|
+
TValue extends CellData = CellData,
|
|
81
|
+
>(column: Column_Internal<TFeatures, TData, TValue>) {
|
|
82
|
+
return (
|
|
83
|
+
(column.columnDef.enableColumnFilter ?? true) &&
|
|
84
|
+
(column.table.options.enableColumnFilters ?? true) &&
|
|
85
|
+
(column.table.options.enableFilters ?? true) &&
|
|
86
|
+
!!column.accessorFn
|
|
87
|
+
)
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export function column_getIsFiltered<
|
|
91
|
+
TFeatures extends TableFeatures,
|
|
92
|
+
TData extends RowData,
|
|
93
|
+
TValue extends CellData = CellData,
|
|
94
|
+
>(column: Column_Internal<TFeatures, TData, TValue>) {
|
|
95
|
+
return column_getFilterIndex(column) > -1
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export function column_getFilterValue<
|
|
99
|
+
TFeatures extends TableFeatures,
|
|
100
|
+
TData extends RowData,
|
|
101
|
+
TValue extends CellData = CellData,
|
|
102
|
+
>(column: Column_Internal<TFeatures, TData, TValue>) {
|
|
103
|
+
return column.table.store.state.columnFilters?.find((d) => d.id === column.id)
|
|
104
|
+
?.value
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export function column_getFilterIndex<
|
|
108
|
+
TFeatures extends TableFeatures,
|
|
109
|
+
TData extends RowData,
|
|
110
|
+
TValue extends CellData = CellData,
|
|
111
|
+
>(column: Column_Internal<TFeatures, TData, TValue>): number {
|
|
112
|
+
return (
|
|
113
|
+
column.table.store.state.columnFilters?.findIndex(
|
|
114
|
+
(d) => d.id === column.id,
|
|
115
|
+
) ?? -1
|
|
116
|
+
)
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
export function column_setFilterValue<
|
|
120
|
+
TFeatures extends TableFeatures,
|
|
121
|
+
TData extends RowData,
|
|
122
|
+
TValue extends CellData = CellData,
|
|
123
|
+
>(column: Column_Internal<TFeatures, TData, TValue>, value: any) {
|
|
124
|
+
table_setColumnFilters(column.table, (old) => {
|
|
125
|
+
const filterFn = column_getFilterFn(column)
|
|
126
|
+
const previousFilter = old.find((d) => d.id === column.id)
|
|
127
|
+
|
|
128
|
+
const newFilter = functionalUpdate(
|
|
129
|
+
value,
|
|
130
|
+
previousFilter ? previousFilter.value : undefined,
|
|
131
|
+
)
|
|
132
|
+
|
|
133
|
+
if (shouldAutoRemoveFilter(filterFn, newFilter, column)) {
|
|
134
|
+
return old.filter((d) => d.id !== column.id)
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
const newFilterObj = { id: column.id, value: newFilter }
|
|
138
|
+
|
|
139
|
+
if (previousFilter) {
|
|
140
|
+
return old.map((d) => {
|
|
141
|
+
if (d.id === column.id) {
|
|
142
|
+
return newFilterObj
|
|
143
|
+
}
|
|
144
|
+
return d
|
|
145
|
+
})
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
if (old.length) {
|
|
149
|
+
return [...old, newFilterObj]
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
return [newFilterObj]
|
|
153
|
+
})
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
export function table_setColumnFilters<
|
|
157
|
+
TFeatures extends TableFeatures,
|
|
158
|
+
TData extends RowData,
|
|
159
|
+
>(
|
|
160
|
+
table: Table_Internal<TFeatures, TData>,
|
|
161
|
+
updater: Updater<ColumnFiltersState>,
|
|
162
|
+
) {
|
|
163
|
+
const leafColumns = table.getAllLeafColumns()
|
|
164
|
+
|
|
165
|
+
const updateFn = (old: ColumnFiltersState) => {
|
|
166
|
+
return functionalUpdate(updater, old).filter((filter) => {
|
|
167
|
+
const column = leafColumns.find((d) => d.id === filter.id)
|
|
168
|
+
|
|
169
|
+
if (column) {
|
|
170
|
+
const filterFn = column_getFilterFn(column)
|
|
171
|
+
|
|
172
|
+
if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {
|
|
173
|
+
return false
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
return true
|
|
178
|
+
})
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
table.options.onColumnFiltersChange?.(updateFn)
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
export function table_resetColumnFilters<
|
|
185
|
+
TFeatures extends TableFeatures,
|
|
186
|
+
TData extends RowData,
|
|
187
|
+
>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {
|
|
188
|
+
table_setColumnFilters(
|
|
189
|
+
table,
|
|
190
|
+
defaultState ? [] : (table.initialState.columnFilters ?? []),
|
|
191
|
+
)
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
export function shouldAutoRemoveFilter<
|
|
195
|
+
TFeatures extends TableFeatures,
|
|
196
|
+
TData extends RowData,
|
|
197
|
+
TValue extends CellData = CellData,
|
|
198
|
+
>(
|
|
199
|
+
filterFn?: FilterFn<TFeatures, TData>,
|
|
200
|
+
value?: any,
|
|
201
|
+
column?: Column_Internal<TFeatures, TData, TValue>,
|
|
202
|
+
) {
|
|
203
|
+
return (
|
|
204
|
+
(filterFn && filterFn.autoRemove
|
|
205
|
+
? filterFn.autoRemove(
|
|
206
|
+
value,
|
|
207
|
+
column as Column_Internal<TFeatures, TData, unknown>,
|
|
208
|
+
)
|
|
209
|
+
: false) ||
|
|
210
|
+
typeof value === 'undefined' ||
|
|
211
|
+
(typeof value === 'string' && !value)
|
|
212
|
+
)
|
|
213
|
+
}
|