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
@@ -90,5 +90,4 @@ export const MRT_Localization_SV: MRT_Localization = {
90
90
  ungroupByColumn: 'Avgruppera efter {column}',
91
91
  unpin: 'Avfäst',
92
92
  unpinAll: 'Avfäst alla',
93
- unsorted: 'Osorterad',
94
93
  };
@@ -90,5 +90,4 @@ export const MRT_Localization_TR: MRT_Localization = {
90
90
  ungroupByColumn: '{column} Sütununu Çöz',
91
91
  unpin: 'Çöz',
92
92
  unpinAll: 'Tümünü Çöz',
93
- unsorted: 'Sıralanmadı',
94
93
  };
@@ -90,5 +90,4 @@ export const MRT_Localization_UK: MRT_Localization = {
90
90
  ungroupByColumn: 'Розгрупувати по {column}',
91
91
  unpin: 'Відкріпити',
92
92
  unpinAll: 'Відкріпити все',
93
- unsorted: 'Не сортовано',
94
93
  };
@@ -90,5 +90,4 @@ export const MRT_Localization_VI: MRT_Localization = {
90
90
  ungroupByColumn: 'Bỏ nhóm dữ liệu theo {column}',
91
91
  unpin: 'Bỏ ghim',
92
92
  unpinAll: 'Bỏ ghim tất cả',
93
- unsorted: 'Chưa được sắp xếp',
94
93
  };
@@ -55,7 +55,7 @@ export const MRT_Localization_ZH_HANS: MRT_Localization = {
55
55
  max: '最大',
56
56
  min: '最小',
57
57
  move: '移动',
58
- noRecordsToDisplay: '无纪录可显示',
58
+ noRecordsToDisplay: '无记录可显示',
59
59
  noResultsFound: '未找到结果',
60
60
  of: '/',
61
61
  or: '或',
@@ -63,13 +63,13 @@ export const MRT_Localization_ZH_HANS: MRT_Localization = {
63
63
  pinToRight: '固定至右边',
64
64
  resetColumnSize: '重置栏位大小',
65
65
  resetOrder: '重置排序',
66
- rowActions: '横行动作',
66
+ rowActions: '横列动作',
67
67
  rowNumber: '#',
68
- rowNumbers: '横行编号',
69
- rowsPerPage: '每页横行数量',
68
+ rowNumbers: '横列号码',
69
+ rowsPerPage: '每页横列数目',
70
70
  save: '储存',
71
71
  search: '搜寻',
72
- selectedCountOfRowCountRowsSelected: '已选择横行:{selectedCount}/{rowCount}',
72
+ selectedCountOfRowCountRowsSelected: '已选择横列:{selectedCount}/{rowCount}',
73
73
  select: '选择',
74
74
  showAll: '显示全部',
75
75
  showAllColumns: '显示全部栏位',
@@ -82,12 +82,11 @@ export const MRT_Localization_ZH_HANS: MRT_Localization = {
82
82
  sortedByColumnDesc: '已按 {column} 倒序排序',
83
83
  thenBy: ',然后以',
84
84
  toggleDensity: '切换密度',
85
- toggleFullScreen: '切换全萤幕',
85
+ toggleFullScreen: '切换全屏',
86
86
  toggleSelectAll: '切换选择全部',
87
- toggleSelectRow: '切换选择横行',
87
+ toggleSelectRow: '切换选择横列',
88
88
  toggleVisibility: '切换可见度',
89
89
  ungroupByColumn: '取消按 {column} 分组',
90
90
  unpin: '取消固定',
91
91
  unpinAll: '全部取消固定',
92
- unsorted: '取消排序',
93
92
  };
@@ -66,7 +66,7 @@ export const MRT_Localization_ZH_HANT: MRT_Localization = {
66
66
  rowActions: '橫列動作',
67
67
  rowNumber: '#',
68
68
  rowNumbers: '橫列編號',
69
- rowsPerPage: '每頁橫列數量',
69
+ rowsPerPage: '每頁數量',
70
70
  save: '儲存',
71
71
  search: '搜尋',
72
72
  selectedCountOfRowCountRowsSelected: '已選擇橫列:{selectedCount}/{rowCount}',
@@ -89,5 +89,4 @@ export const MRT_Localization_ZH_HANT: MRT_Localization = {
89
89
  ungroupByColumn: '取消按 {column} 分組',
90
90
  unpin: '取消固定',
91
91
  unpinAll: '全部取消固定',
92
- unsorted: '取消排序',
93
92
  };
@@ -20,19 +20,19 @@ export const commonListItemStyles = {
20
20
  alignItems: 'center',
21
21
  };
22
22
 
23
- interface Props {
23
+ interface Props<TData extends Record<string, any>> {
24
24
  anchorEl: HTMLElement | null;
25
- header: MRT_Header;
25
+ header: MRT_Header<TData>;
26
26
  setAnchorEl: (anchorEl: HTMLElement | null) => void;
27
- table: MRT_TableInstance;
27
+ table: MRT_TableInstance<TData>;
28
28
  }
29
29
 
30
- export const MRT_ColumnActionMenu = ({
30
+ export const MRT_ColumnActionMenu = <TData extends Record<string, any>>({
31
31
  anchorEl,
32
32
  header,
33
33
  setAnchorEl,
34
34
  table,
35
- }: Props) => {
35
+ }: Props<TData>) => {
36
36
  const {
37
37
  getState,
38
38
  toggleAllColumnsVisible,
@@ -44,7 +44,7 @@ export const MRT_ColumnActionMenu = ({
44
44
  enableColumnResizing,
45
45
  enableGrouping,
46
46
  enableHiding,
47
- enablePinning,
47
+ enableColumnPinning,
48
48
  enableSorting,
49
49
  enableSortingRemoval,
50
50
  icons: {
@@ -263,7 +263,7 @@ export const MRT_ColumnActionMenu = ({
263
263
  ...(enableGrouping && column.getCanGroup()
264
264
  ? [
265
265
  <MenuItem
266
- divider={enablePinning}
266
+ divider={enableColumnPinning}
267
267
  key={6}
268
268
  onClick={handleGroupByColumn}
269
269
  sx={commonMenuItemStyles}
@@ -279,7 +279,7 @@ export const MRT_ColumnActionMenu = ({
279
279
  </MenuItem>,
280
280
  ]
281
281
  : []),
282
- ...(enablePinning && column.getCanPin()
282
+ ...(enableColumnPinning && column.getCanPin()
283
283
  ? [
284
284
  <MenuItem
285
285
  disabled={column.getIsPinned() === 'left' || !column.getCanPin()}
@@ -102,8 +102,9 @@ export const mrtFilterOptions = (
102
102
  const rangeModes = ['between', 'betweenInclusive', 'inNumberRange'];
103
103
  const emptyModes = ['empty', 'notEmpty'];
104
104
  const arrModes = ['arrIncludesSome', 'arrIncludesAll', 'arrIncludes'];
105
+ const rangeVariants = ['range-slider', 'date-range', 'range'];
105
106
 
106
- interface Props<TData extends Record<string, any> = {}> {
107
+ interface Props<TData extends Record<string, any>> {
107
108
  anchorEl: HTMLElement | null;
108
109
  header?: MRT_Header<TData>;
109
110
  onSelect?: () => void;
@@ -112,7 +113,7 @@ interface Props<TData extends Record<string, any> = {}> {
112
113
  table: MRT_TableInstance<TData>;
113
114
  }
114
115
 
115
- export const MRT_FilterOptionMenu = <TData extends Record<string, any> = {}>({
116
+ export const MRT_FilterOptionMenu = <TData extends Record<string, any>>({
116
117
  anchorEl,
117
118
  header,
118
119
  onSelect,
@@ -140,7 +141,7 @@ export const MRT_FilterOptionMenu = <TData extends Record<string, any> = {}>({
140
141
  let allowedColumnFilterOptions =
141
142
  columnDef?.columnFilterModeOptions ?? columnFilterModeOptions;
142
143
 
143
- if (columnDef?.filterVariant === 'range-slider') {
144
+ if (rangeVariants.includes(columnDef?.filterVariant as string)) {
144
145
  allowedColumnFilterOptions = [
145
146
  ...rangeModes,
146
147
  ...(allowedColumnFilterOptions ?? []),
@@ -8,22 +8,23 @@ import {
8
8
  commonMenuItemStyles,
9
9
  } from './MRT_ColumnActionMenu';
10
10
  import { type MRT_Row, type MRT_TableInstance } from '../types';
11
+ import { parseFromValuesOrFunc } from '../column.utils';
11
12
 
12
- interface Props {
13
+ interface Props<TData extends Record<string, any>> {
13
14
  anchorEl: HTMLElement | null;
14
15
  handleEdit: (event: MouseEvent) => void;
15
- row: MRT_Row;
16
+ row: MRT_Row<TData>;
16
17
  setAnchorEl: (anchorEl: HTMLElement | null) => void;
17
- table: MRT_TableInstance;
18
+ table: MRT_TableInstance<TData>;
18
19
  }
19
20
 
20
- export const MRT_RowActionMenu = ({
21
+ export const MRT_RowActionMenu = <TData extends Record<string, any>>({
21
22
  anchorEl,
22
23
  handleEdit,
23
24
  row,
24
25
  setAnchorEl,
25
26
  table,
26
- }: Props) => {
27
+ }: Props<TData>) => {
27
28
  const {
28
29
  getState,
29
30
  options: {
@@ -45,18 +46,16 @@ export const MRT_RowActionMenu = ({
45
46
  dense: density === 'compact',
46
47
  }}
47
48
  >
48
- {enableEditing instanceof Function
49
- ? enableEditing(row)
50
- : enableEditing && (
51
- <MenuItem onClick={handleEdit} sx={commonMenuItemStyles}>
52
- <Box sx={commonListItemStyles}>
53
- <ListItemIcon>
54
- <EditIcon />
55
- </ListItemIcon>
56
- {localization.edit}
57
- </Box>
58
- </MenuItem>
59
- )}
49
+ {parseFromValuesOrFunc(enableEditing, row) && (
50
+ <MenuItem onClick={handleEdit} sx={commonMenuItemStyles}>
51
+ <Box sx={commonListItemStyles}>
52
+ <ListItemIcon>
53
+ <EditIcon />
54
+ </ListItemIcon>
55
+ {localization.edit}
56
+ </Box>
57
+ </MenuItem>
58
+ )}
60
59
  {renderRowActionMenuItems?.({
61
60
  row,
62
61
  table,
@@ -7,16 +7,14 @@ import { MRT_ShowHideColumnsMenuItems } from './MRT_ShowHideColumnsMenuItems';
7
7
  import { getDefaultColumnOrderIds } from '../column.utils';
8
8
  import { type MRT_Column, type MRT_TableInstance } from '../types';
9
9
 
10
- interface Props<TData extends Record<string, any> = {}> {
10
+ interface Props<TData extends Record<string, any>> {
11
11
  anchorEl: HTMLElement | null;
12
12
  isSubMenu?: boolean;
13
13
  setAnchorEl: (anchorEl: HTMLElement | null) => void;
14
14
  table: MRT_TableInstance<TData>;
15
15
  }
16
16
 
17
- export const MRT_ShowHideColumnsMenu = <
18
- TData extends Record<string, any> = {},
19
- >({
17
+ export const MRT_ShowHideColumnsMenu = <TData extends Record<string, any>>({
20
18
  anchorEl,
21
19
  setAnchorEl,
22
20
  table,
@@ -35,7 +33,7 @@ export const MRT_ShowHideColumnsMenu = <
35
33
  options: {
36
34
  enableColumnOrdering,
37
35
  enableHiding,
38
- enablePinning,
36
+ enableColumnPinning,
39
37
  localization,
40
38
  },
41
39
  } = table;
@@ -111,7 +109,7 @@ export const MRT_ShowHideColumnsMenu = <
111
109
  {localization.resetOrder}
112
110
  </Button>
113
111
  )}
114
- {enablePinning && (
112
+ {enableColumnPinning && (
115
113
  <Button
116
114
  disabled={!getIsSomeColumnsPinned()}
117
115
  onClick={() => table.resetColumnPinning(true)}
@@ -16,7 +16,7 @@ import { MRT_GrabHandleButton } from '../buttons/MRT_GrabHandleButton';
16
16
  import { reorderColumn } from '../column.utils';
17
17
  import { type MRT_Column, type MRT_TableInstance } from '../types';
18
18
 
19
- interface Props<TData extends Record<string, any> = {}> {
19
+ interface Props<TData extends Record<string, any>> {
20
20
  allColumns: MRT_Column<TData>[];
21
21
  column: MRT_Column<TData>;
22
22
  hoveredColumn: MRT_Column<TData> | null;
@@ -25,7 +25,7 @@ interface Props<TData extends Record<string, any> = {}> {
25
25
  }
26
26
 
27
27
  export const MRT_ShowHideColumnsMenuItems = <
28
- TData extends Record<string, any> = {},
28
+ TData extends Record<string, any>,
29
29
  >({
30
30
  allColumns,
31
31
  hoveredColumn,
@@ -38,7 +38,7 @@ export const MRT_ShowHideColumnsMenuItems = <
38
38
  options: {
39
39
  enableColumnOrdering,
40
40
  enableHiding,
41
- enablePinning,
41
+ enableColumnPinning,
42
42
  localization,
43
43
  },
44
44
  setColumnOrder,
@@ -127,7 +127,7 @@ export const MRT_ShowHideColumnsMenuItems = <
127
127
  ) : (
128
128
  <Box sx={{ width: '28px' }} />
129
129
  ))}
130
- {enablePinning &&
130
+ {enableColumnPinning &&
131
131
  (column.getCanPin() ? (
132
132
  <MRT_ColumnPinningButtons column={column} table={table} />
133
133
  ) : (
@@ -0,0 +1,5 @@
1
+ export * from './MRT_ColumnActionMenu';
2
+ export * from './MRT_FilterOptionMenu';
3
+ export * from './MRT_RowActionMenu';
4
+ export * from './MRT_ShowHideColumnsMenu';
5
+ export * from './MRT_ShowHideColumnsMenuItems';
@@ -0,0 +1,107 @@
1
+ import Dialog from '@mui/material/Dialog';
2
+ import DialogActions from '@mui/material/DialogActions';
3
+ import DialogContent from '@mui/material/DialogContent';
4
+ import DialogTitle from '@mui/material/DialogTitle';
5
+ import Stack from '@mui/material/Stack';
6
+ import { MRT_EditActionButtons } from '../buttons/MRT_EditActionButtons';
7
+ import { MRT_EditCellTextField } from '../inputs/MRT_EditCellTextField';
8
+ import { type MRT_Row, type MRT_TableInstance } from '../types';
9
+ import { parseFromValuesOrFunc } from '../column.utils';
10
+
11
+ interface Props<TData extends Record<string, any>> {
12
+ open: boolean;
13
+ table: MRT_TableInstance<TData>;
14
+ }
15
+
16
+ export const MRT_EditRowModal = <TData extends Record<string, any>>({
17
+ open,
18
+ table,
19
+ }: Props<TData>) => {
20
+ const {
21
+ getState,
22
+ options: {
23
+ localization,
24
+ onEditingRowCancel,
25
+ onCreatingRowCancel,
26
+ renderEditRowModalContent,
27
+ renderCreateRowModalContent,
28
+ muiCreateRowModalProps,
29
+ muiEditRowModalProps,
30
+ },
31
+ setEditingRow,
32
+ setCreatingRow,
33
+ } = table;
34
+ const { creatingRow, editingRow } = getState();
35
+ const row = (creatingRow ?? editingRow) as MRT_Row<TData>;
36
+
37
+ const dialogProps = {
38
+ ...parseFromValuesOrFunc(muiEditRowModalProps, { row, table }),
39
+ ...(creatingRow &&
40
+ parseFromValuesOrFunc(muiCreateRowModalProps, { row, table })),
41
+ };
42
+
43
+ const internalEditComponents = row
44
+ .getAllCells()
45
+ .filter((cell) => cell.column.columnDef.columnDefType === 'data')
46
+ .map((cell) => (
47
+ <MRT_EditCellTextField
48
+ cell={cell as any}
49
+ key={cell.id}
50
+ table={table as any}
51
+ />
52
+ ));
53
+
54
+ return (
55
+ <Dialog
56
+ fullWidth
57
+ maxWidth="xs"
58
+ onClose={(event, reason) => {
59
+ if (creatingRow) {
60
+ onCreatingRowCancel?.({ row, table });
61
+ setCreatingRow(null);
62
+ } else {
63
+ onEditingRowCancel?.({ row, table });
64
+ setEditingRow(null);
65
+ }
66
+ row._valuesCache = {} as any; //reset values cache
67
+ dialogProps.onClose?.(event, reason);
68
+ }}
69
+ open={open}
70
+ {...dialogProps}
71
+ >
72
+ {((creatingRow &&
73
+ renderCreateRowModalContent?.({
74
+ row,
75
+ table,
76
+ internalEditComponents,
77
+ })) ||
78
+ renderEditRowModalContent?.({
79
+ row,
80
+ table,
81
+ internalEditComponents,
82
+ })) ?? (
83
+ <>
84
+ <DialogTitle sx={{ textAlign: 'center' }}>
85
+ {localization.edit}
86
+ </DialogTitle>
87
+ <DialogContent>
88
+ <form onSubmit={(e) => e.preventDefault()}>
89
+ <Stack
90
+ sx={{
91
+ gap: '24px',
92
+ paddingTop: '16px',
93
+ width: '100%',
94
+ }}
95
+ >
96
+ {internalEditComponents}
97
+ </Stack>
98
+ </form>
99
+ </DialogContent>
100
+ <DialogActions sx={{ p: '1.25rem' }}>
101
+ <MRT_EditActionButtons row={row} table={table} variant="text" />
102
+ </DialogActions>
103
+ </>
104
+ )}
105
+ </Dialog>
106
+ );
107
+ };
@@ -0,0 +1 @@
1
+ export * from './MRT_EditRowModal';
package/src/sortingFns.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  import { compareItems, type RankingInfo } from '@tanstack/match-sorter-utils';
2
2
  import { type Row, sortingFns } from '@tanstack/react-table';
3
+ import { type MRT_Row } from './types';
3
4
 
4
- const fuzzy = <TData extends Record<string, any> = {}>(
5
+ const fuzzy = <TData extends Record<string, any>>(
5
6
  rowA: Row<TData>,
6
7
  rowB: Row<TData>,
7
8
  columnId: string,
@@ -24,6 +25,9 @@ export const MRT_SortingFns = {
24
25
  fuzzy,
25
26
  };
26
27
 
27
- export const rankGlobalFuzzy: any = (rowA: any, rowB: any) =>
28
+ export const rankGlobalFuzzy = <TData extends Record<string, any>>(
29
+ rowA: MRT_Row<TData>,
30
+ rowB: MRT_Row<TData>,
31
+ ) =>
28
32
  Math.max(...Object.values(rowB.columnFiltersMeta).map((v: any) => v.rank)) -
29
33
  Math.max(...Object.values(rowA.columnFiltersMeta).map((v: any) => v.rank));
@@ -9,24 +9,26 @@ import Table from '@mui/material/Table';
9
9
  import { MRT_TableHead } from '../head/MRT_TableHead';
10
10
  import { Memo_MRT_TableBody, MRT_TableBody } from '../body/MRT_TableBody';
11
11
  import { MRT_TableFooter } from '../footer/MRT_TableFooter';
12
- import { parseCSSVarId } from '../column.utils';
12
+ import { parseCSSVarId, parseFromValuesOrFunc } from '../column.utils';
13
13
  import { type MRT_TableInstance } from '../types';
14
14
 
15
- interface Props {
16
- table: MRT_TableInstance;
15
+ interface Props<TData extends Record<string, any>> {
16
+ table: MRT_TableInstance<TData>;
17
17
  }
18
18
 
19
- export const MRT_Table = ({ table }: Props) => {
19
+ export const MRT_Table = <TData extends Record<string, any>>({
20
+ table,
21
+ }: Props<TData>) => {
20
22
  const {
21
23
  getFlatHeaders,
22
24
  getState,
23
25
  options: {
24
- columns,
25
26
  columnVirtualizerInstanceRef,
26
- columnVirtualizerProps,
27
+ columnVirtualizerOptions,
28
+ columns,
27
29
  enableColumnResizing,
28
30
  enableColumnVirtualization,
29
- enablePinning,
31
+ enableColumnPinning,
30
32
  enableStickyHeader,
31
33
  enableTableFooter,
32
34
  enableTableHead,
@@ -44,15 +46,12 @@ export const MRT_Table = ({ table }: Props) => {
44
46
  isFullScreen,
45
47
  } = getState();
46
48
 
47
- const tableProps =
48
- muiTableProps instanceof Function
49
- ? muiTableProps({ table })
50
- : muiTableProps;
49
+ const tableProps = parseFromValuesOrFunc(muiTableProps, { table });
51
50
 
52
- const vProps =
53
- columnVirtualizerProps instanceof Function
54
- ? columnVirtualizerProps({ table })
55
- : columnVirtualizerProps;
51
+ const columnVirtualizerProps = parseFromValuesOrFunc(
52
+ columnVirtualizerOptions,
53
+ { table },
54
+ );
56
55
 
57
56
  const columnSizeVars = useMemo(() => {
58
57
  const headers = getFlatHeaders();
@@ -80,7 +79,7 @@ export const MRT_Table = ({ table }: Props) => {
80
79
 
81
80
  const [leftPinnedIndexes, rightPinnedIndexes] = useMemo(
82
81
  () =>
83
- enableColumnVirtualization && enablePinning
82
+ enableColumnVirtualization && enableColumnPinning
84
83
  ? [
85
84
  table.getLeftLeafColumns().map((c) => c.getPinnedIndex()),
86
85
  table
@@ -91,7 +90,7 @@ export const MRT_Table = ({ table }: Props) => {
91
90
  ),
92
91
  ]
93
92
  : [[], []],
94
- [columnPinning, enableColumnVirtualization, enablePinning],
93
+ [columnPinning, enableColumnVirtualization, enableColumnPinning],
95
94
  );
96
95
 
97
96
  const columnVirtualizer:
@@ -113,7 +112,7 @@ export const MRT_Table = ({ table }: Props) => {
113
112
  ],
114
113
  [leftPinnedIndexes, rightPinnedIndexes],
115
114
  ),
116
- ...vProps,
115
+ ...columnVirtualizerProps,
117
116
  })
118
117
  : undefined;
119
118
 
@@ -144,27 +143,30 @@ export const MRT_Table = ({ table }: Props) => {
144
143
  };
145
144
 
146
145
  return (
147
- <Table
148
- stickyHeader={enableStickyHeader || isFullScreen}
149
- {...tableProps}
150
- sx={(theme) => ({
151
- borderCollapse: 'separate',
152
- display: layoutMode === 'grid' ? 'grid' : 'table',
153
- tableLayout:
154
- layoutMode !== 'grid' && enableColumnResizing ? 'fixed' : undefined,
155
- ...(tableProps?.sx instanceof Function
156
- ? tableProps.sx(theme)
157
- : (tableProps?.sx as any)),
158
- })}
159
- style={{ ...columnSizeVars, ...tableProps?.style }}
160
- >
161
- {enableTableHead && <MRT_TableHead {...props} />}
162
- {memoMode === 'table-body' || columnSizingInfo.isResizingColumn ? (
163
- <Memo_MRT_TableBody columnVirtualizer={columnVirtualizer} {...props} />
164
- ) : (
165
- <MRT_TableBody columnVirtualizer={columnVirtualizer} {...props} />
166
- )}
167
- {enableTableFooter && <MRT_TableFooter {...props} />}
168
- </Table>
146
+ <>
147
+ <Table
148
+ stickyHeader={enableStickyHeader || isFullScreen}
149
+ {...tableProps}
150
+ sx={(theme) => ({
151
+ borderCollapse: 'separate',
152
+ display: layoutMode === 'grid' ? 'grid' : 'table',
153
+ tableLayout:
154
+ layoutMode !== 'grid' && enableColumnResizing ? 'fixed' : undefined,
155
+ ...(parseFromValuesOrFunc(tableProps?.sx, theme) as any),
156
+ })}
157
+ style={{ ...columnSizeVars, ...tableProps?.style }}
158
+ >
159
+ {enableTableHead && <MRT_TableHead {...props} />}
160
+ {memoMode === 'table-body' || columnSizingInfo.isResizingColumn ? (
161
+ <Memo_MRT_TableBody
162
+ columnVirtualizer={columnVirtualizer}
163
+ {...props}
164
+ />
165
+ ) : (
166
+ <MRT_TableBody columnVirtualizer={columnVirtualizer} {...props} />
167
+ )}
168
+ {enableTableFooter && <MRT_TableFooter {...props} />}
169
+ </Table>
170
+ </>
169
171
  );
170
172
  };
@@ -1,29 +1,37 @@
1
1
  import { useEffect, useLayoutEffect, useState } from 'react';
2
2
  import TableContainer from '@mui/material/TableContainer';
3
3
  import { MRT_Table } from './MRT_Table';
4
+ import { MRT_EditRowModal } from '../modals';
4
5
  import { type MRT_TableInstance } from '../types';
6
+ import { parseFromValuesOrFunc } from '../column.utils';
5
7
 
6
8
  const useIsomorphicLayoutEffect =
7
9
  typeof window !== 'undefined' ? useLayoutEffect : useEffect;
8
10
 
9
- interface Props {
10
- table: MRT_TableInstance;
11
+ interface Props<TData extends Record<string, any>> {
12
+ table: MRT_TableInstance<TData>;
11
13
  }
12
14
 
13
- export const MRT_TableContainer = ({ table }: Props) => {
15
+ export const MRT_TableContainer = <TData extends Record<string, any>>({
16
+ table,
17
+ }: Props<TData>) => {
14
18
  const {
15
19
  getState,
16
- options: { enableStickyHeader, muiTableContainerProps },
20
+ options: {
21
+ createDisplayMode,
22
+ editDisplayMode,
23
+ enableStickyHeader,
24
+ muiTableContainerProps,
25
+ },
17
26
  refs: { tableContainerRef, bottomToolbarRef, topToolbarRef },
18
27
  } = table;
19
- const { isFullScreen } = getState();
28
+ const { isFullScreen, creatingRow, editingRow } = getState();
20
29
 
21
30
  const [totalToolbarHeight, setTotalToolbarHeight] = useState(0);
22
31
 
23
- const tableContainerProps =
24
- muiTableContainerProps instanceof Function
25
- ? muiTableContainerProps({ table })
26
- : muiTableContainerProps;
32
+ const tableContainerProps = parseFromValuesOrFunc(muiTableContainerProps, {
33
+ table,
34
+ });
27
35
 
28
36
  useIsomorphicLayoutEffect(() => {
29
37
  const topToolbarHeight =
@@ -39,6 +47,9 @@ export const MRT_TableContainer = ({ table }: Props) => {
39
47
  setTotalToolbarHeight(topToolbarHeight + bottomToolbarHeight);
40
48
  });
41
49
 
50
+ const createModalOpen = createDisplayMode === 'modal' && creatingRow;
51
+ const editModalOpen = editDisplayMode === 'modal' && editingRow;
52
+
42
53
  return (
43
54
  <TableContainer
44
55
  {...tableContainerProps}
@@ -57,9 +68,7 @@ export const MRT_TableContainer = ({ table }: Props) => {
57
68
  ? `clamp(350px, calc(100vh - ${totalToolbarHeight}px), 9999px)`
58
69
  : undefined,
59
70
  overflow: 'auto',
60
- ...(tableContainerProps?.sx instanceof Function
61
- ? tableContainerProps.sx(theme)
62
- : (tableContainerProps?.sx as any)),
71
+ ...(parseFromValuesOrFunc(tableContainerProps?.sx, theme) as any),
63
72
  })}
64
73
  style={{
65
74
  maxHeight: isFullScreen
@@ -69,6 +78,9 @@ export const MRT_TableContainer = ({ table }: Props) => {
69
78
  }}
70
79
  >
71
80
  <MRT_Table table={table} />
81
+ {(createModalOpen || editModalOpen) && (
82
+ <MRT_EditRowModal open table={table} />
83
+ )}
72
84
  </TableContainer>
73
85
  );
74
86
  };