@tanstack/table-core 9.0.0-alpha.10 → 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 -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 +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 -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,464 @@
|
|
|
1
|
+
import type { RowData, Updater } from '../../types/type-utils'
|
|
2
|
+
import type { TableFeatures } from '../../types/TableFeatures'
|
|
3
|
+
import type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'
|
|
4
|
+
import type { Table_Internal } from '../../types/Table'
|
|
5
|
+
import type { Row } from '../../types/Row'
|
|
6
|
+
import type { RowSelectionState } from './rowSelectionFeature.types'
|
|
7
|
+
|
|
8
|
+
// State APIs
|
|
9
|
+
|
|
10
|
+
export function getDefaultRowSelectionState(): RowSelectionState {
|
|
11
|
+
return structuredClone({})
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function table_setRowSelection<
|
|
15
|
+
TFeatures extends TableFeatures,
|
|
16
|
+
TData extends RowData,
|
|
17
|
+
>(
|
|
18
|
+
table: Table_Internal<TFeatures, TData>,
|
|
19
|
+
updater: Updater<RowSelectionState>,
|
|
20
|
+
) {
|
|
21
|
+
table.options.onRowSelectionChange?.(updater)
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export function table_resetRowSelection<
|
|
25
|
+
TFeatures extends TableFeatures,
|
|
26
|
+
TData extends RowData,
|
|
27
|
+
>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {
|
|
28
|
+
table_setRowSelection(
|
|
29
|
+
table,
|
|
30
|
+
defaultState ? {} : (table.initialState.rowSelection ?? {}),
|
|
31
|
+
)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Table APIs
|
|
35
|
+
|
|
36
|
+
export function table_toggleAllRowsSelected<
|
|
37
|
+
TFeatures extends TableFeatures,
|
|
38
|
+
TData extends RowData,
|
|
39
|
+
>(table: Table_Internal<TFeatures, TData>, value?: boolean) {
|
|
40
|
+
table_setRowSelection(table, (old) => {
|
|
41
|
+
value =
|
|
42
|
+
typeof value !== 'undefined' ? value : !table_getIsAllRowsSelected(table)
|
|
43
|
+
|
|
44
|
+
const rowSelection = { ...old }
|
|
45
|
+
|
|
46
|
+
const preGroupedFlatRows = table.getPreGroupedRowModel().flatRows
|
|
47
|
+
|
|
48
|
+
// We don't use `mutateRowIsSelected` here for performance reasons.
|
|
49
|
+
// All of the rows are flat already, so it wouldn't be worth it
|
|
50
|
+
if (value) {
|
|
51
|
+
preGroupedFlatRows.forEach((row) => {
|
|
52
|
+
if (!row_getCanSelect(row)) {
|
|
53
|
+
return
|
|
54
|
+
}
|
|
55
|
+
rowSelection[row.id] = true
|
|
56
|
+
})
|
|
57
|
+
} else {
|
|
58
|
+
preGroupedFlatRows.forEach((row) => {
|
|
59
|
+
delete rowSelection[row.id]
|
|
60
|
+
})
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return rowSelection
|
|
64
|
+
})
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export function table_toggleAllPageRowsSelected<
|
|
68
|
+
TFeatures extends TableFeatures,
|
|
69
|
+
TData extends RowData,
|
|
70
|
+
>(table: Table_Internal<TFeatures, TData>, value?: boolean) {
|
|
71
|
+
table_setRowSelection(table, (old) => {
|
|
72
|
+
const resolvedValue =
|
|
73
|
+
typeof value !== 'undefined'
|
|
74
|
+
? value
|
|
75
|
+
: !table_getIsAllPageRowsSelected(table)
|
|
76
|
+
|
|
77
|
+
const rowSelection: RowSelectionState = { ...old }
|
|
78
|
+
|
|
79
|
+
table.getRowModel().rows.forEach((row) => {
|
|
80
|
+
mutateRowIsSelected(rowSelection, row.id, resolvedValue, true, table)
|
|
81
|
+
})
|
|
82
|
+
|
|
83
|
+
return rowSelection
|
|
84
|
+
})
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export function table_getPreSelectedRowModel<
|
|
88
|
+
TFeatures extends TableFeatures,
|
|
89
|
+
TData extends RowData,
|
|
90
|
+
>(table: Table_Internal<TFeatures, TData>): RowModel<TFeatures, TData> {
|
|
91
|
+
return table.getCoreRowModel()
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export function table_getSelectedRowModel<
|
|
95
|
+
TFeatures extends TableFeatures,
|
|
96
|
+
TData extends RowData,
|
|
97
|
+
>(table: Table_Internal<TFeatures, TData>) {
|
|
98
|
+
const rowModel = table.getCoreRowModel()
|
|
99
|
+
|
|
100
|
+
if (!Object.keys(table.store.state.rowSelection ?? {}).length) {
|
|
101
|
+
return {
|
|
102
|
+
rows: [],
|
|
103
|
+
flatRows: [],
|
|
104
|
+
rowsById: {},
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
return selectRowsFn(rowModel)
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export function table_getFilteredSelectedRowModel<
|
|
112
|
+
TFeatures extends TableFeatures,
|
|
113
|
+
TData extends RowData,
|
|
114
|
+
>(table: Table_Internal<TFeatures, TData>) {
|
|
115
|
+
const rowModel = table.getCoreRowModel()
|
|
116
|
+
|
|
117
|
+
if (!Object.keys(table.store.state.rowSelection ?? {}).length) {
|
|
118
|
+
return {
|
|
119
|
+
rows: [],
|
|
120
|
+
flatRows: [],
|
|
121
|
+
rowsById: {},
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
return selectRowsFn(rowModel)
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
export function table_getGroupedSelectedRowModel<
|
|
129
|
+
TFeatures extends TableFeatures,
|
|
130
|
+
TData extends RowData,
|
|
131
|
+
>(table: Table_Internal<TFeatures, TData>) {
|
|
132
|
+
const rowModel = table.getCoreRowModel()
|
|
133
|
+
|
|
134
|
+
if (!Object.keys(table.store.state.rowSelection ?? {}).length) {
|
|
135
|
+
return {
|
|
136
|
+
rows: [],
|
|
137
|
+
flatRows: [],
|
|
138
|
+
rowsById: {},
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
return selectRowsFn(rowModel)
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
export function table_getIsAllRowsSelected<
|
|
146
|
+
TFeatures extends TableFeatures,
|
|
147
|
+
TData extends RowData,
|
|
148
|
+
>(table: Table_Internal<TFeatures, TData>) {
|
|
149
|
+
const preGroupedFlatRows = table.getFilteredRowModel().flatRows
|
|
150
|
+
const rowSelection =
|
|
151
|
+
table.store.state.rowSelection ?? ({} as RowSelectionState)
|
|
152
|
+
|
|
153
|
+
let isAllRowsSelected = Boolean(
|
|
154
|
+
preGroupedFlatRows.length && Object.keys(rowSelection).length,
|
|
155
|
+
)
|
|
156
|
+
|
|
157
|
+
if (isAllRowsSelected) {
|
|
158
|
+
if (
|
|
159
|
+
preGroupedFlatRows.some(
|
|
160
|
+
(row) => row_getCanSelect(row) && !rowSelection[row.id],
|
|
161
|
+
)
|
|
162
|
+
) {
|
|
163
|
+
isAllRowsSelected = false
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
return isAllRowsSelected
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
export function table_getIsAllPageRowsSelected<
|
|
171
|
+
TFeatures extends TableFeatures,
|
|
172
|
+
TData extends RowData,
|
|
173
|
+
>(table: Table_Internal<TFeatures, TData>) {
|
|
174
|
+
const paginationFlatRows = table
|
|
175
|
+
.getPaginatedRowModel()
|
|
176
|
+
.flatRows.filter((row) => row_getCanSelect(row))
|
|
177
|
+
const rowSelection =
|
|
178
|
+
table.store.state.rowSelection ?? ({} as RowSelectionState)
|
|
179
|
+
|
|
180
|
+
let isAllPageRowsSelected = !!paginationFlatRows.length
|
|
181
|
+
|
|
182
|
+
if (
|
|
183
|
+
isAllPageRowsSelected &&
|
|
184
|
+
paginationFlatRows.some((row) => !rowSelection[row.id])
|
|
185
|
+
) {
|
|
186
|
+
isAllPageRowsSelected = false
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
return isAllPageRowsSelected
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
export function table_getIsSomeRowsSelected<
|
|
193
|
+
TFeatures extends TableFeatures,
|
|
194
|
+
TData extends RowData,
|
|
195
|
+
>(table: Table_Internal<TFeatures, TData>) {
|
|
196
|
+
const totalSelected = Object.keys(table.store.state.rowSelection ?? {}).length
|
|
197
|
+
return (
|
|
198
|
+
totalSelected > 0 &&
|
|
199
|
+
totalSelected < table.getFilteredRowModel().flatRows.length
|
|
200
|
+
)
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
export function table_getIsSomePageRowsSelected<
|
|
204
|
+
TFeatures extends TableFeatures,
|
|
205
|
+
TData extends RowData,
|
|
206
|
+
>(table: Table_Internal<TFeatures, TData>) {
|
|
207
|
+
const paginationFlatRows = table.getPaginatedRowModel().flatRows
|
|
208
|
+
return table_getIsAllPageRowsSelected(table)
|
|
209
|
+
? false
|
|
210
|
+
: paginationFlatRows
|
|
211
|
+
.filter((row) => row_getCanSelect(row))
|
|
212
|
+
.some((row) => row_getIsSelected(row) || row_getIsSomeSelected(row))
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
export function table_getToggleAllRowsSelectedHandler<
|
|
216
|
+
TFeatures extends TableFeatures,
|
|
217
|
+
TData extends RowData,
|
|
218
|
+
>(table: Table_Internal<TFeatures, TData>) {
|
|
219
|
+
return (e: unknown) => {
|
|
220
|
+
table_toggleAllRowsSelected(
|
|
221
|
+
table,
|
|
222
|
+
((e as MouseEvent).target as HTMLInputElement).checked,
|
|
223
|
+
)
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
export function table_getToggleAllPageRowsSelectedHandler<
|
|
228
|
+
TFeatures extends TableFeatures,
|
|
229
|
+
TData extends RowData,
|
|
230
|
+
>(table: Table_Internal<TFeatures, TData>) {
|
|
231
|
+
return (e: unknown) => {
|
|
232
|
+
table_toggleAllPageRowsSelected(
|
|
233
|
+
table,
|
|
234
|
+
((e as MouseEvent).target as HTMLInputElement).checked,
|
|
235
|
+
)
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
// Row APIs
|
|
240
|
+
|
|
241
|
+
export function row_toggleSelected<
|
|
242
|
+
TFeatures extends TableFeatures,
|
|
243
|
+
TData extends RowData,
|
|
244
|
+
>(
|
|
245
|
+
row: Row<TFeatures, TData>,
|
|
246
|
+
value?: boolean,
|
|
247
|
+
opts?: {
|
|
248
|
+
selectChildren?: boolean
|
|
249
|
+
},
|
|
250
|
+
) {
|
|
251
|
+
const isSelected = row_getIsSelected(row)
|
|
252
|
+
|
|
253
|
+
table_setRowSelection(row.table, (old) => {
|
|
254
|
+
value = typeof value !== 'undefined' ? value : !isSelected
|
|
255
|
+
|
|
256
|
+
if (row_getCanSelect(row) && isSelected === value) {
|
|
257
|
+
return old
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
const selectedRowIds = { ...old }
|
|
261
|
+
|
|
262
|
+
mutateRowIsSelected(
|
|
263
|
+
selectedRowIds,
|
|
264
|
+
row.id,
|
|
265
|
+
value,
|
|
266
|
+
opts?.selectChildren ?? true,
|
|
267
|
+
row.table,
|
|
268
|
+
)
|
|
269
|
+
|
|
270
|
+
return selectedRowIds
|
|
271
|
+
})
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
export function row_getIsSelected<
|
|
275
|
+
TFeatures extends TableFeatures,
|
|
276
|
+
TData extends RowData,
|
|
277
|
+
>(row: Row<TFeatures, TData>) {
|
|
278
|
+
return isRowSelected(row)
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
export function row_getIsSomeSelected<
|
|
282
|
+
TFeatures extends TableFeatures,
|
|
283
|
+
TData extends RowData,
|
|
284
|
+
>(row: Row<TFeatures, TData>) {
|
|
285
|
+
return isSubRowSelected(row) === 'some'
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
export function row_getIsAllSubRowsSelected<
|
|
289
|
+
TFeatures extends TableFeatures,
|
|
290
|
+
TData extends RowData,
|
|
291
|
+
>(row: Row<TFeatures, TData>) {
|
|
292
|
+
return isSubRowSelected(row) === 'all'
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
export function row_getCanSelect<
|
|
296
|
+
TFeatures extends TableFeatures,
|
|
297
|
+
TData extends RowData,
|
|
298
|
+
>(row: Row<TFeatures, TData>) {
|
|
299
|
+
const options = row.table.options
|
|
300
|
+
if (typeof options.enableRowSelection === 'function') {
|
|
301
|
+
return options.enableRowSelection(row)
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
return options.enableRowSelection ?? true
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
export function row_getCanSelectSubRows<
|
|
308
|
+
TFeatures extends TableFeatures,
|
|
309
|
+
TData extends RowData,
|
|
310
|
+
>(row: Row<TFeatures, TData>) {
|
|
311
|
+
const options = row.table.options
|
|
312
|
+
if (typeof options.enableSubRowSelection === 'function') {
|
|
313
|
+
return options.enableSubRowSelection(row)
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
return options.enableSubRowSelection ?? true
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
export function row_getCanMultiSelect<
|
|
320
|
+
TFeatures extends TableFeatures,
|
|
321
|
+
TData extends RowData,
|
|
322
|
+
>(row: Row<TFeatures, TData>) {
|
|
323
|
+
const options = row.table.options
|
|
324
|
+
if (typeof options.enableMultiRowSelection === 'function') {
|
|
325
|
+
return options.enableMultiRowSelection(row)
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
return options.enableMultiRowSelection ?? true
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
export function row_getToggleSelectedHandler<
|
|
332
|
+
TFeatures extends TableFeatures,
|
|
333
|
+
TData extends RowData,
|
|
334
|
+
>(row: Row<TFeatures, TData>) {
|
|
335
|
+
const canSelect = row_getCanSelect(row)
|
|
336
|
+
|
|
337
|
+
return (e: unknown) => {
|
|
338
|
+
if (!canSelect) return
|
|
339
|
+
row_toggleSelected(
|
|
340
|
+
row,
|
|
341
|
+
((e as MouseEvent).target as HTMLInputElement).checked,
|
|
342
|
+
)
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
const mutateRowIsSelected = <
|
|
347
|
+
TFeatures extends TableFeatures,
|
|
348
|
+
TData extends RowData,
|
|
349
|
+
>(
|
|
350
|
+
selectedRowIds: Record<string, boolean>,
|
|
351
|
+
rowId: string,
|
|
352
|
+
value: boolean,
|
|
353
|
+
includeChildren: boolean,
|
|
354
|
+
table: Table_Internal<TFeatures, TData>,
|
|
355
|
+
) => {
|
|
356
|
+
const row = table.getRow(rowId, true)
|
|
357
|
+
|
|
358
|
+
if (value) {
|
|
359
|
+
if (!row_getCanMultiSelect(row)) {
|
|
360
|
+
Object.keys(selectedRowIds).forEach((key) => delete selectedRowIds[key])
|
|
361
|
+
}
|
|
362
|
+
if (row_getCanSelect(row)) {
|
|
363
|
+
selectedRowIds[rowId] = true
|
|
364
|
+
}
|
|
365
|
+
} else {
|
|
366
|
+
delete selectedRowIds[rowId]
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
if (includeChildren && row.subRows.length && row_getCanSelectSubRows(row)) {
|
|
370
|
+
row.subRows.forEach((r) =>
|
|
371
|
+
mutateRowIsSelected(selectedRowIds, r.id, value, includeChildren, table),
|
|
372
|
+
)
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
export function selectRowsFn<
|
|
377
|
+
TFeatures extends TableFeatures,
|
|
378
|
+
TData extends RowData,
|
|
379
|
+
>(rowModel: RowModel<TFeatures, TData>): RowModel<TFeatures, TData> {
|
|
380
|
+
const newSelectedFlatRows: Array<Row<TFeatures, TData>> = []
|
|
381
|
+
const newSelectedRowsById: Record<string, Row<TFeatures, TData>> = {}
|
|
382
|
+
|
|
383
|
+
// Filters top level and nested rows
|
|
384
|
+
const recurseRows = (
|
|
385
|
+
rows: Array<Row<TFeatures, TData>>,
|
|
386
|
+
depth = 0,
|
|
387
|
+
): Array<Row<TFeatures, TData>> => {
|
|
388
|
+
return rows
|
|
389
|
+
.map((row) => {
|
|
390
|
+
const isSelected = isRowSelected(row)
|
|
391
|
+
|
|
392
|
+
if (isSelected) {
|
|
393
|
+
newSelectedFlatRows.push(row)
|
|
394
|
+
newSelectedRowsById[row.id] = row
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
if (row.subRows.length) {
|
|
398
|
+
row = {
|
|
399
|
+
...row,
|
|
400
|
+
subRows: recurseRows(row.subRows, depth + 1),
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
if (isSelected) {
|
|
405
|
+
return row
|
|
406
|
+
}
|
|
407
|
+
})
|
|
408
|
+
.filter((x) => !!x)
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
return {
|
|
412
|
+
rows: recurseRows(rowModel.rows),
|
|
413
|
+
flatRows: newSelectedFlatRows,
|
|
414
|
+
rowsById: newSelectedRowsById,
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
export function isRowSelected<
|
|
419
|
+
TFeatures extends TableFeatures,
|
|
420
|
+
TData extends RowData,
|
|
421
|
+
>(row: Row<TFeatures, TData>): boolean {
|
|
422
|
+
return (row.table.store.state.rowSelection ?? {})[row.id] ?? false
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
export function isSubRowSelected<
|
|
426
|
+
TFeatures extends TableFeatures,
|
|
427
|
+
TData extends RowData,
|
|
428
|
+
>(row: Row<TFeatures, TData>): boolean | 'some' | 'all' {
|
|
429
|
+
if (!row.subRows.length) return false
|
|
430
|
+
|
|
431
|
+
let allChildrenSelected = true
|
|
432
|
+
let someSelected = false
|
|
433
|
+
|
|
434
|
+
row.subRows.forEach((subRow) => {
|
|
435
|
+
// Bail out early if we know both of these
|
|
436
|
+
if (someSelected && !allChildrenSelected) {
|
|
437
|
+
return
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
if (row_getCanSelect(subRow)) {
|
|
441
|
+
if (isRowSelected(subRow)) {
|
|
442
|
+
someSelected = true
|
|
443
|
+
} else {
|
|
444
|
+
allChildrenSelected = false
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
// Check row selection of nested subrows
|
|
449
|
+
if (subRow.subRows.length) {
|
|
450
|
+
const subRowChildrenSelected = isSubRowSelected(subRow)
|
|
451
|
+
if (subRowChildrenSelected === 'all') {
|
|
452
|
+
someSelected = true
|
|
453
|
+
} else if (subRowChildrenSelected === 'some') {
|
|
454
|
+
someSelected = true
|
|
455
|
+
allChildrenSelected = false
|
|
456
|
+
} else {
|
|
457
|
+
allChildrenSelected = false
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
})
|
|
461
|
+
|
|
462
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
463
|
+
return allChildrenSelected ? 'all' : someSelected ? 'some' : false
|
|
464
|
+
}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { tableMemo } from '../../utils'
|
|
2
|
+
import { table_autoResetPageIndex } from '../row-pagination/rowPaginationFeature.utils'
|
|
3
|
+
import { column_getCanSort, column_getSortFn } from './rowSortingFeature.utils'
|
|
4
|
+
import type { Column_Internal } from '../../types/Column'
|
|
5
|
+
import type { TableFeatures } from '../../types/TableFeatures'
|
|
6
|
+
import type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'
|
|
7
|
+
import type { Table, Table_Internal } from '../../types/Table'
|
|
8
|
+
import type { Row } from '../../types/Row'
|
|
9
|
+
import type { SortFn, SortFns } from './rowSortingFeature.types'
|
|
10
|
+
import type { RowData } from '../../types/type-utils'
|
|
11
|
+
|
|
12
|
+
export function createSortedRowModel<
|
|
13
|
+
TFeatures extends TableFeatures,
|
|
14
|
+
TData extends RowData,
|
|
15
|
+
>(
|
|
16
|
+
sortFns: Record<keyof SortFns, SortFn<TFeatures, TData>>,
|
|
17
|
+
): (table: Table<TFeatures, TData>) => () => RowModel<TFeatures, TData> {
|
|
18
|
+
return (_table) => {
|
|
19
|
+
const table = _table as Table_Internal<TFeatures, TData>
|
|
20
|
+
if (!table._rowModelFns.sortFns) table._rowModelFns.sortFns = sortFns
|
|
21
|
+
return tableMemo({
|
|
22
|
+
feature: 'rowSortingFeature',
|
|
23
|
+
table,
|
|
24
|
+
fnName: 'table.getSortedRowModel',
|
|
25
|
+
memoDeps: () => [table.store.state.sorting, table.getPreSortedRowModel()],
|
|
26
|
+
fn: () => _createSortedRowModel(table),
|
|
27
|
+
onAfterUpdate: () => table_autoResetPageIndex(table),
|
|
28
|
+
})
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function _createSortedRowModel<
|
|
33
|
+
TFeatures extends TableFeatures,
|
|
34
|
+
TData extends RowData = any,
|
|
35
|
+
>(table: Table_Internal<TFeatures, TData>): RowModel<TFeatures, TData> {
|
|
36
|
+
const preSortedRowModel = table.getPreSortedRowModel()
|
|
37
|
+
const sorting = table.store.state.sorting
|
|
38
|
+
|
|
39
|
+
if (!preSortedRowModel.rows.length || !sorting?.length) {
|
|
40
|
+
return preSortedRowModel
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const sortedFlatRows: Array<Row<TFeatures, TData>> = []
|
|
44
|
+
|
|
45
|
+
// Filter out sortings that correspond to non existing columns
|
|
46
|
+
const availableSorting = sorting.filter((sort) =>
|
|
47
|
+
column_getCanSort(
|
|
48
|
+
table.getColumn(sort.id) as Column_Internal<TFeatures, TData>,
|
|
49
|
+
),
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
const columnInfoById: Record<
|
|
53
|
+
string,
|
|
54
|
+
{
|
|
55
|
+
sortUndefined?: false | -1 | 1 | 'first' | 'last'
|
|
56
|
+
invertSorting?: boolean
|
|
57
|
+
sortFn: SortFn<TFeatures, TData>
|
|
58
|
+
}
|
|
59
|
+
> = {}
|
|
60
|
+
|
|
61
|
+
availableSorting.forEach((sortEntry) => {
|
|
62
|
+
const column = table.getColumn(sortEntry.id) as
|
|
63
|
+
| Column_Internal<TFeatures, TData>
|
|
64
|
+
| undefined
|
|
65
|
+
if (!column) return
|
|
66
|
+
|
|
67
|
+
columnInfoById[sortEntry.id] = {
|
|
68
|
+
sortUndefined: column.columnDef.sortUndefined,
|
|
69
|
+
invertSorting: column.columnDef.invertSorting,
|
|
70
|
+
sortFn: column_getSortFn(column),
|
|
71
|
+
}
|
|
72
|
+
})
|
|
73
|
+
|
|
74
|
+
const sortData = (rows: Array<Row<TFeatures, TData>>) => {
|
|
75
|
+
// This will also perform a stable sorting using the row index
|
|
76
|
+
// if needed.
|
|
77
|
+
// Preserve prototype chain so methods like getValue() remain accessible
|
|
78
|
+
const sortedData = rows.map((row) => {
|
|
79
|
+
const cloned = Object.create(Object.getPrototypeOf(row))
|
|
80
|
+
return Object.assign(cloned, row)
|
|
81
|
+
})
|
|
82
|
+
|
|
83
|
+
sortedData.sort((rowA, rowB) => {
|
|
84
|
+
for (const sortEntry of availableSorting) {
|
|
85
|
+
const columnInfo = columnInfoById[sortEntry.id]!
|
|
86
|
+
const sortUndefined = columnInfo.sortUndefined
|
|
87
|
+
const isDesc = sortEntry.desc
|
|
88
|
+
|
|
89
|
+
let sortInt = 0
|
|
90
|
+
|
|
91
|
+
// All sorting ints should always return in ascending order
|
|
92
|
+
if (sortUndefined) {
|
|
93
|
+
const aValue = rowA.getValue(sortEntry.id)
|
|
94
|
+
const bValue = rowB.getValue(sortEntry.id)
|
|
95
|
+
|
|
96
|
+
const aUndefined = aValue === undefined
|
|
97
|
+
const bUndefined = bValue === undefined
|
|
98
|
+
|
|
99
|
+
if (aUndefined || bUndefined) {
|
|
100
|
+
if (sortUndefined === 'first') return aUndefined ? -1 : 1
|
|
101
|
+
if (sortUndefined === 'last') return aUndefined ? 1 : -1
|
|
102
|
+
sortInt =
|
|
103
|
+
aUndefined && bUndefined
|
|
104
|
+
? 0
|
|
105
|
+
: aUndefined
|
|
106
|
+
? sortUndefined
|
|
107
|
+
: -sortUndefined
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
if (sortInt === 0) {
|
|
112
|
+
sortInt = columnInfo.sortFn(rowA, rowB, sortEntry.id)
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// If sorting is non-zero, take care of desc and inversion
|
|
116
|
+
if (sortInt !== 0) {
|
|
117
|
+
if (isDesc) {
|
|
118
|
+
sortInt *= -1
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
if (columnInfo.invertSorting) {
|
|
122
|
+
sortInt *= -1
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
return sortInt
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return rowA.index - rowB.index
|
|
129
|
+
})
|
|
130
|
+
|
|
131
|
+
// If there are sub-rows, sort them
|
|
132
|
+
sortedData.forEach((row) => {
|
|
133
|
+
sortedFlatRows.push(row)
|
|
134
|
+
if (row.subRows.length) {
|
|
135
|
+
row.subRows = sortData(row.subRows)
|
|
136
|
+
}
|
|
137
|
+
})
|
|
138
|
+
|
|
139
|
+
return sortedData
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
return {
|
|
143
|
+
rows: sortData(preSortedRowModel.rows),
|
|
144
|
+
flatRows: sortedFlatRows,
|
|
145
|
+
rowsById: preSortedRowModel.rowsById,
|
|
146
|
+
}
|
|
147
|
+
}
|