@tanstack/table-core 9.0.0-alpha.0 → 9.0.0-alpha.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (570) hide show
  1. package/dist/esm/core/cells/constructCell.d.ts +7 -0
  2. package/dist/esm/core/cells/constructCell.js +21 -0
  3. package/dist/esm/core/cells/constructCell.js.map +1 -0
  4. package/dist/esm/core/cells/coreCellsFeature.d.ts +10 -0
  5. package/dist/esm/core/cells/coreCellsFeature.js +26 -0
  6. package/dist/esm/core/cells/coreCellsFeature.js.map +1 -0
  7. package/dist/esm/core/cells/coreCellsFeature.types.d.ts +52 -0
  8. package/dist/esm/core/cells/coreCellsFeature.utils.d.ts +13 -0
  9. package/dist/esm/core/cells/coreCellsFeature.utils.js +23 -0
  10. package/dist/esm/core/cells/coreCellsFeature.utils.js.map +1 -0
  11. package/dist/esm/core/columns/constructColumn.d.ts +6 -0
  12. package/dist/esm/core/columns/constructColumn.js +60 -0
  13. package/dist/esm/core/columns/constructColumn.js.map +1 -0
  14. package/dist/esm/core/columns/coreColumnsFeature.d.ts +10 -0
  15. package/dist/esm/core/columns/coreColumnsFeature.js +61 -0
  16. package/dist/esm/core/columns/coreColumnsFeature.js.map +1 -0
  17. package/dist/esm/core/columns/coreColumnsFeature.types.d.ts +84 -0
  18. package/dist/esm/core/columns/coreColumnsFeature.utils.d.ts +13 -0
  19. package/dist/esm/core/columns/coreColumnsFeature.utils.js +91 -0
  20. package/dist/esm/core/columns/coreColumnsFeature.utils.js.map +1 -0
  21. package/dist/esm/core/coreFeatures.d.ts +15 -0
  22. package/dist/esm/core/coreFeatures.js +18 -0
  23. package/dist/esm/core/coreFeatures.js.map +1 -0
  24. package/dist/esm/core/headers/buildHeaderGroups.d.ts +6 -0
  25. package/dist/esm/core/headers/buildHeaderGroups.js +99 -0
  26. package/dist/esm/core/headers/buildHeaderGroups.js.map +1 -0
  27. package/dist/esm/core/headers/constructHeader.d.ts +12 -0
  28. package/dist/esm/core/headers/constructHeader.js +28 -0
  29. package/dist/esm/core/headers/constructHeader.js.map +1 -0
  30. package/dist/esm/core/headers/coreHeadersFeature.d.ts +10 -0
  31. package/dist/esm/core/headers/coreHeadersFeature.js +68 -0
  32. package/dist/esm/core/headers/coreHeadersFeature.js.map +1 -0
  33. package/dist/esm/core/headers/coreHeadersFeature.types.d.ts +99 -0
  34. package/dist/esm/core/headers/coreHeadersFeature.utils.d.ts +15 -0
  35. package/dist/esm/core/headers/coreHeadersFeature.utils.js +85 -0
  36. package/dist/esm/core/headers/coreHeadersFeature.utils.js.map +1 -0
  37. package/dist/esm/core/row-models/coreRowModelsFeature.d.ts +10 -0
  38. package/dist/esm/core/row-models/coreRowModelsFeature.js +52 -0
  39. package/dist/esm/core/row-models/coreRowModelsFeature.js.map +1 -0
  40. package/dist/esm/core/row-models/coreRowModelsFeature.types.d.ts +39 -0
  41. package/dist/esm/core/row-models/coreRowModelsFeature.utils.d.ts +16 -0
  42. package/dist/esm/core/row-models/coreRowModelsFeature.utils.js +85 -0
  43. package/dist/esm/core/row-models/coreRowModelsFeature.utils.js.map +1 -0
  44. package/dist/esm/core/row-models/createCoreRowModel.d.ts +5 -0
  45. package/dist/esm/core/row-models/createCoreRowModel.js +54 -0
  46. package/dist/esm/core/row-models/createCoreRowModel.js.map +1 -0
  47. package/dist/esm/core/rows/constructRow.d.ts +5 -0
  48. package/dist/esm/core/rows/constructRow.js +29 -0
  49. package/dist/esm/core/rows/constructRow.js.map +1 -0
  50. package/dist/esm/core/rows/coreRowsFeature.d.ts +10 -0
  51. package/dist/esm/core/rows/coreRowsFeature.js +52 -0
  52. package/dist/esm/core/rows/coreRowsFeature.js.map +1 -0
  53. package/dist/esm/core/rows/coreRowsFeature.types.d.ts +91 -0
  54. package/dist/esm/core/rows/coreRowsFeature.utils.d.ts +15 -0
  55. package/dist/esm/core/rows/coreRowsFeature.utils.js +94 -0
  56. package/dist/esm/core/rows/coreRowsFeature.utils.js.map +1 -0
  57. package/dist/esm/core/table/constructTable.d.ts +9 -0
  58. package/dist/esm/core/table/constructTable.js +65 -0
  59. package/dist/esm/core/table/constructTable.js.map +1 -0
  60. package/dist/esm/core/table/coreTablesFeature.d.ts +10 -0
  61. package/dist/esm/core/table/coreTablesFeature.js +22 -0
  62. package/dist/esm/core/table/coreTablesFeature.js.map +1 -0
  63. package/dist/esm/core/table/coreTablesFeature.types.d.ts +105 -0
  64. package/dist/esm/core/table/coreTablesFeature.utils.d.ts +7 -0
  65. package/dist/esm/core/table/coreTablesFeature.utils.js +23 -0
  66. package/dist/esm/core/table/coreTablesFeature.utils.js.map +1 -0
  67. package/dist/esm/features/column-faceting/columnFacetingFeature.d.ts +10 -0
  68. package/dist/esm/features/column-faceting/columnFacetingFeature.js +80 -0
  69. package/dist/esm/features/column-faceting/columnFacetingFeature.js.map +1 -0
  70. package/dist/esm/features/column-faceting/columnFacetingFeature.types.d.ts +68 -0
  71. package/dist/esm/features/column-faceting/columnFacetingFeature.utils.d.ts +11 -0
  72. package/dist/esm/features/column-faceting/columnFacetingFeature.utils.js +33 -0
  73. package/dist/esm/features/column-faceting/columnFacetingFeature.utils.js.map +1 -0
  74. package/dist/esm/features/column-faceting/createFacetedMinMaxValues.d.ts +4 -0
  75. package/dist/esm/features/column-faceting/createFacetedMinMaxValues.js +41 -0
  76. package/dist/esm/features/column-faceting/createFacetedMinMaxValues.js.map +1 -0
  77. package/dist/esm/features/column-faceting/createFacetedRowModel.d.ts +5 -0
  78. package/dist/esm/features/column-faceting/createFacetedRowModel.js +47 -0
  79. package/dist/esm/features/column-faceting/createFacetedRowModel.js.map +1 -0
  80. package/dist/esm/features/column-faceting/createFacetedUniqueValues.d.ts +4 -0
  81. package/dist/esm/features/column-faceting/createFacetedUniqueValues.js +46 -0
  82. package/dist/esm/features/column-faceting/createFacetedUniqueValues.js.map +1 -0
  83. package/dist/esm/features/column-filtering/columnFilteringFeature.d.ts +11 -0
  84. package/dist/esm/features/column-filtering/columnFilteringFeature.js +69 -0
  85. package/dist/esm/features/column-filtering/columnFilteringFeature.js.map +1 -0
  86. package/dist/esm/features/column-filtering/columnFilteringFeature.types.d.ts +145 -0
  87. package/dist/esm/features/column-filtering/columnFilteringFeature.utils.d.ts +16 -0
  88. package/dist/esm/features/column-filtering/columnFilteringFeature.utils.js +118 -0
  89. package/dist/esm/features/column-filtering/columnFilteringFeature.utils.js.map +1 -0
  90. package/dist/esm/features/column-filtering/createFilteredRowModel.d.ts +6 -0
  91. package/dist/esm/features/column-filtering/createFilteredRowModel.js +110 -0
  92. package/dist/esm/features/column-filtering/createFilteredRowModel.js.map +1 -0
  93. package/dist/esm/features/column-filtering/filterRowsUtils.d.ts +6 -0
  94. package/dist/esm/{utils → features/column-filtering}/filterRowsUtils.js +15 -19
  95. package/dist/esm/features/column-filtering/filterRowsUtils.js.map +1 -0
  96. package/dist/esm/features/column-grouping/columnGroupingFeature.d.ts +10 -0
  97. package/dist/esm/features/column-grouping/columnGroupingFeature.js +91 -0
  98. package/dist/esm/features/column-grouping/columnGroupingFeature.js.map +1 -0
  99. package/dist/esm/features/column-grouping/columnGroupingFeature.types.d.ts +153 -0
  100. package/dist/esm/features/column-grouping/columnGroupingFeature.utils.d.ts +22 -0
  101. package/dist/esm/features/column-grouping/columnGroupingFeature.utils.js +99 -0
  102. package/dist/esm/features/column-grouping/columnGroupingFeature.utils.js.map +1 -0
  103. package/dist/esm/features/column-grouping/createGroupedRowModel.d.ts +6 -0
  104. package/dist/esm/features/column-grouping/createGroupedRowModel.js +144 -0
  105. package/dist/esm/features/column-grouping/createGroupedRowModel.js.map +1 -0
  106. package/dist/esm/features/column-ordering/columnOrderingFeature.d.ts +10 -0
  107. package/dist/esm/features/column-ordering/columnOrderingFeature.js +60 -0
  108. package/dist/esm/features/column-ordering/columnOrderingFeature.js.map +1 -0
  109. package/dist/{cjs/features/ColumnOrdering.d.cts → esm/features/column-ordering/columnOrderingFeature.types.d.ts} +8 -22
  110. package/dist/esm/features/column-ordering/columnOrderingFeature.utils.d.ts +14 -0
  111. package/dist/esm/features/column-ordering/columnOrderingFeature.utils.js +72 -0
  112. package/dist/esm/features/column-ordering/columnOrderingFeature.utils.js.map +1 -0
  113. package/dist/esm/features/column-pinning/columnPinningFeature.d.ts +10 -0
  114. package/dist/esm/features/column-pinning/columnPinningFeature.js +260 -0
  115. package/dist/esm/features/column-pinning/columnPinningFeature.js.map +1 -0
  116. package/dist/esm/features/column-pinning/columnPinningFeature.types.d.ts +157 -0
  117. package/dist/esm/features/column-pinning/columnPinningFeature.utils.d.ts +39 -0
  118. package/dist/esm/features/column-pinning/columnPinningFeature.utils.js +325 -0
  119. package/dist/esm/features/column-pinning/columnPinningFeature.utils.js.map +1 -0
  120. package/dist/esm/features/column-resizing/columnResizingFeature.d.ts +11 -0
  121. package/dist/esm/features/column-resizing/columnResizingFeature.js +52 -0
  122. package/dist/esm/features/column-resizing/columnResizingFeature.js.map +1 -0
  123. package/dist/esm/features/column-resizing/columnResizingFeature.types.d.ts +68 -0
  124. package/dist/esm/features/column-resizing/columnResizingFeature.utils.d.ts +14 -0
  125. package/dist/esm/features/column-resizing/columnResizingFeature.utils.js +193 -0
  126. package/dist/esm/features/column-resizing/columnResizingFeature.utils.js.map +1 -0
  127. package/dist/esm/features/column-sizing/columnSizingFeature.d.ts +11 -0
  128. package/dist/esm/features/column-sizing/columnSizingFeature.js +95 -0
  129. package/dist/esm/features/column-sizing/columnSizingFeature.js.map +1 -0
  130. package/dist/esm/features/column-sizing/columnSizingFeature.types.d.ts +81 -0
  131. package/dist/esm/features/column-sizing/columnSizingFeature.utils.d.ts +25 -0
  132. package/dist/esm/features/column-sizing/columnSizingFeature.utils.js +128 -0
  133. package/dist/esm/features/column-sizing/columnSizingFeature.utils.js.map +1 -0
  134. package/dist/esm/features/column-visibility/columnVisibilityFeature.d.ts +10 -0
  135. package/dist/esm/features/column-visibility/columnVisibilityFeature.js +100 -0
  136. package/dist/esm/features/column-visibility/columnVisibilityFeature.js.map +1 -0
  137. package/dist/esm/features/column-visibility/columnVisibilityFeature.types.d.ts +84 -0
  138. package/dist/esm/features/column-visibility/columnVisibilityFeature.utils.d.ts +22 -0
  139. package/dist/esm/features/column-visibility/columnVisibilityFeature.utils.js +105 -0
  140. package/dist/esm/features/column-visibility/columnVisibilityFeature.utils.js.map +1 -0
  141. package/dist/esm/features/global-filtering/globalFilteringFeature.d.ts +11 -0
  142. package/dist/esm/features/global-filtering/globalFilteringFeature.js +51 -0
  143. package/dist/esm/features/global-filtering/globalFilteringFeature.js.map +1 -0
  144. package/dist/esm/features/global-filtering/globalFilteringFeature.types.d.ts +59 -0
  145. package/dist/esm/features/global-filtering/globalFilteringFeature.utils.d.ts +10 -0
  146. package/dist/esm/features/global-filtering/globalFilteringFeature.utils.js +30 -0
  147. package/dist/esm/features/global-filtering/globalFilteringFeature.utils.js.map +1 -0
  148. package/dist/esm/features/row-expanding/createExpandedRowModel.d.ts +6 -0
  149. package/dist/esm/features/row-expanding/createExpandedRowModel.js +49 -0
  150. package/dist/esm/features/row-expanding/createExpandedRowModel.js.map +1 -0
  151. package/dist/esm/features/row-expanding/rowExpandingFeature.d.ts +10 -0
  152. package/dist/esm/features/row-expanding/rowExpandingFeature.js +74 -0
  153. package/dist/esm/features/row-expanding/rowExpandingFeature.js.map +1 -0
  154. package/dist/esm/features/row-expanding/rowExpandingFeature.types.d.ts +116 -0
  155. package/dist/esm/features/row-expanding/rowExpandingFeature.utils.d.ts +20 -0
  156. package/dist/esm/features/row-expanding/rowExpandingFeature.utils.js +125 -0
  157. package/dist/esm/features/row-expanding/rowExpandingFeature.utils.js.map +1 -0
  158. package/dist/esm/features/row-pagination/createPaginatedRowModel.d.ts +5 -0
  159. package/dist/esm/features/row-pagination/createPaginatedRowModel.js +58 -0
  160. package/dist/esm/features/row-pagination/createPaginatedRowModel.js.map +1 -0
  161. package/dist/esm/features/row-pagination/rowPaginationFeature.d.ts +10 -0
  162. package/dist/esm/features/row-pagination/rowPaginationFeature.js +78 -0
  163. package/dist/esm/features/row-pagination/rowPaginationFeature.js.map +1 -0
  164. package/dist/esm/features/row-pagination/rowPaginationFeature.types.d.ts +119 -0
  165. package/dist/esm/features/row-pagination/rowPaginationFeature.utils.d.ts +21 -0
  166. package/dist/esm/features/row-pagination/rowPaginationFeature.utils.js +126 -0
  167. package/dist/esm/features/row-pagination/rowPaginationFeature.utils.js.map +1 -0
  168. package/dist/esm/features/row-pinning/rowPinningFeature.d.ts +10 -0
  169. package/dist/esm/features/row-pinning/rowPinningFeature.js +80 -0
  170. package/dist/esm/features/row-pinning/rowPinningFeature.js.map +1 -0
  171. package/dist/esm/features/row-pinning/rowPinningFeature.types.d.ts +72 -0
  172. package/dist/esm/features/row-pinning/rowPinningFeature.utils.d.ts +16 -0
  173. package/dist/esm/features/row-pinning/rowPinningFeature.utils.js +115 -0
  174. package/dist/esm/features/row-pinning/rowPinningFeature.utils.js.map +1 -0
  175. package/dist/esm/features/row-selection/rowSelectionFeature.d.ts +10 -0
  176. package/dist/esm/features/row-selection/rowSelectionFeature.js +112 -0
  177. package/dist/esm/features/row-selection/rowSelectionFeature.js.map +1 -0
  178. package/dist/esm/features/row-selection/rowSelectionFeature.types.d.ts +123 -0
  179. package/dist/esm/features/row-selection/rowSelectionFeature.utils.d.ts +34 -0
  180. package/dist/esm/features/row-selection/rowSelectionFeature.utils.js +290 -0
  181. package/dist/esm/features/row-selection/rowSelectionFeature.utils.js.map +1 -0
  182. package/dist/esm/features/row-sorting/createSortedRowModel.d.ts +6 -0
  183. package/dist/esm/features/row-sorting/createSortedRowModel.js +94 -0
  184. package/dist/esm/features/row-sorting/createSortedRowModel.js.map +1 -0
  185. package/dist/esm/features/row-sorting/rowSortingFeature.d.ts +10 -0
  186. package/dist/esm/features/row-sorting/rowSortingFeature.js +82 -0
  187. package/dist/esm/features/row-sorting/rowSortingFeature.js.map +1 -0
  188. package/dist/esm/features/row-sorting/rowSortingFeature.types.d.ts +178 -0
  189. package/dist/esm/features/row-sorting/rowSortingFeature.utils.d.ts +20 -0
  190. package/dist/esm/features/row-sorting/rowSortingFeature.utils.js +181 -0
  191. package/dist/esm/features/row-sorting/rowSortingFeature.utils.js.map +1 -0
  192. package/dist/esm/features/stockFeatures.d.ts +31 -0
  193. package/dist/esm/features/stockFeatures.js +34 -0
  194. package/dist/esm/features/stockFeatures.js.map +1 -0
  195. package/dist/esm/fns/aggregationFns.d.ts +49 -0
  196. package/dist/esm/fns/aggregationFns.js +110 -0
  197. package/dist/esm/fns/aggregationFns.js.map +1 -0
  198. package/dist/esm/fns/filterFns.d.ts +76 -0
  199. package/dist/esm/fns/filterFns.js +134 -0
  200. package/dist/esm/fns/filterFns.js.map +1 -0
  201. package/dist/esm/fns/sortFns.d.ts +17 -0
  202. package/dist/esm/{sortingFns.js → fns/sortFns.js} +21 -15
  203. package/dist/esm/fns/sortFns.js.map +1 -0
  204. package/dist/esm/helpers/columnHelper.d.ts +61 -0
  205. package/dist/esm/{columnHelper.js → helpers/columnHelper.js} +1 -0
  206. package/dist/esm/helpers/columnHelper.js.map +1 -0
  207. package/dist/esm/helpers/tableFeatures.d.ts +13 -0
  208. package/dist/esm/helpers/tableFeatures.js +7 -0
  209. package/dist/esm/helpers/tableFeatures.js.map +1 -0
  210. package/dist/esm/helpers/tableHelper.d.ts +25 -0
  211. package/dist/esm/helpers/tableHelper.js +13 -0
  212. package/dist/esm/helpers/tableHelper.js.map +1 -0
  213. package/dist/esm/helpers/tableOptions.d.ts +23 -0
  214. package/dist/esm/helpers/tableOptions.js +7 -0
  215. package/dist/esm/helpers/tableOptions.js.map +1 -0
  216. package/dist/esm/index.d.ts +109 -33
  217. package/dist/esm/index.js +397 -65
  218. package/dist/esm/index.js.map +1 -1
  219. package/dist/esm/types/Cell.d.ts +13 -0
  220. package/dist/esm/types/Column.d.ts +26 -0
  221. package/dist/esm/types/ColumnDef.d.ts +64 -0
  222. package/dist/esm/types/Header.d.ts +14 -0
  223. package/dist/esm/types/HeaderGroup.d.ts +12 -0
  224. package/dist/esm/types/Row.d.ts +19 -0
  225. package/dist/esm/types/RowModel.d.ts +23 -0
  226. package/dist/esm/types/RowModelFns.d.ts +15 -0
  227. package/dist/esm/types/Table.d.ts +53 -0
  228. package/dist/esm/types/TableFeatures.d.ts +77 -0
  229. package/dist/esm/types/TableOptions.d.ts +39 -0
  230. package/dist/esm/types/TableState.d.ts +23 -0
  231. package/dist/esm/types/type-utils.d.ts +22 -0
  232. package/dist/esm/utils.d.ts +66 -33
  233. package/dist/esm/utils.js +183 -52
  234. package/dist/esm/utils.js.map +1 -1
  235. package/package.json +21 -12
  236. package/src/core/cells/constructCell.ts +49 -0
  237. package/src/core/cells/coreCellsFeature.ts +44 -0
  238. package/src/core/cells/coreCellsFeature.types.ts +68 -0
  239. package/src/core/cells/coreCellsFeature.utils.ts +35 -0
  240. package/src/core/columns/constructColumn.ts +111 -0
  241. package/src/core/columns/coreColumnsFeature.ts +90 -0
  242. package/src/core/columns/coreColumnsFeature.types.ts +103 -0
  243. package/src/core/columns/coreColumnsFeature.utils.ts +160 -0
  244. package/src/core/coreFeatures.ts +24 -0
  245. package/src/core/headers/buildHeaderGroups.ts +177 -0
  246. package/src/core/headers/constructHeader.ts +61 -0
  247. package/src/core/headers/coreHeadersFeature.ts +98 -0
  248. package/src/core/headers/coreHeadersFeature.types.ts +123 -0
  249. package/src/core/headers/coreHeadersFeature.utils.ts +131 -0
  250. package/src/core/row-models/coreRowModelsFeature.ts +78 -0
  251. package/src/core/row-models/coreRowModelsFeature.types.ts +67 -0
  252. package/src/core/row-models/coreRowModelsFeature.utils.ts +140 -0
  253. package/src/core/row-models/createCoreRowModel.ts +88 -0
  254. package/src/core/rows/constructRow.ts +59 -0
  255. package/src/core/rows/coreRowsFeature.ts +84 -0
  256. package/src/core/rows/coreRowsFeature.types.ts +111 -0
  257. package/src/core/rows/coreRowsFeature.utils.ts +152 -0
  258. package/src/core/table/constructTable.ts +95 -0
  259. package/src/core/table/coreTablesFeature.ts +36 -0
  260. package/src/core/table/coreTablesFeature.types.ts +123 -0
  261. package/src/core/table/coreTablesFeature.utils.ts +40 -0
  262. package/src/features/column-faceting/columnFacetingFeature.ts +112 -0
  263. package/src/features/column-faceting/columnFacetingFeature.types.ts +97 -0
  264. package/src/features/column-faceting/columnFacetingFeature.utils.ts +77 -0
  265. package/src/features/column-faceting/createFacetedMinMaxValues.ts +63 -0
  266. package/src/features/column-faceting/createFacetedRowModel.ts +76 -0
  267. package/src/features/column-faceting/createFacetedUniqueValues.ts +60 -0
  268. package/src/features/column-filtering/columnFilteringFeature.ts +121 -0
  269. package/src/features/column-filtering/columnFilteringFeature.types.ts +219 -0
  270. package/src/features/column-filtering/columnFilteringFeature.utils.ts +213 -0
  271. package/src/features/column-filtering/createFilteredRowModel.ts +171 -0
  272. package/src/features/column-filtering/filterRowsUtils.ts +152 -0
  273. package/src/features/column-grouping/columnGroupingFeature.ts +151 -0
  274. package/src/features/column-grouping/columnGroupingFeature.types.ts +218 -0
  275. package/src/features/column-grouping/columnGroupingFeature.utils.ts +192 -0
  276. package/src/features/column-grouping/createGroupedRowModel.ts +215 -0
  277. package/src/features/column-ordering/columnOrderingFeature.ts +96 -0
  278. package/src/features/column-ordering/columnOrderingFeature.types.ts +49 -0
  279. package/src/features/column-ordering/columnOrderingFeature.utils.ts +133 -0
  280. package/src/features/column-pinning/columnPinningFeature.ts +324 -0
  281. package/src/features/column-pinning/columnPinningFeature.types.ts +176 -0
  282. package/src/features/column-pinning/columnPinningFeature.utils.ts +537 -0
  283. package/src/features/column-resizing/columnResizingFeature.ts +92 -0
  284. package/src/features/column-resizing/columnResizingFeature.types.ts +81 -0
  285. package/src/features/column-resizing/columnResizingFeature.utils.ts +265 -0
  286. package/src/features/column-sizing/columnSizingFeature.ts +146 -0
  287. package/src/features/column-sizing/columnSizingFeature.types.ts +92 -0
  288. package/src/features/column-sizing/columnSizingFeature.utils.ts +211 -0
  289. package/src/features/column-visibility/columnVisibilityFeature.ts +155 -0
  290. package/src/features/column-visibility/columnVisibilityFeature.types.ts +101 -0
  291. package/src/features/column-visibility/columnVisibilityFeature.utils.ts +183 -0
  292. package/src/features/global-filtering/globalFilteringFeature.ts +92 -0
  293. package/src/features/global-filtering/globalFilteringFeature.types.ts +84 -0
  294. package/src/features/global-filtering/globalFilteringFeature.utils.ts +60 -0
  295. package/src/features/row-expanding/createExpandedRowModel.ts +72 -0
  296. package/src/features/row-expanding/rowExpandingFeature.ts +122 -0
  297. package/src/features/row-expanding/rowExpandingFeature.types.ts +141 -0
  298. package/src/features/row-expanding/rowExpandingFeature.utils.ts +207 -0
  299. package/src/features/row-pagination/createPaginatedRowModel.ts +78 -0
  300. package/src/features/row-pagination/rowPaginationFeature.ts +121 -0
  301. package/src/features/row-pagination/rowPaginationFeature.types.ts +141 -0
  302. package/src/features/row-pagination/rowPaginationFeature.utils.ts +204 -0
  303. package/src/features/row-pinning/rowPinningFeature.ts +121 -0
  304. package/src/features/row-pinning/rowPinningFeature.types.ts +89 -0
  305. package/src/features/row-pinning/rowPinningFeature.utils.ts +197 -0
  306. package/src/features/row-selection/rowSelectionFeature.ts +164 -0
  307. package/src/features/row-selection/rowSelectionFeature.types.ts +143 -0
  308. package/src/features/row-selection/rowSelectionFeature.utils.ts +464 -0
  309. package/src/features/row-sorting/createSortedRowModel.ts +147 -0
  310. package/src/features/row-sorting/rowSortingFeature.ts +136 -0
  311. package/src/features/row-sorting/rowSortingFeature.types.ts +229 -0
  312. package/src/features/row-sorting/rowSortingFeature.utils.ts +320 -0
  313. package/src/features/stockFeatures.ts +48 -0
  314. package/src/fns/aggregationFns.ts +220 -0
  315. package/src/fns/filterFns.ts +379 -0
  316. package/src/{sortingFns.ts → fns/sortFns.ts} +66 -21
  317. package/src/helpers/columnHelper.ts +117 -0
  318. package/src/helpers/tableFeatures.ts +24 -0
  319. package/src/helpers/tableHelper.ts +61 -0
  320. package/src/helpers/tableOptions.ts +82 -0
  321. package/src/index.ts +156 -42
  322. package/src/types/Cell.ts +41 -0
  323. package/src/types/Column.ts +86 -0
  324. package/src/types/ColumnDef.ts +217 -0
  325. package/src/types/Header.ts +45 -0
  326. package/src/types/HeaderGroup.ts +24 -0
  327. package/src/types/Row.ts +55 -0
  328. package/src/types/RowModel.ts +137 -0
  329. package/src/types/RowModelFns.ts +51 -0
  330. package/src/types/Table.ts +125 -0
  331. package/src/types/TableFeatures.ts +150 -0
  332. package/src/types/TableOptions.ts +125 -0
  333. package/src/types/TableState.ts +88 -0
  334. package/src/types/type-utils.ts +84 -0
  335. package/src/utils.ts +344 -163
  336. package/dist/cjs/aggregationFns.cjs +0 -98
  337. package/dist/cjs/aggregationFns.cjs.map +0 -1
  338. package/dist/cjs/aggregationFns.d.cts +0 -14
  339. package/dist/cjs/columnHelper.cjs +0 -19
  340. package/dist/cjs/columnHelper.cjs.map +0 -1
  341. package/dist/cjs/columnHelper.d.cts +0 -9
  342. package/dist/cjs/core/cell.cjs +0 -38
  343. package/dist/cjs/core/cell.cjs.map +0 -1
  344. package/dist/cjs/core/cell.d.cts +0 -50
  345. package/dist/cjs/core/column.cjs +0 -81
  346. package/dist/cjs/core/column.cjs.map +0 -1
  347. package/dist/cjs/core/column.d.cts +0 -56
  348. package/dist/cjs/core/headers.cjs +0 -310
  349. package/dist/cjs/core/headers.cjs.map +0 -1
  350. package/dist/cjs/core/headers.d.cts +0 -195
  351. package/dist/cjs/core/row.cjs +0 -93
  352. package/dist/cjs/core/row.cjs.map +0 -1
  353. package/dist/cjs/core/row.d.cts +0 -92
  354. package/dist/cjs/core/table.cjs +0 -228
  355. package/dist/cjs/core/table.cjs.map +0 -1
  356. package/dist/cjs/core/table.d.cts +0 -221
  357. package/dist/cjs/features/ColumnFaceting.cjs +0 -29
  358. package/dist/cjs/features/ColumnFaceting.cjs.map +0 -1
  359. package/dist/cjs/features/ColumnFaceting.d.cts +0 -35
  360. package/dist/cjs/features/ColumnFiltering.cjs +0 -137
  361. package/dist/cjs/features/ColumnFiltering.cjs.map +0 -1
  362. package/dist/cjs/features/ColumnFiltering.d.cts +0 -195
  363. package/dist/cjs/features/ColumnGrouping.cjs +0 -134
  364. package/dist/cjs/features/ColumnGrouping.cjs.map +0 -1
  365. package/dist/cjs/features/ColumnGrouping.d.cts +0 -202
  366. package/dist/cjs/features/ColumnOrdering.cjs +0 -76
  367. package/dist/cjs/features/ColumnOrdering.cjs.map +0 -1
  368. package/dist/cjs/features/ColumnPinning.cjs +0 -145
  369. package/dist/cjs/features/ColumnPinning.cjs.map +0 -1
  370. package/dist/cjs/features/ColumnPinning.d.cts +0 -127
  371. package/dist/cjs/features/ColumnSizing.cjs +0 -308
  372. package/dist/cjs/features/ColumnSizing.cjs.map +0 -1
  373. package/dist/cjs/features/ColumnSizing.d.cts +0 -194
  374. package/dist/cjs/features/ColumnVisibility.cjs +0 -144
  375. package/dist/cjs/features/ColumnVisibility.cjs.map +0 -1
  376. package/dist/cjs/features/ColumnVisibility.d.cts +0 -130
  377. package/dist/cjs/features/GlobalFaceting.cjs +0 -29
  378. package/dist/cjs/features/GlobalFaceting.cjs.map +0 -1
  379. package/dist/cjs/features/GlobalFaceting.d.cts +0 -27
  380. package/dist/cjs/features/GlobalFiltering.cjs +0 -50
  381. package/dist/cjs/features/GlobalFiltering.cjs.map +0 -1
  382. package/dist/cjs/features/GlobalFiltering.d.cts +0 -80
  383. package/dist/cjs/features/RowExpanding.cjs +0 -154
  384. package/dist/cjs/features/RowExpanding.cjs.map +0 -1
  385. package/dist/cjs/features/RowExpanding.d.cts +0 -155
  386. package/dist/cjs/features/RowPagination.cjs +0 -162
  387. package/dist/cjs/features/RowPagination.cjs.map +0 -1
  388. package/dist/cjs/features/RowPagination.d.cts +0 -166
  389. package/dist/cjs/features/RowPinning.cjs +0 -133
  390. package/dist/cjs/features/RowPinning.cjs.map +0 -1
  391. package/dist/cjs/features/RowPinning.d.cts +0 -99
  392. package/dist/cjs/features/RowSelection.cjs +0 -298
  393. package/dist/cjs/features/RowSelection.cjs.map +0 -1
  394. package/dist/cjs/features/RowSelection.d.cts +0 -177
  395. package/dist/cjs/features/RowSorting.cjs +0 -201
  396. package/dist/cjs/features/RowSorting.cjs.map +0 -1
  397. package/dist/cjs/features/RowSorting.d.cts +0 -238
  398. package/dist/cjs/filterFns.cjs +0 -88
  399. package/dist/cjs/filterFns.cjs.map +0 -1
  400. package/dist/cjs/filterFns.d.cts +0 -14
  401. package/dist/cjs/index.cjs +0 -87
  402. package/dist/cjs/index.cjs.map +0 -1
  403. package/dist/cjs/index.d.cts +0 -34
  404. package/dist/cjs/sortingFns.cjs +0 -91
  405. package/dist/cjs/sortingFns.cjs.map +0 -1
  406. package/dist/cjs/sortingFns.d.cts +0 -12
  407. package/dist/cjs/types.d.cts +0 -120
  408. package/dist/cjs/utils/filterRowsUtils.cjs +0 -99
  409. package/dist/cjs/utils/filterRowsUtils.cjs.map +0 -1
  410. package/dist/cjs/utils/filterRowsUtils.d.cts +0 -3
  411. package/dist/cjs/utils/getCoreRowModel.cjs +0 -54
  412. package/dist/cjs/utils/getCoreRowModel.cjs.map +0 -1
  413. package/dist/cjs/utils/getCoreRowModel.d.cts +0 -3
  414. package/dist/cjs/utils/getExpandedRowModel.cjs +0 -41
  415. package/dist/cjs/utils/getExpandedRowModel.cjs.map +0 -1
  416. package/dist/cjs/utils/getExpandedRowModel.d.cts +0 -8
  417. package/dist/cjs/utils/getFacetedMinMaxValues.cjs +0 -36
  418. package/dist/cjs/utils/getFacetedMinMaxValues.cjs.map +0 -1
  419. package/dist/cjs/utils/getFacetedMinMaxValues.d.cts +0 -3
  420. package/dist/cjs/utils/getFacetedRowModel.cjs +0 -35
  421. package/dist/cjs/utils/getFacetedRowModel.cjs.map +0 -1
  422. package/dist/cjs/utils/getFacetedRowModel.d.cts +0 -3
  423. package/dist/cjs/utils/getFacetedUniqueValues.cjs +0 -38
  424. package/dist/cjs/utils/getFacetedUniqueValues.cjs.map +0 -1
  425. package/dist/cjs/utils/getFacetedUniqueValues.d.cts +0 -3
  426. package/dist/cjs/utils/getFilteredRowModel.cjs +0 -116
  427. package/dist/cjs/utils/getFilteredRowModel.cjs.map +0 -1
  428. package/dist/cjs/utils/getFilteredRowModel.d.cts +0 -3
  429. package/dist/cjs/utils/getGroupedRowModel.cjs +0 -118
  430. package/dist/cjs/utils/getGroupedRowModel.cjs.map +0 -1
  431. package/dist/cjs/utils/getGroupedRowModel.d.cts +0 -3
  432. package/dist/cjs/utils/getPaginationRowModel.cjs +0 -49
  433. package/dist/cjs/utils/getPaginationRowModel.cjs.map +0 -1
  434. package/dist/cjs/utils/getPaginationRowModel.d.cts +0 -5
  435. package/dist/cjs/utils/getSortedRowModel.cjs +0 -91
  436. package/dist/cjs/utils/getSortedRowModel.cjs.map +0 -1
  437. package/dist/cjs/utils/getSortedRowModel.d.cts +0 -3
  438. package/dist/cjs/utils.cjs +0 -100
  439. package/dist/cjs/utils.cjs.map +0 -1
  440. package/dist/cjs/utils.d.cts +0 -39
  441. package/dist/esm/aggregationFns.d.ts +0 -14
  442. package/dist/esm/aggregationFns.js +0 -98
  443. package/dist/esm/aggregationFns.js.map +0 -1
  444. package/dist/esm/columnHelper.d.ts +0 -9
  445. package/dist/esm/columnHelper.js.map +0 -1
  446. package/dist/esm/core/cell.d.ts +0 -50
  447. package/dist/esm/core/cell.js +0 -38
  448. package/dist/esm/core/cell.js.map +0 -1
  449. package/dist/esm/core/column.d.ts +0 -56
  450. package/dist/esm/core/column.js +0 -81
  451. package/dist/esm/core/column.js.map +0 -1
  452. package/dist/esm/core/headers.d.ts +0 -195
  453. package/dist/esm/core/headers.js +0 -310
  454. package/dist/esm/core/headers.js.map +0 -1
  455. package/dist/esm/core/row.d.ts +0 -92
  456. package/dist/esm/core/row.js +0 -93
  457. package/dist/esm/core/row.js.map +0 -1
  458. package/dist/esm/core/table.d.ts +0 -221
  459. package/dist/esm/core/table.js +0 -228
  460. package/dist/esm/core/table.js.map +0 -1
  461. package/dist/esm/features/ColumnFaceting.d.ts +0 -35
  462. package/dist/esm/features/ColumnFaceting.js +0 -29
  463. package/dist/esm/features/ColumnFaceting.js.map +0 -1
  464. package/dist/esm/features/ColumnFiltering.d.ts +0 -195
  465. package/dist/esm/features/ColumnFiltering.js +0 -137
  466. package/dist/esm/features/ColumnFiltering.js.map +0 -1
  467. package/dist/esm/features/ColumnGrouping.d.ts +0 -202
  468. package/dist/esm/features/ColumnGrouping.js +0 -134
  469. package/dist/esm/features/ColumnGrouping.js.map +0 -1
  470. package/dist/esm/features/ColumnOrdering.d.ts +0 -54
  471. package/dist/esm/features/ColumnOrdering.js +0 -76
  472. package/dist/esm/features/ColumnOrdering.js.map +0 -1
  473. package/dist/esm/features/ColumnPinning.d.ts +0 -127
  474. package/dist/esm/features/ColumnPinning.js +0 -145
  475. package/dist/esm/features/ColumnPinning.js.map +0 -1
  476. package/dist/esm/features/ColumnSizing.d.ts +0 -194
  477. package/dist/esm/features/ColumnSizing.js +0 -308
  478. package/dist/esm/features/ColumnSizing.js.map +0 -1
  479. package/dist/esm/features/ColumnVisibility.d.ts +0 -130
  480. package/dist/esm/features/ColumnVisibility.js +0 -144
  481. package/dist/esm/features/ColumnVisibility.js.map +0 -1
  482. package/dist/esm/features/GlobalFaceting.d.ts +0 -27
  483. package/dist/esm/features/GlobalFaceting.js +0 -29
  484. package/dist/esm/features/GlobalFaceting.js.map +0 -1
  485. package/dist/esm/features/GlobalFiltering.d.ts +0 -80
  486. package/dist/esm/features/GlobalFiltering.js +0 -50
  487. package/dist/esm/features/GlobalFiltering.js.map +0 -1
  488. package/dist/esm/features/RowExpanding.d.ts +0 -155
  489. package/dist/esm/features/RowExpanding.js +0 -154
  490. package/dist/esm/features/RowExpanding.js.map +0 -1
  491. package/dist/esm/features/RowPagination.d.ts +0 -166
  492. package/dist/esm/features/RowPagination.js +0 -162
  493. package/dist/esm/features/RowPagination.js.map +0 -1
  494. package/dist/esm/features/RowPinning.d.ts +0 -99
  495. package/dist/esm/features/RowPinning.js +0 -133
  496. package/dist/esm/features/RowPinning.js.map +0 -1
  497. package/dist/esm/features/RowSelection.d.ts +0 -177
  498. package/dist/esm/features/RowSelection.js +0 -298
  499. package/dist/esm/features/RowSelection.js.map +0 -1
  500. package/dist/esm/features/RowSorting.d.ts +0 -238
  501. package/dist/esm/features/RowSorting.js +0 -201
  502. package/dist/esm/features/RowSorting.js.map +0 -1
  503. package/dist/esm/filterFns.d.ts +0 -14
  504. package/dist/esm/filterFns.js +0 -88
  505. package/dist/esm/filterFns.js.map +0 -1
  506. package/dist/esm/sortingFns.d.ts +0 -12
  507. package/dist/esm/sortingFns.js.map +0 -1
  508. package/dist/esm/types.d.ts +0 -120
  509. package/dist/esm/utils/filterRowsUtils.d.ts +0 -3
  510. package/dist/esm/utils/filterRowsUtils.js.map +0 -1
  511. package/dist/esm/utils/getCoreRowModel.d.ts +0 -3
  512. package/dist/esm/utils/getCoreRowModel.js +0 -54
  513. package/dist/esm/utils/getCoreRowModel.js.map +0 -1
  514. package/dist/esm/utils/getExpandedRowModel.d.ts +0 -8
  515. package/dist/esm/utils/getExpandedRowModel.js +0 -41
  516. package/dist/esm/utils/getExpandedRowModel.js.map +0 -1
  517. package/dist/esm/utils/getFacetedMinMaxValues.d.ts +0 -3
  518. package/dist/esm/utils/getFacetedMinMaxValues.js +0 -36
  519. package/dist/esm/utils/getFacetedMinMaxValues.js.map +0 -1
  520. package/dist/esm/utils/getFacetedRowModel.d.ts +0 -3
  521. package/dist/esm/utils/getFacetedRowModel.js +0 -35
  522. package/dist/esm/utils/getFacetedRowModel.js.map +0 -1
  523. package/dist/esm/utils/getFacetedUniqueValues.d.ts +0 -3
  524. package/dist/esm/utils/getFacetedUniqueValues.js +0 -38
  525. package/dist/esm/utils/getFacetedUniqueValues.js.map +0 -1
  526. package/dist/esm/utils/getFilteredRowModel.d.ts +0 -3
  527. package/dist/esm/utils/getFilteredRowModel.js +0 -116
  528. package/dist/esm/utils/getFilteredRowModel.js.map +0 -1
  529. package/dist/esm/utils/getGroupedRowModel.d.ts +0 -3
  530. package/dist/esm/utils/getGroupedRowModel.js +0 -118
  531. package/dist/esm/utils/getGroupedRowModel.js.map +0 -1
  532. package/dist/esm/utils/getPaginationRowModel.d.ts +0 -5
  533. package/dist/esm/utils/getPaginationRowModel.js +0 -49
  534. package/dist/esm/utils/getPaginationRowModel.js.map +0 -1
  535. package/dist/esm/utils/getSortedRowModel.d.ts +0 -3
  536. package/dist/esm/utils/getSortedRowModel.js +0 -91
  537. package/dist/esm/utils/getSortedRowModel.js.map +0 -1
  538. package/src/aggregationFns.ts +0 -123
  539. package/src/columnHelper.ts +0 -91
  540. package/src/core/cell.ts +0 -91
  541. package/src/core/column.ts +0 -165
  542. package/src/core/headers.ts +0 -639
  543. package/src/core/row.ts +0 -201
  544. package/src/core/table.ts +0 -527
  545. package/src/features/ColumnFaceting.ts +0 -84
  546. package/src/features/ColumnFiltering.ts +0 -429
  547. package/src/features/ColumnGrouping.ts +0 -422
  548. package/src/features/ColumnOrdering.ts +0 -161
  549. package/src/features/ColumnPinning.ts +0 -336
  550. package/src/features/ColumnSizing.ts +0 -579
  551. package/src/features/ColumnVisibility.ts +0 -317
  552. package/src/features/GlobalFaceting.ts +0 -66
  553. package/src/features/GlobalFiltering.ts +0 -162
  554. package/src/features/RowExpanding.ts +0 -355
  555. package/src/features/RowPagination.ts +0 -396
  556. package/src/features/RowPinning.ts +0 -273
  557. package/src/features/RowSelection.ts +0 -668
  558. package/src/features/RowSorting.ts +0 -542
  559. package/src/filterFns.ts +0 -150
  560. package/src/types.ts +0 -361
  561. package/src/utils/filterRowsUtils.ts +0 -130
  562. package/src/utils/getCoreRowModel.ts +0 -82
  563. package/src/utils/getExpandedRowModel.ts +0 -51
  564. package/src/utils/getFacetedMinMaxValues.ts +0 -42
  565. package/src/utils/getFacetedRowModel.ts +0 -44
  566. package/src/utils/getFacetedUniqueValues.ts +0 -42
  567. package/src/utils/getFilteredRowModel.ts +0 -151
  568. package/src/utils/getGroupedRowModel.ts +0 -181
  569. package/src/utils/getPaginationRowModel.ts +0 -60
  570. package/src/utils/getSortedRowModel.ts +0 -121
@@ -1,668 +0,0 @@
1
- import {
2
- OnChangeFn,
3
- Table,
4
- Row,
5
- RowModel,
6
- Updater,
7
- RowData,
8
- TableFeature,
9
- } from '../types'
10
- import { getMemoOptions, makeStateUpdater, memo } from '../utils'
11
-
12
- export type RowSelectionState = Record<string, boolean>
13
-
14
- export interface RowSelectionTableState {
15
- rowSelection: RowSelectionState
16
- }
17
-
18
- export interface RowSelectionOptions<TData extends RowData> {
19
- /**
20
- * - Enables/disables multiple row selection for all rows in the table OR
21
- * - A function that given a row, returns whether to enable/disable multiple row selection for that row's children/grandchildren
22
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#enablemultirowselection)
23
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)
24
- */
25
- enableMultiRowSelection?: boolean | ((row: Row<TData>) => boolean)
26
- /**
27
- * - Enables/disables row selection for all rows in the table OR
28
- * - A function that given a row, returns whether to enable/disable row selection for that row
29
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#enablerowselection)
30
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)
31
- */
32
- enableRowSelection?: boolean | ((row: Row<TData>) => boolean)
33
- /**
34
- * Enables/disables automatic sub-row selection when a parent row is selected, or a function that enables/disables automatic sub-row selection for each row.
35
- * (Use in combination with expanding or grouping features)
36
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#enablesubrowselection)
37
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)
38
- */
39
- enableSubRowSelection?: boolean | ((row: Row<TData>) => boolean)
40
- /**
41
- * If provided, this function will be called with an `updaterFn` when `state.rowSelection` 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.
42
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#onrowselectionchange)
43
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)
44
- */
45
- onRowSelectionChange?: OnChangeFn<RowSelectionState>
46
- // enableGroupingRowSelection?:
47
- // | boolean
48
- // | ((
49
- // row: Row<TData>
50
- // ) => boolean)
51
- // isAdditiveSelectEvent?: (e: unknown) => boolean
52
- // isInclusiveSelectEvent?: (e: unknown) => boolean
53
- // selectRowsFn?: (
54
- // table: Table<TData>,
55
- // rowModel: RowModel<TData>
56
- // ) => RowModel<TData>
57
- }
58
-
59
- export interface RowSelectionRow {
60
- /**
61
- * Returns whether or not the row can multi-select.
62
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getcanmultiselect)
63
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)
64
- */
65
- getCanMultiSelect: () => boolean
66
- /**
67
- * Returns whether or not the row can be selected.
68
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getcanselect)
69
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)
70
- */
71
- getCanSelect: () => boolean
72
- /**
73
- * Returns whether or not the row can select sub rows automatically when the parent row is selected.
74
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getcanselectsubrows)
75
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)
76
- */
77
- getCanSelectSubRows: () => boolean
78
- /**
79
- * Returns whether or not all of the row's sub rows are selected.
80
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getisallsubrowsselected)
81
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)
82
- */
83
- getIsAllSubRowsSelected: () => boolean
84
- /**
85
- * Returns whether or not the row is selected.
86
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getisselected)
87
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)
88
- */
89
- getIsSelected: () => boolean
90
- /**
91
- * Returns whether or not some of the row's sub rows are selected.
92
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getissomeselected)
93
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)
94
- */
95
- getIsSomeSelected: () => boolean
96
- /**
97
- * Returns a handler that can be used to toggle the row.
98
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#gettoggleselectedhandler)
99
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)
100
- */
101
- getToggleSelectedHandler: () => (event: unknown) => void
102
- /**
103
- * Selects/deselects the row.
104
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#toggleselected)
105
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)
106
- */
107
- toggleSelected: (value?: boolean, opts?: { selectChildren?: boolean }) => void
108
- }
109
-
110
- export interface RowSelectionInstance<TData extends RowData> {
111
- /**
112
- * Returns the row model of all rows that are selected after filtering has been applied.
113
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getfilteredselectedrowmodel)
114
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)
115
- */
116
- getFilteredSelectedRowModel: () => RowModel<TData>
117
- /**
118
- * Returns the row model of all rows that are selected after grouping has been applied.
119
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getgroupedselectedrowmodel)
120
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)
121
- */
122
- getGroupedSelectedRowModel: () => RowModel<TData>
123
- /**
124
- * Returns whether or not all rows on the current page are selected.
125
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getisallpagerowsselected)
126
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)
127
- */
128
- getIsAllPageRowsSelected: () => boolean
129
- /**
130
- * Returns whether or not all rows in the table are selected.
131
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getisallrowsselected)
132
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)
133
- */
134
- getIsAllRowsSelected: () => boolean
135
- /**
136
- * Returns whether or not any rows on the current page are selected.
137
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getissomepagerowsselected)
138
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)
139
- */
140
- getIsSomePageRowsSelected: () => boolean
141
- /**
142
- * Returns whether or not any rows in the table are selected.
143
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getissomerowsselected)
144
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)
145
- */
146
- getIsSomeRowsSelected: () => boolean
147
- /**
148
- * Returns the core row model of all rows before row selection has been applied.
149
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getpreselectedrowmodel)
150
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)
151
- */
152
- getPreSelectedRowModel: () => RowModel<TData>
153
- /**
154
- * Returns the row model of all rows that are selected.
155
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#getselectedrowmodel)
156
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)
157
- */
158
- getSelectedRowModel: () => RowModel<TData>
159
- /**
160
- * Returns a handler that can be used to toggle all rows on the current page.
161
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#gettoggleallpagerowsselectedhandler)
162
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)
163
- */
164
- getToggleAllPageRowsSelectedHandler: () => (event: unknown) => void
165
- /**
166
- * Returns a handler that can be used to toggle all rows in the table.
167
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#gettoggleallrowsselectedhandler)
168
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)
169
- */
170
- getToggleAllRowsSelectedHandler: () => (event: unknown) => void
171
- /**
172
- * Resets the **rowSelection** state to the `initialState.rowSelection`, or `true` can be passed to force a default blank state reset to `{}`.
173
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#resetrowselection)
174
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)
175
- */
176
- resetRowSelection: (defaultState?: boolean) => void
177
- /**
178
- * Sets or updates the `state.rowSelection` state.
179
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#setrowselection)
180
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)
181
- */
182
- setRowSelection: (updater: Updater<RowSelectionState>) => void
183
- /**
184
- * Selects/deselects all rows on the current page.
185
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#toggleallpagerowsselected)
186
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)
187
- */
188
- toggleAllPageRowsSelected: (value?: boolean) => void
189
- /**
190
- * Selects/deselects all rows in the table.
191
- * @link [API Docs](https://tanstack.com/table/v8/docs/api/features/row-selection#toggleallrowsselected)
192
- * @link [Guide](https://tanstack.com/table/v8/docs/guide/row-selection)
193
- */
194
- toggleAllRowsSelected: (value?: boolean) => void
195
- }
196
-
197
- //
198
-
199
- export const RowSelection: TableFeature = {
200
- getInitialState: (state): RowSelectionTableState => {
201
- return {
202
- rowSelection: {},
203
- ...state,
204
- }
205
- },
206
-
207
- getDefaultOptions: <TData extends RowData>(
208
- table: Table<TData>
209
- ): RowSelectionOptions<TData> => {
210
- return {
211
- onRowSelectionChange: makeStateUpdater('rowSelection', table),
212
- enableRowSelection: true,
213
- enableMultiRowSelection: true,
214
- enableSubRowSelection: true,
215
- // enableGroupingRowSelection: false,
216
- // isAdditiveSelectEvent: (e: unknown) => !!e.metaKey,
217
- // isInclusiveSelectEvent: (e: unknown) => !!e.shiftKey,
218
- }
219
- },
220
-
221
- createTable: <TData extends RowData>(table: Table<TData>): void => {
222
- table.setRowSelection = updater =>
223
- table.options.onRowSelectionChange?.(updater)
224
- table.resetRowSelection = defaultState =>
225
- table.setRowSelection(
226
- defaultState ? {} : table.initialState.rowSelection ?? {}
227
- )
228
- table.toggleAllRowsSelected = value => {
229
- table.setRowSelection(old => {
230
- value =
231
- typeof value !== 'undefined' ? value : !table.getIsAllRowsSelected()
232
-
233
- const rowSelection = { ...old }
234
-
235
- const preGroupedFlatRows = table.getPreGroupedRowModel().flatRows
236
-
237
- // We don't use `mutateRowIsSelected` here for performance reasons.
238
- // All of the rows are flat already, so it wouldn't be worth it
239
- if (value) {
240
- preGroupedFlatRows.forEach(row => {
241
- if (!row.getCanSelect()) {
242
- return
243
- }
244
- rowSelection[row.id] = true
245
- })
246
- } else {
247
- preGroupedFlatRows.forEach(row => {
248
- delete rowSelection[row.id]
249
- })
250
- }
251
-
252
- return rowSelection
253
- })
254
- }
255
- table.toggleAllPageRowsSelected = value =>
256
- table.setRowSelection(old => {
257
- const resolvedValue =
258
- typeof value !== 'undefined'
259
- ? value
260
- : !table.getIsAllPageRowsSelected()
261
-
262
- const rowSelection: RowSelectionState = { ...old }
263
-
264
- table.getRowModel().rows.forEach(row => {
265
- mutateRowIsSelected(rowSelection, row.id, resolvedValue, true, table)
266
- })
267
-
268
- return rowSelection
269
- })
270
-
271
- // addRowSelectionRange: rowId => {
272
- // const {
273
- // rows,
274
- // rowsById,
275
- // options: { selectGroupingRows, selectSubRows },
276
- // } = table
277
-
278
- // const findSelectedRow = (rows: Row[]) => {
279
- // let found
280
- // rows.find(d => {
281
- // if (d.getIsSelected()) {
282
- // found = d
283
- // return true
284
- // }
285
- // const subFound = findSelectedRow(d.subRows || [])
286
- // if (subFound) {
287
- // found = subFound
288
- // return true
289
- // }
290
- // return false
291
- // })
292
- // return found
293
- // }
294
-
295
- // const firstRow = findSelectedRow(rows) || rows[0]
296
- // const lastRow = rowsById[rowId]
297
-
298
- // let include = false
299
- // const selectedRowIds = {}
300
-
301
- // const addRow = (row: Row) => {
302
- // mutateRowIsSelected(selectedRowIds, row.id, true, {
303
- // rowsById,
304
- // selectGroupingRows: selectGroupingRows!,
305
- // selectSubRows: selectSubRows!,
306
- // })
307
- // }
308
-
309
- // table.rows.forEach(row => {
310
- // const isFirstRow = row.id === firstRow.id
311
- // const isLastRow = row.id === lastRow.id
312
-
313
- // if (isFirstRow || isLastRow) {
314
- // if (!include) {
315
- // include = true
316
- // } else if (include) {
317
- // addRow(row)
318
- // include = false
319
- // }
320
- // }
321
-
322
- // if (include) {
323
- // addRow(row)
324
- // }
325
- // })
326
-
327
- // table.setRowSelection(selectedRowIds)
328
- // },
329
- table.getPreSelectedRowModel = () => table.getCoreRowModel()
330
- table.getSelectedRowModel = memo(
331
- () => [table.getState().rowSelection, table.getCoreRowModel()],
332
- (rowSelection, rowModel) => {
333
- if (!Object.keys(rowSelection).length) {
334
- return {
335
- rows: [],
336
- flatRows: [],
337
- rowsById: {},
338
- }
339
- }
340
-
341
- return selectRowsFn(table, rowModel)
342
- },
343
- getMemoOptions(table.options, 'debugTable', 'getSelectedRowModel')
344
- )
345
-
346
- table.getFilteredSelectedRowModel = memo(
347
- () => [table.getState().rowSelection, table.getFilteredRowModel()],
348
- (rowSelection, rowModel) => {
349
- if (!Object.keys(rowSelection).length) {
350
- return {
351
- rows: [],
352
- flatRows: [],
353
- rowsById: {},
354
- }
355
- }
356
-
357
- return selectRowsFn(table, rowModel)
358
- },
359
- getMemoOptions(table.options, 'debugTable', 'getFilteredSelectedRowModel')
360
- )
361
-
362
- table.getGroupedSelectedRowModel = memo(
363
- () => [table.getState().rowSelection, table.getSortedRowModel()],
364
- (rowSelection, rowModel) => {
365
- if (!Object.keys(rowSelection).length) {
366
- return {
367
- rows: [],
368
- flatRows: [],
369
- rowsById: {},
370
- }
371
- }
372
-
373
- return selectRowsFn(table, rowModel)
374
- },
375
- getMemoOptions(table.options, 'debugTable', 'getGroupedSelectedRowModel')
376
- )
377
-
378
- ///
379
-
380
- // getGroupingRowCanSelect: rowId => {
381
- // const row = table.getRow(rowId)
382
-
383
- // if (!row) {
384
- // throw new Error()
385
- // }
386
-
387
- // if (typeof table.options.enableGroupingRowSelection === 'function') {
388
- // return table.options.enableGroupingRowSelection(row)
389
- // }
390
-
391
- // return table.options.enableGroupingRowSelection ?? false
392
- // },
393
-
394
- table.getIsAllRowsSelected = () => {
395
- const preGroupedFlatRows = table.getFilteredRowModel().flatRows
396
- const { rowSelection } = table.getState()
397
-
398
- let isAllRowsSelected = Boolean(
399
- preGroupedFlatRows.length && Object.keys(rowSelection).length
400
- )
401
-
402
- if (isAllRowsSelected) {
403
- if (
404
- preGroupedFlatRows.some(
405
- row => row.getCanSelect() && !rowSelection[row.id]
406
- )
407
- ) {
408
- isAllRowsSelected = false
409
- }
410
- }
411
-
412
- return isAllRowsSelected
413
- }
414
-
415
- table.getIsAllPageRowsSelected = () => {
416
- const paginationFlatRows = table
417
- .getPaginationRowModel()
418
- .flatRows.filter(row => row.getCanSelect())
419
- const { rowSelection } = table.getState()
420
-
421
- let isAllPageRowsSelected = !!paginationFlatRows.length
422
-
423
- if (
424
- isAllPageRowsSelected &&
425
- paginationFlatRows.some(row => !rowSelection[row.id])
426
- ) {
427
- isAllPageRowsSelected = false
428
- }
429
-
430
- return isAllPageRowsSelected
431
- }
432
-
433
- table.getIsSomeRowsSelected = () => {
434
- const totalSelected = Object.keys(
435
- table.getState().rowSelection ?? {}
436
- ).length
437
- return (
438
- totalSelected > 0 &&
439
- totalSelected < table.getFilteredRowModel().flatRows.length
440
- )
441
- }
442
-
443
- table.getIsSomePageRowsSelected = () => {
444
- const paginationFlatRows = table.getPaginationRowModel().flatRows
445
- return table.getIsAllPageRowsSelected()
446
- ? false
447
- : paginationFlatRows
448
- .filter(row => row.getCanSelect())
449
- .some(d => d.getIsSelected() || d.getIsSomeSelected())
450
- }
451
-
452
- table.getToggleAllRowsSelectedHandler = () => {
453
- return (e: unknown) => {
454
- table.toggleAllRowsSelected(
455
- ((e as MouseEvent).target as HTMLInputElement).checked
456
- )
457
- }
458
- }
459
-
460
- table.getToggleAllPageRowsSelectedHandler = () => {
461
- return (e: unknown) => {
462
- table.toggleAllPageRowsSelected(
463
- ((e as MouseEvent).target as HTMLInputElement).checked
464
- )
465
- }
466
- }
467
- },
468
-
469
- createRow: <TData extends RowData>(
470
- row: Row<TData>,
471
- table: Table<TData>
472
- ): void => {
473
- row.toggleSelected = (value, opts) => {
474
- const isSelected = row.getIsSelected()
475
-
476
- table.setRowSelection(old => {
477
- value = typeof value !== 'undefined' ? value : !isSelected
478
-
479
- if (row.getCanSelect() && isSelected === value) {
480
- return old
481
- }
482
-
483
- const selectedRowIds = { ...old }
484
-
485
- mutateRowIsSelected(
486
- selectedRowIds,
487
- row.id,
488
- value,
489
- opts?.selectChildren ?? true,
490
- table
491
- )
492
-
493
- return selectedRowIds
494
- })
495
- }
496
- row.getIsSelected = () => {
497
- const { rowSelection } = table.getState()
498
- return isRowSelected(row, rowSelection)
499
- }
500
-
501
- row.getIsSomeSelected = () => {
502
- const { rowSelection } = table.getState()
503
- return isSubRowSelected(row, rowSelection, table) === 'some'
504
- }
505
-
506
- row.getIsAllSubRowsSelected = () => {
507
- const { rowSelection } = table.getState()
508
- return isSubRowSelected(row, rowSelection, table) === 'all'
509
- }
510
-
511
- row.getCanSelect = () => {
512
- if (typeof table.options.enableRowSelection === 'function') {
513
- return table.options.enableRowSelection(row)
514
- }
515
-
516
- return table.options.enableRowSelection ?? true
517
- }
518
-
519
- row.getCanSelectSubRows = () => {
520
- if (typeof table.options.enableSubRowSelection === 'function') {
521
- return table.options.enableSubRowSelection(row)
522
- }
523
-
524
- return table.options.enableSubRowSelection ?? true
525
- }
526
-
527
- row.getCanMultiSelect = () => {
528
- if (typeof table.options.enableMultiRowSelection === 'function') {
529
- return table.options.enableMultiRowSelection(row)
530
- }
531
-
532
- return table.options.enableMultiRowSelection ?? true
533
- }
534
- row.getToggleSelectedHandler = () => {
535
- const canSelect = row.getCanSelect()
536
-
537
- return (e: unknown) => {
538
- if (!canSelect) return
539
- row.toggleSelected(
540
- ((e as MouseEvent).target as HTMLInputElement)?.checked
541
- )
542
- }
543
- }
544
- },
545
- }
546
-
547
- const mutateRowIsSelected = <TData extends RowData>(
548
- selectedRowIds: Record<string, boolean>,
549
- id: string,
550
- value: boolean,
551
- includeChildren: boolean,
552
- table: Table<TData>
553
- ) => {
554
- const row = table.getRow(id, true)
555
-
556
- // const isGrouped = row.getIsGrouped()
557
-
558
- // if ( // TODO: enforce grouping row selection rules
559
- // !isGrouped ||
560
- // (isGrouped && table.options.enableGroupingRowSelection)
561
- // ) {
562
- if (value) {
563
- if (!row.getCanMultiSelect()) {
564
- Object.keys(selectedRowIds).forEach(key => delete selectedRowIds[key])
565
- }
566
- if (row.getCanSelect()) {
567
- selectedRowIds[id] = true
568
- }
569
- } else {
570
- delete selectedRowIds[id]
571
- }
572
- // }
573
-
574
- if (includeChildren && row.subRows?.length && row.getCanSelectSubRows()) {
575
- row.subRows.forEach(row =>
576
- mutateRowIsSelected(selectedRowIds, row.id, value, includeChildren, table)
577
- )
578
- }
579
- }
580
-
581
- export function selectRowsFn<TData extends RowData>(
582
- table: Table<TData>,
583
- rowModel: RowModel<TData>
584
- ): RowModel<TData> {
585
- const rowSelection = table.getState().rowSelection
586
-
587
- const newSelectedFlatRows: Row<TData>[] = []
588
- const newSelectedRowsById: Record<string, Row<TData>> = {}
589
-
590
- // Filters top level and nested rows
591
- const recurseRows = (rows: Row<TData>[], depth = 0): Row<TData>[] => {
592
- return rows
593
- .map(row => {
594
- const isSelected = isRowSelected(row, rowSelection)
595
-
596
- if (isSelected) {
597
- newSelectedFlatRows.push(row)
598
- newSelectedRowsById[row.id] = row
599
- }
600
-
601
- if (row.subRows?.length) {
602
- row = {
603
- ...row,
604
- subRows: recurseRows(row.subRows, depth + 1),
605
- }
606
- }
607
-
608
- if (isSelected) {
609
- return row
610
- }
611
- })
612
- .filter(Boolean) as Row<TData>[]
613
- }
614
-
615
- return {
616
- rows: recurseRows(rowModel.rows),
617
- flatRows: newSelectedFlatRows,
618
- rowsById: newSelectedRowsById,
619
- }
620
- }
621
-
622
- export function isRowSelected<TData extends RowData>(
623
- row: Row<TData>,
624
- selection: Record<string, boolean>
625
- ): boolean {
626
- return selection[row.id] ?? false
627
- }
628
-
629
- export function isSubRowSelected<TData extends RowData>(
630
- row: Row<TData>,
631
- selection: Record<string, boolean>,
632
- table: Table<TData>
633
- ): boolean | 'some' | 'all' {
634
- if (!row.subRows?.length) return false
635
-
636
- let allChildrenSelected = true
637
- let someSelected = false
638
-
639
- row.subRows.forEach(subRow => {
640
- // Bail out early if we know both of these
641
- if (someSelected && !allChildrenSelected) {
642
- return
643
- }
644
-
645
- if (subRow.getCanSelect()) {
646
- if (isRowSelected(subRow, selection)) {
647
- someSelected = true
648
- } else {
649
- allChildrenSelected = false
650
- }
651
- }
652
-
653
- // Check row selection of nested subrows
654
- if (subRow.subRows && subRow.subRows.length) {
655
- const subRowChildrenSelected = isSubRowSelected(subRow, selection, table)
656
- if (subRowChildrenSelected === 'all') {
657
- someSelected = true
658
- } else if (subRowChildrenSelected === 'some') {
659
- someSelected = true
660
- allChildrenSelected = false
661
- } else {
662
- allChildrenSelected = false
663
- }
664
- }
665
- })
666
-
667
- return allChildrenSelected ? 'all' : someSelected ? 'some' : false
668
- }