@tanstack/table-core 9.0.0-alpha.10 → 9.0.0-alpha.12
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 +62 -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 -66
- 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 -50
- 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 +89 -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 -164
- package/dist/cjs/aggregationFns.cjs +0 -94
- 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 -92
- 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 -232
- package/dist/cjs/core/table.cjs.map +0 -1
- package/dist/cjs/core/table.d.cts +0 -229
- 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 -133
- 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 -307
- 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 -152
- 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 -161
- 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 -132
- 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 -296
- 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 -200
- 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 -88
- 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 -35
- 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 -37
- 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 -88
- package/dist/cjs/utils/getSortedRowModel.cjs.map +0 -1
- package/dist/cjs/utils/getSortedRowModel.d.cts +0 -3
- package/dist/cjs/utils.cjs +0 -98
- 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 -94
- 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 -92
- package/dist/esm/core/row.js.map +0 -1
- package/dist/esm/core/table.d.ts +0 -229
- package/dist/esm/core/table.js +0 -232
- 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 -133
- 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 -307
- 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 -152
- 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 -161
- 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 -132
- 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 -296
- 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 -200
- 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 -35
- 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 -37
- 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 -88
- 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 -563
- 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 -277
- 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,171 @@
|
|
|
1
|
+
import { tableMemo } from '../../utils'
|
|
2
|
+
import { table_getColumn } from '../../core/columns/coreColumnsFeature.utils'
|
|
3
|
+
import {
|
|
4
|
+
column_getCanGlobalFilter,
|
|
5
|
+
table_getGlobalFilterFn,
|
|
6
|
+
} from '../global-filtering/globalFilteringFeature.utils'
|
|
7
|
+
import { table_autoResetPageIndex } from '../row-pagination/rowPaginationFeature.utils'
|
|
8
|
+
import { filterRows } from './filterRowsUtils'
|
|
9
|
+
import { column_getFilterFn } from './columnFilteringFeature.utils'
|
|
10
|
+
import type { RowData } from '../../types/type-utils'
|
|
11
|
+
import type { TableFeatures } from '../../types/TableFeatures'
|
|
12
|
+
import type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'
|
|
13
|
+
import type { Table, Table_Internal } from '../../types/Table'
|
|
14
|
+
import type { Row } from '../../types/Row'
|
|
15
|
+
import type {
|
|
16
|
+
FilterFn,
|
|
17
|
+
FilterFns,
|
|
18
|
+
ResolvedColumnFilter,
|
|
19
|
+
Row_ColumnFiltering,
|
|
20
|
+
} from './columnFilteringFeature.types'
|
|
21
|
+
|
|
22
|
+
export function createFilteredRowModel<
|
|
23
|
+
TFeatures extends TableFeatures,
|
|
24
|
+
TData extends RowData = any,
|
|
25
|
+
>(
|
|
26
|
+
filterFns: Record<keyof FilterFns, FilterFn<TFeatures, TData>>,
|
|
27
|
+
): (table: Table<TFeatures, TData>) => () => RowModel<TFeatures, TData> {
|
|
28
|
+
return (_table) => {
|
|
29
|
+
const table = _table as Table_Internal<TFeatures, TData>
|
|
30
|
+
if (!table._rowModelFns.filterFns) table._rowModelFns.filterFns = filterFns
|
|
31
|
+
return tableMemo({
|
|
32
|
+
feature: 'columnFilteringFeature',
|
|
33
|
+
table,
|
|
34
|
+
fnName: 'table.getFilteredRowModel',
|
|
35
|
+
memoDeps: () => [
|
|
36
|
+
table.getPreFilteredRowModel(),
|
|
37
|
+
table.store.state.columnFilters,
|
|
38
|
+
table.store.state.globalFilter,
|
|
39
|
+
],
|
|
40
|
+
fn: () => _createFilteredRowModel(table),
|
|
41
|
+
onAfterUpdate: () => table_autoResetPageIndex(table),
|
|
42
|
+
})
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function _createFilteredRowModel<
|
|
47
|
+
TFeatures extends TableFeatures,
|
|
48
|
+
TData extends RowData = any,
|
|
49
|
+
>(table: Table_Internal<TFeatures, TData>): RowModel<TFeatures, TData> {
|
|
50
|
+
const rowModel = table.getPreFilteredRowModel()
|
|
51
|
+
const { columnFilters, globalFilter } = table.store.state
|
|
52
|
+
|
|
53
|
+
if (!rowModel.rows.length || (!columnFilters?.length && !globalFilter)) {
|
|
54
|
+
for (const row of rowModel.flatRows as Array<
|
|
55
|
+
Row<TFeatures, TData> & Partial<Row_ColumnFiltering<TFeatures, TData>>
|
|
56
|
+
>) {
|
|
57
|
+
row.columnFilters = {}
|
|
58
|
+
row.columnFiltersMeta = {}
|
|
59
|
+
}
|
|
60
|
+
return rowModel
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
const resolvedColumnFilters: Array<ResolvedColumnFilter<TFeatures, TData>> =
|
|
64
|
+
[]
|
|
65
|
+
const resolvedGlobalFilters: Array<ResolvedColumnFilter<TFeatures, TData>> =
|
|
66
|
+
[]
|
|
67
|
+
|
|
68
|
+
columnFilters?.forEach((columnFilter) => {
|
|
69
|
+
const column = table_getColumn(table, columnFilter.id)
|
|
70
|
+
|
|
71
|
+
if (!column) {
|
|
72
|
+
return
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
const filterFn = column_getFilterFn(column)!
|
|
76
|
+
|
|
77
|
+
resolvedColumnFilters.push({
|
|
78
|
+
id: columnFilter.id,
|
|
79
|
+
filterFn,
|
|
80
|
+
resolvedValue:
|
|
81
|
+
filterFn.resolveFilterValue?.(columnFilter.value) ?? columnFilter.value,
|
|
82
|
+
})
|
|
83
|
+
})
|
|
84
|
+
|
|
85
|
+
const filterableIds = columnFilters?.map((d) => d.id) ?? []
|
|
86
|
+
|
|
87
|
+
const globalFilterFn = table_getGlobalFilterFn(table)
|
|
88
|
+
|
|
89
|
+
const globallyFilterableColumns = table
|
|
90
|
+
.getAllLeafColumns()
|
|
91
|
+
.filter((column) => column_getCanGlobalFilter(column))
|
|
92
|
+
|
|
93
|
+
if (globalFilter && globalFilterFn && globallyFilterableColumns.length) {
|
|
94
|
+
filterableIds.push('__global__')
|
|
95
|
+
|
|
96
|
+
globallyFilterableColumns.forEach((column) => {
|
|
97
|
+
resolvedGlobalFilters.push({
|
|
98
|
+
id: column.id,
|
|
99
|
+
filterFn: globalFilterFn,
|
|
100
|
+
resolvedValue:
|
|
101
|
+
globalFilterFn.resolveFilterValue?.(globalFilter) ?? globalFilter,
|
|
102
|
+
})
|
|
103
|
+
})
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// Flag the pre-filtered row model with each filter state
|
|
107
|
+
for (const row of rowModel.flatRows as Array<
|
|
108
|
+
Row<TFeatures, TData> & Partial<Row_ColumnFiltering<TFeatures, TData>>
|
|
109
|
+
>) {
|
|
110
|
+
row.columnFilters = {}
|
|
111
|
+
|
|
112
|
+
if (resolvedColumnFilters.length) {
|
|
113
|
+
for (const currentColumnFilter of resolvedColumnFilters) {
|
|
114
|
+
const id = currentColumnFilter.id
|
|
115
|
+
|
|
116
|
+
// Tag the row with the column filter state
|
|
117
|
+
row.columnFilters[id] = currentColumnFilter.filterFn(
|
|
118
|
+
row,
|
|
119
|
+
id,
|
|
120
|
+
currentColumnFilter.resolvedValue,
|
|
121
|
+
(filterMeta) => {
|
|
122
|
+
!row.columnFiltersMeta
|
|
123
|
+
? (row.columnFiltersMeta = {})
|
|
124
|
+
: (row.columnFiltersMeta[id] = filterMeta)
|
|
125
|
+
},
|
|
126
|
+
)
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
if (resolvedGlobalFilters.length) {
|
|
131
|
+
for (const currentGlobalFilter of resolvedGlobalFilters) {
|
|
132
|
+
const id = currentGlobalFilter.id
|
|
133
|
+
// Tag the row with the first truthy global filter state
|
|
134
|
+
if (
|
|
135
|
+
currentGlobalFilter.filterFn(
|
|
136
|
+
row,
|
|
137
|
+
id,
|
|
138
|
+
currentGlobalFilter.resolvedValue,
|
|
139
|
+
(filterMeta) => {
|
|
140
|
+
!row.columnFiltersMeta
|
|
141
|
+
? (row.columnFiltersMeta = {})
|
|
142
|
+
: (row.columnFiltersMeta[id] = filterMeta)
|
|
143
|
+
},
|
|
144
|
+
)
|
|
145
|
+
) {
|
|
146
|
+
row.columnFilters.__global__ = true
|
|
147
|
+
break
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
if (row.columnFilters.__global__ !== true) {
|
|
152
|
+
row.columnFilters.__global__ = false
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
const filterRowsImpl = (
|
|
158
|
+
row: Row<TFeatures, TData> & Row_ColumnFiltering<TFeatures, TData>,
|
|
159
|
+
) => {
|
|
160
|
+
// Horizontally filter rows through each column
|
|
161
|
+
for (const columnId of filterableIds) {
|
|
162
|
+
if (row.columnFilters[columnId] === false) {
|
|
163
|
+
return false
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return true
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
// Filter final rows using all of the active filters
|
|
170
|
+
return filterRows(rowModel.rows, filterRowsImpl as any, table)
|
|
171
|
+
}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { constructRow } from '../../core/rows/constructRow'
|
|
2
|
+
import type { Row_ColumnFiltering } from './columnFilteringFeature.types'
|
|
3
|
+
import type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'
|
|
4
|
+
import type { Row } from '../../types/Row'
|
|
5
|
+
import type { Table_Internal } from '../../types/Table'
|
|
6
|
+
import type { TableFeatures } from '../../types/TableFeatures'
|
|
7
|
+
import type { RowData } from '../../types/type-utils'
|
|
8
|
+
|
|
9
|
+
export function filterRows<
|
|
10
|
+
TFeatures extends TableFeatures,
|
|
11
|
+
TData extends RowData,
|
|
12
|
+
>(
|
|
13
|
+
rows: Array<Row<TFeatures, TData>>,
|
|
14
|
+
filterRowImpl: (row: Row<TFeatures, TData>) => any,
|
|
15
|
+
table: Table_Internal<TFeatures, TData>,
|
|
16
|
+
) {
|
|
17
|
+
if (table.options.filterFromLeafRows) {
|
|
18
|
+
return filterRowModelFromLeafs(rows, filterRowImpl, table)
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
return filterRowModelFromRoot(rows, filterRowImpl, table)
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function filterRowModelFromLeafs<
|
|
25
|
+
TFeatures extends TableFeatures,
|
|
26
|
+
TData extends RowData,
|
|
27
|
+
>(
|
|
28
|
+
rowsToFilter: Array<Row<TFeatures, TData>>,
|
|
29
|
+
filterRow: (
|
|
30
|
+
row: Row<TFeatures, TData>,
|
|
31
|
+
) => Array<Row<TFeatures, TData>> | undefined,
|
|
32
|
+
table: Table_Internal<TFeatures, TData>,
|
|
33
|
+
): RowModel<TFeatures, TData> {
|
|
34
|
+
const newFilteredFlatRows: Array<Row<TFeatures, TData>> = []
|
|
35
|
+
const newFilteredRowsById: Record<string, Row<TFeatures, TData>> = {}
|
|
36
|
+
const maxDepth = table.options.maxLeafRowFilterDepth ?? 100
|
|
37
|
+
|
|
38
|
+
const recurseFilterRows = (
|
|
39
|
+
rowsToFilter: Array<
|
|
40
|
+
Row<TFeatures, TData> & Partial<Row_ColumnFiltering<TFeatures, TData>>
|
|
41
|
+
>,
|
|
42
|
+
depth = 0,
|
|
43
|
+
) => {
|
|
44
|
+
const filteredRows: Array<Row<TFeatures, TData>> &
|
|
45
|
+
Partial<Row_ColumnFiltering<TFeatures, TData>> = []
|
|
46
|
+
|
|
47
|
+
// Filter from children up first
|
|
48
|
+
for (let row of rowsToFilter) {
|
|
49
|
+
const newRow = constructRow(
|
|
50
|
+
table,
|
|
51
|
+
row.id,
|
|
52
|
+
row.original,
|
|
53
|
+
row.index,
|
|
54
|
+
row.depth,
|
|
55
|
+
undefined,
|
|
56
|
+
row.parentId,
|
|
57
|
+
) as Row<TFeatures, TData> &
|
|
58
|
+
Partial<Row_ColumnFiltering<TFeatures, TData>>
|
|
59
|
+
newRow.columnFilters = row.columnFilters
|
|
60
|
+
|
|
61
|
+
if (row.subRows.length && depth < maxDepth) {
|
|
62
|
+
newRow.subRows = recurseFilterRows(row.subRows, depth + 1)
|
|
63
|
+
row = newRow
|
|
64
|
+
|
|
65
|
+
if (filterRow(row) && !newRow.subRows.length) {
|
|
66
|
+
filteredRows.push(row)
|
|
67
|
+
newFilteredRowsById[row.id] = row
|
|
68
|
+
newFilteredFlatRows.push(row)
|
|
69
|
+
continue
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if (filterRow(row) || newRow.subRows.length) {
|
|
73
|
+
filteredRows.push(row)
|
|
74
|
+
newFilteredRowsById[row.id] = row
|
|
75
|
+
newFilteredFlatRows.push(row)
|
|
76
|
+
continue
|
|
77
|
+
}
|
|
78
|
+
} else {
|
|
79
|
+
row = newRow
|
|
80
|
+
if (filterRow(row)) {
|
|
81
|
+
filteredRows.push(row)
|
|
82
|
+
newFilteredRowsById[row.id] = row
|
|
83
|
+
newFilteredFlatRows.push(row)
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return filteredRows
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return {
|
|
92
|
+
rows: recurseFilterRows(rowsToFilter),
|
|
93
|
+
flatRows: newFilteredFlatRows,
|
|
94
|
+
rowsById: newFilteredRowsById,
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
function filterRowModelFromRoot<
|
|
99
|
+
TFeatures extends TableFeatures,
|
|
100
|
+
TData extends RowData,
|
|
101
|
+
>(
|
|
102
|
+
rowsToFilter: Array<Row<TFeatures, TData>>,
|
|
103
|
+
filterRow: (row: Row<TFeatures, TData>) => any,
|
|
104
|
+
table: Table_Internal<TFeatures, TData>,
|
|
105
|
+
): RowModel<TFeatures, TData> {
|
|
106
|
+
const newFilteredFlatRows: Array<Row<TFeatures, TData>> = []
|
|
107
|
+
const newFilteredRowsById: Record<string, Row<TFeatures, TData>> = {}
|
|
108
|
+
const maxDepth = table.options.maxLeafRowFilterDepth ?? 100
|
|
109
|
+
|
|
110
|
+
// Filters top level and nested rows
|
|
111
|
+
const recurseFilterRows = (
|
|
112
|
+
rowsToFilter: Array<Row<TFeatures, TData>>,
|
|
113
|
+
depth = 0,
|
|
114
|
+
) => {
|
|
115
|
+
// Filter from parents downward first
|
|
116
|
+
|
|
117
|
+
const filteredRows: Array<Row<TFeatures, TData>> = []
|
|
118
|
+
|
|
119
|
+
// Apply the filter to any subRows
|
|
120
|
+
for (let row of rowsToFilter) {
|
|
121
|
+
const pass = filterRow(row)
|
|
122
|
+
|
|
123
|
+
if (pass) {
|
|
124
|
+
if (row.subRows.length && depth < maxDepth) {
|
|
125
|
+
const newRow = constructRow(
|
|
126
|
+
table,
|
|
127
|
+
row.id,
|
|
128
|
+
row.original,
|
|
129
|
+
row.index,
|
|
130
|
+
row.depth,
|
|
131
|
+
undefined,
|
|
132
|
+
row.parentId,
|
|
133
|
+
)
|
|
134
|
+
newRow.subRows = recurseFilterRows(row.subRows, depth + 1)
|
|
135
|
+
row = newRow
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
filteredRows.push(row)
|
|
139
|
+
newFilteredFlatRows.push(row)
|
|
140
|
+
newFilteredRowsById[row.id] = row
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
return filteredRows
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
return {
|
|
148
|
+
rows: recurseFilterRows(rowsToFilter),
|
|
149
|
+
flatRows: newFilteredFlatRows,
|
|
150
|
+
rowsById: newFilteredRowsById,
|
|
151
|
+
}
|
|
152
|
+
}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import {
|
|
2
|
+
assignPrototypeAPIs,
|
|
3
|
+
assignTableAPIs,
|
|
4
|
+
makeStateUpdater,
|
|
5
|
+
} from '../../utils'
|
|
6
|
+
import {
|
|
7
|
+
cell_getIsAggregated,
|
|
8
|
+
cell_getIsGrouped,
|
|
9
|
+
cell_getIsPlaceholder,
|
|
10
|
+
column_getAggregationFn,
|
|
11
|
+
column_getAutoAggregationFn,
|
|
12
|
+
column_getCanGroup,
|
|
13
|
+
column_getGroupedIndex,
|
|
14
|
+
column_getIsGrouped,
|
|
15
|
+
column_getToggleGroupingHandler,
|
|
16
|
+
column_toggleGrouping,
|
|
17
|
+
getDefaultGroupingState,
|
|
18
|
+
row_getGroupingValue,
|
|
19
|
+
row_getIsGrouped,
|
|
20
|
+
table_resetGrouping,
|
|
21
|
+
table_setGrouping,
|
|
22
|
+
} from './columnGroupingFeature.utils'
|
|
23
|
+
import type { RowData } from '../../types/type-utils'
|
|
24
|
+
import type { TableFeature, TableFeatures } from '../../types/TableFeatures'
|
|
25
|
+
// import type {
|
|
26
|
+
// CachedRowModel_Grouped,
|
|
27
|
+
// Cell_ColumnGrouping,
|
|
28
|
+
// ColumnDef_ColumnGrouping,
|
|
29
|
+
// Column_ColumnGrouping,
|
|
30
|
+
// CreateRowModel_Grouped,
|
|
31
|
+
// RowModelFns_ColumnGrouping,
|
|
32
|
+
// Row_ColumnGrouping,
|
|
33
|
+
// TableOptions_ColumnGrouping,
|
|
34
|
+
// TableState_ColumnGrouping,
|
|
35
|
+
// Table_ColumnGrouping,
|
|
36
|
+
// } from './columnGroupingFeature.types'
|
|
37
|
+
|
|
38
|
+
interface ColumnGroupingFeatureConstructors<
|
|
39
|
+
TFeatures extends TableFeatures,
|
|
40
|
+
TData extends RowData,
|
|
41
|
+
> {
|
|
42
|
+
// CachedRowModel: CachedRowModel_Grouped<TFeatures, TData>
|
|
43
|
+
// Cell: Cell_ColumnGrouping
|
|
44
|
+
// Column: Column_ColumnGrouping<TFeatures, TData>
|
|
45
|
+
// ColumnDef: ColumnDef_ColumnGrouping<TFeatures, TData>
|
|
46
|
+
// CreateRowModels: CreateRowModel_Grouped<TFeatures, TData>
|
|
47
|
+
// Row: Row_ColumnGrouping
|
|
48
|
+
// RowModelFns: RowModelFns_ColumnGrouping<TFeatures, TData>
|
|
49
|
+
// Table: Table_ColumnGrouping<TFeatures, TData>
|
|
50
|
+
// TableOptions: TableOptions_ColumnGrouping
|
|
51
|
+
// TableState: TableState_ColumnGrouping
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export function constructColumnGroupingFeature<
|
|
55
|
+
TFeatures extends TableFeatures,
|
|
56
|
+
TData extends RowData,
|
|
57
|
+
>(): TableFeature<ColumnGroupingFeatureConstructors<TFeatures, TData>> {
|
|
58
|
+
return {
|
|
59
|
+
getInitialState: (initialState) => {
|
|
60
|
+
return {
|
|
61
|
+
grouping: getDefaultGroupingState(),
|
|
62
|
+
...initialState,
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
|
|
66
|
+
getDefaultColumnDef: () => {
|
|
67
|
+
return {
|
|
68
|
+
aggregatedCell: ({ getValue }: any) => getValue()?.toString?.() ?? null,
|
|
69
|
+
aggregationFn: 'auto',
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
|
|
73
|
+
getDefaultTableOptions: (table) => {
|
|
74
|
+
return {
|
|
75
|
+
onGroupingChange: makeStateUpdater('grouping', table),
|
|
76
|
+
groupedColumnMode: 'reorder',
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
|
|
80
|
+
assignCellPrototype: (prototype, table) => {
|
|
81
|
+
assignPrototypeAPIs('columnGroupingFeature', prototype, table, {
|
|
82
|
+
cell_getIsGrouped: {
|
|
83
|
+
fn: (cell) => cell_getIsGrouped(cell),
|
|
84
|
+
},
|
|
85
|
+
cell_getIsPlaceholder: {
|
|
86
|
+
fn: (cell) => cell_getIsPlaceholder(cell),
|
|
87
|
+
},
|
|
88
|
+
cell_getIsAggregated: {
|
|
89
|
+
fn: (cell) => cell_getIsAggregated(cell),
|
|
90
|
+
},
|
|
91
|
+
})
|
|
92
|
+
},
|
|
93
|
+
|
|
94
|
+
assignColumnPrototype: (prototype, table) => {
|
|
95
|
+
assignPrototypeAPIs('columnGroupingFeature', prototype, table, {
|
|
96
|
+
column_toggleGrouping: {
|
|
97
|
+
fn: (column) => column_toggleGrouping(column),
|
|
98
|
+
},
|
|
99
|
+
column_getCanGroup: {
|
|
100
|
+
fn: (column) => column_getCanGroup(column),
|
|
101
|
+
},
|
|
102
|
+
column_getIsGrouped: {
|
|
103
|
+
fn: (column) => column_getIsGrouped(column),
|
|
104
|
+
},
|
|
105
|
+
column_getGroupedIndex: {
|
|
106
|
+
fn: (column) => column_getGroupedIndex(column),
|
|
107
|
+
},
|
|
108
|
+
column_getToggleGroupingHandler: {
|
|
109
|
+
fn: (column) => column_getToggleGroupingHandler(column),
|
|
110
|
+
},
|
|
111
|
+
column_getAutoAggregationFn: {
|
|
112
|
+
fn: (column) => column_getAutoAggregationFn(column),
|
|
113
|
+
},
|
|
114
|
+
column_getAggregationFn: {
|
|
115
|
+
fn: (column) => column_getAggregationFn(column),
|
|
116
|
+
},
|
|
117
|
+
})
|
|
118
|
+
},
|
|
119
|
+
|
|
120
|
+
assignRowPrototype: (prototype, table) => {
|
|
121
|
+
assignPrototypeAPIs('columnGroupingFeature', prototype, table, {
|
|
122
|
+
row_getIsGrouped: {
|
|
123
|
+
fn: (row) => row_getIsGrouped(row),
|
|
124
|
+
},
|
|
125
|
+
row_getGroupingValue: {
|
|
126
|
+
fn: (row, columnId) => row_getGroupingValue(row, columnId),
|
|
127
|
+
},
|
|
128
|
+
})
|
|
129
|
+
},
|
|
130
|
+
|
|
131
|
+
initRowInstanceData: (row) => {
|
|
132
|
+
;(row as any)._groupingValuesCache = {}
|
|
133
|
+
},
|
|
134
|
+
|
|
135
|
+
constructTableAPIs: (table) => {
|
|
136
|
+
assignTableAPIs('columnGroupingFeature', table, {
|
|
137
|
+
table_setGrouping: {
|
|
138
|
+
fn: (updater) => table_setGrouping(table, updater),
|
|
139
|
+
},
|
|
140
|
+
table_resetGrouping: {
|
|
141
|
+
fn: (defaultState) => table_resetGrouping(table, defaultState),
|
|
142
|
+
},
|
|
143
|
+
})
|
|
144
|
+
},
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* The (Column) Grouping feature adds column grouping state and APIs to the table, row, column, and cell objects.
|
|
150
|
+
*/
|
|
151
|
+
export const columnGroupingFeature = constructColumnGroupingFeature()
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
import type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'
|
|
2
|
+
import type { Table } from '../../types/Table'
|
|
3
|
+
import type { BuiltInAggregationFn } from '../../fns/aggregationFns'
|
|
4
|
+
import type {
|
|
5
|
+
CellData,
|
|
6
|
+
OnChangeFn,
|
|
7
|
+
RowData,
|
|
8
|
+
Updater,
|
|
9
|
+
} from '../../types/type-utils'
|
|
10
|
+
import type { TableFeatures } from '../../types/TableFeatures'
|
|
11
|
+
import type { Row } from '../../types/Row'
|
|
12
|
+
import type { Cell } from '../../types/Cell'
|
|
13
|
+
import type { ColumnDefTemplate } from '../../types/ColumnDef'
|
|
14
|
+
|
|
15
|
+
export type GroupingState = Array<string>
|
|
16
|
+
|
|
17
|
+
export interface TableState_ColumnGrouping {
|
|
18
|
+
grouping: GroupingState
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface RowModelFns_ColumnGrouping<
|
|
22
|
+
TFeatures extends TableFeatures,
|
|
23
|
+
TData extends RowData,
|
|
24
|
+
> {
|
|
25
|
+
aggregationFns: Record<keyof AggregationFns, AggregationFn<TFeatures, TData>>
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export interface AggregationFns {}
|
|
29
|
+
|
|
30
|
+
export type AggregationFn<
|
|
31
|
+
TFeatures extends TableFeatures,
|
|
32
|
+
TData extends RowData,
|
|
33
|
+
> = (
|
|
34
|
+
columnId: string,
|
|
35
|
+
leafRows: Array<Row<TFeatures, TData>>,
|
|
36
|
+
childRows: Array<Row<TFeatures, TData>>,
|
|
37
|
+
) => any
|
|
38
|
+
|
|
39
|
+
export type CustomAggregationFns<
|
|
40
|
+
TFeatures extends TableFeatures,
|
|
41
|
+
TData extends RowData,
|
|
42
|
+
> = Record<string, AggregationFn<TFeatures, TData>>
|
|
43
|
+
|
|
44
|
+
export type AggregationFnOption<
|
|
45
|
+
TFeatures extends TableFeatures,
|
|
46
|
+
TData extends RowData,
|
|
47
|
+
> =
|
|
48
|
+
| 'auto'
|
|
49
|
+
| keyof AggregationFns
|
|
50
|
+
| BuiltInAggregationFn
|
|
51
|
+
| AggregationFn<TFeatures, TData>
|
|
52
|
+
|
|
53
|
+
export interface ColumnDef_ColumnGrouping<
|
|
54
|
+
TFeatures extends TableFeatures,
|
|
55
|
+
TData extends RowData,
|
|
56
|
+
TValue extends CellData = CellData,
|
|
57
|
+
> {
|
|
58
|
+
/**
|
|
59
|
+
* The cell to display each row for the column if the cell is an aggregate. If a function is passed, it will be passed a props object with the context of the cell and should return the property type for your adapter (the exact type depends on the adapter being used).
|
|
60
|
+
*/
|
|
61
|
+
aggregatedCell?: ColumnDefTemplate<
|
|
62
|
+
ReturnType<Cell<TFeatures, TData, TValue>['getContext']>
|
|
63
|
+
>
|
|
64
|
+
/**
|
|
65
|
+
* The resolved aggregation function for the column.
|
|
66
|
+
*/
|
|
67
|
+
aggregationFn?: AggregationFnOption<TFeatures, TData>
|
|
68
|
+
/**
|
|
69
|
+
* Enables/disables grouping for this column.
|
|
70
|
+
*/
|
|
71
|
+
enableGrouping?: boolean
|
|
72
|
+
/**
|
|
73
|
+
* Specify a value to be used for grouping rows on this column. If this option is not specified, the value derived from `accessorKey` / `accessorFn` will be used instead.
|
|
74
|
+
*/
|
|
75
|
+
getGroupingValue?: (row: TData) => any
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export interface Column_ColumnGrouping<
|
|
79
|
+
TFeatures extends TableFeatures,
|
|
80
|
+
TData extends RowData,
|
|
81
|
+
> {
|
|
82
|
+
/**
|
|
83
|
+
* Returns the aggregation function for the column.
|
|
84
|
+
*/
|
|
85
|
+
getAggregationFn: () => AggregationFn<TFeatures, TData> | undefined
|
|
86
|
+
/**
|
|
87
|
+
* Returns the automatically inferred aggregation function for the column.
|
|
88
|
+
*/
|
|
89
|
+
getAutoAggregationFn: () => AggregationFn<TFeatures, TData> | undefined
|
|
90
|
+
/**
|
|
91
|
+
* Returns whether or not the column can be grouped.
|
|
92
|
+
*/
|
|
93
|
+
getCanGroup: () => boolean
|
|
94
|
+
/**
|
|
95
|
+
* Returns the index of the column in the grouping state.
|
|
96
|
+
*/
|
|
97
|
+
getGroupedIndex: () => number
|
|
98
|
+
/**
|
|
99
|
+
* Returns whether or not the column is currently grouped.
|
|
100
|
+
*/
|
|
101
|
+
getIsGrouped: () => boolean
|
|
102
|
+
/**
|
|
103
|
+
* Returns a function that toggles the grouping state of the column. This is useful for passing to the `onClick` prop of a button.
|
|
104
|
+
*/
|
|
105
|
+
getToggleGroupingHandler: () => () => void
|
|
106
|
+
/**
|
|
107
|
+
* Toggles the grouping state of the column.
|
|
108
|
+
*/
|
|
109
|
+
toggleGrouping: () => void
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export interface Row_ColumnGrouping {
|
|
113
|
+
_groupingValuesCache: Record<string, any>
|
|
114
|
+
/**
|
|
115
|
+
* Returns the grouping value for any row and column (including leaf rows).
|
|
116
|
+
*/
|
|
117
|
+
getGroupingValue: (columnId: string) => unknown
|
|
118
|
+
/**
|
|
119
|
+
* Returns whether or not the row is currently grouped.
|
|
120
|
+
*/
|
|
121
|
+
getIsGrouped: () => boolean
|
|
122
|
+
/**
|
|
123
|
+
* If this row is grouped, this is the id of the column that this row is grouped by.
|
|
124
|
+
*/
|
|
125
|
+
groupingColumnId?: string
|
|
126
|
+
/**
|
|
127
|
+
* If this row is grouped, this is the unique/shared value for the `groupingColumnId` for all of the rows in this group.
|
|
128
|
+
*/
|
|
129
|
+
groupingValue?: unknown
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
export interface Cell_ColumnGrouping {
|
|
133
|
+
/**
|
|
134
|
+
* Returns whether or not the cell is currently aggregated.
|
|
135
|
+
*/
|
|
136
|
+
getIsAggregated: () => boolean
|
|
137
|
+
/**
|
|
138
|
+
* Returns whether or not the cell is currently grouped.
|
|
139
|
+
*/
|
|
140
|
+
getIsGrouped: () => boolean
|
|
141
|
+
/**
|
|
142
|
+
* Returns whether or not the cell is currently a placeholder cell.
|
|
143
|
+
*/
|
|
144
|
+
getIsPlaceholder: () => boolean
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
export interface ColumnDefaultOptions {
|
|
148
|
+
enableGrouping: boolean
|
|
149
|
+
onGroupingChange: OnChangeFn<GroupingState>
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
export interface TableOptions_ColumnGrouping {
|
|
153
|
+
/**
|
|
154
|
+
* Enables/disables grouping for the table.
|
|
155
|
+
*/
|
|
156
|
+
enableGrouping?: boolean
|
|
157
|
+
/**
|
|
158
|
+
* Grouping columns are automatically reordered by default to the start of the columns list. If you would rather remove them or leave them as-is, set the appropriate mode here.
|
|
159
|
+
*/
|
|
160
|
+
groupedColumnMode?: false | 'reorder' | 'remove'
|
|
161
|
+
/**
|
|
162
|
+
* Enables manual grouping. If this option is set to `true`, the table will not automatically group rows using `getGroupedRowModel()` and instead will expect you to manually group the rows before passing them to the table. This is useful if you are doing server-side grouping and aggregation.
|
|
163
|
+
*/
|
|
164
|
+
manualGrouping?: boolean
|
|
165
|
+
/**
|
|
166
|
+
* If this function is provided, it will be called when the grouping state changes and you will be expected to manage the state yourself. You can pass the managed state back to the table via the `tableOptions.state.grouping` option.
|
|
167
|
+
*/
|
|
168
|
+
onGroupingChange?: OnChangeFn<GroupingState>
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
export type GroupingColumnMode = false | 'reorder' | 'remove'
|
|
172
|
+
|
|
173
|
+
export interface Table_ColumnGrouping<
|
|
174
|
+
TFeatures extends TableFeatures,
|
|
175
|
+
TData extends RowData,
|
|
176
|
+
> {
|
|
177
|
+
/**
|
|
178
|
+
* Resets the **grouping** state to `initialState.grouping`, or `true` can be passed to force a default blank state reset to `[]`.
|
|
179
|
+
*/
|
|
180
|
+
resetGrouping: (defaultState?: boolean) => void
|
|
181
|
+
/**
|
|
182
|
+
* Updates the grouping state of the table via an update function or value.
|
|
183
|
+
*/
|
|
184
|
+
setGrouping: (updater: Updater<GroupingState>) => void
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
export interface Table_RowModels_Grouped<
|
|
188
|
+
TFeatures extends TableFeatures,
|
|
189
|
+
TData extends RowData,
|
|
190
|
+
> {
|
|
191
|
+
/**
|
|
192
|
+
* Returns the row model for the table after grouping has been applied.
|
|
193
|
+
*/
|
|
194
|
+
getGroupedRowModel: () => RowModel<TFeatures, TData>
|
|
195
|
+
/**
|
|
196
|
+
* Returns the row model for the table before any grouping has been applied.
|
|
197
|
+
*/
|
|
198
|
+
getPreGroupedRowModel: () => RowModel<TFeatures, TData>
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
export interface CreateRowModel_Grouped<
|
|
202
|
+
TFeatures extends TableFeatures,
|
|
203
|
+
TData extends RowData,
|
|
204
|
+
> {
|
|
205
|
+
/**
|
|
206
|
+
* Returns the row model after grouping has taken place, but no further.
|
|
207
|
+
*/
|
|
208
|
+
groupedRowModel?: (
|
|
209
|
+
table: Table<TFeatures, TData>,
|
|
210
|
+
) => () => RowModel<TFeatures, TData>
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
export interface CachedRowModel_Grouped<
|
|
214
|
+
TFeatures extends TableFeatures,
|
|
215
|
+
TData extends RowData,
|
|
216
|
+
> {
|
|
217
|
+
groupedRowModel: () => RowModel<TFeatures, TData>
|
|
218
|
+
}
|