@tanstack/table-core 9.0.0-beta.1 → 9.0.0-beta.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 (454) hide show
  1. package/dist/core/cells/constructCell.d.cts +1 -1
  2. package/dist/core/cells/constructCell.d.ts +1 -1
  3. package/dist/core/cells/coreCellsFeature.cjs +11 -20
  4. package/dist/core/cells/coreCellsFeature.cjs.map +1 -1
  5. package/dist/core/cells/coreCellsFeature.d.cts +4 -12
  6. package/dist/core/cells/coreCellsFeature.d.ts +4 -12
  7. package/dist/core/cells/coreCellsFeature.js +12 -20
  8. package/dist/core/cells/coreCellsFeature.js.map +1 -1
  9. package/dist/core/cells/coreCellsFeature.types.d.cts +4 -4
  10. package/dist/core/cells/coreCellsFeature.types.d.ts +4 -4
  11. package/dist/core/cells/coreCellsFeature.utils.d.cts +1 -1
  12. package/dist/core/cells/coreCellsFeature.utils.d.ts +1 -1
  13. package/dist/core/columns/constructColumn.d.cts +1 -1
  14. package/dist/core/columns/constructColumn.d.ts +1 -1
  15. package/dist/core/columns/coreColumnsFeature.cjs +59 -68
  16. package/dist/core/columns/coreColumnsFeature.cjs.map +1 -1
  17. package/dist/core/columns/coreColumnsFeature.d.cts +4 -12
  18. package/dist/core/columns/coreColumnsFeature.d.ts +4 -12
  19. package/dist/core/columns/coreColumnsFeature.js +60 -68
  20. package/dist/core/columns/coreColumnsFeature.js.map +1 -1
  21. package/dist/core/columns/coreColumnsFeature.types.d.cts +5 -5
  22. package/dist/core/columns/coreColumnsFeature.types.d.ts +5 -5
  23. package/dist/core/columns/coreColumnsFeature.utils.d.cts +1 -1
  24. package/dist/core/columns/coreColumnsFeature.utils.d.ts +1 -1
  25. package/dist/core/coreFeatures.cjs.map +1 -1
  26. package/dist/core/coreFeatures.d.cts +1 -1
  27. package/dist/core/coreFeatures.d.ts +1 -1
  28. package/dist/core/coreFeatures.js.map +1 -1
  29. package/dist/core/headers/buildHeaderGroups.cjs.map +1 -1
  30. package/dist/core/headers/buildHeaderGroups.d.cts +1 -1
  31. package/dist/core/headers/buildHeaderGroups.d.ts +1 -1
  32. package/dist/core/headers/buildHeaderGroups.js.map +1 -1
  33. package/dist/core/headers/constructHeader.d.cts +1 -1
  34. package/dist/core/headers/constructHeader.d.ts +1 -1
  35. package/dist/core/headers/coreHeadersFeature.cjs +44 -53
  36. package/dist/core/headers/coreHeadersFeature.cjs.map +1 -1
  37. package/dist/core/headers/coreHeadersFeature.d.cts +4 -12
  38. package/dist/core/headers/coreHeadersFeature.d.ts +4 -12
  39. package/dist/core/headers/coreHeadersFeature.js +45 -53
  40. package/dist/core/headers/coreHeadersFeature.js.map +1 -1
  41. package/dist/core/headers/coreHeadersFeature.types.d.cts +6 -6
  42. package/dist/core/headers/coreHeadersFeature.types.d.ts +6 -6
  43. package/dist/core/headers/coreHeadersFeature.utils.cjs.map +1 -1
  44. package/dist/core/headers/coreHeadersFeature.utils.d.cts +1 -1
  45. package/dist/core/headers/coreHeadersFeature.utils.d.ts +1 -1
  46. package/dist/core/headers/coreHeadersFeature.utils.js.map +1 -1
  47. package/dist/core/row-models/coreRowModelsFeature.cjs +17 -26
  48. package/dist/core/row-models/coreRowModelsFeature.cjs.map +1 -1
  49. package/dist/core/row-models/coreRowModelsFeature.d.cts +4 -12
  50. package/dist/core/row-models/coreRowModelsFeature.d.ts +4 -12
  51. package/dist/core/row-models/coreRowModelsFeature.js +18 -26
  52. package/dist/core/row-models/coreRowModelsFeature.js.map +1 -1
  53. package/dist/core/row-models/coreRowModelsFeature.types.d.cts +5 -15
  54. package/dist/core/row-models/coreRowModelsFeature.types.d.ts +5 -15
  55. package/dist/core/row-models/coreRowModelsFeature.utils.cjs +13 -13
  56. package/dist/core/row-models/coreRowModelsFeature.utils.cjs.map +1 -1
  57. package/dist/core/row-models/coreRowModelsFeature.utils.d.cts +2 -2
  58. package/dist/core/row-models/coreRowModelsFeature.utils.d.ts +2 -2
  59. package/dist/core/row-models/coreRowModelsFeature.utils.js +13 -13
  60. package/dist/core/row-models/coreRowModelsFeature.utils.js.map +1 -1
  61. package/dist/core/row-models/createCoreRowModel.cjs +1 -2
  62. package/dist/core/row-models/createCoreRowModel.cjs.map +1 -1
  63. package/dist/core/row-models/createCoreRowModel.d.cts +2 -2
  64. package/dist/core/row-models/createCoreRowModel.d.ts +2 -2
  65. package/dist/core/row-models/createCoreRowModel.js +1 -2
  66. package/dist/core/row-models/createCoreRowModel.js.map +1 -1
  67. package/dist/core/rows/constructRow.d.cts +1 -1
  68. package/dist/core/rows/constructRow.d.ts +1 -1
  69. package/dist/core/rows/coreRowsFeature.cjs +27 -36
  70. package/dist/core/rows/coreRowsFeature.cjs.map +1 -1
  71. package/dist/core/rows/coreRowsFeature.d.cts +4 -12
  72. package/dist/core/rows/coreRowsFeature.d.ts +4 -12
  73. package/dist/core/rows/coreRowsFeature.js +28 -36
  74. package/dist/core/rows/coreRowsFeature.js.map +1 -1
  75. package/dist/core/rows/coreRowsFeature.types.d.cts +5 -5
  76. package/dist/core/rows/coreRowsFeature.types.d.ts +5 -5
  77. package/dist/core/rows/coreRowsFeature.utils.d.cts +1 -1
  78. package/dist/core/rows/coreRowsFeature.utils.d.ts +1 -1
  79. package/dist/core/table/constructTable.cjs +21 -6
  80. package/dist/core/table/constructTable.cjs.map +1 -1
  81. package/dist/core/table/constructTable.d.cts +1 -1
  82. package/dist/core/table/constructTable.d.ts +1 -1
  83. package/dist/core/table/constructTable.js +21 -6
  84. package/dist/core/table/constructTable.js.map +1 -1
  85. package/dist/core/table/coreTablesFeature.cjs +7 -16
  86. package/dist/core/table/coreTablesFeature.cjs.map +1 -1
  87. package/dist/core/table/coreTablesFeature.d.cts +4 -12
  88. package/dist/core/table/coreTablesFeature.d.ts +4 -12
  89. package/dist/core/table/coreTablesFeature.js +8 -16
  90. package/dist/core/table/coreTablesFeature.js.map +1 -1
  91. package/dist/core/table/coreTablesFeature.types.d.cts +27 -15
  92. package/dist/core/table/coreTablesFeature.types.d.ts +27 -15
  93. package/dist/core/table/coreTablesFeature.utils.cjs +1 -2
  94. package/dist/core/table/coreTablesFeature.utils.cjs.map +1 -1
  95. package/dist/core/table/coreTablesFeature.utils.d.cts +1 -1
  96. package/dist/core/table/coreTablesFeature.utils.d.ts +1 -1
  97. package/dist/core/table/coreTablesFeature.utils.js +1 -2
  98. package/dist/core/table/coreTablesFeature.utils.js.map +1 -1
  99. package/dist/features/column-faceting/columnFacetingFeature.cjs +49 -61
  100. package/dist/features/column-faceting/columnFacetingFeature.cjs.map +1 -1
  101. package/dist/features/column-faceting/columnFacetingFeature.d.cts +4 -15
  102. package/dist/features/column-faceting/columnFacetingFeature.d.ts +4 -15
  103. package/dist/features/column-faceting/columnFacetingFeature.js +50 -61
  104. package/dist/features/column-faceting/columnFacetingFeature.js.map +1 -1
  105. package/dist/features/column-faceting/columnFacetingFeature.types.d.cts +8 -29
  106. package/dist/features/column-faceting/columnFacetingFeature.types.d.ts +8 -29
  107. package/dist/features/column-faceting/columnFacetingFeature.utils.cjs +12 -12
  108. package/dist/features/column-faceting/columnFacetingFeature.utils.cjs.map +1 -1
  109. package/dist/features/column-faceting/columnFacetingFeature.utils.d.cts +1 -1
  110. package/dist/features/column-faceting/columnFacetingFeature.utils.d.ts +1 -1
  111. package/dist/features/column-faceting/columnFacetingFeature.utils.js +12 -12
  112. package/dist/features/column-faceting/columnFacetingFeature.utils.js.map +1 -1
  113. package/dist/features/column-faceting/createFacetedMinMaxValues.cjs.map +1 -1
  114. package/dist/features/column-faceting/createFacetedMinMaxValues.d.cts +1 -1
  115. package/dist/features/column-faceting/createFacetedMinMaxValues.d.ts +1 -1
  116. package/dist/features/column-faceting/createFacetedMinMaxValues.js.map +1 -1
  117. package/dist/features/column-faceting/createFacetedRowModel.cjs.map +1 -1
  118. package/dist/features/column-faceting/createFacetedRowModel.d.cts +1 -1
  119. package/dist/features/column-faceting/createFacetedRowModel.d.ts +1 -1
  120. package/dist/features/column-faceting/createFacetedRowModel.js.map +1 -1
  121. package/dist/features/column-faceting/createFacetedUniqueValues.cjs.map +1 -1
  122. package/dist/features/column-faceting/createFacetedUniqueValues.d.cts +1 -1
  123. package/dist/features/column-faceting/createFacetedUniqueValues.d.ts +1 -1
  124. package/dist/features/column-faceting/createFacetedUniqueValues.js.map +1 -1
  125. package/dist/features/column-filtering/columnFilteringFeature.cjs +40 -53
  126. package/dist/features/column-filtering/columnFilteringFeature.cjs.map +1 -1
  127. package/dist/features/column-filtering/columnFilteringFeature.d.cts +4 -16
  128. package/dist/features/column-filtering/columnFilteringFeature.d.ts +4 -16
  129. package/dist/features/column-filtering/columnFilteringFeature.js +41 -53
  130. package/dist/features/column-filtering/columnFilteringFeature.js.map +1 -1
  131. package/dist/features/column-filtering/columnFilteringFeature.types.d.cts +40 -26
  132. package/dist/features/column-filtering/columnFilteringFeature.types.d.ts +40 -26
  133. package/dist/features/column-filtering/columnFilteringFeature.utils.cjs +1 -1
  134. package/dist/features/column-filtering/columnFilteringFeature.utils.cjs.map +1 -1
  135. package/dist/features/column-filtering/columnFilteringFeature.utils.d.cts +2 -2
  136. package/dist/features/column-filtering/columnFilteringFeature.utils.d.ts +2 -2
  137. package/dist/features/column-filtering/columnFilteringFeature.utils.js +1 -1
  138. package/dist/features/column-filtering/columnFilteringFeature.utils.js.map +1 -1
  139. package/dist/features/column-filtering/createFilteredRowModel.cjs +4 -2
  140. package/dist/features/column-filtering/createFilteredRowModel.cjs.map +1 -1
  141. package/dist/features/column-filtering/createFilteredRowModel.d.cts +5 -3
  142. package/dist/features/column-filtering/createFilteredRowModel.d.ts +5 -3
  143. package/dist/features/column-filtering/createFilteredRowModel.js +4 -2
  144. package/dist/features/column-filtering/createFilteredRowModel.js.map +1 -1
  145. package/dist/features/column-grouping/columnGroupingFeature.cjs +57 -69
  146. package/dist/features/column-grouping/columnGroupingFeature.cjs.map +1 -1
  147. package/dist/features/column-grouping/columnGroupingFeature.d.cts +4 -15
  148. package/dist/features/column-grouping/columnGroupingFeature.d.ts +4 -15
  149. package/dist/features/column-grouping/columnGroupingFeature.js +58 -69
  150. package/dist/features/column-grouping/columnGroupingFeature.js.map +1 -1
  151. package/dist/features/column-grouping/columnGroupingFeature.types.d.cts +23 -19
  152. package/dist/features/column-grouping/columnGroupingFeature.types.d.ts +23 -19
  153. package/dist/features/column-grouping/columnGroupingFeature.utils.d.cts +1 -1
  154. package/dist/features/column-grouping/columnGroupingFeature.utils.d.ts +1 -1
  155. package/dist/features/column-grouping/createGroupedRowModel.cjs +5 -2
  156. package/dist/features/column-grouping/createGroupedRowModel.cjs.map +1 -1
  157. package/dist/features/column-grouping/createGroupedRowModel.d.cts +6 -3
  158. package/dist/features/column-grouping/createGroupedRowModel.d.ts +6 -3
  159. package/dist/features/column-grouping/createGroupedRowModel.js +5 -2
  160. package/dist/features/column-grouping/createGroupedRowModel.js.map +1 -1
  161. package/dist/features/column-ordering/columnOrderingFeature.cjs +47 -59
  162. package/dist/features/column-ordering/columnOrderingFeature.cjs.map +1 -1
  163. package/dist/features/column-ordering/columnOrderingFeature.d.cts +4 -15
  164. package/dist/features/column-ordering/columnOrderingFeature.d.ts +4 -15
  165. package/dist/features/column-ordering/columnOrderingFeature.js +48 -59
  166. package/dist/features/column-ordering/columnOrderingFeature.js.map +1 -1
  167. package/dist/features/column-ordering/columnOrderingFeature.types.d.cts +1 -1
  168. package/dist/features/column-ordering/columnOrderingFeature.types.d.ts +1 -1
  169. package/dist/features/column-ordering/columnOrderingFeature.utils.d.cts +1 -1
  170. package/dist/features/column-ordering/columnOrderingFeature.utils.d.ts +1 -1
  171. package/dist/features/column-pinning/columnPinningFeature.cjs +209 -221
  172. package/dist/features/column-pinning/columnPinningFeature.cjs.map +1 -1
  173. package/dist/features/column-pinning/columnPinningFeature.d.cts +4 -15
  174. package/dist/features/column-pinning/columnPinningFeature.d.ts +4 -15
  175. package/dist/features/column-pinning/columnPinningFeature.js +210 -221
  176. package/dist/features/column-pinning/columnPinningFeature.js.map +1 -1
  177. package/dist/features/column-pinning/columnPinningFeature.types.d.cts +2 -2
  178. package/dist/features/column-pinning/columnPinningFeature.types.d.ts +2 -2
  179. package/dist/features/column-pinning/columnPinningFeature.utils.cjs.map +1 -1
  180. package/dist/features/column-pinning/columnPinningFeature.utils.d.cts +13 -13
  181. package/dist/features/column-pinning/columnPinningFeature.utils.d.ts +13 -13
  182. package/dist/features/column-pinning/columnPinningFeature.utils.js.map +1 -1
  183. package/dist/features/column-resizing/columnResizingFeature.cjs +31 -43
  184. package/dist/features/column-resizing/columnResizingFeature.cjs.map +1 -1
  185. package/dist/features/column-resizing/columnResizingFeature.d.cts +4 -15
  186. package/dist/features/column-resizing/columnResizingFeature.d.ts +4 -15
  187. package/dist/features/column-resizing/columnResizingFeature.js +32 -43
  188. package/dist/features/column-resizing/columnResizingFeature.js.map +1 -1
  189. package/dist/features/column-resizing/columnResizingFeature.utils.d.cts +1 -1
  190. package/dist/features/column-resizing/columnResizingFeature.utils.d.ts +1 -1
  191. package/dist/features/column-sizing/columnSizingFeature.cjs +112 -125
  192. package/dist/features/column-sizing/columnSizingFeature.cjs.map +1 -1
  193. package/dist/features/column-sizing/columnSizingFeature.d.cts +4 -16
  194. package/dist/features/column-sizing/columnSizingFeature.d.ts +4 -16
  195. package/dist/features/column-sizing/columnSizingFeature.js +113 -125
  196. package/dist/features/column-sizing/columnSizingFeature.js.map +1 -1
  197. package/dist/features/column-sizing/columnSizingFeature.utils.d.cts +4 -4
  198. package/dist/features/column-sizing/columnSizingFeature.utils.d.ts +4 -4
  199. package/dist/features/column-visibility/columnVisibilityFeature.cjs +83 -95
  200. package/dist/features/column-visibility/columnVisibilityFeature.cjs.map +1 -1
  201. package/dist/features/column-visibility/columnVisibilityFeature.d.cts +4 -15
  202. package/dist/features/column-visibility/columnVisibilityFeature.d.ts +4 -15
  203. package/dist/features/column-visibility/columnVisibilityFeature.js +84 -95
  204. package/dist/features/column-visibility/columnVisibilityFeature.js.map +1 -1
  205. package/dist/features/column-visibility/columnVisibilityFeature.types.d.cts +2 -2
  206. package/dist/features/column-visibility/columnVisibilityFeature.types.d.ts +2 -2
  207. package/dist/features/column-visibility/columnVisibilityFeature.utils.d.cts +1 -1
  208. package/dist/features/column-visibility/columnVisibilityFeature.utils.d.ts +1 -1
  209. package/dist/features/global-filtering/globalFilteringFeature.cjs +31 -43
  210. package/dist/features/global-filtering/globalFilteringFeature.cjs.map +1 -1
  211. package/dist/features/global-filtering/globalFilteringFeature.d.cts +4 -15
  212. package/dist/features/global-filtering/globalFilteringFeature.d.ts +4 -15
  213. package/dist/features/global-filtering/globalFilteringFeature.js +32 -43
  214. package/dist/features/global-filtering/globalFilteringFeature.js.map +1 -1
  215. package/dist/features/global-filtering/globalFilteringFeature.types.d.cts +3 -3
  216. package/dist/features/global-filtering/globalFilteringFeature.types.d.ts +3 -3
  217. package/dist/features/global-filtering/globalFilteringFeature.utils.cjs.map +1 -1
  218. package/dist/features/global-filtering/globalFilteringFeature.utils.d.cts +7 -5
  219. package/dist/features/global-filtering/globalFilteringFeature.utils.d.ts +7 -5
  220. package/dist/features/global-filtering/globalFilteringFeature.utils.js.map +1 -1
  221. package/dist/features/row-expanding/createExpandedRowModel.cjs.map +1 -1
  222. package/dist/features/row-expanding/createExpandedRowModel.d.cts +1 -1
  223. package/dist/features/row-expanding/createExpandedRowModel.d.ts +1 -1
  224. package/dist/features/row-expanding/createExpandedRowModel.js.map +1 -1
  225. package/dist/features/row-expanding/rowExpandingFeature.cjs +37 -49
  226. package/dist/features/row-expanding/rowExpandingFeature.cjs.map +1 -1
  227. package/dist/features/row-expanding/rowExpandingFeature.d.cts +4 -15
  228. package/dist/features/row-expanding/rowExpandingFeature.d.ts +4 -15
  229. package/dist/features/row-expanding/rowExpandingFeature.js +38 -49
  230. package/dist/features/row-expanding/rowExpandingFeature.js.map +1 -1
  231. package/dist/features/row-expanding/rowExpandingFeature.types.d.cts +5 -14
  232. package/dist/features/row-expanding/rowExpandingFeature.types.d.ts +5 -14
  233. package/dist/features/row-expanding/rowExpandingFeature.utils.d.cts +1 -1
  234. package/dist/features/row-expanding/rowExpandingFeature.utils.d.ts +1 -1
  235. package/dist/features/row-pagination/createPaginatedRowModel.cjs.map +1 -1
  236. package/dist/features/row-pagination/createPaginatedRowModel.d.cts +1 -1
  237. package/dist/features/row-pagination/createPaginatedRowModel.d.ts +1 -1
  238. package/dist/features/row-pagination/createPaginatedRowModel.js.map +1 -1
  239. package/dist/features/row-pagination/rowPaginationFeature.cjs +35 -47
  240. package/dist/features/row-pagination/rowPaginationFeature.cjs.map +1 -1
  241. package/dist/features/row-pagination/rowPaginationFeature.d.cts +4 -15
  242. package/dist/features/row-pagination/rowPaginationFeature.d.ts +4 -15
  243. package/dist/features/row-pagination/rowPaginationFeature.js +36 -47
  244. package/dist/features/row-pagination/rowPaginationFeature.js.map +1 -1
  245. package/dist/features/row-pagination/rowPaginationFeature.types.d.cts +4 -13
  246. package/dist/features/row-pagination/rowPaginationFeature.types.d.ts +4 -13
  247. package/dist/features/row-pagination/rowPaginationFeature.utils.d.cts +1 -1
  248. package/dist/features/row-pagination/rowPaginationFeature.utils.d.ts +1 -1
  249. package/dist/features/row-pinning/rowPinningFeature.cjs +55 -67
  250. package/dist/features/row-pinning/rowPinningFeature.cjs.map +1 -1
  251. package/dist/features/row-pinning/rowPinningFeature.d.cts +4 -15
  252. package/dist/features/row-pinning/rowPinningFeature.d.ts +4 -15
  253. package/dist/features/row-pinning/rowPinningFeature.js +56 -67
  254. package/dist/features/row-pinning/rowPinningFeature.js.map +1 -1
  255. package/dist/features/row-pinning/rowPinningFeature.types.d.cts +2 -2
  256. package/dist/features/row-pinning/rowPinningFeature.types.d.ts +2 -2
  257. package/dist/features/row-pinning/rowPinningFeature.utils.d.cts +1 -1
  258. package/dist/features/row-pinning/rowPinningFeature.utils.d.ts +1 -1
  259. package/dist/features/row-selection/rowSelectionFeature.cjs +65 -77
  260. package/dist/features/row-selection/rowSelectionFeature.cjs.map +1 -1
  261. package/dist/features/row-selection/rowSelectionFeature.d.cts +4 -15
  262. package/dist/features/row-selection/rowSelectionFeature.d.ts +4 -15
  263. package/dist/features/row-selection/rowSelectionFeature.js +66 -77
  264. package/dist/features/row-selection/rowSelectionFeature.js.map +1 -1
  265. package/dist/features/row-selection/rowSelectionFeature.types.d.cts +2 -2
  266. package/dist/features/row-selection/rowSelectionFeature.types.d.ts +2 -2
  267. package/dist/features/row-selection/rowSelectionFeature.utils.cjs +10 -6
  268. package/dist/features/row-selection/rowSelectionFeature.utils.cjs.map +1 -1
  269. package/dist/features/row-selection/rowSelectionFeature.utils.d.cts +1 -1
  270. package/dist/features/row-selection/rowSelectionFeature.utils.d.ts +1 -1
  271. package/dist/features/row-selection/rowSelectionFeature.utils.js +10 -6
  272. package/dist/features/row-selection/rowSelectionFeature.utils.js.map +1 -1
  273. package/dist/features/row-sorting/createSortedRowModel.cjs +4 -2
  274. package/dist/features/row-sorting/createSortedRowModel.cjs.map +1 -1
  275. package/dist/features/row-sorting/createSortedRowModel.d.cts +5 -3
  276. package/dist/features/row-sorting/createSortedRowModel.d.ts +5 -3
  277. package/dist/features/row-sorting/createSortedRowModel.js +4 -2
  278. package/dist/features/row-sorting/createSortedRowModel.js.map +1 -1
  279. package/dist/features/row-sorting/rowSortingFeature.cjs +45 -57
  280. package/dist/features/row-sorting/rowSortingFeature.cjs.map +1 -1
  281. package/dist/features/row-sorting/rowSortingFeature.d.cts +4 -15
  282. package/dist/features/row-sorting/rowSortingFeature.d.ts +4 -15
  283. package/dist/features/row-sorting/rowSortingFeature.js +46 -57
  284. package/dist/features/row-sorting/rowSortingFeature.js.map +1 -1
  285. package/dist/features/row-sorting/rowSortingFeature.types.d.cts +23 -20
  286. package/dist/features/row-sorting/rowSortingFeature.types.d.ts +23 -20
  287. package/dist/features/row-sorting/rowSortingFeature.utils.cjs +8 -5
  288. package/dist/features/row-sorting/rowSortingFeature.utils.cjs.map +1 -1
  289. package/dist/features/row-sorting/rowSortingFeature.utils.d.cts +1 -1
  290. package/dist/features/row-sorting/rowSortingFeature.utils.d.ts +1 -1
  291. package/dist/features/row-sorting/rowSortingFeature.utils.js +8 -5
  292. package/dist/features/row-sorting/rowSortingFeature.utils.js.map +1 -1
  293. package/dist/fns/aggregationFns.cjs +18 -18
  294. package/dist/fns/aggregationFns.cjs.map +1 -1
  295. package/dist/fns/aggregationFns.d.cts +21 -19
  296. package/dist/fns/aggregationFns.d.ts +21 -19
  297. package/dist/fns/aggregationFns.js +18 -18
  298. package/dist/fns/aggregationFns.js.map +1 -1
  299. package/dist/fns/filterFns.cjs +51 -65
  300. package/dist/fns/filterFns.cjs.map +1 -1
  301. package/dist/fns/filterFns.d.cts +82 -28
  302. package/dist/fns/filterFns.d.ts +82 -28
  303. package/dist/fns/filterFns.js +51 -65
  304. package/dist/fns/filterFns.js.map +1 -1
  305. package/dist/fns/sortFns.cjs +18 -6
  306. package/dist/fns/sortFns.cjs.map +1 -1
  307. package/dist/fns/sortFns.d.cts +15 -13
  308. package/dist/fns/sortFns.d.ts +15 -13
  309. package/dist/fns/sortFns.js +18 -6
  310. package/dist/fns/sortFns.js.map +1 -1
  311. package/dist/helpers/metaHelper.cjs +30 -0
  312. package/dist/helpers/metaHelper.cjs.map +1 -0
  313. package/dist/helpers/metaHelper.d.cts +26 -0
  314. package/dist/helpers/metaHelper.d.ts +26 -0
  315. package/dist/helpers/metaHelper.js +29 -0
  316. package/dist/helpers/metaHelper.js.map +1 -0
  317. package/dist/helpers/tableFeatures.cjs +31 -3
  318. package/dist/helpers/tableFeatures.cjs.map +1 -1
  319. package/dist/helpers/tableFeatures.d.cts +33 -5
  320. package/dist/helpers/tableFeatures.d.ts +33 -5
  321. package/dist/helpers/tableFeatures.js +31 -3
  322. package/dist/helpers/tableFeatures.js.map +1 -1
  323. package/dist/index.cjs +2 -20
  324. package/dist/index.d.cts +44 -43
  325. package/dist/index.d.ts +44 -43
  326. package/dist/index.js +22 -21
  327. package/dist/store-reactivity-bindings.cjs +1 -1
  328. package/dist/store-reactivity-bindings.cjs.map +1 -1
  329. package/dist/store-reactivity-bindings.d.cts +1 -1
  330. package/dist/store-reactivity-bindings.d.ts +1 -1
  331. package/dist/store-reactivity-bindings.js +1 -1
  332. package/dist/store-reactivity-bindings.js.map +1 -1
  333. package/dist/types/Cell.d.cts +8 -10
  334. package/dist/types/Cell.d.ts +8 -10
  335. package/dist/types/Column.d.cts +19 -12
  336. package/dist/types/Column.d.ts +19 -12
  337. package/dist/types/ColumnDef.d.cts +30 -11
  338. package/dist/types/ColumnDef.d.ts +30 -11
  339. package/dist/types/Header.d.cts +10 -11
  340. package/dist/types/Header.d.ts +10 -11
  341. package/dist/types/HeaderGroup.d.cts +4 -9
  342. package/dist/types/HeaderGroup.d.ts +4 -9
  343. package/dist/types/Row.d.cts +15 -11
  344. package/dist/types/Row.d.ts +15 -11
  345. package/dist/types/RowModel.d.cts +19 -19
  346. package/dist/types/RowModel.d.ts +19 -19
  347. package/dist/types/RowModelFns.d.cts +9 -9
  348. package/dist/types/RowModelFns.d.ts +9 -9
  349. package/dist/types/Table.d.cts +52 -24
  350. package/dist/types/Table.d.ts +52 -24
  351. package/dist/types/TableFeatures.d.cts +178 -41
  352. package/dist/types/TableFeatures.d.ts +178 -41
  353. package/dist/types/TableOptions.d.cts +31 -10
  354. package/dist/types/TableOptions.d.ts +31 -10
  355. package/dist/types/TableState.d.cts +22 -13
  356. package/dist/types/TableState.d.ts +22 -13
  357. package/dist/utils.cjs.map +1 -1
  358. package/dist/utils.d.cts +8 -3
  359. package/dist/utils.d.ts +8 -3
  360. package/dist/utils.js.map +1 -1
  361. package/package.json +1 -1
  362. package/skills/column-definitions/SKILL.md +3 -6
  363. package/skills/column-layout/SKILL.md +0 -2
  364. package/skills/customizing-feature-behavior/SKILL.md +63 -56
  365. package/skills/filtering/SKILL.md +60 -42
  366. package/skills/filtering/references/faceting-and-fuzzy.md +59 -32
  367. package/skills/grouping/SKILL.md +49 -54
  368. package/skills/migrate-v8-to-v9/SKILL.md +30 -33
  369. package/skills/pagination/SKILL.md +22 -20
  370. package/skills/row-expanding/SKILL.md +33 -25
  371. package/skills/row-pinning/SKILL.md +11 -7
  372. package/skills/row-selection/SKILL.md +0 -3
  373. package/skills/setup/SKILL.md +55 -65
  374. package/skills/sorting/SKILL.md +21 -21
  375. package/skills/state-management/SKILL.md +40 -25
  376. package/src/core/cells/coreCellsFeature.ts +17 -39
  377. package/src/core/cells/coreCellsFeature.types.ts +6 -6
  378. package/src/core/columns/coreColumnsFeature.ts +56 -83
  379. package/src/core/columns/coreColumnsFeature.types.ts +8 -8
  380. package/src/core/coreFeatures.ts +1 -1
  381. package/src/core/headers/buildHeaderGroups.ts +1 -1
  382. package/src/core/headers/coreHeadersFeature.ts +42 -64
  383. package/src/core/headers/coreHeadersFeature.types.ts +10 -10
  384. package/src/core/headers/coreHeadersFeature.utils.ts +1 -1
  385. package/src/core/row-models/coreRowModelsFeature.ts +43 -64
  386. package/src/core/row-models/coreRowModelsFeature.types.ts +7 -24
  387. package/src/core/row-models/coreRowModelsFeature.utils.ts +7 -7
  388. package/src/core/row-models/createCoreRowModel.ts +5 -4
  389. package/src/core/rows/coreRowsFeature.ts +45 -72
  390. package/src/core/rows/coreRowsFeature.types.ts +8 -8
  391. package/src/core/table/constructTable.ts +50 -13
  392. package/src/core/table/coreTablesFeature.ts +13 -35
  393. package/src/core/table/coreTablesFeature.types.ts +40 -17
  394. package/src/core/table/coreTablesFeature.utils.ts +10 -5
  395. package/src/features/column-faceting/columnFacetingFeature.ts +71 -102
  396. package/src/features/column-faceting/columnFacetingFeature.types.ts +11 -44
  397. package/src/features/column-faceting/columnFacetingFeature.utils.ts +6 -6
  398. package/src/features/column-faceting/createFacetedMinMaxValues.ts +1 -1
  399. package/src/features/column-faceting/createFacetedRowModel.ts +1 -1
  400. package/src/features/column-faceting/createFacetedUniqueValues.ts +1 -1
  401. package/src/features/column-filtering/columnFilteringFeature.ts +60 -103
  402. package/src/features/column-filtering/columnFilteringFeature.types.ts +55 -39
  403. package/src/features/column-filtering/columnFilteringFeature.utils.ts +2 -2
  404. package/src/features/column-filtering/createFilteredRowModel.ts +5 -7
  405. package/src/features/column-grouping/columnGroupingFeature.ts +82 -126
  406. package/src/features/column-grouping/columnGroupingFeature.types.ts +32 -31
  407. package/src/features/column-grouping/createGroupedRowModel.ts +7 -11
  408. package/src/features/column-ordering/columnOrderingFeature.ts +52 -84
  409. package/src/features/column-ordering/columnOrderingFeature.types.ts +2 -2
  410. package/src/features/column-pinning/columnPinningFeature.ts +268 -304
  411. package/src/features/column-pinning/columnPinningFeature.types.ts +4 -4
  412. package/src/features/column-pinning/columnPinningFeature.utils.ts +5 -5
  413. package/src/features/column-resizing/columnResizingFeature.ts +44 -78
  414. package/src/features/column-sizing/columnSizingFeature.ts +115 -152
  415. package/src/features/column-visibility/columnVisibilityFeature.ts +92 -129
  416. package/src/features/column-visibility/columnVisibilityFeature.types.ts +4 -4
  417. package/src/features/global-filtering/globalFilteringFeature.ts +45 -79
  418. package/src/features/global-filtering/globalFilteringFeature.types.ts +4 -4
  419. package/src/features/global-filtering/globalFilteringFeature.utils.ts +4 -2
  420. package/src/features/row-expanding/createExpandedRowModel.ts +1 -1
  421. package/src/features/row-expanding/rowExpandingFeature.ts +65 -101
  422. package/src/features/row-expanding/rowExpandingFeature.types.ts +8 -22
  423. package/src/features/row-pagination/createPaginatedRowModel.ts +1 -1
  424. package/src/features/row-pagination/rowPaginationFeature.ts +69 -103
  425. package/src/features/row-pagination/rowPaginationFeature.types.ts +6 -20
  426. package/src/features/row-pinning/rowPinningFeature.ts +72 -104
  427. package/src/features/row-pinning/rowPinningFeature.types.ts +4 -4
  428. package/src/features/row-selection/rowSelectionFeature.ts +103 -135
  429. package/src/features/row-selection/rowSelectionFeature.types.ts +4 -4
  430. package/src/features/row-selection/rowSelectionFeature.utils.ts +12 -7
  431. package/src/features/row-sorting/createSortedRowModel.ts +6 -6
  432. package/src/features/row-sorting/rowSortingFeature.ts +73 -114
  433. package/src/features/row-sorting/rowSortingFeature.types.ts +33 -32
  434. package/src/features/row-sorting/rowSortingFeature.utils.ts +8 -6
  435. package/src/fns/aggregationFns.ts +26 -42
  436. package/src/fns/filterFns.ts +231 -264
  437. package/src/fns/sortFns.ts +51 -29
  438. package/src/helpers/metaHelper.ts +24 -0
  439. package/src/helpers/tableFeatures.ts +36 -5
  440. package/src/index.ts +1 -0
  441. package/src/store-reactivity-bindings.ts +1 -1
  442. package/src/types/Cell.ts +10 -30
  443. package/src/types/Column.ts +21 -56
  444. package/src/types/ColumnDef.ts +48 -49
  445. package/src/types/Header.ts +10 -32
  446. package/src/types/HeaderGroup.ts +4 -15
  447. package/src/types/Row.ts +18 -39
  448. package/src/types/RowModel.ts +24 -114
  449. package/src/types/RowModelFns.ts +12 -31
  450. package/src/types/Table.ts +85 -80
  451. package/src/types/TableFeatures.ts +253 -108
  452. package/src/types/TableOptions.ts +70 -60
  453. package/src/types/TableState.ts +20 -73
  454. package/src/utils.ts +16 -6
@@ -3,7 +3,7 @@ name: filtering
3
3
  description: >
4
4
  Filter rows in TanStack Table v9 with the `filteredRowModel` pipeline stage.
5
5
  Covers `columnFilteringFeature` + `globalFilteringFeature` + `columnFacetingFeature`,
6
- `createFilteredRowModel(filterFns)`, `createFacetedRowModel()` /
6
+ `createFilteredRowModel()` (registered on `features` with `filterFns` slot), `createFacetedRowModel()` /
7
7
  `createFacetedUniqueValues()` / `createFacetedMinMaxValues()`, fuzzy filtering
8
8
  with `@tanstack/match-sorter-utils`, the built-in `filterFns` registry, custom
9
9
  `filterFn` + module augmentation, `state.columnFilters` (Array<{ id, value }>),
@@ -36,13 +36,13 @@ This skill builds on `tanstack-table/state-management` and `tanstack-table/custo
36
36
 
37
37
  Filtering has five subsystems in v9 — register only the features you need:
38
38
 
39
- | Subsystem | Feature | Row-model |
40
- | ---------------- | ------------------------ | ----------------------------------- |
41
- | column-filtering | `columnFilteringFeature` | `createFilteredRowModel(filterFns)` |
42
- | global-filtering | `globalFilteringFeature` | (same `filteredRowModel`) |
43
- | column-faceting | `columnFacetingFeature` | `createFacetedRowModel()` + helpers |
44
- | global-faceting | `globalFacetingFeature` | global versions of the helpers |
45
- | fuzzy-filtering | (custom filterFn) | `@tanstack/match-sorter-utils` |
39
+ | Subsystem | Feature | Row-model |
40
+ | ---------------- | ------------------------ | --------------------------------------------- |
41
+ | column-filtering | `columnFilteringFeature` | `createFilteredRowModel()` + `filterFns` slot |
42
+ | global-filtering | `globalFilteringFeature` | (same `filteredRowModel`) |
43
+ | column-faceting | `columnFacetingFeature` | `createFacetedRowModel()` + helpers |
44
+ | global-faceting | `globalFacetingFeature` | global versions of the helpers |
45
+ | fuzzy-filtering | (custom filterFn) | `@tanstack/match-sorter-utils` |
46
46
 
47
47
  ```ts
48
48
  import {
@@ -60,14 +60,13 @@ const features = tableFeatures({
60
60
  columnFilteringFeature,
61
61
  globalFilteringFeature,
62
62
  rowPaginationFeature,
63
+ filteredRowModel: createFilteredRowModel(),
64
+ paginatedRowModel: createPaginatedRowModel(),
65
+ filterFns,
63
66
  })
64
67
 
65
68
  const table = constructTable({
66
69
  features,
67
- rowModels: {
68
- filteredRowModel: createFilteredRowModel(filterFns),
69
- paginatedRowModel: createPaginatedRowModel(),
70
- },
71
70
  columns,
72
71
  data,
73
72
  initialState: {
@@ -130,7 +129,7 @@ function Filter({ column }) {
130
129
 
131
130
  ### Faceted filter UIs and fuzzy global search
132
131
 
133
- Faceting requires `createFacetedRowModel()` as the base plus `createFacetedUniqueValues()` / `createFacetedMinMaxValues()`; fuzzy filtering wires a custom `FilterFn` backed by `@tanstack/match-sorter-utils` (`rankItem` / `compareItems`) with module augmentation for `FilterFns` + `FilterMeta`. Full examples in [faceting-and-fuzzy.md](references/faceting-and-fuzzy.md).
132
+ Faceting requires `createFacetedRowModel()` as the base plus `createFacetedUniqueValues()` / `createFacetedMinMaxValues()` — all registered on the `features` object; fuzzy filtering wires a custom `FilterFn` backed by `@tanstack/match-sorter-utils` (`rankItem` / `compareItems`) with the `filterFns` registry slot and `filterMeta` slot for type-safe meta. Full examples in [faceting-and-fuzzy.md](references/faceting-and-fuzzy.md).
134
133
 
135
134
  ### Server-side filtering
136
135
 
@@ -143,7 +142,7 @@ const { data } = useQuery({
143
142
  })
144
143
  const table = useTable({
145
144
  features: tableFeatures({ columnFilteringFeature }),
146
- rowModels: {}, // no filteredRowModel needed for manual filtering
145
+ // no filteredRowModel registered server filters
147
146
  data,
148
147
  columns,
149
148
  manualFiltering: true,
@@ -155,12 +154,15 @@ const table = useTable({
155
154
  ### Filter tree data and keep matching descendants visible
156
155
 
157
156
  ```ts
157
+ const features = tableFeatures({
158
+ columnFilteringFeature,
159
+ rowExpandingFeature,
160
+ filteredRowModel: createFilteredRowModel(),
161
+ expandedRowModel: createExpandedRowModel(),
162
+ filterFns,
163
+ })
158
164
  const table = constructTable({
159
- features: tableFeatures({ columnFilteringFeature, rowExpandingFeature }),
160
- rowModels: {
161
- filteredRowModel: createFilteredRowModel(filterFns),
162
- expandedRowModel: createExpandedRowModel(),
163
- },
165
+ features,
164
166
  columns,
165
167
  data,
166
168
  getSubRows: (r) => r.subRows,
@@ -176,13 +178,15 @@ Wrong:
176
178
 
177
179
  ```tsx
178
180
  const table = useTable({
179
- features: tableFeatures({ columnFacetingFeature, columnFilteringFeature }),
180
- rowModels: {
181
- filteredRowModel: createFilteredRowModel(filterFns),
181
+ features: tableFeatures({
182
+ columnFacetingFeature,
183
+ columnFilteringFeature,
184
+ filteredRowModel: createFilteredRowModel(),
182
185
  // BUG: missing facetedRowModel
183
186
  facetedUniqueValues: createFacetedUniqueValues(),
184
187
  facetedMinMaxValues: createFacetedMinMaxValues(),
185
- },
188
+ filterFns,
189
+ }),
186
190
  columns,
187
191
  data,
188
192
  })
@@ -196,14 +200,13 @@ const table = useTable({
196
200
  columnFacetingFeature,
197
201
  columnFilteringFeature,
198
202
  rowPaginationFeature,
199
- }),
200
- rowModels: {
201
- filteredRowModel: createFilteredRowModel(filterFns),
203
+ filteredRowModel: createFilteredRowModel(),
202
204
  paginatedRowModel: createPaginatedRowModel(),
203
205
  facetedRowModel: createFacetedRowModel(), // REQUIRED base
204
206
  facetedMinMaxValues: createFacetedMinMaxValues(),
205
207
  facetedUniqueValues: createFacetedUniqueValues(),
206
- },
208
+ filterFns,
209
+ }),
207
210
  columns,
208
211
  data,
209
212
  })
@@ -220,8 +223,11 @@ Wrong:
220
223
  ```tsx
221
224
  // manualFiltering bypasses the filteredRowModel — filter UI changes do nothing
222
225
  const table = useTable({
223
- features: tableFeatures({ columnFilteringFeature }),
224
- rowModels: { filteredRowModel: createFilteredRowModel(filterFns) },
226
+ features: tableFeatures({
227
+ columnFilteringFeature,
228
+ filteredRowModel: createFilteredRowModel(),
229
+ filterFns,
230
+ }),
225
231
  data,
226
232
  columns,
227
233
  manualFiltering: true,
@@ -241,7 +247,7 @@ const { data } = useQuery({
241
247
 
242
248
  const table = useTable({
243
249
  features: tableFeatures({ columnFilteringFeature }),
244
- rowModels: {}, // no filteredRowModel needed
250
+ // no filteredRowModel registered for manual mode
245
251
  data,
246
252
  columns,
247
253
  manualFiltering: true,
@@ -260,9 +266,11 @@ Wrong:
260
266
 
261
267
  ```tsx
262
268
  // drops the built-in registry
263
- filteredRowModel: createFilteredRowModel({
264
- fuzzy: fuzzyFilter,
265
- }),
269
+ const features = tableFeatures({
270
+ columnFilteringFeature,
271
+ filteredRowModel: createFilteredRowModel(),
272
+ filterFns: { fuzzy: fuzzyFilter }, // BUG: drops built-ins
273
+ })
266
274
  // Column with filterFn: 'includesString' now warns and never filters
267
275
  ```
268
276
 
@@ -271,13 +279,17 @@ Correct:
271
279
  ```tsx
272
280
  import { filterFns } from '@tanstack/react-table'
273
281
 
274
- filteredRowModel: createFilteredRowModel({
275
- ...filterFns, // KEEP built-ins
276
- fuzzy: fuzzyFilter, // ADD custom
277
- }),
282
+ const features = tableFeatures({
283
+ columnFilteringFeature,
284
+ filteredRowModel: createFilteredRowModel(),
285
+ filterFns: {
286
+ ...filterFns, // KEEP built-ins
287
+ fuzzy: fuzzyFilter, // ADD custom
288
+ },
289
+ })
278
290
  ```
279
291
 
280
- `createFilteredRowModel` replaces the registry with whatever you pass. Any column using a built-in name like `'includesString'` becomes a no-op.
292
+ The `filterFns` slot replaces the registry with whatever you provide. Any column using a built-in name like `'includesString'` becomes a no-op if the built-ins are dropped.
281
293
 
282
294
  Source: examples/react/filters-fuzzy/src/main.tsx
283
295
 
@@ -298,8 +310,11 @@ Correct:
298
310
 
299
311
  ```tsx
300
312
  const table = useTable({
301
- features: tableFeatures({ globalFilteringFeature }),
302
- rowModels: { filteredRowModel: createFilteredRowModel(filterFns) },
313
+ features: tableFeatures({
314
+ globalFilteringFeature,
315
+ filteredRowModel: createFilteredRowModel(),
316
+ filterFns,
317
+ }),
303
318
  columns,
304
319
  data,
305
320
  globalFilterFn: 'includesString',
@@ -333,8 +348,11 @@ Correct:
333
348
 
334
349
  ```ts
335
350
  const table = useTable({
336
- features: tableFeatures({ columnFilteringFeature }),
337
- rowModels: { filteredRowModel: createFilteredRowModel(filterFns) },
351
+ features: tableFeatures({
352
+ columnFilteringFeature,
353
+ filteredRowModel: createFilteredRowModel(),
354
+ filterFns,
355
+ }),
338
356
  columns,
339
357
  data,
340
358
  })
@@ -16,17 +16,16 @@ const features = tableFeatures({
16
16
  columnFacetingFeature,
17
17
  columnFilteringFeature,
18
18
  rowPaginationFeature,
19
+ filteredRowModel: createFilteredRowModel(),
20
+ paginatedRowModel: createPaginatedRowModel(),
21
+ facetedRowModel: createFacetedRowModel(), // REQUIRED base
22
+ facetedMinMaxValues: createFacetedMinMaxValues(),
23
+ facetedUniqueValues: createFacetedUniqueValues(),
24
+ filterFns,
19
25
  })
20
26
 
21
27
  const table = constructTable({
22
28
  features,
23
- rowModels: {
24
- filteredRowModel: createFilteredRowModel(filterFns),
25
- paginatedRowModel: createPaginatedRowModel(),
26
- facetedRowModel: createFacetedRowModel(), // REQUIRED base
27
- facetedMinMaxValues: createFacetedMinMaxValues(),
28
- facetedUniqueValues: createFacetedUniqueValues(),
29
- },
30
29
  columns,
31
30
  data,
32
31
  })
@@ -44,18 +43,28 @@ import {
44
43
  compareItems,
45
44
  type RankingInfo,
46
45
  } from '@tanstack/match-sorter-utils'
47
- import type { FilterFn, SortFn } from '@tanstack/table-core'
46
+ import {
47
+ tableFeatures,
48
+ columnFilteringFeature,
49
+ globalFilteringFeature,
50
+ rowSortingFeature,
51
+ createFilteredRowModel,
52
+ createSortedRowModel,
53
+ filterFns,
54
+ sortFns,
55
+ metaHelper,
56
+ } from '@tanstack/table-core'
57
+ import type { FilterFn, SortFn, TableFeatures } from '@tanstack/table-core'
48
58
 
49
- declare module '@tanstack/react-table' {
50
- interface FilterFns {
51
- fuzzy: FilterFn<typeof features, Person>
52
- }
53
- interface FilterMeta {
54
- itemRank?: RankingInfo
55
- }
59
+ // 1. Describe the filterMeta shape for this feature set.
60
+ interface FuzzyFilterMeta {
61
+ itemRank?: RankingInfo
56
62
  }
57
63
 
58
- const fuzzyFilter: FilterFn<typeof features, Person> = (
64
+ // 2. Extend TableFeatures so FilterFn / SortFn can read filterMeta types.
65
+ type FuzzyFeatures = TableFeatures & { filterMeta: FuzzyFilterMeta }
66
+
67
+ const fuzzyFilter: FilterFn<FuzzyFeatures, Person> = (
59
68
  row,
60
69
  columnId,
61
70
  value,
@@ -66,7 +75,7 @@ const fuzzyFilter: FilterFn<typeof features, Person> = (
66
75
  return itemRank.passed
67
76
  }
68
77
 
69
- const fuzzySort: SortFn<typeof features, Person> = (rowA, rowB, columnId) => {
78
+ const fuzzySort: SortFn<FuzzyFeatures, Person> = (rowA, rowB, columnId) => {
70
79
  let dir = 0
71
80
  if (rowA.columnFiltersMeta[columnId]) {
72
81
  dir = compareItems(
@@ -77,21 +86,35 @@ const fuzzySort: SortFn<typeof features, Person> = (rowA, rowB, columnId) => {
77
86
  return dir === 0 ? sortFns.alphanumeric(rowA, rowB, columnId) : dir
78
87
  }
79
88
 
89
+ // 3. Register everything on features — no rowModels option needed.
90
+ const features = tableFeatures({
91
+ columnFilteringFeature,
92
+ globalFilteringFeature,
93
+ rowSortingFeature,
94
+ filteredRowModel: createFilteredRowModel(),
95
+ sortedRowModel: createSortedRowModel(),
96
+ filterFns: { ...filterFns, fuzzy: fuzzyFilter },
97
+ sortFns: { ...sortFns, fuzzy: fuzzySort },
98
+ filterMeta: metaHelper<FuzzyFilterMeta>(),
99
+ })
100
+
80
101
  const table = constructTable({
81
102
  features,
82
- rowModels: {
83
- filteredRowModel: createFilteredRowModel({
84
- ...filterFns,
85
- fuzzy: fuzzyFilter,
86
- }),
87
- sortedRowModel: createSortedRowModel(sortFns),
88
- },
89
103
  columns,
90
104
  data,
91
105
  globalFilterFn: 'fuzzy',
92
106
  })
93
107
  ```
94
108
 
109
+ Use string refs in column defs when the fn is registered:
110
+
111
+ ```ts
112
+ columnHelper.accessor('fullName', {
113
+ filterFn: 'fuzzy', // string ref — typechecks because 'fuzzy' is in features.filterFns
114
+ sortFn: 'fuzzy',
115
+ })
116
+ ```
117
+
95
118
  ## Additional MEDIUM-priority failure modes
96
119
 
97
120
  ### Using `state.columnFilters` AND `initialState.columnFilters` simultaneously
@@ -131,11 +154,13 @@ Wrong:
131
154
  ```tsx
132
155
  // filterFromLeafRows hides children that don't match individually
133
156
  const table = useTable({
134
- features: tableFeatures({ columnFilteringFeature, rowExpandingFeature }),
135
- rowModels: {
136
- filteredRowModel: createFilteredRowModel(filterFns),
157
+ features: tableFeatures({
158
+ columnFilteringFeature,
159
+ rowExpandingFeature,
160
+ filteredRowModel: createFilteredRowModel(),
137
161
  expandedRowModel: createExpandedRowModel(),
138
- },
162
+ filterFns,
163
+ }),
139
164
  columns,
140
165
  data,
141
166
  getSubRows: (r) => r.subRows,
@@ -150,11 +175,13 @@ Correct:
150
175
  ```tsx
151
176
  // Filter root-only to preserve all sub-rows under a matching parent
152
177
  const table = useTable({
153
- features: tableFeatures({ columnFilteringFeature, rowExpandingFeature }),
154
- rowModels: {
155
- filteredRowModel: createFilteredRowModel(filterFns),
178
+ features: tableFeatures({
179
+ columnFilteringFeature,
180
+ rowExpandingFeature,
181
+ filteredRowModel: createFilteredRowModel(),
156
182
  expandedRowModel: createExpandedRowModel(),
157
- },
183
+ filterFns,
184
+ }),
158
185
  columns,
159
186
  data,
160
187
  getSubRows: (r) => r.subRows,
@@ -2,7 +2,7 @@
2
2
  name: grouping
3
3
  description: >
4
4
  Group rows by column values in TanStack Table v9 with the `groupedRowModel`
5
- stage. Covers `columnGroupingFeature` + `createGroupedRowModel(aggregationFns)`,
5
+ stage. Covers `columnGroupingFeature` + `createGroupedRowModel()` (registered on `features` with `aggregationFns` slot),
6
6
  `state.grouping` (GroupingState = Array<string>), `onGroupingChange`,
7
7
  `columnDef.aggregationFn` ('auto'|name|fn) — distinct signature
8
8
  `(columnId, leafRows, childRows)` — `columnDef.aggregatedCell`,
@@ -49,6 +49,10 @@ const features = tableFeatures({
49
49
  columnGroupingFeature,
50
50
  rowExpandingFeature,
51
51
  rowPaginationFeature,
52
+ groupedRowModel: createGroupedRowModel(),
53
+ expandedRowModel: createExpandedRowModel(),
54
+ paginatedRowModel: createPaginatedRowModel(),
55
+ aggregationFns,
52
56
  })
53
57
 
54
58
  const columnHelper = createColumnHelper<typeof features, Person>()
@@ -66,11 +70,6 @@ const columns = columnHelper.columns([
66
70
 
67
71
  const table = constructTable({
68
72
  features,
69
- rowModels: {
70
- groupedRowModel: createGroupedRowModel(aggregationFns),
71
- expandedRowModel: createExpandedRowModel(),
72
- paginatedRowModel: createPaginatedRowModel(),
73
- },
74
73
  columns,
75
74
  data,
76
75
  initialState: { grouping: [] satisfies GroupingState },
@@ -144,15 +143,16 @@ const weightedAverage: AggregationFn<typeof features, Person> = (
144
143
  return totalWeight === 0 ? 0 : weightedSum / totalWeight
145
144
  }
146
145
 
146
+ const customFeatures = tableFeatures({
147
+ columnGroupingFeature,
148
+ rowExpandingFeature,
149
+ groupedRowModel: createGroupedRowModel(),
150
+ expandedRowModel: createExpandedRowModel(),
151
+ aggregationFns: { ...aggregationFns, weightedAverage },
152
+ })
153
+
147
154
  const table = constructTable({
148
- features,
149
- rowModels: {
150
- groupedRowModel: createGroupedRowModel({
151
- ...aggregationFns,
152
- weightedAverage,
153
- }),
154
- expandedRowModel: createExpandedRowModel(),
155
- },
155
+ features: customFeatures,
156
156
  columns: columnHelper.columns([
157
157
  columnHelper.accessor('progress', {
158
158
  aggregationFn: 'weightedAverage',
@@ -177,10 +177,6 @@ columnHelper.accessor('firstName', {
177
177
  ```ts
178
178
  const table = constructTable({
179
179
  features,
180
- rowModels: {
181
- groupedRowModel: createGroupedRowModel(aggregationFns),
182
- expandedRowModel: createExpandedRowModel(),
183
- },
184
180
  columns,
185
181
  data,
186
182
  groupedColumnMode: 'reorder', // default — grouped columns lead
@@ -197,13 +193,12 @@ Wrong:
197
193
 
198
194
  ```ts
199
195
  // grouped rows show aggregates but can't be expanded
200
- const features = tableFeatures({ columnGroupingFeature })
201
- const table = useTable({
202
- features,
203
- rowModels: { groupedRowModel: createGroupedRowModel(aggregationFns) },
204
- columns,
205
- data,
196
+ const features = tableFeatures({
197
+ columnGroupingFeature,
198
+ groupedRowModel: createGroupedRowModel(),
199
+ aggregationFns,
206
200
  })
201
+ const table = useTable({ features, columns, data })
207
202
  // row.getToggleExpandedHandler() → TS error or undefined
208
203
  ```
209
204
 
@@ -221,16 +216,12 @@ import {
221
216
  const features = tableFeatures({
222
217
  columnGroupingFeature,
223
218
  rowExpandingFeature,
219
+ groupedRowModel: createGroupedRowModel(),
220
+ expandedRowModel: createExpandedRowModel(),
221
+ aggregationFns,
224
222
  })
225
223
 
226
- const table = useTable({
227
- features,
228
- rowModels: {
229
- groupedRowModel: createGroupedRowModel(aggregationFns),
230
- expandedRowModel: createExpandedRowModel(),
231
- },
232
- columns, data,
233
- })
224
+ const table = useTable({ features, columns, data })
234
225
 
235
226
  // In cell renderer:
236
227
  {cell.getIsGrouped() && (
@@ -250,8 +241,11 @@ Wrong:
250
241
 
251
242
  ```ts
252
243
  const table = useTable({
253
- features: tableFeatures({ columnGroupingFeature }),
254
- rowModels: { groupedRowModel: createGroupedRowModel(aggregationFns) },
244
+ features: tableFeatures({
245
+ columnGroupingFeature,
246
+ groupedRowModel: createGroupedRowModel(),
247
+ aggregationFns,
248
+ }),
255
249
  columns, data,
256
250
  // @ts-ignore - this property doesn't exist on v9 TableOptions
257
251
  aggregationFns: {
@@ -265,26 +259,26 @@ Correct:
265
259
  ```ts
266
260
  import { aggregationFns, createGroupedRowModel } from '@tanstack/react-table'
267
261
 
268
- const table = useTable({
269
- features: tableFeatures({ columnGroupingFeature, rowExpandingFeature }),
270
- rowModels: {
271
- groupedRowModel: createGroupedRowModel({
272
- ...aggregationFns,
273
- myCustomAggregation: (columnId, leafRows, childRows) => {
274
- return /* aggregated value */
275
- },
276
- }),
277
- expandedRowModel: createExpandedRowModel(),
262
+ const features = tableFeatures({
263
+ columnGroupingFeature,
264
+ rowExpandingFeature,
265
+ groupedRowModel: createGroupedRowModel(),
266
+ expandedRowModel: createExpandedRowModel(),
267
+ aggregationFns: {
268
+ ...aggregationFns,
269
+ myCustomAggregation: (columnId, leafRows, childRows) => {
270
+ return /* aggregated value */
271
+ },
278
272
  },
279
- columns,
280
- data,
281
273
  })
282
274
 
275
+ const table = useTable({ features, columns, data })
276
+
283
277
  // Then on a column:
284
278
  columnHelper.accessor('sales', { aggregationFn: 'myCustomAggregation' })
285
279
  ```
286
280
 
287
- In v9, the aggregation registry is the FIRST argument to `createGroupedRowModel`. There is no top-level `tableOptions.aggregationFns`.
281
+ In v9, the aggregation registry is the `aggregationFns` slot on `features`. There is no top-level `tableOptions.aggregationFns`.
288
282
 
289
283
  Source: packages/table-core/src/features/column-grouping/createGroupedRowModel.ts
290
284
 
@@ -345,7 +339,6 @@ Wrong:
345
339
  ```ts
346
340
  const table = useTable({
347
341
  features,
348
- rowModels: { groupedRowModel: createGroupedRowModel(aggregationFns) },
349
342
  columns,
350
343
  data,
351
344
  initialState: {
@@ -361,7 +354,6 @@ Correct:
361
354
  ```ts
362
355
  const table = useTable({
363
356
  features,
364
- rowModels: { groupedRowModel: createGroupedRowModel(aggregationFns) },
365
357
  columns,
366
358
  data,
367
359
  initialState: {
@@ -424,12 +416,15 @@ const grouped = useMemo(() => {
424
416
  Correct:
425
417
 
426
418
  ```ts
419
+ const features = tableFeatures({
420
+ columnGroupingFeature,
421
+ rowExpandingFeature,
422
+ groupedRowModel: createGroupedRowModel(),
423
+ expandedRowModel: createExpandedRowModel(),
424
+ aggregationFns,
425
+ })
427
426
  const table = useTable({
428
- features: tableFeatures({ columnGroupingFeature, rowExpandingFeature }),
429
- rowModels: {
430
- groupedRowModel: createGroupedRowModel(aggregationFns),
431
- expandedRowModel: createExpandedRowModel(),
432
- },
427
+ features,
433
428
  columns: columnHelper.columns([
434
429
  columnHelper.accessor('status', { enableGrouping: true }),
435
430
  columnHelper.accessor('age', { aggregationFn: 'mean' }),
@@ -4,11 +4,12 @@ description: >
4
4
  Mechanical breaking-change migration from TanStack Table v8 to v9 at the
5
5
  `@tanstack/table-core` level. Covers hook/entry rename
6
6
  (`useReactTable`/`createSolidTable`/… → `useTable`/`injectTable`/`createTable`/
7
- `constructTable`), the new required `features` + `rowModels` options,
7
+ `constructTable`), the new required `features` option (which now carries row
8
+ model factories and fn registries — `rowModels` option is removed),
8
9
  `createColumnHelper<TData>()` → `createColumnHelper<typeof features, TData>()`,
9
10
  row-model factory rename (`getCoreRowModel()` → automatic; `getSortedRowModel()`
10
- → `createSortedRowModel(sortFns)`; same for filtered/paginated/grouped/expanded/
11
- faceted), `table.getState()` → `table.store.state` / `table.atoms.<slice>.get()`,
11
+ → `createSortedRowModel()` as a slot on `tableFeatures({...})` with `sortFns` also
12
+ a slot; same for filtered/paginated/grouped/expanded/faceted), `table.getState()` → `table.store.state` / `table.atoms.<slice>.get()`,
12
13
  sorting renames (`sortingFn` → `sortFn`, etc.), `enablePinning` split, column
13
14
  sizing/resizing split, underscore-prefixed APIs becoming public, `RowData`
14
15
  type tightening, TFeatures-first generics, the `useLegacyTable` React escape
@@ -32,9 +33,9 @@ sources:
32
33
  v9 is a substantial reshape, not a tweak. The breaking changes group into:
33
34
 
34
35
  1. **Hook/entry rename** per adapter.
35
- 2. **`features` + `rowModels` are required** — features are tree-shaken.
36
+ 2. **`features` is required** — features are tree-shaken. Row model factories and fn registries (`sortFns`, `filterFns`, `aggregationFns`) now live as slots on the `features` object; the `rowModels` option is gone.
36
37
  3. **Column helper generic order** — `<TFeatures, TData>` not `<TData>`.
37
- 4. **Row-model factories** moved out of root options, into `rowModels`, and now take their `*Fns` argument.
38
+ 4. **Row-model factories** moved out of root options and into `tableFeatures({...})` as named slots; factory args for `*Fns` are replaced by dedicated fn-registry slots on `features`.
38
39
  5. **State surface renamed** — `table.getState()` → `table.store.state` / `table.atoms.<slice>.get()` / `table.state` (selector).
39
40
  6. **Sorting names**: `sortingFn` → `sortFn`, `sortingFns` → `sortFns`, `getSortingFn()` → `getSortFn()`, type `SortingFn` → `SortFn`.
40
41
  7. **`enablePinning` split** into `enableColumnPinning` + `enableRowPinning` (table-level); per-column `enablePinning` stays.
@@ -75,6 +76,12 @@ const features = tableFeatures({
75
76
  columnFilteringFeature,
76
77
  columnSizingFeature,
77
78
  columnResizingFeature, // explicit — formerly part of ColumnSizing
79
+ // Row model factories and fn registries are slots on features, not rowModels.
80
+ sortedRowModel: createSortedRowModel(),
81
+ filteredRowModel: createFilteredRowModel(),
82
+ paginatedRowModel: createPaginatedRowModel(),
83
+ sortFns,
84
+ filterFns,
78
85
  })
79
86
 
80
87
  const columnHelper = createColumnHelper<typeof features, Person>()
@@ -88,11 +95,6 @@ const columns: ColumnDef<typeof features, Person>[] = columnHelper.columns([
88
95
 
89
96
  const table = useTable({
90
97
  features,
91
- rowModels: {
92
- sortedRowModel: createSortedRowModel(sortFns),
93
- filteredRowModel: createFilteredRowModel(filterFns),
94
- paginatedRowModel: createPaginatedRowModel(),
95
- },
96
98
  columns,
97
99
  data,
98
100
  enableColumnPinning: true, // split from enablePinning
@@ -200,13 +202,12 @@ import {
200
202
  sortFns,
201
203
  } from '@tanstack/react-table'
202
204
 
203
- const features = tableFeatures({ rowSortingFeature })
204
- const table = useTable({
205
- features,
206
- rowModels: { sortedRowModel: createSortedRowModel(sortFns) },
207
- columns,
208
- data,
205
+ const features = tableFeatures({
206
+ rowSortingFeature,
207
+ sortedRowModel: createSortedRowModel(),
208
+ sortFns,
209
209
  })
210
+ const table = useTable({ features, columns, data })
210
211
  ```
211
212
 
212
213
  Every major release of TanStack Table has been a substantial upgrade. Agents trained on v7 or v8 will confidently emit shapes that no longer exist. This is the #2 AI failure (after reimplementing built-ins).
@@ -239,18 +240,15 @@ import {
239
240
  sortFns,
240
241
  } from '@tanstack/react-table'
241
242
 
242
- const features = tableFeatures({ rowSortingFeature })
243
- const table = useTable({
244
- features,
245
- rowModels: {
246
- sortedRowModel: createSortedRowModel(sortFns), // factory takes sortFns argument
247
- },
248
- columns,
249
- data,
243
+ const features = tableFeatures({
244
+ rowSortingFeature,
245
+ sortedRowModel: createSortedRowModel(),
246
+ sortFns,
250
247
  })
248
+ const table = useTable({ features, columns, data })
251
249
  ```
252
250
 
253
- In v9, row models live under `rowModels` and the factories REQUIRE their \*Fns argument for tree-shaking: `createFilteredRowModel(filterFns)`, `createSortedRowModel(sortFns)`, `createGroupedRowModel(aggregationFns)`. Core is automatic.
251
+ In v9, row model factories are slots on `features`: `filteredRowModel: createFilteredRowModel()`, `sortedRowModel: createSortedRowModel()`, `groupedRowModel: createGroupedRowModel()`. The fn registries move too: `filterFns`, `sortFns`, `aggregationFns` are named slots on `features`. Core is automatic.
254
252
 
255
253
  Source: PR #6234 (atoms refactor); packages/table-core/src/index.ts
256
254
 
@@ -307,11 +305,11 @@ Correct:
307
305
 
308
306
  ```ts
309
307
  columnHelper.accessor('age', { sortFn: 'alphanumeric' })
310
- createSortedRowModel(sortFns) // pass registry to the factory
308
+ // sortFns is a slot on features: tableFeatures({ rowSortingFeature, sortedRowModel: createSortedRowModel(), sortFns })
311
309
  column.getSortFn()
312
310
  ```
313
311
 
314
- v9 renamed every sorting API: `sortingFn` → `sortFn`, `sortingFns` → `sortFns`, type `SortingFn` → `SortFn`, `getSortingFn()` → `getSortFn()`. TypeScript surfaces these but agents try v8 names first.
312
+ v9 renamed every sorting API: `sortingFn` → `sortFn`, `sortingFns` → `sortFns` (now a features slot, not a factory arg), type `SortingFn` → `SortFn`, `getSortingFn()` → `getSortFn()`. TypeScript surfaces these but agents try v8 names first.
315
313
 
316
314
  Source: packages/table-core/src/features/row-sorting/rowSortingFeature.types.ts
317
315
 
@@ -475,13 +473,12 @@ import {
475
473
  createSortedRowModel,
476
474
  sortFns,
477
475
  } from '@tanstack/react-table'
478
- const features = tableFeatures({ rowSortingFeature })
479
- const table = useTable({
480
- features,
481
- rowModels: { sortedRowModel: createSortedRowModel(sortFns) },
482
- columns,
483
- data,
476
+ const features = tableFeatures({
477
+ rowSortingFeature,
478
+ sortedRowModel: createSortedRowModel(),
479
+ sortFns,
484
480
  })
481
+ const table = useTable({ features, columns, data })
485
482
  ```
486
483
 
487
484
  `useLegacyTable` is React-only, deprecated, bundles every feature, doesn't support `table.Subscribe`, and is removed in v10. It exists to unblock incremental migration — not as a long-term API.