@cutting/material-react-table 4.0.5 → 5.0.0-beta.1

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 (311) hide show
  1. package/dist/index.d.ts +1825 -1737
  2. package/dist/index.js +5332 -4317
  3. package/dist/index.js.map +1 -1
  4. package/locales/ar/index.mjs +97 -0
  5. package/locales/ar/package.json +3 -3
  6. package/locales/az/index.mjs +97 -0
  7. package/locales/az/package.json +3 -3
  8. package/locales/bg/index.mjs +97 -0
  9. package/locales/bg/package.json +3 -3
  10. package/locales/cs/index.mjs +97 -0
  11. package/locales/cs/package.json +3 -3
  12. package/locales/da/index.mjs +97 -0
  13. package/locales/da/package.json +3 -3
  14. package/locales/de/index.mjs +97 -0
  15. package/locales/de/package.json +3 -3
  16. package/locales/el/index.mjs +97 -0
  17. package/locales/el/package.json +3 -3
  18. package/locales/en/index.mjs +97 -0
  19. package/locales/en/package.json +3 -3
  20. package/locales/es/index.mjs +97 -0
  21. package/locales/es/package.json +3 -3
  22. package/locales/et/index.mjs +97 -0
  23. package/locales/et/package.json +3 -3
  24. package/locales/fa/index.mjs +97 -0
  25. package/locales/fa/package.json +3 -3
  26. package/locales/fi/index.mjs +97 -0
  27. package/locales/fi/package.json +3 -3
  28. package/locales/fr/index.mjs +97 -0
  29. package/locales/fr/package.json +3 -3
  30. package/locales/he/index.mjs +97 -0
  31. package/locales/he/package.json +3 -3
  32. package/locales/hr/index.mjs +97 -0
  33. package/locales/hr/package.json +3 -3
  34. package/locales/hu/index.mjs +97 -0
  35. package/locales/hu/package.json +3 -3
  36. package/locales/hy/index.mjs +97 -0
  37. package/locales/hy/package.json +3 -3
  38. package/locales/id/index.mjs +97 -0
  39. package/locales/id/package.json +3 -3
  40. package/locales/it/index.mjs +97 -0
  41. package/locales/it/package.json +3 -3
  42. package/locales/ja/index.mjs +97 -0
  43. package/locales/ja/package.json +3 -3
  44. package/locales/ko/index.mjs +97 -0
  45. package/locales/ko/package.json +3 -3
  46. package/locales/nl/index.mjs +97 -0
  47. package/locales/nl/package.json +3 -3
  48. package/locales/no/index.mjs +97 -0
  49. package/locales/no/package.json +3 -3
  50. package/locales/np/index.mjs +97 -0
  51. package/locales/np/package.json +3 -3
  52. package/locales/pl/index.mjs +97 -0
  53. package/locales/pl/package.json +3 -3
  54. package/locales/pt/index.mjs +97 -0
  55. package/locales/pt/package.json +3 -3
  56. package/locales/pt-BR/index.mjs +97 -0
  57. package/locales/pt-BR/package.json +3 -3
  58. package/locales/ro/index.mjs +97 -0
  59. package/locales/ro/package.json +3 -3
  60. package/locales/ru/index.mjs +97 -0
  61. package/locales/ru/package.json +3 -3
  62. package/locales/sk/index.mjs +97 -0
  63. package/locales/sk/package.json +3 -3
  64. package/locales/sr-Cyrl-RS/index.mjs +97 -0
  65. package/locales/sr-Cyrl-RS/package.json +3 -3
  66. package/locales/sr-Latn-RS/index.mjs +97 -0
  67. package/locales/sr-Latn-RS/package.json +3 -3
  68. package/locales/sv/index.mjs +97 -0
  69. package/locales/sv/package.json +3 -3
  70. package/locales/tr/index.mjs +97 -0
  71. package/locales/tr/package.json +3 -3
  72. package/locales/uk/index.mjs +97 -0
  73. package/locales/uk/package.json +3 -3
  74. package/locales/vi/index.mjs +97 -0
  75. package/locales/vi/package.json +3 -3
  76. package/locales/zh-Hans/index.mjs +97 -0
  77. package/locales/zh-Hans/package.json +3 -3
  78. package/locales/zh-Hant/index.mjs +97 -0
  79. package/locales/zh-Hant/package.json +3 -3
  80. package/package.json +57 -53
  81. package/src/components/body/MRT_TableBody.tsx +1 -2
  82. package/src/components/body/MRT_TableBodyCell.tsx +4 -5
  83. package/src/components/body/MRT_TableBodyCellValue.tsx +1 -2
  84. package/src/components/body/MRT_TableBodyRow.tsx +1 -2
  85. package/src/components/body/MRT_TableBodyRowGrabHandle.test.tsx +42 -0
  86. package/src/components/body/MRT_TableBodyRowPinButton.tsx +1 -2
  87. package/src/components/body/MRT_TableDetailPanel.test.tsx +40 -0
  88. package/src/components/body/MRT_TableDetailPanel.tsx +1 -2
  89. package/src/components/buttons/MRT_ColumnPinningButtons.test.tsx +69 -0
  90. package/src/components/buttons/MRT_ColumnPinningButtons.tsx +3 -3
  91. package/src/components/buttons/MRT_EditActionButtons.test.tsx +50 -0
  92. package/src/components/buttons/MRT_EditActionButtons.tsx +1 -3
  93. package/src/components/buttons/MRT_ExpandAllButton.tsx +1 -2
  94. package/src/components/buttons/MRT_ExpandButton.tsx +1 -2
  95. package/src/components/buttons/MRT_ToggleDensePaddingButton.test.tsx +38 -0
  96. package/src/components/buttons/MRT_ToggleDensePaddingButton.tsx +1 -2
  97. package/src/components/buttons/MRT_ToggleFiltersButton.test.tsx +38 -0
  98. package/src/components/buttons/MRT_ToggleFiltersButton.tsx +1 -2
  99. package/src/components/buttons/MRT_ToggleFullScreenButton.test.tsx +36 -0
  100. package/src/components/buttons/MRT_ToggleFullScreenButton.tsx +1 -2
  101. package/src/components/buttons/MRT_ToggleGlobalFilterButton.tsx +1 -2
  102. package/src/components/buttons/MRT_ToggleRowActionMenuButton.tsx +2 -3
  103. package/src/components/footer/MRT_TableFooter.tsx +1 -2
  104. package/src/components/footer/MRT_TableFooterCell.tsx +1 -2
  105. package/src/components/head/MRT_TableHead.tsx +1 -2
  106. package/src/components/head/MRT_TableHeadCell.tsx +9 -9
  107. package/src/components/head/MRT_TableHeadCellFilterContainer.tsx +1 -2
  108. package/src/components/head/MRT_TableHeadCellGrabHandle.test.tsx +61 -0
  109. package/src/components/head/MRT_TableHeadCellGrabHandle.tsx +4 -5
  110. package/src/components/head/MRT_TableHeadCellResizeHandle.test.tsx +45 -0
  111. package/src/components/head/MRT_TableHeadCellResizeHandle.tsx +4 -5
  112. package/src/components/head/MRT_TableHeadCellSortLabel.tsx +1 -2
  113. package/src/components/inputs/MRT_EditCellTextField.test.tsx +36 -0
  114. package/src/components/inputs/MRT_EditCellTextField.tsx +1 -3
  115. package/src/components/inputs/MRT_FilterCheckbox.tsx +1 -2
  116. package/src/components/inputs/MRT_FilterRangeSlider.tsx +2 -1
  117. package/src/components/inputs/MRT_FilterTextField.test.tsx +75 -0
  118. package/src/components/inputs/MRT_GlobalFilterTextField.tsx +1 -2
  119. package/src/components/inputs/MRT_SelectCheckbox.test.tsx +69 -0
  120. package/src/components/inputs/MRT_SelectCheckbox.tsx +1 -2
  121. package/src/components/menus/MRT_CellActionMenu.tsx +1 -2
  122. package/src/components/menus/MRT_ColumnActionMenu.tsx +12 -13
  123. package/src/components/menus/MRT_FilterOptionMenu.tsx +1 -2
  124. package/src/components/menus/MRT_RowActionMenu.tsx +1 -2
  125. package/src/components/menus/MRT_ShowHideColumnsMenu.tsx +1 -2
  126. package/src/components/menus/MRT_ShowHideColumnsMenuItems.tsx +4 -5
  127. package/src/components/modals/MRT_EditRowModal.test.tsx +54 -0
  128. package/src/components/modals/MRT_EditRowModal.tsx +1 -2
  129. package/src/components/table/MRT_Table.tsx +4 -5
  130. package/src/components/table/MRT_TableContainer.tsx +1 -2
  131. package/src/components/table/MRT_TablePaper.tsx +1 -2
  132. package/src/components/toolbar/MRT_BottomToolbar.tsx +2 -3
  133. package/src/components/toolbar/MRT_LinearProgressBar.tsx +1 -2
  134. package/src/components/toolbar/MRT_TablePagination.tsx +1 -2
  135. package/src/components/toolbar/MRT_ToolbarAlertBanner.tsx +3 -4
  136. package/src/components/toolbar/MRT_ToolbarDropZone.test.tsx +42 -0
  137. package/src/components/toolbar/MRT_ToolbarDropZone.tsx +1 -2
  138. package/src/components/toolbar/MRT_TopToolbar.tsx +1 -2
  139. package/src/fns/aggregationFns.test.tsx +57 -0
  140. package/src/fns/filterFns.test.tsx +156 -0
  141. package/src/fns/filterFns.ts +36 -22
  142. package/src/fns/sortingFns.ts +14 -5
  143. package/src/fns/tableFeatures.test.tsx +106 -0
  144. package/src/fns/tableFeatures.ts +103 -0
  145. package/src/hooks/display-columns/getMRT_RowExpandColumnDef.tsx +2 -2
  146. package/src/hooks/useMRT_ColumnVirtualizer.ts +6 -5
  147. package/src/hooks/useMRT_Effects.ts +3 -4
  148. package/src/hooks/useMRT_RowVirtualizer.ts +1 -2
  149. package/src/hooks/useMRT_Rows.ts +1 -2
  150. package/src/hooks/useMRT_TableInstance.ts +82 -63
  151. package/src/hooks/useMRT_TableOptions.ts +5 -37
  152. package/src/icons.ts +1 -1
  153. package/src/types.ts +162 -134
  154. package/src/utils/column.utils.ts +31 -24
  155. package/src/utils/row.utils.ts +7 -10
  156. package/src/utils/style.utils.ts +9 -10
  157. package/src/utils/tanstack.helpers.ts +2 -2
  158. package/dist/index.esm.js +0 -4384
  159. package/dist/index.esm.js.map +0 -1
  160. package/locales/ar/index.esm.d.ts +0 -3
  161. package/locales/ar/index.esm.js +0 -96
  162. package/locales/ar/index.js +0 -98
  163. package/locales/az/index.esm.d.ts +0 -3
  164. package/locales/az/index.esm.js +0 -96
  165. package/locales/az/index.js +0 -98
  166. package/locales/bg/index.esm.d.ts +0 -3
  167. package/locales/bg/index.esm.js +0 -96
  168. package/locales/bg/index.js +0 -98
  169. package/locales/cs/index.esm.d.ts +0 -3
  170. package/locales/cs/index.esm.js +0 -96
  171. package/locales/cs/index.js +0 -98
  172. package/locales/da/index.esm.d.ts +0 -3
  173. package/locales/da/index.esm.js +0 -96
  174. package/locales/da/index.js +0 -98
  175. package/locales/de/index.esm.d.ts +0 -3
  176. package/locales/de/index.esm.js +0 -96
  177. package/locales/de/index.js +0 -98
  178. package/locales/el/index.esm.d.ts +0 -3
  179. package/locales/el/index.esm.js +0 -96
  180. package/locales/el/index.js +0 -98
  181. package/locales/en/index.esm.d.ts +0 -3
  182. package/locales/en/index.esm.js +0 -96
  183. package/locales/en/index.js +0 -98
  184. package/locales/es/index.esm.d.ts +0 -3
  185. package/locales/es/index.esm.js +0 -96
  186. package/locales/es/index.js +0 -98
  187. package/locales/et/index.esm.d.ts +0 -3
  188. package/locales/et/index.esm.js +0 -96
  189. package/locales/et/index.js +0 -98
  190. package/locales/fa/index.esm.d.ts +0 -3
  191. package/locales/fa/index.esm.js +0 -96
  192. package/locales/fa/index.js +0 -98
  193. package/locales/fi/index.esm.d.ts +0 -3
  194. package/locales/fi/index.esm.js +0 -96
  195. package/locales/fi/index.js +0 -98
  196. package/locales/fr/index.esm.d.ts +0 -3
  197. package/locales/fr/index.esm.js +0 -96
  198. package/locales/fr/index.js +0 -98
  199. package/locales/he/index.esm.d.ts +0 -3
  200. package/locales/he/index.esm.js +0 -96
  201. package/locales/he/index.js +0 -98
  202. package/locales/hr/index.esm.d.ts +0 -3
  203. package/locales/hr/index.esm.js +0 -96
  204. package/locales/hr/index.js +0 -98
  205. package/locales/hu/index.esm.d.ts +0 -3
  206. package/locales/hu/index.esm.js +0 -96
  207. package/locales/hu/index.js +0 -98
  208. package/locales/hy/index.esm.d.ts +0 -3
  209. package/locales/hy/index.esm.js +0 -96
  210. package/locales/hy/index.js +0 -98
  211. package/locales/id/index.esm.d.ts +0 -3
  212. package/locales/id/index.esm.js +0 -96
  213. package/locales/id/index.js +0 -98
  214. package/locales/it/index.esm.d.ts +0 -3
  215. package/locales/it/index.esm.js +0 -96
  216. package/locales/it/index.js +0 -98
  217. package/locales/ja/index.esm.d.ts +0 -3
  218. package/locales/ja/index.esm.js +0 -96
  219. package/locales/ja/index.js +0 -98
  220. package/locales/ko/index.esm.d.ts +0 -3
  221. package/locales/ko/index.esm.js +0 -96
  222. package/locales/ko/index.js +0 -98
  223. package/locales/nl/index.esm.d.ts +0 -3
  224. package/locales/nl/index.esm.js +0 -96
  225. package/locales/nl/index.js +0 -98
  226. package/locales/no/index.esm.d.ts +0 -3
  227. package/locales/no/index.esm.js +0 -96
  228. package/locales/no/index.js +0 -98
  229. package/locales/np/index.esm.d.ts +0 -3
  230. package/locales/np/index.esm.js +0 -96
  231. package/locales/np/index.js +0 -98
  232. package/locales/pl/index.esm.d.ts +0 -3
  233. package/locales/pl/index.esm.js +0 -96
  234. package/locales/pl/index.js +0 -98
  235. package/locales/pt/index.esm.d.ts +0 -3
  236. package/locales/pt/index.esm.js +0 -96
  237. package/locales/pt/index.js +0 -98
  238. package/locales/pt-BR/index.esm.d.ts +0 -3
  239. package/locales/pt-BR/index.esm.js +0 -96
  240. package/locales/pt-BR/index.js +0 -98
  241. package/locales/ro/index.esm.d.ts +0 -3
  242. package/locales/ro/index.esm.js +0 -96
  243. package/locales/ro/index.js +0 -98
  244. package/locales/ru/index.esm.d.ts +0 -3
  245. package/locales/ru/index.esm.js +0 -96
  246. package/locales/ru/index.js +0 -98
  247. package/locales/sk/index.esm.d.ts +0 -3
  248. package/locales/sk/index.esm.js +0 -96
  249. package/locales/sk/index.js +0 -98
  250. package/locales/sr-Cyrl-RS/index.esm.d.ts +0 -3
  251. package/locales/sr-Cyrl-RS/index.esm.js +0 -96
  252. package/locales/sr-Cyrl-RS/index.js +0 -98
  253. package/locales/sr-Latn-RS/index.esm.d.ts +0 -3
  254. package/locales/sr-Latn-RS/index.esm.js +0 -96
  255. package/locales/sr-Latn-RS/index.js +0 -98
  256. package/locales/sv/index.esm.d.ts +0 -3
  257. package/locales/sv/index.esm.js +0 -96
  258. package/locales/sv/index.js +0 -98
  259. package/locales/tr/index.esm.d.ts +0 -3
  260. package/locales/tr/index.esm.js +0 -96
  261. package/locales/tr/index.js +0 -98
  262. package/locales/uk/index.esm.d.ts +0 -3
  263. package/locales/uk/index.esm.js +0 -96
  264. package/locales/uk/index.js +0 -98
  265. package/locales/vi/index.esm.d.ts +0 -3
  266. package/locales/vi/index.esm.js +0 -96
  267. package/locales/vi/index.js +0 -98
  268. package/locales/zh-Hans/index.esm.d.ts +0 -3
  269. package/locales/zh-Hans/index.esm.js +0 -96
  270. package/locales/zh-Hans/index.js +0 -98
  271. package/locales/zh-Hant/index.esm.d.ts +0 -3
  272. package/locales/zh-Hant/index.esm.js +0 -96
  273. package/locales/zh-Hant/index.js +0 -98
  274. /package/locales/ar/{index.d.ts → index.d.mts} +0 -0
  275. /package/locales/az/{index.d.ts → index.d.mts} +0 -0
  276. /package/locales/bg/{index.d.ts → index.d.mts} +0 -0
  277. /package/locales/cs/{index.d.ts → index.d.mts} +0 -0
  278. /package/locales/da/{index.d.ts → index.d.mts} +0 -0
  279. /package/locales/de/{index.d.ts → index.d.mts} +0 -0
  280. /package/locales/el/{index.d.ts → index.d.mts} +0 -0
  281. /package/locales/en/{index.d.ts → index.d.mts} +0 -0
  282. /package/locales/es/{index.d.ts → index.d.mts} +0 -0
  283. /package/locales/et/{index.d.ts → index.d.mts} +0 -0
  284. /package/locales/fa/{index.d.ts → index.d.mts} +0 -0
  285. /package/locales/fi/{index.d.ts → index.d.mts} +0 -0
  286. /package/locales/fr/{index.d.ts → index.d.mts} +0 -0
  287. /package/locales/he/{index.d.ts → index.d.mts} +0 -0
  288. /package/locales/hr/{index.d.ts → index.d.mts} +0 -0
  289. /package/locales/hu/{index.d.ts → index.d.mts} +0 -0
  290. /package/locales/hy/{index.d.ts → index.d.mts} +0 -0
  291. /package/locales/id/{index.d.ts → index.d.mts} +0 -0
  292. /package/locales/it/{index.d.ts → index.d.mts} +0 -0
  293. /package/locales/ja/{index.d.ts → index.d.mts} +0 -0
  294. /package/locales/ko/{index.d.ts → index.d.mts} +0 -0
  295. /package/locales/nl/{index.d.ts → index.d.mts} +0 -0
  296. /package/locales/no/{index.d.ts → index.d.mts} +0 -0
  297. /package/locales/np/{index.d.ts → index.d.mts} +0 -0
  298. /package/locales/pl/{index.d.ts → index.d.mts} +0 -0
  299. /package/locales/pt/{index.d.ts → index.d.mts} +0 -0
  300. /package/locales/pt-BR/{index.d.ts → index.d.mts} +0 -0
  301. /package/locales/ro/{index.d.ts → index.d.mts} +0 -0
  302. /package/locales/ru/{index.d.ts → index.d.mts} +0 -0
  303. /package/locales/sk/{index.d.ts → index.d.mts} +0 -0
  304. /package/locales/sr-Cyrl-RS/{index.d.ts → index.d.mts} +0 -0
  305. /package/locales/sr-Latn-RS/{index.d.ts → index.d.mts} +0 -0
  306. /package/locales/sv/{index.d.ts → index.d.mts} +0 -0
  307. /package/locales/tr/{index.d.ts → index.d.mts} +0 -0
  308. /package/locales/uk/{index.d.ts → index.d.mts} +0 -0
  309. /package/locales/vi/{index.d.ts → index.d.mts} +0 -0
  310. /package/locales/zh-Hans/{index.d.ts → index.d.mts} +0 -0
  311. /package/locales/zh-Hant/{index.d.ts → index.d.mts} +0 -0
@@ -0,0 +1,103 @@
1
+ import {
2
+ type AggregationFnDef,
3
+ cellSelectionFeature,
4
+ cellSpanningFeature,
5
+ columnFacetingFeature,
6
+ columnFilteringFeature,
7
+ columnGroupingFeature,
8
+ columnOrderingFeature,
9
+ columnPinningFeature,
10
+ columnResizingFeature,
11
+ columnSizingFeature,
12
+ columnVisibilityFeature,
13
+ createExpandedRowModel,
14
+ createFacetedMinMaxValues,
15
+ createFacetedRowModel,
16
+ createFacetedUniqueValues,
17
+ createFilteredRowModel,
18
+ createGroupedRowModel,
19
+ createPaginatedRowModel,
20
+ createSortedRowModel,
21
+ type FilterFn,
22
+ globalFilteringFeature,
23
+ rowAggregationFeature,
24
+ rowExpandingFeature,
25
+ rowPaginationFeature,
26
+ rowPinningFeature,
27
+ rowSelectionFeature,
28
+ rowSortingFeature,
29
+ type SortFn,
30
+ type StockFeatures,
31
+ type TableFeature,
32
+ tableFeatures,
33
+ } from '@tanstack/react-table';
34
+
35
+ import { MRT_AggregationFns } from './aggregationFns';
36
+ import { MRT_FilterFns } from './filterFns';
37
+ import { MRT_SortingFns } from './sortingFns';
38
+
39
+ const mrtFeature: TableFeature = {
40
+ getInitialState: (state) => ({
41
+ actionCell: null,
42
+ columnFilterFns: {},
43
+ creatingRow: null,
44
+ density: 'comfortable',
45
+ draggingColumn: null,
46
+ draggingRow: null,
47
+ editingCell: null,
48
+ editingRow: null,
49
+ globalFilterFn: 'fuzzy',
50
+ hoveredColumn: null,
51
+ hoveredRow: null,
52
+ isFullScreen: false,
53
+ isLoading: false,
54
+ isSaving: false,
55
+ showAlertBanner: false,
56
+ showColumnFilters: false,
57
+ showGlobalFilter: false,
58
+ showLoadingOverlay: false,
59
+ showProgressBars: false,
60
+ showSkeletons: false,
61
+ showToolbarDropZone: false,
62
+ ...state,
63
+ }),
64
+ };
65
+
66
+ export const MRT_DefaultTableFeatures = tableFeatures({
67
+ aggregationFns: MRT_AggregationFns,
68
+ cellSelectionFeature,
69
+ cellSpanningFeature,
70
+ columnFacetingFeature,
71
+ columnFilteringFeature,
72
+ columnGroupingFeature,
73
+ columnOrderingFeature,
74
+ columnPinningFeature,
75
+ columnResizingFeature,
76
+ columnSizingFeature,
77
+ columnVisibilityFeature,
78
+ expandedRowModel: createExpandedRowModel(),
79
+ facetedMinMaxValues: createFacetedMinMaxValues(),
80
+ facetedRowModel: createFacetedRowModel(),
81
+ facetedUniqueValues: createFacetedUniqueValues(),
82
+ filteredRowModel: createFilteredRowModel(),
83
+ filterFns: MRT_FilterFns,
84
+ globalFilteringFeature,
85
+ groupedRowModel: createGroupedRowModel(),
86
+ mrtFeature,
87
+ paginatedRowModel: createPaginatedRowModel(),
88
+ rowAggregationFeature,
89
+ rowExpandingFeature,
90
+ rowPaginationFeature,
91
+ rowPinningFeature,
92
+ rowSelectionFeature,
93
+ rowSortingFeature,
94
+ sortedRowModel: createSortedRowModel(),
95
+ sortFns: MRT_SortingFns,
96
+ });
97
+
98
+ export interface MRT_TableFeatures extends StockFeatures {
99
+ aggregationFns: Record<string, AggregationFnDef<any, any, any, any>>;
100
+ filterFns: Record<string, FilterFn<any, any>>;
101
+ mrtFeature: TableFeature;
102
+ sortFns: Record<string, SortFn<any, any>>;
103
+ }
@@ -46,7 +46,7 @@ export const getMRT_RowExpandColumnDef = <TData extends MRT_RowData>(
46
46
  <MRT_ExpandButton {...expandButtonProps} />
47
47
  <Tooltip
48
48
  {...getCommonTooltipProps('right')}
49
- title={table.getColumn(row.groupingColumnId).columnDef.header}
49
+ title={table.getColumn(row.groupingColumnId)?.columnDef.header}
50
50
  >
51
51
  <span>{row.groupingValue as ReactNode}</span>
52
52
  </Tooltip>
@@ -71,7 +71,7 @@ export const getMRT_RowExpandColumnDef = <TData extends MRT_RowData>(
71
71
  grouping
72
72
  ?.map(
73
73
  (groupedColumnId) =>
74
- table.getColumn(groupedColumnId).columnDef.header,
74
+ table.getColumn(groupedColumnId)?.columnDef.header,
75
75
  )
76
76
  ?.join(', ')}
77
77
  </>
@@ -17,7 +17,6 @@ export const useMRT_ColumnVirtualizer = <
17
17
  table: MRT_TableInstance<TData>,
18
18
  ): MRT_ColumnVirtualizer | undefined => {
19
19
  const {
20
- getState,
21
20
  options: {
22
21
  columnVirtualizerInstanceRef,
23
22
  columnVirtualizerOptions,
@@ -26,7 +25,7 @@ export const useMRT_ColumnVirtualizer = <
26
25
  },
27
26
  refs: { tableContainerRef },
28
27
  } = table;
29
- const { columnPinning, columnVisibility, draggingColumn } = getState();
28
+ const { columnPinning, columnVisibility, draggingColumn } = table.state;
30
29
 
31
30
  if (!enableColumnVirtualization) return undefined;
32
31
 
@@ -43,9 +42,11 @@ export const useMRT_ColumnVirtualizer = <
43
42
  () =>
44
43
  enableColumnPinning
45
44
  ? [
46
- table.getLeftVisibleLeafColumns().map((c) => c.getPinnedIndex()),
47
- table
48
- .getRightVisibleLeafColumns()
45
+ visibleColumns
46
+ .filter((c) => c.getIsPinned() === 'start')
47
+ .map((c) => c.getPinnedIndex()),
48
+ visibleColumns
49
+ .filter((c) => c.getIsPinned() === 'end')
49
50
  .map(
50
51
  (column) => visibleColumns.length - column.getPinnedIndex() - 1,
51
52
  )
@@ -13,8 +13,7 @@ export const useMRT_Effects = <TData extends MRT_RowData>(
13
13
  ) => {
14
14
  const {
15
15
  getIsSomeRowsPinned,
16
- getPrePaginationRowModel,
17
- getState,
16
+ getPrePaginatedRowModel,
18
17
  options: { enablePagination, enableRowPinning, rowCount },
19
18
  } = table;
20
19
  const {
@@ -26,10 +25,10 @@ export const useMRT_Effects = <TData extends MRT_RowData>(
26
25
  pagination,
27
26
  showSkeletons,
28
27
  sorting,
29
- } = getState();
28
+ } = table.state;
30
29
 
31
30
  const totalColumnCount = table.options.columns.length;
32
- const totalRowCount = rowCount ?? getPrePaginationRowModel().rows.length;
31
+ const totalRowCount = rowCount ?? getPrePaginatedRowModel().rows.length;
33
32
 
34
33
  const rerender = useReducer(() => ({}), {})[1];
35
34
  const initialBodyHeight = useRef<string>(null);
@@ -20,7 +20,6 @@ export const useMRT_RowVirtualizer = <
20
20
  ): MRT_RowVirtualizer<TScrollElement, TItemElement> | undefined => {
21
21
  const {
22
22
  getRowModel,
23
- getState,
24
23
  options: {
25
24
  enableRowVirtualization,
26
25
  renderDetailPanel,
@@ -29,7 +28,7 @@ export const useMRT_RowVirtualizer = <
29
28
  },
30
29
  refs: { tableContainerRef },
31
30
  } = table;
32
- const { density, draggingRow, expanded } = getState();
31
+ const { density, draggingRow, expanded } = table.state;
33
32
 
34
33
  if (!enableRowVirtualization) return undefined;
35
34
 
@@ -12,7 +12,6 @@ export const useMRT_Rows = <TData extends MRT_RowData>(
12
12
  ): MRT_Row<TData>[] => {
13
13
  const {
14
14
  getRowModel,
15
- getState,
16
15
  options: { data, enableGlobalFilterRankedResults, positionCreatingRow },
17
16
  } = table;
18
17
  const {
@@ -22,7 +21,7 @@ export const useMRT_Rows = <TData extends MRT_RowData>(
22
21
  pagination,
23
22
  rowPinning,
24
23
  sorting,
25
- } = getState();
24
+ } = table.state;
26
25
 
27
26
  const rows = useMemo(
28
27
  () => getMRT_Rows(table),
@@ -1,6 +1,10 @@
1
- import { useReactTable } from '@tanstack/react-table';
1
+ import { tableFeatures, useTable } from '@tanstack/react-table';
2
2
  import { useMemo, useRef, useState } from 'react';
3
3
 
4
+ import {
5
+ MRT_DefaultTableFeatures,
6
+ type MRT_TableFeatures,
7
+ } from '../fns/tableFeatures';
4
8
  import {
5
9
  type MRT_Cell,
6
10
  type MRT_Column,
@@ -110,9 +114,9 @@ export const useMRT_TableInstance = <TData extends MRT_RowData>(
110
114
  const [columnOrder, onColumnOrderChange] = useState<MRT_ColumnOrderState>(
111
115
  initialState.columnOrder ?? [],
112
116
  );
113
- const [columnSizingInfo, onColumnSizingInfoChange] =
117
+ const [columnResizing, onColumnResizingChange] =
114
118
  useState<MRT_ColumnSizingInfoState>(
115
- initialState.columnSizingInfo ?? ({} as MRT_ColumnSizingInfoState),
119
+ initialState.columnResizing ?? ({} as MRT_ColumnSizingInfoState),
116
120
  );
117
121
  const [density, setDensity] = useState<MRT_DensityState>(
118
122
  initialState?.density ?? 'comfortable',
@@ -163,7 +167,7 @@ export const useMRT_TableInstance = <TData extends MRT_RowData>(
163
167
  actionCell,
164
168
  columnFilterFns,
165
169
  columnOrder,
166
- columnSizingInfo,
170
+ columnResizing,
167
171
  creatingRow,
168
172
  density,
169
173
  draggingColumn,
@@ -188,9 +192,9 @@ export const useMRT_TableInstance = <TData extends MRT_RowData>(
188
192
  definedTableOptions as MRT_StatefulTableOptions<TData>;
189
193
 
190
194
  //don't recompute columnDefs while resizing column or dragging column/row
191
- const columnDefsRef = useRef<MRT_ColumnDef<TData>[]>([]);
195
+ const columnDefsRef = useRef<ReadonlyArray<MRT_ColumnDef<TData>>>([]);
192
196
  statefulTableOptions.columns =
193
- statefulTableOptions.state.columnSizingInfo.isResizingColumn ||
197
+ statefulTableOptions.state.columnResizing.isResizingColumn ||
194
198
  statefulTableOptions.state.draggingColumn ||
195
199
  statefulTableOptions.state.draggingRow
196
200
  ? columnDefsRef.current
@@ -248,69 +252,84 @@ export const useMRT_TableInstance = <TData extends MRT_RowData>(
248
252
  ],
249
253
  );
250
254
 
251
- //@ts-expect-error
252
- const table = useReactTable({
255
+ const [features] = useState<MRT_TableFeatures>(() =>
256
+ tableFeatures({
257
+ ...MRT_DefaultTableFeatures,
258
+ aggregationFns: {
259
+ ...MRT_DefaultTableFeatures.aggregationFns,
260
+ ...statefulTableOptions.aggregationFns,
261
+ },
262
+ filterFns: {
263
+ ...MRT_DefaultTableFeatures.filterFns,
264
+ ...statefulTableOptions.filterFns,
265
+ },
266
+ sortFns: {
267
+ ...MRT_DefaultTableFeatures.sortFns,
268
+ ...statefulTableOptions.sortFns,
269
+ },
270
+ }),
271
+ );
272
+
273
+ const tableOptions = {
253
274
  onColumnOrderChange,
254
- onColumnSizingInfoChange,
275
+ onColumnResizingChange,
255
276
  onGroupingChange,
256
277
  onPaginationChange,
257
278
  ...statefulTableOptions,
258
- globalFilterFn: statefulTableOptions.filterFns?.[globalFilterFn ?? 'fuzzy'],
259
- }) as MRT_TableInstance<TData>;
260
-
261
- table.refs = {
262
- actionCellRef,
263
- bottomToolbarRef,
264
- editInputRefs,
265
- filterInputRefs,
266
- lastSelectedRowId,
267
- searchInputRef,
268
- tableContainerRef,
269
- tableFooterRef,
270
- tableHeadCellRefs,
271
- tableHeadRef,
272
- tablePaperRef,
273
- topToolbarRef,
279
+ features,
280
+ globalFilterFn: globalFilterFn ?? 'fuzzy',
274
281
  };
275
282
 
276
- table.setActionCell =
277
- statefulTableOptions.onActionCellChange ?? setActionCell;
278
- table.setCreatingRow = (row: MRT_Updater<MRT_Row<TData> | null | true>) => {
279
- let _row = row;
280
- if (row === true) {
281
- _row = createRow(table);
282
- }
283
- statefulTableOptions?.onCreatingRowChange?.(
284
- _row as MRT_Row<TData> | null,
285
- ) ?? _setCreatingRow(_row as MRT_Row<TData> | null);
286
- };
287
- table.setColumnFilterFns =
288
- statefulTableOptions.onColumnFilterFnsChange ?? setColumnFilterFns;
289
- table.setDensity = statefulTableOptions.onDensityChange ?? setDensity;
290
- table.setDraggingColumn =
291
- statefulTableOptions.onDraggingColumnChange ?? setDraggingColumn;
292
- table.setDraggingRow =
293
- statefulTableOptions.onDraggingRowChange ?? setDraggingRow;
294
- table.setEditingCell =
295
- statefulTableOptions.onEditingCellChange ?? setEditingCell;
296
- table.setEditingRow =
297
- statefulTableOptions.onEditingRowChange ?? setEditingRow;
298
- table.setGlobalFilterFn =
299
- statefulTableOptions.onGlobalFilterFnChange ?? setGlobalFilterFn;
300
- table.setHoveredColumn =
301
- statefulTableOptions.onHoveredColumnChange ?? setHoveredColumn;
302
- table.setHoveredRow =
303
- statefulTableOptions.onHoveredRowChange ?? setHoveredRow;
304
- table.setIsFullScreen =
305
- statefulTableOptions.onIsFullScreenChange ?? setIsFullScreen;
306
- table.setShowAlertBanner =
307
- statefulTableOptions.onShowAlertBannerChange ?? setShowAlertBanner;
308
- table.setShowColumnFilters =
309
- statefulTableOptions.onShowColumnFiltersChange ?? setShowColumnFilters;
310
- table.setShowGlobalFilter =
311
- statefulTableOptions.onShowGlobalFilterChange ?? setShowGlobalFilter;
312
- table.setShowToolbarDropZone =
313
- statefulTableOptions.onShowToolbarDropZoneChange ?? setShowToolbarDropZone;
283
+ const reactTable = useTable(tableOptions);
284
+
285
+ const table = Object.assign(reactTable, {
286
+ getLeftLeafColumns: () => reactTable.getStartLeafColumns(),
287
+ getPaginationRowModel: () => reactTable.getPaginatedRowModel(),
288
+ getRightLeafColumns: () => reactTable.getEndLeafColumns(),
289
+ refs: {
290
+ actionCellRef,
291
+ bottomToolbarRef,
292
+ editInputRefs,
293
+ filterInputRefs,
294
+ lastSelectedRowId,
295
+ searchInputRef,
296
+ tableContainerRef,
297
+ tableFooterRef,
298
+ tableHeadCellRefs,
299
+ tableHeadRef,
300
+ tablePaperRef,
301
+ topToolbarRef,
302
+ },
303
+ setActionCell: statefulTableOptions.onActionCellChange ?? setActionCell,
304
+ setColumnFilterFns:
305
+ statefulTableOptions.onColumnFilterFnsChange ?? setColumnFilterFns,
306
+ setCreatingRow: (row: MRT_Updater<MRT_Row<TData> | null | true>) => {
307
+ const nextRow = row === true ? createRow(table) : row;
308
+ statefulTableOptions?.onCreatingRowChange?.(
309
+ nextRow as MRT_Row<TData> | null,
310
+ ) ?? _setCreatingRow(nextRow as MRT_Row<TData> | null);
311
+ },
312
+ setDensity: statefulTableOptions.onDensityChange ?? setDensity,
313
+ setDraggingColumn:
314
+ statefulTableOptions.onDraggingColumnChange ?? setDraggingColumn,
315
+ setDraggingRow: statefulTableOptions.onDraggingRowChange ?? setDraggingRow,
316
+ setEditingCell: statefulTableOptions.onEditingCellChange ?? setEditingCell,
317
+ setEditingRow: statefulTableOptions.onEditingRowChange ?? setEditingRow,
318
+ setGlobalFilterFn:
319
+ statefulTableOptions.onGlobalFilterFnChange ?? setGlobalFilterFn,
320
+ setHoveredColumn:
321
+ statefulTableOptions.onHoveredColumnChange ?? setHoveredColumn,
322
+ setHoveredRow: statefulTableOptions.onHoveredRowChange ?? setHoveredRow,
323
+ setIsFullScreen: statefulTableOptions.onIsFullScreenChange ?? setIsFullScreen,
324
+ setShowAlertBanner:
325
+ statefulTableOptions.onShowAlertBannerChange ?? setShowAlertBanner,
326
+ setShowColumnFilters:
327
+ statefulTableOptions.onShowColumnFiltersChange ?? setShowColumnFilters,
328
+ setShowGlobalFilter:
329
+ statefulTableOptions.onShowGlobalFilterChange ?? setShowGlobalFilter,
330
+ setShowToolbarDropZone:
331
+ statefulTableOptions.onShowToolbarDropZoneChange ?? setShowToolbarDropZone,
332
+ });
314
333
 
315
334
  useMRT_Effects(table);
316
335
 
@@ -1,15 +1,4 @@
1
1
  import { useTheme } from '@mui/material/styles';
2
- import {
3
- getCoreRowModel,
4
- getExpandedRowModel,
5
- getFacetedMinMaxValues,
6
- getFacetedRowModel,
7
- getFacetedUniqueValues,
8
- getFilteredRowModel,
9
- getGroupedRowModel,
10
- getPaginationRowModel,
11
- getSortedRowModel,
12
- } from '@tanstack/react-table';
13
2
  import { useId, useMemo } from 'react';
14
3
 
15
4
  import { MRT_AggregationFns } from '../fns/aggregationFns';
@@ -112,7 +101,7 @@ export const useMRT_TableOptions: <TData extends MRT_RowData>(
112
101
  rowNumberDisplayMode = 'static',
113
102
  rowPinningDisplayMode = 'sticky',
114
103
  selectAllMode = 'page',
115
- sortingFns,
104
+ sortFns,
116
105
  ...rest
117
106
  }: MRT_TableOptions<TData>) => {
118
107
  const theme = useTheme();
@@ -131,7 +120,7 @@ export const useMRT_TableOptions: <TData extends MRT_RowData>(
131
120
  [],
132
121
  );
133
122
  filterFns = useMemo(() => ({ ...MRT_FilterFns, ...filterFns }), []);
134
- sortingFns = useMemo(() => ({ ...MRT_SortingFns, ...sortingFns }), []);
123
+ sortFns = useMemo(() => ({ ...MRT_SortingFns, ...sortFns }), []);
135
124
  defaultColumn = useMemo(
136
125
  () => ({ ...MRT_DefaultColumn, ...defaultColumn }),
137
126
  [defaultColumn],
@@ -221,29 +210,8 @@ export const useMRT_TableOptions: <TData extends MRT_RowData>(
221
210
  enableToolbarInternalActions,
222
211
  enableTopToolbar,
223
212
  filterFns,
224
- getCoreRowModel: getCoreRowModel(),
225
- getExpandedRowModel:
226
- enableExpanding || enableGrouping ? getExpandedRowModel() : undefined,
227
- getFacetedMinMaxValues: enableFacetedValues
228
- ? getFacetedMinMaxValues()
229
- : undefined,
230
- getFacetedRowModel: enableFacetedValues ? getFacetedRowModel() : undefined,
231
- getFacetedUniqueValues: enableFacetedValues
232
- ? getFacetedUniqueValues()
233
- : undefined,
234
- getFilteredRowModel:
235
- (enableColumnFilters || enableGlobalFilter || enableFilters) &&
236
- !manualFiltering
237
- ? getFilteredRowModel()
238
- : undefined,
239
- getGroupedRowModel:
240
- enableGrouping && !manualGrouping ? getGroupedRowModel() : undefined,
241
- getPaginationRowModel:
242
- enablePagination && !manualPagination
243
- ? getPaginationRowModel()
244
- : undefined,
245
- getSortedRowModel:
246
- enableSorting && !manualSorting ? getSortedRowModel() : undefined,
213
+ getRowCanExpand:
214
+ rest.getRowCanExpand ?? (rest.renderDetailPanel ? () => true : undefined),
247
215
  getSubRows: (row) => row?.subRows,
248
216
  icons,
249
217
  id,
@@ -265,7 +233,7 @@ export const useMRT_TableOptions: <TData extends MRT_RowData>(
265
233
  rowNumberDisplayMode,
266
234
  rowPinningDisplayMode,
267
235
  selectAllMode,
268
- sortingFns,
236
+ sortFns,
269
237
  ...rest,
270
238
  } as MRT_DefinedTableOptions<TData>;
271
239
  };
package/src/icons.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ArrowDownward as ArrowDownwardIcon, ArrowRight as ArrowRightIcon, Cancel as CancelIcon, ChevronLeft as ChevronLeftIcon, ChevronRight as ChevronRightIcon, ClearAll as ClearAllIcon, Close as CloseIcon, ContentCopy, DensityLarge as DensityLargeIcon, DensityMedium as DensityMediumIcon, DensitySmall as DensitySmallIcon, DragHandle as DragHandleIcon, DynamicFeed as DynamicFeedIcon, Edit as EditIcon, ExpandMore as ExpandMoreIcon, FilterAlt as FilterAltIcon, FilterList as FilterListIcon, FilterListOff as FilterListOffIcon, FirstPage as FirstPageIcon, Fullscreen as FullscreenIcon, FullscreenExit as FullscreenExitIcon, KeyboardDoubleArrowDown as KeyboardDoubleArrowDownIcon, LastPage as LastPageIcon, MoreHoriz as MoreHorizIcon, MoreVert as MoreVertIcon, PushPin as PushPinIcon, RestartAlt as RestartAltIcon, Save as SaveIcon, Search as SearchIcon, SearchOff as SearchOffIcon, Sort as SortIcon, SyncAlt as SyncAltIcon, ViewColumn as ViewColumnIcon, VisibilityOff as VisibilityOffIcon } from '@mui/icons-material';
1
+ import { ArrowDownward as ArrowDownwardIcon, ArrowRight as ArrowRightIcon, Cancel as CancelIcon, ChevronLeft as ChevronLeftIcon, ChevronRight as ChevronRightIcon, ClearAll as ClearAllIcon, Close as CloseIcon, ContentCopy, DensityLarge as DensityLargeIcon, DensityMedium as DensityMediumIcon, DensitySmall as DensitySmallIcon, DragHandle as DragHandleIcon, DynamicFeed as DynamicFeedIcon, Edit as EditIcon, ExpandMore as ExpandMoreIcon, FilterAlt as FilterAltIcon, FilterList as FilterListIcon, FilterListOff as FilterListOffIcon, FirstPage as FirstPageIcon, FullscreenExit as FullscreenExitIcon, Fullscreen as FullscreenIcon, KeyboardDoubleArrowDown as KeyboardDoubleArrowDownIcon, LastPage as LastPageIcon, MoreHoriz as MoreHorizIcon, MoreVert as MoreVertIcon, PushPin as PushPinIcon, RestartAlt as RestartAltIcon, Save as SaveIcon, Search as SearchIcon, SearchOff as SearchOffIcon, Sort as SortIcon, SyncAlt as SyncAltIcon, ViewColumn as ViewColumnIcon, VisibilityOff as VisibilityOffIcon } from '@mui/icons-material';
2
2
  export const MRT_Default_Icons = {
3
3
  ArrowDownwardIcon,
4
4
  ArrowRightIcon,