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/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
- "version": "1.14.0",
2
+ "version": "2.0.0-alpha.0",
3
3
  "license": "MIT",
4
4
  "name": "material-react-table",
5
5
  "description": "A fully featured Material UI V5 implementation of TanStack React Table V8, written from the ground up in TypeScript.",
6
- "author": "Kevin Vandy",
6
+ "author": "KevinVandy",
7
7
  "keywords": [
8
8
  "react-table",
9
9
  "material-ui",
@@ -60,61 +60,63 @@
60
60
  "storybook:dev": "storybook dev -p 6006"
61
61
  },
62
62
  "devDependencies": {
63
- "@babel/core": "^7.22.5",
64
- "@babel/preset-react": "^7.22.5",
63
+ "@babel/core": "^7.23.0",
64
+ "@babel/preset-react": "^7.22.15",
65
65
  "@emotion/react": "^11.11.1",
66
66
  "@emotion/styled": "^11.11.0",
67
- "@faker-js/faker": "^8.0.2",
68
- "@mui/icons-material": "^5.11.16",
69
- "@mui/material": "^5.13.4",
67
+ "@faker-js/faker": "^8.1.0",
68
+ "@mui/icons-material": "^5.14.9",
69
+ "@mui/material": "^5.14.10",
70
+ "@mui/x-date-pickers": "^6.15.0",
70
71
  "@rollup/plugin-babel": "^6.0.3",
71
- "@rollup/plugin-node-resolve": "^15.1.0",
72
- "@rollup/plugin-typescript": "^11.1.1",
73
- "@size-limit/preset-small-lib": "^8.2.4",
74
- "@storybook/addon-a11y": "^7.0.20",
75
- "@storybook/addon-essentials": "^7.0.20",
76
- "@storybook/addon-interactions": "^7.0.20",
77
- "@storybook/addon-links": "^7.0.20",
78
- "@storybook/addon-storysource": "^7.0.20",
79
- "@storybook/blocks": "^7.0.20",
80
- "@storybook/react": "^7.0.20",
81
- "@storybook/react-vite": "^7.0.20",
82
- "@storybook/testing-library": "^0.1.0",
83
- "@types/node": "^20.3.0",
84
- "@types/react": "^18.2.11",
85
- "@types/react-dom": "^18.2.4",
86
- "@typescript-eslint/eslint-plugin": "^5.59.9",
87
- "@typescript-eslint/parser": "^5.59.9",
88
- "@vitejs/plugin-react": "^4.0.0",
89
- "eslint": "^8.42.0",
72
+ "@rollup/plugin-node-resolve": "^15.2.1",
73
+ "@rollup/plugin-typescript": "^11.1.4",
74
+ "@size-limit/preset-small-lib": "^9.0.0",
75
+ "@storybook/addon-a11y": "^7.4.5",
76
+ "@storybook/addon-essentials": "^7.4.5",
77
+ "@storybook/addon-interactions": "^7.4.5",
78
+ "@storybook/addon-links": "^7.4.5",
79
+ "@storybook/addon-storysource": "^7.4.5",
80
+ "@storybook/blocks": "^7.4.5",
81
+ "@storybook/react": "^7.4.5",
82
+ "@storybook/react-vite": "^7.4.5",
83
+ "@storybook/testing-library": "^0.2.1",
84
+ "@types/node": "^20.7.0",
85
+ "@types/react": "^18.2.22",
86
+ "@types/react-dom": "^18.2.7",
87
+ "@typescript-eslint/eslint-plugin": "^6.7.3",
88
+ "@typescript-eslint/parser": "^6.7.3",
89
+ "@vitejs/plugin-react": "^4.1.0",
90
+ "eslint": "^8.50.0",
90
91
  "eslint-plugin-mui-path-imports": "^0.0.15",
91
92
  "prop-types": "^15.8.1",
92
93
  "react": "^18.2.0",
93
94
  "react-dom": "^18.2.0",
94
95
  "react-is": "^18.2.0",
95
96
  "rollup": "^2.79.1",
96
- "rollup-plugin-copy": "^3.4.0",
97
- "rollup-plugin-dts": "^5.3.0",
97
+ "rollup-plugin-copy": "^3.5.0",
98
+ "rollup-plugin-dts": "^6.0.2",
98
99
  "rollup-plugin-peer-deps-external": "^2.2.4",
99
- "size-limit": "^8.2.4",
100
- "storybook": "^7.0.20",
101
- "storybook-dark-mode": "^3.0.0",
102
- "tslib": "^2.5.3",
103
- "typescript": "^5.1.3",
104
- "vite": "^4.3.9"
100
+ "size-limit": "^9.0.0",
101
+ "storybook": "^7.4.5",
102
+ "storybook-dark-mode": "^3.0.1",
103
+ "tslib": "^2.6.2",
104
+ "typescript": "^5.2.2",
105
+ "vite": "^4.4.9"
105
106
  },
106
107
  "peerDependencies": {
107
- "@emotion/react": ">=11",
108
- "@emotion/styled": ">=11",
109
- "@mui/icons-material": ">=5",
110
- "@mui/material": ">=5",
111
- "react": ">=17.0",
112
- "react-dom": ">=17.0"
108
+ "@emotion/react": ">=11.11",
109
+ "@emotion/styled": ">=11.11",
110
+ "@mui/icons-material": ">=5.11",
111
+ "@mui/material": ">=5.13",
112
+ "@mui/x-date-pickers": ">=6.8.0",
113
+ "react": ">=18.0",
114
+ "react-dom": ">=18.0"
113
115
  },
114
116
  "dependencies": {
115
117
  "@tanstack/match-sorter-utils": "8.8.4",
116
- "@tanstack/react-table": "8.9.2",
117
- "@tanstack/react-virtual": "3.0.0-beta.54",
118
+ "@tanstack/react-table": "8.10.3",
119
+ "@tanstack/react-virtual": "3.0.0-beta.60",
118
120
  "highlight-words": "1.2.2"
119
121
  }
120
122
  }
@@ -1,172 +1,35 @@
1
- import { useMemo } from 'react';
2
- import { MRT_AggregationFns } from './aggregationFns';
3
- import { MRT_FilterFns } from './filterFns';
4
- import { MRT_SortingFns } from './sortingFns';
5
- import { MRT_DefaultColumn, MRT_DefaultDisplayColumn } from './column.utils';
6
- import { MRT_Default_Icons } from './icons';
7
- import { MRT_Localization_EN } from './_locales/en';
8
- import { MRT_TableRoot } from './table/MRT_TableRoot';
9
- import { type MaterialReactTableProps } from './types';
10
-
11
- export { MRT_AggregationFns, MRT_FilterFns, MRT_SortingFns };
12
-
13
- export const MaterialReactTable = <TData extends Record<string, any> = {}>({
14
- aggregationFns,
15
- autoResetExpanded = false,
16
- columnResizeMode = 'onChange',
17
- defaultColumn,
18
- defaultDisplayColumn,
19
- editingMode = 'modal',
20
- enableBottomToolbar = true,
21
- enableColumnActions = true,
22
- enableColumnFilters = true,
23
- enableColumnOrdering = false,
24
- enableColumnResizing = false,
25
- enableDensityToggle = true,
26
- enableExpandAll = true,
27
- enableExpanding,
28
- enableFilterMatchHighlighting = true,
29
- enableFilters = true,
30
- enableFullScreenToggle = true,
31
- enableGlobalFilter = true,
32
- enableGlobalFilterRankedResults = true,
33
- enableGrouping = false,
34
- enableHiding = true,
35
- enableMultiRowSelection = true,
36
- enableMultiSort = true,
37
- enablePagination = true,
38
- enablePinning = false,
39
- enableRowSelection = false,
40
- enableSelectAll = true,
41
- enableSorting = true,
42
- enableStickyHeader = false,
43
- enableTableFooter = true,
44
- enableTableHead = true,
45
- enableToolbarInternalActions = true,
46
- enableTopToolbar = true,
47
- filterFns,
48
- icons,
49
- layoutMode = 'semantic',
50
- localization,
51
- manualFiltering,
52
- manualGrouping,
53
- manualPagination,
54
- manualSorting,
55
- positionActionsColumn = 'first',
56
- positionExpandColumn = 'first',
57
- positionGlobalFilter = 'right',
58
- positionPagination = 'bottom',
59
- positionToolbarAlertBanner = 'top',
60
- positionToolbarDropZone = 'top',
61
- rowNumberMode = 'original',
62
- selectAllMode = 'page',
63
- sortingFns,
64
- ...rest
65
- }: MaterialReactTableProps<TData>) => {
66
- const _icons = useMemo(() => ({ ...MRT_Default_Icons, ...icons }), [icons]);
67
- const _localization = useMemo(
68
- () => ({
69
- ...MRT_Localization_EN,
70
- ...localization,
71
- }),
72
- [localization],
73
- );
74
- const _aggregationFns = useMemo(
75
- () => ({ ...MRT_AggregationFns, ...aggregationFns }),
76
- [],
77
- );
78
- const _filterFns = useMemo(() => ({ ...MRT_FilterFns, ...filterFns }), []);
79
- const _sortingFns = useMemo(() => ({ ...MRT_SortingFns, ...sortingFns }), []);
80
- const _defaultColumn = useMemo(
81
- () => ({ ...MRT_DefaultColumn, ...defaultColumn }),
82
- [defaultColumn],
83
- );
84
- const _defaultDisplayColumn = useMemo(
85
- () => ({
86
- ...MRT_DefaultDisplayColumn,
87
- ...defaultDisplayColumn,
88
- }),
89
- [defaultDisplayColumn],
90
- );
91
-
92
- if (rest.enableRowVirtualization || rest.enableColumnVirtualization) {
93
- layoutMode = 'grid';
94
- }
95
-
96
- if (rest.enableRowVirtualization) {
97
- enableStickyHeader = true;
98
- }
99
-
100
- if (enablePagination === false && manualPagination === undefined) {
101
- manualPagination = true;
102
- }
1
+ import { useMaterialReactTable } from './useMaterialReactTable';
2
+ import { MRT_TablePaper } from './table/MRT_TablePaper';
3
+ import {
4
+ type MRT_TableOptions,
5
+ type MRT_TableInstance,
6
+ type Xor,
7
+ } from './types';
8
+
9
+ type TableInstanceProp<TData extends Record<string, any> = {}> = {
10
+ table: MRT_TableInstance<TData>;
11
+ };
103
12
 
104
- if (!rest.data?.length) {
105
- manualFiltering = true;
106
- manualGrouping = true;
107
- manualPagination = true;
108
- manualSorting = true;
13
+ type Props<TData extends Record<string, any> = {}> = Xor<
14
+ TableInstanceProp<TData>,
15
+ MRT_TableOptions<TData>
16
+ >;
17
+
18
+ const isTableInstanceProp = <TData extends Record<string, any> = {}>(
19
+ props: Props<TData>,
20
+ ): props is TableInstanceProp<TData> =>
21
+ (props as TableInstanceProp<TData>).table !== undefined;
22
+
23
+ export const MaterialReactTable = <TData extends Record<string, any> = {}>(
24
+ props: Props<TData>,
25
+ ) => {
26
+ let table: MRT_TableInstance<TData>;
27
+
28
+ if (isTableInstanceProp(props)) {
29
+ table = props.table;
30
+ } else {
31
+ table = useMaterialReactTable(props);
109
32
  }
110
33
 
111
- return (
112
- <MRT_TableRoot
113
- aggregationFns={_aggregationFns}
114
- autoResetExpanded={autoResetExpanded}
115
- columnResizeMode={columnResizeMode}
116
- defaultColumn={_defaultColumn}
117
- defaultDisplayColumn={_defaultDisplayColumn}
118
- editingMode={editingMode}
119
- enableBottomToolbar={enableBottomToolbar}
120
- enableColumnActions={enableColumnActions}
121
- enableColumnFilters={enableColumnFilters}
122
- enableColumnOrdering={enableColumnOrdering}
123
- enableColumnResizing={enableColumnResizing}
124
- enableDensityToggle={enableDensityToggle}
125
- enableExpandAll={enableExpandAll}
126
- enableExpanding={enableExpanding}
127
- enableFilterMatchHighlighting={enableFilterMatchHighlighting}
128
- enableFilters={enableFilters}
129
- enableFullScreenToggle={enableFullScreenToggle}
130
- enableGlobalFilter={enableGlobalFilter}
131
- enableGlobalFilterRankedResults={enableGlobalFilterRankedResults}
132
- enableGrouping={enableGrouping}
133
- enableHiding={enableHiding}
134
- enableMultiRowSelection={enableMultiRowSelection}
135
- enableMultiSort={enableMultiSort}
136
- enablePagination={enablePagination}
137
- enablePinning={enablePinning}
138
- enableRowSelection={enableRowSelection}
139
- enableSelectAll={enableSelectAll}
140
- enableSorting={enableSorting}
141
- enableStickyHeader={enableStickyHeader}
142
- enableTableFooter={enableTableFooter}
143
- enableTableHead={enableTableHead}
144
- enableToolbarInternalActions={enableToolbarInternalActions}
145
- enableTopToolbar={enableTopToolbar}
146
- filterFns={_filterFns}
147
- icons={_icons}
148
- layoutMode={layoutMode}
149
- localization={_localization}
150
- manualFiltering={manualFiltering}
151
- manualGrouping={manualGrouping}
152
- manualPagination={manualPagination}
153
- manualSorting={manualSorting}
154
- positionActionsColumn={positionActionsColumn}
155
- positionExpandColumn={positionExpandColumn}
156
- positionGlobalFilter={positionGlobalFilter}
157
- positionPagination={positionPagination}
158
- positionToolbarAlertBanner={positionToolbarAlertBanner}
159
- positionToolbarDropZone={positionToolbarDropZone}
160
- rowNumberMode={rowNumberMode}
161
- selectAllMode={selectAllMode}
162
- sortingFns={_sortingFns}
163
- {...rest}
164
- />
165
- );
34
+ return <MRT_TablePaper table={table} />;
166
35
  };
167
-
168
- /**
169
- * @deprecated Use named exports instead of default export (will be removed in v2)
170
- * @example import { MaterialReactTable } from 'material-react-table';
171
- */
172
- export default MaterialReactTable;
@@ -10,21 +10,21 @@ import { Memo_MRT_TableBodyRow, MRT_TableBodyRow } from './MRT_TableBodyRow';
10
10
  import { rankGlobalFuzzy } from '../sortingFns';
11
11
  import { type MRT_Row, type MRT_TableInstance } from '../types';
12
12
 
13
- interface Props {
13
+ interface Props<TData extends Record<string, any>> {
14
14
  columnVirtualizer?: Virtualizer<HTMLDivElement, HTMLTableCellElement>;
15
- table: MRT_TableInstance;
15
+ table: MRT_TableInstance<TData>;
16
16
  virtualColumns?: VirtualItem[];
17
17
  virtualPaddingLeft?: number;
18
18
  virtualPaddingRight?: number;
19
19
  }
20
20
 
21
- export const MRT_TableBody = ({
21
+ export const MRT_TableBody = <TData extends Record<string, any>>({
22
22
  columnVirtualizer,
23
23
  table,
24
24
  virtualColumns,
25
25
  virtualPaddingLeft,
26
26
  virtualPaddingRight,
27
- }: Props) => {
27
+ }: Props<TData>) => {
28
28
  const {
29
29
  getRowModel,
30
30
  getPrePaginationRowModel,
@@ -44,9 +44,7 @@ export const MRT_TableBody = ({
44
44
  muiTableBodyProps,
45
45
  renderEmptyRowsFallback,
46
46
  rowVirtualizerInstanceRef,
47
- rowVirtualizerProps,
48
- virtualizerInstanceRef,
49
- virtualizerProps,
47
+ rowVirtualizerOptions,
50
48
  },
51
49
  refs: { tableContainerRef, tablePaperRef },
52
50
  } = table;
@@ -65,15 +63,10 @@ export const MRT_TableBody = ({
65
63
  ? muiTableBodyProps({ table })
66
64
  : muiTableBodyProps;
67
65
 
68
- const vProps_old =
69
- virtualizerProps instanceof Function
70
- ? virtualizerProps({ table })
71
- : virtualizerProps;
72
-
73
66
  const vProps =
74
- rowVirtualizerProps instanceof Function
75
- ? rowVirtualizerProps({ table })
76
- : rowVirtualizerProps;
67
+ rowVirtualizerOptions instanceof Function
68
+ ? rowVirtualizerOptions({ table })
69
+ : rowVirtualizerOptions;
77
70
 
78
71
  const shouldRankResults = useMemo(
79
72
  () =>
@@ -130,7 +123,6 @@ export const MRT_TableBody = ({
130
123
  ? (element) => element?.getBoundingClientRect().height
131
124
  : undefined,
132
125
  overscan: 4,
133
- ...vProps_old,
134
126
  ...vProps,
135
127
  })
136
128
  : undefined;
@@ -139,11 +131,6 @@ export const MRT_TableBody = ({
139
131
  rowVirtualizerInstanceRef.current = rowVirtualizer;
140
132
  }
141
133
 
142
- //deprecated
143
- if (virtualizerInstanceRef && rowVirtualizer) {
144
- virtualizerInstanceRef.current = rowVirtualizer;
145
- }
146
-
147
134
  const virtualRows = rowVirtualizer
148
135
  ? rowVirtualizer.getVirtualItems()
149
136
  : undefined;
@@ -197,7 +184,7 @@ export const MRT_TableBody = ({
197
184
  {(virtualRows ?? rows).map((rowOrVirtualRow, rowIndex) => {
198
185
  const row = rowVirtualizer
199
186
  ? rows[rowOrVirtualRow.index]
200
- : (rowOrVirtualRow as MRT_Row);
187
+ : (rowOrVirtualRow as MRT_Row<TData>);
201
188
  const props = {
202
189
  columnVirtualizer,
203
190
  measureElement: rowVirtualizer?.measureElement,
@@ -227,4 +214,4 @@ export const MRT_TableBody = ({
227
214
  export const Memo_MRT_TableBody = memo(
228
215
  MRT_TableBody,
229
216
  (prev, next) => prev.table.options.data === next.table.options.data,
230
- );
217
+ ) as typeof MRT_TableBody;
@@ -1,6 +1,6 @@
1
1
  import {
2
- type DragEvent,
3
2
  memo,
3
+ type DragEvent,
4
4
  type MouseEvent,
5
5
  type RefObject,
6
6
  useEffect,
@@ -22,17 +22,17 @@ import {
22
22
  import { type VirtualItem } from '@tanstack/react-virtual';
23
23
  import { type MRT_Cell, type MRT_TableInstance } from '../types';
24
24
 
25
- interface Props {
26
- cell: MRT_Cell;
25
+ interface Props<TData extends Record<string, any>> {
26
+ cell: MRT_Cell<TData>;
27
27
  measureElement?: (element: HTMLTableCellElement) => void;
28
28
  numRows: number;
29
29
  rowIndex: number;
30
30
  rowRef: RefObject<HTMLTableRowElement>;
31
- table: MRT_TableInstance;
31
+ table: MRT_TableInstance<TData>;
32
32
  virtualCell?: VirtualItem;
33
33
  }
34
34
 
35
- export const MRT_TableBodyCell = ({
35
+ export const MRT_TableBodyCell = <TData extends Record<string, any>>({
36
36
  cell,
37
37
  measureElement,
38
38
  numRows,
@@ -40,12 +40,13 @@ export const MRT_TableBodyCell = ({
40
40
  rowRef,
41
41
  table,
42
42
  virtualCell,
43
- }: Props) => {
43
+ }: Props<TData>) => {
44
44
  const theme = useTheme();
45
45
  const {
46
46
  getState,
47
47
  options: {
48
- editingMode,
48
+ createDisplayMode,
49
+ editDisplayMode,
49
50
  enableClickToCopy,
50
51
  enableColumnOrdering,
51
52
  enableEditing,
@@ -53,7 +54,7 @@ export const MRT_TableBodyCell = ({
53
54
  enableRowNumbers,
54
55
  layoutMode,
55
56
  muiTableBodyCellProps,
56
- muiTableBodyCellSkeletonProps,
57
+ muiSkeletonProps,
57
58
  rowNumberMode,
58
59
  },
59
60
  refs: { editInputRefs },
@@ -61,6 +62,7 @@ export const MRT_TableBodyCell = ({
61
62
  setHoveredColumn,
62
63
  } = table;
63
64
  const {
65
+ creatingRow,
64
66
  draggingColumn,
65
67
  draggingRow,
66
68
  editingCell,
@@ -91,25 +93,20 @@ export const MRT_TableBodyCell = ({
91
93
  };
92
94
 
93
95
  const skeletonProps =
94
- muiTableBodyCellSkeletonProps instanceof Function
95
- ? muiTableBodyCellSkeletonProps({ cell, column, row, table })
96
- : muiTableBodyCellSkeletonProps;
96
+ muiSkeletonProps instanceof Function
97
+ ? muiSkeletonProps({ cell, column, row, table })
98
+ : muiSkeletonProps;
97
99
 
98
- const [skeletonWidth, setSkeletonWidth] = useState(0);
99
- useEffect(
100
- () =>
101
- setSkeletonWidth(
102
- isLoading || showSkeletons
103
- ? columnDefType === 'display'
104
- ? column.getSize() / 2
105
- : Math.round(
106
- Math.random() * (column.getSize() - column.getSize() / 3) +
107
- column.getSize() / 3,
108
- )
109
- : 100,
110
- ),
111
- [],
112
- );
100
+ const [skeletonWidth, setSkeletonWidth] = useState(100);
101
+ useEffect(() => {
102
+ if ((!isLoading && !showSkeletons) || skeletonWidth !== 100) return;
103
+ const size = column.getSize();
104
+ setSkeletonWidth(
105
+ columnDefType === 'display'
106
+ ? size / 2
107
+ : Math.round(Math.random() * (size - size / 3) + size / 3),
108
+ );
109
+ }, [isLoading, showSkeletons]);
113
110
 
114
111
  const draggingBorders = useMemo(() => {
115
112
  const isDraggingColumn = draggingColumn?.id === column.id;
@@ -158,15 +155,18 @@ export const MRT_TableBodyCell = ({
158
155
 
159
156
  const isEditing =
160
157
  isEditable &&
161
- editingMode !== 'modal' &&
162
- (editingMode === 'table' ||
158
+ !['modal', 'custom'].includes(editDisplayMode as string) &&
159
+ (editDisplayMode === 'table' ||
163
160
  editingRow?.id === row.id ||
164
161
  editingCell?.id === cell.id) &&
165
162
  !row.getIsGrouped();
166
163
 
164
+ const isCreating =
165
+ isEditable && createDisplayMode === 'row' && creatingRow?.id === row.id;
166
+
167
167
  const handleDoubleClick = (event: MouseEvent<HTMLTableCellElement>) => {
168
168
  tableCellProps?.onDoubleClick?.(event);
169
- if (isEditable && editingMode === 'cell') {
169
+ if (isEditable && editDisplayMode === 'cell') {
170
170
  setEditingCell(cell);
171
171
  queueMicrotask(() => {
172
172
  const textField = editInputRefs.current[column.id];
@@ -203,7 +203,8 @@ export const MRT_TableBodyCell = ({
203
203
  onDoubleClick={handleDoubleClick}
204
204
  sx={(theme) => ({
205
205
  alignItems: layoutMode === 'grid' ? 'center' : undefined,
206
- cursor: isEditable && editingMode === 'cell' ? 'pointer' : 'inherit',
206
+ cursor:
207
+ isEditable && editDisplayMode === 'cell' ? 'pointer' : 'inherit',
207
208
  justifyContent:
208
209
  layoutMode === 'grid' ? tableCellProps.align : undefined,
209
210
  overflow: 'hidden',
@@ -235,7 +236,7 @@ export const MRT_TableBodyCell = ({
235
236
  zIndex:
236
237
  draggingColumn?.id === column.id ? 2 : column.getIsPinned() ? 1 : 0,
237
238
  '&:hover': {
238
- outline: ['table', 'cell'].includes(editingMode ?? '')
239
+ outline: ['table', 'cell'].includes(editDisplayMode ?? '')
239
240
  ? `1px solid ${theme.palette.text.secondary}`
240
241
  : undefined,
241
242
  outlineOffset: '-1px',
@@ -253,7 +254,7 @@ export const MRT_TableBodyCell = ({
253
254
  <>
254
255
  {cell.getIsPlaceholder() ? (
255
256
  columnDef.PlaceholderCell?.({ cell, column, row, table }) ?? null
256
- ) : isLoading || showSkeletons ? (
257
+ ) : (isLoading || showSkeletons) && cell.getValue() === null ? (
257
258
  <Skeleton
258
259
  animation="wave"
259
260
  height={20}
@@ -265,11 +266,7 @@ export const MRT_TableBodyCell = ({
265
266
  column.id === 'mrt-row-numbers' ? (
266
267
  rowIndex + 1
267
268
  ) : column.id === 'mrt-row-drag' ? (
268
- <MRT_TableBodyRowGrabHandle
269
- cell={cell}
270
- rowRef={rowRef}
271
- table={table}
272
- />
269
+ <MRT_TableBodyRowGrabHandle row={row} rowRef={rowRef} table={table} />
273
270
  ) : columnDefType === 'display' &&
274
271
  (column.id === 'mrt-row-select' ||
275
272
  column.id === 'mrt-row-expand' ||
@@ -281,7 +278,7 @@ export const MRT_TableBodyCell = ({
281
278
  row,
282
279
  table,
283
280
  })
284
- ) : isEditing ? (
281
+ ) : isCreating || isEditing ? (
285
282
  <MRT_EditCellTextField cell={cell} table={table} />
286
283
  ) : (enableClickToCopy || columnDef.enableClickToCopy) &&
287
284
  columnDef.enableClickToCopy !== false ? (
@@ -302,4 +299,4 @@ export const MRT_TableBodyCell = ({
302
299
  export const Memo_MRT_TableBodyCell = memo(
303
300
  MRT_TableBodyCell,
304
301
  (prev, next) => next.cell === prev.cell,
305
- );
302
+ ) as typeof MRT_TableBodyCell;
@@ -6,12 +6,15 @@ import { type MRT_Cell, type MRT_TableInstance } from '../types';
6
6
 
7
7
  const allowedTypes = ['string', 'number'];
8
8
 
9
- interface Props {
10
- cell: MRT_Cell;
11
- table: MRT_TableInstance;
9
+ interface Props<TData extends Record<string, any>> {
10
+ cell: MRT_Cell<TData>;
11
+ table: MRT_TableInstance<TData>;
12
12
  }
13
13
 
14
- export const MRT_TableBodyCellValue = ({ cell, table }: Props) => {
14
+ export const MRT_TableBodyCellValue = <TData extends Record<string, any>>({
15
+ cell,
16
+ table,
17
+ }: Props<TData>) => {
15
18
  const {
16
19
  getState,
17
20
  options: { enableFilterMatchHighlighting },
@@ -6,20 +6,20 @@ import { MRT_TableDetailPanel } from './MRT_TableDetailPanel';
6
6
  import { type VirtualItem, type Virtualizer } from '@tanstack/react-virtual';
7
7
  import { type MRT_Cell, type MRT_Row, type MRT_TableInstance } from '../types';
8
8
 
9
- interface Props {
9
+ interface Props<TData extends Record<string, any>> {
10
10
  columnVirtualizer?: Virtualizer<HTMLDivElement, HTMLTableCellElement>;
11
11
  measureElement?: (element: HTMLTableRowElement) => void;
12
12
  numRows: number;
13
- row: MRT_Row;
13
+ row: MRT_Row<TData>;
14
14
  rowIndex: number;
15
- table: MRT_TableInstance;
15
+ table: MRT_TableInstance<TData>;
16
16
  virtualColumns?: VirtualItem[];
17
17
  virtualPaddingLeft?: number;
18
18
  virtualPaddingRight?: number;
19
19
  virtualRow?: VirtualItem;
20
20
  }
21
21
 
22
- export const MRT_TableBodyRow = ({
22
+ export const MRT_TableBodyRow = <TData extends Record<string, any>>({
23
23
  columnVirtualizer,
24
24
  measureElement,
25
25
  numRows,
@@ -30,7 +30,7 @@ export const MRT_TableBodyRow = ({
30
30
  virtualPaddingLeft,
31
31
  virtualPaddingRight,
32
32
  virtualRow,
33
- }: Props) => {
33
+ }: Props<TData>) => {
34
34
  const {
35
35
  getState,
36
36
  options: {
@@ -108,7 +108,7 @@ export const MRT_TableBodyRow = ({
108
108
  {(virtualColumns ?? row.getVisibleCells()).map((cellOrVirtualCell) => {
109
109
  const cell = columnVirtualizer
110
110
  ? row.getVisibleCells()[(cellOrVirtualCell as VirtualItem).index]
111
- : (cellOrVirtualCell as MRT_Cell);
111
+ : (cellOrVirtualCell as MRT_Cell<TData>);
112
112
  const props = {
113
113
  cell,
114
114
  measureElement: columnVirtualizer?.measureElement,
@@ -151,4 +151,4 @@ export const MRT_TableBodyRow = ({
151
151
  export const Memo_MRT_TableBodyRow = memo(
152
152
  MRT_TableBodyRow,
153
153
  (prev, next) => prev.row === next.row && prev.rowIndex === next.rowIndex,
154
- );
154
+ ) as typeof MRT_TableBodyRow;