material-react-table 1.15.0 → 2.0.0-alpha.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 (482) hide show
  1. package/dist/cjs/index.js +1624 -1269
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/types/MaterialReactTable.d.ts +7 -11
  4. package/dist/cjs/types/body/MRT_TableBody.d.ts +4 -5
  5. package/dist/cjs/types/body/MRT_TableBodyCell.d.ts +5 -5
  6. package/dist/cjs/types/body/MRT_TableBodyCellValue.d.ts +4 -4
  7. package/dist/cjs/types/body/MRT_TableBodyRow.d.ts +6 -6
  8. package/dist/cjs/types/body/MRT_TableBodyRowGrabHandle.d.ts +5 -5
  9. package/dist/cjs/types/body/MRT_TableBodyRowPinButton.d.ts +7 -0
  10. package/dist/cjs/types/body/MRT_TableDetailPanel.d.ts +6 -6
  11. package/dist/cjs/types/body/index.d.ts +7 -0
  12. package/dist/cjs/types/buttons/MRT_ColumnPinningButtons.d.ts +2 -2
  13. package/dist/cjs/types/buttons/MRT_CopyButton.d.ts +2 -2
  14. package/dist/cjs/types/buttons/MRT_EditActionButtons.d.ts +2 -2
  15. package/dist/cjs/types/buttons/MRT_ExpandAllButton.d.ts +3 -3
  16. package/dist/cjs/types/buttons/MRT_ExpandButton.d.ts +2 -2
  17. package/dist/cjs/types/buttons/MRT_GrabHandleButton.d.ts +2 -2
  18. package/dist/cjs/types/buttons/MRT_RowPinButton.d.ts +9 -0
  19. package/dist/cjs/types/buttons/MRT_ShowHideColumnsButton.d.ts +2 -2
  20. package/dist/cjs/types/buttons/MRT_ToggleDensePaddingButton.d.ts +2 -2
  21. package/dist/cjs/types/buttons/MRT_ToggleFiltersButton.d.ts +2 -2
  22. package/dist/cjs/types/buttons/MRT_ToggleFullScreenButton.d.ts +7 -0
  23. package/dist/cjs/types/buttons/MRT_ToggleGlobalFilterButton.d.ts +2 -2
  24. package/dist/cjs/types/buttons/MRT_ToggleRowActionMenuButton.d.ts +2 -2
  25. package/dist/cjs/types/buttons/index.d.ts +13 -0
  26. package/dist/cjs/types/column.utils.d.ts +40 -51
  27. package/dist/cjs/types/filterFns.d.ts +14 -14
  28. package/dist/cjs/types/footer/MRT_TableFooter.d.ts +3 -3
  29. package/dist/cjs/types/footer/MRT_TableFooterCell.d.ts +4 -4
  30. package/dist/cjs/types/footer/MRT_TableFooterRow.d.ts +4 -4
  31. package/dist/cjs/types/footer/index.d.ts +3 -0
  32. package/dist/cjs/types/head/MRT_TableHead.d.ts +3 -3
  33. package/dist/cjs/types/head/MRT_TableHeadCell.d.ts +4 -4
  34. package/dist/cjs/types/head/MRT_TableHeadCellColumnActionsButton.d.ts +4 -4
  35. package/dist/cjs/types/head/MRT_TableHeadCellFilterContainer.d.ts +4 -4
  36. package/dist/cjs/types/head/MRT_TableHeadCellFilterLabel.d.ts +4 -4
  37. package/dist/cjs/types/head/MRT_TableHeadCellGrabHandle.d.ts +4 -4
  38. package/dist/cjs/types/head/MRT_TableHeadCellResizeHandle.d.ts +4 -4
  39. package/dist/cjs/types/head/MRT_TableHeadCellSortLabel.d.ts +4 -4
  40. package/dist/cjs/types/head/MRT_TableHeadRow.d.ts +4 -4
  41. package/dist/cjs/types/head/index.d.ts +9 -0
  42. package/dist/cjs/types/hooks/useMRT_DisplayColumns.d.ts +9 -0
  43. package/dist/cjs/types/hooks/useMRT_Effects.d.ts +2 -0
  44. package/dist/cjs/types/hooks/useMRT_TableInstance.d.ts +2 -0
  45. package/dist/cjs/types/hooks/useMRT_TableOptions.d.ts +2 -0
  46. package/dist/cjs/types/index.d.ts +14 -25
  47. package/dist/cjs/types/inputs/MRT_EditCellTextField.d.ts +2 -3
  48. package/dist/cjs/types/inputs/MRT_FilterCheckbox.d.ts +4 -4
  49. package/dist/cjs/types/inputs/MRT_FilterRangeFields.d.ts +4 -4
  50. package/dist/cjs/types/inputs/MRT_FilterRangeSlider.d.ts +4 -4
  51. package/dist/cjs/types/inputs/MRT_FilterTextField.d.ts +4 -4
  52. package/dist/cjs/types/inputs/MRT_GlobalFilterTextField.d.ts +2 -2
  53. package/dist/cjs/types/inputs/MRT_SelectCheckbox.d.ts +4 -4
  54. package/dist/cjs/types/inputs/index.d.ts +7 -0
  55. package/dist/cjs/types/locales/ar.d.ts +2 -0
  56. package/dist/cjs/types/locales/bg.d.ts +2 -0
  57. package/dist/cjs/types/locales/et.d.ts +2 -0
  58. package/dist/cjs/types/locales/ko.d.ts +2 -0
  59. package/dist/cjs/types/menus/MRT_ColumnActionMenu.d.ts +4 -4
  60. package/dist/cjs/types/menus/MRT_FilterOptionMenu.d.ts +2 -2
  61. package/dist/cjs/types/menus/MRT_RowActionMenu.d.ts +4 -4
  62. package/dist/cjs/types/menus/MRT_ShowHideColumnsMenu.d.ts +2 -2
  63. package/dist/cjs/types/menus/MRT_ShowHideColumnsMenuItems.d.ts +2 -2
  64. package/dist/cjs/types/menus/index.d.ts +5 -0
  65. package/dist/cjs/types/modals/MRT_EditRowModal.d.ts +7 -0
  66. package/dist/cjs/types/modals/index.d.ts +1 -0
  67. package/dist/cjs/types/sortingFns.d.ts +3 -2
  68. package/dist/cjs/types/table/MRT_Table.d.ts +3 -3
  69. package/dist/cjs/types/table/MRT_TableContainer.d.ts +3 -3
  70. package/dist/cjs/types/table/MRT_TablePaper.d.ts +3 -3
  71. package/dist/cjs/types/table/index.d.ts +4 -0
  72. package/dist/cjs/types/toolbar/MRT_BottomToolbar.d.ts +2 -2
  73. package/dist/cjs/types/toolbar/MRT_LinearProgressBar.d.ts +2 -2
  74. package/dist/cjs/types/toolbar/MRT_TablePagination.d.ts +2 -2
  75. package/dist/cjs/types/toolbar/MRT_ToolbarAlertBanner.d.ts +2 -2
  76. package/dist/cjs/types/toolbar/MRT_ToolbarDropZone.d.ts +2 -2
  77. package/dist/cjs/types/toolbar/MRT_ToolbarInternalButtons.d.ts +2 -2
  78. package/dist/cjs/types/toolbar/MRT_TopToolbar.d.ts +2 -2
  79. package/dist/cjs/types/toolbar/index.d.ts +7 -0
  80. package/dist/cjs/types/types.d.ts +128 -91
  81. package/dist/cjs/types/useMaterialReactTable.d.ts +2 -0
  82. package/dist/esm/material-react-table.esm.js +1567 -1279
  83. package/dist/esm/material-react-table.esm.js.map +1 -1
  84. package/dist/esm/types/MaterialReactTable.d.ts +7 -11
  85. package/dist/esm/types/body/MRT_TableBody.d.ts +4 -5
  86. package/dist/esm/types/body/MRT_TableBodyCell.d.ts +5 -5
  87. package/dist/esm/types/body/MRT_TableBodyCellValue.d.ts +4 -4
  88. package/dist/esm/types/body/MRT_TableBodyRow.d.ts +6 -6
  89. package/dist/esm/types/body/MRT_TableBodyRowGrabHandle.d.ts +5 -5
  90. package/dist/esm/types/body/MRT_TableBodyRowPinButton.d.ts +7 -0
  91. package/dist/esm/types/body/MRT_TableDetailPanel.d.ts +6 -6
  92. package/dist/esm/types/body/index.d.ts +7 -0
  93. package/dist/esm/types/buttons/MRT_ColumnPinningButtons.d.ts +2 -2
  94. package/dist/esm/types/buttons/MRT_CopyButton.d.ts +2 -2
  95. package/dist/esm/types/buttons/MRT_EditActionButtons.d.ts +2 -2
  96. package/dist/esm/types/buttons/MRT_ExpandAllButton.d.ts +3 -3
  97. package/dist/esm/types/buttons/MRT_ExpandButton.d.ts +2 -2
  98. package/dist/esm/types/buttons/MRT_GrabHandleButton.d.ts +2 -2
  99. package/dist/esm/types/buttons/MRT_RowPinButton.d.ts +9 -0
  100. package/dist/esm/types/buttons/MRT_ShowHideColumnsButton.d.ts +2 -2
  101. package/dist/esm/types/buttons/MRT_ToggleDensePaddingButton.d.ts +2 -2
  102. package/dist/esm/types/buttons/MRT_ToggleFiltersButton.d.ts +2 -2
  103. package/dist/esm/types/buttons/MRT_ToggleFullScreenButton.d.ts +7 -0
  104. package/dist/esm/types/buttons/MRT_ToggleGlobalFilterButton.d.ts +2 -2
  105. package/dist/esm/types/buttons/MRT_ToggleRowActionMenuButton.d.ts +2 -2
  106. package/dist/esm/types/buttons/index.d.ts +13 -0
  107. package/dist/esm/types/column.utils.d.ts +40 -51
  108. package/dist/esm/types/filterFns.d.ts +14 -14
  109. package/dist/esm/types/footer/MRT_TableFooter.d.ts +3 -3
  110. package/dist/esm/types/footer/MRT_TableFooterCell.d.ts +4 -4
  111. package/dist/esm/types/footer/MRT_TableFooterRow.d.ts +4 -4
  112. package/dist/esm/types/footer/index.d.ts +3 -0
  113. package/dist/esm/types/head/MRT_TableHead.d.ts +3 -3
  114. package/dist/esm/types/head/MRT_TableHeadCell.d.ts +4 -4
  115. package/dist/esm/types/head/MRT_TableHeadCellColumnActionsButton.d.ts +4 -4
  116. package/dist/esm/types/head/MRT_TableHeadCellFilterContainer.d.ts +4 -4
  117. package/dist/esm/types/head/MRT_TableHeadCellFilterLabel.d.ts +4 -4
  118. package/dist/esm/types/head/MRT_TableHeadCellGrabHandle.d.ts +4 -4
  119. package/dist/esm/types/head/MRT_TableHeadCellResizeHandle.d.ts +4 -4
  120. package/dist/esm/types/head/MRT_TableHeadCellSortLabel.d.ts +4 -4
  121. package/dist/esm/types/head/MRT_TableHeadRow.d.ts +4 -4
  122. package/dist/esm/types/head/index.d.ts +9 -0
  123. package/dist/esm/types/hooks/useMRT_DisplayColumns.d.ts +9 -0
  124. package/dist/esm/types/hooks/useMRT_Effects.d.ts +2 -0
  125. package/dist/esm/types/hooks/useMRT_TableInstance.d.ts +2 -0
  126. package/dist/esm/types/hooks/useMRT_TableOptions.d.ts +2 -0
  127. package/dist/esm/types/index.d.ts +14 -25
  128. package/dist/esm/types/inputs/MRT_EditCellTextField.d.ts +2 -3
  129. package/dist/esm/types/inputs/MRT_FilterCheckbox.d.ts +4 -4
  130. package/dist/esm/types/inputs/MRT_FilterRangeFields.d.ts +4 -4
  131. package/dist/esm/types/inputs/MRT_FilterRangeSlider.d.ts +4 -4
  132. package/dist/esm/types/inputs/MRT_FilterTextField.d.ts +4 -4
  133. package/dist/esm/types/inputs/MRT_GlobalFilterTextField.d.ts +2 -2
  134. package/dist/esm/types/inputs/MRT_SelectCheckbox.d.ts +4 -4
  135. package/dist/esm/types/inputs/index.d.ts +7 -0
  136. package/dist/esm/types/locales/ar.d.ts +2 -0
  137. package/dist/esm/types/locales/bg.d.ts +2 -0
  138. package/dist/esm/types/locales/et.d.ts +2 -0
  139. package/dist/esm/types/locales/ko.d.ts +2 -0
  140. package/dist/esm/types/menus/MRT_ColumnActionMenu.d.ts +4 -4
  141. package/dist/esm/types/menus/MRT_FilterOptionMenu.d.ts +2 -2
  142. package/dist/esm/types/menus/MRT_RowActionMenu.d.ts +4 -4
  143. package/dist/esm/types/menus/MRT_ShowHideColumnsMenu.d.ts +2 -2
  144. package/dist/esm/types/menus/MRT_ShowHideColumnsMenuItems.d.ts +2 -2
  145. package/dist/esm/types/menus/index.d.ts +5 -0
  146. package/dist/esm/types/modals/MRT_EditRowModal.d.ts +7 -0
  147. package/dist/esm/types/modals/index.d.ts +1 -0
  148. package/dist/esm/types/sortingFns.d.ts +3 -2
  149. package/dist/esm/types/table/MRT_Table.d.ts +3 -3
  150. package/dist/esm/types/table/MRT_TableContainer.d.ts +3 -3
  151. package/dist/esm/types/table/MRT_TablePaper.d.ts +3 -3
  152. package/dist/esm/types/table/index.d.ts +4 -0
  153. package/dist/esm/types/toolbar/MRT_BottomToolbar.d.ts +2 -2
  154. package/dist/esm/types/toolbar/MRT_LinearProgressBar.d.ts +2 -2
  155. package/dist/esm/types/toolbar/MRT_TablePagination.d.ts +2 -2
  156. package/dist/esm/types/toolbar/MRT_ToolbarAlertBanner.d.ts +2 -2
  157. package/dist/esm/types/toolbar/MRT_ToolbarDropZone.d.ts +2 -2
  158. package/dist/esm/types/toolbar/MRT_ToolbarInternalButtons.d.ts +2 -2
  159. package/dist/esm/types/toolbar/MRT_TopToolbar.d.ts +2 -2
  160. package/dist/esm/types/toolbar/index.d.ts +7 -0
  161. package/dist/esm/types/types.d.ts +128 -91
  162. package/dist/esm/types/useMaterialReactTable.d.ts +2 -0
  163. package/dist/index.d.ts +626 -155
  164. package/locales/ar.d.ts +2 -0
  165. package/locales/ar.esm.d.ts +2 -0
  166. package/locales/ar.esm.js +93 -0
  167. package/locales/ar.esm.js.map +1 -0
  168. package/locales/ar.js +97 -0
  169. package/locales/ar.js.map +1 -0
  170. package/locales/bg.d.ts +2 -0
  171. package/locales/bg.esm.d.ts +2 -0
  172. package/locales/bg.esm.js +93 -0
  173. package/locales/bg.esm.js.map +1 -0
  174. package/locales/bg.js +97 -0
  175. package/locales/bg.js.map +1 -0
  176. package/locales/cs.esm.js +1 -2
  177. package/locales/cs.esm.js.map +1 -1
  178. package/locales/cs.js +1 -2
  179. package/locales/cs.js.map +1 -1
  180. package/locales/da.esm.js +0 -1
  181. package/locales/da.esm.js.map +1 -1
  182. package/locales/da.js +0 -1
  183. package/locales/da.js.map +1 -1
  184. package/locales/de.esm.js +0 -1
  185. package/locales/de.esm.js.map +1 -1
  186. package/locales/de.js +0 -1
  187. package/locales/de.js.map +1 -1
  188. package/locales/en.esm.js +1 -1
  189. package/locales/en.esm.js.map +1 -1
  190. package/locales/en.js +1 -1
  191. package/locales/en.js.map +1 -1
  192. package/locales/es.esm.js +0 -1
  193. package/locales/es.esm.js.map +1 -1
  194. package/locales/es.js +0 -1
  195. package/locales/es.js.map +1 -1
  196. package/locales/et.d.ts +2 -0
  197. package/locales/et.esm.d.ts +2 -0
  198. package/locales/et.esm.js +93 -0
  199. package/locales/et.esm.js.map +1 -0
  200. package/locales/et.js +97 -0
  201. package/locales/et.js.map +1 -0
  202. package/locales/fa.esm.js +0 -1
  203. package/locales/fa.esm.js.map +1 -1
  204. package/locales/fa.js +0 -1
  205. package/locales/fa.js.map +1 -1
  206. package/locales/fi.esm.js +0 -1
  207. package/locales/fi.esm.js.map +1 -1
  208. package/locales/fi.js +0 -1
  209. package/locales/fi.js.map +1 -1
  210. package/locales/fr.esm.js +0 -1
  211. package/locales/fr.esm.js.map +1 -1
  212. package/locales/fr.js +0 -1
  213. package/locales/fr.js.map +1 -1
  214. package/locales/hu.esm.js +0 -1
  215. package/locales/hu.esm.js.map +1 -1
  216. package/locales/hu.js +0 -1
  217. package/locales/hu.js.map +1 -1
  218. package/locales/id.esm.js +0 -1
  219. package/locales/id.esm.js.map +1 -1
  220. package/locales/id.js +0 -1
  221. package/locales/id.js.map +1 -1
  222. package/locales/it.esm.js +0 -1
  223. package/locales/it.esm.js.map +1 -1
  224. package/locales/it.js +0 -1
  225. package/locales/it.js.map +1 -1
  226. package/locales/ja.esm.js +0 -1
  227. package/locales/ja.esm.js.map +1 -1
  228. package/locales/ja.js +0 -1
  229. package/locales/ja.js.map +1 -1
  230. package/locales/ko.d.ts +2 -0
  231. package/locales/ko.esm.d.ts +2 -0
  232. package/locales/ko.esm.js +93 -0
  233. package/locales/ko.esm.js.map +1 -0
  234. package/locales/ko.js +97 -0
  235. package/locales/ko.js.map +1 -0
  236. package/locales/nl.esm.js +0 -1
  237. package/locales/nl.esm.js.map +1 -1
  238. package/locales/nl.js +0 -1
  239. package/locales/nl.js.map +1 -1
  240. package/locales/no.esm.js +0 -1
  241. package/locales/no.esm.js.map +1 -1
  242. package/locales/no.js +0 -1
  243. package/locales/no.js.map +1 -1
  244. package/locales/pl.esm.js +0 -1
  245. package/locales/pl.esm.js.map +1 -1
  246. package/locales/pl.js +0 -1
  247. package/locales/pl.js.map +1 -1
  248. package/locales/pt-BR.esm.js +0 -1
  249. package/locales/pt-BR.esm.js.map +1 -1
  250. package/locales/pt-BR.js +0 -1
  251. package/locales/pt-BR.js.map +1 -1
  252. package/locales/pt.esm.js +0 -1
  253. package/locales/pt.esm.js.map +1 -1
  254. package/locales/pt.js +0 -1
  255. package/locales/pt.js.map +1 -1
  256. package/locales/ro.esm.js +0 -1
  257. package/locales/ro.esm.js.map +1 -1
  258. package/locales/ro.js +0 -1
  259. package/locales/ro.js.map +1 -1
  260. package/locales/ru.esm.js +0 -1
  261. package/locales/ru.esm.js.map +1 -1
  262. package/locales/ru.js +0 -1
  263. package/locales/ru.js.map +1 -1
  264. package/locales/sk.esm.js +0 -1
  265. package/locales/sk.esm.js.map +1 -1
  266. package/locales/sk.js +0 -1
  267. package/locales/sk.js.map +1 -1
  268. package/locales/sr-Cyrl-RS.esm.js +0 -1
  269. package/locales/sr-Cyrl-RS.esm.js.map +1 -1
  270. package/locales/sr-Cyrl-RS.js +0 -1
  271. package/locales/sr-Cyrl-RS.js.map +1 -1
  272. package/locales/sr-Latn-RS.esm.js +0 -1
  273. package/locales/sr-Latn-RS.esm.js.map +1 -1
  274. package/locales/sr-Latn-RS.js +0 -1
  275. package/locales/sr-Latn-RS.js.map +1 -1
  276. package/locales/sv.esm.js +0 -1
  277. package/locales/sv.esm.js.map +1 -1
  278. package/locales/sv.js +0 -1
  279. package/locales/sv.js.map +1 -1
  280. package/package.json +18 -16
  281. package/src/MaterialReactTable.tsx +31 -168
  282. package/src/body/MRT_TableBody.tsx +184 -93
  283. package/src/body/MRT_TableBodyCell.tsx +55 -56
  284. package/src/body/MRT_TableBodyCellValue.tsx +7 -4
  285. package/src/body/MRT_TableBodyRow.tsx +111 -23
  286. package/src/body/MRT_TableBodyRowGrabHandle.tsx +15 -11
  287. package/src/body/MRT_TableBodyRowPinButton.tsx +46 -0
  288. package/src/body/MRT_TableDetailPanel.tsx +21 -27
  289. package/src/body/index.ts +7 -0
  290. package/src/buttons/MRT_ColumnPinningButtons.tsx +2 -4
  291. package/src/buttons/MRT_CopyButton.tsx +17 -23
  292. package/src/buttons/MRT_EditActionButtons.tsx +56 -25
  293. package/src/buttons/MRT_ExpandAllButton.tsx +10 -10
  294. package/src/buttons/MRT_ExpandButton.tsx +8 -9
  295. package/src/buttons/MRT_GrabHandleButton.tsx +4 -5
  296. package/src/buttons/MRT_RowPinButton.tsx +74 -0
  297. package/src/buttons/MRT_ShowHideColumnsButton.tsx +2 -5
  298. package/src/buttons/MRT_ToggleDensePaddingButton.tsx +2 -3
  299. package/src/buttons/MRT_ToggleFiltersButton.tsx +2 -5
  300. package/src/buttons/{MRT_FullScreenToggleButton.tsx → MRT_ToggleFullScreenButton.tsx} +13 -6
  301. package/src/buttons/MRT_ToggleGlobalFilterButton.tsx +3 -5
  302. package/src/buttons/MRT_ToggleRowActionMenuButton.tsx +18 -11
  303. package/src/buttons/index.ts +13 -0
  304. package/src/column.utils.ts +107 -50
  305. package/src/filterFns.ts +14 -14
  306. package/src/footer/MRT_TableFooter.tsx +17 -11
  307. package/src/footer/MRT_TableFooterCell.tsx +14 -24
  308. package/src/footer/MRT_TableFooterRow.tsx +12 -13
  309. package/src/footer/index.ts +3 -0
  310. package/src/head/MRT_TableHead.tsx +15 -11
  311. package/src/head/MRT_TableHeadCell.tsx +16 -24
  312. package/src/head/MRT_TableHeadCellColumnActionsButton.tsx +18 -24
  313. package/src/head/MRT_TableHeadCellFilterContainer.tsx +9 -4
  314. package/src/head/MRT_TableHeadCellFilterLabel.tsx +9 -4
  315. package/src/head/MRT_TableHeadCellGrabHandle.tsx +13 -20
  316. package/src/head/MRT_TableHeadCellResizeHandle.tsx +9 -4
  317. package/src/head/MRT_TableHeadCellSortLabel.tsx +8 -6
  318. package/src/head/MRT_TableHeadRow.tsx +12 -13
  319. package/src/head/index.ts +9 -0
  320. package/src/hooks/useMRT_DisplayColumns.tsx +155 -0
  321. package/src/hooks/useMRT_Effects.ts +77 -0
  322. package/src/hooks/useMRT_TableInstance.ts +297 -0
  323. package/src/hooks/useMRT_TableOptions.ts +173 -0
  324. package/src/index.ts +16 -0
  325. package/src/inputs/MRT_EditCellTextField.tsx +47 -41
  326. package/src/inputs/MRT_FilterCheckbox.tsx +19 -28
  327. package/src/inputs/MRT_FilterRangeFields.tsx +7 -4
  328. package/src/inputs/MRT_FilterRangeSlider.tsx +14 -32
  329. package/src/inputs/MRT_FilterTextField.tsx +18 -34
  330. package/src/inputs/MRT_GlobalFilterTextField.tsx +6 -8
  331. package/src/inputs/MRT_SelectCheckbox.tsx +39 -21
  332. package/src/inputs/index.ts +7 -0
  333. package/src/locales/ar.ts +94 -0
  334. package/src/locales/bg.ts +93 -0
  335. package/src/{_locales → locales}/cs.ts +1 -2
  336. package/src/{_locales → locales}/da.ts +0 -1
  337. package/src/{_locales → locales}/de.ts +0 -1
  338. package/src/{_locales → locales}/en.ts +1 -1
  339. package/src/{_locales → locales}/es.ts +0 -1
  340. package/src/locales/et.ts +94 -0
  341. package/src/{_locales → locales}/fa.ts +0 -1
  342. package/src/{_locales → locales}/fi.ts +0 -1
  343. package/src/{_locales → locales}/fr.ts +0 -1
  344. package/src/{_locales → locales}/hu.ts +0 -1
  345. package/src/{_locales → locales}/id.ts +0 -1
  346. package/src/{_locales → locales}/it.ts +0 -1
  347. package/src/{_locales → locales}/ja.ts +0 -1
  348. package/src/locales/ko.ts +93 -0
  349. package/src/{_locales → locales}/nl.ts +0 -1
  350. package/src/{_locales → locales}/no.ts +1 -1
  351. package/src/{_locales → locales}/pl.ts +0 -1
  352. package/src/{_locales → locales}/pt-BR.ts +0 -1
  353. package/src/{_locales → locales}/pt.ts +0 -1
  354. package/src/{_locales → locales}/ro.ts +0 -1
  355. package/src/{_locales → locales}/ru.ts +0 -1
  356. package/src/{_locales → locales}/sk.ts +0 -1
  357. package/src/{_locales → locales}/sr-Cyrl-RS.ts +0 -1
  358. package/src/{_locales → locales}/sr-Latn-RS.ts +0 -1
  359. package/src/{_locales → locales}/sv.ts +0 -1
  360. package/src/{_locales → locales}/tr.ts +0 -1
  361. package/src/{_locales → locales}/uk.ts +0 -1
  362. package/src/{_locales → locales}/vi.ts +0 -1
  363. package/src/{_locales → locales}/zh-Hans.ts +7 -8
  364. package/src/{_locales → locales}/zh-Hant.ts +1 -2
  365. package/src/menus/MRT_ColumnActionMenu.tsx +8 -8
  366. package/src/menus/MRT_FilterOptionMenu.tsx +4 -3
  367. package/src/menus/MRT_RowActionMenu.tsx +16 -17
  368. package/src/menus/MRT_ShowHideColumnsMenu.tsx +4 -6
  369. package/src/menus/MRT_ShowHideColumnsMenuItems.tsx +4 -4
  370. package/src/menus/index.ts +5 -0
  371. package/src/modals/MRT_EditRowModal.tsx +107 -0
  372. package/src/modals/index.ts +1 -0
  373. package/src/sortingFns.ts +6 -2
  374. package/src/table/MRT_Table.tsx +42 -40
  375. package/src/table/MRT_TableContainer.tsx +24 -12
  376. package/src/table/MRT_TablePaper.tsx +22 -17
  377. package/src/table/index.ts +4 -0
  378. package/src/toolbar/MRT_BottomToolbar.tsx +16 -22
  379. package/src/toolbar/MRT_LinearProgressBar.tsx +7 -6
  380. package/src/toolbar/MRT_TablePagination.tsx +7 -9
  381. package/src/toolbar/MRT_ToolbarAlertBanner.tsx +10 -13
  382. package/src/toolbar/MRT_ToolbarDropZone.tsx +2 -2
  383. package/src/toolbar/MRT_ToolbarInternalButtons.tsx +6 -8
  384. package/src/toolbar/MRT_TopToolbar.tsx +10 -16
  385. package/src/toolbar/index.ts +7 -0
  386. package/src/types.ts +803 -770
  387. package/src/useMaterialReactTable.ts +11 -0
  388. package/dist/cjs/types/body/MRT_EditRowModal.d.ts +0 -8
  389. package/dist/cjs/types/buttons/MRT_FullScreenToggleButton.d.ts +0 -7
  390. package/dist/cjs/types/table/MRT_TableRoot.d.ts +0 -1
  391. package/dist/esm/types/body/MRT_EditRowModal.d.ts +0 -8
  392. package/dist/esm/types/buttons/MRT_FullScreenToggleButton.d.ts +0 -7
  393. package/dist/esm/types/table/MRT_TableRoot.d.ts +0 -1
  394. package/locales/tr.d.ts +0 -2
  395. package/locales/tr.esm.d.ts +0 -2
  396. package/locales/tr.esm.js +0 -94
  397. package/locales/tr.esm.js.map +0 -1
  398. package/locales/tr.js +0 -98
  399. package/locales/tr.js.map +0 -1
  400. package/locales/uk.d.ts +0 -2
  401. package/locales/uk.esm.d.ts +0 -2
  402. package/locales/uk.esm.js +0 -94
  403. package/locales/uk.esm.js.map +0 -1
  404. package/locales/uk.js +0 -98
  405. package/locales/uk.js.map +0 -1
  406. package/locales/vi.d.ts +0 -2
  407. package/locales/vi.esm.d.ts +0 -2
  408. package/locales/vi.esm.js +0 -94
  409. package/locales/vi.esm.js.map +0 -1
  410. package/locales/vi.js +0 -98
  411. package/locales/vi.js.map +0 -1
  412. package/locales/zh-Hans.d.ts +0 -2
  413. package/locales/zh-Hans.esm.d.ts +0 -2
  414. package/locales/zh-Hans.esm.js +0 -94
  415. package/locales/zh-Hans.esm.js.map +0 -1
  416. package/locales/zh-Hans.js +0 -98
  417. package/locales/zh-Hans.js.map +0 -1
  418. package/locales/zh-Hant.d.ts +0 -2
  419. package/locales/zh-Hant.esm.d.ts +0 -2
  420. package/locales/zh-Hant.esm.js +0 -94
  421. package/locales/zh-Hant.esm.js.map +0 -1
  422. package/locales/zh-Hant.js +0 -98
  423. package/locales/zh-Hant.js.map +0 -1
  424. package/src/body/MRT_EditRowModal.tsx +0 -57
  425. package/src/index.tsx +0 -50
  426. package/src/table/MRT_TableRoot.tsx +0 -421
  427. /package/dist/cjs/types/{_locales → locales}/cs.d.ts +0 -0
  428. /package/dist/cjs/types/{_locales → locales}/da.d.ts +0 -0
  429. /package/dist/cjs/types/{_locales → locales}/de.d.ts +0 -0
  430. /package/dist/cjs/types/{_locales → locales}/en.d.ts +0 -0
  431. /package/dist/cjs/types/{_locales → locales}/es.d.ts +0 -0
  432. /package/dist/cjs/types/{_locales → locales}/fa.d.ts +0 -0
  433. /package/dist/cjs/types/{_locales → locales}/fi.d.ts +0 -0
  434. /package/dist/cjs/types/{_locales → locales}/fr.d.ts +0 -0
  435. /package/dist/cjs/types/{_locales → locales}/hu.d.ts +0 -0
  436. /package/dist/cjs/types/{_locales → locales}/id.d.ts +0 -0
  437. /package/dist/cjs/types/{_locales → locales}/it.d.ts +0 -0
  438. /package/dist/cjs/types/{_locales → locales}/ja.d.ts +0 -0
  439. /package/dist/cjs/types/{_locales → locales}/nl.d.ts +0 -0
  440. /package/dist/cjs/types/{_locales → locales}/no.d.ts +0 -0
  441. /package/dist/cjs/types/{_locales → locales}/pl.d.ts +0 -0
  442. /package/dist/cjs/types/{_locales → locales}/pt-BR.d.ts +0 -0
  443. /package/dist/cjs/types/{_locales → locales}/pt.d.ts +0 -0
  444. /package/dist/cjs/types/{_locales → locales}/ro.d.ts +0 -0
  445. /package/dist/cjs/types/{_locales → locales}/ru.d.ts +0 -0
  446. /package/dist/cjs/types/{_locales → locales}/sk.d.ts +0 -0
  447. /package/dist/cjs/types/{_locales → locales}/sr-Cyrl-RS.d.ts +0 -0
  448. /package/dist/cjs/types/{_locales → locales}/sr-Latn-RS.d.ts +0 -0
  449. /package/dist/cjs/types/{_locales → locales}/sv.d.ts +0 -0
  450. /package/dist/cjs/types/{_locales → locales}/tr.d.ts +0 -0
  451. /package/dist/cjs/types/{_locales → locales}/uk.d.ts +0 -0
  452. /package/dist/cjs/types/{_locales → locales}/vi.d.ts +0 -0
  453. /package/dist/cjs/types/{_locales → locales}/zh-Hans.d.ts +0 -0
  454. /package/dist/cjs/types/{_locales → locales}/zh-Hant.d.ts +0 -0
  455. /package/dist/esm/types/{_locales → locales}/cs.d.ts +0 -0
  456. /package/dist/esm/types/{_locales → locales}/da.d.ts +0 -0
  457. /package/dist/esm/types/{_locales → locales}/de.d.ts +0 -0
  458. /package/dist/esm/types/{_locales → locales}/en.d.ts +0 -0
  459. /package/dist/esm/types/{_locales → locales}/es.d.ts +0 -0
  460. /package/dist/esm/types/{_locales → locales}/fa.d.ts +0 -0
  461. /package/dist/esm/types/{_locales → locales}/fi.d.ts +0 -0
  462. /package/dist/esm/types/{_locales → locales}/fr.d.ts +0 -0
  463. /package/dist/esm/types/{_locales → locales}/hu.d.ts +0 -0
  464. /package/dist/esm/types/{_locales → locales}/id.d.ts +0 -0
  465. /package/dist/esm/types/{_locales → locales}/it.d.ts +0 -0
  466. /package/dist/esm/types/{_locales → locales}/ja.d.ts +0 -0
  467. /package/dist/esm/types/{_locales → locales}/nl.d.ts +0 -0
  468. /package/dist/esm/types/{_locales → locales}/no.d.ts +0 -0
  469. /package/dist/esm/types/{_locales → locales}/pl.d.ts +0 -0
  470. /package/dist/esm/types/{_locales → locales}/pt-BR.d.ts +0 -0
  471. /package/dist/esm/types/{_locales → locales}/pt.d.ts +0 -0
  472. /package/dist/esm/types/{_locales → locales}/ro.d.ts +0 -0
  473. /package/dist/esm/types/{_locales → locales}/ru.d.ts +0 -0
  474. /package/dist/esm/types/{_locales → locales}/sk.d.ts +0 -0
  475. /package/dist/esm/types/{_locales → locales}/sr-Cyrl-RS.d.ts +0 -0
  476. /package/dist/esm/types/{_locales → locales}/sr-Latn-RS.d.ts +0 -0
  477. /package/dist/esm/types/{_locales → locales}/sv.d.ts +0 -0
  478. /package/dist/esm/types/{_locales → locales}/tr.d.ts +0 -0
  479. /package/dist/esm/types/{_locales → locales}/uk.d.ts +0 -0
  480. /package/dist/esm/types/{_locales → locales}/vi.d.ts +0 -0
  481. /package/dist/esm/types/{_locales → locales}/zh-Hans.d.ts +0 -0
  482. /package/dist/esm/types/{_locales → locales}/zh-Hant.d.ts +0 -0
package/src/filterFns.ts CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  } from '@tanstack/match-sorter-utils';
6
6
  import { filterFns, type Row } from '@tanstack/react-table';
7
7
 
8
- const fuzzy = <TData extends Record<string, any> = {}>(
8
+ const fuzzy = <TData extends Record<string, any>>(
9
9
  row: Row<TData>,
10
10
  columnId: string,
11
11
  filterValue: string | number,
@@ -20,7 +20,7 @@ const fuzzy = <TData extends Record<string, any> = {}>(
20
20
 
21
21
  fuzzy.autoRemove = (val: any) => !val;
22
22
 
23
- const contains = <TData extends Record<string, any> = {}>(
23
+ const contains = <TData extends Record<string, any>>(
24
24
  row: Row<TData>,
25
25
  id: string,
26
26
  filterValue: string | number,
@@ -34,7 +34,7 @@ const contains = <TData extends Record<string, any> = {}>(
34
34
 
35
35
  contains.autoRemove = (val: any) => !val;
36
36
 
37
- const startsWith = <TData extends Record<string, any> = {}>(
37
+ const startsWith = <TData extends Record<string, any>>(
38
38
  row: Row<TData>,
39
39
  id: string,
40
40
  filterValue: string | number,
@@ -48,7 +48,7 @@ const startsWith = <TData extends Record<string, any> = {}>(
48
48
 
49
49
  startsWith.autoRemove = (val: any) => !val;
50
50
 
51
- const endsWith = <TData extends Record<string, any> = {}>(
51
+ const endsWith = <TData extends Record<string, any>>(
52
52
  row: Row<TData>,
53
53
  id: string,
54
54
  filterValue: string | number,
@@ -62,7 +62,7 @@ const endsWith = <TData extends Record<string, any> = {}>(
62
62
 
63
63
  endsWith.autoRemove = (val: any) => !val;
64
64
 
65
- const equals = <TData extends Record<string, any> = {}>(
65
+ const equals = <TData extends Record<string, any>>(
66
66
  row: Row<TData>,
67
67
  id: string,
68
68
  filterValue: string | number,
@@ -72,7 +72,7 @@ const equals = <TData extends Record<string, any> = {}>(
72
72
 
73
73
  equals.autoRemove = (val: any) => !val;
74
74
 
75
- const notEquals = <TData extends Record<string, any> = {}>(
75
+ const notEquals = <TData extends Record<string, any>>(
76
76
  row: Row<TData>,
77
77
  id: string,
78
78
  filterValue: string | number,
@@ -82,7 +82,7 @@ const notEquals = <TData extends Record<string, any> = {}>(
82
82
 
83
83
  notEquals.autoRemove = (val: any) => !val;
84
84
 
85
- const greaterThan = <TData extends Record<string, any> = {}>(
85
+ const greaterThan = <TData extends Record<string, any>>(
86
86
  row: Row<TData>,
87
87
  id: string,
88
88
  filterValue: string | number,
@@ -94,7 +94,7 @@ const greaterThan = <TData extends Record<string, any> = {}>(
94
94
 
95
95
  greaterThan.autoRemove = (val: any) => !val;
96
96
 
97
- const greaterThanOrEqualTo = <TData extends Record<string, any> = {}>(
97
+ const greaterThanOrEqualTo = <TData extends Record<string, any>>(
98
98
  row: Row<TData>,
99
99
  id: string,
100
100
  filterValue: string | number,
@@ -102,7 +102,7 @@ const greaterThanOrEqualTo = <TData extends Record<string, any> = {}>(
102
102
 
103
103
  greaterThanOrEqualTo.autoRemove = (val: any) => !val;
104
104
 
105
- const lessThan = <TData extends Record<string, any> = {}>(
105
+ const lessThan = <TData extends Record<string, any>>(
106
106
  row: Row<TData>,
107
107
  id: string,
108
108
  filterValue: string | number,
@@ -114,7 +114,7 @@ const lessThan = <TData extends Record<string, any> = {}>(
114
114
 
115
115
  lessThan.autoRemove = (val: any) => !val;
116
116
 
117
- const lessThanOrEqualTo = <TData extends Record<string, any> = {}>(
117
+ const lessThanOrEqualTo = <TData extends Record<string, any>>(
118
118
  row: Row<TData>,
119
119
  id: string,
120
120
  filterValue: string | number,
@@ -122,7 +122,7 @@ const lessThanOrEqualTo = <TData extends Record<string, any> = {}>(
122
122
 
123
123
  lessThanOrEqualTo.autoRemove = (val: any) => !val;
124
124
 
125
- const between = <TData extends Record<string, any> = {}>(
125
+ const between = <TData extends Record<string, any>>(
126
126
  row: Row<TData>,
127
127
  id: string,
128
128
  filterValues: [string | number, string | number],
@@ -137,7 +137,7 @@ const between = <TData extends Record<string, any> = {}>(
137
137
 
138
138
  between.autoRemove = (val: any) => !val;
139
139
 
140
- const betweenInclusive = <TData extends Record<string, any> = {}>(
140
+ const betweenInclusive = <TData extends Record<string, any>>(
141
141
  row: Row<TData>,
142
142
  id: string,
143
143
  filterValues: [string | number, string | number],
@@ -152,7 +152,7 @@ const betweenInclusive = <TData extends Record<string, any> = {}>(
152
152
 
153
153
  betweenInclusive.autoRemove = (val: any) => !val;
154
154
 
155
- const empty = <TData extends Record<string, any> = {}>(
155
+ const empty = <TData extends Record<string, any>>(
156
156
  row: Row<TData>,
157
157
  id: string,
158
158
  _filterValue: string | number,
@@ -160,7 +160,7 @@ const empty = <TData extends Record<string, any> = {}>(
160
160
 
161
161
  empty.autoRemove = (val: any) => !val;
162
162
 
163
- const notEmpty = <TData extends Record<string, any> = {}>(
163
+ const notEmpty = <TData extends Record<string, any>>(
164
164
  row: Row<TData>,
165
165
  id: string,
166
166
  _filterValue: string | number,
@@ -2,31 +2,32 @@ import TableFooter from '@mui/material/TableFooter';
2
2
  import { MRT_TableFooterRow } from './MRT_TableFooterRow';
3
3
  import { type VirtualItem } from '@tanstack/react-virtual';
4
4
  import { type MRT_TableInstance } from '../types';
5
+ import { parseFromValuesOrFunc } from '../column.utils';
5
6
 
6
- interface Props {
7
- table: MRT_TableInstance;
7
+ interface Props<TData extends Record<string, any>> {
8
+ table: MRT_TableInstance<TData>;
8
9
  virtualColumns?: VirtualItem[];
9
10
  virtualPaddingLeft?: number;
10
11
  virtualPaddingRight?: number;
11
12
  }
12
13
 
13
- export const MRT_TableFooter = ({
14
+ export const MRT_TableFooter = <TData extends Record<string, any>>({
14
15
  table,
15
16
  virtualColumns,
16
17
  virtualPaddingLeft,
17
18
  virtualPaddingRight,
18
- }: Props) => {
19
+ }: Props<TData>) => {
19
20
  const {
20
21
  getFooterGroups,
21
22
  getState,
22
23
  options: { enableStickyFooter, layoutMode, muiTableFooterProps },
24
+ refs: { tableFooterRef },
23
25
  } = table;
24
26
  const { isFullScreen } = getState();
25
27
 
26
- const tableFooterProps =
27
- muiTableFooterProps instanceof Function
28
- ? muiTableFooterProps({ table })
29
- : muiTableFooterProps;
28
+ const tableFooterProps = parseFromValuesOrFunc(muiTableFooterProps, {
29
+ table,
30
+ });
30
31
 
31
32
  const stickFooter =
32
33
  (isFullScreen || enableStickyFooter) && enableStickyFooter !== false;
@@ -45,10 +46,15 @@ export const MRT_TableFooter = ({
45
46
  : undefined,
46
47
  position: stickFooter ? 'sticky' : undefined,
47
48
  zIndex: stickFooter ? 1 : undefined,
48
- ...(tableFooterProps?.sx instanceof Function
49
- ? tableFooterProps?.sx(theme)
50
- : (tableFooterProps?.sx as any)),
49
+ ...(parseFromValuesOrFunc(tableFooterProps?.sx, theme) as any),
51
50
  })}
51
+ ref={(ref: HTMLTableSectionElement) => {
52
+ tableFooterRef.current = ref;
53
+ if (tableFooterProps?.ref) {
54
+ // @ts-ignore
55
+ tableFooterProps.ref.current = ref;
56
+ }
57
+ }}
52
58
  >
53
59
  {getFooterGroups().map((footerGroup) => (
54
60
  <MRT_TableFooterRow
@@ -1,13 +1,16 @@
1
1
  import TableCell from '@mui/material/TableCell';
2
- import { getCommonCellStyles } from '../column.utils';
2
+ import { getCommonCellStyles, parseFromValuesOrFunc } from '../column.utils';
3
3
  import { type MRT_Header, type MRT_TableInstance } from '../types';
4
4
 
5
- interface Props {
6
- footer: MRT_Header;
7
- table: MRT_TableInstance;
5
+ interface Props<TData extends Record<string, any>> {
6
+ footer: MRT_Header<TData>;
7
+ table: MRT_TableInstance<TData>;
8
8
  }
9
9
 
10
- export const MRT_TableFooterCell = ({ footer, table }: Props) => {
10
+ export const MRT_TableFooterCell = <TData extends Record<string, any>>({
11
+ footer,
12
+ table,
13
+ }: Props<TData>) => {
11
14
  const {
12
15
  getState,
13
16
  options: { layoutMode, muiTableFooterCellProps },
@@ -17,19 +20,12 @@ export const MRT_TableFooterCell = ({ footer, table }: Props) => {
17
20
  const { columnDef } = column;
18
21
  const { columnDefType } = columnDef;
19
22
 
20
- const mTableFooterCellProps =
21
- muiTableFooterCellProps instanceof Function
22
- ? muiTableFooterCellProps({ column, table })
23
- : muiTableFooterCellProps;
24
-
25
- const mcTableFooterCellProps =
26
- columnDef.muiTableFooterCellProps instanceof Function
27
- ? columnDef.muiTableFooterCellProps({ column, table })
28
- : columnDef.muiTableFooterCellProps;
29
-
30
23
  const tableCellProps = {
31
- ...mTableFooterCellProps,
32
- ...mcTableFooterCellProps,
24
+ ...parseFromValuesOrFunc(muiTableFooterCellProps, { column, table }),
25
+ ...parseFromValuesOrFunc(columnDef.muiTableFooterCellProps, {
26
+ column,
27
+ table,
28
+ }),
33
29
  };
34
30
 
35
31
  return (
@@ -61,13 +57,7 @@ export const MRT_TableFooterCell = ({ footer, table }: Props) => {
61
57
  <>
62
58
  {footer.isPlaceholder
63
59
  ? null
64
- : (columnDef.Footer instanceof Function
65
- ? columnDef.Footer?.({
66
- column,
67
- footer,
68
- table,
69
- })
70
- : columnDef.Footer) ??
60
+ : parseFromValuesOrFunc(columnDef.Footer, { column, footer, table }) ??
71
61
  columnDef.footer ??
72
62
  null}
73
63
  </>
@@ -7,22 +7,23 @@ import {
7
7
  type MRT_HeaderGroup,
8
8
  type MRT_TableInstance,
9
9
  } from '../types';
10
+ import { parseFromValuesOrFunc } from '../column.utils';
10
11
 
11
- interface Props {
12
- footerGroup: MRT_HeaderGroup;
13
- table: MRT_TableInstance;
12
+ interface Props<TData extends Record<string, any>> {
13
+ footerGroup: MRT_HeaderGroup<TData>;
14
+ table: MRT_TableInstance<TData>;
14
15
  virtualColumns?: VirtualItem[];
15
16
  virtualPaddingLeft?: number;
16
17
  virtualPaddingRight?: number;
17
18
  }
18
19
 
19
- export const MRT_TableFooterRow = ({
20
+ export const MRT_TableFooterRow = <TData extends Record<string, any>>({
20
21
  footerGroup,
21
22
  table,
22
23
  virtualColumns,
23
24
  virtualPaddingLeft,
24
25
  virtualPaddingRight,
25
- }: Props) => {
26
+ }: Props<TData>) => {
26
27
  const {
27
28
  options: { layoutMode, muiTableFooterRowProps },
28
29
  } = table;
@@ -38,10 +39,10 @@ export const MRT_TableFooterRow = ({
38
39
  )
39
40
  return null;
40
41
 
41
- const tableRowProps =
42
- muiTableFooterRowProps instanceof Function
43
- ? muiTableFooterRowProps({ footerGroup, table })
44
- : muiTableFooterRowProps;
42
+ const tableRowProps = parseFromValuesOrFunc(muiTableFooterRowProps, {
43
+ footerGroup,
44
+ table,
45
+ });
45
46
 
46
47
  return (
47
48
  <TableRow
@@ -50,9 +51,7 @@ export const MRT_TableFooterRow = ({
50
51
  backgroundColor: lighten(theme.palette.background.default, 0.04),
51
52
  display: layoutMode === 'grid' ? 'flex' : 'table-row',
52
53
  width: '100%',
53
- ...(tableRowProps?.sx instanceof Function
54
- ? tableRowProps?.sx(theme)
55
- : (tableRowProps?.sx as any)),
54
+ ...(parseFromValuesOrFunc(tableRowProps?.sx, theme) as any),
56
55
  })}
57
56
  >
58
57
  {virtualPaddingLeft ? (
@@ -61,7 +60,7 @@ export const MRT_TableFooterRow = ({
61
60
  {(virtualColumns ?? footerGroup.headers).map((footerOrVirtualFooter) => {
62
61
  const footer = virtualColumns
63
62
  ? footerGroup.headers[footerOrVirtualFooter.index]
64
- : (footerOrVirtualFooter as MRT_Header);
63
+ : (footerOrVirtualFooter as MRT_Header<TData>);
65
64
 
66
65
  return (
67
66
  <MRT_TableFooterCell footer={footer} key={footer.id} table={table} />
@@ -0,0 +1,3 @@
1
+ export * from './MRT_TableFooter';
2
+ export * from './MRT_TableFooterCell';
3
+ export * from './MRT_TableFooterRow';
@@ -2,31 +2,30 @@ import TableHead from '@mui/material/TableHead';
2
2
  import { MRT_TableHeadRow } from './MRT_TableHeadRow';
3
3
  import { type VirtualItem } from '@tanstack/react-virtual';
4
4
  import { type MRT_TableInstance } from '../types';
5
+ import { parseFromValuesOrFunc } from '../column.utils';
5
6
 
6
- interface Props {
7
- table: MRT_TableInstance;
7
+ interface Props<TData extends Record<string, any>> {
8
+ table: MRT_TableInstance<TData>;
8
9
  virtualColumns?: VirtualItem[];
9
10
  virtualPaddingLeft?: number;
10
11
  virtualPaddingRight?: number;
11
12
  }
12
13
 
13
- export const MRT_TableHead = ({
14
+ export const MRT_TableHead = <TData extends Record<string, any>>({
14
15
  table,
15
16
  virtualColumns,
16
17
  virtualPaddingLeft,
17
18
  virtualPaddingRight,
18
- }: Props) => {
19
+ }: Props<TData>) => {
19
20
  const {
20
21
  getHeaderGroups,
21
22
  getState,
22
23
  options: { enableStickyHeader, layoutMode, muiTableHeadProps },
24
+ refs: { tableHeadRef },
23
25
  } = table;
24
26
  const { isFullScreen } = getState();
25
27
 
26
- const tableHeadProps =
27
- muiTableHeadProps instanceof Function
28
- ? muiTableHeadProps({ table })
29
- : muiTableHeadProps;
28
+ const tableHeadProps = parseFromValuesOrFunc(muiTableHeadProps, { table });
30
29
 
31
30
  const stickyHeader = enableStickyHeader || isFullScreen;
32
31
 
@@ -39,10 +38,15 @@ export const MRT_TableHead = ({
39
38
  position: stickyHeader ? 'sticky' : 'relative',
40
39
  top: stickyHeader && layoutMode === 'grid' ? 0 : undefined,
41
40
  zIndex: stickyHeader ? 2 : undefined,
42
- ...(tableHeadProps?.sx instanceof Function
43
- ? tableHeadProps?.sx(theme)
44
- : (tableHeadProps?.sx as any)),
41
+ ...(parseFromValuesOrFunc(tableHeadProps?.sx, theme) as any),
45
42
  })}
43
+ ref={(ref: HTMLTableSectionElement) => {
44
+ tableHeadRef.current = ref;
45
+ if (tableHeadProps?.ref) {
46
+ // @ts-ignore
47
+ tableHeadProps.ref.current = ref;
48
+ }
49
+ }}
46
50
  >
47
51
  {getHeaderGroups().map((headerGroup) => (
48
52
  <MRT_TableHeadRow
@@ -1,4 +1,4 @@
1
- import { type DragEvent, type ReactNode, useMemo } from 'react';
1
+ import { type DragEvent, useMemo } from 'react';
2
2
  import Box from '@mui/material/Box';
3
3
  import TableCell from '@mui/material/TableCell';
4
4
  import { useTheme } from '@mui/material/styles';
@@ -10,14 +10,18 @@ import { MRT_TableHeadCellResizeHandle } from './MRT_TableHeadCellResizeHandle';
10
10
  import { MRT_TableHeadCellSortLabel } from './MRT_TableHeadCellSortLabel';
11
11
  import { getCommonCellStyles } from '../column.utils';
12
12
  import { type Theme } from '@mui/material/styles';
13
+ import { parseFromValuesOrFunc } from '../column.utils';
13
14
  import { type MRT_Header, type MRT_TableInstance } from '../types';
14
15
 
15
- interface Props {
16
- header: MRT_Header;
17
- table: MRT_TableInstance;
16
+ interface Props<TData extends Record<string, any>> {
17
+ header: MRT_Header<TData>;
18
+ table: MRT_TableInstance<TData>;
18
19
  }
19
20
 
20
- export const MRT_TableHeadCell = ({ header, table }: Props) => {
21
+ export const MRT_TableHeadCell = <TData extends Record<string, any>>({
22
+ header,
23
+ table,
24
+ }: Props<TData>) => {
21
25
  const theme = useTheme();
22
26
  const {
23
27
  getState,
@@ -44,19 +48,9 @@ export const MRT_TableHeadCell = ({ header, table }: Props) => {
44
48
  const { columnDef } = column;
45
49
  const { columnDefType } = columnDef;
46
50
 
47
- const mTableHeadCellProps =
48
- muiTableHeadCellProps instanceof Function
49
- ? muiTableHeadCellProps({ column, table })
50
- : muiTableHeadCellProps;
51
-
52
- const mcTableHeadCellProps =
53
- columnDef.muiTableHeadCellProps instanceof Function
54
- ? columnDef.muiTableHeadCellProps({ column, table })
55
- : columnDef.muiTableHeadCellProps;
56
-
57
51
  const tableCellProps = {
58
- ...mTableHeadCellProps,
59
- ...mcTableHeadCellProps,
52
+ ...parseFromValuesOrFunc(muiTableHeadCellProps, { column, table }),
53
+ ...parseFromValuesOrFunc(columnDef.muiTableHeadCellProps, { column, table }),
60
54
  };
61
55
 
62
56
  const showColumnActions =
@@ -110,13 +104,11 @@ export const MRT_TableHeadCell = ({ header, table }: Props) => {
110
104
  };
111
105
 
112
106
  const headerElement =
113
- columnDef?.Header instanceof Function
114
- ? columnDef?.Header?.({
115
- column,
116
- header,
117
- table,
118
- })
119
- : columnDef?.Header ?? (columnDef.header as ReactNode);
107
+ parseFromValuesOrFunc(columnDef.Header, {
108
+ column,
109
+ header,
110
+ table,
111
+ }) ?? columnDef.header;
120
112
 
121
113
  return (
122
114
  <TableCell
@@ -2,22 +2,25 @@ import { type MouseEvent, useState } from 'react';
2
2
  import IconButton from '@mui/material/IconButton';
3
3
  import Tooltip from '@mui/material/Tooltip';
4
4
  import { MRT_ColumnActionMenu } from '../menus/MRT_ColumnActionMenu';
5
+ import { parseFromValuesOrFunc } from '../column.utils';
5
6
  import { type MRT_Header, type MRT_TableInstance } from '../types';
6
7
 
7
- interface Props {
8
- header: MRT_Header;
9
- table: MRT_TableInstance;
8
+ interface Props<TData extends Record<string, any>> {
9
+ header: MRT_Header<TData>;
10
+ table: MRT_TableInstance<TData>;
10
11
  }
11
12
 
12
- export const MRT_TableHeadCellColumnActionsButton = ({
13
+ export const MRT_TableHeadCellColumnActionsButton = <
14
+ TData extends Record<string, any>,
15
+ >({
13
16
  header,
14
17
  table,
15
- }: Props) => {
18
+ }: Props<TData>) => {
16
19
  const {
17
20
  options: {
18
21
  icons: { MoreVertIcon },
19
22
  localization,
20
- muiTableHeadCellColumnActionsButtonProps,
23
+ muiColumnActionsButtonProps,
21
24
  },
22
25
  } = table;
23
26
  const { column } = header;
@@ -31,22 +34,15 @@ export const MRT_TableHeadCellColumnActionsButton = ({
31
34
  setAnchorEl(event.currentTarget);
32
35
  };
33
36
 
34
- const mTableHeadCellColumnActionsButtonProps =
35
- muiTableHeadCellColumnActionsButtonProps instanceof Function
36
- ? muiTableHeadCellColumnActionsButtonProps({ column, table })
37
- : muiTableHeadCellColumnActionsButtonProps;
38
-
39
- const mcTableHeadCellColumnActionsButtonProps =
40
- columnDef.muiTableHeadCellColumnActionsButtonProps instanceof Function
41
- ? columnDef.muiTableHeadCellColumnActionsButtonProps({
42
- column,
43
- table,
44
- })
45
- : columnDef.muiTableHeadCellColumnActionsButtonProps;
46
-
47
37
  const iconButtonProps = {
48
- ...mTableHeadCellColumnActionsButtonProps,
49
- ...mcTableHeadCellColumnActionsButtonProps,
38
+ ...parseFromValuesOrFunc(muiColumnActionsButtonProps, {
39
+ column,
40
+ table,
41
+ }),
42
+ ...parseFromValuesOrFunc(columnDef.muiColumnActionsButtonProps, {
43
+ column,
44
+ table,
45
+ }),
50
46
  };
51
47
 
52
48
  return (
@@ -73,9 +69,7 @@ export const MRT_TableHeadCellColumnActionsButton = ({
73
69
  '&:hover': {
74
70
  opacity: 1,
75
71
  },
76
- ...(iconButtonProps?.sx instanceof Function
77
- ? iconButtonProps.sx(theme)
78
- : (iconButtonProps?.sx as any)),
72
+ ...(parseFromValuesOrFunc(iconButtonProps?.sx, theme) as any),
79
73
  })}
80
74
  title={undefined}
81
75
  >
@@ -5,12 +5,17 @@ import { MRT_FilterCheckbox } from '../inputs/MRT_FilterCheckbox';
5
5
  import { MRT_FilterRangeSlider } from '../inputs/MRT_FilterRangeSlider';
6
6
  import { type MRT_Header, type MRT_TableInstance } from '../types';
7
7
 
8
- interface Props {
9
- header: MRT_Header;
10
- table: MRT_TableInstance;
8
+ interface Props<TData extends Record<string, any>> {
9
+ header: MRT_Header<TData>;
10
+ table: MRT_TableInstance<TData>;
11
11
  }
12
12
 
13
- export const MRT_TableHeadCellFilterContainer = ({ header, table }: Props) => {
13
+ export const MRT_TableHeadCellFilterContainer = <
14
+ TData extends Record<string, any>,
15
+ >({
16
+ header,
17
+ table,
18
+ }: Props<TData>) => {
14
19
  const { getState } = table;
15
20
  const { showColumnFilters } = getState();
16
21
  const { column } = header;
@@ -5,12 +5,17 @@ import IconButton from '@mui/material/IconButton';
5
5
  import Tooltip from '@mui/material/Tooltip';
6
6
  import { type MRT_Header, type MRT_TableInstance } from '../types';
7
7
 
8
- interface Props {
9
- header: MRT_Header;
10
- table: MRT_TableInstance;
8
+ interface Props<TData extends Record<string, any>> {
9
+ header: MRT_Header<TData>;
10
+ table: MRT_TableInstance<TData>;
11
11
  }
12
12
 
13
- export const MRT_TableHeadCellFilterLabel = ({ header, table }: Props) => {
13
+ export const MRT_TableHeadCellFilterLabel = <
14
+ TData extends Record<string, any>,
15
+ >({
16
+ header,
17
+ table,
18
+ }: Props<TData>) => {
14
19
  const {
15
20
  options: {
16
21
  icons: { FilterAltIcon },
@@ -1,22 +1,22 @@
1
1
  import { type DragEvent, type RefObject } from 'react';
2
2
  import { MRT_GrabHandleButton } from '../buttons/MRT_GrabHandleButton';
3
- import { reorderColumn } from '../column.utils';
3
+ import { parseFromValuesOrFunc, reorderColumn } from '../column.utils';
4
4
  import { type MRT_Column, type MRT_TableInstance } from '../types';
5
5
 
6
- interface Props {
7
- column: MRT_Column;
8
- table: MRT_TableInstance;
6
+ interface Props<TData extends Record<string, any>> {
7
+ column: MRT_Column<TData>;
8
+ table: MRT_TableInstance<TData>;
9
9
  tableHeadCellRef: RefObject<HTMLTableCellElement>;
10
10
  }
11
11
 
12
- export const MRT_TableHeadCellGrabHandle = ({
12
+ export const MRT_TableHeadCellGrabHandle = <TData extends Record<string, any>>({
13
13
  column,
14
14
  table,
15
15
  tableHeadCellRef,
16
- }: Props) => {
16
+ }: Props<TData>) => {
17
17
  const {
18
18
  getState,
19
- options: { enableColumnOrdering, muiTableHeadCellDragHandleProps },
19
+ options: { enableColumnOrdering, muiColumnDragHandleProps },
20
20
  setColumnOrder,
21
21
  setDraggingColumn,
22
22
  setHoveredColumn,
@@ -24,19 +24,12 @@ export const MRT_TableHeadCellGrabHandle = ({
24
24
  const { columnDef } = column;
25
25
  const { hoveredColumn, draggingColumn, columnOrder } = getState();
26
26
 
27
- const mIconButtonProps =
28
- muiTableHeadCellDragHandleProps instanceof Function
29
- ? muiTableHeadCellDragHandleProps({ column, table })
30
- : muiTableHeadCellDragHandleProps;
31
-
32
- const mcIconButtonProps =
33
- columnDef.muiTableHeadCellDragHandleProps instanceof Function
34
- ? columnDef.muiTableHeadCellDragHandleProps({ column, table })
35
- : columnDef.muiTableHeadCellDragHandleProps;
36
-
37
27
  const iconButtonProps = {
38
- ...mIconButtonProps,
39
- ...mcIconButtonProps,
28
+ ...parseFromValuesOrFunc(muiColumnDragHandleProps, { column, table }),
29
+ ...parseFromValuesOrFunc(columnDef.muiColumnDragHandleProps, {
30
+ column,
31
+ table,
32
+ }),
40
33
  };
41
34
 
42
35
  const handleDragStart = (event: DragEvent<HTMLButtonElement>) => {
@@ -59,7 +52,7 @@ export const MRT_TableHeadCellGrabHandle = ({
59
52
  hoveredColumn?.id !== draggingColumn?.id
60
53
  ) {
61
54
  setColumnOrder(
62
- reorderColumn(column, hoveredColumn as MRT_Column, columnOrder),
55
+ reorderColumn(column, hoveredColumn as MRT_Column<TData>, columnOrder),
63
56
  );
64
57
  }
65
58
  setDraggingColumn(null);
@@ -2,12 +2,17 @@ import Box from '@mui/material/Box';
2
2
  import Divider from '@mui/material/Divider';
3
3
  import { type MRT_Header, type MRT_TableInstance } from '../types';
4
4
 
5
- interface Props {
6
- header: MRT_Header;
7
- table: MRT_TableInstance;
5
+ interface Props<TData extends Record<string, any>> {
6
+ header: MRT_Header<TData>;
7
+ table: MRT_TableInstance<TData>;
8
8
  }
9
9
 
10
- export const MRT_TableHeadCellResizeHandle = ({ header, table }: Props) => {
10
+ export const MRT_TableHeadCellResizeHandle = <
11
+ TData extends Record<string, any>,
12
+ >({
13
+ header,
14
+ table,
15
+ }: Props<TData>) => {
11
16
  const {
12
17
  getState,
13
18
  options: { columnResizeMode },