@cutting/material-react-table 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (327) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +215 -0
  3. package/dist/index.d.ts +1876 -0
  4. package/dist/index.esm.js +4434 -0
  5. package/dist/index.esm.js.map +1 -0
  6. package/dist/index.js +4540 -0
  7. package/dist/index.js.map +1 -0
  8. package/locales/ar/index.d.ts +3 -0
  9. package/locales/ar/index.esm.d.ts +3 -0
  10. package/locales/ar/index.esm.js +96 -0
  11. package/locales/ar/index.js +98 -0
  12. package/locales/ar/package.json +6 -0
  13. package/locales/az/index.d.ts +3 -0
  14. package/locales/az/index.esm.d.ts +3 -0
  15. package/locales/az/index.esm.js +96 -0
  16. package/locales/az/index.js +98 -0
  17. package/locales/az/package.json +6 -0
  18. package/locales/bg/index.d.ts +3 -0
  19. package/locales/bg/index.esm.d.ts +3 -0
  20. package/locales/bg/index.esm.js +96 -0
  21. package/locales/bg/index.js +98 -0
  22. package/locales/bg/package.json +6 -0
  23. package/locales/cs/index.d.ts +3 -0
  24. package/locales/cs/index.esm.d.ts +3 -0
  25. package/locales/cs/index.esm.js +96 -0
  26. package/locales/cs/index.js +98 -0
  27. package/locales/cs/package.json +6 -0
  28. package/locales/da/index.d.ts +3 -0
  29. package/locales/da/index.esm.d.ts +3 -0
  30. package/locales/da/index.esm.js +96 -0
  31. package/locales/da/index.js +98 -0
  32. package/locales/da/package.json +6 -0
  33. package/locales/de/index.d.ts +3 -0
  34. package/locales/de/index.esm.d.ts +3 -0
  35. package/locales/de/index.esm.js +96 -0
  36. package/locales/de/index.js +98 -0
  37. package/locales/de/package.json +6 -0
  38. package/locales/el/index.d.ts +3 -0
  39. package/locales/el/index.esm.d.ts +3 -0
  40. package/locales/el/index.esm.js +96 -0
  41. package/locales/el/index.js +98 -0
  42. package/locales/el/package.json +6 -0
  43. package/locales/en/index.d.ts +3 -0
  44. package/locales/en/index.esm.d.ts +3 -0
  45. package/locales/en/index.esm.js +96 -0
  46. package/locales/en/index.js +98 -0
  47. package/locales/en/package.json +6 -0
  48. package/locales/es/index.d.ts +3 -0
  49. package/locales/es/index.esm.d.ts +3 -0
  50. package/locales/es/index.esm.js +96 -0
  51. package/locales/es/index.js +98 -0
  52. package/locales/es/package.json +6 -0
  53. package/locales/et/index.d.ts +3 -0
  54. package/locales/et/index.esm.d.ts +3 -0
  55. package/locales/et/index.esm.js +96 -0
  56. package/locales/et/index.js +98 -0
  57. package/locales/et/package.json +6 -0
  58. package/locales/fa/index.d.ts +3 -0
  59. package/locales/fa/index.esm.d.ts +3 -0
  60. package/locales/fa/index.esm.js +96 -0
  61. package/locales/fa/index.js +98 -0
  62. package/locales/fa/package.json +6 -0
  63. package/locales/fi/index.d.ts +3 -0
  64. package/locales/fi/index.esm.d.ts +3 -0
  65. package/locales/fi/index.esm.js +96 -0
  66. package/locales/fi/index.js +98 -0
  67. package/locales/fi/package.json +6 -0
  68. package/locales/fr/index.d.ts +3 -0
  69. package/locales/fr/index.esm.d.ts +3 -0
  70. package/locales/fr/index.esm.js +96 -0
  71. package/locales/fr/index.js +98 -0
  72. package/locales/fr/package.json +6 -0
  73. package/locales/he/index.d.ts +3 -0
  74. package/locales/he/index.esm.d.ts +3 -0
  75. package/locales/he/index.esm.js +96 -0
  76. package/locales/he/index.js +98 -0
  77. package/locales/he/package.json +6 -0
  78. package/locales/hr/index.d.ts +3 -0
  79. package/locales/hr/index.esm.d.ts +3 -0
  80. package/locales/hr/index.esm.js +96 -0
  81. package/locales/hr/index.js +98 -0
  82. package/locales/hr/package.json +6 -0
  83. package/locales/hu/index.d.ts +3 -0
  84. package/locales/hu/index.esm.d.ts +3 -0
  85. package/locales/hu/index.esm.js +96 -0
  86. package/locales/hu/index.js +98 -0
  87. package/locales/hu/package.json +6 -0
  88. package/locales/hy/index.d.ts +3 -0
  89. package/locales/hy/index.esm.d.ts +3 -0
  90. package/locales/hy/index.esm.js +96 -0
  91. package/locales/hy/index.js +98 -0
  92. package/locales/hy/package.json +6 -0
  93. package/locales/id/index.d.ts +3 -0
  94. package/locales/id/index.esm.d.ts +3 -0
  95. package/locales/id/index.esm.js +96 -0
  96. package/locales/id/index.js +98 -0
  97. package/locales/id/package.json +6 -0
  98. package/locales/it/index.d.ts +3 -0
  99. package/locales/it/index.esm.d.ts +3 -0
  100. package/locales/it/index.esm.js +96 -0
  101. package/locales/it/index.js +98 -0
  102. package/locales/it/package.json +6 -0
  103. package/locales/ja/index.d.ts +3 -0
  104. package/locales/ja/index.esm.d.ts +3 -0
  105. package/locales/ja/index.esm.js +96 -0
  106. package/locales/ja/index.js +98 -0
  107. package/locales/ja/package.json +6 -0
  108. package/locales/ko/index.d.ts +3 -0
  109. package/locales/ko/index.esm.d.ts +3 -0
  110. package/locales/ko/index.esm.js +96 -0
  111. package/locales/ko/index.js +98 -0
  112. package/locales/ko/package.json +6 -0
  113. package/locales/nl/index.d.ts +3 -0
  114. package/locales/nl/index.esm.d.ts +3 -0
  115. package/locales/nl/index.esm.js +96 -0
  116. package/locales/nl/index.js +98 -0
  117. package/locales/nl/package.json +6 -0
  118. package/locales/no/index.d.ts +3 -0
  119. package/locales/no/index.esm.d.ts +3 -0
  120. package/locales/no/index.esm.js +96 -0
  121. package/locales/no/index.js +98 -0
  122. package/locales/no/package.json +6 -0
  123. package/locales/np/index.d.ts +3 -0
  124. package/locales/np/index.esm.d.ts +3 -0
  125. package/locales/np/index.esm.js +96 -0
  126. package/locales/np/index.js +98 -0
  127. package/locales/np/package.json +6 -0
  128. package/locales/pl/index.d.ts +3 -0
  129. package/locales/pl/index.esm.d.ts +3 -0
  130. package/locales/pl/index.esm.js +96 -0
  131. package/locales/pl/index.js +98 -0
  132. package/locales/pl/package.json +6 -0
  133. package/locales/pt/index.d.ts +3 -0
  134. package/locales/pt/index.esm.d.ts +3 -0
  135. package/locales/pt/index.esm.js +96 -0
  136. package/locales/pt/index.js +98 -0
  137. package/locales/pt/package.json +6 -0
  138. package/locales/pt-BR/index.d.ts +3 -0
  139. package/locales/pt-BR/index.esm.d.ts +3 -0
  140. package/locales/pt-BR/index.esm.js +96 -0
  141. package/locales/pt-BR/index.js +98 -0
  142. package/locales/pt-BR/package.json +6 -0
  143. package/locales/ro/index.d.ts +3 -0
  144. package/locales/ro/index.esm.d.ts +3 -0
  145. package/locales/ro/index.esm.js +96 -0
  146. package/locales/ro/index.js +98 -0
  147. package/locales/ro/package.json +6 -0
  148. package/locales/ru/index.d.ts +3 -0
  149. package/locales/ru/index.esm.d.ts +3 -0
  150. package/locales/ru/index.esm.js +96 -0
  151. package/locales/ru/index.js +98 -0
  152. package/locales/ru/package.json +6 -0
  153. package/locales/sk/index.d.ts +3 -0
  154. package/locales/sk/index.esm.d.ts +3 -0
  155. package/locales/sk/index.esm.js +96 -0
  156. package/locales/sk/index.js +98 -0
  157. package/locales/sk/package.json +6 -0
  158. package/locales/sr-Cyrl-RS/index.d.ts +3 -0
  159. package/locales/sr-Cyrl-RS/index.esm.d.ts +3 -0
  160. package/locales/sr-Cyrl-RS/index.esm.js +96 -0
  161. package/locales/sr-Cyrl-RS/index.js +98 -0
  162. package/locales/sr-Cyrl-RS/package.json +6 -0
  163. package/locales/sr-Latn-RS/index.d.ts +3 -0
  164. package/locales/sr-Latn-RS/index.esm.d.ts +3 -0
  165. package/locales/sr-Latn-RS/index.esm.js +96 -0
  166. package/locales/sr-Latn-RS/index.js +98 -0
  167. package/locales/sr-Latn-RS/package.json +6 -0
  168. package/locales/sv/index.d.ts +3 -0
  169. package/locales/sv/index.esm.d.ts +3 -0
  170. package/locales/sv/index.esm.js +96 -0
  171. package/locales/sv/index.js +98 -0
  172. package/locales/sv/package.json +6 -0
  173. package/locales/tr/index.d.ts +3 -0
  174. package/locales/tr/index.esm.d.ts +3 -0
  175. package/locales/tr/index.esm.js +96 -0
  176. package/locales/tr/index.js +98 -0
  177. package/locales/tr/package.json +6 -0
  178. package/locales/uk/index.d.ts +3 -0
  179. package/locales/uk/index.esm.d.ts +3 -0
  180. package/locales/uk/index.esm.js +96 -0
  181. package/locales/uk/index.js +98 -0
  182. package/locales/uk/package.json +6 -0
  183. package/locales/vi/index.d.ts +3 -0
  184. package/locales/vi/index.esm.d.ts +3 -0
  185. package/locales/vi/index.esm.js +96 -0
  186. package/locales/vi/index.js +98 -0
  187. package/locales/vi/package.json +6 -0
  188. package/locales/zh-Hans/index.d.ts +3 -0
  189. package/locales/zh-Hans/index.esm.d.ts +3 -0
  190. package/locales/zh-Hans/index.esm.js +96 -0
  191. package/locales/zh-Hans/index.js +98 -0
  192. package/locales/zh-Hans/package.json +6 -0
  193. package/locales/zh-Hant/index.d.ts +3 -0
  194. package/locales/zh-Hant/index.esm.d.ts +3 -0
  195. package/locales/zh-Hant/index.esm.js +96 -0
  196. package/locales/zh-Hant/index.js +98 -0
  197. package/locales/zh-Hant/package.json +6 -0
  198. package/package.json +133 -0
  199. package/src/MaterialReactTable.smoke.test.tsx +56 -0
  200. package/src/components/MaterialReactTable.tsx +36 -0
  201. package/src/components/body/MRT_TableBody.tsx +222 -0
  202. package/src/components/body/MRT_TableBodyCell.tsx +352 -0
  203. package/src/components/body/MRT_TableBodyCellValue.tsx +131 -0
  204. package/src/components/body/MRT_TableBodyRow.tsx +283 -0
  205. package/src/components/body/MRT_TableBodyRowGrabHandle.tsx +62 -0
  206. package/src/components/body/MRT_TableBodyRowPinButton.tsx +59 -0
  207. package/src/components/body/MRT_TableDetailPanel.tsx +111 -0
  208. package/src/components/buttons/MRT_ColumnPinningButtons.tsx +73 -0
  209. package/src/components/buttons/MRT_CopyButton.tsx +88 -0
  210. package/src/components/buttons/MRT_EditActionButtons.tsx +135 -0
  211. package/src/components/buttons/MRT_ExpandAllButton.tsx +79 -0
  212. package/src/components/buttons/MRT_ExpandButton.tsx +103 -0
  213. package/src/components/buttons/MRT_GrabHandleButton.tsx +66 -0
  214. package/src/components/buttons/MRT_RowPinButton.tsx +85 -0
  215. package/src/components/buttons/MRT_ShowHideColumnsButton.tsx +51 -0
  216. package/src/components/buttons/MRT_ToggleDensePaddingButton.tsx +53 -0
  217. package/src/components/buttons/MRT_ToggleFiltersButton.tsx +41 -0
  218. package/src/components/buttons/MRT_ToggleFullScreenButton.tsx +52 -0
  219. package/src/components/buttons/MRT_ToggleGlobalFilterButton.tsx +47 -0
  220. package/src/components/buttons/MRT_ToggleRowActionMenuButton.tsx +127 -0
  221. package/src/components/footer/MRT_TableFooter.tsx +89 -0
  222. package/src/components/footer/MRT_TableFooterCell.tsx +108 -0
  223. package/src/components/footer/MRT_TableFooterRow.tsx +96 -0
  224. package/src/components/head/MRT_TableHead.tsx +92 -0
  225. package/src/components/head/MRT_TableHeadCell.tsx +352 -0
  226. package/src/components/head/MRT_TableHeadCellColumnActionsButton.tsx +97 -0
  227. package/src/components/head/MRT_TableHeadCellFilterContainer.tsx +53 -0
  228. package/src/components/head/MRT_TableHeadCellFilterLabel.tsx +179 -0
  229. package/src/components/head/MRT_TableHeadCellGrabHandle.tsx +92 -0
  230. package/src/components/head/MRT_TableHeadCellResizeHandle.tsx +97 -0
  231. package/src/components/head/MRT_TableHeadCellSortLabel.tsx +102 -0
  232. package/src/components/head/MRT_TableHeadRow.tsx +91 -0
  233. package/src/components/inputs/MRT_EditCellTextField.tsx +190 -0
  234. package/src/components/inputs/MRT_FilterCheckbox.tsx +91 -0
  235. package/src/components/inputs/MRT_FilterRangeFields.tsx +42 -0
  236. package/src/components/inputs/MRT_FilterRangeSlider.tsx +144 -0
  237. package/src/components/inputs/MRT_FilterTextField.tsx +599 -0
  238. package/src/components/inputs/MRT_GlobalFilterTextField.tsx +160 -0
  239. package/src/components/inputs/MRT_SelectCheckbox.tsx +136 -0
  240. package/src/components/menus/MRT_ActionMenuItem.tsx +63 -0
  241. package/src/components/menus/MRT_CellActionMenu.tsx +108 -0
  242. package/src/components/menus/MRT_ColumnActionMenu.tsx +353 -0
  243. package/src/components/menus/MRT_FilterOptionMenu.tsx +293 -0
  244. package/src/components/menus/MRT_RowActionMenu.tsx +89 -0
  245. package/src/components/menus/MRT_ShowHideColumnsMenu.tsx +180 -0
  246. package/src/components/menus/MRT_ShowHideColumnsMenuItems.tsx +204 -0
  247. package/src/components/modals/MRT_EditRowModal.tsx +115 -0
  248. package/src/components/table/MRT_Table.tsx +85 -0
  249. package/src/components/table/MRT_TableContainer.tsx +112 -0
  250. package/src/components/table/MRT_TableLoadingOverlay.tsx +59 -0
  251. package/src/components/table/MRT_TablePaper.tsx +90 -0
  252. package/src/components/toolbar/MRT_BottomToolbar.tsx +109 -0
  253. package/src/components/toolbar/MRT_LinearProgressBar.tsx +54 -0
  254. package/src/components/toolbar/MRT_TablePagination.tsx +244 -0
  255. package/src/components/toolbar/MRT_ToolbarAlertBanner.tsx +184 -0
  256. package/src/components/toolbar/MRT_ToolbarDropZone.tsx +81 -0
  257. package/src/components/toolbar/MRT_ToolbarInternalButtons.tsx +73 -0
  258. package/src/components/toolbar/MRT_TopToolbar.tsx +131 -0
  259. package/src/fns/aggregationFns.ts +3 -0
  260. package/src/fns/filterFns.ts +197 -0
  261. package/src/fns/sortingFns.ts +34 -0
  262. package/src/hooks/display-columns/getMRT_RowActionsColumnDef.tsx +28 -0
  263. package/src/hooks/display-columns/getMRT_RowDragColumnDef.tsx +30 -0
  264. package/src/hooks/display-columns/getMRT_RowExpandColumnDef.tsx +97 -0
  265. package/src/hooks/display-columns/getMRT_RowNumbersColumnDef.tsx +30 -0
  266. package/src/hooks/display-columns/getMRT_RowPinningColumnDef.tsx +24 -0
  267. package/src/hooks/display-columns/getMRT_RowSelectColumnDef.tsx +34 -0
  268. package/src/hooks/display-columns/getMRT_RowSpacerColumnDef.tsx +33 -0
  269. package/src/hooks/useMRT_ColumnVirtualizer.ts +125 -0
  270. package/src/hooks/useMRT_Effects.ts +107 -0
  271. package/src/hooks/useMRT_RowVirtualizer.ts +89 -0
  272. package/src/hooks/useMRT_Rows.ts +45 -0
  273. package/src/hooks/useMRT_TableInstance.ts +318 -0
  274. package/src/hooks/useMRT_TableOptions.ts +271 -0
  275. package/src/hooks/useMaterialReactTable.ts +12 -0
  276. package/src/icons.ts +73 -0
  277. package/src/index.ts +91 -0
  278. package/src/locales/ar.ts +97 -0
  279. package/src/locales/az.ts +97 -0
  280. package/src/locales/bg.ts +97 -0
  281. package/src/locales/cs.ts +98 -0
  282. package/src/locales/da.ts +97 -0
  283. package/src/locales/de.ts +97 -0
  284. package/src/locales/el.ts +97 -0
  285. package/src/locales/en.ts +97 -0
  286. package/src/locales/es.ts +97 -0
  287. package/src/locales/et.ts +98 -0
  288. package/src/locales/fa.ts +97 -0
  289. package/src/locales/fi.ts +98 -0
  290. package/src/locales/fr.ts +97 -0
  291. package/src/locales/he.ts +97 -0
  292. package/src/locales/hr.ts +97 -0
  293. package/src/locales/hu.ts +97 -0
  294. package/src/locales/hy.ts +97 -0
  295. package/src/locales/id.ts +98 -0
  296. package/src/locales/it.ts +97 -0
  297. package/src/locales/ja.ts +97 -0
  298. package/src/locales/ko.ts +97 -0
  299. package/src/locales/mk.ts +96 -0
  300. package/src/locales/nl.ts +97 -0
  301. package/src/locales/no.ts +99 -0
  302. package/src/locales/np.ts +98 -0
  303. package/src/locales/pl.ts +97 -0
  304. package/src/locales/pt-BR.ts +97 -0
  305. package/src/locales/pt.ts +97 -0
  306. package/src/locales/ro.ts +97 -0
  307. package/src/locales/ru.ts +97 -0
  308. package/src/locales/sk.ts +98 -0
  309. package/src/locales/sr-Cyrl-RS.ts +97 -0
  310. package/src/locales/sr-Latn-RS.ts +97 -0
  311. package/src/locales/sv.ts +97 -0
  312. package/src/locales/tr.ts +97 -0
  313. package/src/locales/uk.ts +97 -0
  314. package/src/locales/vi.ts +97 -0
  315. package/src/locales/zh-Hans.ts +96 -0
  316. package/src/locales/zh-Hant.ts +96 -0
  317. package/src/types.ts +1290 -0
  318. package/src/utils/cell.utils.ts +234 -0
  319. package/src/utils/column.utils.ts +210 -0
  320. package/src/utils/displayColumn.utils.ts +152 -0
  321. package/src/utils/row.utils.ts +261 -0
  322. package/src/utils/slotProps.utils.ts +25 -0
  323. package/src/utils/style.utils.ts +210 -0
  324. package/src/utils/tanstack.helpers.ts +65 -0
  325. package/src/utils/utils.ts +23 -0
  326. package/src/utils/virtualization.utils.ts +24 -0
  327. package/src/vitest.setup.ts +1 -0
@@ -0,0 +1,318 @@
1
+ import { useReactTable } from '@tanstack/react-table';
2
+ import { useMemo, useRef, useState } from 'react';
3
+
4
+ import {
5
+ type MRT_Cell,
6
+ type MRT_Column,
7
+ type MRT_ColumnDef,
8
+ type MRT_ColumnFilterFnsState,
9
+ type MRT_ColumnOrderState,
10
+ type MRT_ColumnSizingInfoState,
11
+ type MRT_DefinedTableOptions,
12
+ type MRT_DensityState,
13
+ type MRT_FilterOption,
14
+ type MRT_GroupingState,
15
+ type MRT_PaginationState,
16
+ type MRT_Row,
17
+ type MRT_RowData,
18
+ type MRT_StatefulTableOptions,
19
+ type MRT_TableInstance,
20
+ type MRT_TableState,
21
+ type MRT_Updater,
22
+ } from '../types';
23
+ import {
24
+ getAllLeafColumnDefs,
25
+ getColumnId,
26
+ getDefaultColumnFilterFn,
27
+ prepareColumns,
28
+ } from '../utils/column.utils';
29
+ import {
30
+ getDefaultColumnOrderIds,
31
+ showRowActionsColumn,
32
+ showRowDragColumn,
33
+ showRowExpandColumn,
34
+ showRowNumbersColumn,
35
+ showRowPinningColumn,
36
+ showRowSelectionColumn,
37
+ showRowSpacerColumn,
38
+ } from '../utils/displayColumn.utils';
39
+ import { createRow } from '../utils/tanstack.helpers';
40
+ import { getMRT_RowActionsColumnDef } from './display-columns/getMRT_RowActionsColumnDef';
41
+ import { getMRT_RowDragColumnDef } from './display-columns/getMRT_RowDragColumnDef';
42
+ import { getMRT_RowExpandColumnDef } from './display-columns/getMRT_RowExpandColumnDef';
43
+ import { getMRT_RowNumbersColumnDef } from './display-columns/getMRT_RowNumbersColumnDef';
44
+ import { getMRT_RowPinningColumnDef } from './display-columns/getMRT_RowPinningColumnDef';
45
+ import { getMRT_RowSelectColumnDef } from './display-columns/getMRT_RowSelectColumnDef';
46
+ import { getMRT_RowSpacerColumnDef } from './display-columns/getMRT_RowSpacerColumnDef';
47
+ import { useMRT_Effects } from './useMRT_Effects';
48
+
49
+ /**
50
+ * The MRT hook that wraps the TanStack useReactTable hook and adds additional functionality
51
+ * @param definedTableOptions - table options with proper defaults set
52
+ * @returns the MRT table instance
53
+ */
54
+ export const useMRT_TableInstance = <TData extends MRT_RowData>(
55
+ definedTableOptions: MRT_DefinedTableOptions<TData>,
56
+ ): MRT_TableInstance<TData> => {
57
+ const lastSelectedRowId = useRef<null | string>(null);
58
+ const actionCellRef = useRef<HTMLTableCellElement>(null);
59
+ const bottomToolbarRef = useRef<HTMLDivElement>(null);
60
+ const editInputRefs = useRef<Record<string, HTMLInputElement>>({});
61
+ const filterInputRefs = useRef<Record<string, HTMLInputElement>>({});
62
+ const searchInputRef = useRef<HTMLInputElement>(null);
63
+ const tableContainerRef = useRef<HTMLDivElement>(null);
64
+ const tableHeadCellRefs = useRef<Record<string, HTMLTableCellElement>>({});
65
+ const tablePaperRef = useRef<HTMLDivElement>(null);
66
+ const topToolbarRef = useRef<HTMLDivElement>(null);
67
+ const tableHeadRef = useRef<HTMLTableSectionElement>(null);
68
+ const tableFooterRef = useRef<HTMLTableSectionElement>(null);
69
+
70
+ //transform initial state with proper column order
71
+ const initialState: Partial<MRT_TableState<TData>> = useMemo(() => {
72
+ const initState = definedTableOptions.initialState ?? {};
73
+ initState.columnOrder =
74
+ initState.columnOrder ??
75
+ getDefaultColumnOrderIds({
76
+ ...definedTableOptions,
77
+ state: {
78
+ ...definedTableOptions.initialState,
79
+ ...definedTableOptions.state,
80
+ },
81
+ } as MRT_StatefulTableOptions<TData>);
82
+ initState.globalFilterFn = definedTableOptions.globalFilterFn ?? 'fuzzy';
83
+ return initState;
84
+ }, []);
85
+
86
+ definedTableOptions.initialState = initialState;
87
+
88
+ const [actionCell, setActionCell] = useState<MRT_Cell<TData> | null>(
89
+ initialState.actionCell ?? null,
90
+ );
91
+ const [creatingRow, _setCreatingRow] = useState<MRT_Row<TData> | null>(
92
+ initialState.creatingRow ?? null,
93
+ );
94
+ const [columnFilterFns, setColumnFilterFns] =
95
+ useState<MRT_ColumnFilterFnsState>(() =>
96
+ Object.assign(
97
+ {},
98
+ ...getAllLeafColumnDefs(
99
+ definedTableOptions.columns as MRT_ColumnDef<TData>[],
100
+ ).map((col) => ({
101
+ [getColumnId(col)]:
102
+ col.filterFn instanceof Function
103
+ ? (col.filterFn.name ?? 'custom')
104
+ : (col.filterFn ??
105
+ initialState?.columnFilterFns?.[getColumnId(col)] ??
106
+ getDefaultColumnFilterFn(col)),
107
+ })),
108
+ ),
109
+ );
110
+ const [columnOrder, onColumnOrderChange] = useState<MRT_ColumnOrderState>(
111
+ initialState.columnOrder ?? [],
112
+ );
113
+ const [columnSizingInfo, onColumnSizingInfoChange] =
114
+ useState<MRT_ColumnSizingInfoState>(
115
+ initialState.columnSizingInfo ?? ({} as MRT_ColumnSizingInfoState),
116
+ );
117
+ const [density, setDensity] = useState<MRT_DensityState>(
118
+ initialState?.density ?? 'comfortable',
119
+ );
120
+ const [draggingColumn, setDraggingColumn] =
121
+ useState<MRT_Column<TData> | null>(initialState.draggingColumn ?? null);
122
+ const [draggingRow, setDraggingRow] = useState<MRT_Row<TData> | null>(
123
+ initialState.draggingRow ?? null,
124
+ );
125
+ const [editingCell, setEditingCell] = useState<MRT_Cell<TData> | null>(
126
+ initialState.editingCell ?? null,
127
+ );
128
+ const [editingRow, setEditingRow] = useState<MRT_Row<TData> | null>(
129
+ initialState.editingRow ?? null,
130
+ );
131
+ const [globalFilterFn, setGlobalFilterFn] = useState<MRT_FilterOption>(
132
+ initialState.globalFilterFn ?? 'fuzzy',
133
+ );
134
+ const [grouping, onGroupingChange] = useState<MRT_GroupingState>(
135
+ initialState.grouping ?? [],
136
+ );
137
+ const [hoveredColumn, setHoveredColumn] = useState<null | Partial<
138
+ MRT_Column<TData>
139
+ >>(initialState.hoveredColumn ?? null);
140
+ const [hoveredRow, setHoveredRow] = useState<null | Partial<MRT_Row<TData>>>(
141
+ initialState.hoveredRow ?? null,
142
+ );
143
+ const [isFullScreen, setIsFullScreen] = useState<boolean>(
144
+ initialState?.isFullScreen ?? false,
145
+ );
146
+ const [pagination, onPaginationChange] = useState<MRT_PaginationState>(
147
+ initialState?.pagination ?? { pageIndex: 0, pageSize: 10 },
148
+ );
149
+ const [showAlertBanner, setShowAlertBanner] = useState<boolean>(
150
+ initialState?.showAlertBanner ?? false,
151
+ );
152
+ const [showColumnFilters, setShowColumnFilters] = useState<boolean>(
153
+ initialState?.showColumnFilters ?? false,
154
+ );
155
+ const [showGlobalFilter, setShowGlobalFilter] = useState<boolean>(
156
+ initialState?.showGlobalFilter ?? false,
157
+ );
158
+ const [showToolbarDropZone, setShowToolbarDropZone] = useState<boolean>(
159
+ initialState?.showToolbarDropZone ?? false,
160
+ );
161
+
162
+ definedTableOptions.state = {
163
+ actionCell,
164
+ columnFilterFns,
165
+ columnOrder,
166
+ columnSizingInfo,
167
+ creatingRow,
168
+ density,
169
+ draggingColumn,
170
+ draggingRow,
171
+ editingCell,
172
+ editingRow,
173
+ globalFilterFn,
174
+ grouping,
175
+ hoveredColumn,
176
+ hoveredRow,
177
+ isFullScreen,
178
+ pagination,
179
+ showAlertBanner,
180
+ showColumnFilters,
181
+ showGlobalFilter,
182
+ showToolbarDropZone,
183
+ ...definedTableOptions.state,
184
+ };
185
+
186
+ //The table options now include all state needed to help determine column visibility and order logic
187
+ const statefulTableOptions =
188
+ definedTableOptions as MRT_StatefulTableOptions<TData>;
189
+
190
+ //don't recompute columnDefs while resizing column or dragging column/row
191
+ const columnDefsRef = useRef<MRT_ColumnDef<TData>[]>([]);
192
+ statefulTableOptions.columns =
193
+ statefulTableOptions.state.columnSizingInfo.isResizingColumn ||
194
+ statefulTableOptions.state.draggingColumn ||
195
+ statefulTableOptions.state.draggingRow
196
+ ? columnDefsRef.current
197
+ : prepareColumns({
198
+ columnDefs: [
199
+ ...([
200
+ showRowPinningColumn(statefulTableOptions) &&
201
+ getMRT_RowPinningColumnDef(statefulTableOptions),
202
+ showRowDragColumn(statefulTableOptions) &&
203
+ getMRT_RowDragColumnDef(statefulTableOptions),
204
+ showRowActionsColumn(statefulTableOptions) &&
205
+ getMRT_RowActionsColumnDef(statefulTableOptions),
206
+ showRowExpandColumn(statefulTableOptions) &&
207
+ getMRT_RowExpandColumnDef(statefulTableOptions),
208
+ showRowSelectionColumn(statefulTableOptions) &&
209
+ getMRT_RowSelectColumnDef(statefulTableOptions),
210
+ showRowNumbersColumn(statefulTableOptions) &&
211
+ getMRT_RowNumbersColumnDef(statefulTableOptions),
212
+ ].filter(Boolean) as MRT_ColumnDef<TData>[]),
213
+ ...statefulTableOptions.columns,
214
+ ...([
215
+ showRowSpacerColumn(statefulTableOptions) &&
216
+ getMRT_RowSpacerColumnDef(statefulTableOptions),
217
+ ].filter(Boolean) as MRT_ColumnDef<TData>[]),
218
+ ],
219
+ tableOptions: statefulTableOptions,
220
+ });
221
+ columnDefsRef.current = statefulTableOptions.columns;
222
+
223
+ //if loading, generate blank rows to show skeleton loaders
224
+ statefulTableOptions.data = useMemo(
225
+ () =>
226
+ (statefulTableOptions.state.isLoading ||
227
+ statefulTableOptions.state.showSkeletons) &&
228
+ !statefulTableOptions.data.length
229
+ ? [
230
+ ...Array(
231
+ Math.min(statefulTableOptions.state.pagination.pageSize, 20),
232
+ ).fill(null),
233
+ ].map(() =>
234
+ Object.assign(
235
+ {},
236
+ ...getAllLeafColumnDefs(statefulTableOptions.columns).map(
237
+ (col) => ({
238
+ [getColumnId(col)]: null,
239
+ }),
240
+ ),
241
+ ),
242
+ )
243
+ : statefulTableOptions.data,
244
+ [
245
+ statefulTableOptions.data,
246
+ statefulTableOptions.state.isLoading,
247
+ statefulTableOptions.state.showSkeletons,
248
+ ],
249
+ );
250
+
251
+ //@ts-expect-error
252
+ const table = useReactTable({
253
+ onColumnOrderChange,
254
+ onColumnSizingInfoChange,
255
+ onGroupingChange,
256
+ onPaginationChange,
257
+ ...statefulTableOptions,
258
+ globalFilterFn: statefulTableOptions.filterFns?.[globalFilterFn ?? 'fuzzy'],
259
+ }) as MRT_TableInstance<TData>;
260
+
261
+ table.refs = {
262
+ actionCellRef,
263
+ bottomToolbarRef,
264
+ editInputRefs,
265
+ filterInputRefs,
266
+ lastSelectedRowId,
267
+ searchInputRef,
268
+ tableContainerRef,
269
+ tableFooterRef,
270
+ tableHeadCellRefs,
271
+ tableHeadRef,
272
+ tablePaperRef,
273
+ topToolbarRef,
274
+ };
275
+
276
+ table.setActionCell =
277
+ statefulTableOptions.onActionCellChange ?? setActionCell;
278
+ table.setCreatingRow = (row: MRT_Updater<MRT_Row<TData> | null | true>) => {
279
+ let _row = row;
280
+ if (row === true) {
281
+ _row = createRow(table);
282
+ }
283
+ statefulTableOptions?.onCreatingRowChange?.(
284
+ _row as MRT_Row<TData> | null,
285
+ ) ?? _setCreatingRow(_row as MRT_Row<TData> | null);
286
+ };
287
+ table.setColumnFilterFns =
288
+ statefulTableOptions.onColumnFilterFnsChange ?? setColumnFilterFns;
289
+ table.setDensity = statefulTableOptions.onDensityChange ?? setDensity;
290
+ table.setDraggingColumn =
291
+ statefulTableOptions.onDraggingColumnChange ?? setDraggingColumn;
292
+ table.setDraggingRow =
293
+ statefulTableOptions.onDraggingRowChange ?? setDraggingRow;
294
+ table.setEditingCell =
295
+ statefulTableOptions.onEditingCellChange ?? setEditingCell;
296
+ table.setEditingRow =
297
+ statefulTableOptions.onEditingRowChange ?? setEditingRow;
298
+ table.setGlobalFilterFn =
299
+ statefulTableOptions.onGlobalFilterFnChange ?? setGlobalFilterFn;
300
+ table.setHoveredColumn =
301
+ statefulTableOptions.onHoveredColumnChange ?? setHoveredColumn;
302
+ table.setHoveredRow =
303
+ statefulTableOptions.onHoveredRowChange ?? setHoveredRow;
304
+ table.setIsFullScreen =
305
+ statefulTableOptions.onIsFullScreenChange ?? setIsFullScreen;
306
+ table.setShowAlertBanner =
307
+ statefulTableOptions.onShowAlertBannerChange ?? setShowAlertBanner;
308
+ table.setShowColumnFilters =
309
+ statefulTableOptions.onShowColumnFiltersChange ?? setShowColumnFilters;
310
+ table.setShowGlobalFilter =
311
+ statefulTableOptions.onShowGlobalFilterChange ?? setShowGlobalFilter;
312
+ table.setShowToolbarDropZone =
313
+ statefulTableOptions.onShowToolbarDropZoneChange ?? setShowToolbarDropZone;
314
+
315
+ useMRT_Effects(table);
316
+
317
+ return table;
318
+ };
@@ -0,0 +1,271 @@
1
+ import { useTheme } from '@mui/material/styles';
2
+ import {
3
+ getCoreRowModel,
4
+ getExpandedRowModel,
5
+ getFacetedMinMaxValues,
6
+ getFacetedRowModel,
7
+ getFacetedUniqueValues,
8
+ getFilteredRowModel,
9
+ getGroupedRowModel,
10
+ getPaginationRowModel,
11
+ getSortedRowModel,
12
+ } from '@tanstack/react-table';
13
+ import { useId, useMemo } from 'react';
14
+
15
+ import { MRT_AggregationFns } from '../fns/aggregationFns';
16
+ import { MRT_FilterFns } from '../fns/filterFns';
17
+ import { MRT_SortingFns } from '../fns/sortingFns';
18
+ import { MRT_Default_Icons } from '../icons';
19
+ import { MRT_Localization_EN } from '../locales/en';
20
+ import {
21
+ type MRT_DefinedTableOptions,
22
+ type MRT_RowData,
23
+ type MRT_TableOptions,
24
+ } from '../types';
25
+ import { getMRTTheme } from '../utils/style.utils';
26
+
27
+ export const MRT_DefaultColumn = {
28
+ filterVariant: 'text',
29
+ maxSize: 1000,
30
+ minSize: 40,
31
+ size: 180,
32
+ } as const;
33
+
34
+ export const MRT_DefaultDisplayColumn = {
35
+ columnDefType: 'display',
36
+ enableClickToCopy: false,
37
+ enableColumnActions: false,
38
+ enableColumnDragging: false,
39
+ enableColumnFilter: false,
40
+ enableColumnOrdering: false,
41
+ enableEditing: false,
42
+ enableGlobalFilter: false,
43
+ enableGrouping: false,
44
+ enableHiding: false,
45
+ enableResizing: false,
46
+ enableSorting: false,
47
+ } as const;
48
+
49
+ export const useMRT_TableOptions: <TData extends MRT_RowData>(
50
+ tableOptions: MRT_TableOptions<TData>,
51
+ ) => MRT_DefinedTableOptions<TData> = <TData extends MRT_RowData>({
52
+ aggregationFns,
53
+ autoResetExpanded = false,
54
+ columnFilterDisplayMode = 'subheader',
55
+ columnResizeDirection,
56
+ columnResizeMode = 'onChange',
57
+ createDisplayMode = 'modal',
58
+ defaultColumn,
59
+ defaultDisplayColumn,
60
+ editDisplayMode = 'modal',
61
+ enableBatchRowSelection = true,
62
+ enableBottomToolbar = true,
63
+ enableColumnActions = true,
64
+ enableColumnFilters = true,
65
+ enableColumnOrdering = false,
66
+ enableColumnPinning = false,
67
+ enableColumnResizing = false,
68
+ enableColumnVirtualization,
69
+ enableDensityToggle = true,
70
+ enableExpandAll = true,
71
+ enableExpanding,
72
+ enableFacetedValues = false,
73
+ enableFilterMatchHighlighting = true,
74
+ enableFilters = true,
75
+ enableFullScreenToggle = true,
76
+ enableGlobalFilter = true,
77
+ enableGlobalFilterRankedResults = true,
78
+ enableGrouping = false,
79
+ enableHiding = true,
80
+ enableKeyboardShortcuts = true,
81
+ enableMultiRowSelection = true,
82
+ enableMultiSort = true,
83
+ enablePagination = true,
84
+ enableRowPinning = false,
85
+ enableRowSelection = false,
86
+ enableRowVirtualization,
87
+ enableSelectAll = true,
88
+ enableSorting = true,
89
+ enableStickyHeader = false,
90
+ enableTableFooter = true,
91
+ enableTableHead = true,
92
+ enableToolbarInternalActions = true,
93
+ enableTopToolbar = true,
94
+ filterFns,
95
+ icons,
96
+ id = useId(),
97
+ layoutMode,
98
+ localization,
99
+ manualFiltering,
100
+ manualGrouping,
101
+ manualPagination,
102
+ manualSorting,
103
+ mrtTheme,
104
+ paginationDisplayMode = 'default',
105
+ positionActionsColumn = 'first',
106
+ positionCreatingRow = 'top',
107
+ positionExpandColumn = 'first',
108
+ positionGlobalFilter = 'right',
109
+ positionPagination = 'bottom',
110
+ positionToolbarAlertBanner = 'top',
111
+ positionToolbarDropZone = 'top',
112
+ rowNumberDisplayMode = 'static',
113
+ rowPinningDisplayMode = 'sticky',
114
+ selectAllMode = 'page',
115
+ sortingFns,
116
+ ...rest
117
+ }: MRT_TableOptions<TData>) => {
118
+ const theme = useTheme();
119
+
120
+ icons = useMemo(() => ({ ...MRT_Default_Icons, ...icons }), [icons]);
121
+ localization = useMemo(
122
+ () => ({
123
+ ...MRT_Localization_EN,
124
+ ...localization,
125
+ }),
126
+ [localization],
127
+ );
128
+ mrtTheme = useMemo(() => getMRTTheme(mrtTheme, theme), [mrtTheme, theme]);
129
+ aggregationFns = useMemo(
130
+ () => ({ ...MRT_AggregationFns, ...aggregationFns }),
131
+ [],
132
+ );
133
+ filterFns = useMemo(() => ({ ...MRT_FilterFns, ...filterFns }), []);
134
+ sortingFns = useMemo(() => ({ ...MRT_SortingFns, ...sortingFns }), []);
135
+ defaultColumn = useMemo(
136
+ () => ({ ...MRT_DefaultColumn, ...defaultColumn }),
137
+ [defaultColumn],
138
+ );
139
+ defaultDisplayColumn = useMemo(
140
+ () => ({
141
+ ...MRT_DefaultDisplayColumn,
142
+ ...defaultDisplayColumn,
143
+ }),
144
+ [defaultDisplayColumn],
145
+ );
146
+ //cannot be changed after initialization
147
+ [enableColumnVirtualization, enableRowVirtualization] = useMemo(
148
+ () => [enableColumnVirtualization, enableRowVirtualization],
149
+ [],
150
+ );
151
+
152
+ if (!columnResizeDirection) {
153
+ columnResizeDirection = theme.direction || 'ltr';
154
+ }
155
+
156
+ layoutMode =
157
+ layoutMode || (enableColumnResizing ? 'grid-no-grow' : 'semantic');
158
+ if (
159
+ layoutMode === 'semantic' &&
160
+ (enableRowVirtualization || enableColumnVirtualization)
161
+ ) {
162
+ layoutMode = 'grid';
163
+ }
164
+
165
+ if (enableRowVirtualization) {
166
+ enableStickyHeader = true;
167
+ }
168
+
169
+ if (enablePagination === false && manualPagination === undefined) {
170
+ manualPagination = true;
171
+ }
172
+
173
+ if (!rest.data?.length) {
174
+ manualFiltering = true;
175
+ manualGrouping = true;
176
+ manualPagination = true;
177
+ manualSorting = true;
178
+ }
179
+
180
+ return {
181
+ aggregationFns,
182
+ autoResetExpanded,
183
+ columnFilterDisplayMode,
184
+ columnResizeDirection,
185
+ columnResizeMode,
186
+ createDisplayMode,
187
+ defaultColumn,
188
+ defaultDisplayColumn,
189
+ editDisplayMode,
190
+ enableBatchRowSelection,
191
+ enableBottomToolbar,
192
+ enableColumnActions,
193
+ enableColumnFilters,
194
+ enableColumnOrdering,
195
+ enableColumnPinning,
196
+ enableColumnResizing,
197
+ enableColumnVirtualization,
198
+ enableDensityToggle,
199
+ enableExpandAll,
200
+ enableExpanding,
201
+ enableFacetedValues,
202
+ enableFilterMatchHighlighting,
203
+ enableFilters,
204
+ enableFullScreenToggle,
205
+ enableGlobalFilter,
206
+ enableGlobalFilterRankedResults,
207
+ enableGrouping,
208
+ enableHiding,
209
+ enableKeyboardShortcuts,
210
+ enableMultiRowSelection,
211
+ enableMultiSort,
212
+ enablePagination,
213
+ enableRowPinning,
214
+ enableRowSelection,
215
+ enableRowVirtualization,
216
+ enableSelectAll,
217
+ enableSorting,
218
+ enableStickyHeader,
219
+ enableTableFooter,
220
+ enableTableHead,
221
+ enableToolbarInternalActions,
222
+ enableTopToolbar,
223
+ filterFns,
224
+ getCoreRowModel: getCoreRowModel(),
225
+ getExpandedRowModel:
226
+ enableExpanding || enableGrouping ? getExpandedRowModel() : undefined,
227
+ getFacetedMinMaxValues: enableFacetedValues
228
+ ? getFacetedMinMaxValues()
229
+ : undefined,
230
+ getFacetedRowModel: enableFacetedValues ? getFacetedRowModel() : undefined,
231
+ getFacetedUniqueValues: enableFacetedValues
232
+ ? getFacetedUniqueValues()
233
+ : undefined,
234
+ getFilteredRowModel:
235
+ (enableColumnFilters || enableGlobalFilter || enableFilters) &&
236
+ !manualFiltering
237
+ ? getFilteredRowModel()
238
+ : undefined,
239
+ getGroupedRowModel:
240
+ enableGrouping && !manualGrouping ? getGroupedRowModel() : undefined,
241
+ getPaginationRowModel:
242
+ enablePagination && !manualPagination
243
+ ? getPaginationRowModel()
244
+ : undefined,
245
+ getSortedRowModel:
246
+ enableSorting && !manualSorting ? getSortedRowModel() : undefined,
247
+ getSubRows: (row) => row?.subRows,
248
+ icons,
249
+ id,
250
+ layoutMode,
251
+ localization,
252
+ manualFiltering,
253
+ manualGrouping,
254
+ manualPagination,
255
+ manualSorting,
256
+ mrtTheme,
257
+ paginationDisplayMode,
258
+ positionActionsColumn,
259
+ positionCreatingRow,
260
+ positionExpandColumn,
261
+ positionGlobalFilter,
262
+ positionPagination,
263
+ positionToolbarAlertBanner,
264
+ positionToolbarDropZone,
265
+ rowNumberDisplayMode,
266
+ rowPinningDisplayMode,
267
+ selectAllMode,
268
+ sortingFns,
269
+ ...rest,
270
+ } as MRT_DefinedTableOptions<TData>;
271
+ };
@@ -0,0 +1,12 @@
1
+ import {
2
+ type MRT_RowData,
3
+ type MRT_TableInstance,
4
+ type MRT_TableOptions,
5
+ } from '../types';
6
+ import { useMRT_TableInstance } from './useMRT_TableInstance';
7
+ import { useMRT_TableOptions } from './useMRT_TableOptions';
8
+
9
+ export const useMaterialReactTable = <TData extends MRT_RowData>(
10
+ tableOptions: MRT_TableOptions<TData>,
11
+ ): MRT_TableInstance<TData> =>
12
+ useMRT_TableInstance(useMRT_TableOptions(tableOptions));
package/src/icons.ts ADDED
@@ -0,0 +1,73 @@
1
+ import ArrowDownwardIcon from '@mui/icons-material/ArrowDownward';
2
+ import ArrowRightIcon from '@mui/icons-material/ArrowRight';
3
+ import CancelIcon from '@mui/icons-material/Cancel';
4
+ import ChevronLeftIcon from '@mui/icons-material/ChevronLeft';
5
+ import ChevronRightIcon from '@mui/icons-material/ChevronRight';
6
+ import ClearAllIcon from '@mui/icons-material/ClearAll';
7
+ import CloseIcon from '@mui/icons-material/Close';
8
+ import ContentCopy from '@mui/icons-material/ContentCopy';
9
+ import DensityLargeIcon from '@mui/icons-material/DensityLarge';
10
+ import DensityMediumIcon from '@mui/icons-material/DensityMedium';
11
+ import DensitySmallIcon from '@mui/icons-material/DensitySmall';
12
+ import DragHandleIcon from '@mui/icons-material/DragHandle';
13
+ import DynamicFeedIcon from '@mui/icons-material/DynamicFeed';
14
+ import EditIcon from '@mui/icons-material/Edit';
15
+ import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
16
+ import FilterAltIcon from '@mui/icons-material/FilterAlt';
17
+ import FilterListIcon from '@mui/icons-material/FilterList';
18
+ import FilterListOffIcon from '@mui/icons-material/FilterListOff';
19
+ import FirstPageIcon from '@mui/icons-material/FirstPage';
20
+ import FullscreenIcon from '@mui/icons-material/Fullscreen';
21
+ import FullscreenExitIcon from '@mui/icons-material/FullscreenExit';
22
+ import KeyboardDoubleArrowDownIcon from '@mui/icons-material/KeyboardDoubleArrowDown';
23
+ import LastPageIcon from '@mui/icons-material/LastPage';
24
+ import MoreHorizIcon from '@mui/icons-material/MoreHoriz';
25
+ import MoreVertIcon from '@mui/icons-material/MoreVert';
26
+ import PushPinIcon from '@mui/icons-material/PushPin';
27
+ import RestartAltIcon from '@mui/icons-material/RestartAlt';
28
+ import SaveIcon from '@mui/icons-material/Save';
29
+ import SearchIcon from '@mui/icons-material/Search';
30
+ import SearchOffIcon from '@mui/icons-material/SearchOff';
31
+ import SortIcon from '@mui/icons-material/Sort';
32
+ import SyncAltIcon from '@mui/icons-material/SyncAlt';
33
+ import ViewColumnIcon from '@mui/icons-material/ViewColumn';
34
+ import VisibilityOffIcon from '@mui/icons-material/VisibilityOff';
35
+
36
+ export const MRT_Default_Icons = {
37
+ ArrowDownwardIcon,
38
+ ArrowRightIcon,
39
+ CancelIcon,
40
+ ChevronLeftIcon,
41
+ ChevronRightIcon,
42
+ ClearAllIcon,
43
+ CloseIcon,
44
+ ContentCopy,
45
+ DensityLargeIcon,
46
+ DensityMediumIcon,
47
+ DensitySmallIcon,
48
+ DragHandleIcon,
49
+ DynamicFeedIcon,
50
+ EditIcon,
51
+ ExpandMoreIcon,
52
+ FilterAltIcon,
53
+ FilterListIcon,
54
+ FilterListOffIcon,
55
+ FirstPageIcon,
56
+ FullscreenExitIcon,
57
+ FullscreenIcon,
58
+ KeyboardDoubleArrowDownIcon,
59
+ LastPageIcon,
60
+ MoreHorizIcon,
61
+ MoreVertIcon,
62
+ PushPinIcon,
63
+ RestartAltIcon,
64
+ SaveIcon,
65
+ SearchIcon,
66
+ SearchOffIcon,
67
+ SortIcon,
68
+ SyncAltIcon,
69
+ ViewColumnIcon,
70
+ VisibilityOffIcon,
71
+ } as const;
72
+
73
+ export type MRT_Icons = Record<keyof typeof MRT_Default_Icons, any>;