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

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