material-react-table 2.0.0-beta.0 → 2.0.0-beta.2

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 (202) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/index.js +119 -81
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/cjs/types/MaterialReactTable.d.ts +4 -4
  5. package/dist/cjs/types/body/MRT_TableBody.d.ts +4 -4
  6. package/dist/cjs/types/body/MRT_TableBodyCell.d.ts +5 -5
  7. package/dist/cjs/types/body/MRT_TableBodyCellValue.d.ts +3 -3
  8. package/dist/cjs/types/body/MRT_TableBodyRow.d.ts +5 -5
  9. package/dist/cjs/types/body/MRT_TableBodyRowGrabHandle.d.ts +3 -3
  10. package/dist/cjs/types/body/MRT_TableBodyRowPinButton.d.ts +3 -3
  11. package/dist/cjs/types/body/MRT_TableDetailPanel.d.ts +3 -3
  12. package/dist/cjs/types/buttons/MRT_ColumnPinningButtons.d.ts +3 -3
  13. package/dist/cjs/types/buttons/MRT_CopyButton.d.ts +3 -3
  14. package/dist/cjs/types/buttons/MRT_EditActionButtons.d.ts +3 -3
  15. package/dist/cjs/types/buttons/MRT_ExpandAllButton.d.ts +3 -3
  16. package/dist/cjs/types/buttons/MRT_ExpandButton.d.ts +3 -3
  17. package/dist/cjs/types/buttons/MRT_GrabHandleButton.d.ts +3 -3
  18. package/dist/cjs/types/buttons/MRT_RowPinButton.d.ts +3 -3
  19. package/dist/cjs/types/buttons/MRT_ShowHideColumnsButton.d.ts +3 -3
  20. package/dist/cjs/types/buttons/MRT_ToggleDensePaddingButton.d.ts +3 -3
  21. package/dist/cjs/types/buttons/MRT_ToggleFiltersButton.d.ts +3 -3
  22. package/dist/cjs/types/buttons/MRT_ToggleFullScreenButton.d.ts +3 -3
  23. package/dist/cjs/types/buttons/MRT_ToggleGlobalFilterButton.d.ts +3 -3
  24. package/dist/cjs/types/buttons/MRT_ToggleRowActionMenuButton.d.ts +3 -3
  25. package/dist/cjs/types/column.utils.d.ts +34 -33
  26. package/dist/cjs/types/filterFns.d.ts +15 -14
  27. package/dist/cjs/types/footer/MRT_TableFooter.d.ts +3 -3
  28. package/dist/cjs/types/footer/MRT_TableFooterCell.d.ts +3 -3
  29. package/dist/cjs/types/footer/MRT_TableFooterRow.d.ts +3 -3
  30. package/dist/cjs/types/head/MRT_TableHead.d.ts +3 -3
  31. package/dist/cjs/types/head/MRT_TableHeadCell.d.ts +3 -3
  32. package/dist/cjs/types/head/MRT_TableHeadCellColumnActionsButton.d.ts +3 -3
  33. package/dist/cjs/types/head/MRT_TableHeadCellFilterContainer.d.ts +3 -3
  34. package/dist/cjs/types/head/MRT_TableHeadCellFilterLabel.d.ts +3 -3
  35. package/dist/cjs/types/head/MRT_TableHeadCellGrabHandle.d.ts +3 -3
  36. package/dist/cjs/types/head/MRT_TableHeadCellResizeHandle.d.ts +3 -3
  37. package/dist/cjs/types/head/MRT_TableHeadCellSortLabel.d.ts +3 -3
  38. package/dist/cjs/types/head/MRT_TableHeadRow.d.ts +3 -3
  39. package/dist/cjs/types/hooks/useMRT_DisplayColumns.d.ts +3 -3
  40. package/dist/cjs/types/hooks/useMRT_Effects.d.ts +2 -2
  41. package/dist/cjs/types/hooks/useMRT_TableInstance.d.ts +2 -2
  42. package/dist/cjs/types/hooks/useMRT_TableOptions.d.ts +2 -2
  43. package/dist/cjs/types/inputs/MRT_EditCellTextField.d.ts +3 -3
  44. package/dist/cjs/types/inputs/MRT_FilterCheckbox.d.ts +3 -3
  45. package/dist/cjs/types/inputs/MRT_FilterRangeFields.d.ts +3 -3
  46. package/dist/cjs/types/inputs/MRT_FilterRangeSlider.d.ts +3 -3
  47. package/dist/cjs/types/inputs/MRT_FilterTextField.d.ts +3 -3
  48. package/dist/cjs/types/inputs/MRT_GlobalFilterTextField.d.ts +3 -3
  49. package/dist/cjs/types/inputs/MRT_SelectCheckbox.d.ts +3 -3
  50. package/dist/cjs/types/menus/MRT_ColumnActionMenu.d.ts +3 -3
  51. package/dist/cjs/types/menus/MRT_FilterOptionMenu.d.ts +3 -3
  52. package/dist/cjs/types/menus/MRT_RowActionMenu.d.ts +3 -3
  53. package/dist/cjs/types/menus/MRT_ShowHideColumnsMenu.d.ts +3 -3
  54. package/dist/cjs/types/menus/MRT_ShowHideColumnsMenuItems.d.ts +3 -3
  55. package/dist/cjs/types/modals/MRT_EditRowModal.d.ts +3 -3
  56. package/dist/cjs/types/sortingFns.d.ts +3 -3
  57. package/dist/cjs/types/table/MRT_Table.d.ts +3 -3
  58. package/dist/cjs/types/table/MRT_TableContainer.d.ts +3 -3
  59. package/dist/cjs/types/table/MRT_TablePaper.d.ts +3 -3
  60. package/dist/cjs/types/toolbar/MRT_BottomToolbar.d.ts +3 -3
  61. package/dist/cjs/types/toolbar/MRT_LinearProgressBar.d.ts +3 -3
  62. package/dist/cjs/types/toolbar/MRT_TablePagination.d.ts +3 -3
  63. package/dist/cjs/types/toolbar/MRT_ToolbarAlertBanner.d.ts +3 -3
  64. package/dist/cjs/types/toolbar/MRT_ToolbarDropZone.d.ts +3 -3
  65. package/dist/cjs/types/toolbar/MRT_ToolbarInternalButtons.d.ts +3 -3
  66. package/dist/cjs/types/toolbar/MRT_TopToolbar.d.ts +3 -3
  67. package/dist/cjs/types/types.d.ts +50 -40
  68. package/dist/cjs/types/useMaterialReactTable.d.ts +2 -2
  69. package/dist/esm/material-react-table.esm.js +119 -82
  70. package/dist/esm/material-react-table.esm.js.map +1 -1
  71. package/dist/esm/types/MaterialReactTable.d.ts +4 -4
  72. package/dist/esm/types/body/MRT_TableBody.d.ts +4 -4
  73. package/dist/esm/types/body/MRT_TableBodyCell.d.ts +5 -5
  74. package/dist/esm/types/body/MRT_TableBodyCellValue.d.ts +3 -3
  75. package/dist/esm/types/body/MRT_TableBodyRow.d.ts +5 -5
  76. package/dist/esm/types/body/MRT_TableBodyRowGrabHandle.d.ts +3 -3
  77. package/dist/esm/types/body/MRT_TableBodyRowPinButton.d.ts +3 -3
  78. package/dist/esm/types/body/MRT_TableDetailPanel.d.ts +3 -3
  79. package/dist/esm/types/buttons/MRT_ColumnPinningButtons.d.ts +3 -3
  80. package/dist/esm/types/buttons/MRT_CopyButton.d.ts +3 -3
  81. package/dist/esm/types/buttons/MRT_EditActionButtons.d.ts +3 -3
  82. package/dist/esm/types/buttons/MRT_ExpandAllButton.d.ts +3 -3
  83. package/dist/esm/types/buttons/MRT_ExpandButton.d.ts +3 -3
  84. package/dist/esm/types/buttons/MRT_GrabHandleButton.d.ts +3 -3
  85. package/dist/esm/types/buttons/MRT_RowPinButton.d.ts +3 -3
  86. package/dist/esm/types/buttons/MRT_ShowHideColumnsButton.d.ts +3 -3
  87. package/dist/esm/types/buttons/MRT_ToggleDensePaddingButton.d.ts +3 -3
  88. package/dist/esm/types/buttons/MRT_ToggleFiltersButton.d.ts +3 -3
  89. package/dist/esm/types/buttons/MRT_ToggleFullScreenButton.d.ts +3 -3
  90. package/dist/esm/types/buttons/MRT_ToggleGlobalFilterButton.d.ts +3 -3
  91. package/dist/esm/types/buttons/MRT_ToggleRowActionMenuButton.d.ts +3 -3
  92. package/dist/esm/types/column.utils.d.ts +34 -33
  93. package/dist/esm/types/filterFns.d.ts +15 -14
  94. package/dist/esm/types/footer/MRT_TableFooter.d.ts +3 -3
  95. package/dist/esm/types/footer/MRT_TableFooterCell.d.ts +3 -3
  96. package/dist/esm/types/footer/MRT_TableFooterRow.d.ts +3 -3
  97. package/dist/esm/types/head/MRT_TableHead.d.ts +3 -3
  98. package/dist/esm/types/head/MRT_TableHeadCell.d.ts +3 -3
  99. package/dist/esm/types/head/MRT_TableHeadCellColumnActionsButton.d.ts +3 -3
  100. package/dist/esm/types/head/MRT_TableHeadCellFilterContainer.d.ts +3 -3
  101. package/dist/esm/types/head/MRT_TableHeadCellFilterLabel.d.ts +3 -3
  102. package/dist/esm/types/head/MRT_TableHeadCellGrabHandle.d.ts +3 -3
  103. package/dist/esm/types/head/MRT_TableHeadCellResizeHandle.d.ts +3 -3
  104. package/dist/esm/types/head/MRT_TableHeadCellSortLabel.d.ts +3 -3
  105. package/dist/esm/types/head/MRT_TableHeadRow.d.ts +3 -3
  106. package/dist/esm/types/hooks/useMRT_DisplayColumns.d.ts +3 -3
  107. package/dist/esm/types/hooks/useMRT_Effects.d.ts +2 -2
  108. package/dist/esm/types/hooks/useMRT_TableInstance.d.ts +2 -2
  109. package/dist/esm/types/hooks/useMRT_TableOptions.d.ts +2 -2
  110. package/dist/esm/types/inputs/MRT_EditCellTextField.d.ts +3 -3
  111. package/dist/esm/types/inputs/MRT_FilterCheckbox.d.ts +3 -3
  112. package/dist/esm/types/inputs/MRT_FilterRangeFields.d.ts +3 -3
  113. package/dist/esm/types/inputs/MRT_FilterRangeSlider.d.ts +3 -3
  114. package/dist/esm/types/inputs/MRT_FilterTextField.d.ts +3 -3
  115. package/dist/esm/types/inputs/MRT_GlobalFilterTextField.d.ts +3 -3
  116. package/dist/esm/types/inputs/MRT_SelectCheckbox.d.ts +3 -3
  117. package/dist/esm/types/menus/MRT_ColumnActionMenu.d.ts +3 -3
  118. package/dist/esm/types/menus/MRT_FilterOptionMenu.d.ts +3 -3
  119. package/dist/esm/types/menus/MRT_RowActionMenu.d.ts +3 -3
  120. package/dist/esm/types/menus/MRT_ShowHideColumnsMenu.d.ts +3 -3
  121. package/dist/esm/types/menus/MRT_ShowHideColumnsMenuItems.d.ts +3 -3
  122. package/dist/esm/types/modals/MRT_EditRowModal.d.ts +3 -3
  123. package/dist/esm/types/sortingFns.d.ts +3 -3
  124. package/dist/esm/types/table/MRT_Table.d.ts +3 -3
  125. package/dist/esm/types/table/MRT_TableContainer.d.ts +3 -3
  126. package/dist/esm/types/table/MRT_TablePaper.d.ts +3 -3
  127. package/dist/esm/types/toolbar/MRT_BottomToolbar.d.ts +3 -3
  128. package/dist/esm/types/toolbar/MRT_LinearProgressBar.d.ts +3 -3
  129. package/dist/esm/types/toolbar/MRT_TablePagination.d.ts +3 -3
  130. package/dist/esm/types/toolbar/MRT_ToolbarAlertBanner.d.ts +3 -3
  131. package/dist/esm/types/toolbar/MRT_ToolbarDropZone.d.ts +3 -3
  132. package/dist/esm/types/toolbar/MRT_ToolbarInternalButtons.d.ts +3 -3
  133. package/dist/esm/types/toolbar/MRT_TopToolbar.d.ts +3 -3
  134. package/dist/esm/types/types.d.ts +50 -40
  135. package/dist/esm/types/useMaterialReactTable.d.ts +2 -2
  136. package/dist/index.d.ts +219 -208
  137. package/package.json +1 -1
  138. package/src/MaterialReactTable.tsx +5 -4
  139. package/src/body/MRT_TableBody.tsx +12 -3
  140. package/src/body/MRT_TableBodyCell.tsx +28 -8
  141. package/src/body/MRT_TableBodyCellValue.tsx +7 -3
  142. package/src/body/MRT_TableBodyRow.tsx +9 -4
  143. package/src/body/MRT_TableBodyRowGrabHandle.tsx +7 -3
  144. package/src/body/MRT_TableBodyRowPinButton.tsx +7 -3
  145. package/src/body/MRT_TableDetailPanel.tsx +8 -5
  146. package/src/buttons/MRT_ColumnPinningButtons.tsx +7 -3
  147. package/src/buttons/MRT_CopyButton.tsx +7 -3
  148. package/src/buttons/MRT_EditActionButtons.tsx +7 -3
  149. package/src/buttons/MRT_ExpandAllButton.tsx +5 -6
  150. package/src/buttons/MRT_ExpandButton.tsx +9 -6
  151. package/src/buttons/MRT_GrabHandleButton.tsx +3 -3
  152. package/src/buttons/MRT_RowPinButton.tsx +7 -3
  153. package/src/buttons/MRT_ShowHideColumnsButton.tsx +3 -3
  154. package/src/buttons/MRT_ToggleDensePaddingButton.tsx +3 -5
  155. package/src/buttons/MRT_ToggleFiltersButton.tsx +3 -3
  156. package/src/buttons/MRT_ToggleFullScreenButton.tsx +3 -3
  157. package/src/buttons/MRT_ToggleGlobalFilterButton.tsx +3 -5
  158. package/src/buttons/MRT_ToggleRowActionMenuButton.tsx +8 -5
  159. package/src/column.utils.ts +41 -17
  160. package/src/filterFns.ts +15 -14
  161. package/src/footer/MRT_TableFooter.tsx +3 -3
  162. package/src/footer/MRT_TableFooterCell.tsx +7 -3
  163. package/src/footer/MRT_TableFooterRow.tsx +3 -2
  164. package/src/head/MRT_TableHead.tsx +3 -3
  165. package/src/head/MRT_TableHeadCell.tsx +28 -16
  166. package/src/head/MRT_TableHeadCellColumnActionsButton.tsx +7 -3
  167. package/src/head/MRT_TableHeadCellFilterContainer.tsx +7 -5
  168. package/src/head/MRT_TableHeadCellFilterLabel.tsx +7 -5
  169. package/src/head/MRT_TableHeadCellGrabHandle.tsx +7 -3
  170. package/src/head/MRT_TableHeadCellResizeHandle.tsx +15 -8
  171. package/src/head/MRT_TableHeadCellSortLabel.tsx +7 -3
  172. package/src/head/MRT_TableHeadRow.tsx +3 -2
  173. package/src/hooks/useMRT_DisplayColumns.tsx +3 -2
  174. package/src/hooks/useMRT_Effects.ts +6 -2
  175. package/src/hooks/useMRT_TableInstance.ts +3 -2
  176. package/src/hooks/useMRT_TableOptions.ts +7 -3
  177. package/src/inputs/MRT_EditCellTextField.tsx +17 -5
  178. package/src/inputs/MRT_FilterCheckbox.tsx +7 -3
  179. package/src/inputs/MRT_FilterRangeFields.tsx +7 -3
  180. package/src/inputs/MRT_FilterRangeSlider.tsx +7 -3
  181. package/src/inputs/MRT_FilterTextField.tsx +9 -3
  182. package/src/inputs/MRT_GlobalFilterTextField.tsx +3 -3
  183. package/src/inputs/MRT_SelectCheckbox.tsx +7 -3
  184. package/src/menus/MRT_ColumnActionMenu.tsx +7 -3
  185. package/src/menus/MRT_FilterOptionMenu.tsx +3 -2
  186. package/src/menus/MRT_RowActionMenu.tsx +7 -3
  187. package/src/menus/MRT_ShowHideColumnsMenu.tsx +7 -3
  188. package/src/menus/MRT_ShowHideColumnsMenuItems.tsx +7 -5
  189. package/src/modals/MRT_EditRowModal.tsx +7 -3
  190. package/src/sortingFns.ts +3 -3
  191. package/src/table/MRT_Table.tsx +3 -3
  192. package/src/table/MRT_TableContainer.tsx +3 -3
  193. package/src/table/MRT_TablePaper.tsx +4 -4
  194. package/src/toolbar/MRT_BottomToolbar.tsx +3 -3
  195. package/src/toolbar/MRT_LinearProgressBar.tsx +3 -3
  196. package/src/toolbar/MRT_TablePagination.tsx +8 -5
  197. package/src/toolbar/MRT_ToolbarAlertBanner.tsx +3 -3
  198. package/src/toolbar/MRT_ToolbarDropZone.tsx +3 -3
  199. package/src/toolbar/MRT_ToolbarInternalButtons.tsx +3 -3
  200. package/src/toolbar/MRT_TopToolbar.tsx +3 -3
  201. package/src/types.ts +75 -45
  202. package/src/useMaterialReactTable.ts +6 -2
@@ -4,13 +4,13 @@ import { MRT_ToggleDensePaddingButton } from '../buttons/MRT_ToggleDensePaddingB
4
4
  import { MRT_ToggleFiltersButton } from '../buttons/MRT_ToggleFiltersButton';
5
5
  import { MRT_ToggleFullScreenButton } from '../buttons/MRT_ToggleFullScreenButton';
6
6
  import { MRT_ToggleGlobalFilterButton } from '../buttons/MRT_ToggleGlobalFilterButton';
7
- import { type MRT_TableInstance } from '../types';
7
+ import { type MRT_RowData, type MRT_TableInstance } from '../types';
8
8
 
9
- interface Props<TData extends Record<string, any>> {
9
+ interface Props<TData extends MRT_RowData> {
10
10
  table: MRT_TableInstance<TData>;
11
11
  }
12
12
 
13
- export const MRT_ToolbarInternalButtons = <TData extends Record<string, any>>({
13
+ export const MRT_ToolbarInternalButtons = <TData extends MRT_RowData>({
14
14
  table,
15
15
  }: Props<TData>) => {
16
16
  const {
@@ -10,7 +10,7 @@ import { MRT_ToolbarDropZone } from './MRT_ToolbarDropZone';
10
10
  import { MRT_ToolbarInternalButtons } from './MRT_ToolbarInternalButtons';
11
11
  import { parseFromValuesOrFunc } from '../column.utils';
12
12
  import { MRT_GlobalFilterTextField } from '../inputs/MRT_GlobalFilterTextField';
13
- import { type MRT_TableInstance } from '../types';
13
+ import { type MRT_RowData, type MRT_TableInstance } from '../types';
14
14
 
15
15
  export const commonToolbarStyles = ({ theme }: { theme: Theme }) => ({
16
16
  alignItems: 'flex-start',
@@ -25,11 +25,11 @@ export const commonToolbarStyles = ({ theme }: { theme: Theme }) => ({
25
25
  zIndex: 1,
26
26
  });
27
27
 
28
- interface Props<TData extends Record<string, any>> {
28
+ interface Props<TData extends MRT_RowData> {
29
29
  table: MRT_TableInstance<TData>;
30
30
  }
31
31
 
32
- export const MRT_TopToolbar = <TData extends Record<string, any>>({
32
+ export const MRT_TopToolbar = <TData extends MRT_RowData>({
33
33
  table,
34
34
  }: Props<TData>) => {
35
35
  const {
package/src/types.ts CHANGED
@@ -6,6 +6,7 @@ import {
6
6
  type SetStateAction,
7
7
  } from 'react';
8
8
  import {
9
+ type AccessorFn,
9
10
  type AggregationFn,
10
11
  type Cell,
11
12
  type Column,
@@ -16,6 +17,7 @@ import {
16
17
  type ColumnSizingInfoState,
17
18
  type ColumnSizingState,
18
19
  type DeepKeys,
20
+ type DeepValue,
19
21
  type ExpandedState,
20
22
  type FilterFn,
21
23
  type GroupingState,
@@ -82,6 +84,8 @@ export type MRT_DensityState = 'comfortable' | 'compact' | 'spacious';
82
84
 
83
85
  export type MRT_ColumnFilterFnsState = Record<string, MRT_FilterOption>;
84
86
 
87
+ export type MRT_RowData = Record<string, any>;
88
+
85
89
  export type {
86
90
  ColumnFiltersState as MRT_ColumnFiltersState,
87
91
  ColumnOrderState as MRT_ColumnOrderState,
@@ -100,6 +104,22 @@ export type {
100
104
  VisibilityState as MRT_VisibilityState,
101
105
  };
102
106
 
107
+ export type MRT_ColumnHelper<TData extends MRT_RowData> = {
108
+ accessor: <
109
+ TAccessor extends AccessorFn<TData> | DeepKeys<TData>,
110
+ TValue extends TAccessor extends AccessorFn<TData, infer TReturn>
111
+ ? TReturn
112
+ : TAccessor extends DeepKeys<TData>
113
+ ? DeepValue<TData, TAccessor>
114
+ : never,
115
+ >(
116
+ accessor: TAccessor,
117
+ column: MRT_DisplayColumnDef<TData, TValue>,
118
+ ) => MRT_ColumnDef<TData, TValue>;
119
+ display: (column: MRT_DisplayColumnDef<TData>) => MRT_ColumnDef<TData>;
120
+ group: (column: MRT_GroupColumnDef<TData>) => MRT_ColumnDef<TData>;
121
+ };
122
+
103
123
  export interface MRT_Localization {
104
124
  actions: string;
105
125
  and: string;
@@ -192,13 +212,13 @@ export interface MRT_Localization {
192
212
  unpinAll: string;
193
213
  }
194
214
 
195
- export interface MRT_RowModel<TData extends Record<string, any>> {
215
+ export interface MRT_RowModel<TData extends MRT_RowData> {
196
216
  flatRows: MRT_Row<TData>[];
197
217
  rows: MRT_Row<TData>[];
198
218
  rowsById: { [key: string]: MRT_Row<TData> };
199
219
  }
200
220
 
201
- export type MRT_TableInstance<TData extends Record<string, any>> = Omit<
221
+ export type MRT_TableInstance<TData extends MRT_RowData> = Omit<
202
222
  Table<TData>,
203
223
  | 'getAllColumns'
204
224
  | 'getAllFlatColumns'
@@ -270,13 +290,13 @@ export type MRT_TableInstance<TData extends Record<string, any>> = Omit<
270
290
  setShowToolbarDropZone: Dispatch<SetStateAction<boolean>>;
271
291
  };
272
292
 
273
- export type MRT_DefinedTableOptions<TData extends Record<string, any>> =
293
+ export type MRT_DefinedTableOptions<TData extends MRT_RowData> =
274
294
  MRT_TableOptions<TData> & {
275
295
  icons: MRT_Icons;
276
296
  localization: MRT_Localization;
277
297
  };
278
298
 
279
- export type MRT_TableState<TData extends Record<string, any>> = TableState & {
299
+ export type MRT_TableState<TData extends MRT_RowData> = TableState & {
280
300
  columnFilterFns: MRT_ColumnFilterFnsState;
281
301
  creatingRow: MRT_Row<TData> | null;
282
302
  density: MRT_DensityState;
@@ -299,8 +319,8 @@ export type MRT_TableState<TData extends Record<string, any>> = TableState & {
299
319
  showToolbarDropZone: boolean;
300
320
  };
301
321
 
302
- export type MRT_ColumnDef<TData extends Record<string, any>> = Omit<
303
- ColumnDef<TData, unknown>,
322
+ export type MRT_ColumnDef<TData extends MRT_RowData, TValue = unknown> = Omit<
323
+ ColumnDef<TData, TValue>,
304
324
  | 'accessorKey'
305
325
  | 'aggregatedCell'
306
326
  | 'aggregationFn'
@@ -313,54 +333,54 @@ export type MRT_ColumnDef<TData extends Record<string, any>> = Omit<
313
333
  | 'sortingFn'
314
334
  > & {
315
335
  AggregatedCell?: (props: {
316
- cell: MRT_Cell<TData>;
317
- column: MRT_Column<TData>;
336
+ cell: MRT_Cell<TData, TValue>;
337
+ column: MRT_Column<TData, TValue>;
318
338
  row: MRT_Row<TData>;
319
339
  table: MRT_TableInstance<TData>;
320
340
  }) => ReactNode;
321
341
  Cell?: (props: {
322
- cell: MRT_Cell<TData>;
323
- column: MRT_Column<TData>;
324
- renderedCellValue: ReactNode | number | string;
342
+ cell: MRT_Cell<TData, TValue>;
343
+ column: MRT_Column<TData, TValue>;
344
+ renderedCellValue: ReactNode;
325
345
  row: MRT_Row<TData>;
326
346
  rowRef?: RefObject<HTMLTableRowElement>;
327
347
  table: MRT_TableInstance<TData>;
328
348
  }) => ReactNode;
329
349
  Edit?: (props: {
330
- cell: MRT_Cell<TData>;
331
- column: MRT_Column<TData>;
350
+ cell: MRT_Cell<TData, TValue>;
351
+ column: MRT_Column<TData, TValue>;
332
352
  row: MRT_Row<TData>;
333
353
  table: MRT_TableInstance<TData>;
334
354
  }) => ReactNode;
335
355
  Filter?: (props: {
336
- column: MRT_Column<TData>;
356
+ column: MRT_Column<TData, TValue>;
337
357
  header: MRT_Header<TData>;
338
358
  rangeFilterIndex?: number;
339
359
  table: MRT_TableInstance<TData>;
340
360
  }) => ReactNode;
341
361
  Footer?:
342
362
  | ((props: {
343
- column: MRT_Column<TData>;
363
+ column: MRT_Column<TData, TValue>;
344
364
  footer: MRT_Header<TData>;
345
365
  table: MRT_TableInstance<TData>;
346
366
  }) => ReactNode)
347
367
  | ReactNode;
348
368
  GroupedCell?: (props: {
349
- cell: MRT_Cell<TData>;
350
- column: MRT_Column<TData>;
369
+ cell: MRT_Cell<TData, TValue>;
370
+ column: MRT_Column<TData, TValue>;
351
371
  row: MRT_Row<TData>;
352
372
  table: MRT_TableInstance<TData>;
353
373
  }) => ReactNode;
354
374
  Header?:
355
375
  | ((props: {
356
- column: MRT_Column<TData>;
376
+ column: MRT_Column<TData, TValue>;
357
377
  header: MRT_Header<TData>;
358
378
  table: MRT_TableInstance<TData>;
359
379
  }) => ReactNode)
360
380
  | ReactNode;
361
381
  PlaceholderCell?: (props: {
362
- cell: MRT_Cell<TData>;
363
- column: MRT_Column<TData>;
382
+ cell: MRT_Cell<TData, TValue>;
383
+ column: MRT_Column<TData, TValue>;
364
384
  row: MRT_Row<TData>;
365
385
  table: MRT_TableInstance<TData>;
366
386
  }) => ReactNode;
@@ -370,7 +390,7 @@ export type MRT_ColumnDef<TData extends Record<string, any>> = Omit<
370
390
  *
371
391
  * @example accessorFn: (row) => row.username
372
392
  */
373
- accessorFn?: (originalRow: TData) => any;
393
+ accessorFn?: (originalRow: TData) => TValue;
374
394
  /**
375
395
  * Either an `accessorKey` or a combination of an `accessorFn` and `id` are required for a data column definition.
376
396
  * Specify which key in the row this column should use to access the correct data.
@@ -393,7 +413,7 @@ export type MRT_ColumnDef<TData extends Record<string, any>> = Omit<
393
413
  columnFilterModeOptions?: Array<
394
414
  LiteralUnion<string & MRT_FilterOption>
395
415
  > | null;
396
- columns?: MRT_ColumnDef<TData>[];
416
+ columns?: MRT_ColumnDef<TData, TValue>[];
397
417
  editSelectOptions?: ({ text: string; value: any } | string)[];
398
418
  editVariant?: 'select' | 'text';
399
419
  enableClickToCopy?: boolean;
@@ -447,7 +467,7 @@ export type MRT_ColumnDef<TData extends Record<string, any>> = Omit<
447
467
  | IconButtonProps;
448
468
  muiCopyButtonProps?:
449
469
  | ((props: {
450
- cell: MRT_Cell<TData>;
470
+ cell: MRT_Cell<TData, TValue>;
451
471
  column: MRT_Column<TData>;
452
472
  row: MRT_Row<TData>;
453
473
  table: MRT_TableInstance<TData>;
@@ -455,7 +475,7 @@ export type MRT_ColumnDef<TData extends Record<string, any>> = Omit<
455
475
  | ButtonProps;
456
476
  muiEditTextFieldProps?:
457
477
  | ((props: {
458
- cell: MRT_Cell<TData>;
478
+ cell: MRT_Cell<TData, TValue>;
459
479
  column: MRT_Column<TData>;
460
480
  row: MRT_Row<TData>;
461
481
  table: MRT_TableInstance<TData>;
@@ -495,7 +515,7 @@ export type MRT_ColumnDef<TData extends Record<string, any>> = Omit<
495
515
  | TextFieldProps;
496
516
  muiTableBodyCellProps?:
497
517
  | ((props: {
498
- cell: MRT_Cell<TData>;
518
+ cell: MRT_Cell<TData, TValue>;
499
519
  column: MRT_Column<TData>;
500
520
  row: MRT_Row<TData>;
501
521
  table: MRT_TableInstance<TData>;
@@ -528,41 +548,51 @@ export type MRT_ColumnDef<TData extends Record<string, any>> = Omit<
528
548
  sortingFn?: MRT_SortingFn<TData>;
529
549
  };
530
550
 
531
- export type MRT_DefinedColumnDef<TData extends Record<string, any>> = Omit<
532
- MRT_ColumnDef<TData>,
533
- 'defaultDisplayColumn' | 'id'
534
- > & {
551
+ export type MRT_DisplayColumnDef<
552
+ TData extends MRT_RowData,
553
+ TValue = unknown,
554
+ > = Omit<MRT_ColumnDef<TData, TValue>, 'accessorFn' | 'accessorKey'>;
555
+
556
+ export type MRT_GroupColumnDef<TData extends MRT_RowData> =
557
+ MRT_DisplayColumnDef<TData, any> & {
558
+ columns: MRT_ColumnDef<TData>[];
559
+ };
560
+
561
+ export type MRT_DefinedColumnDef<
562
+ TData extends MRT_RowData,
563
+ TValue = unknown,
564
+ > = Omit<MRT_ColumnDef<TData, TValue>, 'defaultDisplayColumn' | 'id'> & {
535
565
  _filterFn: MRT_FilterOption;
536
- defaultDisplayColumn: Partial<MRT_ColumnDef<TData>>;
566
+ defaultDisplayColumn: Partial<MRT_ColumnDef<TData, TValue>>;
537
567
  id: string;
538
568
  };
539
569
 
540
- export type MRT_Column<TData extends Record<string, any>> = Omit<
541
- Column<TData, unknown>,
570
+ export type MRT_Column<TData extends MRT_RowData, TValue = unknown> = Omit<
571
+ Column<TData, TValue>,
542
572
  'columnDef' | 'columns' | 'filterFn' | 'footer' | 'header'
543
573
  > & {
544
- columnDef: MRT_DefinedColumnDef<TData>;
545
- columns?: MRT_Column<TData>[];
574
+ columnDef: MRT_DefinedColumnDef<TData, TValue>;
575
+ columns?: MRT_Column<TData, TValue>[];
546
576
  filterFn?: MRT_FilterFn<TData>;
547
577
  footer: string;
548
578
  header: string;
549
579
  };
550
580
 
551
- export type MRT_Header<TData extends Record<string, any>> = Omit<
581
+ export type MRT_Header<TData extends MRT_RowData> = Omit<
552
582
  Header<TData, unknown>,
553
583
  'column'
554
584
  > & {
555
585
  column: MRT_Column<TData>;
556
586
  };
557
587
 
558
- export type MRT_HeaderGroup<TData extends Record<string, any>> = Omit<
588
+ export type MRT_HeaderGroup<TData extends MRT_RowData> = Omit<
559
589
  HeaderGroup<TData>,
560
590
  'headers'
561
591
  > & {
562
592
  headers: MRT_Header<TData>[];
563
593
  };
564
594
 
565
- export type MRT_Row<TData extends Record<string, any>> = Omit<
595
+ export type MRT_Row<TData extends MRT_RowData> = Omit<
566
596
  Row<TData>,
567
597
  '_valuesCache' | 'getAllCells' | 'getVisibleCells' | 'subRows'
568
598
  > & {
@@ -572,17 +602,17 @@ export type MRT_Row<TData extends Record<string, any>> = Omit<
572
602
  subRows?: MRT_Row<TData>[];
573
603
  };
574
604
 
575
- export type MRT_Cell<TData extends Record<string, any>> = Omit<
576
- Cell<TData, unknown>,
605
+ export type MRT_Cell<TData extends MRT_RowData, TValue = unknown> = Omit<
606
+ Cell<TData, TValue>,
577
607
  'column' | 'row'
578
608
  > & {
579
- column: MRT_Column<TData>;
609
+ column: MRT_Column<TData, TValue>;
580
610
  row: MRT_Row<TData>;
581
611
  };
582
612
 
583
613
  export type MRT_AggregationOption = string & keyof typeof MRT_AggregationFns;
584
614
 
585
- export type MRT_AggregationFn<TData extends Record<string, any>> =
615
+ export type MRT_AggregationFn<TData extends MRT_RowData> =
586
616
  | AggregationFn<TData>
587
617
  | MRT_AggregationOption;
588
618
 
@@ -590,7 +620,7 @@ export type MRT_SortingOption = LiteralUnion<
590
620
  string & keyof typeof MRT_SortingFns
591
621
  >;
592
622
 
593
- export type MRT_SortingFn<TData extends Record<string, any>> =
623
+ export type MRT_SortingFn<TData extends MRT_RowData> =
594
624
  | MRT_SortingOption
595
625
  | SortingFn<TData>;
596
626
 
@@ -598,7 +628,7 @@ export type MRT_FilterOption = LiteralUnion<
598
628
  string & keyof typeof MRT_FilterFns
599
629
  >;
600
630
 
601
- export type MRT_FilterFn<TData extends Record<string, any>> =
631
+ export type MRT_FilterFn<TData extends MRT_RowData> =
602
632
  | FilterFn<TData>
603
633
  | MRT_FilterOption;
604
634
 
@@ -626,7 +656,7 @@ export type MRT_DisplayColumnIds =
626
656
  * See the full props list on the official docs site:
627
657
  * @link https://www.material-react-table.com/docs/api/props
628
658
  */
629
- export type MRT_TableOptions<TData extends Record<string, any>> = Omit<
659
+ export type MRT_TableOptions<TData extends MRT_RowData> = Omit<
630
660
  Partial<TableOptions<TData>>,
631
661
  | 'columns'
632
662
  | 'data'
@@ -662,7 +692,7 @@ export type MRT_TableOptions<TData extends Record<string, any>> = Omit<
662
692
  * See all Columns Options on the official docs site:
663
693
  * @link https://www.material-react-table.com/docs/api/column-options
664
694
  */
665
- columns: MRT_ColumnDef<TData>[];
695
+ columns: MRT_ColumnDef<TData, any>[];
666
696
  createDisplayMode?: 'custom' | 'modal' | 'row';
667
697
  /**
668
698
  * Pass your data as an array of objects. Objects can theoretically be any shape, but it's best to keep them consistent.
@@ -1,8 +1,12 @@
1
1
  import { useMRT_TableInstance } from './hooks/useMRT_TableInstance';
2
2
  import { useMRT_TableOptions } from './hooks/useMRT_TableOptions';
3
- import { type MRT_TableInstance, type MRT_TableOptions } from './types';
3
+ import {
4
+ type MRT_RowData,
5
+ type MRT_TableInstance,
6
+ type MRT_TableOptions,
7
+ } from './types';
4
8
 
5
- export const useMaterialReactTable = <TData extends Record<string, any>>(
9
+ export const useMaterialReactTable = <TData extends MRT_RowData>(
6
10
  tableOptions: MRT_TableOptions<TData>,
7
11
  ): MRT_TableInstance<TData> => {
8
12
  const parsedTableOptions = useMRT_TableOptions(tableOptions);