@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,136 @@
|
|
|
1
|
+
import {
|
|
2
|
+
assignPrototypeAPIs,
|
|
3
|
+
assignTableAPIs,
|
|
4
|
+
makeStateUpdater,
|
|
5
|
+
} from '../../utils'
|
|
6
|
+
import {
|
|
7
|
+
column_clearSorting,
|
|
8
|
+
column_getAutoSortDir,
|
|
9
|
+
column_getAutoSortFn,
|
|
10
|
+
column_getCanMultiSort,
|
|
11
|
+
column_getCanSort,
|
|
12
|
+
column_getFirstSortDir,
|
|
13
|
+
column_getIsSorted,
|
|
14
|
+
column_getNextSortingOrder,
|
|
15
|
+
column_getSortFn,
|
|
16
|
+
column_getSortIndex,
|
|
17
|
+
column_getToggleSortingHandler,
|
|
18
|
+
column_toggleSorting,
|
|
19
|
+
getDefaultSortingState,
|
|
20
|
+
table_resetSorting,
|
|
21
|
+
table_setSorting,
|
|
22
|
+
} from './rowSortingFeature.utils'
|
|
23
|
+
import type { RowData } from '../../types/type-utils'
|
|
24
|
+
import type { TableFeature, TableFeatures } from '../../types/TableFeatures'
|
|
25
|
+
// import type {
|
|
26
|
+
// CachedRowModel_Sorted,
|
|
27
|
+
// ColumnDef_RowSorting,
|
|
28
|
+
// Column_RowSorting,
|
|
29
|
+
// CreateRowModel_Sorted,
|
|
30
|
+
// RowModelFns_RowSorting,
|
|
31
|
+
// TableOptions_RowSorting,
|
|
32
|
+
// TableState_RowSorting,
|
|
33
|
+
// Table_RowSorting,
|
|
34
|
+
// } from './rowSortingFeature.types'
|
|
35
|
+
|
|
36
|
+
interface RowSortingFeatureConstructors<
|
|
37
|
+
TFeatures extends TableFeatures,
|
|
38
|
+
TData extends RowData,
|
|
39
|
+
> {
|
|
40
|
+
// CachedRowModel: CachedRowModel_Sorted<TFeatures, TData>
|
|
41
|
+
// Column: Column_RowSorting<TFeatures, TData>
|
|
42
|
+
// ColumnDef: ColumnDef_RowSorting<TFeatures, TData>
|
|
43
|
+
// CreateRowModels: CreateRowModel_Sorted<TFeatures, TData>
|
|
44
|
+
// RowModelFns: RowModelFns_RowSorting<TFeatures, TData>
|
|
45
|
+
// Table: Table_RowSorting<TFeatures, TData>
|
|
46
|
+
// TableOptions: TableOptions_RowSorting
|
|
47
|
+
// TableState: TableState_RowSorting
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export function constructRowSortingFeature<
|
|
51
|
+
TFeatures extends TableFeatures,
|
|
52
|
+
TData extends RowData,
|
|
53
|
+
>(): TableFeature<RowSortingFeatureConstructors<TFeatures, TData>> {
|
|
54
|
+
return {
|
|
55
|
+
getInitialState(initialState) {
|
|
56
|
+
return {
|
|
57
|
+
sorting: getDefaultSortingState(),
|
|
58
|
+
...initialState,
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
|
|
62
|
+
getDefaultColumnDef() {
|
|
63
|
+
return {
|
|
64
|
+
sortFn: 'auto',
|
|
65
|
+
sortUndefined: 1,
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
|
|
69
|
+
getDefaultTableOptions(table) {
|
|
70
|
+
return {
|
|
71
|
+
onSortingChange: makeStateUpdater('sorting', table),
|
|
72
|
+
isMultiSortEvent: (e: unknown) => {
|
|
73
|
+
return (e as MouseEvent).shiftKey
|
|
74
|
+
},
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
|
|
78
|
+
assignColumnPrototype(prototype, table) {
|
|
79
|
+
assignPrototypeAPIs('rowSortingFeature', prototype, table, {
|
|
80
|
+
'column.getAutoSortFn': {
|
|
81
|
+
fn: (column) => column_getAutoSortFn(column),
|
|
82
|
+
},
|
|
83
|
+
'column.getAutoSortDir': {
|
|
84
|
+
fn: (column) => column_getAutoSortDir(column),
|
|
85
|
+
},
|
|
86
|
+
column_getSortFn: {
|
|
87
|
+
fn: (column) => column_getSortFn(column),
|
|
88
|
+
},
|
|
89
|
+
column_toggleSorting: {
|
|
90
|
+
fn: (column, desc, multi) =>
|
|
91
|
+
column_toggleSorting(column, desc, multi),
|
|
92
|
+
},
|
|
93
|
+
column_getFirstSortDir: {
|
|
94
|
+
fn: (column) => column_getFirstSortDir(column),
|
|
95
|
+
},
|
|
96
|
+
column_getNextSortingOrder: {
|
|
97
|
+
fn: (column, multi) => column_getNextSortingOrder(column, multi),
|
|
98
|
+
},
|
|
99
|
+
column_getCanSort: {
|
|
100
|
+
fn: (column) => column_getCanSort(column),
|
|
101
|
+
},
|
|
102
|
+
column_getCanMultiSort: {
|
|
103
|
+
fn: (column) => column_getCanMultiSort(column),
|
|
104
|
+
},
|
|
105
|
+
column_getIsSorted: {
|
|
106
|
+
fn: (column) => column_getIsSorted(column),
|
|
107
|
+
},
|
|
108
|
+
column_getSortIndex: {
|
|
109
|
+
fn: (column) => column_getSortIndex(column),
|
|
110
|
+
},
|
|
111
|
+
column_clearSorting: {
|
|
112
|
+
fn: (column) => column_clearSorting(column),
|
|
113
|
+
},
|
|
114
|
+
column_getToggleSortingHandler: {
|
|
115
|
+
fn: (column) => column_getToggleSortingHandler(column),
|
|
116
|
+
},
|
|
117
|
+
})
|
|
118
|
+
},
|
|
119
|
+
|
|
120
|
+
constructTableAPIs(table) {
|
|
121
|
+
assignTableAPIs('rowSortingFeature', table, {
|
|
122
|
+
table_setSorting: {
|
|
123
|
+
fn: (updater) => table_setSorting(table, updater),
|
|
124
|
+
},
|
|
125
|
+
table_resetSorting: {
|
|
126
|
+
fn: (defaultState) => table_resetSorting(table, defaultState),
|
|
127
|
+
},
|
|
128
|
+
})
|
|
129
|
+
},
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* The (Row) Sorting feature adds sorting state and APIs to the table and column objects.
|
|
135
|
+
*/
|
|
136
|
+
export const rowSortingFeature = constructRowSortingFeature()
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'
|
|
2
|
+
import type { Table } from '../../types/Table'
|
|
3
|
+
import type { BuiltInSortFn } from '../../fns/sortFns'
|
|
4
|
+
import type { OnChangeFn, RowData, Updater } from '../../types/type-utils'
|
|
5
|
+
import type { TableFeatures } from '../../types/TableFeatures'
|
|
6
|
+
import type { Row } from '../../types/Row'
|
|
7
|
+
|
|
8
|
+
export type SortDirection = 'asc' | 'desc'
|
|
9
|
+
|
|
10
|
+
export interface ColumnSort {
|
|
11
|
+
desc: boolean
|
|
12
|
+
id: string
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export type SortingState = Array<ColumnSort>
|
|
16
|
+
|
|
17
|
+
export interface TableState_RowSorting {
|
|
18
|
+
sorting: SortingState
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface RowModelFns_RowSorting<
|
|
22
|
+
TFeatures extends TableFeatures,
|
|
23
|
+
TData extends RowData,
|
|
24
|
+
> {
|
|
25
|
+
sortFns: Record<keyof SortFns, SortFn<TFeatures, TData>>
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export interface SortFns {}
|
|
29
|
+
|
|
30
|
+
export interface SortFn<
|
|
31
|
+
TFeatures extends TableFeatures,
|
|
32
|
+
TData extends RowData,
|
|
33
|
+
> {
|
|
34
|
+
(
|
|
35
|
+
rowA: Row<TFeatures, TData>,
|
|
36
|
+
rowB: Row<TFeatures, TData>,
|
|
37
|
+
columnId: string,
|
|
38
|
+
): number
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export type CustomSortFns<
|
|
42
|
+
TFeatures extends TableFeatures,
|
|
43
|
+
TData extends RowData,
|
|
44
|
+
> = Record<string, SortFn<TFeatures, TData>>
|
|
45
|
+
|
|
46
|
+
export type SortFnOption<
|
|
47
|
+
TFeatures extends TableFeatures,
|
|
48
|
+
TData extends RowData,
|
|
49
|
+
> = 'auto' | keyof SortFns | BuiltInSortFn | SortFn<TFeatures, TData>
|
|
50
|
+
|
|
51
|
+
export interface ColumnDef_RowSorting<
|
|
52
|
+
TFeatures extends TableFeatures,
|
|
53
|
+
TData extends RowData,
|
|
54
|
+
> {
|
|
55
|
+
/**
|
|
56
|
+
* Enables/Disables multi-sorting for this column.
|
|
57
|
+
*/
|
|
58
|
+
enableMultiSort?: boolean
|
|
59
|
+
/**
|
|
60
|
+
* Enables/Disables sorting for this column.
|
|
61
|
+
*/
|
|
62
|
+
enableSorting?: boolean
|
|
63
|
+
/**
|
|
64
|
+
* Inverts the order of the sorting for this column. This is useful for values that have an inverted best/worst scale where lower numbers are better, eg. a ranking (1st, 2nd, 3rd) or golf-like scoring
|
|
65
|
+
*/
|
|
66
|
+
invertSorting?: boolean
|
|
67
|
+
/**
|
|
68
|
+
* Set to `true` for sorting toggles on this column to start in the descending direction.
|
|
69
|
+
*/
|
|
70
|
+
sortDescFirst?: boolean
|
|
71
|
+
/**
|
|
72
|
+
* The sorting function to use with this column.
|
|
73
|
+
* - A `string` referencing a built-in sorting function
|
|
74
|
+
* - A custom sorting function
|
|
75
|
+
*/
|
|
76
|
+
sortFn?: SortFnOption<TFeatures, TData>
|
|
77
|
+
/**
|
|
78
|
+
* The priority of undefined values when sorting this column.
|
|
79
|
+
* - `false`
|
|
80
|
+
* - Undefined values will be considered tied and need to be sorted by the next column filter or original index (whichever applies)
|
|
81
|
+
* - `-1`
|
|
82
|
+
* - Undefined values will be sorted with higher priority (ascending) (if ascending, undefined will appear on the beginning of the list)
|
|
83
|
+
* - `1`
|
|
84
|
+
* - Undefined values will be sorted with lower priority (descending) (if ascending, undefined will appear on the end of the list)
|
|
85
|
+
*/
|
|
86
|
+
sortUndefined?: false | -1 | 1 | 'first' | 'last'
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export interface Column_RowSorting<
|
|
90
|
+
TFeatures extends TableFeatures,
|
|
91
|
+
TData extends RowData,
|
|
92
|
+
> {
|
|
93
|
+
/**
|
|
94
|
+
* Removes this column from the table's sorting state
|
|
95
|
+
*/
|
|
96
|
+
clearSorting: () => void
|
|
97
|
+
/**
|
|
98
|
+
* Returns a sort direction automatically inferred based on the columns values.
|
|
99
|
+
*/
|
|
100
|
+
getAutoSortDir: () => SortDirection
|
|
101
|
+
/**
|
|
102
|
+
* Returns a sorting function automatically inferred based on the columns values.
|
|
103
|
+
*/
|
|
104
|
+
getAutoSortFn: () => SortFn<TFeatures, TData>
|
|
105
|
+
/**
|
|
106
|
+
* Returns whether this column can be multi-sorted.
|
|
107
|
+
*/
|
|
108
|
+
getCanMultiSort: () => boolean
|
|
109
|
+
/**
|
|
110
|
+
* Returns whether this column can be sorted.
|
|
111
|
+
*/
|
|
112
|
+
getCanSort: () => boolean
|
|
113
|
+
/**
|
|
114
|
+
* Returns the first direction that should be used when sorting this column.
|
|
115
|
+
*/
|
|
116
|
+
getFirstSortDir: () => SortDirection
|
|
117
|
+
/**
|
|
118
|
+
* Returns the current sort direction of this column.
|
|
119
|
+
*/
|
|
120
|
+
getIsSorted: () => false | SortDirection
|
|
121
|
+
/**
|
|
122
|
+
* Returns the next sorting order.
|
|
123
|
+
*/
|
|
124
|
+
getNextSortingOrder: () => SortDirection | false
|
|
125
|
+
/**
|
|
126
|
+
* Returns the index position of this column's sorting within the sorting state
|
|
127
|
+
*/
|
|
128
|
+
getSortIndex: () => number
|
|
129
|
+
/**
|
|
130
|
+
* Returns the resolved sorting function to be used for this column
|
|
131
|
+
*/
|
|
132
|
+
getSortFn: () => SortFn<TFeatures, TData>
|
|
133
|
+
/**
|
|
134
|
+
* Returns a function that can be used to toggle this column's sorting state. This is useful for attaching a click handler to the column header.
|
|
135
|
+
*/
|
|
136
|
+
getToggleSortingHandler: () => undefined | ((event: unknown) => void)
|
|
137
|
+
/**
|
|
138
|
+
* Toggles this columns sorting state. If `desc` is provided, it will force the sort direction to that value. If `isMulti` is provided, it will additivity multi-sort the column (or toggle it if it is already sorted).
|
|
139
|
+
*/
|
|
140
|
+
toggleSorting: (desc?: boolean, isMulti?: boolean) => void
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
export interface TableOptions_RowSorting {
|
|
144
|
+
/**
|
|
145
|
+
* Enables/disables the ability to remove multi-sorts
|
|
146
|
+
*/
|
|
147
|
+
enableMultiRemove?: boolean
|
|
148
|
+
/**
|
|
149
|
+
* Enables/Disables multi-sorting for the table.
|
|
150
|
+
*/
|
|
151
|
+
enableMultiSort?: boolean
|
|
152
|
+
/**
|
|
153
|
+
* Enables/Disables sorting for the table.
|
|
154
|
+
*/
|
|
155
|
+
enableSorting?: boolean
|
|
156
|
+
/**
|
|
157
|
+
* Enables/Disables the ability to remove sorting for the table.
|
|
158
|
+
* - If `true` then changing sort order will circle like: 'none' -> 'desc' -> 'asc' -> 'none' -> ...
|
|
159
|
+
* - If `false` then changing sort order will circle like: 'none' -> 'desc' -> 'asc' -> 'desc' -> 'asc' -> ...
|
|
160
|
+
*/
|
|
161
|
+
enableSortingRemoval?: boolean
|
|
162
|
+
/**
|
|
163
|
+
* Pass a custom function that will be used to determine if a multi-sort event should be triggered. It is passed the event from the sort toggle handler and should return `true` if the event should trigger a multi-sort.
|
|
164
|
+
*/
|
|
165
|
+
isMultiSortEvent?: (e: unknown) => boolean
|
|
166
|
+
/**
|
|
167
|
+
* Enables manual sorting for the table. If this is `true`, you will be expected to sort your data before it is passed to the table. This is useful if you are doing server-side sorting.
|
|
168
|
+
*/
|
|
169
|
+
manualSorting?: boolean
|
|
170
|
+
/**
|
|
171
|
+
* Set a maximum number of columns that can be multi-sorted.
|
|
172
|
+
*/
|
|
173
|
+
maxMultiSortColCount?: number
|
|
174
|
+
/**
|
|
175
|
+
* If provided, this function will be called with an `updaterFn` when `state.sorting` 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.
|
|
176
|
+
*/
|
|
177
|
+
onSortingChange?: OnChangeFn<SortingState>
|
|
178
|
+
/**
|
|
179
|
+
* If `true`, all sorts will default to descending as their first toggle state.
|
|
180
|
+
*/
|
|
181
|
+
sortDescFirst?: boolean
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
export interface Table_RowSorting<
|
|
185
|
+
TFeatures extends TableFeatures,
|
|
186
|
+
TData extends RowData,
|
|
187
|
+
> {
|
|
188
|
+
/**
|
|
189
|
+
* Resets the **sorting** state to `initialState.sorting`, or `true` can be passed to force a default blank state reset to `[]`.
|
|
190
|
+
*/
|
|
191
|
+
resetSorting: (defaultState?: boolean) => void
|
|
192
|
+
/**
|
|
193
|
+
* Sets or updates the `state.sorting` state.
|
|
194
|
+
*/
|
|
195
|
+
setSorting: (updater: Updater<SortingState>) => void
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
export interface Table_RowModels_Sorted<
|
|
199
|
+
TFeatures extends TableFeatures,
|
|
200
|
+
TData extends RowData,
|
|
201
|
+
> {
|
|
202
|
+
/**
|
|
203
|
+
* Returns the row model for the table before any sorting has been applied.
|
|
204
|
+
*/
|
|
205
|
+
getPreSortedRowModel: () => RowModel<TFeatures, TData>
|
|
206
|
+
/**
|
|
207
|
+
* Returns the row model for the table after sorting has been applied.
|
|
208
|
+
*/
|
|
209
|
+
getSortedRowModel: () => RowModel<TFeatures, TData>
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
export interface CreateRowModel_Sorted<
|
|
213
|
+
TFeatures extends TableFeatures,
|
|
214
|
+
TData extends RowData,
|
|
215
|
+
> {
|
|
216
|
+
/**
|
|
217
|
+
* This function is used to retrieve the sorted row model. If using server-side sorting, this function is not required. To use client-side sorting, pass the exported `getSortedRowModel()` from your adapter to your table or implement your own.
|
|
218
|
+
*/
|
|
219
|
+
sortedRowModel?: (
|
|
220
|
+
table: Table<TFeatures, TData>,
|
|
221
|
+
) => () => RowModel<TFeatures, TData>
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
export interface CachedRowModel_Sorted<
|
|
225
|
+
TFeatures extends TableFeatures,
|
|
226
|
+
TData extends RowData,
|
|
227
|
+
> {
|
|
228
|
+
sortedRowModel: () => RowModel<TFeatures, TData>
|
|
229
|
+
}
|
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
import { reSplitAlphaNumeric, sortFn_basic } from '../../fns/sortFns'
|
|
2
|
+
import { isFunction } from '../../utils'
|
|
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 {
|
|
8
|
+
SortDirection,
|
|
9
|
+
SortFn,
|
|
10
|
+
SortingState,
|
|
11
|
+
} from './rowSortingFeature.types'
|
|
12
|
+
|
|
13
|
+
// State Utils
|
|
14
|
+
|
|
15
|
+
export function getDefaultSortingState(): SortingState {
|
|
16
|
+
return structuredClone([])
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export function table_setSorting<
|
|
20
|
+
TFeatures extends TableFeatures,
|
|
21
|
+
TData extends RowData,
|
|
22
|
+
>(table: Table_Internal<TFeatures, TData>, updater: Updater<SortingState>) {
|
|
23
|
+
table.options.onSortingChange?.(updater)
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function table_resetSorting<
|
|
27
|
+
TFeatures extends TableFeatures,
|
|
28
|
+
TData extends RowData,
|
|
29
|
+
>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {
|
|
30
|
+
table_setSorting(
|
|
31
|
+
table,
|
|
32
|
+
defaultState ? [] : (table.initialState.sorting ?? []),
|
|
33
|
+
)
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Column Utils
|
|
37
|
+
|
|
38
|
+
export function column_getAutoSortFn<
|
|
39
|
+
TFeatures extends TableFeatures,
|
|
40
|
+
TData extends RowData,
|
|
41
|
+
TValue extends CellData = CellData,
|
|
42
|
+
>(column: Column_Internal<TFeatures, TData, TValue>): SortFn<TFeatures, TData> {
|
|
43
|
+
const sortFns = column.table._rowModelFns.sortFns as
|
|
44
|
+
| Record<string, SortFn<TFeatures, TData>>
|
|
45
|
+
| undefined
|
|
46
|
+
|
|
47
|
+
let sortFn: SortFn<TFeatures, TData> | undefined
|
|
48
|
+
|
|
49
|
+
const firstRows = column.table.getFilteredRowModel().flatRows.slice(10)
|
|
50
|
+
|
|
51
|
+
let isString = false
|
|
52
|
+
|
|
53
|
+
for (const row of firstRows) {
|
|
54
|
+
const value = row.getValue(column.id)
|
|
55
|
+
|
|
56
|
+
if (Object.prototype.toString.call(value) === '[object Date]') {
|
|
57
|
+
sortFn = sortFns?.datetime
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
if (typeof value === 'string') {
|
|
61
|
+
isString = true
|
|
62
|
+
|
|
63
|
+
if (value.split(reSplitAlphaNumeric).length > 1) {
|
|
64
|
+
sortFn = sortFns?.alphanumeric
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if (isString) {
|
|
70
|
+
sortFn = sortFns?.text
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
return sortFn ?? sortFn_basic
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export function column_getAutoSortDir<
|
|
77
|
+
TFeatures extends TableFeatures,
|
|
78
|
+
TData extends RowData,
|
|
79
|
+
TValue extends CellData = CellData,
|
|
80
|
+
>(column: Column_Internal<TFeatures, TData, TValue>) {
|
|
81
|
+
const firstRow = column.table.getFilteredRowModel().flatRows[0]
|
|
82
|
+
|
|
83
|
+
const value = firstRow ? firstRow.getValue(column.id) : undefined
|
|
84
|
+
|
|
85
|
+
if (typeof value === 'string') {
|
|
86
|
+
return 'asc'
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return 'desc'
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export function column_getSortFn<
|
|
93
|
+
TFeatures extends TableFeatures,
|
|
94
|
+
TData extends RowData,
|
|
95
|
+
TValue extends CellData = CellData,
|
|
96
|
+
>(column: Column_Internal<TFeatures, TData, TValue>): SortFn<TFeatures, TData> {
|
|
97
|
+
const sortFns = column.table._rowModelFns.sortFns as
|
|
98
|
+
| Record<string, SortFn<TFeatures, TData>>
|
|
99
|
+
| undefined
|
|
100
|
+
|
|
101
|
+
return isFunction(column.columnDef.sortFn)
|
|
102
|
+
? column.columnDef.sortFn
|
|
103
|
+
: column.columnDef.sortFn === 'auto'
|
|
104
|
+
? column_getAutoSortFn(column)
|
|
105
|
+
: (sortFns?.[column.columnDef.sortFn as string] ?? sortFn_basic)
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
export function column_toggleSorting<
|
|
109
|
+
TFeatures extends TableFeatures,
|
|
110
|
+
TData extends RowData,
|
|
111
|
+
TValue extends CellData = CellData,
|
|
112
|
+
>(
|
|
113
|
+
column: Column_Internal<TFeatures, TData, TValue>,
|
|
114
|
+
desc?: boolean,
|
|
115
|
+
multi?: boolean,
|
|
116
|
+
) {
|
|
117
|
+
// if (column.columns.length) {
|
|
118
|
+
// column.columns.forEach((c, i) => {
|
|
119
|
+
// if (c.id) {
|
|
120
|
+
// table.toggleColumnSorting(c.id, undefined, multi || !!i)
|
|
121
|
+
// }
|
|
122
|
+
// })
|
|
123
|
+
// return
|
|
124
|
+
// }
|
|
125
|
+
|
|
126
|
+
// this needs to be outside of table.setSorting to be in sync with rerender
|
|
127
|
+
const nextSortingOrder = column_getNextSortingOrder(column)
|
|
128
|
+
const hasManualValue = typeof desc !== 'undefined'
|
|
129
|
+
|
|
130
|
+
table_setSorting(column.table, (old) => {
|
|
131
|
+
// Find any existing sorting for this column
|
|
132
|
+
const existingSorting = old.find((d) => d.id === column.id)
|
|
133
|
+
const existingIndex = old.findIndex((d) => d.id === column.id)
|
|
134
|
+
|
|
135
|
+
let newSorting: SortingState = []
|
|
136
|
+
|
|
137
|
+
// What should we do with this sort action?
|
|
138
|
+
let sortAction: 'add' | 'remove' | 'toggle' | 'replace'
|
|
139
|
+
const nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc'
|
|
140
|
+
|
|
141
|
+
// Multi-mode
|
|
142
|
+
if (old.length && column_getCanMultiSort(column) && multi) {
|
|
143
|
+
if (existingSorting) {
|
|
144
|
+
sortAction = 'toggle'
|
|
145
|
+
} else {
|
|
146
|
+
sortAction = 'add'
|
|
147
|
+
}
|
|
148
|
+
} else {
|
|
149
|
+
// Normal mode
|
|
150
|
+
if (old.length && existingIndex !== old.length - 1) {
|
|
151
|
+
sortAction = 'replace'
|
|
152
|
+
} else if (existingSorting) {
|
|
153
|
+
sortAction = 'toggle'
|
|
154
|
+
} else {
|
|
155
|
+
sortAction = 'replace'
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
// Handle toggle states that will remove the sorting
|
|
160
|
+
if (sortAction === 'toggle') {
|
|
161
|
+
// If we are "actually" toggling (not a manual set value), should we remove the sorting?
|
|
162
|
+
if (!hasManualValue) {
|
|
163
|
+
// Is our intention to remove?
|
|
164
|
+
if (!nextSortingOrder) {
|
|
165
|
+
sortAction = 'remove'
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
if (sortAction === 'add') {
|
|
171
|
+
newSorting = [
|
|
172
|
+
...old,
|
|
173
|
+
{
|
|
174
|
+
id: column.id,
|
|
175
|
+
desc: nextDesc,
|
|
176
|
+
},
|
|
177
|
+
]
|
|
178
|
+
// Take latest n columns
|
|
179
|
+
newSorting.splice(
|
|
180
|
+
0,
|
|
181
|
+
newSorting.length -
|
|
182
|
+
(column.table.options.maxMultiSortColCount ??
|
|
183
|
+
Number.MAX_SAFE_INTEGER),
|
|
184
|
+
)
|
|
185
|
+
} else if (sortAction === 'toggle') {
|
|
186
|
+
// This flips (or sets) the
|
|
187
|
+
newSorting = old.map((d) => {
|
|
188
|
+
if (d.id === column.id) {
|
|
189
|
+
return {
|
|
190
|
+
...d,
|
|
191
|
+
desc: nextDesc,
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
return d
|
|
195
|
+
})
|
|
196
|
+
} else if (sortAction === 'remove') {
|
|
197
|
+
newSorting = old.filter((d) => d.id !== column.id)
|
|
198
|
+
} else {
|
|
199
|
+
newSorting = [
|
|
200
|
+
{
|
|
201
|
+
id: column.id,
|
|
202
|
+
desc: nextDesc,
|
|
203
|
+
},
|
|
204
|
+
]
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
return newSorting
|
|
208
|
+
})
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
export function column_getFirstSortDir<
|
|
212
|
+
TFeatures extends TableFeatures,
|
|
213
|
+
TData extends RowData,
|
|
214
|
+
TValue extends CellData = CellData,
|
|
215
|
+
>(column: Column_Internal<TFeatures, TData, TValue>) {
|
|
216
|
+
const sortDescFirst =
|
|
217
|
+
column.columnDef.sortDescFirst ??
|
|
218
|
+
column.table.options.sortDescFirst ??
|
|
219
|
+
column_getAutoSortDir(column) === 'desc'
|
|
220
|
+
return sortDescFirst ? 'desc' : 'asc'
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
export function column_getNextSortingOrder<
|
|
224
|
+
TFeatures extends TableFeatures,
|
|
225
|
+
TData extends RowData,
|
|
226
|
+
TValue extends CellData = CellData,
|
|
227
|
+
>(column: Column_Internal<TFeatures, TData, TValue>, multi?: boolean) {
|
|
228
|
+
const firstSortDirection = column_getFirstSortDir(column)
|
|
229
|
+
const isSorted = column_getIsSorted(column)
|
|
230
|
+
|
|
231
|
+
if (!isSorted) {
|
|
232
|
+
return firstSortDirection
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
if (
|
|
236
|
+
isSorted !== firstSortDirection &&
|
|
237
|
+
(column.table.options.enableSortingRemoval ?? true) && // If enableSortRemove, enable in general
|
|
238
|
+
(multi ? (column.table.options.enableMultiRemove ?? true) : true) // If multi, don't allow if enableMultiRemove))
|
|
239
|
+
) {
|
|
240
|
+
return false
|
|
241
|
+
}
|
|
242
|
+
return isSorted === 'desc' ? 'asc' : 'desc'
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
export function column_getCanSort<
|
|
246
|
+
TFeatures extends TableFeatures,
|
|
247
|
+
TData extends RowData,
|
|
248
|
+
TValue extends CellData = CellData,
|
|
249
|
+
>(column: Column_Internal<TFeatures, TData, TValue>) {
|
|
250
|
+
return (
|
|
251
|
+
(column.columnDef.enableSorting ?? true) &&
|
|
252
|
+
(column.table.options.enableSorting ?? true) &&
|
|
253
|
+
!!column.accessorFn
|
|
254
|
+
)
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
export function column_getCanMultiSort<
|
|
258
|
+
TFeatures extends TableFeatures,
|
|
259
|
+
TData extends RowData,
|
|
260
|
+
TValue extends CellData = CellData,
|
|
261
|
+
>(column: Column_Internal<TFeatures, TData, TValue>): boolean {
|
|
262
|
+
return (
|
|
263
|
+
column.columnDef.enableMultiSort ??
|
|
264
|
+
column.table.options.enableMultiSort ??
|
|
265
|
+
!!column.accessorFn
|
|
266
|
+
)
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
export function column_getIsSorted<
|
|
270
|
+
TFeatures extends TableFeatures,
|
|
271
|
+
TData extends RowData,
|
|
272
|
+
TValue extends CellData = CellData,
|
|
273
|
+
>(column: Column_Internal<TFeatures, TData, TValue>): false | SortDirection {
|
|
274
|
+
const columnSort = column.table.store.state.sorting?.find(
|
|
275
|
+
(d) => d.id === column.id,
|
|
276
|
+
)
|
|
277
|
+
return !columnSort ? false : columnSort.desc ? 'desc' : 'asc'
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
export function column_getSortIndex<
|
|
281
|
+
TFeatures extends TableFeatures,
|
|
282
|
+
TData extends RowData,
|
|
283
|
+
TValue extends CellData = CellData,
|
|
284
|
+
>(column: Column_Internal<TFeatures, TData, TValue>): number {
|
|
285
|
+
return (
|
|
286
|
+
column.table.store.state.sorting?.findIndex((d) => d.id === column.id) ?? -1
|
|
287
|
+
)
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
export function column_clearSorting<
|
|
291
|
+
TFeatures extends TableFeatures,
|
|
292
|
+
TData extends RowData,
|
|
293
|
+
TValue extends CellData = CellData,
|
|
294
|
+
>(column: Column_Internal<TFeatures, TData, TValue>) {
|
|
295
|
+
// clear sorting for just 1 column
|
|
296
|
+
table_setSorting(column.table, (old) =>
|
|
297
|
+
old.length ? old.filter((d) => d.id !== column.id) : [],
|
|
298
|
+
)
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
export function column_getToggleSortingHandler<
|
|
302
|
+
TFeatures extends TableFeatures,
|
|
303
|
+
TData extends RowData,
|
|
304
|
+
TValue extends CellData = CellData,
|
|
305
|
+
>(column: Column_Internal<TFeatures, TData, TValue>) {
|
|
306
|
+
const canSort = column_getCanSort(column)
|
|
307
|
+
|
|
308
|
+
return (e: unknown) => {
|
|
309
|
+
if (!canSort) return
|
|
310
|
+
;(e as any).persist?.()
|
|
311
|
+
column_toggleSorting(
|
|
312
|
+
column,
|
|
313
|
+
|
|
314
|
+
undefined,
|
|
315
|
+
column_getCanMultiSort(column)
|
|
316
|
+
? column.table.options.isMultiSortEvent?.(e)
|
|
317
|
+
: false,
|
|
318
|
+
)
|
|
319
|
+
}
|
|
320
|
+
}
|