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
@@ -0,0 +1,173 @@
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_Localization_EN } from '../locales/en';
7
+ import { MRT_Default_Icons } from '../icons';
8
+ import { type MRT_DefinedTableOptions, type MRT_TableOptions } from '../types';
9
+
10
+ export const useMRT_TableOptions: <TData extends Record<string, any>>(
11
+ tableOptions: MRT_TableOptions<TData>,
12
+ ) => MRT_DefinedTableOptions<TData> = <TData extends Record<string, any>>({
13
+ aggregationFns,
14
+ autoResetExpanded = false,
15
+ columnFilterDisplayMode = 'subheader',
16
+ columnResizeMode = 'onChange',
17
+ createDisplayMode = 'modal',
18
+ defaultColumn,
19
+ defaultDisplayColumn,
20
+ editDisplayMode = 'modal',
21
+ enableBottomToolbar = true,
22
+ enableColumnActions = true,
23
+ enableColumnFilters = true,
24
+ enableColumnOrdering = false,
25
+ enableColumnPinning = false,
26
+ enableColumnResizing = false,
27
+ enableDensityToggle = true,
28
+ enableExpandAll = true,
29
+ enableExpanding,
30
+ enableFilterMatchHighlighting = true,
31
+ enableFilters = true,
32
+ enableFullScreenToggle = true,
33
+ enableGlobalFilter = true,
34
+ enableGlobalFilterRankedResults = true,
35
+ enableGrouping = false,
36
+ enableHiding = true,
37
+ enableMultiRowSelection = true,
38
+ enableMultiSort = true,
39
+ enablePagination = true,
40
+ enableRowPinning = false,
41
+ enableRowSelection = false,
42
+ enableSelectAll = true,
43
+ enableSorting = true,
44
+ enableStickyHeader = false,
45
+ enableTableFooter = true,
46
+ enableTableHead = true,
47
+ enableToolbarInternalActions = true,
48
+ enableTopToolbar = true,
49
+ filterFns,
50
+ icons,
51
+ layoutMode = 'semantic',
52
+ localization,
53
+ manualFiltering,
54
+ manualGrouping,
55
+ manualPagination,
56
+ manualSorting,
57
+ paginationDisplayMode = 'default',
58
+ positionActionsColumn = 'first',
59
+ positionExpandColumn = 'first',
60
+ positionGlobalFilter = 'right',
61
+ positionPagination = 'bottom',
62
+ positionToolbarAlertBanner = 'top',
63
+ positionToolbarDropZone = 'top',
64
+ rowNumberMode = 'static',
65
+ rowPinningDisplayMode = 'sticky',
66
+ selectAllMode = 'page',
67
+ sortingFns,
68
+ ...rest
69
+ }: MRT_TableOptions<TData>) => {
70
+ const _icons = useMemo(() => ({ ...MRT_Default_Icons, ...icons }), [icons]);
71
+ const _localization = useMemo(
72
+ () => ({
73
+ ...MRT_Localization_EN,
74
+ ...localization,
75
+ }),
76
+ [localization],
77
+ );
78
+ const _aggregationFns = useMemo(
79
+ () => ({ ...MRT_AggregationFns, ...aggregationFns }),
80
+ [],
81
+ );
82
+ const _filterFns = useMemo(() => ({ ...MRT_FilterFns, ...filterFns }), []);
83
+ const _sortingFns = useMemo(() => ({ ...MRT_SortingFns, ...sortingFns }), []);
84
+ const _defaultColumn = useMemo(
85
+ () => ({ ...MRT_DefaultColumn, ...defaultColumn }),
86
+ [defaultColumn],
87
+ );
88
+ const _defaultDisplayColumn = useMemo(
89
+ () => ({
90
+ ...MRT_DefaultDisplayColumn,
91
+ ...defaultDisplayColumn,
92
+ }),
93
+ [defaultDisplayColumn],
94
+ );
95
+
96
+ if (rest.enableRowVirtualization || rest.enableColumnVirtualization) {
97
+ layoutMode = 'grid';
98
+ }
99
+
100
+ if (rest.enableRowVirtualization) {
101
+ enableStickyHeader = true;
102
+ }
103
+
104
+ if (enablePagination === false && manualPagination === undefined) {
105
+ manualPagination = true;
106
+ }
107
+
108
+ if (!rest.data?.length) {
109
+ manualFiltering = true;
110
+ manualGrouping = true;
111
+ manualPagination = true;
112
+ manualSorting = true;
113
+ }
114
+
115
+ return {
116
+ aggregationFns: _aggregationFns,
117
+ autoResetExpanded,
118
+ columnFilterDisplayMode,
119
+ columnResizeMode,
120
+ createDisplayMode,
121
+ defaultColumn: _defaultColumn,
122
+ defaultDisplayColumn: _defaultDisplayColumn,
123
+ editDisplayMode,
124
+ enableBottomToolbar,
125
+ enableColumnActions,
126
+ enableColumnFilters,
127
+ enableColumnOrdering,
128
+ enableColumnPinning,
129
+ enableColumnResizing,
130
+ enableDensityToggle,
131
+ enableExpandAll,
132
+ enableExpanding,
133
+ enableFilterMatchHighlighting,
134
+ enableFilters,
135
+ enableFullScreenToggle,
136
+ enableGlobalFilter,
137
+ enableGlobalFilterRankedResults,
138
+ enableGrouping,
139
+ enableHiding,
140
+ enableMultiRowSelection,
141
+ enableMultiSort,
142
+ enablePagination,
143
+ enableRowPinning,
144
+ enableRowSelection,
145
+ enableSelectAll,
146
+ enableSorting,
147
+ enableStickyHeader,
148
+ enableTableFooter,
149
+ enableTableHead,
150
+ enableToolbarInternalActions,
151
+ enableTopToolbar,
152
+ filterFns: _filterFns,
153
+ icons: _icons,
154
+ layoutMode,
155
+ localization: _localization,
156
+ manualFiltering,
157
+ manualGrouping,
158
+ manualPagination,
159
+ manualSorting,
160
+ paginationDisplayMode,
161
+ positionActionsColumn,
162
+ positionExpandColumn,
163
+ positionGlobalFilter,
164
+ positionPagination,
165
+ positionToolbarAlertBanner,
166
+ positionToolbarDropZone,
167
+ rowNumberMode,
168
+ rowPinningDisplayMode,
169
+ selectAllMode,
170
+ sortingFns: _sortingFns,
171
+ ...rest,
172
+ };
173
+ };
package/src/index.ts ADDED
@@ -0,0 +1,16 @@
1
+ export * from './MaterialReactTable';
2
+ export * from './aggregationFns';
3
+ export * from './body';
4
+ export * from './buttons';
5
+ export * from './column.utils';
6
+ export * from './filterFns';
7
+ export * from './footer';
8
+ export * from './head';
9
+ export * from './inputs';
10
+ export * from './menus';
11
+ export * from './modals';
12
+ export * from './sortingFns';
13
+ export * from './table';
14
+ export * from './toolbar';
15
+ export * from './types';
16
+ export * from './useMaterialReactTable';
@@ -7,60 +7,58 @@ import {
7
7
  import TextField from '@mui/material/TextField';
8
8
  import MenuItem from '@mui/material/MenuItem';
9
9
  import { type TextFieldProps } from '@mui/material/TextField';
10
+ import { parseFromValuesOrFunc } from '../column.utils';
10
11
  import { type MRT_Cell, type MRT_TableInstance } from '../types';
11
12
 
12
- interface Props<TData extends Record<string, any> = {}> {
13
+ interface Props<TData extends Record<string, any>> {
13
14
  cell: MRT_Cell<TData>;
14
15
  table: MRT_TableInstance<TData>;
15
- showLabel?: boolean;
16
16
  }
17
17
 
18
- export const MRT_EditCellTextField = <TData extends Record<string, any> = {}>({
18
+ export const MRT_EditCellTextField = <TData extends Record<string, any>>({
19
19
  cell,
20
- showLabel,
21
20
  table,
22
21
  }: Props<TData>) => {
23
22
  const {
24
23
  getState,
25
- options: { muiTableBodyCellEditTextFieldProps },
24
+ options: { createDisplayMode, editDisplayMode, muiEditTextFieldProps },
26
25
  refs: { editInputRefs },
27
26
  setEditingCell,
28
27
  setEditingRow,
28
+ setCreatingRow,
29
29
  } = table;
30
30
  const { column, row } = cell;
31
31
  const { columnDef } = column;
32
- const { editingRow } = getState();
32
+ const { creatingRow, editingRow } = getState();
33
33
 
34
- const [value, setValue] = useState(() => cell.getValue<string>());
35
-
36
- const mTableBodyCellEditTextFieldProps =
37
- muiTableBodyCellEditTextFieldProps instanceof Function
38
- ? muiTableBodyCellEditTextFieldProps({ cell, column, row, table })
39
- : muiTableBodyCellEditTextFieldProps;
34
+ const isCreating = creatingRow?.id === row.id;
35
+ const isEditing = editingRow?.id === row.id;
36
+ const isSelectEdit = columnDef.editVariant === 'select';
40
37
 
41
- const mcTableBodyCellEditTextFieldProps =
42
- columnDef.muiTableBodyCellEditTextFieldProps instanceof Function
43
- ? columnDef.muiTableBodyCellEditTextFieldProps({
44
- cell,
45
- column,
46
- row,
47
- table,
48
- })
49
- : columnDef.muiTableBodyCellEditTextFieldProps;
38
+ const [value, setValue] = useState(() => cell.getValue<string>());
50
39
 
51
40
  const textFieldProps: TextFieldProps = {
52
- ...mTableBodyCellEditTextFieldProps,
53
- ...mcTableBodyCellEditTextFieldProps,
41
+ ...parseFromValuesOrFunc(muiEditTextFieldProps, {
42
+ cell,
43
+ column,
44
+ row,
45
+ table,
46
+ }),
47
+ ...parseFromValuesOrFunc(columnDef.muiEditTextFieldProps, {
48
+ cell,
49
+ column,
50
+ row,
51
+ table,
52
+ }),
54
53
  };
55
54
 
56
- const isSelectEdit = columnDef.editVariant === 'select';
57
-
58
- const saveRow = (newValue: string) => {
59
- if (editingRow) {
60
- setEditingRow({
61
- ...editingRow,
62
- _valuesCache: { ...editingRow._valuesCache, [column.id]: newValue },
63
- });
55
+ const saveInputValueToRowCache = (newValue: string) => {
56
+ //@ts-ignore
57
+ row._valuesCache[column.id] = newValue;
58
+ if (isCreating) {
59
+ setCreatingRow({ ...row });
60
+ } else if (isEditing) {
61
+ setEditingRow({ ...row });
64
62
  }
65
63
  };
66
64
 
@@ -68,19 +66,19 @@ export const MRT_EditCellTextField = <TData extends Record<string, any> = {}>({
68
66
  textFieldProps.onChange?.(event);
69
67
  setValue(event.target.value);
70
68
  if (textFieldProps?.select) {
71
- saveRow(event.target.value);
69
+ saveInputValueToRowCache(event.target.value);
72
70
  }
73
71
  };
74
72
 
75
73
  const handleBlur = (event: FocusEvent<HTMLInputElement>) => {
76
74
  textFieldProps.onBlur?.(event);
77
- saveRow(value);
75
+ saveInputValueToRowCache(value);
78
76
  setEditingCell(null);
79
77
  };
80
78
 
81
79
  const handleEnterKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {
82
80
  textFieldProps.onKeyDown?.(event);
83
- if (event.key === 'Enter') {
81
+ if (event.key === 'Enter' && !event.shiftKey) {
84
82
  editInputRefs.current[column.id]?.blur();
85
83
  }
86
84
  };
@@ -91,11 +89,7 @@ export const MRT_EditCellTextField = <TData extends Record<string, any> = {}>({
91
89
 
92
90
  return (
93
91
  <TextField
94
- disabled={
95
- (columnDef.enableEditing instanceof Function
96
- ? columnDef.enableEditing(row)
97
- : columnDef.enableEditing) === false
98
- }
92
+ disabled={parseFromValuesOrFunc(columnDef.enableEditing, row) === false}
99
93
  fullWidth
100
94
  inputRef={(inputRef) => {
101
95
  if (inputRef) {
@@ -105,10 +99,22 @@ export const MRT_EditCellTextField = <TData extends Record<string, any> = {}>({
105
99
  }
106
100
  }
107
101
  }}
108
- label={showLabel ? column.columnDef.header : undefined}
102
+ label={
103
+ ['modal', 'custom'].includes(
104
+ (isCreating ? createDisplayMode : editDisplayMode) as string,
105
+ )
106
+ ? column.columnDef.header
107
+ : undefined
108
+ }
109
109
  margin="none"
110
110
  name={column.id}
111
- placeholder={columnDef.header}
111
+ placeholder={
112
+ !['modal', 'custom'].includes(
113
+ (isCreating ? createDisplayMode : editDisplayMode) as string,
114
+ )
115
+ ? columnDef.header
116
+ : undefined
117
+ }
112
118
  select={isSelectEdit}
113
119
  value={value}
114
120
  variant="standard"
@@ -1,42 +1,35 @@
1
1
  import Checkbox from '@mui/material/Checkbox';
2
2
  import FormControlLabel from '@mui/material/FormControlLabel';
3
3
  import Tooltip from '@mui/material/Tooltip';
4
- import { type CheckboxProps } from '@mui/material/Checkbox';
5
4
  import { type MRT_Column, type MRT_TableInstance } from '../types';
5
+ import { parseFromValuesOrFunc } from '../column.utils';
6
6
 
7
- interface Props {
8
- column: MRT_Column;
9
- table: MRT_TableInstance;
7
+ interface Props<TData extends Record<string, any>> {
8
+ column: MRT_Column<TData>;
9
+ table: MRT_TableInstance<TData>;
10
10
  }
11
11
 
12
- export const MRT_FilterCheckbox = ({ column, table }: Props) => {
12
+ export const MRT_FilterCheckbox = <TData extends Record<string, any>>({
13
+ column,
14
+ table,
15
+ }: Props<TData>) => {
13
16
  const {
14
17
  getState,
15
- options: { localization, muiTableHeadCellFilterCheckboxProps },
18
+ options: { localization, muiFilterCheckboxProps },
16
19
  } = table;
17
20
  const { density } = getState();
18
21
  const { columnDef } = column;
19
22
 
20
- const mTableHeadCellFilterCheckboxProps =
21
- muiTableHeadCellFilterCheckboxProps instanceof Function
22
- ? muiTableHeadCellFilterCheckboxProps({
23
- column,
24
- table,
25
- })
26
- : muiTableHeadCellFilterCheckboxProps;
27
-
28
- const mcTableHeadCellFilterCheckboxProps =
29
- columnDef.muiTableHeadCellFilterCheckboxProps instanceof Function
30
- ? columnDef.muiTableHeadCellFilterCheckboxProps({
31
- column,
32
- table,
33
- })
34
- : columnDef.muiTableHeadCellFilterCheckboxProps;
35
-
36
23
  const checkboxProps = {
37
- ...mTableHeadCellFilterCheckboxProps,
38
- ...mcTableHeadCellFilterCheckboxProps,
39
- } as CheckboxProps;
24
+ ...parseFromValuesOrFunc(muiFilterCheckboxProps, {
25
+ column,
26
+ table,
27
+ }),
28
+ ...parseFromValuesOrFunc(columnDef.muiFilterCheckboxProps, {
29
+ column,
30
+ table,
31
+ }),
32
+ };
40
33
 
41
34
  const filterLabel = localization.filterByColumn?.replace(
42
35
  '{column}',
@@ -77,9 +70,7 @@ export const MRT_FilterCheckbox = ({ column, table }: Props) => {
77
70
  sx={(theme) => ({
78
71
  height: '2.5rem',
79
72
  width: '2.5rem',
80
- ...(checkboxProps?.sx instanceof Function
81
- ? checkboxProps.sx(theme)
82
- : (checkboxProps?.sx as any)),
73
+ ...(parseFromValuesOrFunc(checkboxProps?.sx, theme) as any),
83
74
  })}
84
75
  />
85
76
  }
@@ -2,12 +2,15 @@ import Box from '@mui/material/Box';
2
2
  import { MRT_FilterTextField } from './MRT_FilterTextField';
3
3
  import { type MRT_Header, type MRT_TableInstance } from '../types';
4
4
 
5
- interface Props {
6
- header: MRT_Header;
7
- table: MRT_TableInstance;
5
+ interface Props<TData extends Record<string, any>> {
6
+ header: MRT_Header<TData>;
7
+ table: MRT_TableInstance<TData>;
8
8
  }
9
9
 
10
- export const MRT_FilterRangeFields = ({ header, table }: Props) => {
10
+ export const MRT_FilterRangeFields = <TData extends Record<string, any>>({
11
+ header,
12
+ table,
13
+ }: Props<TData>) => {
11
14
  return (
12
15
  <Box sx={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: '1rem' }}>
13
16
  <MRT_FilterTextField header={header} rangeFilterIndex={0} table={table} />
@@ -1,21 +1,21 @@
1
- import Slider, { type SliderProps } from '@mui/material/Slider';
1
+ import Slider from '@mui/material/Slider';
2
2
  import Stack from '@mui/material/Stack';
3
3
  import FormHelperText from '@mui/material/FormHelperText';
4
4
  import { type MRT_TableInstance, type MRT_Header } from '../types';
5
5
  import { useEffect, useRef, useState } from 'react';
6
+ import { parseFromValuesOrFunc } from '../column.utils';
6
7
 
7
- interface Props {
8
- header: MRT_Header;
9
- table: MRT_TableInstance;
8
+ interface Props<TData extends Record<string, any>> {
9
+ header: MRT_Header<TData>;
10
+ table: MRT_TableInstance<TData>;
10
11
  }
11
12
 
12
- export const MRT_FilterRangeSlider = ({ header, table }: Props) => {
13
+ export const MRT_FilterRangeSlider = <TData extends Record<string, any>>({
14
+ header,
15
+ table,
16
+ }: Props<TData>) => {
13
17
  const {
14
- options: {
15
- localization,
16
- muiTableHeadCellFilterSliderProps,
17
- enableColumnFilterModes,
18
- },
18
+ options: { localization, muiFilterSliderProps, enableColumnFilterModes },
19
19
  refs: { filterInputRefs },
20
20
  } = table;
21
21
  const { column } = header;
@@ -26,26 +26,10 @@ export const MRT_FilterRangeSlider = ({ header, table }: Props) => {
26
26
  const showChangeModeButton =
27
27
  enableColumnFilterModes && columnDef.enableColumnFilterModes !== false;
28
28
 
29
- const mTableHeadCellFilterTextFieldProps =
30
- muiTableHeadCellFilterSliderProps instanceof Function
31
- ? muiTableHeadCellFilterSliderProps({
32
- column,
33
- table,
34
- })
35
- : muiTableHeadCellFilterSliderProps;
36
-
37
- const mcTableHeadCellFilterTextFieldProps =
38
- columnDef.muiTableHeadCellFilterSliderProps instanceof Function
39
- ? columnDef.muiTableHeadCellFilterSliderProps({
40
- column,
41
- table,
42
- })
43
- : columnDef.muiTableHeadCellFilterSliderProps;
44
-
45
29
  const sliderProps = {
46
- ...mTableHeadCellFilterTextFieldProps,
47
- ...mcTableHeadCellFilterTextFieldProps,
48
- } as SliderProps;
30
+ ...parseFromValuesOrFunc(muiFilterSliderProps, { column, table }),
31
+ ...parseFromValuesOrFunc(columnDef.muiFilterSliderProps, { column, table }),
32
+ };
49
33
 
50
34
  let [min, max] =
51
35
  sliderProps.min !== undefined && sliderProps.max !== undefined
@@ -115,9 +99,7 @@ export const MRT_FilterRangeSlider = ({ header, table }: Props) => {
115
99
  mt: !showChangeModeButton ? '10px' : '6px',
116
100
  px: '4px',
117
101
  width: 'calc(100% - 8px)',
118
- ...(sliderProps?.sx instanceof Function
119
- ? sliderProps.sx(theme)
120
- : (sliderProps?.sx as any)),
102
+ ...(parseFromValuesOrFunc(sliderProps?.sx, theme) as any),
121
103
  })}
122
104
  />
123
105
  {showChangeModeButton ? (
@@ -19,18 +19,19 @@ import { debounce } from '@mui/material/utils';
19
19
  import { MRT_FilterOptionMenu } from '../menus/MRT_FilterOptionMenu';
20
20
  import { type TextFieldProps } from '@mui/material/TextField';
21
21
  import { type MRT_Header, type MRT_TableInstance } from '../types';
22
+ import { parseFromValuesOrFunc } from '../column.utils';
22
23
 
23
- interface Props {
24
- header: MRT_Header;
24
+ interface Props<TData extends Record<string, any>> {
25
+ header: MRT_Header<TData>;
25
26
  rangeFilterIndex?: number;
26
- table: MRT_TableInstance;
27
+ table: MRT_TableInstance<TData>;
27
28
  }
28
29
 
29
- export const MRT_FilterTextField = ({
30
+ export const MRT_FilterTextField = <TData extends Record<string, any>>({
30
31
  header,
31
32
  rangeFilterIndex,
32
33
  table,
33
- }: Props) => {
34
+ }: Props<TData>) => {
34
35
  const {
35
36
  options: {
36
37
  enableColumnFilterModes,
@@ -38,7 +39,7 @@ export const MRT_FilterTextField = ({
38
39
  icons: { FilterListIcon, CloseIcon },
39
40
  localization,
40
41
  manualFiltering,
41
- muiTableHeadCellFilterTextFieldProps,
42
+ muiFilterTextFieldProps,
42
43
  },
43
44
  refs: { filterInputRefs },
44
45
  setColumnFilterFns,
@@ -46,28 +47,13 @@ export const MRT_FilterTextField = ({
46
47
  const { column } = header;
47
48
  const { columnDef } = column;
48
49
 
49
- const mTableHeadCellFilterTextFieldProps =
50
- muiTableHeadCellFilterTextFieldProps instanceof Function
51
- ? muiTableHeadCellFilterTextFieldProps({
52
- column,
53
- table,
54
- rangeFilterIndex,
55
- })
56
- : muiTableHeadCellFilterTextFieldProps;
57
-
58
- const mcTableHeadCellFilterTextFieldProps =
59
- columnDef.muiTableHeadCellFilterTextFieldProps instanceof Function
60
- ? columnDef.muiTableHeadCellFilterTextFieldProps({
61
- column,
62
- table,
63
- rangeFilterIndex,
64
- })
65
- : columnDef.muiTableHeadCellFilterTextFieldProps;
66
-
67
- const textFieldProps = {
68
- ...mTableHeadCellFilterTextFieldProps,
69
- ...mcTableHeadCellFilterTextFieldProps,
70
- } as TextFieldProps;
50
+ const textFieldProps: TextFieldProps = {
51
+ ...parseFromValuesOrFunc(muiFilterTextFieldProps, { column, table }),
52
+ ...parseFromValuesOrFunc(columnDef.muiFilterTextFieldProps, {
53
+ column,
54
+ table,
55
+ }),
56
+ };
71
57
 
72
58
  const isRangeFilter =
73
59
  columnDef.filterVariant === 'range' || rangeFilterIndex !== undefined;
@@ -109,9 +95,9 @@ export const MRT_FilterTextField = ({
109
95
  () =>
110
96
  columnDef.filterSelectOptions ??
111
97
  ((isSelectFilter || isMultiSelectFilter) && facetedUniqueValues
112
- ? Array.from(facetedUniqueValues.keys()).sort((a, b) =>
113
- a.localeCompare(b),
114
- )
98
+ ? Array.from(facetedUniqueValues.keys())
99
+ .filter((value) => value !== null && value !== undefined)
100
+ .sort((a, b) => a.localeCompare(b))
115
101
  : undefined),
116
102
  [
117
103
  columnDef.filterSelectOptions,
@@ -358,9 +344,7 @@ export const MRT_FilterTextField = ({
358
344
  '& .MuiSelect-icon': {
359
345
  mr: '1.5rem',
360
346
  },
361
- ...(textFieldProps?.sx instanceof Function
362
- ? textFieldProps.sx(theme)
363
- : (textFieldProps?.sx as any)),
347
+ ...(parseFromValuesOrFunc(textFieldProps?.sx, theme) as any),
364
348
  })}
365
349
  >
366
350
  {(isSelectFilter || isMultiSelectFilter) && (
@@ -14,14 +14,13 @@ import Tooltip from '@mui/material/Tooltip';
14
14
  import { debounce } from '@mui/material/utils';
15
15
  import { MRT_FilterOptionMenu } from '../menus/MRT_FilterOptionMenu';
16
16
  import { type MRT_TableInstance } from '../types';
17
+ import { parseFromValuesOrFunc } from '../column.utils';
17
18
 
18
- interface Props<TData extends Record<string, any> = {}> {
19
+ interface Props<TData extends Record<string, any>> {
19
20
  table: MRT_TableInstance<TData>;
20
21
  }
21
22
 
22
- export const MRT_GlobalFilterTextField = <
23
- TData extends Record<string, any> = {},
24
- >({
23
+ export const MRT_GlobalFilterTextField = <TData extends Record<string, any>>({
25
24
  table,
26
25
  }: Props<TData>) => {
27
26
  const {
@@ -38,10 +37,9 @@ export const MRT_GlobalFilterTextField = <
38
37
  } = table;
39
38
  const { globalFilter, showGlobalFilter } = getState();
40
39
 
41
- const textFieldProps =
42
- muiSearchTextFieldProps instanceof Function
43
- ? muiSearchTextFieldProps({ table })
44
- : muiSearchTextFieldProps;
40
+ const textFieldProps = parseFromValuesOrFunc(muiSearchTextFieldProps, {
41
+ table,
42
+ });
45
43
 
46
44
  const isMounted = useRef(false);
47
45
  const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);