@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,192 @@
|
|
|
1
|
+
import { isFunction } from '../../utils'
|
|
2
|
+
import { table_getColumn } from '../../core/columns/coreColumnsFeature.utils'
|
|
3
|
+
import type { Column_Internal } from '../../types/Column'
|
|
4
|
+
import type { CellData, RowData, Updater } from '../../types/type-utils'
|
|
5
|
+
import type { TableFeatures } from '../../types/TableFeatures'
|
|
6
|
+
import type { Table_Internal } from '../../types/Table'
|
|
7
|
+
import type { Row } from '../../types/Row'
|
|
8
|
+
import type { Cell } from '../../types/Cell'
|
|
9
|
+
import type {
|
|
10
|
+
AggregationFn,
|
|
11
|
+
GroupingState,
|
|
12
|
+
Row_ColumnGrouping,
|
|
13
|
+
} from './columnGroupingFeature.types'
|
|
14
|
+
|
|
15
|
+
export function getDefaultGroupingState(): GroupingState {
|
|
16
|
+
return structuredClone([])
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export function column_toggleGrouping<
|
|
20
|
+
TFeatures extends TableFeatures,
|
|
21
|
+
TData extends RowData,
|
|
22
|
+
TValue extends CellData = CellData,
|
|
23
|
+
>(column: Column_Internal<TFeatures, TData, TValue>) {
|
|
24
|
+
table_setGrouping(column.table, (old) => {
|
|
25
|
+
// Find any existing grouping for this column
|
|
26
|
+
if (old.includes(column.id)) {
|
|
27
|
+
return old.filter((d) => d !== column.id)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return [...old, column.id]
|
|
31
|
+
})
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function column_getCanGroup<
|
|
35
|
+
TFeatures extends TableFeatures,
|
|
36
|
+
TData extends RowData,
|
|
37
|
+
TValue extends CellData = CellData,
|
|
38
|
+
>(column: Column_Internal<TFeatures, TData, TValue>) {
|
|
39
|
+
return (
|
|
40
|
+
(column.columnDef.enableGrouping ?? true) &&
|
|
41
|
+
(column.table.options.enableGrouping ?? true) &&
|
|
42
|
+
(!!column.accessorFn || !!column.columnDef.getGroupingValue)
|
|
43
|
+
)
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export function column_getIsGrouped<
|
|
47
|
+
TFeatures extends TableFeatures,
|
|
48
|
+
TData extends RowData,
|
|
49
|
+
TValue extends CellData = CellData,
|
|
50
|
+
>(column: Column_Internal<TFeatures, TData, TValue>): boolean {
|
|
51
|
+
return !!column.table.store.state.grouping?.includes(column.id)
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export function column_getGroupedIndex<
|
|
55
|
+
TFeatures extends TableFeatures,
|
|
56
|
+
TData extends RowData,
|
|
57
|
+
TValue extends CellData = CellData,
|
|
58
|
+
>(column: Column_Internal<TFeatures, TData, TValue>): number {
|
|
59
|
+
return column.table.store.state.grouping?.indexOf(column.id) ?? -1
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export function column_getToggleGroupingHandler<
|
|
63
|
+
TFeatures extends TableFeatures,
|
|
64
|
+
TData extends RowData,
|
|
65
|
+
TValue extends CellData = CellData,
|
|
66
|
+
>(column: Column_Internal<TFeatures, TData, TValue>) {
|
|
67
|
+
const canGroup = column_getCanGroup(column)
|
|
68
|
+
|
|
69
|
+
return () => {
|
|
70
|
+
if (!canGroup) return
|
|
71
|
+
column_toggleGrouping(column)
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export function column_getAutoAggregationFn<
|
|
76
|
+
TFeatures extends TableFeatures,
|
|
77
|
+
TData extends RowData,
|
|
78
|
+
TValue extends CellData = CellData,
|
|
79
|
+
>(column: Column_Internal<TFeatures, TData, TValue>) {
|
|
80
|
+
const aggregationFns = column.table._rowModelFns.aggregationFns as
|
|
81
|
+
| Record<string, AggregationFn<TFeatures, TData>>
|
|
82
|
+
| undefined
|
|
83
|
+
|
|
84
|
+
const firstRow = column.table.getCoreRowModel().flatRows[0]
|
|
85
|
+
|
|
86
|
+
const value = firstRow?.getValue(column.id)
|
|
87
|
+
|
|
88
|
+
if (typeof value === 'number') {
|
|
89
|
+
return aggregationFns?.sum
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if (Object.prototype.toString.call(value) === '[object Date]') {
|
|
93
|
+
return aggregationFns?.extent
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export function column_getAggregationFn<
|
|
98
|
+
TFeatures extends TableFeatures,
|
|
99
|
+
TData extends RowData,
|
|
100
|
+
TValue extends CellData = CellData,
|
|
101
|
+
>(column: Column_Internal<TFeatures, TData, TValue>) {
|
|
102
|
+
const aggregationFns = column.table._rowModelFns.aggregationFns as
|
|
103
|
+
| Record<string, AggregationFn<TFeatures, TData>>
|
|
104
|
+
| undefined
|
|
105
|
+
|
|
106
|
+
return isFunction(column.columnDef.aggregationFn)
|
|
107
|
+
? column.columnDef.aggregationFn
|
|
108
|
+
: column.columnDef.aggregationFn === 'auto'
|
|
109
|
+
? column_getAutoAggregationFn(column)
|
|
110
|
+
: aggregationFns?.[column.columnDef.aggregationFn as string]
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
export function table_setGrouping<
|
|
114
|
+
TFeatures extends TableFeatures,
|
|
115
|
+
TData extends RowData,
|
|
116
|
+
>(table: Table_Internal<TFeatures, TData>, updater: Updater<GroupingState>) {
|
|
117
|
+
table.options.onGroupingChange?.(updater)
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
export function table_resetGrouping<
|
|
121
|
+
TFeatures extends TableFeatures,
|
|
122
|
+
TData extends RowData,
|
|
123
|
+
>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {
|
|
124
|
+
table_setGrouping(
|
|
125
|
+
table,
|
|
126
|
+
defaultState ? [] : (table.initialState.grouping ?? []),
|
|
127
|
+
)
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
export function row_getIsGrouped<
|
|
131
|
+
TFeatures extends TableFeatures,
|
|
132
|
+
TData extends RowData,
|
|
133
|
+
>(row: Row<TFeatures, TData> & Partial<Row_ColumnGrouping>) {
|
|
134
|
+
return !!row.groupingColumnId
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
export function row_getGroupingValue<
|
|
138
|
+
TFeatures extends TableFeatures,
|
|
139
|
+
TData extends RowData,
|
|
140
|
+
>(row: Row<TFeatures, TData> & Partial<Row_ColumnGrouping>, columnId: string) {
|
|
141
|
+
if (row._groupingValuesCache?.hasOwnProperty(columnId)) {
|
|
142
|
+
return row._groupingValuesCache[columnId]
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
const column = table_getColumn(row.table, columnId) as Column_Internal<
|
|
146
|
+
TFeatures,
|
|
147
|
+
TData
|
|
148
|
+
>
|
|
149
|
+
|
|
150
|
+
if (!column.columnDef.getGroupingValue) {
|
|
151
|
+
return row.getValue(columnId)
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
if (row._groupingValuesCache) {
|
|
155
|
+
row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(
|
|
156
|
+
row.original,
|
|
157
|
+
)
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
return row._groupingValuesCache?.[columnId]
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
export function cell_getIsGrouped<
|
|
164
|
+
TFeatures extends TableFeatures,
|
|
165
|
+
TData extends RowData,
|
|
166
|
+
TValue extends CellData = CellData,
|
|
167
|
+
>(cell: Cell<TFeatures, TData, TValue>) {
|
|
168
|
+
const row = cell.row as Row<TFeatures, TData> & Partial<Row_ColumnGrouping>
|
|
169
|
+
return (
|
|
170
|
+
column_getIsGrouped(cell.column) && cell.column.id === row.groupingColumnId
|
|
171
|
+
)
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
export function cell_getIsPlaceholder<
|
|
175
|
+
TFeatures extends TableFeatures,
|
|
176
|
+
TData extends RowData,
|
|
177
|
+
TValue extends CellData = CellData,
|
|
178
|
+
>(cell: Cell<TFeatures, TData, TValue>) {
|
|
179
|
+
return !cell_getIsGrouped(cell) && column_getIsGrouped(cell.column)
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
export function cell_getIsAggregated<
|
|
183
|
+
TFeatures extends TableFeatures,
|
|
184
|
+
TData extends RowData,
|
|
185
|
+
TValue extends CellData = CellData,
|
|
186
|
+
>(cell: Cell<TFeatures, TData, TValue>) {
|
|
187
|
+
return (
|
|
188
|
+
!cell_getIsGrouped(cell) &&
|
|
189
|
+
!cell_getIsPlaceholder(cell) &&
|
|
190
|
+
!!cell.row.subRows.length
|
|
191
|
+
)
|
|
192
|
+
}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import { flattenBy, tableMemo } from '../../utils'
|
|
2
|
+
import { constructRow } from '../../core/rows/constructRow'
|
|
3
|
+
import { table_getColumn } from '../../core/columns/coreColumnsFeature.utils'
|
|
4
|
+
import { table_autoResetExpanded } from '../row-expanding/rowExpandingFeature.utils'
|
|
5
|
+
import { table_autoResetPageIndex } from '../row-pagination/rowPaginationFeature.utils'
|
|
6
|
+
import {
|
|
7
|
+
column_getAggregationFn,
|
|
8
|
+
row_getGroupingValue,
|
|
9
|
+
} from './columnGroupingFeature.utils'
|
|
10
|
+
import type { Column } from '../../types/Column'
|
|
11
|
+
import type {
|
|
12
|
+
AggregationFn,
|
|
13
|
+
AggregationFns,
|
|
14
|
+
Row_ColumnGrouping,
|
|
15
|
+
} from './columnGroupingFeature.types'
|
|
16
|
+
import type { TableFeatures } from '../../types/TableFeatures'
|
|
17
|
+
import type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'
|
|
18
|
+
import type { Table, Table_Internal } from '../../types/Table'
|
|
19
|
+
import type { Row } from '../../types/Row'
|
|
20
|
+
import type { RowData } from '../../types/type-utils'
|
|
21
|
+
|
|
22
|
+
export function createGroupedRowModel<
|
|
23
|
+
TFeatures extends TableFeatures,
|
|
24
|
+
TData extends RowData = any,
|
|
25
|
+
>(
|
|
26
|
+
aggregationFns: Record<keyof AggregationFns, AggregationFn<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.aggregationFns)
|
|
31
|
+
table._rowModelFns.aggregationFns = aggregationFns
|
|
32
|
+
return tableMemo({
|
|
33
|
+
feature: 'columnGroupingFeature',
|
|
34
|
+
table,
|
|
35
|
+
fnName: 'table.getGroupedRowModel',
|
|
36
|
+
memoDeps: () => [
|
|
37
|
+
table.store.state.grouping,
|
|
38
|
+
table.getPreGroupedRowModel(),
|
|
39
|
+
],
|
|
40
|
+
fn: () => _createGroupedRowModel(table),
|
|
41
|
+
onAfterUpdate: () => {
|
|
42
|
+
table_autoResetExpanded(table)
|
|
43
|
+
table_autoResetPageIndex(table)
|
|
44
|
+
},
|
|
45
|
+
})
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function _createGroupedRowModel<
|
|
50
|
+
TFeatures extends TableFeatures,
|
|
51
|
+
TData extends RowData = any,
|
|
52
|
+
>(table: Table_Internal<TFeatures, TData>): RowModel<TFeatures, TData> {
|
|
53
|
+
const rowModel = table.getPreGroupedRowModel()
|
|
54
|
+
const grouping = table.store.state.grouping
|
|
55
|
+
|
|
56
|
+
if (!rowModel.rows.length || !grouping?.length) {
|
|
57
|
+
rowModel.rows.forEach((row) => {
|
|
58
|
+
row.depth = 0
|
|
59
|
+
row.parentId = undefined
|
|
60
|
+
})
|
|
61
|
+
return rowModel
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Filter the grouping list down to columns that exist
|
|
65
|
+
const existingGrouping = grouping.filter((columnId) =>
|
|
66
|
+
table_getColumn(table, columnId),
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
const groupedFlatRows: Array<Row<TFeatures, TData>> &
|
|
70
|
+
Partial<Row_ColumnGrouping> = []
|
|
71
|
+
const groupedRowsById: Record<string, Row<TFeatures, TData>> = {}
|
|
72
|
+
|
|
73
|
+
// Recursively group the data
|
|
74
|
+
const groupUpRecursively = (
|
|
75
|
+
rows: Array<Row<TFeatures, TData>>,
|
|
76
|
+
depth = 0,
|
|
77
|
+
parentId?: string,
|
|
78
|
+
) => {
|
|
79
|
+
// Grouping depth has been been met
|
|
80
|
+
// Stop grouping and simply rewrite thd depth and row relationships
|
|
81
|
+
if (depth >= existingGrouping.length) {
|
|
82
|
+
return rows.map((row) => {
|
|
83
|
+
row.depth = depth
|
|
84
|
+
|
|
85
|
+
groupedFlatRows.push(row)
|
|
86
|
+
groupedRowsById[row.id] = row
|
|
87
|
+
|
|
88
|
+
if (row.subRows.length) {
|
|
89
|
+
row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id)
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
return row
|
|
93
|
+
})
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const columnId = existingGrouping[depth] as string
|
|
97
|
+
|
|
98
|
+
// Group the rows together for this level
|
|
99
|
+
const rowGroupsMap = groupBy(rows, columnId)
|
|
100
|
+
|
|
101
|
+
// Perform aggregations for each group
|
|
102
|
+
const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map(
|
|
103
|
+
([groupingValue, groupedRows], index) => {
|
|
104
|
+
let id = `${columnId}:${groupingValue}`
|
|
105
|
+
id = parentId ? `${parentId}>${id}` : id
|
|
106
|
+
|
|
107
|
+
// First, Recurse to group sub rows before aggregation
|
|
108
|
+
const subRows = groupUpRecursively(groupedRows, depth + 1, id)
|
|
109
|
+
|
|
110
|
+
subRows.forEach((subRow) => {
|
|
111
|
+
subRow.parentId = id
|
|
112
|
+
})
|
|
113
|
+
|
|
114
|
+
// Flatten the leaf rows of the rows in this group
|
|
115
|
+
const leafRows = depth
|
|
116
|
+
? flattenBy(groupedRows, (row) => row.subRows)
|
|
117
|
+
: groupedRows
|
|
118
|
+
|
|
119
|
+
const row = constructRow(
|
|
120
|
+
table,
|
|
121
|
+
id,
|
|
122
|
+
leafRows[0]!.original,
|
|
123
|
+
index,
|
|
124
|
+
depth,
|
|
125
|
+
undefined,
|
|
126
|
+
parentId,
|
|
127
|
+
) as Row<TFeatures, TData> & Partial<Row_ColumnGrouping>
|
|
128
|
+
|
|
129
|
+
Object.assign(row, {
|
|
130
|
+
groupingColumnId: columnId,
|
|
131
|
+
groupingValue,
|
|
132
|
+
subRows,
|
|
133
|
+
leafRows,
|
|
134
|
+
getValue: (colId: string) => {
|
|
135
|
+
// Don't aggregate columns that are in the grouping
|
|
136
|
+
if (existingGrouping.includes(colId)) {
|
|
137
|
+
if (row._valuesCache.hasOwnProperty(colId)) {
|
|
138
|
+
return row._valuesCache[colId]
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
if (groupedRows[0]) {
|
|
142
|
+
row._valuesCache[colId] =
|
|
143
|
+
groupedRows[0].getValue(colId) ?? undefined
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
return row._valuesCache[colId]
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
if (row._groupingValuesCache?.hasOwnProperty(colId)) {
|
|
150
|
+
return row._groupingValuesCache[colId]
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// Aggregate the values
|
|
154
|
+
const column = table.getColumn(colId)
|
|
155
|
+
const aggregateFn = column_getAggregationFn(
|
|
156
|
+
column as Column<TFeatures, TData, unknown>,
|
|
157
|
+
)
|
|
158
|
+
|
|
159
|
+
if (!row._groupingValuesCache) row._groupingValuesCache = {}
|
|
160
|
+
|
|
161
|
+
if (aggregateFn) {
|
|
162
|
+
row._groupingValuesCache[colId] = aggregateFn(
|
|
163
|
+
colId,
|
|
164
|
+
leafRows,
|
|
165
|
+
groupedRows,
|
|
166
|
+
)
|
|
167
|
+
|
|
168
|
+
return row._groupingValuesCache[colId]
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
})
|
|
172
|
+
|
|
173
|
+
subRows.forEach((subRow) => {
|
|
174
|
+
groupedFlatRows.push(subRow)
|
|
175
|
+
groupedRowsById[subRow.id] = subRow
|
|
176
|
+
})
|
|
177
|
+
|
|
178
|
+
return row
|
|
179
|
+
},
|
|
180
|
+
)
|
|
181
|
+
|
|
182
|
+
return aggregatedGroupedRows
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
const groupedRows = groupUpRecursively(rowModel.rows, 0)
|
|
186
|
+
|
|
187
|
+
groupedRows.forEach((subRow) => {
|
|
188
|
+
groupedFlatRows.push(subRow)
|
|
189
|
+
groupedRowsById[subRow.id] = subRow
|
|
190
|
+
})
|
|
191
|
+
|
|
192
|
+
return {
|
|
193
|
+
rows: groupedRows,
|
|
194
|
+
flatRows: groupedFlatRows,
|
|
195
|
+
rowsById: groupedRowsById,
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
function groupBy<TFeatures extends TableFeatures, TData extends RowData = any>(
|
|
200
|
+
rows: Array<Row<TFeatures, TData>>,
|
|
201
|
+
columnId: string,
|
|
202
|
+
) {
|
|
203
|
+
const groupMap = new Map<any, Array<Row<TFeatures, TData>>>()
|
|
204
|
+
|
|
205
|
+
return rows.reduce((map, row) => {
|
|
206
|
+
const resKey = `${row_getGroupingValue(row, columnId)}`
|
|
207
|
+
const previous = map.get(resKey)
|
|
208
|
+
if (!previous) {
|
|
209
|
+
map.set(resKey, [row])
|
|
210
|
+
} else {
|
|
211
|
+
previous.push(row)
|
|
212
|
+
}
|
|
213
|
+
return map
|
|
214
|
+
}, groupMap)
|
|
215
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import {
|
|
2
|
+
assignPrototypeAPIs,
|
|
3
|
+
assignTableAPIs,
|
|
4
|
+
makeStateUpdater,
|
|
5
|
+
} from '../../utils'
|
|
6
|
+
import {
|
|
7
|
+
column_getIndex,
|
|
8
|
+
column_getIsFirstColumn,
|
|
9
|
+
column_getIsLastColumn,
|
|
10
|
+
getDefaultColumnOrderState,
|
|
11
|
+
table_getOrderColumnsFn,
|
|
12
|
+
table_resetColumnOrder,
|
|
13
|
+
table_setColumnOrder,
|
|
14
|
+
} from './columnOrderingFeature.utils'
|
|
15
|
+
import type { RowData } from '../../types/type-utils'
|
|
16
|
+
import type { TableFeature, TableFeatures } from '../../types/TableFeatures'
|
|
17
|
+
// import type {
|
|
18
|
+
// Column_ColumnOrdering,
|
|
19
|
+
// TableOptions_ColumnOrdering,
|
|
20
|
+
// TableState_ColumnOrdering,
|
|
21
|
+
// Table_ColumnOrdering,
|
|
22
|
+
// } from './columnOrderingFeature.types'
|
|
23
|
+
|
|
24
|
+
interface ColumnOrderingFeatureConstructors<
|
|
25
|
+
TFeatures extends TableFeatures,
|
|
26
|
+
TData extends RowData,
|
|
27
|
+
> {
|
|
28
|
+
// Column: Column_ColumnOrdering
|
|
29
|
+
// Table: Table_ColumnOrdering<TFeatures, TData>
|
|
30
|
+
// TableOptions: TableOptions_ColumnOrdering
|
|
31
|
+
// TableState: TableState_ColumnOrdering
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function constructColumnOrderingFeature<
|
|
35
|
+
TFeatures extends TableFeatures,
|
|
36
|
+
TData extends RowData,
|
|
37
|
+
>(): TableFeature<ColumnOrderingFeatureConstructors<TFeatures, TData>> {
|
|
38
|
+
return {
|
|
39
|
+
getInitialState: (initialState) => {
|
|
40
|
+
return {
|
|
41
|
+
columnOrder: getDefaultColumnOrderState(),
|
|
42
|
+
...initialState,
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
|
|
46
|
+
getDefaultTableOptions: (table) => {
|
|
47
|
+
return {
|
|
48
|
+
onColumnOrderChange: makeStateUpdater('columnOrder', table),
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
|
|
52
|
+
assignColumnPrototype: (prototype, table) => {
|
|
53
|
+
assignPrototypeAPIs('columnOrderingFeature', prototype, table, {
|
|
54
|
+
column_getIndex: {
|
|
55
|
+
fn: (column, position) => column_getIndex(column, position),
|
|
56
|
+
memoDeps: (column, position) => [
|
|
57
|
+
position,
|
|
58
|
+
column.table.store.state.columnOrder,
|
|
59
|
+
column.table.store.state.columnPinning,
|
|
60
|
+
column.table.store.state.grouping,
|
|
61
|
+
],
|
|
62
|
+
},
|
|
63
|
+
column_getIsFirstColumn: {
|
|
64
|
+
fn: (column, position) => column_getIsFirstColumn(column, position),
|
|
65
|
+
},
|
|
66
|
+
column_getIsLastColumn: {
|
|
67
|
+
fn: (column, position) => column_getIsLastColumn(column, position),
|
|
68
|
+
},
|
|
69
|
+
})
|
|
70
|
+
},
|
|
71
|
+
|
|
72
|
+
constructTableAPIs: (table) => {
|
|
73
|
+
assignTableAPIs('columnOrderingFeature', table, {
|
|
74
|
+
table_setColumnOrder: {
|
|
75
|
+
fn: (updater) => table_setColumnOrder(table, updater),
|
|
76
|
+
},
|
|
77
|
+
table_resetColumnOrder: {
|
|
78
|
+
fn: (defaultState) => table_resetColumnOrder(table, defaultState),
|
|
79
|
+
},
|
|
80
|
+
table_getOrderColumnsFn: {
|
|
81
|
+
fn: () => table_getOrderColumnsFn(table),
|
|
82
|
+
memoDeps: () => [
|
|
83
|
+
table.store.state.columnOrder,
|
|
84
|
+
table.store.state.grouping,
|
|
85
|
+
table.options.groupedColumnMode,
|
|
86
|
+
],
|
|
87
|
+
},
|
|
88
|
+
})
|
|
89
|
+
},
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* The Column Ordering feature adds column ordering state and APIs to the table and column objects.
|
|
95
|
+
*/
|
|
96
|
+
export const columnOrderingFeature = constructColumnOrderingFeature()
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { OnChangeFn, RowData, Updater } from '../../types/type-utils'
|
|
2
|
+
import type { TableFeatures } from '../../types/TableFeatures'
|
|
3
|
+
import type { ColumnPinningPosition } from '../column-pinning/columnPinningFeature.types'
|
|
4
|
+
|
|
5
|
+
export type ColumnOrderState = Array<string>
|
|
6
|
+
|
|
7
|
+
export interface TableState_ColumnOrdering {
|
|
8
|
+
columnOrder: ColumnOrderState
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export interface TableOptions_ColumnOrdering {
|
|
12
|
+
/**
|
|
13
|
+
* If provided, this function will be called with an `updaterFn` when `state.columnOrder` changes. This overrides the default internal state management, so you will need to persist the state change either fully or partially outside of the table.
|
|
14
|
+
*/
|
|
15
|
+
onColumnOrderChange?: OnChangeFn<ColumnOrderState>
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export interface Column_ColumnOrdering {
|
|
19
|
+
/**
|
|
20
|
+
* Returns the index of the column in the order of the visible columns. Optionally pass a `position` parameter to get the index of the column in a sub-section of the table
|
|
21
|
+
*/
|
|
22
|
+
getIndex: (position?: ColumnPinningPosition | 'center') => number
|
|
23
|
+
/**
|
|
24
|
+
* Returns `true` if the column is the first column in the order of the visible columns. Optionally pass a `position` parameter to check if the column is the first in a sub-section of the table.
|
|
25
|
+
*/
|
|
26
|
+
getIsFirstColumn: (position?: ColumnPinningPosition | 'center') => boolean
|
|
27
|
+
/**
|
|
28
|
+
* Returns `true` if the column is the last column in the order of the visible columns. Optionally pass a `position` parameter to check if the column is the last in a sub-section of the table.
|
|
29
|
+
*/
|
|
30
|
+
getIsLastColumn: (position?: ColumnPinningPosition | 'center') => boolean
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export interface ColumnOrderDefaultOptions {
|
|
34
|
+
onColumnOrderChange: OnChangeFn<ColumnOrderState>
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export interface Table_ColumnOrdering<
|
|
38
|
+
TFeatures extends TableFeatures,
|
|
39
|
+
TData extends RowData,
|
|
40
|
+
> {
|
|
41
|
+
/**
|
|
42
|
+
* Resets the **columnOrder** state to `initialState.columnOrder`, or `true` can be passed to force a default blank state reset to `[]`.
|
|
43
|
+
*/
|
|
44
|
+
resetColumnOrder: (defaultState?: boolean) => void
|
|
45
|
+
/**
|
|
46
|
+
* Sets or updates the `state.columnOrder` state.
|
|
47
|
+
*/
|
|
48
|
+
setColumnOrder: (updater: Updater<ColumnOrderState>) => void
|
|
49
|
+
}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { table_getPinnedVisibleLeafColumns } from '../column-pinning/columnPinningFeature.utils'
|
|
2
|
+
import type { GroupingState } from '../column-grouping/columnGroupingFeature.types'
|
|
3
|
+
import type { CellData, RowData, Updater } from '../../types/type-utils'
|
|
4
|
+
import type { TableFeatures } from '../../types/TableFeatures'
|
|
5
|
+
import type { Table_Internal } from '../../types/Table'
|
|
6
|
+
import type { Column_Internal } from '../../types/Column'
|
|
7
|
+
import type { ColumnPinningPosition } from '../column-pinning/columnPinningFeature.types'
|
|
8
|
+
import type { ColumnOrderState } from './columnOrderingFeature.types'
|
|
9
|
+
|
|
10
|
+
export function getDefaultColumnOrderState(): ColumnOrderState {
|
|
11
|
+
return structuredClone([])
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function column_getIndex<
|
|
15
|
+
TFeatures extends TableFeatures,
|
|
16
|
+
TData extends RowData,
|
|
17
|
+
TValue extends CellData = CellData,
|
|
18
|
+
>(
|
|
19
|
+
column: Column_Internal<TFeatures, TData, TValue>,
|
|
20
|
+
position?: ColumnPinningPosition | 'center',
|
|
21
|
+
) {
|
|
22
|
+
const columns = table_getPinnedVisibleLeafColumns(column.table, position)
|
|
23
|
+
return columns.findIndex((d) => d.id === column.id)
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function column_getIsFirstColumn<
|
|
27
|
+
TFeatures extends TableFeatures,
|
|
28
|
+
TData extends RowData,
|
|
29
|
+
TValue extends CellData = CellData,
|
|
30
|
+
>(
|
|
31
|
+
column: Column_Internal<TFeatures, TData, TValue>,
|
|
32
|
+
position?: ColumnPinningPosition | 'center',
|
|
33
|
+
) {
|
|
34
|
+
const columns = table_getPinnedVisibleLeafColumns(column.table, position)
|
|
35
|
+
return columns[0]?.id === column.id
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export function column_getIsLastColumn<
|
|
39
|
+
TFeatures extends TableFeatures,
|
|
40
|
+
TData extends RowData,
|
|
41
|
+
TValue extends CellData = CellData,
|
|
42
|
+
>(
|
|
43
|
+
column: Column_Internal<TFeatures, TData, TValue>,
|
|
44
|
+
position?: ColumnPinningPosition | 'center',
|
|
45
|
+
) {
|
|
46
|
+
const columns = table_getPinnedVisibleLeafColumns(column.table, position)
|
|
47
|
+
return columns[columns.length - 1]?.id === column.id
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export function table_setColumnOrder<
|
|
51
|
+
TFeatures extends TableFeatures,
|
|
52
|
+
TData extends RowData,
|
|
53
|
+
>(table: Table_Internal<TFeatures, TData>, updater: Updater<ColumnOrderState>) {
|
|
54
|
+
table.options.onColumnOrderChange?.(updater)
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export function table_resetColumnOrder<
|
|
58
|
+
TFeatures extends TableFeatures,
|
|
59
|
+
TData extends RowData,
|
|
60
|
+
>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {
|
|
61
|
+
table_setColumnOrder(
|
|
62
|
+
table,
|
|
63
|
+
defaultState ? [] : (table.initialState.columnOrder ?? []),
|
|
64
|
+
)
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export function table_getOrderColumnsFn<
|
|
68
|
+
TFeatures extends TableFeatures,
|
|
69
|
+
TData extends RowData,
|
|
70
|
+
>(table: Table_Internal<TFeatures, TData>) {
|
|
71
|
+
const { columnOrder = [] } = table.store.state
|
|
72
|
+
|
|
73
|
+
return (columns: Array<Column_Internal<TFeatures, TData, unknown>>) => {
|
|
74
|
+
// Sort grouped columns to the start of the column list
|
|
75
|
+
// before the headers are built
|
|
76
|
+
let orderedColumns: Array<Column_Internal<TFeatures, TData, unknown>> = []
|
|
77
|
+
|
|
78
|
+
// If there is no order, return the normal columns
|
|
79
|
+
if (!columnOrder.length) {
|
|
80
|
+
orderedColumns = columns
|
|
81
|
+
} else {
|
|
82
|
+
const columnOrderCopy = [...columnOrder]
|
|
83
|
+
|
|
84
|
+
// If there is an order, make a copy of the columns
|
|
85
|
+
const columnsCopy = [...columns]
|
|
86
|
+
|
|
87
|
+
// And make a new ordered array of the columns
|
|
88
|
+
|
|
89
|
+
// Loop over the columns and place them in order into the new array
|
|
90
|
+
while (columnsCopy.length && columnOrderCopy.length) {
|
|
91
|
+
const targetColumnId = columnOrderCopy.shift()
|
|
92
|
+
const foundIndex = columnsCopy.findIndex((d) => d.id === targetColumnId)
|
|
93
|
+
if (foundIndex > -1) {
|
|
94
|
+
orderedColumns.push(columnsCopy.splice(foundIndex, 1)[0]!)
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// If there are any columns left, add them to the end
|
|
99
|
+
orderedColumns = [...orderedColumns, ...columnsCopy]
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
return orderColumns(table, orderedColumns)
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export function orderColumns<
|
|
107
|
+
TFeatures extends TableFeatures,
|
|
108
|
+
TData extends RowData,
|
|
109
|
+
>(
|
|
110
|
+
table: Table_Internal<TFeatures, TData>,
|
|
111
|
+
leafColumns: Array<Column_Internal<TFeatures, TData, unknown>>,
|
|
112
|
+
) {
|
|
113
|
+
const grouping = table.store.state.grouping ?? ([] as GroupingState)
|
|
114
|
+
const { groupedColumnMode } = table.options
|
|
115
|
+
|
|
116
|
+
if (!grouping.length || !groupedColumnMode) {
|
|
117
|
+
return leafColumns
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
const nonGroupingColumns = leafColumns.filter(
|
|
121
|
+
(col) => !grouping.includes(col.id),
|
|
122
|
+
)
|
|
123
|
+
|
|
124
|
+
if (groupedColumnMode === 'remove') {
|
|
125
|
+
return nonGroupingColumns
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
const groupingColumns = grouping
|
|
129
|
+
.map((g) => leafColumns.find((col) => col.id === g)!)
|
|
130
|
+
.filter(Boolean)
|
|
131
|
+
|
|
132
|
+
return [...groupingColumns, ...nonGroupingColumns]
|
|
133
|
+
}
|