material-react-table 1.14.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 (467) hide show
  1. package/README.md +1 -0
  2. package/dist/cjs/index.js +1629 -1323
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/cjs/types/MaterialReactTable.d.ts +7 -11
  5. package/dist/cjs/types/body/MRT_TableBody.d.ts +4 -5
  6. package/dist/cjs/types/body/MRT_TableBodyCell.d.ts +5 -5
  7. package/dist/cjs/types/body/MRT_TableBodyCellValue.d.ts +4 -4
  8. package/dist/cjs/types/body/MRT_TableBodyRow.d.ts +5 -6
  9. package/dist/cjs/types/body/MRT_TableBodyRowGrabHandle.d.ts +5 -5
  10. package/dist/cjs/types/body/MRT_TableDetailPanel.d.ts +6 -6
  11. package/dist/cjs/types/body/index.d.ts +6 -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_ShowHideColumnsButton.d.ts +2 -2
  19. package/dist/cjs/types/buttons/MRT_ToggleDensePaddingButton.d.ts +2 -2
  20. package/dist/cjs/types/buttons/MRT_ToggleFiltersButton.d.ts +2 -2
  21. package/dist/cjs/types/buttons/MRT_ToggleFullScreenButton.d.ts +7 -0
  22. package/dist/cjs/types/buttons/MRT_ToggleGlobalFilterButton.d.ts +2 -2
  23. package/dist/cjs/types/buttons/MRT_ToggleRowActionMenuButton.d.ts +2 -2
  24. package/dist/cjs/types/buttons/index.d.ts +12 -0
  25. package/dist/cjs/types/column.utils.d.ts +39 -51
  26. package/dist/cjs/types/filterFns.d.ts +14 -14
  27. package/dist/cjs/types/footer/MRT_TableFooter.d.ts +3 -3
  28. package/dist/cjs/types/footer/MRT_TableFooterCell.d.ts +4 -4
  29. package/dist/cjs/types/footer/MRT_TableFooterRow.d.ts +4 -4
  30. package/dist/cjs/types/footer/index.d.ts +3 -0
  31. package/dist/cjs/types/head/MRT_TableHead.d.ts +3 -3
  32. package/dist/cjs/types/head/MRT_TableHeadCell.d.ts +4 -4
  33. package/dist/cjs/types/head/MRT_TableHeadCellColumnActionsButton.d.ts +4 -4
  34. package/dist/cjs/types/head/MRT_TableHeadCellFilterContainer.d.ts +4 -4
  35. package/dist/cjs/types/head/MRT_TableHeadCellFilterLabel.d.ts +4 -4
  36. package/dist/cjs/types/head/MRT_TableHeadCellGrabHandle.d.ts +4 -4
  37. package/dist/cjs/types/head/MRT_TableHeadCellResizeHandle.d.ts +4 -4
  38. package/dist/cjs/types/head/MRT_TableHeadCellSortLabel.d.ts +4 -4
  39. package/dist/cjs/types/head/MRT_TableHeadRow.d.ts +4 -4
  40. package/dist/cjs/types/head/index.d.ts +9 -0
  41. package/dist/cjs/types/hooks/useMRT_DisplayColumns.d.ts +9 -0
  42. package/dist/cjs/types/hooks/useMRT_Effects.d.ts +2 -0
  43. package/dist/cjs/types/hooks/useMRT_TableInstance.d.ts +2 -0
  44. package/dist/cjs/types/hooks/useMRT_TableOptions.d.ts +2 -0
  45. package/dist/cjs/types/index.d.ts +14 -25
  46. package/dist/cjs/types/inputs/MRT_EditCellTextField.d.ts +2 -3
  47. package/dist/cjs/types/inputs/MRT_FilterCheckbox.d.ts +4 -4
  48. package/dist/cjs/types/inputs/MRT_FilterRangeFields.d.ts +4 -4
  49. package/dist/cjs/types/inputs/MRT_FilterRangeSlider.d.ts +4 -4
  50. package/dist/cjs/types/inputs/MRT_FilterTextField.d.ts +4 -4
  51. package/dist/cjs/types/inputs/MRT_GlobalFilterTextField.d.ts +2 -2
  52. package/dist/cjs/types/inputs/MRT_SelectCheckbox.d.ts +4 -4
  53. package/dist/cjs/types/inputs/index.d.ts +7 -0
  54. package/dist/cjs/types/locales/ar.d.ts +2 -0
  55. package/dist/cjs/types/locales/bg.d.ts +2 -0
  56. package/dist/cjs/types/locales/et.d.ts +2 -0
  57. package/dist/cjs/types/locales/ko.d.ts +2 -0
  58. package/dist/cjs/types/menus/MRT_ColumnActionMenu.d.ts +4 -4
  59. package/dist/cjs/types/menus/MRT_FilterOptionMenu.d.ts +2 -2
  60. package/dist/cjs/types/menus/MRT_RowActionMenu.d.ts +4 -4
  61. package/dist/cjs/types/menus/MRT_ShowHideColumnsMenu.d.ts +2 -2
  62. package/dist/cjs/types/menus/MRT_ShowHideColumnsMenuItems.d.ts +2 -2
  63. package/dist/cjs/types/menus/index.d.ts +5 -0
  64. package/dist/cjs/types/modals/MRT_EditRowModal.d.ts +7 -0
  65. package/dist/cjs/types/modals/index.d.ts +1 -0
  66. package/dist/cjs/types/sortingFns.d.ts +2 -418
  67. package/dist/cjs/types/table/MRT_Table.d.ts +3 -3
  68. package/dist/cjs/types/table/MRT_TableContainer.d.ts +3 -3
  69. package/dist/cjs/types/table/MRT_TablePaper.d.ts +3 -3
  70. package/dist/cjs/types/table/index.d.ts +4 -0
  71. package/dist/cjs/types/toolbar/MRT_BottomToolbar.d.ts +2 -2
  72. package/dist/cjs/types/toolbar/MRT_LinearProgressBar.d.ts +2 -2
  73. package/dist/cjs/types/toolbar/MRT_TablePagination.d.ts +2 -2
  74. package/dist/cjs/types/toolbar/MRT_ToolbarAlertBanner.d.ts +2 -2
  75. package/dist/cjs/types/toolbar/MRT_ToolbarDropZone.d.ts +2 -2
  76. package/dist/cjs/types/toolbar/MRT_ToolbarInternalButtons.d.ts +2 -2
  77. package/dist/cjs/types/toolbar/MRT_TopToolbar.d.ts +2 -2
  78. package/dist/cjs/types/toolbar/index.d.ts +7 -0
  79. package/dist/cjs/types/types.d.ts +116 -85
  80. package/dist/cjs/types/useMaterialReactTable.d.ts +2 -0
  81. package/dist/esm/material-react-table.esm.js +1559 -1317
  82. package/dist/esm/material-react-table.esm.js.map +1 -1
  83. package/dist/esm/types/MaterialReactTable.d.ts +7 -11
  84. package/dist/esm/types/body/MRT_TableBody.d.ts +4 -5
  85. package/dist/esm/types/body/MRT_TableBodyCell.d.ts +5 -5
  86. package/dist/esm/types/body/MRT_TableBodyCellValue.d.ts +4 -4
  87. package/dist/esm/types/body/MRT_TableBodyRow.d.ts +5 -6
  88. package/dist/esm/types/body/MRT_TableBodyRowGrabHandle.d.ts +5 -5
  89. package/dist/esm/types/body/MRT_TableDetailPanel.d.ts +6 -6
  90. package/dist/esm/types/body/index.d.ts +6 -0
  91. package/dist/esm/types/buttons/MRT_ColumnPinningButtons.d.ts +2 -2
  92. package/dist/esm/types/buttons/MRT_CopyButton.d.ts +2 -2
  93. package/dist/esm/types/buttons/MRT_EditActionButtons.d.ts +2 -2
  94. package/dist/esm/types/buttons/MRT_ExpandAllButton.d.ts +3 -3
  95. package/dist/esm/types/buttons/MRT_ExpandButton.d.ts +2 -2
  96. package/dist/esm/types/buttons/MRT_GrabHandleButton.d.ts +2 -2
  97. package/dist/esm/types/buttons/MRT_ShowHideColumnsButton.d.ts +2 -2
  98. package/dist/esm/types/buttons/MRT_ToggleDensePaddingButton.d.ts +2 -2
  99. package/dist/esm/types/buttons/MRT_ToggleFiltersButton.d.ts +2 -2
  100. package/dist/esm/types/buttons/MRT_ToggleFullScreenButton.d.ts +7 -0
  101. package/dist/esm/types/buttons/MRT_ToggleGlobalFilterButton.d.ts +2 -2
  102. package/dist/esm/types/buttons/MRT_ToggleRowActionMenuButton.d.ts +2 -2
  103. package/dist/esm/types/buttons/index.d.ts +12 -0
  104. package/dist/esm/types/column.utils.d.ts +39 -51
  105. package/dist/esm/types/filterFns.d.ts +14 -14
  106. package/dist/esm/types/footer/MRT_TableFooter.d.ts +3 -3
  107. package/dist/esm/types/footer/MRT_TableFooterCell.d.ts +4 -4
  108. package/dist/esm/types/footer/MRT_TableFooterRow.d.ts +4 -4
  109. package/dist/esm/types/footer/index.d.ts +3 -0
  110. package/dist/esm/types/head/MRT_TableHead.d.ts +3 -3
  111. package/dist/esm/types/head/MRT_TableHeadCell.d.ts +4 -4
  112. package/dist/esm/types/head/MRT_TableHeadCellColumnActionsButton.d.ts +4 -4
  113. package/dist/esm/types/head/MRT_TableHeadCellFilterContainer.d.ts +4 -4
  114. package/dist/esm/types/head/MRT_TableHeadCellFilterLabel.d.ts +4 -4
  115. package/dist/esm/types/head/MRT_TableHeadCellGrabHandle.d.ts +4 -4
  116. package/dist/esm/types/head/MRT_TableHeadCellResizeHandle.d.ts +4 -4
  117. package/dist/esm/types/head/MRT_TableHeadCellSortLabel.d.ts +4 -4
  118. package/dist/esm/types/head/MRT_TableHeadRow.d.ts +4 -4
  119. package/dist/esm/types/head/index.d.ts +9 -0
  120. package/dist/esm/types/hooks/useMRT_DisplayColumns.d.ts +9 -0
  121. package/dist/esm/types/hooks/useMRT_Effects.d.ts +2 -0
  122. package/dist/esm/types/hooks/useMRT_TableInstance.d.ts +2 -0
  123. package/dist/esm/types/hooks/useMRT_TableOptions.d.ts +2 -0
  124. package/dist/esm/types/index.d.ts +14 -25
  125. package/dist/esm/types/inputs/MRT_EditCellTextField.d.ts +2 -3
  126. package/dist/esm/types/inputs/MRT_FilterCheckbox.d.ts +4 -4
  127. package/dist/esm/types/inputs/MRT_FilterRangeFields.d.ts +4 -4
  128. package/dist/esm/types/inputs/MRT_FilterRangeSlider.d.ts +4 -4
  129. package/dist/esm/types/inputs/MRT_FilterTextField.d.ts +4 -4
  130. package/dist/esm/types/inputs/MRT_GlobalFilterTextField.d.ts +2 -2
  131. package/dist/esm/types/inputs/MRT_SelectCheckbox.d.ts +4 -4
  132. package/dist/esm/types/inputs/index.d.ts +7 -0
  133. package/dist/esm/types/locales/ar.d.ts +2 -0
  134. package/dist/esm/types/locales/bg.d.ts +2 -0
  135. package/dist/esm/types/locales/et.d.ts +2 -0
  136. package/dist/esm/types/locales/ko.d.ts +2 -0
  137. package/dist/esm/types/menus/MRT_ColumnActionMenu.d.ts +4 -4
  138. package/dist/esm/types/menus/MRT_FilterOptionMenu.d.ts +2 -2
  139. package/dist/esm/types/menus/MRT_RowActionMenu.d.ts +4 -4
  140. package/dist/esm/types/menus/MRT_ShowHideColumnsMenu.d.ts +2 -2
  141. package/dist/esm/types/menus/MRT_ShowHideColumnsMenuItems.d.ts +2 -2
  142. package/dist/esm/types/menus/index.d.ts +5 -0
  143. package/dist/esm/types/modals/MRT_EditRowModal.d.ts +7 -0
  144. package/dist/esm/types/modals/index.d.ts +1 -0
  145. package/dist/esm/types/sortingFns.d.ts +2 -418
  146. package/dist/esm/types/table/MRT_Table.d.ts +3 -3
  147. package/dist/esm/types/table/MRT_TableContainer.d.ts +3 -3
  148. package/dist/esm/types/table/MRT_TablePaper.d.ts +3 -3
  149. package/dist/esm/types/table/index.d.ts +4 -0
  150. package/dist/esm/types/toolbar/MRT_BottomToolbar.d.ts +2 -2
  151. package/dist/esm/types/toolbar/MRT_LinearProgressBar.d.ts +2 -2
  152. package/dist/esm/types/toolbar/MRT_TablePagination.d.ts +2 -2
  153. package/dist/esm/types/toolbar/MRT_ToolbarAlertBanner.d.ts +2 -2
  154. package/dist/esm/types/toolbar/MRT_ToolbarDropZone.d.ts +2 -2
  155. package/dist/esm/types/toolbar/MRT_ToolbarInternalButtons.d.ts +2 -2
  156. package/dist/esm/types/toolbar/MRT_TopToolbar.d.ts +2 -2
  157. package/dist/esm/types/toolbar/index.d.ts +7 -0
  158. package/dist/esm/types/types.d.ts +116 -85
  159. package/dist/esm/types/useMaterialReactTable.d.ts +2 -0
  160. package/dist/index.d.ts +606 -156
  161. package/locales/ar.d.ts +2 -0
  162. package/locales/ar.esm.d.ts +2 -0
  163. package/locales/ar.esm.js +93 -0
  164. package/locales/ar.esm.js.map +1 -0
  165. package/locales/ar.js +97 -0
  166. package/locales/ar.js.map +1 -0
  167. package/locales/bg.d.ts +2 -0
  168. package/locales/bg.esm.d.ts +2 -0
  169. package/locales/bg.esm.js +93 -0
  170. package/locales/bg.esm.js.map +1 -0
  171. package/locales/bg.js +97 -0
  172. package/locales/bg.js.map +1 -0
  173. package/locales/cs.esm.js +1 -2
  174. package/locales/cs.esm.js.map +1 -1
  175. package/locales/cs.js +1 -2
  176. package/locales/cs.js.map +1 -1
  177. package/locales/da.esm.js +0 -1
  178. package/locales/da.esm.js.map +1 -1
  179. package/locales/da.js +0 -1
  180. package/locales/da.js.map +1 -1
  181. package/locales/de.esm.js +0 -1
  182. package/locales/de.esm.js.map +1 -1
  183. package/locales/de.js +0 -1
  184. package/locales/de.js.map +1 -1
  185. package/locales/en.esm.js +0 -1
  186. package/locales/en.esm.js.map +1 -1
  187. package/locales/en.js +0 -1
  188. package/locales/en.js.map +1 -1
  189. package/locales/es.esm.js +0 -1
  190. package/locales/es.esm.js.map +1 -1
  191. package/locales/es.js +0 -1
  192. package/locales/es.js.map +1 -1
  193. package/locales/et.d.ts +2 -0
  194. package/locales/et.esm.d.ts +2 -0
  195. package/locales/et.esm.js +93 -0
  196. package/locales/et.esm.js.map +1 -0
  197. package/locales/et.js +97 -0
  198. package/locales/et.js.map +1 -0
  199. package/locales/fa.esm.js +0 -1
  200. package/locales/fa.esm.js.map +1 -1
  201. package/locales/fa.js +0 -1
  202. package/locales/fa.js.map +1 -1
  203. package/locales/fi.esm.js +0 -1
  204. package/locales/fi.esm.js.map +1 -1
  205. package/locales/fi.js +0 -1
  206. package/locales/fi.js.map +1 -1
  207. package/locales/fr.esm.js +0 -1
  208. package/locales/fr.esm.js.map +1 -1
  209. package/locales/fr.js +0 -1
  210. package/locales/fr.js.map +1 -1
  211. package/locales/hu.esm.js +0 -1
  212. package/locales/hu.esm.js.map +1 -1
  213. package/locales/hu.js +0 -1
  214. package/locales/hu.js.map +1 -1
  215. package/locales/id.esm.js +0 -1
  216. package/locales/id.esm.js.map +1 -1
  217. package/locales/id.js +0 -1
  218. package/locales/id.js.map +1 -1
  219. package/locales/it.esm.js +0 -1
  220. package/locales/it.esm.js.map +1 -1
  221. package/locales/it.js +0 -1
  222. package/locales/it.js.map +1 -1
  223. package/locales/ja.esm.js +0 -1
  224. package/locales/ja.esm.js.map +1 -1
  225. package/locales/ja.js +0 -1
  226. package/locales/ja.js.map +1 -1
  227. package/locales/ko.d.ts +2 -0
  228. package/locales/ko.esm.d.ts +2 -0
  229. package/locales/ko.esm.js +93 -0
  230. package/locales/ko.esm.js.map +1 -0
  231. package/locales/ko.js +97 -0
  232. package/locales/ko.js.map +1 -0
  233. package/locales/nl.esm.js +0 -1
  234. package/locales/nl.esm.js.map +1 -1
  235. package/locales/nl.js +0 -1
  236. package/locales/nl.js.map +1 -1
  237. package/locales/no.esm.js +0 -1
  238. package/locales/no.esm.js.map +1 -1
  239. package/locales/no.js +0 -1
  240. package/locales/no.js.map +1 -1
  241. package/locales/pl.esm.js +0 -1
  242. package/locales/pl.esm.js.map +1 -1
  243. package/locales/pl.js +0 -1
  244. package/locales/pl.js.map +1 -1
  245. package/locales/pt-BR.esm.js +0 -1
  246. package/locales/pt-BR.esm.js.map +1 -1
  247. package/locales/pt-BR.js +0 -1
  248. package/locales/pt-BR.js.map +1 -1
  249. package/locales/pt.esm.js +0 -1
  250. package/locales/pt.esm.js.map +1 -1
  251. package/locales/pt.js +0 -1
  252. package/locales/pt.js.map +1 -1
  253. package/locales/ro.esm.js +0 -1
  254. package/locales/ro.esm.js.map +1 -1
  255. package/locales/ro.js +0 -1
  256. package/locales/ro.js.map +1 -1
  257. package/locales/ru.esm.js +0 -1
  258. package/locales/ru.esm.js.map +1 -1
  259. package/locales/ru.js +0 -1
  260. package/locales/ru.js.map +1 -1
  261. package/locales/sk.esm.js +0 -1
  262. package/locales/sk.esm.js.map +1 -1
  263. package/locales/sk.js +0 -1
  264. package/locales/sk.js.map +1 -1
  265. package/locales/sr-Cyrl-RS.esm.js +0 -1
  266. package/locales/sr-Cyrl-RS.esm.js.map +1 -1
  267. package/locales/sr-Cyrl-RS.js +0 -1
  268. package/locales/sr-Cyrl-RS.js.map +1 -1
  269. package/locales/sr-Latn-RS.esm.js +0 -1
  270. package/locales/sr-Latn-RS.esm.js.map +1 -1
  271. package/locales/sr-Latn-RS.js +0 -1
  272. package/locales/sr-Latn-RS.js.map +1 -1
  273. package/locales/sv.esm.js +0 -1
  274. package/locales/sv.esm.js.map +1 -1
  275. package/locales/sv.js +0 -1
  276. package/locales/sv.js.map +1 -1
  277. package/locales/tr.esm.js +0 -1
  278. package/locales/tr.esm.js.map +1 -1
  279. package/locales/tr.js +0 -1
  280. package/locales/tr.js.map +1 -1
  281. package/locales/uk.esm.js +0 -1
  282. package/locales/uk.esm.js.map +1 -1
  283. package/locales/uk.js +0 -1
  284. package/locales/uk.js.map +1 -1
  285. package/locales/vi.esm.js +0 -1
  286. package/locales/vi.esm.js.map +1 -1
  287. package/locales/vi.js +0 -1
  288. package/locales/vi.js.map +1 -1
  289. package/locales/zh-Hans.esm.js +7 -8
  290. package/locales/zh-Hans.esm.js.map +1 -1
  291. package/locales/zh-Hans.js +7 -8
  292. package/locales/zh-Hans.js.map +1 -1
  293. package/locales/zh-Hant.esm.js +1 -2
  294. package/locales/zh-Hant.esm.js.map +1 -1
  295. package/locales/zh-Hant.js +1 -2
  296. package/locales/zh-Hant.js.map +1 -1
  297. package/package.json +44 -42
  298. package/src/MaterialReactTable.tsx +31 -168
  299. package/src/body/MRT_TableBody.tsx +10 -23
  300. package/src/body/MRT_TableBodyCell.tsx +36 -39
  301. package/src/body/MRT_TableBodyCellValue.tsx +7 -4
  302. package/src/body/MRT_TableBodyRow.tsx +7 -7
  303. package/src/body/MRT_TableBodyRowGrabHandle.tsx +13 -10
  304. package/src/body/MRT_TableDetailPanel.tsx +11 -11
  305. package/src/body/index.ts +6 -0
  306. package/src/buttons/MRT_ColumnPinningButtons.tsx +2 -4
  307. package/src/buttons/MRT_CopyButton.tsx +9 -9
  308. package/src/buttons/MRT_EditActionButtons.tsx +56 -25
  309. package/src/buttons/MRT_ExpandAllButton.tsx +5 -3
  310. package/src/buttons/MRT_ExpandButton.tsx +2 -2
  311. package/src/buttons/MRT_GrabHandleButton.tsx +2 -2
  312. package/src/buttons/MRT_ShowHideColumnsButton.tsx +2 -5
  313. package/src/buttons/MRT_ToggleDensePaddingButton.tsx +2 -3
  314. package/src/buttons/MRT_ToggleFiltersButton.tsx +2 -5
  315. package/src/buttons/{MRT_FullScreenToggleButton.tsx → MRT_ToggleFullScreenButton.tsx} +13 -6
  316. package/src/buttons/MRT_ToggleGlobalFilterButton.tsx +3 -5
  317. package/src/buttons/MRT_ToggleRowActionMenuButton.tsx +16 -8
  318. package/src/buttons/index.ts +12 -0
  319. package/src/column.utils.ts +96 -45
  320. package/src/filterFns.ts +14 -14
  321. package/src/footer/MRT_TableFooter.tsx +4 -4
  322. package/src/footer/MRT_TableFooterCell.tsx +7 -4
  323. package/src/footer/MRT_TableFooterRow.tsx +6 -6
  324. package/src/footer/index.ts +3 -0
  325. package/src/head/MRT_TableHead.tsx +4 -4
  326. package/src/head/MRT_TableHeadCell.tsx +7 -4
  327. package/src/head/MRT_TableHeadCellColumnActionsButton.tsx +14 -12
  328. package/src/head/MRT_TableHeadCellFilterContainer.tsx +9 -4
  329. package/src/head/MRT_TableHeadCellFilterLabel.tsx +9 -4
  330. package/src/head/MRT_TableHeadCellGrabHandle.tsx +13 -13
  331. package/src/head/MRT_TableHeadCellResizeHandle.tsx +9 -4
  332. package/src/head/MRT_TableHeadCellSortLabel.tsx +8 -6
  333. package/src/head/MRT_TableHeadRow.tsx +6 -6
  334. package/src/head/index.ts +9 -0
  335. package/src/hooks/useMRT_DisplayColumns.tsx +142 -0
  336. package/src/hooks/useMRT_Effects.ts +77 -0
  337. package/src/hooks/useMRT_TableInstance.ts +291 -0
  338. package/src/hooks/useMRT_TableOptions.ts +169 -0
  339. package/src/index.ts +16 -0
  340. package/src/inputs/MRT_EditCellTextField.tsx +39 -25
  341. package/src/inputs/MRT_FilterCheckbox.tsx +14 -11
  342. package/src/inputs/MRT_FilterRangeFields.tsx +7 -4
  343. package/src/inputs/MRT_FilterRangeSlider.tsx +18 -19
  344. package/src/inputs/MRT_FilterTextField.tsx +15 -15
  345. package/src/inputs/MRT_GlobalFilterTextField.tsx +2 -4
  346. package/src/inputs/MRT_SelectCheckbox.tsx +8 -4
  347. package/src/inputs/index.ts +7 -0
  348. package/src/locales/ar.ts +94 -0
  349. package/src/locales/bg.ts +93 -0
  350. package/src/{_locales → locales}/cs.ts +1 -2
  351. package/src/{_locales → locales}/da.ts +0 -1
  352. package/src/{_locales → locales}/de.ts +0 -1
  353. package/src/{_locales → locales}/en.ts +1 -1
  354. package/src/{_locales → locales}/es.ts +0 -1
  355. package/src/locales/et.ts +94 -0
  356. package/src/{_locales → locales}/fa.ts +0 -1
  357. package/src/{_locales → locales}/fi.ts +0 -1
  358. package/src/{_locales → locales}/fr.ts +0 -1
  359. package/src/{_locales → locales}/hu.ts +0 -1
  360. package/src/{_locales → locales}/id.ts +0 -1
  361. package/src/{_locales → locales}/it.ts +0 -1
  362. package/src/{_locales → locales}/ja.ts +0 -1
  363. package/src/locales/ko.ts +93 -0
  364. package/src/{_locales → locales}/nl.ts +0 -1
  365. package/src/{_locales → locales}/no.ts +1 -1
  366. package/src/{_locales → locales}/pl.ts +0 -1
  367. package/src/{_locales → locales}/pt-BR.ts +0 -1
  368. package/src/{_locales → locales}/pt.ts +0 -1
  369. package/src/{_locales → locales}/ro.ts +0 -1
  370. package/src/{_locales → locales}/ru.ts +0 -1
  371. package/src/{_locales → locales}/sk.ts +0 -1
  372. package/src/{_locales → locales}/sr-Cyrl-RS.ts +0 -1
  373. package/src/{_locales → locales}/sr-Latn-RS.ts +0 -1
  374. package/src/{_locales → locales}/sv.ts +0 -1
  375. package/src/{_locales → locales}/tr.ts +0 -1
  376. package/src/{_locales → locales}/uk.ts +0 -1
  377. package/src/{_locales → locales}/vi.ts +0 -1
  378. package/src/{_locales → locales}/zh-Hans.ts +7 -8
  379. package/src/{_locales → locales}/zh-Hant.ts +1 -2
  380. package/src/menus/MRT_ColumnActionMenu.tsx +8 -8
  381. package/src/menus/MRT_FilterOptionMenu.tsx +4 -3
  382. package/src/menus/MRT_RowActionMenu.tsx +5 -5
  383. package/src/menus/MRT_ShowHideColumnsMenu.tsx +4 -6
  384. package/src/menus/MRT_ShowHideColumnsMenuItems.tsx +4 -4
  385. package/src/menus/index.ts +5 -0
  386. package/src/modals/MRT_EditRowModal.tsx +115 -0
  387. package/src/modals/index.ts +1 -0
  388. package/src/sortingFns.ts +2 -2
  389. package/src/table/MRT_Table.tsx +40 -33
  390. package/src/table/MRT_TableContainer.tsx +23 -5
  391. package/src/table/MRT_TablePaper.tsx +13 -4
  392. package/src/table/index.ts +4 -0
  393. package/src/toolbar/MRT_BottomToolbar.tsx +2 -2
  394. package/src/toolbar/MRT_LinearProgressBar.tsx +2 -2
  395. package/src/toolbar/MRT_TablePagination.tsx +2 -2
  396. package/src/toolbar/MRT_ToolbarAlertBanner.tsx +2 -2
  397. package/src/toolbar/MRT_ToolbarDropZone.tsx +2 -2
  398. package/src/toolbar/MRT_ToolbarInternalButtons.tsx +6 -8
  399. package/src/toolbar/MRT_TopToolbar.tsx +2 -2
  400. package/src/toolbar/index.ts +7 -0
  401. package/src/types.ts +765 -751
  402. package/src/useMaterialReactTable.ts +11 -0
  403. package/dist/cjs/types/body/MRT_EditRowModal.d.ts +0 -8
  404. package/dist/cjs/types/buttons/MRT_FullScreenToggleButton.d.ts +0 -7
  405. package/dist/cjs/types/table/MRT_TableRoot.d.ts +0 -1
  406. package/dist/esm/types/body/MRT_EditRowModal.d.ts +0 -8
  407. package/dist/esm/types/buttons/MRT_FullScreenToggleButton.d.ts +0 -7
  408. package/dist/esm/types/table/MRT_TableRoot.d.ts +0 -1
  409. package/src/body/MRT_EditRowModal.tsx +0 -57
  410. package/src/index.tsx +0 -50
  411. package/src/table/MRT_TableRoot.tsx +0 -421
  412. /package/dist/cjs/types/{_locales → locales}/cs.d.ts +0 -0
  413. /package/dist/cjs/types/{_locales → locales}/da.d.ts +0 -0
  414. /package/dist/cjs/types/{_locales → locales}/de.d.ts +0 -0
  415. /package/dist/cjs/types/{_locales → locales}/en.d.ts +0 -0
  416. /package/dist/cjs/types/{_locales → locales}/es.d.ts +0 -0
  417. /package/dist/cjs/types/{_locales → locales}/fa.d.ts +0 -0
  418. /package/dist/cjs/types/{_locales → locales}/fi.d.ts +0 -0
  419. /package/dist/cjs/types/{_locales → locales}/fr.d.ts +0 -0
  420. /package/dist/cjs/types/{_locales → locales}/hu.d.ts +0 -0
  421. /package/dist/cjs/types/{_locales → locales}/id.d.ts +0 -0
  422. /package/dist/cjs/types/{_locales → locales}/it.d.ts +0 -0
  423. /package/dist/cjs/types/{_locales → locales}/ja.d.ts +0 -0
  424. /package/dist/cjs/types/{_locales → locales}/nl.d.ts +0 -0
  425. /package/dist/cjs/types/{_locales → locales}/no.d.ts +0 -0
  426. /package/dist/cjs/types/{_locales → locales}/pl.d.ts +0 -0
  427. /package/dist/cjs/types/{_locales → locales}/pt-BR.d.ts +0 -0
  428. /package/dist/cjs/types/{_locales → locales}/pt.d.ts +0 -0
  429. /package/dist/cjs/types/{_locales → locales}/ro.d.ts +0 -0
  430. /package/dist/cjs/types/{_locales → locales}/ru.d.ts +0 -0
  431. /package/dist/cjs/types/{_locales → locales}/sk.d.ts +0 -0
  432. /package/dist/cjs/types/{_locales → locales}/sr-Cyrl-RS.d.ts +0 -0
  433. /package/dist/cjs/types/{_locales → locales}/sr-Latn-RS.d.ts +0 -0
  434. /package/dist/cjs/types/{_locales → locales}/sv.d.ts +0 -0
  435. /package/dist/cjs/types/{_locales → locales}/tr.d.ts +0 -0
  436. /package/dist/cjs/types/{_locales → locales}/uk.d.ts +0 -0
  437. /package/dist/cjs/types/{_locales → locales}/vi.d.ts +0 -0
  438. /package/dist/cjs/types/{_locales → locales}/zh-Hans.d.ts +0 -0
  439. /package/dist/cjs/types/{_locales → locales}/zh-Hant.d.ts +0 -0
  440. /package/dist/esm/types/{_locales → locales}/cs.d.ts +0 -0
  441. /package/dist/esm/types/{_locales → locales}/da.d.ts +0 -0
  442. /package/dist/esm/types/{_locales → locales}/de.d.ts +0 -0
  443. /package/dist/esm/types/{_locales → locales}/en.d.ts +0 -0
  444. /package/dist/esm/types/{_locales → locales}/es.d.ts +0 -0
  445. /package/dist/esm/types/{_locales → locales}/fa.d.ts +0 -0
  446. /package/dist/esm/types/{_locales → locales}/fi.d.ts +0 -0
  447. /package/dist/esm/types/{_locales → locales}/fr.d.ts +0 -0
  448. /package/dist/esm/types/{_locales → locales}/hu.d.ts +0 -0
  449. /package/dist/esm/types/{_locales → locales}/id.d.ts +0 -0
  450. /package/dist/esm/types/{_locales → locales}/it.d.ts +0 -0
  451. /package/dist/esm/types/{_locales → locales}/ja.d.ts +0 -0
  452. /package/dist/esm/types/{_locales → locales}/nl.d.ts +0 -0
  453. /package/dist/esm/types/{_locales → locales}/no.d.ts +0 -0
  454. /package/dist/esm/types/{_locales → locales}/pl.d.ts +0 -0
  455. /package/dist/esm/types/{_locales → locales}/pt-BR.d.ts +0 -0
  456. /package/dist/esm/types/{_locales → locales}/pt.d.ts +0 -0
  457. /package/dist/esm/types/{_locales → locales}/ro.d.ts +0 -0
  458. /package/dist/esm/types/{_locales → locales}/ru.d.ts +0 -0
  459. /package/dist/esm/types/{_locales → locales}/sk.d.ts +0 -0
  460. /package/dist/esm/types/{_locales → locales}/sr-Cyrl-RS.d.ts +0 -0
  461. /package/dist/esm/types/{_locales → locales}/sr-Latn-RS.d.ts +0 -0
  462. /package/dist/esm/types/{_locales → locales}/sv.d.ts +0 -0
  463. /package/dist/esm/types/{_locales → locales}/tr.d.ts +0 -0
  464. /package/dist/esm/types/{_locales → locales}/uk.d.ts +0 -0
  465. /package/dist/esm/types/{_locales → locales}/vi.d.ts +0 -0
  466. /package/dist/esm/types/{_locales → locales}/zh-Hans.d.ts +0 -0
  467. /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?: 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,402 +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
- Prettify<
607
- Omit<
608
- Partial<TableOptions<TData>>,
609
- | 'columns'
610
- | 'data'
611
- | 'defaultColumn'
612
- | 'enableRowSelection'
613
- | 'expandRowsFn'
614
- | 'getRowId'
615
- | 'globalFilterFn'
616
- | 'initialState'
617
- | 'onStateChange'
618
- | 'state'
619
- > & {
620
- columnFilterModeOptions?: Array<
621
- LiteralUnion<string & MRT_FilterOption>
622
- > | null;
623
- /**
624
- * The columns to display in the table. `accessorKey`s or `accessorFn`s must match keys in the `data` prop.
625
- *
626
- * See more info on creating columns on the official docs site:
627
- * @link https://www.material-react-table.com/docs/guides/data-columns
628
- * @link https://www.material-react-table.com/docs/guides/display-columns
629
- *
630
- * See all Columns Options on the official docs site:
631
- * @link https://www.material-react-table.com/docs/api/column-options
632
- */
633
- columns: MRT_ColumnDef<TData>[];
634
- /**
635
- * Pass your data as an array of objects. Objects can theoretically be any shape, but it's best to keep them consistent.
636
- *
637
- * See the usage guide for more info on creating columns and data:
638
- * @link https://www.material-react-table.com/docs/getting-started/usage
639
- */
640
- data: TData[];
641
- /**
642
- * 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.
643
- */
644
- defaultColumn?: Partial<MRT_ColumnDef<TData>>;
645
- /**
646
- * Change the default options for display columns.
647
- */
648
- defaultDisplayColumn?: Partial<MRT_ColumnDef<TData>>;
649
- displayColumnDefOptions?: Partial<{
650
- [key in MRT_DisplayColumnIds]: Partial<MRT_ColumnDef>;
651
- }>;
652
- editingMode?: 'table' | 'modal' | 'row' | 'cell';
653
- enableBottomToolbar?: boolean;
654
- enableClickToCopy?: boolean;
655
- enableColumnActions?: boolean;
656
- enableColumnDragging?: boolean;
657
- enableColumnFilterModes?: boolean;
658
- enableColumnOrdering?: boolean;
659
- enableColumnVirtualization?: boolean;
660
- enableDensityToggle?: boolean;
661
- enableEditing?: boolean | ((row: MRT_Row<TData>) => boolean);
662
- enableExpandAll?: boolean;
663
- enableFacetedValues?: boolean;
664
- enableFilterMatchHighlighting?: boolean;
665
- enableFullScreenToggle?: boolean;
666
- enableGlobalFilterModes?: boolean;
667
- enableGlobalFilterRankedResults?: boolean;
668
- enablePagination?: boolean;
669
- enableRowActions?: boolean;
670
- enableRowDragging?: boolean;
671
- enableRowNumbers?: boolean;
672
- enableRowOrdering?: boolean;
673
- enableRowSelection?: boolean | ((row: MRT_Row<TData>) => boolean);
674
- enableRowVirtualization?: boolean;
675
- enableSelectAll?: boolean;
676
- enableStickyFooter?: boolean;
677
- enableStickyHeader?: boolean;
678
- enableTableFooter?: boolean;
679
- enableTableHead?: boolean;
680
- enableToolbarInternalActions?: boolean;
681
- enableTopToolbar?: boolean;
682
- expandRowsFn?: (dataRow: TData) => TData[];
683
- getRowId?: (
684
- originalRow: TData,
685
- index: number,
686
- parentRow: MRT_Row<TData>,
687
- ) => string;
688
- globalFilterFn?: MRT_FilterOption;
689
- globalFilterModeOptions?: MRT_FilterOption[] | null;
690
- icons?: Partial<MRT_Icons>;
691
- initialState?: Partial<MRT_TableState<TData>>;
692
- /**
693
- * 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
694
- */
695
- layoutMode?: 'semantic' | 'grid';
696
- /**
697
- * Pass in either a locale imported from `material-react-table/locales/*` or a custom locale object.
698
- *
699
- * See the localization (i18n) guide for more info:
700
- * @link https://www.material-react-table.com/docs/guides/localization
701
- */
702
- localization?: Partial<MRT_Localization>;
703
- /**
704
- * Memoize cells, rows, or the entire table body to potentially improve render performance.
705
- *
706
- * @warning This will break some dynamic rendering features. See the memoization guide for more info:
707
- * @link https://www.material-react-table.com/docs/guides/memoize-components
708
- */
709
- memoMode?: 'cells' | 'rows' | 'table-body';
710
- muiBottomToolbarProps?:
711
- | ToolbarProps
712
- | ((props: { table: MRT_TableInstance<TData> }) => ToolbarProps);
713
- muiExpandAllButtonProps?:
714
- | IconButtonProps
715
- | ((props: { table: MRT_TableInstance<TData> }) => IconButtonProps);
716
- muiExpandButtonProps?:
717
- | IconButtonProps
718
- | ((props: {
719
- table: MRT_TableInstance<TData>;
720
- row: MRT_Row<TData>;
721
- }) => IconButtonProps);
722
- muiLinearProgressProps?:
723
- | LinearProgressProps
724
- | ((props: {
725
- isTopToolbar: boolean;
726
- table: MRT_TableInstance<TData>;
727
- }) => LinearProgressProps);
728
- muiSearchTextFieldProps?:
729
- | TextFieldProps
730
- | ((props: { table: MRT_TableInstance<TData> }) => TextFieldProps);
731
- muiSelectAllCheckboxProps?:
732
- | CheckboxProps
733
- | ((props: { table: MRT_TableInstance<TData> }) => CheckboxProps);
734
- muiSelectCheckboxProps?:
735
- | (CheckboxProps | RadioProps)
736
- | ((props: {
737
- table: MRT_TableInstance<TData>;
738
- row: MRT_Row<TData>;
739
- }) => CheckboxProps | RadioProps);
740
- muiTableBodyCellCopyButtonProps?:
741
- | ButtonProps
742
- | ((props: {
743
- cell: MRT_Cell<TData>;
744
- column: MRT_Column<TData>;
745
- row: MRT_Row<TData>;
746
- table: MRT_TableInstance<TData>;
747
- }) => ButtonProps);
748
- muiTableBodyCellEditTextFieldProps?:
749
- | TextFieldProps
750
- | ((props: {
751
- cell: MRT_Cell<TData>;
752
- column: MRT_Column<TData>;
753
- row: MRT_Row<TData>;
754
- table: MRT_TableInstance<TData>;
755
- }) => TextFieldProps);
756
- muiTableBodyCellProps?:
757
- | TableCellProps
758
- | ((props: {
759
- cell: MRT_Cell<TData>;
760
- column: MRT_Column<TData>;
761
- row: MRT_Row<TData>;
762
- table: MRT_TableInstance<TData>;
763
- }) => TableCellProps);
764
- muiTableBodyCellSkeletonProps?:
765
- | SkeletonProps
766
- | ((props: {
767
- cell: MRT_Cell<TData>;
768
- column: MRT_Column<TData>;
769
- row: MRT_Row<TData>;
770
- table: MRT_TableInstance<TData>;
771
- }) => SkeletonProps);
772
- muiTableBodyProps?:
773
- | TableBodyProps
774
- | ((props: { table: MRT_TableInstance<TData> }) => TableBodyProps);
775
- muiTableBodyRowDragHandleProps?:
776
- | IconButtonProps
777
- | ((props: {
778
- table: MRT_TableInstance<TData>;
779
- row: MRT_Row<TData>;
780
- }) => IconButtonProps);
781
- muiTableBodyRowProps?:
782
- | TableRowProps
783
- | ((props: {
784
- isDetailPanel?: boolean;
785
- row: MRT_Row<TData>;
786
- staticRowIndex: number;
787
- table: MRT_TableInstance<TData>;
788
- }) => TableRowProps);
789
- muiTableContainerProps?:
790
- | TableContainerProps
791
- | ((props: { table: MRT_TableInstance<TData> }) => TableContainerProps);
792
- muiTableDetailPanelProps?:
793
- | TableCellProps
794
- | ((props: {
795
- table: MRT_TableInstance<TData>;
796
- row: MRT_Row<TData>;
797
- }) => TableCellProps);
798
- muiTableFooterCellProps?:
799
- | TableCellProps
800
- | ((props: {
801
- table: MRT_TableInstance<TData>;
802
- column: MRT_Column<TData>;
803
- }) => TableCellProps);
804
- muiTableFooterProps?:
805
- | TableFooterProps
806
- | ((props: { table: MRT_TableInstance<TData> }) => TableFooterProps);
807
- muiTableFooterRowProps?:
808
- | TableRowProps
809
- | ((props: {
810
- table: MRT_TableInstance<TData>;
811
- footerGroup: MRT_HeaderGroup<TData>;
812
- }) => TableRowProps);
813
- muiTableHeadCellColumnActionsButtonProps?:
814
- | IconButtonProps
815
- | ((props: {
816
- table: MRT_TableInstance<TData>;
817
- column: MRT_Column<TData>;
818
- }) => IconButtonProps);
819
- muiTableHeadCellDragHandleProps?:
820
- | IconButtonProps
821
- | ((props: {
822
- table: MRT_TableInstance<TData>;
823
- column: MRT_Column<TData>;
824
- }) => IconButtonProps);
825
- muiTableHeadCellFilterCheckboxProps?:
826
- | CheckboxProps
827
- | ((props: {
828
- column: MRT_Column<TData>;
829
- table: MRT_TableInstance<TData>;
830
- }) => CheckboxProps);
831
- muiTableHeadCellFilterTextFieldProps?:
832
- | TextFieldProps
833
- | ((props: {
834
- table: MRT_TableInstance<TData>;
835
- column: MRT_Column<TData>;
836
- rangeFilterIndex?: number;
837
- }) => TextFieldProps);
838
- muiTableHeadCellFilterSliderProps?:
839
- | SliderProps
840
- | ((props: {
841
- table: MRT_TableInstance<TData>;
842
- column: MRT_Column<TData>;
843
- }) => TextFieldProps);
844
- muiTableHeadCellProps?:
845
- | TableCellProps
846
- | ((props: {
847
- table: MRT_TableInstance<TData>;
848
- column: MRT_Column<TData>;
849
- }) => TableCellProps);
850
- muiTableHeadProps?:
851
- | TableHeadProps
852
- | ((props: { table: MRT_TableInstance<TData> }) => TableHeadProps);
853
- muiTableHeadRowProps?:
854
- | TableRowProps
855
- | ((props: {
856
- table: MRT_TableInstance<TData>;
857
- headerGroup: MRT_HeaderGroup<TData>;
858
- }) => TableRowProps);
859
- muiTablePaginationProps?:
860
- | Partial<Omit<TablePaginationProps, 'rowsPerPage'>>
861
- | ((props: {
862
- table: MRT_TableInstance<TData>;
863
- }) => Partial<Omit<TablePaginationProps, 'rowsPerPage'>>);
864
- muiTablePaperProps?:
865
- | PaperProps
866
- | ((props: { table: MRT_TableInstance<TData> }) => PaperProps);
867
- muiTableProps?:
868
- | TableProps
869
- | ((props: { table: MRT_TableInstance<TData> }) => TableProps);
870
- muiToolbarAlertBannerChipProps?:
871
- | ChipProps
872
- | ((props: { table: MRT_TableInstance<TData> }) => ChipProps);
873
- muiToolbarAlertBannerProps?:
874
- | AlertProps
875
- | ((props: { table: MRT_TableInstance<TData> }) => AlertProps);
876
- muiTopToolbarProps?:
877
- | ToolbarProps
878
- | ((props: { table: MRT_TableInstance<TData> }) => ToolbarProps);
879
- onDensityChange?: OnChangeFn<MRT_DensityState>;
880
- onDraggingColumnChange?: OnChangeFn<MRT_Column<TData> | null>;
881
- onDraggingRowChange?: OnChangeFn<MRT_Row<TData> | null>;
882
- onEditingCellChange?: OnChangeFn<MRT_Cell<TData> | null>;
883
- onEditingRowCancel?: (props: {
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>;
884
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: {
885
747
  table: MRT_TableInstance<TData>;
886
- }) => void;
887
- onEditingRowSave?: (props: {
888
- exitEditingMode: () => void;
748
+ row: MRT_Row<TData>;
749
+ }) => CheckboxProps | RadioProps);
750
+ muiCopyButtonProps?:
751
+ | ButtonProps
752
+ | ((props: {
753
+ cell: MRT_Cell<TData>;
754
+ column: MRT_Column<TData>;
889
755
  row: MRT_Row<TData>;
890
756
  table: MRT_TableInstance<TData>;
891
- values: Record<LiteralUnion<string & DeepKeys<TData>>, any>;
892
- }) => Promise<void> | void;
893
- onEditingRowChange?: OnChangeFn<MRT_Row<TData> | null>;
894
- onColumnFilterFnsChange?: OnChangeFn<{ [key: string]: MRT_FilterOption }>;
895
- onGlobalFilterFnChange?: OnChangeFn<MRT_FilterOption>;
896
- onHoveredColumnChange?: OnChangeFn<MRT_Column<TData> | null>;
897
- onHoveredRowChange?: OnChangeFn<MRT_Row<TData> | null>;
898
- onIsFullScreenChange?: OnChangeFn<boolean>;
899
- onShowAlertBannerChange?: OnChangeFn<boolean>;
900
- onShowColumnFiltersChange?: OnChangeFn<boolean>;
901
- onShowGlobalFilterChange?: OnChangeFn<boolean>;
902
- onShowToolbarDropZoneChange?: OnChangeFn<boolean>;
903
- positionActionsColumn?: 'first' | 'last';
904
- positionExpandColumn?: 'first' | 'last';
905
- positionGlobalFilter?: 'left' | 'right' | 'none';
906
- positionPagination?: 'bottom' | 'top' | 'both' | 'none';
907
- positionToolbarAlertBanner?: 'bottom' | 'top' | 'none';
908
- positionToolbarDropZone?: 'bottom' | 'top' | 'none' | 'both';
909
- renderBottomToolbar?:
910
- | ReactNode
911
- | ((props: { table: MRT_TableInstance<TData> }) => ReactNode);
912
- renderBottomToolbarCustomActions?: (props: {
913
- table: MRT_TableInstance<TData>;
914
- }) => ReactNode;
915
- renderColumnActionsMenuItems?: (props: {
757
+ }) => ButtonProps);
758
+ muiEditTextFieldProps?:
759
+ | TextFieldProps
760
+ | ((props: {
761
+ cell: MRT_Cell<TData>;
916
762
  column: MRT_Column<TData>;
917
- closeMenu: () => void;
918
- internalColumnMenuItems: ReactNode[];
763
+ row: MRT_Row<TData>;
919
764
  table: MRT_TableInstance<TData>;
920
- }) => ReactNode[];
921
- renderColumnFilterModeMenuItems?: (props: {
765
+ }) => TextFieldProps);
766
+ muiTableBodyCellProps?:
767
+ | TableCellProps
768
+ | ((props: {
769
+ cell: MRT_Cell<TData>;
922
770
  column: MRT_Column<TData>;
923
- internalFilterOptions: MRT_InternalFilterOption[];
924
- onSelectFilterMode: (filterMode: MRT_FilterOption) => void;
771
+ row: MRT_Row<TData>;
925
772
  table: MRT_TableInstance<TData>;
926
- }) => ReactNode[];
927
- renderDetailPanel?: (props: {
773
+ }) => TableCellProps);
774
+ muiSkeletonProps?:
775
+ | SkeletonProps
776
+ | ((props: {
777
+ cell: MRT_Cell<TData>;
778
+ column: MRT_Column<TData>;
928
779
  row: MRT_Row<TData>;
929
780
  table: MRT_TableInstance<TData>;
930
- }) => ReactNode;
931
- renderGlobalFilterModeMenuItems?: (props: {
932
- internalFilterOptions: MRT_InternalFilterOption[];
933
- onSelectFilterMode: (filterMode: MRT_FilterOption) => void;
781
+ }) => SkeletonProps);
782
+ muiTableBodyProps?:
783
+ | TableBodyProps
784
+ | ((props: { table: MRT_TableInstance<TData> }) => TableBodyProps);
785
+ muiRowDragHandleProps?:
786
+ | IconButtonProps
787
+ | ((props: {
934
788
  table: MRT_TableInstance<TData>;
935
- }) => ReactNode[];
936
- renderEmptyRowsFallback?: (props: {
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: {
937
805
  table: MRT_TableInstance<TData>;
938
- }) => ReactNode;
939
- renderRowActionMenuItems?: (props: {
940
- closeMenu: () => void;
941
806
  row: MRT_Row<TData>;
807
+ }) => TableCellProps);
808
+ muiTableFooterCellProps?:
809
+ | TableCellProps
810
+ | ((props: {
942
811
  table: MRT_TableInstance<TData>;
943
- }) => ReactNode[];
944
- renderRowActions?: (props: {
945
- cell: MRT_Cell<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: {
946
857
  row: MRT_Row<TData>;
947
858
  table: MRT_TableInstance<TData>;
948
- }) => ReactNode;
949
- renderToolbarInternalActions?: (props: {
950
- table: MRT_TableInstance<TData>;
951
- }) => ReactNode;
952
- renderTopToolbar?:
953
- | ReactNode
954
- | ((props: { table: MRT_TableInstance<TData> }) => ReactNode);
955
- renderTopToolbarCustomActions?: (props: {
956
- table: MRT_TableInstance<TData>;
957
- }) => ReactNode;
958
- rowCount?: number;
959
- rowNumberMode?: 'original' | 'static';
960
- selectAllMode?: 'all' | 'page';
961
- /**
962
- * Manage state externally any way you want, then pass it back into MRT.
963
- */
964
- state?: Partial<MRT_TableState<TData>>;
965
- /**
966
- * Sequence of features important any dependent feature must be defined first
967
- */
968
- tableFeatures?: Array<MRT_CreateTableFeature<TData>>;
969
- /**
970
- * Get access to the table instance via a ref to read state or call built-in methods
971
- */
972
- tableInstanceRef?: MutableRefObject<MRT_TableInstance<TData> | null>;
973
- /**
974
- * @deprecated Use `rowVirtualizerInstanceRef` instead
975
- */
976
- virtualizerInstanceRef?: any;
977
- /**
978
- * @deprecated Use `rowVirtualizerProps` instead
979
- */
980
- virtualizerProps?: any;
981
- }
982
- > & {
983
- columnVirtualizerInstanceRef?: MutableRefObject<Virtualizer<
984
- HTMLDivElement,
985
- HTMLTableCellElement
986
- > | null>;
987
- columnVirtualizerProps?:
988
- | Partial<VirtualizerOptions<HTMLDivElement, HTMLTableCellElement>>
989
- | ((props: {
990
- table: MRT_TableInstance<TData>;
991
- }) => Partial<
992
- VirtualizerOptions<HTMLDivElement, HTMLTableCellElement>
993
- >);
994
- rowVirtualizerInstanceRef?: MutableRefObject<Virtualizer<
995
- HTMLDivElement,
996
- HTMLTableRowElement
997
- > | null>;
998
- rowVirtualizerProps?:
999
- | Partial<VirtualizerOptions<HTMLDivElement, HTMLTableRowElement>>
1000
- | ((props: {
1001
- table: MRT_TableInstance<TData>;
1002
- }) => Partial<VirtualizerOptions<HTMLDivElement, HTMLTableRowElement>>);
1003
- };
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
+ };