material-react-table 1.15.0 → 2.0.0-alpha.0

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 (466) hide show
  1. package/dist/cjs/index.js +1626 -1324
  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 +5 -6
  8. package/dist/cjs/types/body/MRT_TableBodyRowGrabHandle.d.ts +5 -5
  9. package/dist/cjs/types/body/MRT_TableDetailPanel.d.ts +6 -6
  10. package/dist/cjs/types/body/index.d.ts +6 -0
  11. package/dist/cjs/types/buttons/MRT_ColumnPinningButtons.d.ts +2 -2
  12. package/dist/cjs/types/buttons/MRT_CopyButton.d.ts +2 -2
  13. package/dist/cjs/types/buttons/MRT_EditActionButtons.d.ts +2 -2
  14. package/dist/cjs/types/buttons/MRT_ExpandAllButton.d.ts +3 -3
  15. package/dist/cjs/types/buttons/MRT_ExpandButton.d.ts +2 -2
  16. package/dist/cjs/types/buttons/MRT_GrabHandleButton.d.ts +2 -2
  17. package/dist/cjs/types/buttons/MRT_ShowHideColumnsButton.d.ts +2 -2
  18. package/dist/cjs/types/buttons/MRT_ToggleDensePaddingButton.d.ts +2 -2
  19. package/dist/cjs/types/buttons/MRT_ToggleFiltersButton.d.ts +2 -2
  20. package/dist/cjs/types/buttons/MRT_ToggleFullScreenButton.d.ts +7 -0
  21. package/dist/cjs/types/buttons/MRT_ToggleGlobalFilterButton.d.ts +2 -2
  22. package/dist/cjs/types/buttons/MRT_ToggleRowActionMenuButton.d.ts +2 -2
  23. package/dist/cjs/types/buttons/index.d.ts +12 -0
  24. package/dist/cjs/types/column.utils.d.ts +39 -51
  25. package/dist/cjs/types/filterFns.d.ts +14 -14
  26. package/dist/cjs/types/footer/MRT_TableFooter.d.ts +3 -3
  27. package/dist/cjs/types/footer/MRT_TableFooterCell.d.ts +4 -4
  28. package/dist/cjs/types/footer/MRT_TableFooterRow.d.ts +4 -4
  29. package/dist/cjs/types/footer/index.d.ts +3 -0
  30. package/dist/cjs/types/head/MRT_TableHead.d.ts +3 -3
  31. package/dist/cjs/types/head/MRT_TableHeadCell.d.ts +4 -4
  32. package/dist/cjs/types/head/MRT_TableHeadCellColumnActionsButton.d.ts +4 -4
  33. package/dist/cjs/types/head/MRT_TableHeadCellFilterContainer.d.ts +4 -4
  34. package/dist/cjs/types/head/MRT_TableHeadCellFilterLabel.d.ts +4 -4
  35. package/dist/cjs/types/head/MRT_TableHeadCellGrabHandle.d.ts +4 -4
  36. package/dist/cjs/types/head/MRT_TableHeadCellResizeHandle.d.ts +4 -4
  37. package/dist/cjs/types/head/MRT_TableHeadCellSortLabel.d.ts +4 -4
  38. package/dist/cjs/types/head/MRT_TableHeadRow.d.ts +4 -4
  39. package/dist/cjs/types/head/index.d.ts +9 -0
  40. package/dist/cjs/types/hooks/useMRT_DisplayColumns.d.ts +9 -0
  41. package/dist/cjs/types/hooks/useMRT_Effects.d.ts +2 -0
  42. package/dist/cjs/types/hooks/useMRT_TableInstance.d.ts +2 -0
  43. package/dist/cjs/types/hooks/useMRT_TableOptions.d.ts +2 -0
  44. package/dist/cjs/types/index.d.ts +14 -25
  45. package/dist/cjs/types/inputs/MRT_EditCellTextField.d.ts +2 -3
  46. package/dist/cjs/types/inputs/MRT_FilterCheckbox.d.ts +4 -4
  47. package/dist/cjs/types/inputs/MRT_FilterRangeFields.d.ts +4 -4
  48. package/dist/cjs/types/inputs/MRT_FilterRangeSlider.d.ts +4 -4
  49. package/dist/cjs/types/inputs/MRT_FilterTextField.d.ts +4 -4
  50. package/dist/cjs/types/inputs/MRT_GlobalFilterTextField.d.ts +2 -2
  51. package/dist/cjs/types/inputs/MRT_SelectCheckbox.d.ts +4 -4
  52. package/dist/cjs/types/inputs/index.d.ts +7 -0
  53. package/dist/cjs/types/locales/ar.d.ts +2 -0
  54. package/dist/cjs/types/locales/bg.d.ts +2 -0
  55. package/dist/cjs/types/locales/et.d.ts +2 -0
  56. package/dist/cjs/types/locales/ko.d.ts +2 -0
  57. package/dist/cjs/types/menus/MRT_ColumnActionMenu.d.ts +4 -4
  58. package/dist/cjs/types/menus/MRT_FilterOptionMenu.d.ts +2 -2
  59. package/dist/cjs/types/menus/MRT_RowActionMenu.d.ts +4 -4
  60. package/dist/cjs/types/menus/MRT_ShowHideColumnsMenu.d.ts +2 -2
  61. package/dist/cjs/types/menus/MRT_ShowHideColumnsMenuItems.d.ts +2 -2
  62. package/dist/cjs/types/menus/index.d.ts +5 -0
  63. package/dist/cjs/types/modals/MRT_EditRowModal.d.ts +7 -0
  64. package/dist/cjs/types/modals/index.d.ts +1 -0
  65. package/dist/cjs/types/sortingFns.d.ts +3 -2
  66. package/dist/cjs/types/table/MRT_Table.d.ts +3 -3
  67. package/dist/cjs/types/table/MRT_TableContainer.d.ts +3 -3
  68. package/dist/cjs/types/table/MRT_TablePaper.d.ts +3 -3
  69. package/dist/cjs/types/table/index.d.ts +4 -0
  70. package/dist/cjs/types/toolbar/MRT_BottomToolbar.d.ts +2 -2
  71. package/dist/cjs/types/toolbar/MRT_LinearProgressBar.d.ts +2 -2
  72. package/dist/cjs/types/toolbar/MRT_TablePagination.d.ts +2 -2
  73. package/dist/cjs/types/toolbar/MRT_ToolbarAlertBanner.d.ts +2 -2
  74. package/dist/cjs/types/toolbar/MRT_ToolbarDropZone.d.ts +2 -2
  75. package/dist/cjs/types/toolbar/MRT_ToolbarInternalButtons.d.ts +2 -2
  76. package/dist/cjs/types/toolbar/MRT_TopToolbar.d.ts +2 -2
  77. package/dist/cjs/types/toolbar/index.d.ts +7 -0
  78. package/dist/cjs/types/types.d.ts +115 -84
  79. package/dist/cjs/types/useMaterialReactTable.d.ts +2 -0
  80. package/dist/esm/material-react-table.esm.js +1556 -1318
  81. package/dist/esm/material-react-table.esm.js.map +1 -1
  82. package/dist/esm/types/MaterialReactTable.d.ts +7 -11
  83. package/dist/esm/types/body/MRT_TableBody.d.ts +4 -5
  84. package/dist/esm/types/body/MRT_TableBodyCell.d.ts +5 -5
  85. package/dist/esm/types/body/MRT_TableBodyCellValue.d.ts +4 -4
  86. package/dist/esm/types/body/MRT_TableBodyRow.d.ts +5 -6
  87. package/dist/esm/types/body/MRT_TableBodyRowGrabHandle.d.ts +5 -5
  88. package/dist/esm/types/body/MRT_TableDetailPanel.d.ts +6 -6
  89. package/dist/esm/types/body/index.d.ts +6 -0
  90. package/dist/esm/types/buttons/MRT_ColumnPinningButtons.d.ts +2 -2
  91. package/dist/esm/types/buttons/MRT_CopyButton.d.ts +2 -2
  92. package/dist/esm/types/buttons/MRT_EditActionButtons.d.ts +2 -2
  93. package/dist/esm/types/buttons/MRT_ExpandAllButton.d.ts +3 -3
  94. package/dist/esm/types/buttons/MRT_ExpandButton.d.ts +2 -2
  95. package/dist/esm/types/buttons/MRT_GrabHandleButton.d.ts +2 -2
  96. package/dist/esm/types/buttons/MRT_ShowHideColumnsButton.d.ts +2 -2
  97. package/dist/esm/types/buttons/MRT_ToggleDensePaddingButton.d.ts +2 -2
  98. package/dist/esm/types/buttons/MRT_ToggleFiltersButton.d.ts +2 -2
  99. package/dist/esm/types/buttons/MRT_ToggleFullScreenButton.d.ts +7 -0
  100. package/dist/esm/types/buttons/MRT_ToggleGlobalFilterButton.d.ts +2 -2
  101. package/dist/esm/types/buttons/MRT_ToggleRowActionMenuButton.d.ts +2 -2
  102. package/dist/esm/types/buttons/index.d.ts +12 -0
  103. package/dist/esm/types/column.utils.d.ts +39 -51
  104. package/dist/esm/types/filterFns.d.ts +14 -14
  105. package/dist/esm/types/footer/MRT_TableFooter.d.ts +3 -3
  106. package/dist/esm/types/footer/MRT_TableFooterCell.d.ts +4 -4
  107. package/dist/esm/types/footer/MRT_TableFooterRow.d.ts +4 -4
  108. package/dist/esm/types/footer/index.d.ts +3 -0
  109. package/dist/esm/types/head/MRT_TableHead.d.ts +3 -3
  110. package/dist/esm/types/head/MRT_TableHeadCell.d.ts +4 -4
  111. package/dist/esm/types/head/MRT_TableHeadCellColumnActionsButton.d.ts +4 -4
  112. package/dist/esm/types/head/MRT_TableHeadCellFilterContainer.d.ts +4 -4
  113. package/dist/esm/types/head/MRT_TableHeadCellFilterLabel.d.ts +4 -4
  114. package/dist/esm/types/head/MRT_TableHeadCellGrabHandle.d.ts +4 -4
  115. package/dist/esm/types/head/MRT_TableHeadCellResizeHandle.d.ts +4 -4
  116. package/dist/esm/types/head/MRT_TableHeadCellSortLabel.d.ts +4 -4
  117. package/dist/esm/types/head/MRT_TableHeadRow.d.ts +4 -4
  118. package/dist/esm/types/head/index.d.ts +9 -0
  119. package/dist/esm/types/hooks/useMRT_DisplayColumns.d.ts +9 -0
  120. package/dist/esm/types/hooks/useMRT_Effects.d.ts +2 -0
  121. package/dist/esm/types/hooks/useMRT_TableInstance.d.ts +2 -0
  122. package/dist/esm/types/hooks/useMRT_TableOptions.d.ts +2 -0
  123. package/dist/esm/types/index.d.ts +14 -25
  124. package/dist/esm/types/inputs/MRT_EditCellTextField.d.ts +2 -3
  125. package/dist/esm/types/inputs/MRT_FilterCheckbox.d.ts +4 -4
  126. package/dist/esm/types/inputs/MRT_FilterRangeFields.d.ts +4 -4
  127. package/dist/esm/types/inputs/MRT_FilterRangeSlider.d.ts +4 -4
  128. package/dist/esm/types/inputs/MRT_FilterTextField.d.ts +4 -4
  129. package/dist/esm/types/inputs/MRT_GlobalFilterTextField.d.ts +2 -2
  130. package/dist/esm/types/inputs/MRT_SelectCheckbox.d.ts +4 -4
  131. package/dist/esm/types/inputs/index.d.ts +7 -0
  132. package/dist/esm/types/locales/ar.d.ts +2 -0
  133. package/dist/esm/types/locales/bg.d.ts +2 -0
  134. package/dist/esm/types/locales/et.d.ts +2 -0
  135. package/dist/esm/types/locales/ko.d.ts +2 -0
  136. package/dist/esm/types/menus/MRT_ColumnActionMenu.d.ts +4 -4
  137. package/dist/esm/types/menus/MRT_FilterOptionMenu.d.ts +2 -2
  138. package/dist/esm/types/menus/MRT_RowActionMenu.d.ts +4 -4
  139. package/dist/esm/types/menus/MRT_ShowHideColumnsMenu.d.ts +2 -2
  140. package/dist/esm/types/menus/MRT_ShowHideColumnsMenuItems.d.ts +2 -2
  141. package/dist/esm/types/menus/index.d.ts +5 -0
  142. package/dist/esm/types/modals/MRT_EditRowModal.d.ts +7 -0
  143. package/dist/esm/types/modals/index.d.ts +1 -0
  144. package/dist/esm/types/sortingFns.d.ts +3 -2
  145. package/dist/esm/types/table/MRT_Table.d.ts +3 -3
  146. package/dist/esm/types/table/MRT_TableContainer.d.ts +3 -3
  147. package/dist/esm/types/table/MRT_TablePaper.d.ts +3 -3
  148. package/dist/esm/types/table/index.d.ts +4 -0
  149. package/dist/esm/types/toolbar/MRT_BottomToolbar.d.ts +2 -2
  150. package/dist/esm/types/toolbar/MRT_LinearProgressBar.d.ts +2 -2
  151. package/dist/esm/types/toolbar/MRT_TablePagination.d.ts +2 -2
  152. package/dist/esm/types/toolbar/MRT_ToolbarAlertBanner.d.ts +2 -2
  153. package/dist/esm/types/toolbar/MRT_ToolbarDropZone.d.ts +2 -2
  154. package/dist/esm/types/toolbar/MRT_ToolbarInternalButtons.d.ts +2 -2
  155. package/dist/esm/types/toolbar/MRT_TopToolbar.d.ts +2 -2
  156. package/dist/esm/types/toolbar/index.d.ts +7 -0
  157. package/dist/esm/types/types.d.ts +115 -84
  158. package/dist/esm/types/useMaterialReactTable.d.ts +2 -0
  159. package/dist/index.d.ts +598 -148
  160. package/locales/ar.d.ts +2 -0
  161. package/locales/ar.esm.d.ts +2 -0
  162. package/locales/ar.esm.js +93 -0
  163. package/locales/ar.esm.js.map +1 -0
  164. package/locales/ar.js +97 -0
  165. package/locales/ar.js.map +1 -0
  166. package/locales/bg.d.ts +2 -0
  167. package/locales/bg.esm.d.ts +2 -0
  168. package/locales/bg.esm.js +93 -0
  169. package/locales/bg.esm.js.map +1 -0
  170. package/locales/bg.js +97 -0
  171. package/locales/bg.js.map +1 -0
  172. package/locales/cs.esm.js +1 -2
  173. package/locales/cs.esm.js.map +1 -1
  174. package/locales/cs.js +1 -2
  175. package/locales/cs.js.map +1 -1
  176. package/locales/da.esm.js +0 -1
  177. package/locales/da.esm.js.map +1 -1
  178. package/locales/da.js +0 -1
  179. package/locales/da.js.map +1 -1
  180. package/locales/de.esm.js +0 -1
  181. package/locales/de.esm.js.map +1 -1
  182. package/locales/de.js +0 -1
  183. package/locales/de.js.map +1 -1
  184. package/locales/en.esm.js +0 -1
  185. package/locales/en.esm.js.map +1 -1
  186. package/locales/en.js +0 -1
  187. package/locales/en.js.map +1 -1
  188. package/locales/es.esm.js +0 -1
  189. package/locales/es.esm.js.map +1 -1
  190. package/locales/es.js +0 -1
  191. package/locales/es.js.map +1 -1
  192. package/locales/et.d.ts +2 -0
  193. package/locales/et.esm.d.ts +2 -0
  194. package/locales/et.esm.js +93 -0
  195. package/locales/et.esm.js.map +1 -0
  196. package/locales/et.js +97 -0
  197. package/locales/et.js.map +1 -0
  198. package/locales/fa.esm.js +0 -1
  199. package/locales/fa.esm.js.map +1 -1
  200. package/locales/fa.js +0 -1
  201. package/locales/fa.js.map +1 -1
  202. package/locales/fi.esm.js +0 -1
  203. package/locales/fi.esm.js.map +1 -1
  204. package/locales/fi.js +0 -1
  205. package/locales/fi.js.map +1 -1
  206. package/locales/fr.esm.js +0 -1
  207. package/locales/fr.esm.js.map +1 -1
  208. package/locales/fr.js +0 -1
  209. package/locales/fr.js.map +1 -1
  210. package/locales/hu.esm.js +0 -1
  211. package/locales/hu.esm.js.map +1 -1
  212. package/locales/hu.js +0 -1
  213. package/locales/hu.js.map +1 -1
  214. package/locales/id.esm.js +0 -1
  215. package/locales/id.esm.js.map +1 -1
  216. package/locales/id.js +0 -1
  217. package/locales/id.js.map +1 -1
  218. package/locales/it.esm.js +0 -1
  219. package/locales/it.esm.js.map +1 -1
  220. package/locales/it.js +0 -1
  221. package/locales/it.js.map +1 -1
  222. package/locales/ja.esm.js +0 -1
  223. package/locales/ja.esm.js.map +1 -1
  224. package/locales/ja.js +0 -1
  225. package/locales/ja.js.map +1 -1
  226. package/locales/ko.d.ts +2 -0
  227. package/locales/ko.esm.d.ts +2 -0
  228. package/locales/ko.esm.js +93 -0
  229. package/locales/ko.esm.js.map +1 -0
  230. package/locales/ko.js +97 -0
  231. package/locales/ko.js.map +1 -0
  232. package/locales/nl.esm.js +0 -1
  233. package/locales/nl.esm.js.map +1 -1
  234. package/locales/nl.js +0 -1
  235. package/locales/nl.js.map +1 -1
  236. package/locales/no.esm.js +0 -1
  237. package/locales/no.esm.js.map +1 -1
  238. package/locales/no.js +0 -1
  239. package/locales/no.js.map +1 -1
  240. package/locales/pl.esm.js +0 -1
  241. package/locales/pl.esm.js.map +1 -1
  242. package/locales/pl.js +0 -1
  243. package/locales/pl.js.map +1 -1
  244. package/locales/pt-BR.esm.js +0 -1
  245. package/locales/pt-BR.esm.js.map +1 -1
  246. package/locales/pt-BR.js +0 -1
  247. package/locales/pt-BR.js.map +1 -1
  248. package/locales/pt.esm.js +0 -1
  249. package/locales/pt.esm.js.map +1 -1
  250. package/locales/pt.js +0 -1
  251. package/locales/pt.js.map +1 -1
  252. package/locales/ro.esm.js +0 -1
  253. package/locales/ro.esm.js.map +1 -1
  254. package/locales/ro.js +0 -1
  255. package/locales/ro.js.map +1 -1
  256. package/locales/ru.esm.js +0 -1
  257. package/locales/ru.esm.js.map +1 -1
  258. package/locales/ru.js +0 -1
  259. package/locales/ru.js.map +1 -1
  260. package/locales/sk.esm.js +0 -1
  261. package/locales/sk.esm.js.map +1 -1
  262. package/locales/sk.js +0 -1
  263. package/locales/sk.js.map +1 -1
  264. package/locales/sr-Cyrl-RS.esm.js +0 -1
  265. package/locales/sr-Cyrl-RS.esm.js.map +1 -1
  266. package/locales/sr-Cyrl-RS.js +0 -1
  267. package/locales/sr-Cyrl-RS.js.map +1 -1
  268. package/locales/sr-Latn-RS.esm.js +0 -1
  269. package/locales/sr-Latn-RS.esm.js.map +1 -1
  270. package/locales/sr-Latn-RS.js +0 -1
  271. package/locales/sr-Latn-RS.js.map +1 -1
  272. package/locales/sv.esm.js +0 -1
  273. package/locales/sv.esm.js.map +1 -1
  274. package/locales/sv.js +0 -1
  275. package/locales/sv.js.map +1 -1
  276. package/locales/tr.esm.js +0 -1
  277. package/locales/tr.esm.js.map +1 -1
  278. package/locales/tr.js +0 -1
  279. package/locales/tr.js.map +1 -1
  280. package/locales/uk.esm.js +0 -1
  281. package/locales/uk.esm.js.map +1 -1
  282. package/locales/uk.js +0 -1
  283. package/locales/uk.js.map +1 -1
  284. package/locales/vi.esm.js +0 -1
  285. package/locales/vi.esm.js.map +1 -1
  286. package/locales/vi.js +0 -1
  287. package/locales/vi.js.map +1 -1
  288. package/locales/zh-Hans.esm.js +7 -8
  289. package/locales/zh-Hans.esm.js.map +1 -1
  290. package/locales/zh-Hans.js +7 -8
  291. package/locales/zh-Hans.js.map +1 -1
  292. package/locales/zh-Hant.esm.js +1 -2
  293. package/locales/zh-Hant.esm.js.map +1 -1
  294. package/locales/zh-Hant.js +1 -2
  295. package/locales/zh-Hant.js.map +1 -1
  296. package/package.json +10 -8
  297. package/src/MaterialReactTable.tsx +31 -168
  298. package/src/body/MRT_TableBody.tsx +10 -23
  299. package/src/body/MRT_TableBodyCell.tsx +35 -38
  300. package/src/body/MRT_TableBodyCellValue.tsx +7 -4
  301. package/src/body/MRT_TableBodyRow.tsx +7 -7
  302. package/src/body/MRT_TableBodyRowGrabHandle.tsx +13 -10
  303. package/src/body/MRT_TableDetailPanel.tsx +11 -11
  304. package/src/body/index.ts +6 -0
  305. package/src/buttons/MRT_ColumnPinningButtons.tsx +2 -4
  306. package/src/buttons/MRT_CopyButton.tsx +9 -9
  307. package/src/buttons/MRT_EditActionButtons.tsx +56 -25
  308. package/src/buttons/MRT_ExpandAllButton.tsx +5 -3
  309. package/src/buttons/MRT_ExpandButton.tsx +2 -2
  310. package/src/buttons/MRT_GrabHandleButton.tsx +2 -2
  311. package/src/buttons/MRT_ShowHideColumnsButton.tsx +2 -5
  312. package/src/buttons/MRT_ToggleDensePaddingButton.tsx +2 -3
  313. package/src/buttons/MRT_ToggleFiltersButton.tsx +2 -5
  314. package/src/buttons/{MRT_FullScreenToggleButton.tsx → MRT_ToggleFullScreenButton.tsx} +13 -6
  315. package/src/buttons/MRT_ToggleGlobalFilterButton.tsx +3 -5
  316. package/src/buttons/MRT_ToggleRowActionMenuButton.tsx +16 -8
  317. package/src/buttons/index.ts +12 -0
  318. package/src/column.utils.ts +96 -45
  319. package/src/filterFns.ts +14 -14
  320. package/src/footer/MRT_TableFooter.tsx +4 -4
  321. package/src/footer/MRT_TableFooterCell.tsx +7 -4
  322. package/src/footer/MRT_TableFooterRow.tsx +6 -6
  323. package/src/footer/index.ts +3 -0
  324. package/src/head/MRT_TableHead.tsx +4 -4
  325. package/src/head/MRT_TableHeadCell.tsx +7 -4
  326. package/src/head/MRT_TableHeadCellColumnActionsButton.tsx +14 -12
  327. package/src/head/MRT_TableHeadCellFilterContainer.tsx +9 -4
  328. package/src/head/MRT_TableHeadCellFilterLabel.tsx +9 -4
  329. package/src/head/MRT_TableHeadCellGrabHandle.tsx +13 -13
  330. package/src/head/MRT_TableHeadCellResizeHandle.tsx +9 -4
  331. package/src/head/MRT_TableHeadCellSortLabel.tsx +8 -6
  332. package/src/head/MRT_TableHeadRow.tsx +6 -6
  333. package/src/head/index.ts +9 -0
  334. package/src/hooks/useMRT_DisplayColumns.tsx +142 -0
  335. package/src/hooks/useMRT_Effects.ts +77 -0
  336. package/src/hooks/useMRT_TableInstance.ts +291 -0
  337. package/src/hooks/useMRT_TableOptions.ts +169 -0
  338. package/src/index.ts +16 -0
  339. package/src/inputs/MRT_EditCellTextField.tsx +39 -25
  340. package/src/inputs/MRT_FilterCheckbox.tsx +14 -11
  341. package/src/inputs/MRT_FilterRangeFields.tsx +7 -4
  342. package/src/inputs/MRT_FilterRangeSlider.tsx +18 -19
  343. package/src/inputs/MRT_FilterTextField.tsx +15 -15
  344. package/src/inputs/MRT_GlobalFilterTextField.tsx +2 -4
  345. package/src/inputs/MRT_SelectCheckbox.tsx +8 -4
  346. package/src/inputs/index.ts +7 -0
  347. package/src/locales/ar.ts +94 -0
  348. package/src/locales/bg.ts +93 -0
  349. package/src/{_locales → locales}/cs.ts +1 -2
  350. package/src/{_locales → locales}/da.ts +0 -1
  351. package/src/{_locales → locales}/de.ts +0 -1
  352. package/src/{_locales → locales}/en.ts +1 -1
  353. package/src/{_locales → locales}/es.ts +0 -1
  354. package/src/locales/et.ts +94 -0
  355. package/src/{_locales → locales}/fa.ts +0 -1
  356. package/src/{_locales → locales}/fi.ts +0 -1
  357. package/src/{_locales → locales}/fr.ts +0 -1
  358. package/src/{_locales → locales}/hu.ts +0 -1
  359. package/src/{_locales → locales}/id.ts +0 -1
  360. package/src/{_locales → locales}/it.ts +0 -1
  361. package/src/{_locales → locales}/ja.ts +0 -1
  362. package/src/locales/ko.ts +93 -0
  363. package/src/{_locales → locales}/nl.ts +0 -1
  364. package/src/{_locales → locales}/no.ts +1 -1
  365. package/src/{_locales → locales}/pl.ts +0 -1
  366. package/src/{_locales → locales}/pt-BR.ts +0 -1
  367. package/src/{_locales → locales}/pt.ts +0 -1
  368. package/src/{_locales → locales}/ro.ts +0 -1
  369. package/src/{_locales → locales}/ru.ts +0 -1
  370. package/src/{_locales → locales}/sk.ts +0 -1
  371. package/src/{_locales → locales}/sr-Cyrl-RS.ts +0 -1
  372. package/src/{_locales → locales}/sr-Latn-RS.ts +0 -1
  373. package/src/{_locales → locales}/sv.ts +0 -1
  374. package/src/{_locales → locales}/tr.ts +0 -1
  375. package/src/{_locales → locales}/uk.ts +0 -1
  376. package/src/{_locales → locales}/vi.ts +0 -1
  377. package/src/{_locales → locales}/zh-Hans.ts +7 -8
  378. package/src/{_locales → locales}/zh-Hant.ts +1 -2
  379. package/src/menus/MRT_ColumnActionMenu.tsx +8 -8
  380. package/src/menus/MRT_FilterOptionMenu.tsx +4 -3
  381. package/src/menus/MRT_RowActionMenu.tsx +5 -5
  382. package/src/menus/MRT_ShowHideColumnsMenu.tsx +4 -6
  383. package/src/menus/MRT_ShowHideColumnsMenuItems.tsx +4 -4
  384. package/src/menus/index.ts +5 -0
  385. package/src/modals/MRT_EditRowModal.tsx +115 -0
  386. package/src/modals/index.ts +1 -0
  387. package/src/sortingFns.ts +6 -2
  388. package/src/table/MRT_Table.tsx +40 -33
  389. package/src/table/MRT_TableContainer.tsx +23 -5
  390. package/src/table/MRT_TablePaper.tsx +13 -4
  391. package/src/table/index.ts +4 -0
  392. package/src/toolbar/MRT_BottomToolbar.tsx +2 -2
  393. package/src/toolbar/MRT_LinearProgressBar.tsx +2 -2
  394. package/src/toolbar/MRT_TablePagination.tsx +2 -2
  395. package/src/toolbar/MRT_ToolbarAlertBanner.tsx +2 -2
  396. package/src/toolbar/MRT_ToolbarDropZone.tsx +2 -2
  397. package/src/toolbar/MRT_ToolbarInternalButtons.tsx +6 -8
  398. package/src/toolbar/MRT_TopToolbar.tsx +2 -2
  399. package/src/toolbar/index.ts +7 -0
  400. package/src/types.ts +781 -765
  401. package/src/useMaterialReactTable.ts +11 -0
  402. package/dist/cjs/types/body/MRT_EditRowModal.d.ts +0 -8
  403. package/dist/cjs/types/buttons/MRT_FullScreenToggleButton.d.ts +0 -7
  404. package/dist/cjs/types/table/MRT_TableRoot.d.ts +0 -1
  405. package/dist/esm/types/body/MRT_EditRowModal.d.ts +0 -8
  406. package/dist/esm/types/buttons/MRT_FullScreenToggleButton.d.ts +0 -7
  407. package/dist/esm/types/table/MRT_TableRoot.d.ts +0 -1
  408. package/src/body/MRT_EditRowModal.tsx +0 -57
  409. package/src/index.tsx +0 -50
  410. package/src/table/MRT_TableRoot.tsx +0 -421
  411. /package/dist/cjs/types/{_locales → locales}/cs.d.ts +0 -0
  412. /package/dist/cjs/types/{_locales → locales}/da.d.ts +0 -0
  413. /package/dist/cjs/types/{_locales → locales}/de.d.ts +0 -0
  414. /package/dist/cjs/types/{_locales → locales}/en.d.ts +0 -0
  415. /package/dist/cjs/types/{_locales → locales}/es.d.ts +0 -0
  416. /package/dist/cjs/types/{_locales → locales}/fa.d.ts +0 -0
  417. /package/dist/cjs/types/{_locales → locales}/fi.d.ts +0 -0
  418. /package/dist/cjs/types/{_locales → locales}/fr.d.ts +0 -0
  419. /package/dist/cjs/types/{_locales → locales}/hu.d.ts +0 -0
  420. /package/dist/cjs/types/{_locales → locales}/id.d.ts +0 -0
  421. /package/dist/cjs/types/{_locales → locales}/it.d.ts +0 -0
  422. /package/dist/cjs/types/{_locales → locales}/ja.d.ts +0 -0
  423. /package/dist/cjs/types/{_locales → locales}/nl.d.ts +0 -0
  424. /package/dist/cjs/types/{_locales → locales}/no.d.ts +0 -0
  425. /package/dist/cjs/types/{_locales → locales}/pl.d.ts +0 -0
  426. /package/dist/cjs/types/{_locales → locales}/pt-BR.d.ts +0 -0
  427. /package/dist/cjs/types/{_locales → locales}/pt.d.ts +0 -0
  428. /package/dist/cjs/types/{_locales → locales}/ro.d.ts +0 -0
  429. /package/dist/cjs/types/{_locales → locales}/ru.d.ts +0 -0
  430. /package/dist/cjs/types/{_locales → locales}/sk.d.ts +0 -0
  431. /package/dist/cjs/types/{_locales → locales}/sr-Cyrl-RS.d.ts +0 -0
  432. /package/dist/cjs/types/{_locales → locales}/sr-Latn-RS.d.ts +0 -0
  433. /package/dist/cjs/types/{_locales → locales}/sv.d.ts +0 -0
  434. /package/dist/cjs/types/{_locales → locales}/tr.d.ts +0 -0
  435. /package/dist/cjs/types/{_locales → locales}/uk.d.ts +0 -0
  436. /package/dist/cjs/types/{_locales → locales}/vi.d.ts +0 -0
  437. /package/dist/cjs/types/{_locales → locales}/zh-Hans.d.ts +0 -0
  438. /package/dist/cjs/types/{_locales → locales}/zh-Hant.d.ts +0 -0
  439. /package/dist/esm/types/{_locales → locales}/cs.d.ts +0 -0
  440. /package/dist/esm/types/{_locales → locales}/da.d.ts +0 -0
  441. /package/dist/esm/types/{_locales → locales}/de.d.ts +0 -0
  442. /package/dist/esm/types/{_locales → locales}/en.d.ts +0 -0
  443. /package/dist/esm/types/{_locales → locales}/es.d.ts +0 -0
  444. /package/dist/esm/types/{_locales → locales}/fa.d.ts +0 -0
  445. /package/dist/esm/types/{_locales → locales}/fi.d.ts +0 -0
  446. /package/dist/esm/types/{_locales → locales}/fr.d.ts +0 -0
  447. /package/dist/esm/types/{_locales → locales}/hu.d.ts +0 -0
  448. /package/dist/esm/types/{_locales → locales}/id.d.ts +0 -0
  449. /package/dist/esm/types/{_locales → locales}/it.d.ts +0 -0
  450. /package/dist/esm/types/{_locales → locales}/ja.d.ts +0 -0
  451. /package/dist/esm/types/{_locales → locales}/nl.d.ts +0 -0
  452. /package/dist/esm/types/{_locales → locales}/no.d.ts +0 -0
  453. /package/dist/esm/types/{_locales → locales}/pl.d.ts +0 -0
  454. /package/dist/esm/types/{_locales → locales}/pt-BR.d.ts +0 -0
  455. /package/dist/esm/types/{_locales → locales}/pt.d.ts +0 -0
  456. /package/dist/esm/types/{_locales → locales}/ro.d.ts +0 -0
  457. /package/dist/esm/types/{_locales → locales}/ru.d.ts +0 -0
  458. /package/dist/esm/types/{_locales → locales}/sk.d.ts +0 -0
  459. /package/dist/esm/types/{_locales → locales}/sr-Cyrl-RS.d.ts +0 -0
  460. /package/dist/esm/types/{_locales → locales}/sr-Latn-RS.d.ts +0 -0
  461. /package/dist/esm/types/{_locales → locales}/sv.d.ts +0 -0
  462. /package/dist/esm/types/{_locales → locales}/tr.d.ts +0 -0
  463. /package/dist/esm/types/{_locales → locales}/uk.d.ts +0 -0
  464. /package/dist/esm/types/{_locales → locales}/vi.d.ts +0 -0
  465. /package/dist/esm/types/{_locales → locales}/zh-Hans.d.ts +0 -0
  466. /package/dist/esm/types/{_locales → locales}/zh-Hant.d.ts +0 -0
package/src/types.ts CHANGED
@@ -2,18 +2,20 @@ import {
2
2
  type Dispatch,
3
3
  type MutableRefObject,
4
4
  type ReactNode,
5
+ type RefObject,
5
6
  type SetStateAction,
6
7
  } from 'react';
7
8
  import { type AlertProps } from '@mui/material/Alert';
8
9
  import { type ButtonProps } from '@mui/material/Button';
9
10
  import { type CheckboxProps } from '@mui/material/Checkbox';
10
11
  import { type ChipProps } from '@mui/material/Chip';
12
+ import { type DialogProps } from '@mui/material/Dialog';
11
13
  import { type IconButtonProps } from '@mui/material/IconButton';
12
14
  import { type LinearProgressProps } from '@mui/material/LinearProgress';
13
15
  import { type PaperProps } from '@mui/material/Paper';
14
16
  import { type RadioProps } from '@mui/material/Radio';
15
17
  import { type SkeletonProps } from '@mui/material/Skeleton';
16
- import { type SliderProps } from '@mui/material';
18
+ import { type SliderProps } from '@mui/material/Slider';
17
19
  import { type TableBodyProps } from '@mui/material/TableBody';
18
20
  import { type TableCellProps } from '@mui/material/TableCell';
19
21
  import { type TableContainerProps } from '@mui/material/TableContainer';
@@ -63,14 +65,19 @@ import { type MRT_SortingFns } from './sortingFns';
63
65
  import { type MRT_Icons } from './icons';
64
66
 
65
67
  export type { MRT_Icons };
68
+ export type LiteralUnion<T extends U, U = string> =
69
+ | T
70
+ | (U & Record<never, never>);
66
71
 
67
- type Prettify<T> = { [K in keyof T]: T[K] } & {};
72
+ export type Prettify<T> = { [K in keyof T]: T[K] } & unknown;
68
73
 
69
- type LiteralUnion<T extends U, U = string> = T | (U & Record<never, never>);
74
+ export type Xor<A, B> =
75
+ | Prettify<A & { [k in keyof B]?: never }>
76
+ | Prettify<B & { [k in keyof A]?: never }>;
70
77
 
71
78
  export type MRT_DensityState = 'comfortable' | 'compact' | 'spacious';
72
79
 
73
- export type MRT_FilterFnsState = Record<string, MRT_FilterOption>;
80
+ export type MRT_ColumnFilterFnsState = Record<string, MRT_FilterOption>;
74
81
 
75
82
  export type {
76
83
  ColumnFiltersState as MRT_ColumnFiltersState,
@@ -100,6 +107,7 @@ export interface MRT_Localization {
100
107
  clearSearch: string;
101
108
  clearSort: string;
102
109
  clickToCopy: string;
110
+ create?: string;
103
111
  collapse: string;
104
112
  collapseAll: string;
105
113
  columnActions: string;
@@ -179,382 +187,378 @@ export interface MRT_Localization {
179
187
  ungroupByColumn: string;
180
188
  unpin: string;
181
189
  unpinAll: string;
182
- unsorted: string;
183
190
  }
184
191
 
185
- export interface MRT_RowModel<TData extends Record<string, any> = {}> {
192
+ export interface MRT_RowModel<TData extends Record<string, any>> {
186
193
  flatRows: MRT_Row<TData>[];
187
194
  rows: MRT_Row<TData>[];
188
195
  rowsById: { [key: string]: MRT_Row<TData> };
189
196
  }
190
197
 
191
- export type MRT_TableInstance<TData extends Record<string, any> = {}> =
192
- Prettify<
193
- Omit<
194
- Table<TData>,
195
- | 'getAllColumns'
196
- | 'getAllFlatColumns'
197
- | 'getAllLeafColumns'
198
- | 'getCenterLeafColumns'
199
- | 'getColumn'
200
- | 'getExpandedRowModel'
201
- | 'getFlatHeaders'
202
- | 'getLeftLeafColumns'
203
- | 'getPaginationRowModel'
204
- | 'getPreFilteredRowModel'
205
- | 'getPrePaginationRowModel'
206
- | 'getRightLeafColumns'
207
- | 'getRowModel'
208
- | 'getSelectedRowModel'
209
- | 'getState'
210
- | 'options'
211
- > & {
212
- getAllColumns: () => MRT_Column<TData>[];
213
- getAllFlatColumns: () => MRT_Column<TData>[];
214
- getAllLeafColumns: () => MRT_Column<TData>[];
215
- getCenterLeafColumns: () => MRT_Column<TData>[];
216
- getColumn: (columnId: string) => MRT_Column<TData>;
217
- getExpandedRowModel: () => MRT_RowModel<TData>;
218
- getFlatHeaders: () => MRT_Header<TData>[];
219
- getLeftLeafColumns: () => MRT_Column<TData>[];
220
- getPaginationRowModel: () => MRT_RowModel<TData>;
221
- getPreFilteredRowModel: () => MRT_RowModel<TData>;
222
- getPrePaginationRowModel: () => MRT_RowModel<TData>;
223
- getRightLeafColumns: () => MRT_Column<TData>[];
224
- getRowModel: () => MRT_RowModel<TData>;
225
- getSelectedRowModel: () => MRT_RowModel<TData>;
226
- getState: () => MRT_TableState<TData>;
227
- options: MaterialReactTableProps<TData> & {
228
- icons: MRT_Icons;
229
- localization: MRT_Localization;
230
- };
231
- refs: {
232
- bottomToolbarRef: MutableRefObject<HTMLDivElement>;
233
- editInputRefs: MutableRefObject<Record<string, HTMLInputElement>>;
234
- filterInputRefs: MutableRefObject<Record<string, HTMLInputElement>>;
235
- searchInputRef: MutableRefObject<HTMLInputElement>;
236
- tableContainerRef: MutableRefObject<HTMLDivElement>;
237
- tableHeadCellRefs: MutableRefObject<
238
- Record<string, HTMLTableCellElement>
239
- >;
240
- tablePaperRef: MutableRefObject<HTMLDivElement>;
241
- topToolbarRef: MutableRefObject<HTMLDivElement>;
242
- };
243
- setColumnFilterFns: Dispatch<SetStateAction<MRT_FilterFnsState>>;
244
- setDensity: Dispatch<SetStateAction<MRT_DensityState>>;
245
- setDraggingColumn: Dispatch<SetStateAction<MRT_Column<TData> | null>>;
246
- setDraggingRow: Dispatch<SetStateAction<MRT_Row<TData> | null>>;
247
- setEditingCell: Dispatch<SetStateAction<MRT_Cell<TData> | null>>;
248
- setEditingRow: Dispatch<SetStateAction<MRT_Row<TData> | null>>;
249
- setGlobalFilterFn: Dispatch<SetStateAction<MRT_FilterOption>>;
250
- setHoveredColumn: Dispatch<
251
- SetStateAction<MRT_Column<TData> | { id: string } | null>
252
- >;
253
- setHoveredRow: Dispatch<
254
- SetStateAction<MRT_Row<TData> | { id: string } | null>
255
- >;
256
- setIsFullScreen: Dispatch<SetStateAction<boolean>>;
257
- setShowAlertBanner: Dispatch<SetStateAction<boolean>>;
258
- setShowColumnFilters: Dispatch<SetStateAction<boolean>>;
259
- setShowGlobalFilter: Dispatch<SetStateAction<boolean>>;
260
- setShowToolbarDropZone: Dispatch<SetStateAction<boolean>>;
261
- }
262
- >;
263
-
264
- export type MRT_TableState<TData extends Record<string, any> = {}> = Prettify<
265
- TableState & {
266
- columnFilterFns: MRT_FilterFnsState;
267
- density: MRT_DensityState;
268
- draggingColumn: MRT_Column<TData> | null;
269
- draggingRow: MRT_Row<TData> | null;
270
- editingCell: MRT_Cell<TData> | null;
271
- editingRow: MRT_Row<TData> | null;
272
- globalFilterFn: MRT_FilterOption;
273
- hoveredColumn: MRT_Column<TData> | { id: string } | null;
274
- hoveredRow: MRT_Row<TData> | { id: string } | null;
275
- isFullScreen: boolean;
276
- isLoading: boolean;
277
- showAlertBanner: boolean;
278
- showColumnFilters: boolean;
279
- showGlobalFilter: boolean;
280
- showProgressBars: boolean;
281
- showSkeletons: boolean;
282
- showToolbarDropZone: boolean;
283
- }
284
- >;
285
-
286
- export type MRT_ColumnDef<TData extends Record<string, any> = {}> =
287
- // Prettify<
288
- Omit<
289
- ColumnDef<TData, unknown>,
290
- | 'accessorKey'
291
- | 'aggregatedCell'
292
- | 'aggregationFn'
293
- | 'cell'
294
- | 'columns'
295
- | 'filterFn'
296
- | 'footer'
297
- | 'header'
298
- | 'id'
299
- | 'sortingFn'
300
- > & {
301
- AggregatedCell?: (props: {
302
- cell: MRT_Cell<TData>;
303
- column: MRT_Column<TData>;
304
- row: MRT_Row<TData>;
305
- table: MRT_TableInstance<TData>;
306
- }) => ReactNode;
307
- Cell?: (props: {
308
- cell: MRT_Cell<TData>;
309
- renderedCellValue: number | string | ReactNode;
310
- column: MRT_Column<TData>;
311
- row: MRT_Row<TData>;
312
- table: MRT_TableInstance<TData>;
313
- }) => ReactNode;
314
- Edit?: (props: {
315
- cell: MRT_Cell<TData>;
316
- column: MRT_Column<TData>;
317
- row: MRT_Row<TData>;
318
- table: MRT_TableInstance<TData>;
319
- }) => ReactNode;
320
- Filter?: (props: {
321
- column: MRT_Column<TData>;
322
- header: MRT_Header<TData>;
323
- rangeFilterIndex?: number;
324
- table: MRT_TableInstance<TData>;
325
- }) => ReactNode;
326
- Footer?:
327
- | ReactNode
328
- | ((props: {
329
- column: MRT_Column<TData>;
330
- footer: MRT_Header<TData>;
331
- table: MRT_TableInstance<TData>;
332
- }) => ReactNode);
333
- GroupedCell?: (props: {
334
- cell: MRT_Cell<TData>;
335
- column: MRT_Column<TData>;
336
- row: MRT_Row<TData>;
337
- table: MRT_TableInstance<TData>;
338
- }) => ReactNode;
339
- Header?:
340
- | ReactNode
341
- | ((props: {
342
- column: MRT_Column<TData>;
343
- header: MRT_Header<TData>;
344
- table: MRT_TableInstance<TData>;
345
- }) => ReactNode);
346
- PlaceholderCell?: (props: {
347
- cell: MRT_Cell<TData>;
348
- column: MRT_Column<TData>;
349
- row: MRT_Row<TData>;
350
- table: MRT_TableInstance<TData>;
351
- }) => ReactNode;
352
- /**
353
- * Either an `accessorKey` or a combination of an `accessorFn` and `id` are required for a data column definition.
354
- * Specify a function here to point to the correct property in the data object.
355
- *
356
- * @example accessorFn: (row) => row.username
357
- */
358
- accessorFn?: (originalRow: TData) => any;
359
- /**
360
- * Either an `accessorKey` or a combination of an `accessorFn` and `id` are required for a data column definition.
361
- * Specify which key in the row this column should use to access the correct data.
362
- * Also supports Deep Key Dot Notation.
363
- *
364
- * @example accessorKey: 'username' //simple
365
- * @example accessorKey: 'name.firstName' //deep key dot notation
366
- */
367
- accessorKey?: (string & {}) | DeepKeys<TData>;
368
- aggregationFn?: MRT_AggregationFn<TData> | Array<MRT_AggregationFn<TData>>;
369
- /**
370
- * Specify what type of column this is. Either `data`, `display`, or `group`. Defaults to `data`.
371
- * Leave this blank if you are just creating a normal data column.
372
- *
373
- * @default 'data'
374
- *
375
- * @example columnDefType: 'display'
376
- */
377
- columnDefType?: 'data' | 'display' | 'group';
378
- columnFilterModeOptions?: Array<
379
- LiteralUnion<string & MRT_FilterOption>
380
- > | null;
381
- columns?: MRT_ColumnDef<TData>[];
382
- editSelectOptions?: (string | { text: string; value: any })[];
383
- editVariant?: 'text' | 'select';
384
- enableClickToCopy?: boolean;
385
- enableColumnActions?: boolean;
386
- enableColumnDragging?: boolean;
387
- enableColumnFilterModes?: boolean;
388
- enableColumnOrdering?: boolean;
389
- enableEditing?: boolean | ((row: MRT_Row<TData>) => boolean);
390
- enableFilterMatchHighlighting?: boolean;
391
- filterFn?: MRT_FilterFn<TData>;
392
- filterSelectOptions?: (string | { text: string; value: any })[];
393
- filterVariant?:
394
- | 'checkbox'
395
- | 'multi-select'
396
- | 'range'
397
- | 'range-slider'
398
- | 'select'
399
- | 'text';
400
- /**
401
- * footer must be a string. If you want custom JSX to render the footer, you can also specify a `Footer` option. (Capital F)
402
- */
403
- footer?: string;
404
- /**
405
- * header must be a string. If you want custom JSX to render the header, you can also specify a `Header` option. (Capital H)
406
- */
407
- header: string;
408
- /**
409
- * Either an `accessorKey` or a combination of an `accessorFn` and `id` are required for a data column definition.
410
- *
411
- * If you have also specified an `accessorFn`, MRT still needs to have a valid `id` to be able to identify the column uniquely.
412
- *
413
- * `id` defaults to the `accessorKey` or `header` if not specified.
414
- *
415
- * @default gets set to the same value as `accessorKey` by default
416
- */
417
- id?: LiteralUnion<string & keyof TData>;
418
- muiTableBodyCellCopyButtonProps?:
419
- | ButtonProps
420
- | ((props: {
421
- cell: MRT_Cell<TData>;
422
- column: MRT_Column<TData>;
423
- row: MRT_Row<TData>;
424
- table: MRT_TableInstance<TData>;
425
- }) => ButtonProps);
426
- muiTableBodyCellEditTextFieldProps?:
427
- | TextFieldProps
428
- | ((props: {
429
- cell: MRT_Cell<TData>;
430
- column: MRT_Column<TData>;
431
- row: MRT_Row<TData>;
432
- table: MRT_TableInstance<TData>;
433
- }) => TextFieldProps);
434
- muiTableBodyCellProps?:
435
- | TableCellProps
436
- | ((props: {
437
- cell: MRT_Cell<TData>;
438
- column: MRT_Column<TData>;
439
- row: MRT_Row<TData>;
440
- table: MRT_TableInstance<TData>;
441
- }) => TableCellProps);
442
- muiTableFooterCellProps?:
443
- | TableCellProps
444
- | ((props: {
445
- table: MRT_TableInstance<TData>;
446
- column: MRT_Column<TData>;
447
- }) => TableCellProps);
448
- muiTableHeadCellColumnActionsButtonProps?:
449
- | IconButtonProps
450
- | ((props: {
451
- table: MRT_TableInstance<TData>;
452
- column: MRT_Column<TData>;
453
- }) => IconButtonProps);
454
- muiTableHeadCellDragHandleProps?:
455
- | IconButtonProps
456
- | ((props: {
457
- table: MRT_TableInstance<TData>;
458
- column: MRT_Column<TData>;
459
- }) => IconButtonProps);
460
- muiTableHeadCellFilterCheckboxProps?:
461
- | CheckboxProps
462
- | ((props: {
463
- column: MRT_Column<TData>;
464
- table: MRT_TableInstance<TData>;
465
- }) => CheckboxProps);
466
- muiTableHeadCellFilterTextFieldProps?:
467
- | TextFieldProps
468
- | ((props: {
469
- table: MRT_TableInstance<TData>;
470
- column: MRT_Column<TData>;
471
- rangeFilterIndex?: number;
472
- }) => TextFieldProps);
473
- muiTableHeadCellFilterSliderProps?:
474
- | SliderProps
475
- | ((props: {
476
- table: MRT_TableInstance<TData>;
477
- column: MRT_Column<TData>;
478
- }) => TextFieldProps);
479
- muiTableHeadCellProps?:
480
- | TableCellProps
481
- | ((props: {
482
- table: MRT_TableInstance<TData>;
483
- column: MRT_Column<TData>;
484
- }) => TableCellProps);
485
- renderColumnActionsMenuItems?: (props: {
486
- closeMenu: () => void;
487
- column: MRT_Column<TData>;
488
- internalColumnMenuItems: ReactNode[];
489
- table: MRT_TableInstance<TData>;
490
- }) => ReactNode[];
491
- renderColumnFilterModeMenuItems?: (props: {
492
- column: MRT_Column<TData>;
493
- internalFilterOptions: MRT_InternalFilterOption[];
494
- onSelectFilterMode: (filterMode: MRT_FilterOption) => void;
495
- table: MRT_TableInstance<TData>;
496
- }) => ReactNode[];
497
- sortingFn?: MRT_SortingFn<TData>;
198
+ export type MRT_TableInstance<TData extends Record<string, any>> = Omit<
199
+ Table<TData>,
200
+ | 'getAllColumns'
201
+ | 'getAllFlatColumns'
202
+ | 'getAllLeafColumns'
203
+ | 'getCenterLeafColumns'
204
+ | 'getColumn'
205
+ | 'getExpandedRowModel'
206
+ | 'getFlatHeaders'
207
+ | 'getHeaderGroups'
208
+ | 'getLeftLeafColumns'
209
+ | 'getPaginationRowModel'
210
+ | 'getPreFilteredRowModel'
211
+ | 'getPrePaginationRowModel'
212
+ | 'getRightLeafColumns'
213
+ | 'getRowModel'
214
+ | 'getSelectedRowModel'
215
+ | 'getState'
216
+ | 'options'
217
+ > & {
218
+ getAllColumns: () => MRT_Column<TData>[];
219
+ getAllFlatColumns: () => MRT_Column<TData>[];
220
+ getAllLeafColumns: () => MRT_Column<TData>[];
221
+ getCenterLeafColumns: () => MRT_Column<TData>[];
222
+ getColumn: (columnId: string) => MRT_Column<TData>;
223
+ getExpandedRowModel: () => MRT_RowModel<TData>;
224
+ getFlatHeaders: () => MRT_Header<TData>[];
225
+ getHeaderGroups: () => MRT_HeaderGroup<TData>[];
226
+ getLeftLeafColumns: () => MRT_Column<TData>[];
227
+ getPaginationRowModel: () => MRT_RowModel<TData>;
228
+ getPreFilteredRowModel: () => MRT_RowModel<TData>;
229
+ getPrePaginationRowModel: () => MRT_RowModel<TData>;
230
+ getRightLeafColumns: () => MRT_Column<TData>[];
231
+ getRowModel: () => MRT_RowModel<TData>;
232
+ getSelectedRowModel: () => MRT_RowModel<TData>;
233
+ getState: () => MRT_TableState<TData>;
234
+ options: MRT_DefinedTableOptions<TData>;
235
+ refs: {
236
+ bottomToolbarRef: MutableRefObject<HTMLDivElement>;
237
+ editInputRefs: MutableRefObject<Record<string, HTMLInputElement>>;
238
+ filterInputRefs: MutableRefObject<Record<string, HTMLInputElement>>;
239
+ searchInputRef: MutableRefObject<HTMLInputElement>;
240
+ tableContainerRef: MutableRefObject<HTMLDivElement>;
241
+ tableHeadCellRefs: MutableRefObject<Record<string, HTMLTableCellElement>>;
242
+ tablePaperRef: MutableRefObject<HTMLDivElement>;
243
+ topToolbarRef: MutableRefObject<HTMLDivElement>;
498
244
  };
499
- // >
245
+ setCreatingRow: Dispatch<SetStateAction<MRT_Row<TData> | null | true>>;
246
+ setColumnFilterFns: Dispatch<SetStateAction<MRT_ColumnFilterFnsState>>;
247
+ setDensity: Dispatch<SetStateAction<MRT_DensityState>>;
248
+ setDraggingColumn: Dispatch<SetStateAction<MRT_Column<TData> | null>>;
249
+ setDraggingRow: Dispatch<SetStateAction<MRT_Row<TData> | null>>;
250
+ setEditingCell: Dispatch<SetStateAction<MRT_Cell<TData> | null>>;
251
+ setEditingRow: Dispatch<SetStateAction<MRT_Row<TData> | null>>;
252
+ setGlobalFilterFn: Dispatch<SetStateAction<MRT_FilterOption>>;
253
+ setHoveredColumn: Dispatch<
254
+ SetStateAction<MRT_Column<TData> | { id: string } | null>
255
+ >;
256
+ setHoveredRow: Dispatch<
257
+ SetStateAction<MRT_Row<TData> | { id: string } | null>
258
+ >;
259
+ setIsFullScreen: Dispatch<SetStateAction<boolean>>;
260
+ setShowAlertBanner: Dispatch<SetStateAction<boolean>>;
261
+ setShowColumnFilters: Dispatch<SetStateAction<boolean>>;
262
+ setShowGlobalFilter: Dispatch<SetStateAction<boolean>>;
263
+ setShowToolbarDropZone: Dispatch<SetStateAction<boolean>>;
264
+ };
500
265
 
501
- export type MRT_DefinedColumnDef<TData extends Record<string, any> = {}> =
502
- // Prettify<
503
- Omit<MRT_ColumnDef<TData>, 'id' | 'defaultDisplayColumn'> & {
504
- defaultDisplayColumn: Partial<MRT_ColumnDef<TData>>;
505
- id: string;
506
- _filterFn: MRT_FilterOption;
266
+ export type MRT_DefinedTableOptions<TData extends Record<string, any>> =
267
+ MRT_TableOptions<TData> & {
268
+ localization: MRT_Localization;
269
+ icons: MRT_Icons;
507
270
  };
508
- // >
509
271
 
510
- export type MRT_Column<TData extends Record<string, any> = {}> =
511
- // Prettify<
512
- Omit<
513
- Column<TData, unknown>,
514
- 'header' | 'footer' | 'columns' | 'columnDef' | 'filterFn'
515
- > & {
516
- columnDef: MRT_DefinedColumnDef<TData>;
517
- columns?: MRT_Column<TData>[];
518
- filterFn?: MRT_FilterFn<TData>;
519
- footer: string;
520
- header: string;
521
- };
522
- // >;
272
+ export type MRT_TableState<TData extends Record<string, any>> = TableState & {
273
+ columnFilterFns: MRT_ColumnFilterFnsState;
274
+ creatingRow: MRT_Row<TData> | null;
275
+ density: MRT_DensityState;
276
+ draggingColumn: MRT_Column<TData> | null;
277
+ draggingRow: MRT_Row<TData> | null;
278
+ editingCell: MRT_Cell<TData> | null;
279
+ editingRow: MRT_Row<TData> | null;
280
+ globalFilterFn: MRT_FilterOption;
281
+ hoveredColumn: MRT_Column<TData> | { id: string } | null;
282
+ hoveredRow: MRT_Row<TData> | { id: string } | null;
283
+ isFullScreen: boolean;
284
+ isLoading: boolean;
285
+ isSaving: boolean;
286
+ showAlertBanner: boolean;
287
+ showColumnFilters: boolean;
288
+ showGlobalFilter: boolean;
289
+ showProgressBars: boolean;
290
+ showSkeletons: boolean;
291
+ showToolbarDropZone: boolean;
292
+ };
523
293
 
524
- export type MRT_Header<TData extends Record<string, any> = {}> = Prettify<
525
- Omit<Header<TData, unknown>, 'column'> & {
294
+ export type MRT_ColumnDef<TData extends Record<string, any>> = Omit<
295
+ ColumnDef<TData, unknown>,
296
+ | 'accessorKey'
297
+ | 'aggregatedCell'
298
+ | 'aggregationFn'
299
+ | 'cell'
300
+ | 'columns'
301
+ | 'filterFn'
302
+ | 'footer'
303
+ | 'header'
304
+ | 'id'
305
+ | 'sortingFn'
306
+ > & {
307
+ AggregatedCell?: (props: {
308
+ cell: MRT_Cell<TData>;
526
309
  column: MRT_Column<TData>;
527
- }
528
- >;
310
+ row: MRT_Row<TData>;
311
+ table: MRT_TableInstance<TData>;
312
+ }) => ReactNode;
313
+ Cell?: (props: {
314
+ cell: MRT_Cell<TData>;
315
+ renderedCellValue: number | string | ReactNode;
316
+ column: MRT_Column<TData>;
317
+ row: MRT_Row<TData>;
318
+ rowRef?: RefObject<HTMLTableRowElement>;
319
+ table: MRT_TableInstance<TData>;
320
+ }) => ReactNode;
321
+ Edit?: (props: {
322
+ cell: MRT_Cell<TData>;
323
+ column: MRT_Column<TData>;
324
+ row: MRT_Row<TData>;
325
+ table: MRT_TableInstance<TData>;
326
+ }) => ReactNode;
327
+ Filter?: (props: {
328
+ column: MRT_Column<TData>;
329
+ header: MRT_Header<TData>;
330
+ rangeFilterIndex?: number;
331
+ table: MRT_TableInstance<TData>;
332
+ }) => ReactNode;
333
+ Footer?:
334
+ | ReactNode
335
+ | ((props: {
336
+ column: MRT_Column<TData>;
337
+ footer: MRT_Header<TData>;
338
+ table: MRT_TableInstance<TData>;
339
+ }) => ReactNode);
340
+ GroupedCell?: (props: {
341
+ cell: MRT_Cell<TData>;
342
+ column: MRT_Column<TData>;
343
+ row: MRT_Row<TData>;
344
+ table: MRT_TableInstance<TData>;
345
+ }) => ReactNode;
346
+ Header?:
347
+ | ReactNode
348
+ | ((props: {
349
+ column: MRT_Column<TData>;
350
+ header: MRT_Header<TData>;
351
+ table: MRT_TableInstance<TData>;
352
+ }) => ReactNode);
353
+ PlaceholderCell?: (props: {
354
+ cell: MRT_Cell<TData>;
355
+ column: MRT_Column<TData>;
356
+ row: MRT_Row<TData>;
357
+ table: MRT_TableInstance<TData>;
358
+ }) => ReactNode;
359
+ /**
360
+ * Either an `accessorKey` or a combination of an `accessorFn` and `id` are required for a data column definition.
361
+ * Specify a function here to point to the correct property in the data object.
362
+ *
363
+ * @example accessorFn: (row) => row.username
364
+ */
365
+ accessorFn?: (originalRow: TData) => any;
366
+ /**
367
+ * Either an `accessorKey` or a combination of an `accessorFn` and `id` are required for a data column definition.
368
+ * Specify which key in the row this column should use to access the correct data.
369
+ * Also supports Deep Key Dot Notation.
370
+ *
371
+ * @example accessorKey: 'username' //simple
372
+ * @example accessorKey: 'name.firstName' //deep key dot notation
373
+ */
374
+ accessorKey?: (string & {}) | DeepKeys<TData>;
375
+ aggregationFn?: MRT_AggregationFn<TData> | Array<MRT_AggregationFn<TData>>;
376
+ /**
377
+ * Specify what type of column this is. Either `data`, `display`, or `group`. Defaults to `data`.
378
+ * Leave this blank if you are just creating a normal data column.
379
+ *
380
+ * @default 'data'
381
+ *
382
+ * @example columnDefType: 'display'
383
+ */
384
+ columnDefType?: 'data' | 'display' | 'group';
385
+ columnFilterModeOptions?: Array<
386
+ LiteralUnion<string & MRT_FilterOption>
387
+ > | null;
388
+ columns?: MRT_ColumnDef<TData>[];
389
+ editSelectOptions?: (string | { text: string; value: any })[];
390
+ editVariant?: 'text' | 'select';
391
+ enableClickToCopy?: boolean;
392
+ enableColumnActions?: boolean;
393
+ enableColumnDragging?: boolean;
394
+ enableColumnFilterModes?: boolean;
395
+ enableColumnOrdering?: boolean;
396
+ enableEditing?: boolean | ((row: MRT_Row<TData>) => boolean);
397
+ enableFilterMatchHighlighting?: boolean;
398
+ filterFn?: MRT_FilterFn<TData>;
399
+ filterSelectOptions?: (string | { text: string; value: any })[];
400
+ filterVariant?:
401
+ | 'checkbox'
402
+ | 'multi-select'
403
+ | 'range'
404
+ | 'range-slider'
405
+ | 'select'
406
+ | 'text';
407
+ /**
408
+ * footer must be a string. If you want custom JSX to render the footer, you can also specify a `Footer` option. (Capital F)
409
+ */
410
+ footer?: string;
411
+ /**
412
+ * header must be a string. If you want custom JSX to render the header, you can also specify a `Header` option. (Capital H)
413
+ */
414
+ header: string;
415
+ /**
416
+ * Either an `accessorKey` or a combination of an `accessorFn` and `id` are required for a data column definition.
417
+ *
418
+ * If you have also specified an `accessorFn`, MRT still needs to have a valid `id` to be able to identify the column uniquely.
419
+ *
420
+ * `id` defaults to the `accessorKey` or `header` if not specified.
421
+ *
422
+ * @default gets set to the same value as `accessorKey` by default
423
+ */
424
+ id?: LiteralUnion<string & keyof TData>;
425
+ muiCopyButtonProps?:
426
+ | ButtonProps
427
+ | ((props: {
428
+ cell: MRT_Cell<TData>;
429
+ column: MRT_Column<TData>;
430
+ row: MRT_Row<TData>;
431
+ table: MRT_TableInstance<TData>;
432
+ }) => ButtonProps);
433
+ muiEditTextFieldProps?:
434
+ | TextFieldProps
435
+ | ((props: {
436
+ cell: MRT_Cell<TData>;
437
+ column: MRT_Column<TData>;
438
+ row: MRT_Row<TData>;
439
+ table: MRT_TableInstance<TData>;
440
+ }) => TextFieldProps);
441
+ muiTableBodyCellProps?:
442
+ | TableCellProps
443
+ | ((props: {
444
+ cell: MRT_Cell<TData>;
445
+ column: MRT_Column<TData>;
446
+ row: MRT_Row<TData>;
447
+ table: MRT_TableInstance<TData>;
448
+ }) => TableCellProps);
449
+ muiTableFooterCellProps?:
450
+ | TableCellProps
451
+ | ((props: {
452
+ table: MRT_TableInstance<TData>;
453
+ column: MRT_Column<TData>;
454
+ }) => TableCellProps);
455
+ muiColumnActionsButtonProps?:
456
+ | IconButtonProps
457
+ | ((props: {
458
+ table: MRT_TableInstance<TData>;
459
+ column: MRT_Column<TData>;
460
+ }) => IconButtonProps);
461
+ muiColumnDragHandleProps?:
462
+ | IconButtonProps
463
+ | ((props: {
464
+ table: MRT_TableInstance<TData>;
465
+ column: MRT_Column<TData>;
466
+ }) => IconButtonProps);
467
+ muiFilterCheckboxProps?:
468
+ | CheckboxProps
469
+ | ((props: {
470
+ column: MRT_Column<TData>;
471
+ table: MRT_TableInstance<TData>;
472
+ }) => CheckboxProps);
473
+ muiFilterTextFieldProps?:
474
+ | TextFieldProps
475
+ | ((props: {
476
+ table: MRT_TableInstance<TData>;
477
+ column: MRT_Column<TData>;
478
+ rangeFilterIndex?: number;
479
+ }) => TextFieldProps);
480
+ muiFilterSliderProps?:
481
+ | SliderProps
482
+ | ((props: {
483
+ table: MRT_TableInstance<TData>;
484
+ column: MRT_Column<TData>;
485
+ }) => TextFieldProps);
486
+ muiTableHeadCellProps?:
487
+ | TableCellProps
488
+ | ((props: {
489
+ table: MRT_TableInstance<TData>;
490
+ column: MRT_Column<TData>;
491
+ }) => TableCellProps);
492
+ renderColumnActionsMenuItems?: (props: {
493
+ closeMenu: () => void;
494
+ column: MRT_Column<TData>;
495
+ internalColumnMenuItems: ReactNode[];
496
+ table: MRT_TableInstance<TData>;
497
+ }) => ReactNode[];
498
+ renderColumnFilterModeMenuItems?: (props: {
499
+ column: MRT_Column<TData>;
500
+ internalFilterOptions: MRT_InternalFilterOption[];
501
+ onSelectFilterMode: (filterMode: MRT_FilterOption) => void;
502
+ table: MRT_TableInstance<TData>;
503
+ }) => ReactNode[];
504
+ sortingFn?: MRT_SortingFn<TData>;
505
+ };
529
506
 
530
- export type MRT_HeaderGroup<TData extends Record<string, any> = {}> = Prettify<
531
- Omit<HeaderGroup<TData>, 'headers'> & {
532
- headers: MRT_Header<TData>[];
533
- }
534
- >;
507
+ export type MRT_DefinedColumnDef<TData extends Record<string, any>> = Omit<
508
+ MRT_ColumnDef<TData>,
509
+ 'id' | 'defaultDisplayColumn'
510
+ > & {
511
+ defaultDisplayColumn: Partial<MRT_ColumnDef<TData>>;
512
+ id: string;
513
+ _filterFn: MRT_FilterOption;
514
+ };
535
515
 
536
- export type MRT_Row<TData extends Record<string, any> = {}> = Prettify<
537
- Omit<
538
- Row<TData>,
539
- 'getVisibleCells' | 'getAllCells' | 'subRows' | '_valuesCache'
540
- > & {
541
- getAllCells: () => MRT_Cell<TData>[];
542
- getVisibleCells: () => MRT_Cell<TData>[];
543
- subRows?: MRT_Row<TData>[];
544
- _valuesCache: Record<LiteralUnion<string & DeepKeys<TData>>, any>;
545
- }
546
- >;
516
+ export type MRT_Column<TData extends Record<string, any>> = Omit<
517
+ Column<TData, unknown>,
518
+ 'header' | 'footer' | 'columns' | 'columnDef' | 'filterFn'
519
+ > & {
520
+ columnDef: MRT_DefinedColumnDef<TData>;
521
+ columns?: MRT_Column<TData>[];
522
+ filterFn?: MRT_FilterFn<TData>;
523
+ footer: string;
524
+ header: string;
525
+ };
547
526
 
548
- export type MRT_Cell<TData extends Record<string, any> = {}> = Prettify<
549
- Omit<Cell<TData, unknown>, 'column' | 'row'> & {
550
- column: MRT_Column<TData>;
551
- row: MRT_Row<TData>;
552
- }
553
- >;
527
+ export type MRT_Header<TData extends Record<string, any>> = Omit<
528
+ Header<TData, unknown>,
529
+ 'column'
530
+ > & {
531
+ column: MRT_Column<TData>;
532
+ };
533
+
534
+ export type MRT_HeaderGroup<TData extends Record<string, any>> = Omit<
535
+ HeaderGroup<TData>,
536
+ 'headers'
537
+ > & {
538
+ headers: MRT_Header<TData>[];
539
+ };
540
+
541
+ export type MRT_Row<TData extends Record<string, any>> = Omit<
542
+ Row<TData>,
543
+ 'getVisibleCells' | 'getAllCells' | 'subRows' | '_valuesCache'
544
+ > & {
545
+ getAllCells: () => MRT_Cell<TData>[];
546
+ getVisibleCells: () => MRT_Cell<TData>[];
547
+ subRows?: MRT_Row<TData>[];
548
+ _valuesCache: Record<LiteralUnion<string & DeepKeys<TData>>, any>;
549
+ };
550
+
551
+ export type MRT_Cell<TData extends Record<string, any>> = Omit<
552
+ Cell<TData, unknown>,
553
+ 'column' | 'row'
554
+ > & {
555
+ column: MRT_Column<TData>;
556
+ row: MRT_Row<TData>;
557
+ };
554
558
 
555
559
  export type MRT_AggregationOption = string & keyof typeof MRT_AggregationFns;
556
560
 
557
- export type MRT_AggregationFn<TData extends Record<string, any> = {}> =
561
+ export type MRT_AggregationFn<TData extends Record<string, any>> =
558
562
  | AggregationFn<TData>
559
563
  | MRT_AggregationOption;
560
564
 
@@ -562,7 +566,7 @@ export type MRT_SortingOption = LiteralUnion<
562
566
  string & keyof typeof MRT_SortingFns
563
567
  >;
564
568
 
565
- export type MRT_SortingFn<TData extends Record<string, any> = {}> =
569
+ export type MRT_SortingFn<TData extends Record<string, any>> =
566
570
  | SortingFn<TData>
567
571
  | MRT_SortingOption;
568
572
 
@@ -570,7 +574,7 @@ export type MRT_FilterOption = LiteralUnion<
570
574
  string & keyof typeof MRT_FilterFns
571
575
  >;
572
576
 
573
- export type MRT_FilterFn<TData extends Record<string, any> = {}> =
577
+ export type MRT_FilterFn<TData extends Record<string, any>> =
574
578
  | FilterFn<TData>
575
579
  | MRT_FilterOption;
576
580
 
@@ -588,11 +592,6 @@ export type MRT_DisplayColumnIds =
588
592
  | 'mrt-row-numbers'
589
593
  | 'mrt-row-select';
590
594
 
591
- export type MRT_CreateTableFeature<
592
- TData extends Record<string, any> = {},
593
- TFeature = any,
594
- > = (table: MRT_TableInstance<TData>) => TFeature;
595
-
596
595
  /**
597
596
  * `columns` and `data` props are the only required props, but there are over 170 other optional props.
598
597
  *
@@ -602,400 +601,417 @@ export type MRT_CreateTableFeature<
602
601
  * See the full props list on the official docs site:
603
602
  * @link https://www.material-react-table.com/docs/api/props
604
603
  */
605
- export type MaterialReactTableProps<TData extends Record<string, any> = {}> =
606
- Omit<
607
- Partial<TableOptions<TData>>,
608
- | 'columns'
609
- | 'data'
610
- | 'defaultColumn'
611
- | 'enableRowSelection'
612
- | 'expandRowsFn'
613
- | 'getRowId'
614
- | 'globalFilterFn'
615
- | 'initialState'
616
- | 'onStateChange'
617
- | 'state'
618
- > & {
619
- columnFilterModeOptions?: Array<
620
- LiteralUnion<string & MRT_FilterOption>
621
- > | null;
622
- /**
623
- * The columns to display in the table. `accessorKey`s or `accessorFn`s must match keys in the `data` prop.
624
- *
625
- * See more info on creating columns on the official docs site:
626
- * @link https://www.material-react-table.com/docs/guides/data-columns
627
- * @link https://www.material-react-table.com/docs/guides/display-columns
628
- *
629
- * See all Columns Options on the official docs site:
630
- * @link https://www.material-react-table.com/docs/api/column-options
631
- */
632
- columns: MRT_ColumnDef<TData>[];
633
- /**
634
- * Pass your data as an array of objects. Objects can theoretically be any shape, but it's best to keep them consistent.
635
- *
636
- * See the usage guide for more info on creating columns and data:
637
- * @link https://www.material-react-table.com/docs/getting-started/usage
638
- */
639
- data: TData[];
640
- /**
641
- * Instead of specifying a bunch of the same options for each column, you can just change an option in the `defaultColumn` prop to change a default option for all columns.
642
- */
643
- defaultColumn?: Partial<MRT_ColumnDef<TData>>;
644
- /**
645
- * Change the default options for display columns.
646
- */
647
- defaultDisplayColumn?: Partial<MRT_ColumnDef<TData>>;
648
- displayColumnDefOptions?: Partial<{
649
- [key in MRT_DisplayColumnIds]: Partial<MRT_ColumnDef>;
650
- }>;
651
- editingMode?: 'table' | 'modal' | 'row' | 'cell';
652
- enableBottomToolbar?: boolean;
653
- enableClickToCopy?: boolean;
654
- enableColumnActions?: boolean;
655
- enableColumnDragging?: boolean;
656
- enableColumnFilterModes?: boolean;
657
- enableColumnOrdering?: boolean;
658
- enableColumnVirtualization?: boolean;
659
- enableDensityToggle?: boolean;
660
- enableEditing?: boolean | ((row: MRT_Row<TData>) => boolean);
661
- enableExpandAll?: boolean;
662
- enableFacetedValues?: boolean;
663
- enableFilterMatchHighlighting?: boolean;
664
- enableFullScreenToggle?: boolean;
665
- enableGlobalFilterModes?: boolean;
666
- enableGlobalFilterRankedResults?: boolean;
667
- enablePagination?: boolean;
668
- enableRowActions?: boolean;
669
- enableRowDragging?: boolean;
670
- enableRowNumbers?: boolean;
671
- enableRowOrdering?: boolean;
672
- enableRowSelection?: boolean | ((row: MRT_Row<TData>) => boolean);
673
- enableRowVirtualization?: boolean;
674
- enableSelectAll?: boolean;
675
- enableStickyFooter?: boolean;
676
- enableStickyHeader?: boolean;
677
- enableTableFooter?: boolean;
678
- enableTableHead?: boolean;
679
- enableToolbarInternalActions?: boolean;
680
- enableTopToolbar?: boolean;
681
- expandRowsFn?: (dataRow: TData) => TData[];
682
- getRowId?: (
683
- originalRow: TData,
684
- index: number,
685
- parentRow: MRT_Row<TData>,
686
- ) => string;
687
- globalFilterFn?: MRT_FilterOption;
688
- globalFilterModeOptions?: MRT_FilterOption[] | null;
689
- icons?: Partial<MRT_Icons>;
690
- initialState?: Partial<MRT_TableState<TData>>;
691
- /**
692
- * Changes which kind of CSS layout is used to render the table. `semantic` uses default semantic HTML elements, while `grid` adds CSS grid and flexbox styles
693
- */
694
- layoutMode?: 'semantic' | 'grid';
695
- /**
696
- * Pass in either a locale imported from `material-react-table/locales/*` or a custom locale object.
697
- *
698
- * See the localization (i18n) guide for more info:
699
- * @link https://www.material-react-table.com/docs/guides/localization
700
- */
701
- localization?: Partial<MRT_Localization>;
702
- /**
703
- * Memoize cells, rows, or the entire table body to potentially improve render performance.
704
- *
705
- * @warning This will break some dynamic rendering features. See the memoization guide for more info:
706
- * @link https://www.material-react-table.com/docs/guides/memoize-components
707
- */
708
- memoMode?: 'cells' | 'rows' | 'table-body';
709
- muiBottomToolbarProps?:
710
- | ToolbarProps
711
- | ((props: { table: MRT_TableInstance<TData> }) => ToolbarProps);
712
- muiExpandAllButtonProps?:
713
- | IconButtonProps
714
- | ((props: { table: MRT_TableInstance<TData> }) => IconButtonProps);
715
- muiExpandButtonProps?:
716
- | IconButtonProps
717
- | ((props: {
718
- table: MRT_TableInstance<TData>;
719
- row: MRT_Row<TData>;
720
- }) => IconButtonProps);
721
- muiLinearProgressProps?:
722
- | LinearProgressProps
723
- | ((props: {
724
- isTopToolbar: boolean;
725
- table: MRT_TableInstance<TData>;
726
- }) => LinearProgressProps);
727
- muiSearchTextFieldProps?:
728
- | TextFieldProps
729
- | ((props: { table: MRT_TableInstance<TData> }) => TextFieldProps);
730
- muiSelectAllCheckboxProps?:
731
- | CheckboxProps
732
- | ((props: { table: MRT_TableInstance<TData> }) => CheckboxProps);
733
- muiSelectCheckboxProps?:
734
- | (CheckboxProps | RadioProps)
735
- | ((props: {
736
- table: MRT_TableInstance<TData>;
737
- row: MRT_Row<TData>;
738
- }) => CheckboxProps | RadioProps);
739
- muiTableBodyCellCopyButtonProps?:
740
- | ButtonProps
741
- | ((props: {
742
- cell: MRT_Cell<TData>;
743
- column: MRT_Column<TData>;
744
- row: MRT_Row<TData>;
745
- table: MRT_TableInstance<TData>;
746
- }) => ButtonProps);
747
- muiTableBodyCellEditTextFieldProps?:
748
- | TextFieldProps
749
- | ((props: {
750
- cell: MRT_Cell<TData>;
751
- column: MRT_Column<TData>;
752
- row: MRT_Row<TData>;
753
- table: MRT_TableInstance<TData>;
754
- }) => TextFieldProps);
755
- muiTableBodyCellProps?:
756
- | TableCellProps
757
- | ((props: {
758
- cell: MRT_Cell<TData>;
759
- column: MRT_Column<TData>;
760
- row: MRT_Row<TData>;
761
- table: MRT_TableInstance<TData>;
762
- }) => TableCellProps);
763
- muiTableBodyCellSkeletonProps?:
764
- | SkeletonProps
765
- | ((props: {
766
- cell: MRT_Cell<TData>;
767
- column: MRT_Column<TData>;
768
- row: MRT_Row<TData>;
769
- table: MRT_TableInstance<TData>;
770
- }) => SkeletonProps);
771
- muiTableBodyProps?:
772
- | TableBodyProps
773
- | ((props: { table: MRT_TableInstance<TData> }) => TableBodyProps);
774
- muiTableBodyRowDragHandleProps?:
775
- | IconButtonProps
776
- | ((props: {
777
- table: MRT_TableInstance<TData>;
778
- row: MRT_Row<TData>;
779
- }) => IconButtonProps);
780
- muiTableBodyRowProps?:
781
- | TableRowProps
782
- | ((props: {
783
- isDetailPanel?: boolean;
784
- row: MRT_Row<TData>;
785
- staticRowIndex: number;
786
- table: MRT_TableInstance<TData>;
787
- }) => TableRowProps);
788
- muiTableContainerProps?:
789
- | TableContainerProps
790
- | ((props: { table: MRT_TableInstance<TData> }) => TableContainerProps);
791
- muiTableDetailPanelProps?:
792
- | TableCellProps
793
- | ((props: {
794
- table: MRT_TableInstance<TData>;
795
- row: MRT_Row<TData>;
796
- }) => TableCellProps);
797
- muiTableFooterCellProps?:
798
- | TableCellProps
799
- | ((props: {
800
- table: MRT_TableInstance<TData>;
801
- column: MRT_Column<TData>;
802
- }) => TableCellProps);
803
- muiTableFooterProps?:
804
- | TableFooterProps
805
- | ((props: { table: MRT_TableInstance<TData> }) => TableFooterProps);
806
- muiTableFooterRowProps?:
807
- | TableRowProps
808
- | ((props: {
809
- table: MRT_TableInstance<TData>;
810
- footerGroup: MRT_HeaderGroup<TData>;
811
- }) => TableRowProps);
812
- muiTableHeadCellColumnActionsButtonProps?:
813
- | IconButtonProps
814
- | ((props: {
815
- table: MRT_TableInstance<TData>;
816
- column: MRT_Column<TData>;
817
- }) => IconButtonProps);
818
- muiTableHeadCellDragHandleProps?:
819
- | IconButtonProps
820
- | ((props: {
821
- table: MRT_TableInstance<TData>;
822
- column: MRT_Column<TData>;
823
- }) => IconButtonProps);
824
- muiTableHeadCellFilterCheckboxProps?:
825
- | CheckboxProps
826
- | ((props: {
827
- column: MRT_Column<TData>;
828
- table: MRT_TableInstance<TData>;
829
- }) => CheckboxProps);
830
- muiTableHeadCellFilterTextFieldProps?:
831
- | TextFieldProps
832
- | ((props: {
833
- table: MRT_TableInstance<TData>;
834
- column: MRT_Column<TData>;
835
- rangeFilterIndex?: number;
836
- }) => TextFieldProps);
837
- muiTableHeadCellFilterSliderProps?:
838
- | SliderProps
839
- | ((props: {
840
- table: MRT_TableInstance<TData>;
841
- column: MRT_Column<TData>;
842
- }) => TextFieldProps);
843
- muiTableHeadCellProps?:
844
- | TableCellProps
845
- | ((props: {
846
- table: MRT_TableInstance<TData>;
847
- column: MRT_Column<TData>;
848
- }) => TableCellProps);
849
- muiTableHeadProps?:
850
- | TableHeadProps
851
- | ((props: { table: MRT_TableInstance<TData> }) => TableHeadProps);
852
- muiTableHeadRowProps?:
853
- | TableRowProps
854
- | ((props: {
855
- table: MRT_TableInstance<TData>;
856
- headerGroup: MRT_HeaderGroup<TData>;
857
- }) => TableRowProps);
858
- muiTablePaginationProps?:
859
- | Partial<Omit<TablePaginationProps, 'rowsPerPage'>>
860
- | ((props: {
861
- table: MRT_TableInstance<TData>;
862
- }) => Partial<Omit<TablePaginationProps, 'rowsPerPage'>>);
863
- muiTablePaperProps?:
864
- | PaperProps
865
- | ((props: { table: MRT_TableInstance<TData> }) => PaperProps);
866
- muiTableProps?:
867
- | TableProps
868
- | ((props: { table: MRT_TableInstance<TData> }) => TableProps);
869
- muiToolbarAlertBannerChipProps?:
870
- | ChipProps
871
- | ((props: { table: MRT_TableInstance<TData> }) => ChipProps);
872
- muiToolbarAlertBannerProps?:
873
- | AlertProps
874
- | ((props: { table: MRT_TableInstance<TData> }) => AlertProps);
875
- muiTopToolbarProps?:
876
- | ToolbarProps
877
- | ((props: { table: MRT_TableInstance<TData> }) => ToolbarProps);
878
- onDensityChange?: OnChangeFn<MRT_DensityState>;
879
- onDraggingColumnChange?: OnChangeFn<MRT_Column<TData> | null>;
880
- onDraggingRowChange?: OnChangeFn<MRT_Row<TData> | null>;
881
- onEditingCellChange?: OnChangeFn<MRT_Cell<TData> | null>;
882
- onEditingRowCancel?: (props: {
883
- row: MRT_Row<TData>;
884
- table: MRT_TableInstance<TData>;
885
- }) => void;
886
- onEditingRowSave?: (props: {
887
- exitEditingMode: () => void;
888
- row: MRT_Row<TData>;
889
- table: MRT_TableInstance<TData>;
890
- values: Record<LiteralUnion<string & DeepKeys<TData>>, any>;
891
- }) => Promise<void> | void;
892
- onEditingRowChange?: OnChangeFn<MRT_Row<TData> | null>;
893
- onColumnFilterFnsChange?: OnChangeFn<{ [key: string]: MRT_FilterOption }>;
894
- onGlobalFilterFnChange?: OnChangeFn<MRT_FilterOption>;
895
- onHoveredColumnChange?: OnChangeFn<MRT_Column<TData> | null>;
896
- onHoveredRowChange?: OnChangeFn<MRT_Row<TData> | null>;
897
- onIsFullScreenChange?: OnChangeFn<boolean>;
898
- onShowAlertBannerChange?: OnChangeFn<boolean>;
899
- onShowColumnFiltersChange?: OnChangeFn<boolean>;
900
- onShowGlobalFilterChange?: OnChangeFn<boolean>;
901
- onShowToolbarDropZoneChange?: OnChangeFn<boolean>;
902
- positionActionsColumn?: 'first' | 'last';
903
- positionExpandColumn?: 'first' | 'last';
904
- positionGlobalFilter?: 'left' | 'right' | 'none';
905
- positionPagination?: 'bottom' | 'top' | 'both' | 'none';
906
- positionToolbarAlertBanner?: 'bottom' | 'top' | 'none';
907
- positionToolbarDropZone?: 'bottom' | 'top' | 'none' | 'both';
908
- renderBottomToolbar?:
909
- | ReactNode
910
- | ((props: { table: MRT_TableInstance<TData> }) => ReactNode);
911
- renderBottomToolbarCustomActions?: (props: {
912
- table: MRT_TableInstance<TData>;
913
- }) => ReactNode;
914
- renderColumnActionsMenuItems?: (props: {
915
- column: MRT_Column<TData>;
916
- closeMenu: () => void;
917
- internalColumnMenuItems: ReactNode[];
918
- table: MRT_TableInstance<TData>;
919
- }) => ReactNode[];
920
- renderColumnFilterModeMenuItems?: (props: {
921
- column: MRT_Column<TData>;
922
- internalFilterOptions: MRT_InternalFilterOption[];
923
- onSelectFilterMode: (filterMode: MRT_FilterOption) => void;
924
- table: MRT_TableInstance<TData>;
925
- }) => ReactNode[];
926
- renderDetailPanel?: (props: {
927
- row: MRT_Row<TData>;
928
- table: MRT_TableInstance<TData>;
929
- }) => ReactNode;
930
- renderGlobalFilterModeMenuItems?: (props: {
931
- internalFilterOptions: MRT_InternalFilterOption[];
932
- onSelectFilterMode: (filterMode: MRT_FilterOption) => void;
933
- table: MRT_TableInstance<TData>;
934
- }) => ReactNode[];
935
- renderEmptyRowsFallback?: (props: {
936
- table: MRT_TableInstance<TData>;
937
- }) => ReactNode;
938
- renderRowActionMenuItems?: (props: {
939
- closeMenu: () => void;
940
- row: MRT_Row<TData>;
941
- table: MRT_TableInstance<TData>;
942
- }) => ReactNode[];
943
- renderRowActions?: (props: {
944
- cell: MRT_Cell<TData>;
945
- row: MRT_Row<TData>;
946
- table: MRT_TableInstance<TData>;
947
- }) => ReactNode;
948
- renderToolbarInternalActions?: (props: {
949
- table: MRT_TableInstance<TData>;
950
- }) => ReactNode;
951
- renderTopToolbar?:
952
- | ReactNode
953
- | ((props: { table: MRT_TableInstance<TData> }) => ReactNode);
954
- renderTopToolbarCustomActions?: (props: {
955
- table: MRT_TableInstance<TData>;
956
- }) => ReactNode;
957
- rowCount?: number;
958
- rowNumberMode?: 'original' | 'static';
959
- selectAllMode?: 'all' | 'page';
960
- /**
961
- * Manage state externally any way you want, then pass it back into MRT.
962
- */
963
- state?: Partial<MRT_TableState<TData>>;
964
- /**
965
- * Sequence of features important any dependent feature must be defined first
966
- */
967
- tableFeatures?: Array<MRT_CreateTableFeature<TData>>;
968
- /**
969
- * Get access to the table instance via a ref to read state or call built-in methods
970
- */
971
- tableInstanceRef?: MutableRefObject<MRT_TableInstance<TData> | null>;
972
- /**
973
- * @deprecated Use `rowVirtualizerInstanceRef` instead
974
- */
975
- virtualizerInstanceRef?: any;
976
- /**
977
- * @deprecated Use `rowVirtualizerProps` instead
978
- */
979
- virtualizerProps?: any;
980
- } & {
981
- columnVirtualizerInstanceRef?: MutableRefObject<Virtualizer<
982
- HTMLDivElement,
983
- HTMLTableCellElement
984
- > | null>;
985
- columnVirtualizerProps?:
986
- | Partial<VirtualizerOptions<HTMLDivElement, HTMLTableCellElement>>
987
- | ((props: {
988
- table: MRT_TableInstance<TData>;
989
- }) => Partial<
990
- VirtualizerOptions<HTMLDivElement, HTMLTableCellElement>
991
- >);
992
- rowVirtualizerInstanceRef?: MutableRefObject<Virtualizer<
993
- HTMLDivElement,
994
- HTMLTableRowElement
995
- > | null>;
996
- rowVirtualizerProps?:
997
- | Partial<VirtualizerOptions<HTMLDivElement, HTMLTableRowElement>>
998
- | ((props: {
999
- table: MRT_TableInstance<TData>;
1000
- }) => Partial<VirtualizerOptions<HTMLDivElement, HTMLTableRowElement>>);
1001
- };
604
+ export type MRT_TableOptions<TData extends Record<string, any>> = Omit<
605
+ Partial<TableOptions<TData>>,
606
+ | 'columns'
607
+ | 'data'
608
+ | 'defaultColumn'
609
+ | 'enableRowSelection'
610
+ | 'expandRowsFn'
611
+ | 'getRowId'
612
+ | 'globalFilterFn'
613
+ | 'initialState'
614
+ | 'onStateChange'
615
+ | 'state'
616
+ > & {
617
+ columnFilterModeOptions?: Array<
618
+ LiteralUnion<string & MRT_FilterOption>
619
+ > | null;
620
+ /**
621
+ * The columns to display in the table. `accessorKey`s or `accessorFn`s must match keys in the `data` prop.
622
+ *
623
+ * See more info on creating columns on the official docs site:
624
+ * @link https://www.material-react-table.com/docs/guides/data-columns
625
+ * @link https://www.material-react-table.com/docs/guides/display-columns
626
+ *
627
+ * See all Columns Options on the official docs site:
628
+ * @link https://www.material-react-table.com/docs/api/column-options
629
+ */
630
+ columns: MRT_ColumnDef<TData>[];
631
+ columnVirtualizerInstanceRef?: MutableRefObject<Virtualizer<
632
+ HTMLDivElement,
633
+ HTMLTableCellElement
634
+ > | null>;
635
+ columnVirtualizerOptions?:
636
+ | Partial<VirtualizerOptions<HTMLDivElement, HTMLTableCellElement>>
637
+ | ((props: {
638
+ table: MRT_TableInstance<TData>;
639
+ }) => Partial<VirtualizerOptions<HTMLDivElement, HTMLTableCellElement>>);
640
+ /**
641
+ * Pass your data as an array of objects. Objects can theoretically be any shape, but it's best to keep them consistent.
642
+ *
643
+ * See the usage guide for more info on creating columns and data:
644
+ * @link https://www.material-react-table.com/docs/getting-started/usage
645
+ */
646
+ data: TData[];
647
+ /**
648
+ * Instead of specifying a bunch of the same options for each column, you can just change an option in the `defaultColumn` prop to change a default option for all columns.
649
+ */
650
+ defaultColumn?: Partial<MRT_ColumnDef<TData>>;
651
+ /**
652
+ * Change the default options for display columns.
653
+ */
654
+ defaultDisplayColumn?: Partial<MRT_ColumnDef<TData>>;
655
+ displayColumnDefOptions?: Partial<{
656
+ [key in MRT_DisplayColumnIds]: Partial<MRT_ColumnDef<TData>>;
657
+ }>;
658
+ createDisplayMode?: 'modal' | 'row' | 'custom';
659
+ editDisplayMode?: 'modal' | 'row' | 'cell' | 'table' | 'custom';
660
+ columnFilterDisplayMode?: 'subheader' | 'popover' | 'custom';
661
+ paginationDisplayMode?: 'default' | 'pages' | 'custom';
662
+ selectDisplayMode?: 'checkbox' | 'radio' | 'switch';
663
+ enableBottomToolbar?: boolean;
664
+ enableClickToCopy?: boolean;
665
+ enableColumnActions?: boolean;
666
+ enableColumnDragging?: boolean;
667
+ enableColumnFilterModes?: boolean;
668
+ enableColumnOrdering?: boolean;
669
+ enableColumnVirtualization?: boolean;
670
+ enableDensityToggle?: boolean;
671
+ enableEditing?: boolean | ((row: MRT_Row<TData>) => boolean);
672
+ enableExpandAll?: boolean;
673
+ enableFacetedValues?: boolean;
674
+ enableFilterMatchHighlighting?: boolean;
675
+ enableFullScreenToggle?: boolean;
676
+ enableGlobalFilterModes?: boolean;
677
+ enableGlobalFilterRankedResults?: boolean;
678
+ enablePagination?: boolean;
679
+ enableRowActions?: boolean;
680
+ enableRowDragging?: boolean;
681
+ enableRowNumbers?: boolean;
682
+ enableRowOrdering?: boolean;
683
+ enableRowSelection?: boolean | ((row: MRT_Row<TData>) => boolean);
684
+ enableRowVirtualization?: boolean;
685
+ enableSelectAll?: boolean;
686
+ enableStickyFooter?: boolean;
687
+ enableStickyHeader?: boolean;
688
+ enableTableFooter?: boolean;
689
+ enableTableHead?: boolean;
690
+ enableToolbarInternalActions?: boolean;
691
+ enableTopToolbar?: boolean;
692
+ expandRowsFn?: (dataRow: TData) => TData[];
693
+ getRowId?: (
694
+ originalRow: TData,
695
+ index: number,
696
+ parentRow: MRT_Row<TData>,
697
+ ) => string;
698
+ globalFilterFn?: MRT_FilterOption;
699
+ globalFilterModeOptions?: MRT_FilterOption[] | null;
700
+ icons?: Partial<MRT_Icons>;
701
+ initialState?: Partial<MRT_TableState<TData>>;
702
+ /**
703
+ * Changes which kind of CSS layout is used to render the table. `semantic` uses default semantic HTML elements, while `grid` adds CSS grid and flexbox styles
704
+ */
705
+ layoutMode?: 'semantic' | 'grid';
706
+ /**
707
+ * Pass in either a locale imported from `material-react-table/locales/*` or a custom locale object.
708
+ *
709
+ * See the localization (i18n) guide for more info:
710
+ * @link https://www.material-react-table.com/docs/guides/localization
711
+ */
712
+ localization?: Partial<MRT_Localization>;
713
+ /**
714
+ * Memoize cells, rows, or the entire table body to potentially improve render performance.
715
+ *
716
+ * @warning This will break some dynamic rendering features. See the memoization guide for more info:
717
+ * @link https://www.material-react-table.com/docs/guides/memoize-components
718
+ */
719
+ memoMode?: 'cells' | 'rows' | 'table-body';
720
+ muiBottomToolbarProps?:
721
+ | ToolbarProps
722
+ | ((props: { table: MRT_TableInstance<TData> }) => ToolbarProps);
723
+ muiExpandAllButtonProps?:
724
+ | IconButtonProps
725
+ | ((props: { table: MRT_TableInstance<TData> }) => IconButtonProps);
726
+ muiExpandButtonProps?:
727
+ | IconButtonProps
728
+ | ((props: {
729
+ table: MRT_TableInstance<TData>;
730
+ row: MRT_Row<TData>;
731
+ }) => IconButtonProps);
732
+ muiLinearProgressProps?:
733
+ | LinearProgressProps
734
+ | ((props: {
735
+ isTopToolbar: boolean;
736
+ table: MRT_TableInstance<TData>;
737
+ }) => LinearProgressProps);
738
+ muiSearchTextFieldProps?:
739
+ | TextFieldProps
740
+ | ((props: { table: MRT_TableInstance<TData> }) => TextFieldProps);
741
+ muiSelectAllCheckboxProps?:
742
+ | CheckboxProps
743
+ | ((props: { table: MRT_TableInstance<TData> }) => CheckboxProps);
744
+ muiSelectCheckboxProps?:
745
+ | (CheckboxProps | RadioProps)
746
+ | ((props: {
747
+ table: MRT_TableInstance<TData>;
748
+ row: MRT_Row<TData>;
749
+ }) => CheckboxProps | RadioProps);
750
+ muiCopyButtonProps?:
751
+ | ButtonProps
752
+ | ((props: {
753
+ cell: MRT_Cell<TData>;
754
+ column: MRT_Column<TData>;
755
+ row: MRT_Row<TData>;
756
+ table: MRT_TableInstance<TData>;
757
+ }) => ButtonProps);
758
+ muiEditTextFieldProps?:
759
+ | TextFieldProps
760
+ | ((props: {
761
+ cell: MRT_Cell<TData>;
762
+ column: MRT_Column<TData>;
763
+ row: MRT_Row<TData>;
764
+ table: MRT_TableInstance<TData>;
765
+ }) => TextFieldProps);
766
+ muiTableBodyCellProps?:
767
+ | TableCellProps
768
+ | ((props: {
769
+ cell: MRT_Cell<TData>;
770
+ column: MRT_Column<TData>;
771
+ row: MRT_Row<TData>;
772
+ table: MRT_TableInstance<TData>;
773
+ }) => TableCellProps);
774
+ muiSkeletonProps?:
775
+ | SkeletonProps
776
+ | ((props: {
777
+ cell: MRT_Cell<TData>;
778
+ column: MRT_Column<TData>;
779
+ row: MRT_Row<TData>;
780
+ table: MRT_TableInstance<TData>;
781
+ }) => SkeletonProps);
782
+ muiTableBodyProps?:
783
+ | TableBodyProps
784
+ | ((props: { table: MRT_TableInstance<TData> }) => TableBodyProps);
785
+ muiRowDragHandleProps?:
786
+ | IconButtonProps
787
+ | ((props: {
788
+ table: MRT_TableInstance<TData>;
789
+ row: MRT_Row<TData>;
790
+ }) => IconButtonProps);
791
+ muiTableBodyRowProps?:
792
+ | TableRowProps
793
+ | ((props: {
794
+ isDetailPanel?: boolean;
795
+ row: MRT_Row<TData>;
796
+ staticRowIndex: number;
797
+ table: MRT_TableInstance<TData>;
798
+ }) => TableRowProps);
799
+ muiTableContainerProps?:
800
+ | TableContainerProps
801
+ | ((props: { table: MRT_TableInstance<TData> }) => TableContainerProps);
802
+ muiDetailPanelProps?:
803
+ | TableCellProps
804
+ | ((props: {
805
+ table: MRT_TableInstance<TData>;
806
+ row: MRT_Row<TData>;
807
+ }) => TableCellProps);
808
+ muiTableFooterCellProps?:
809
+ | TableCellProps
810
+ | ((props: {
811
+ table: MRT_TableInstance<TData>;
812
+ column: MRT_Column<TData>;
813
+ }) => TableCellProps);
814
+ muiTableFooterProps?:
815
+ | TableFooterProps
816
+ | ((props: { table: MRT_TableInstance<TData> }) => TableFooterProps);
817
+ muiTableFooterRowProps?:
818
+ | TableRowProps
819
+ | ((props: {
820
+ table: MRT_TableInstance<TData>;
821
+ footerGroup: MRT_HeaderGroup<TData>;
822
+ }) => TableRowProps);
823
+ muiColumnActionsButtonProps?:
824
+ | IconButtonProps
825
+ | ((props: {
826
+ table: MRT_TableInstance<TData>;
827
+ column: MRT_Column<TData>;
828
+ }) => IconButtonProps);
829
+ muiColumnDragHandleProps?:
830
+ | IconButtonProps
831
+ | ((props: {
832
+ table: MRT_TableInstance<TData>;
833
+ column: MRT_Column<TData>;
834
+ }) => IconButtonProps);
835
+ muiFilterCheckboxProps?:
836
+ | CheckboxProps
837
+ | ((props: {
838
+ column: MRT_Column<TData>;
839
+ table: MRT_TableInstance<TData>;
840
+ }) => CheckboxProps);
841
+ muiFilterTextFieldProps?:
842
+ | TextFieldProps
843
+ | ((props: {
844
+ table: MRT_TableInstance<TData>;
845
+ column: MRT_Column<TData>;
846
+ rangeFilterIndex?: number;
847
+ }) => TextFieldProps);
848
+ muiFilterSliderProps?:
849
+ | SliderProps
850
+ | ((props: {
851
+ table: MRT_TableInstance<TData>;
852
+ column: MRT_Column<TData>;
853
+ }) => TextFieldProps);
854
+ muiCreateRowModalProps?:
855
+ | DialogProps
856
+ | ((props: {
857
+ row: MRT_Row<TData>;
858
+ table: MRT_TableInstance<TData>;
859
+ }) => DialogProps);
860
+ muiEditRowModalProps?:
861
+ | DialogProps
862
+ | ((props: {
863
+ row: MRT_Row<TData>;
864
+ table: MRT_TableInstance<TData>;
865
+ }) => DialogProps);
866
+ muiTableHeadCellProps?:
867
+ | TableCellProps
868
+ | ((props: {
869
+ table: MRT_TableInstance<TData>;
870
+ column: MRT_Column<TData>;
871
+ }) => TableCellProps);
872
+ muiTableHeadProps?:
873
+ | TableHeadProps
874
+ | ((props: { table: MRT_TableInstance<TData> }) => TableHeadProps);
875
+ muiTableHeadRowProps?:
876
+ | TableRowProps
877
+ | ((props: {
878
+ table: MRT_TableInstance<TData>;
879
+ headerGroup: MRT_HeaderGroup<TData>;
880
+ }) => TableRowProps);
881
+ muiTablePaginationProps?:
882
+ | Partial<Omit<TablePaginationProps, 'rowsPerPage'>>
883
+ | ((props: {
884
+ table: MRT_TableInstance<TData>;
885
+ }) => Partial<Omit<TablePaginationProps, 'rowsPerPage'>>);
886
+ muiTablePaperProps?:
887
+ | PaperProps
888
+ | ((props: { table: MRT_TableInstance<TData> }) => PaperProps);
889
+ muiTableProps?:
890
+ | TableProps
891
+ | ((props: { table: MRT_TableInstance<TData> }) => TableProps);
892
+ muiToolbarAlertBannerChipProps?:
893
+ | ChipProps
894
+ | ((props: { table: MRT_TableInstance<TData> }) => ChipProps);
895
+ muiToolbarAlertBannerProps?:
896
+ | AlertProps
897
+ | ((props: { table: MRT_TableInstance<TData> }) => AlertProps);
898
+ muiTopToolbarProps?:
899
+ | ToolbarProps
900
+ | ((props: { table: MRT_TableInstance<TData> }) => ToolbarProps);
901
+ onCreatingRowCancel?: (props: {
902
+ row: MRT_Row<TData>;
903
+ table: MRT_TableInstance<TData>;
904
+ }) => void;
905
+ onCreatingRowChange?: OnChangeFn<MRT_Row<TData> | null>;
906
+ onCreatingRowSave?: (props: {
907
+ exitCreatingMode: () => void;
908
+ row: MRT_Row<TData>;
909
+ table: MRT_TableInstance<TData>;
910
+ values: Record<LiteralUnion<string & DeepKeys<TData>>, any>;
911
+ }) => void;
912
+ onColumnFilterFnsChange?: OnChangeFn<{ [key: string]: MRT_FilterOption }>;
913
+ onDensityChange?: OnChangeFn<MRT_DensityState>;
914
+ onDraggingColumnChange?: OnChangeFn<MRT_Column<TData> | null>;
915
+ onDraggingRowChange?: OnChangeFn<MRT_Row<TData> | null>;
916
+ onEditingCellChange?: OnChangeFn<MRT_Cell<TData> | null>;
917
+ onEditingRowCancel?: (props: {
918
+ row: MRT_Row<TData>;
919
+ table: MRT_TableInstance<TData>;
920
+ }) => void;
921
+ onEditingRowChange?: OnChangeFn<MRT_Row<TData> | null>;
922
+ onEditingRowSave?: (props: {
923
+ exitEditingMode: () => void;
924
+ row: MRT_Row<TData>;
925
+ table: MRT_TableInstance<TData>;
926
+ values: Record<LiteralUnion<string & DeepKeys<TData>>, any>;
927
+ }) => Promise<void> | void;
928
+ onGlobalFilterFnChange?: OnChangeFn<MRT_FilterOption>;
929
+ onHoveredColumnChange?: OnChangeFn<MRT_Column<TData> | { id: string } | null>;
930
+ onHoveredRowChange?: OnChangeFn<MRT_Row<TData> | { id: string } | null>;
931
+ onIsFullScreenChange?: OnChangeFn<boolean>;
932
+ onShowAlertBannerChange?: OnChangeFn<boolean>;
933
+ onShowColumnFiltersChange?: OnChangeFn<boolean>;
934
+ onShowGlobalFilterChange?: OnChangeFn<boolean>;
935
+ onShowToolbarDropZoneChange?: OnChangeFn<boolean>;
936
+ positionActionsColumn?: 'first' | 'last';
937
+ positionExpandColumn?: 'first' | 'last';
938
+ positionGlobalFilter?: 'left' | 'right' | 'none';
939
+ positionPagination?: 'bottom' | 'top' | 'both' | 'none';
940
+ positionToolbarAlertBanner?: 'bottom' | 'top' | 'none';
941
+ positionToolbarDropZone?: 'bottom' | 'top' | 'none' | 'both';
942
+ renderBottomToolbar?:
943
+ | ReactNode
944
+ | ((props: { table: MRT_TableInstance<TData> }) => ReactNode);
945
+ renderBottomToolbarCustomActions?: (props: {
946
+ table: MRT_TableInstance<TData>;
947
+ }) => ReactNode;
948
+ renderCreateRowModalContent?: (props: {
949
+ internalEditComponents: ReactNode[];
950
+ row: MRT_Row<TData>;
951
+ table: MRT_TableInstance<TData>;
952
+ }) => ReactNode;
953
+ renderEditRowModalContent?: (props: {
954
+ internalEditComponents: ReactNode[];
955
+ row: MRT_Row<TData>;
956
+ table: MRT_TableInstance<TData>;
957
+ }) => ReactNode;
958
+ renderColumnActionsMenuItems?: (props: {
959
+ column: MRT_Column<TData>;
960
+ closeMenu: () => void;
961
+ internalColumnMenuItems: ReactNode[];
962
+ table: MRT_TableInstance<TData>;
963
+ }) => ReactNode[];
964
+ renderColumnFilterModeMenuItems?: (props: {
965
+ column: MRT_Column<TData>;
966
+ internalFilterOptions: MRT_InternalFilterOption[];
967
+ onSelectFilterMode: (filterMode: MRT_FilterOption) => void;
968
+ table: MRT_TableInstance<TData>;
969
+ }) => ReactNode[];
970
+ renderDetailPanel?: (props: {
971
+ row: MRT_Row<TData>;
972
+ table: MRT_TableInstance<TData>;
973
+ }) => ReactNode;
974
+ renderGlobalFilterModeMenuItems?: (props: {
975
+ internalFilterOptions: MRT_InternalFilterOption[];
976
+ onSelectFilterMode: (filterMode: MRT_FilterOption) => void;
977
+ table: MRT_TableInstance<TData>;
978
+ }) => ReactNode[];
979
+ renderEmptyRowsFallback?: (props: {
980
+ table: MRT_TableInstance<TData>;
981
+ }) => ReactNode;
982
+ renderRowActionMenuItems?: (props: {
983
+ closeMenu: () => void;
984
+ row: MRT_Row<TData>;
985
+ table: MRT_TableInstance<TData>;
986
+ }) => ReactNode[];
987
+ renderRowActions?: (props: {
988
+ cell: MRT_Cell<TData>;
989
+ row: MRT_Row<TData>;
990
+ table: MRT_TableInstance<TData>;
991
+ }) => ReactNode;
992
+ renderToolbarInternalActions?: (props: {
993
+ table: MRT_TableInstance<TData>;
994
+ }) => ReactNode;
995
+ renderTopToolbar?:
996
+ | ReactNode
997
+ | ((props: { table: MRT_TableInstance<TData> }) => ReactNode);
998
+ renderTopToolbarCustomActions?: (props: {
999
+ table: MRT_TableInstance<TData>;
1000
+ }) => ReactNode;
1001
+ rowCount?: number;
1002
+ rowNumberMode?: 'original' | 'static';
1003
+ rowVirtualizerInstanceRef?: MutableRefObject<Virtualizer<
1004
+ HTMLDivElement,
1005
+ HTMLTableRowElement
1006
+ > | null>;
1007
+ rowVirtualizerOptions?:
1008
+ | Partial<VirtualizerOptions<HTMLDivElement, HTMLTableRowElement>>
1009
+ | ((props: {
1010
+ table: MRT_TableInstance<TData>;
1011
+ }) => Partial<VirtualizerOptions<HTMLDivElement, HTMLTableRowElement>>);
1012
+ selectAllMode?: 'all' | 'page';
1013
+ /**
1014
+ * Manage state externally any way you want, then pass it back into MRT.
1015
+ */
1016
+ state?: Partial<MRT_TableState<TData>>;
1017
+ };