material-react-table 0.6.10 → 0.7.0-alpha.3

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 (104) hide show
  1. package/README.md +27 -17
  2. package/dist/MaterialReactTable.d.ts +306 -109
  3. package/dist/body/MRT_TableBody.d.ts +3 -0
  4. package/dist/body/MRT_TableBodyCell.d.ts +2 -11
  5. package/dist/body/MRT_TableBodyRow.d.ts +3 -1
  6. package/dist/body/MRT_TableDetailPanel.d.ts +2 -1
  7. package/dist/buttons/MRT_CopyButton.d.ts +4 -2
  8. package/dist/buttons/MRT_EditActionButtons.d.ts +2 -1
  9. package/dist/buttons/MRT_ExpandAllButton.d.ts +2 -0
  10. package/dist/buttons/MRT_ExpandButton.d.ts +2 -1
  11. package/dist/buttons/MRT_FullScreenToggleButton.d.ts +2 -0
  12. package/dist/buttons/MRT_ShowHideColumnsButton.d.ts +2 -0
  13. package/dist/buttons/MRT_ToggleColumnActionMenuButton.d.ts +3 -2
  14. package/dist/buttons/MRT_ToggleDensePaddingButton.d.ts +2 -0
  15. package/dist/buttons/MRT_ToggleFiltersButton.d.ts +2 -0
  16. package/dist/buttons/MRT_ToggleRowActionMenuButton.d.ts +2 -1
  17. package/dist/buttons/MRT_ToggleSearchButton.d.ts +2 -0
  18. package/dist/footer/MRT_TableFooter.d.ts +3 -0
  19. package/dist/footer/MRT_TableFooterCell.d.ts +3 -2
  20. package/dist/footer/MRT_TableFooterRow.d.ts +2 -1
  21. package/dist/head/MRT_TableHead.d.ts +3 -0
  22. package/dist/head/MRT_TableHeadCell.d.ts +4 -18
  23. package/dist/head/MRT_TableHeadRow.d.ts +2 -1
  24. package/dist/icons.d.ts +1 -1
  25. package/dist/inputs/MRT_EditCellTextField.d.ts +2 -1
  26. package/dist/inputs/MRT_FilterTextField.d.ts +3 -2
  27. package/dist/inputs/MRT_SearchTextField.d.ts +2 -0
  28. package/dist/inputs/MRT_SelectCheckbox.d.ts +2 -1
  29. package/dist/localization.d.ts +7 -2
  30. package/dist/material-react-table.cjs.development.js +2209 -2483
  31. package/dist/material-react-table.cjs.development.js.map +1 -1
  32. package/dist/material-react-table.cjs.production.min.js +1 -1
  33. package/dist/material-react-table.cjs.production.min.js.map +1 -1
  34. package/dist/material-react-table.esm.js +2210 -2484
  35. package/dist/material-react-table.esm.js.map +1 -1
  36. package/dist/menus/MRT_ColumnActionMenu.d.ts +3 -2
  37. package/dist/menus/MRT_FilterTypeMenu.d.ts +4 -3
  38. package/dist/menus/MRT_RowActionMenu.d.ts +3 -2
  39. package/dist/menus/MRT_ShowHideColumnsMenu.d.ts +2 -0
  40. package/dist/menus/MRT_ShowHideColumnsMenuItems.d.ts +2 -1
  41. package/dist/table/MRT_Table.d.ts +3 -0
  42. package/dist/table/MRT_TableContainer.d.ts +2 -0
  43. package/dist/table/MRT_TablePaper.d.ts +7 -0
  44. package/dist/table/MRT_TableRoot.d.ts +3 -0
  45. package/dist/toolbar/MRT_LinearProgressBar.d.ts +2 -0
  46. package/dist/toolbar/MRT_TablePagination.d.ts +2 -0
  47. package/dist/toolbar/MRT_ToolbarAlertBanner.d.ts +2 -0
  48. package/dist/toolbar/MRT_ToolbarBottom.d.ts +2 -0
  49. package/dist/toolbar/MRT_ToolbarInternalButtons.d.ts +2 -0
  50. package/dist/toolbar/MRT_ToolbarTop.d.ts +4 -2
  51. package/dist/utils.d.ts +12 -2
  52. package/package.json +28 -29
  53. package/src/MaterialReactTable.tsx +594 -300
  54. package/src/body/MRT_TableBody.tsx +26 -22
  55. package/src/body/MRT_TableBodyCell.tsx +75 -60
  56. package/src/body/MRT_TableBodyRow.tsx +37 -76
  57. package/src/body/MRT_TableDetailPanel.tsx +21 -17
  58. package/src/buttons/MRT_CopyButton.tsx +16 -9
  59. package/src/buttons/MRT_EditActionButtons.tsx +16 -13
  60. package/src/buttons/MRT_ExpandAllButton.tsx +24 -9
  61. package/src/buttons/MRT_ExpandButton.tsx +22 -15
  62. package/src/buttons/MRT_FullScreenToggleButton.tsx +18 -11
  63. package/src/buttons/MRT_ShowHideColumnsButton.tsx +18 -7
  64. package/src/buttons/MRT_ToggleColumnActionMenuButton.tsx +22 -11
  65. package/src/buttons/MRT_ToggleDensePaddingButton.tsx +18 -11
  66. package/src/buttons/MRT_ToggleFiltersButton.tsx +16 -9
  67. package/src/buttons/MRT_ToggleRowActionMenuButton.tsx +27 -22
  68. package/src/buttons/MRT_ToggleSearchButton.tsx +24 -12
  69. package/src/footer/MRT_TableFooter.tsx +24 -8
  70. package/src/footer/MRT_TableFooterCell.tsx +34 -26
  71. package/src/footer/MRT_TableFooterRow.tsx +21 -39
  72. package/src/head/MRT_TableHead.tsx +24 -8
  73. package/src/head/MRT_TableHeadCell.tsx +184 -142
  74. package/src/head/MRT_TableHeadRow.tsx +16 -104
  75. package/src/icons.ts +3 -3
  76. package/src/inputs/MRT_EditCellTextField.tsx +23 -24
  77. package/src/inputs/MRT_FilterTextField.tsx +53 -32
  78. package/src/inputs/MRT_SearchTextField.tsx +46 -24
  79. package/src/inputs/MRT_SelectCheckbox.tsx +42 -30
  80. package/src/localization.ts +13 -2
  81. package/src/menus/MRT_ColumnActionMenu.tsx +129 -69
  82. package/src/menus/MRT_FilterTypeMenu.tsx +28 -22
  83. package/src/menus/MRT_RowActionMenu.tsx +21 -14
  84. package/src/menus/MRT_ShowHideColumnsMenu.tsx +52 -20
  85. package/src/menus/MRT_ShowHideColumnsMenuItems.tsx +27 -17
  86. package/src/table/MRT_Table.tsx +25 -15
  87. package/src/table/MRT_TableContainer.tsx +106 -45
  88. package/src/table/MRT_TablePaper.tsx +65 -0
  89. package/src/table/MRT_TableRoot.tsx +236 -0
  90. package/src/toolbar/MRT_LinearProgressBar.tsx +10 -7
  91. package/src/toolbar/MRT_TablePagination.tsx +33 -19
  92. package/src/toolbar/MRT_ToolbarAlertBanner.tsx +33 -20
  93. package/src/toolbar/MRT_ToolbarBottom.tsx +32 -21
  94. package/src/toolbar/MRT_ToolbarInternalButtons.tsx +34 -20
  95. package/src/toolbar/MRT_ToolbarTop.tsx +36 -29
  96. package/src/utils.ts +37 -8
  97. package/dist/head/MRT_TableHeadCellActions.d.ts +0 -5
  98. package/dist/table/MRT_TableSpacerCell.d.ts +0 -6
  99. package/dist/useMRT.d.ts +0 -28
  100. package/src/@types/faker.d.ts +0 -4
  101. package/src/@types/react-table-config.d.ts +0 -53
  102. package/src/head/MRT_TableHeadCellActions.tsx +0 -29
  103. package/src/table/MRT_TableSpacerCell.tsx +0 -20
  104. package/src/useMRT.tsx +0 -226
@@ -1,10 +1,18 @@
1
- import React, { ChangeEvent, FC, MouseEvent, ReactNode } from 'react';
1
+ import React, {
2
+ ChangeEvent,
3
+ Dispatch,
4
+ FC,
5
+ MouseEvent,
6
+ ReactNode,
7
+ SetStateAction,
8
+ } from 'react';
2
9
  import {
3
10
  AlertProps,
4
11
  ButtonProps,
5
12
  CheckboxProps,
6
13
  IconButtonProps,
7
14
  LinearProgressProps,
15
+ PaperProps,
8
16
  SkeletonProps,
9
17
  TableBodyProps,
10
18
  TableCellProps,
@@ -20,237 +28,302 @@ import {
20
28
  import {
21
29
  Cell,
22
30
  Column,
23
- ColumnInstance,
31
+ ColumnDef,
32
+ DefaultGenerics,
24
33
  FilterType,
25
- ColumnInterface,
34
+ Header,
26
35
  HeaderGroup,
36
+ Options,
37
+ Overwrite,
38
+ PaginationState,
27
39
  Row,
28
40
  TableInstance,
29
- TableOptions,
30
41
  TableState,
31
- UseColumnOrderInstanceProps,
32
- UseColumnOrderState,
33
- UseExpandedInstanceProps,
34
- UseExpandedOptions,
35
- UseExpandedRowProps,
36
- UseExpandedState,
37
- UseFiltersColumnOptions,
38
- UseFiltersColumnProps,
39
- UseFiltersInstanceProps,
40
- UseFiltersOptions,
41
- UseFiltersState,
42
- UseGlobalFiltersColumnOptions,
43
- UseGlobalFiltersInstanceProps,
44
- UseGlobalFiltersOptions,
45
- UseGlobalFiltersState,
46
- UseGroupByCellProps,
47
- UseGroupByColumnOptions,
48
- UseGroupByColumnProps,
49
- UseGroupByInstanceProps,
50
- UseGroupByOptions,
51
- UseGroupByRowProps,
52
- UseGroupByState,
53
- UsePaginationInstanceProps,
54
- UsePaginationOptions,
55
- UsePaginationState,
56
- UseResizeColumnsColumnOptions,
57
- UseResizeColumnsColumnProps,
58
- UseResizeColumnsOptions,
59
- UseResizeColumnsState,
60
- UseRowSelectInstanceProps,
61
- UseRowSelectOptions,
62
- UseRowSelectRowProps,
63
- UseRowSelectState,
64
- UseRowStateCellProps,
65
- UseRowStateInstanceProps,
66
- UseRowStateOptions,
67
- UseRowStateRowProps,
68
- UseRowStateState,
69
- UseSortByColumnOptions,
70
- UseSortByColumnProps,
71
- UseSortByInstanceProps,
72
- UseSortByOptions,
73
- UseSortByState,
74
- UseTableHeaderGroupProps,
75
- UseTableInstanceProps,
76
- UseTableOptions,
77
- } from 'react-table';
78
- import { MaterialReactTableProvider } from './useMRT';
79
- import { MRT_TableContainer } from './table/MRT_TableContainer';
42
+ VisibilityState,
43
+ } from '@tanstack/react-table';
80
44
  import { MRT_Localization, MRT_DefaultLocalization_EN } from './localization';
81
45
  import { MRT_Default_Icons, MRT_Icons } from './icons';
82
46
  import { MRT_FILTER_TYPE } from './enums';
83
- import { defaultFilterFNs } from './filtersFNs';
47
+ import { MRT_TableRoot } from './table/MRT_TableRoot';
84
48
 
85
- export type MRT_TableOptions<D extends {} = {}> = TableOptions<D> &
86
- UseExpandedOptions<D> &
87
- UseFiltersOptions<D> &
88
- UseGlobalFiltersOptions<D> &
89
- UseGroupByOptions<D> &
90
- UsePaginationOptions<D> &
91
- UseResizeColumnsOptions<D> &
92
- UseRowSelectOptions<D> &
93
- UseRowStateOptions<D> &
94
- UseSortByOptions<D> & {
95
- columns: MRT_ColumnInterface[];
96
- data: D[];
97
- initialState?: Partial<MRT_TableState>;
98
- };
49
+ export type MRT_TableOptions<D extends Record<string, any> = {}> = Partial<
50
+ Omit<
51
+ Options<D>,
52
+ 'columns' | 'data' | 'initialState' | 'state' | 'expandRowsFn'
53
+ >
54
+ > & {
55
+ columns: MRT_ColumnInterface<D>[];
56
+ data: D[];
57
+ initialState?: Partial<MRT_TableState<D>>;
58
+ state?: Partial<MRT_TableState<D>>;
59
+ expandRowsFn?: (dataRow: D) => D[];
60
+ };
99
61
 
100
- export type MRT_TableInstance<D extends {} = {}> = TableInstance<D> &
101
- UseTableInstanceProps<D> &
102
- UseColumnOrderInstanceProps<D> &
103
- UseExpandedInstanceProps<D> &
104
- UseFiltersInstanceProps<D> &
105
- UseGlobalFiltersInstanceProps<D> &
106
- UseGroupByInstanceProps<D> &
107
- UsePaginationInstanceProps<D> &
108
- UseRowSelectInstanceProps<D> &
109
- UseRowStateInstanceProps<D> &
110
- UseSortByInstanceProps<D> & {
111
- columns: (Column<D> & MRT_ColumnInstance<D>)[];
112
- footerGroups: MRT_HeaderGroup<D>[];
113
- getToggleAllRowsExpandedProps: () => void;
114
- headerGroups: MRT_HeaderGroup<D>[];
115
- page: MRT_Row<D>[];
116
- resetResizing: () => void;
117
- rows: MRT_Row<D>[];
118
- state: MRT_TableState<D>;
119
- };
62
+ export interface MRT_RowModel<D extends Record<string, any> = {}> {
63
+ flatRows: MRT_Row<D>[];
64
+ rows: MRT_Row<D>[];
65
+ rowsById: { [key: string]: MRT_Row<D> };
66
+ }
120
67
 
121
- export type MRT_ColumnInterface<D extends {} = {}> = ColumnInterface<D> &
122
- UseFiltersColumnOptions<D> &
123
- UseGlobalFiltersColumnOptions<D> &
124
- UseGroupByColumnOptions<D> &
125
- UseResizeColumnsColumnOptions<D> &
126
- UseSortByColumnOptions<D> & {
127
- Edit?: ({
128
- cell,
129
- onChange,
130
- }: {
131
- cell: MRT_Cell<D>;
132
- onChange?: (event: ChangeEvent<HTMLInputElement>) => void;
133
- }) => ReactNode;
134
- Filter?: ({ column }: { column: MRT_HeaderGroup<D> }) => ReactNode;
135
- Footer?: string;
136
- Header?: string;
137
- accessor?: string;
138
- columns?: MRT_ColumnInterface<D>[];
139
- disableClickToCopy?: boolean;
140
- disableColumnActions?: boolean;
141
- disableColumnHiding?: boolean;
142
- disableEditing?: boolean;
143
- disableFilters?: boolean;
144
- enabledFilterTypes?: (MRT_FILTER_TYPE | string)[];
145
- filter?: MRT_FilterType | string | FilterType<D>;
146
- filterSelectOptions?: (string | { text: string; value: string })[];
147
- muiTableBodyCellCopyButtonProps?:
148
- | ButtonProps
149
- | ((cell?: MRT_Cell<D>) => ButtonProps);
150
- muiTableBodyCellEditTextFieldProps?:
151
- | TextFieldProps
152
- | ((cell: MRT_Cell<D>) => TextFieldProps);
153
- muiTableBodyCellProps?:
154
- | TableCellProps
155
- | ((cell: MRT_Cell<D>) => TableCellProps);
156
- muiTableFooterCellProps?:
157
- | TableCellProps
158
- | ((column: Column<D>) => TableCellProps);
159
- muiTableHeadCellColumnActionsButtonProps?:
160
- | IconButtonProps
161
- | ((column: Column<D>) => IconButtonProps);
162
- muiTableHeadCellFilterTextFieldProps?:
163
- | TextFieldProps
164
- | ((column: Column<D>) => TextFieldProps);
165
- muiTableHeadCellProps?:
166
- | TableCellProps
167
- | ((column: Column<D>) => TableCellProps);
168
- onCellEditChange?: (
169
- event: ChangeEvent<HTMLInputElement>,
170
- cell: MRT_Cell<D>,
171
- ) => void;
172
- onFilterChange?: (
173
- event: ChangeEvent<HTMLInputElement>,
174
- filterValue: any,
175
- ) => void;
68
+ export type MRT_TableInstance<D extends Record<string, any> = {}> = Omit<
69
+ TableInstance<
70
+ Overwrite<
71
+ Partial<DefaultGenerics>,
72
+ {
73
+ Row: D;
74
+ }
75
+ >
76
+ >,
77
+ | 'getAllColumns'
78
+ | 'getAllLeafColumns'
79
+ | 'getExpandedRowModel'
80
+ | 'getPaginationRowModel'
81
+ | 'getPrePaginationRowModel'
82
+ | 'getRowModel'
83
+ | 'getSelectedRowModel'
84
+ | 'getState'
85
+ | 'options'
86
+ > & {
87
+ getAllColumns: () => MRT_ColumnInstance<D>[];
88
+ getAllLeafColumns: () => MRT_ColumnInstance<D>[];
89
+ getExpandedRowModel: () => MRT_RowModel<D>;
90
+ getPaginationRowModel: () => MRT_RowModel<D>;
91
+ getPrePaginationRowModel: () => MRT_RowModel<D>;
92
+ getRowModel: () => MRT_RowModel<D>;
93
+ getSelectedRowModel: () => MRT_RowModel<D>;
94
+ getState: () => MRT_TableState<D>;
95
+ options: MaterialReactTableProps<D> & {
96
+ icons: MRT_Icons;
97
+ idPrefix: string;
98
+ filterTypes: { [key in MRT_FILTER_TYPE]: any };
99
+ localization: MRT_Localization;
100
+ setCurrentEditingRow: Dispatch<SetStateAction<MRT_Row<D> | null>>;
101
+ setCurrentFilterTypes: Dispatch<
102
+ SetStateAction<{
103
+ [key: string]: MRT_FilterType;
104
+ }>
105
+ >;
106
+ setCurrentGlobalFilterType: Dispatch<SetStateAction<MRT_FILTER_TYPE>>;
107
+ setIsDensePadding: Dispatch<SetStateAction<boolean>>;
108
+ setIsFullScreen: Dispatch<SetStateAction<boolean>>;
109
+ setShowFilters: Dispatch<SetStateAction<boolean>>;
110
+ setShowSearch: Dispatch<SetStateAction<boolean>>;
176
111
  };
112
+ };
113
+
114
+ export type MRT_TableState<D extends Record<string, any> = {}> = Omit<
115
+ TableState,
116
+ 'pagination'
117
+ > & {
118
+ currentEditingRow: MRT_Row<D> | null;
119
+ currentFilterTypes: Record<string, string | Function>;
120
+ currentGlobalFilterType: Record<string, string | Function>;
121
+ isDensePadding: boolean;
122
+ isFullScreen: boolean;
123
+ showFilters: boolean;
124
+ showSearch: boolean;
125
+ pagination: Partial<PaginationState>;
126
+ };
127
+
128
+ export type MRT_ColumnInterface<D extends Record<string, any> = {}> = Omit<
129
+ ColumnDef<D>,
130
+ 'header' | 'footer' | 'columns'
131
+ > & {
132
+ Edit?: ({
133
+ cell,
134
+ tableInstance,
135
+ }: // onChange,
136
+ {
137
+ cell: MRT_Cell<D>;
138
+ tableInstance: MRT_TableInstance<D>;
139
+ // onChange?: (event: ChangeEvent<HTMLInputElement>) => void;
140
+ }) => ReactNode;
141
+ Filter?: ({
142
+ // onChange,
143
+ header,
144
+ tableInstance,
145
+ }: {
146
+ // onChange?: (event: ChangeEvent<HTMLInputElement>) => void;
147
+ header: MRT_Header<D>;
148
+ tableInstance: MRT_TableInstance<D>;
149
+ }) => ReactNode;
150
+ Footer?: ({
151
+ footer,
152
+ tableInstance,
153
+ }: {
154
+ footer: MRT_Header<D>;
155
+ tableInstance: MRT_TableInstance<D>;
156
+ }) => ReactNode;
157
+ Header?: ({
158
+ header,
159
+ tableInstance,
160
+ }: {
161
+ header: MRT_Header<D>;
162
+ tableInstance: MRT_TableInstance<D>;
163
+ }) => ReactNode;
164
+ Cell?: ({
165
+ cell,
166
+ tableInstance,
167
+ }: {
168
+ cell: MRT_Cell<D>;
169
+ tableInstance: MRT_TableInstance<D>;
170
+ }) => ReactNode;
171
+ id: keyof D | string;
172
+ columns?: MRT_ColumnInterface<D>[];
173
+ enableClickToCopy?: boolean;
174
+ enableColumnActions?: boolean;
175
+ enableEditing?: boolean;
176
+ enabledFilterTypes?: (MRT_FILTER_TYPE | string)[];
177
+ filter?: MRT_FilterType | string | FilterType<D>;
178
+ filterSelectOptions?: (string | { text: string; value: string })[];
179
+ footer?: string;
180
+ header: string;
181
+ muiTableBodyCellCopyButtonProps?:
182
+ | ButtonProps
183
+ | (({
184
+ tableInstance,
185
+ cell,
186
+ }: {
187
+ tableInstance: MRT_TableInstance;
188
+ cell: MRT_Cell<D>;
189
+ }) => ButtonProps);
190
+ muiTableBodyCellEditTextFieldProps?:
191
+ | TextFieldProps
192
+ | (({
193
+ tableInstance,
194
+ cell,
195
+ }: {
196
+ tableInstance: MRT_TableInstance;
197
+ cell: MRT_Cell<D>;
198
+ }) => TextFieldProps);
199
+ muiTableBodyCellProps?:
200
+ | TableCellProps
201
+ | (({
202
+ tableInstance,
203
+ cell,
204
+ }: {
205
+ tableInstance: MRT_TableInstance;
206
+ cell: MRT_Cell<D>;
207
+ }) => TableCellProps);
208
+ muiTableFooterCellProps?:
209
+ | TableCellProps
210
+ | (({
211
+ tableInstance,
212
+ column,
213
+ }: {
214
+ tableInstance: MRT_TableInstance;
215
+ column: MRT_ColumnInstance<D>;
216
+ }) => TableCellProps);
217
+ muiTableHeadCellColumnActionsButtonProps?:
218
+ | IconButtonProps
219
+ | (({
220
+ tableInstance,
221
+ column,
222
+ }: {
223
+ tableInstance: MRT_TableInstance;
224
+ column: MRT_ColumnInstance<D>;
225
+ }) => IconButtonProps);
226
+ muiTableHeadCellFilterTextFieldProps?:
227
+ | TextFieldProps
228
+ | (({
229
+ tableInstance,
230
+ column,
231
+ }: {
232
+ tableInstance: MRT_TableInstance;
233
+ column: MRT_ColumnInstance<D>;
234
+ }) => TextFieldProps);
235
+ muiTableHeadCellProps?:
236
+ | TableCellProps
237
+ | (({
238
+ tableInstance,
239
+ column,
240
+ }: {
241
+ tableInstance: MRT_TableInstance;
242
+ column: MRT_ColumnInstance<D>;
243
+ }) => TableCellProps);
244
+ onCellEditChange?: ({
245
+ cell,
246
+ event,
247
+ tableInstance,
248
+ }: {
249
+ event: ChangeEvent<HTMLInputElement>;
250
+ cell: MRT_Cell<D>;
251
+ tableInstance: MRT_TableInstance<D>;
252
+ }) => void;
253
+ onColumnFilterValueChange?: ({
254
+ event,
255
+ filterValue,
256
+ }: {
257
+ event: ChangeEvent<HTMLInputElement>;
258
+ filterValue: any;
259
+ }) => void;
260
+ };
177
261
 
178
- export type MRT_ColumnInstance<D extends {} = {}> = ColumnInstance<D> &
179
- UseFiltersColumnProps<D> &
180
- UseGroupByColumnProps<D> &
181
- UseResizeColumnsColumnProps<D> &
182
- UseSortByColumnProps<D> &
262
+ export type MRT_ColumnInstance<D extends Record<string, any> = {}> = Omit<
263
+ Column<D>,
264
+ 'header' | 'footer' | 'columns'
265
+ > &
183
266
  MRT_ColumnInterface<D> & {
184
267
  columns?: MRT_ColumnInstance<D>[];
185
268
  };
186
269
 
187
- export type MRT_HeaderGroup<D extends {} = {}> = HeaderGroup<D> &
188
- MRT_ColumnInstance<D> &
189
- UseTableHeaderGroupProps<D> & {
190
- headers: MRT_HeaderGroup<D>[];
191
- };
270
+ export type MRT_Header<D extends Record<string, any> = {}> = Omit<
271
+ Header<D>,
272
+ 'column'
273
+ > & {
274
+ column: MRT_ColumnInstance<D>;
275
+ };
192
276
 
193
- export type MRT_Row<D extends {} = {}> = Row<D> &
194
- UseExpandedRowProps<D> &
195
- UseGroupByRowProps<D> &
196
- UseRowSelectRowProps<D> &
197
- UseRowStateRowProps<D> & {
198
- cells: MRT_Cell<D>[];
199
- };
277
+ export type MRT_HeaderGroup<D extends Record<string, any> = {}> = Omit<
278
+ HeaderGroup<D>,
279
+ 'headers'
280
+ > & {
281
+ headers: MRT_Header<D>[];
282
+ };
200
283
 
201
- export type MRT_Cell<D extends {} = {}, _V = any> = Cell<D> &
202
- UseGroupByCellProps<D> &
203
- UseRowStateCellProps<D> & {
204
- column: MRT_ColumnInstance<D>;
205
- };
284
+ export type MRT_Row<D extends Record<string, any> = {}> = Omit<
285
+ Row<D>,
286
+ | 'getVisibleCells'
287
+ | 'getAllCells'
288
+ | 'subRows'
289
+ | 'original'
290
+ | 'getLeftVisibleCells'
291
+ | 'getRightVisibleCells'
292
+ | 'getCenterVisibleCells'
293
+ > & {
294
+ getAllCells: () => MRT_Cell<D>[];
295
+ getCenterVisibleCells: () => MRT_Cell<D>[];
296
+ getLeftVisibleCells: () => MRT_Cell<D>[];
297
+ getRightVisibleCells: () => MRT_Cell<D>[];
298
+ getVisibleCells: () => MRT_Cell<D>[];
299
+ subRows?: MRT_Row<D>[];
300
+ original: D;
301
+ };
206
302
 
207
- export type MRT_FilterType = MRT_FILTER_TYPE | Function;
303
+ export type MRT_Cell<D extends Record<string, any> = {}> = Omit<
304
+ Cell<D>,
305
+ 'column' | 'row'
306
+ > & {
307
+ column: MRT_ColumnInstance<D>;
308
+ row: MRT_Row<D>;
309
+ };
208
310
 
209
- export type MRT_TableState<D extends {} = {}> = TableState<D> &
210
- UseColumnOrderState<D> &
211
- UseExpandedState<D> &
212
- UseFiltersState<D> &
213
- UseGlobalFiltersState<D> &
214
- UseGroupByState<D> &
215
- UsePaginationState<D> &
216
- UseResizeColumnsState<D> &
217
- UseRowSelectState<D> &
218
- UseRowStateState<D> &
219
- UseSortByState<D> & {
220
- currentEditingRow: MRT_Row<D> | null;
221
- currentFilterTypes: { [key: string]: MRT_FilterType };
222
- currentGlobalFilterType: MRT_FilterType;
223
- densePadding: boolean;
224
- fullScreen: boolean;
225
- showFilters: boolean;
226
- showSearch: boolean;
227
- };
311
+ export type MRT_FilterType = MRT_FILTER_TYPE | Function;
228
312
 
229
- export type MaterialReactTableProps<D extends {} = {}> = UseTableOptions<D> &
230
- UseExpandedOptions<D> &
231
- UseFiltersOptions<D> &
232
- UseGlobalFiltersOptions<D> &
233
- UseGroupByOptions<D> &
234
- UsePaginationOptions<D> &
235
- UseResizeColumnsOptions<D> &
236
- UseRowSelectOptions<D> &
237
- UseRowStateOptions<D> &
238
- UseSortByOptions<D> &
313
+ export type MaterialReactTableProps<D extends Record<string, any> = {}> =
239
314
  MRT_TableOptions<D> & {
240
- disableColumnActions?: boolean;
241
- disableColumnHiding?: boolean;
242
- disableDensePaddingToggle?: boolean;
243
- disableExpandAll?: boolean;
244
- disableFullScreenToggle?: boolean;
245
- disableSelectAll?: boolean;
246
- disableSubRowTree?: boolean;
247
315
  enableClickToCopy?: boolean;
248
- enableColumnGrouping?: boolean;
249
- enableColumnResizing?: boolean;
316
+ enableColumnActions?: boolean;
317
+ enableColumnPinning?: boolean;
318
+ enableDensePaddingToggle?: boolean;
319
+ enableExpandAll?: boolean;
320
+ enableFullScreenToggle?: boolean;
321
+ enablePagination?: boolean;
250
322
  enableRowActions?: boolean;
323
+ enableStickyHeader?: boolean;
251
324
  enableRowEditing?: boolean;
252
325
  enableRowNumbers?: boolean;
253
- enableSelection?: boolean;
326
+ enableSelectAll?: boolean;
254
327
  enabledGlobalFilterTypes?: (MRT_FILTER_TYPE | string)[];
255
328
  filterTypes?: { [key in MRT_FILTER_TYPE]: any };
256
329
  hideTableFooter?: boolean;
@@ -260,144 +333,362 @@ export type MaterialReactTableProps<D extends {} = {}> = UseTableOptions<D> &
260
333
  hideToolbarTop?: boolean;
261
334
  icons?: Partial<MRT_Icons>;
262
335
  idPrefix?: string;
263
- isFetching?: boolean;
336
+ isReloading?: boolean;
264
337
  isLoading?: boolean;
265
338
  localization?: Partial<MRT_Localization>;
266
339
  muiLinearProgressProps?:
267
340
  | LinearProgressProps
268
- | ((tableInstance: MRT_TableInstance) => LinearProgressProps);
269
- muiSearchTextFieldProps?: TextFieldProps;
341
+ | (({
342
+ tableInstance,
343
+ }: {
344
+ tableInstance: MRT_TableInstance;
345
+ }) => LinearProgressProps);
346
+ muiSearchTextFieldProps?:
347
+ | TextFieldProps
348
+ | (({
349
+ tableInstance,
350
+ }: {
351
+ tableInstance: MRT_TableInstance;
352
+ }) => TextFieldProps);
270
353
  muiSelectCheckboxProps?:
271
354
  | CheckboxProps
272
- | ((
273
- isSelectAll?: boolean,
274
- row?: MRT_Row<D>,
275
- tableInstance?: MRT_TableInstance<D>,
276
- ) => CheckboxProps);
355
+ | (({
356
+ tableInstance,
357
+ isSelectAll,
358
+ row,
359
+ }: {
360
+ tableInstance: MRT_TableInstance;
361
+ isSelectAll: boolean;
362
+ row?: MRT_Row<D>;
363
+ }) => CheckboxProps);
277
364
  muiTableBodyCellCopyButtonProps?:
278
365
  | ButtonProps
279
- | ((cell?: MRT_Cell<D>) => ButtonProps);
366
+ | (({
367
+ tableInstance,
368
+ cell,
369
+ }: {
370
+ tableInstance: MRT_TableInstance;
371
+ cell: MRT_Cell<D>;
372
+ }) => ButtonProps);
280
373
  muiTableBodyCellEditTextFieldProps?:
281
374
  | TextFieldProps
282
- | ((cell?: MRT_Cell<D>) => TextFieldProps);
375
+ | (({
376
+ tableInstance,
377
+ cell,
378
+ }: {
379
+ tableInstance: MRT_TableInstance;
380
+ cell: MRT_Cell<D>;
381
+ }) => TextFieldProps);
283
382
  muiTableBodyCellProps?:
284
383
  | TableCellProps
285
- | ((cell?: MRT_Cell<D>) => TableCellProps);
384
+ | (({
385
+ tableInstance,
386
+ cell,
387
+ }: {
388
+ tableInstance: MRT_TableInstance;
389
+ cell: MRT_Cell<D>;
390
+ }) => TableCellProps);
286
391
  muiTableBodyCellSkeletonProps?:
287
392
  | SkeletonProps
288
- | ((cell?: MRT_Cell<D>) => SkeletonProps);
393
+ | (({
394
+ tableInstance,
395
+ cell,
396
+ }: {
397
+ tableInstance: MRT_TableInstance;
398
+ cell: MRT_Cell<D>;
399
+ }) => SkeletonProps);
289
400
  muiTableBodyProps?:
290
401
  | TableBodyProps
291
- | ((tableInstance: MRT_TableInstance<D>) => TableBodyProps);
292
- muiTableBodyRowProps?: TableRowProps | ((row: Row<D>) => TableRowProps);
402
+ | (({
403
+ tableInstance,
404
+ }: {
405
+ tableInstance: MRT_TableInstance;
406
+ }) => TableBodyProps);
407
+ muiTableBodyRowProps?:
408
+ | TableRowProps
409
+ | (({
410
+ tableInstance,
411
+ row,
412
+ }: {
413
+ tableInstance: MRT_TableInstance;
414
+ row: MRT_Row<D>;
415
+ }) => TableRowProps);
293
416
  muiTableContainerProps?:
294
417
  | TableContainerProps
295
- | ((tableInstance: MRT_TableInstance<D>) => TableContainerProps);
418
+ | (({
419
+ tableInstance,
420
+ }: {
421
+ tableInstance: MRT_TableInstance;
422
+ }) => TableContainerProps);
296
423
  muiTableDetailPanelProps?:
297
424
  | TableCellProps
298
- | ((row: Row<D>) => TableCellProps);
425
+ | (({
426
+ tableInstance,
427
+ row,
428
+ }: {
429
+ tableInstance: MRT_TableInstance;
430
+ row: MRT_Row<D>;
431
+ }) => TableCellProps);
299
432
  muiTableFooterCellProps?:
300
433
  | TableCellProps
301
- | ((column: Column<D>) => TableCellProps);
434
+ | (({
435
+ tableInstance,
436
+ column,
437
+ }: {
438
+ tableInstance: MRT_TableInstance;
439
+ column: MRT_ColumnInstance<D>;
440
+ }) => TableCellProps);
302
441
  muiTableFooterProps?:
303
442
  | TableFooterProps
304
- | ((tableInstance: MRT_TableInstance<D>) => TableFooterProps);
443
+ | (({
444
+ tableInstance,
445
+ }: {
446
+ tableInstance: MRT_TableInstance;
447
+ }) => TableFooterProps);
305
448
  muiTableFooterRowProps?:
306
449
  | TableRowProps
307
- | ((footerGroup: MRT_HeaderGroup<D>) => TableRowProps);
450
+ | (({
451
+ tableInstance,
452
+ footerGroup,
453
+ }: {
454
+ tableInstance: MRT_TableInstance;
455
+ footerGroup: MRT_HeaderGroup<D>;
456
+ }) => TableRowProps);
308
457
  muiTableHeadCellColumnActionsButtonProps?:
309
458
  | IconButtonProps
310
- | ((column: Column<D>) => IconButtonProps);
459
+ | (({
460
+ tableInstance,
461
+ column,
462
+ }: {
463
+ tableInstance: MRT_TableInstance;
464
+ column: MRT_ColumnInstance<D>;
465
+ }) => IconButtonProps);
311
466
  muiTableHeadCellFilterTextFieldProps?:
312
467
  | TextFieldProps
313
- | ((column: Column<D>) => TextFieldProps);
468
+ | (({
469
+ tableInstance,
470
+ column,
471
+ }: {
472
+ tableInstance: MRT_TableInstance;
473
+ column: MRT_ColumnInstance<D>;
474
+ }) => TextFieldProps);
314
475
  muiTableHeadCellProps?:
315
476
  | TableCellProps
316
- | ((column: Column<D>) => TableCellProps);
477
+ | (({
478
+ tableInstance,
479
+ column,
480
+ }: {
481
+ tableInstance: MRT_TableInstance;
482
+ column: MRT_ColumnInstance<D>;
483
+ }) => TableCellProps);
317
484
  muiTableHeadProps?:
318
485
  | TableHeadProps
319
- | ((tableInstance: MRT_TableInstance<D>) => TableHeadProps);
486
+ | (({
487
+ tableInstance,
488
+ }: {
489
+ tableInstance: MRT_TableInstance;
490
+ }) => TableHeadProps);
320
491
  muiTableHeadRowProps?:
321
492
  | TableRowProps
322
- | ((row: MRT_HeaderGroup<D>) => TableRowProps);
493
+ | (({
494
+ tableInstance,
495
+ headerGroup,
496
+ }: {
497
+ tableInstance: MRT_TableInstance;
498
+ headerGroup: MRT_HeaderGroup<D>;
499
+ }) => TableRowProps);
500
+ muiTablePaperProps?:
501
+ | PaperProps
502
+ | (({
503
+ tableInstance,
504
+ }: {
505
+ tableInstance: MRT_TableInstance;
506
+ }) => PaperProps);
323
507
  muiTablePaginationProps?:
324
508
  | Partial<TablePaginationProps>
325
- | ((
326
- tableInstance: MRT_TableInstance<D>,
327
- ) => Partial<TablePaginationProps>);
509
+ | (({
510
+ tableInstance,
511
+ }: {
512
+ tableInstance: MRT_TableInstance;
513
+ }) => Partial<TablePaginationProps>);
328
514
  muiTableProps?:
329
515
  | TableProps
330
- | ((tableInstance: MRT_TableInstance<D>) => TableProps);
516
+ | (({
517
+ tableInstance,
518
+ }: {
519
+ tableInstance: MRT_TableInstance;
520
+ }) => TableProps);
331
521
  muiTableToolbarAlertBannerProps?:
332
522
  | AlertProps
333
- | ((tableInstance: MRT_TableInstance<D>) => AlertProps);
523
+ | (({
524
+ tableInstance,
525
+ }: {
526
+ tableInstance: MRT_TableInstance;
527
+ }) => AlertProps);
334
528
  muiTableToolbarBottomProps?:
335
529
  | ToolbarProps
336
- | ((tableInstance: MRT_TableInstance<D>) => ToolbarProps);
530
+ | (({
531
+ tableInstance,
532
+ }: {
533
+ tableInstance: MRT_TableInstance;
534
+ }) => ToolbarProps);
337
535
  muiTableToolbarTopProps?:
338
536
  | ToolbarProps
339
- | ((tableInstance: MRT_TableInstance<D>) => ToolbarProps);
340
- onCellClick?: (
341
- event: MouseEvent<HTMLTableCellElement>,
342
- cell: MRT_Cell<D>,
343
- ) => void;
344
- onColumnHide?: (column: Column<D>, hiddenColumns?: string[]) => void;
345
- onDetailPanelClick?: (
346
- event: MouseEvent<HTMLTableCellElement>,
347
- row: Row<D>,
348
- ) => void;
349
- onGlobalFilterChange?: (event: ChangeEvent<HTMLInputElement>) => void;
350
- onRowClick?: (event: MouseEvent<HTMLTableRowElement>, row: Row<D>) => void;
351
- onRowEditSubmit?: (row: Row<D>) => Promise<void> | void;
352
- onRowExpandChange?: (
353
- event: MouseEvent<HTMLButtonElement>,
354
- row: Row<D>,
355
- ) => void;
356
- onSelectAllChange?: (event: ChangeEvent, selectedRows: Row<D>[]) => void;
357
- onSelectChange?: (
358
- event: ChangeEvent,
359
- row: Row<D>,
360
- selectedRows: Row<D>[],
361
- ) => void;
537
+ | (({
538
+ tableInstance,
539
+ }: {
540
+ tableInstance: MRT_TableInstance;
541
+ }) => ToolbarProps);
542
+ onCellClick?: ({
543
+ cell,
544
+ event,
545
+ tableInstance,
546
+ }: {
547
+ cell: MRT_Cell<D>;
548
+ tableInstance: MRT_TableInstance<D>;
549
+ event: MouseEvent<HTMLTableCellElement>;
550
+ }) => void;
551
+ onColumnHide?: ({
552
+ column,
553
+ columnVisibility,
554
+ tableInstance,
555
+ }: {
556
+ column: MRT_ColumnInstance<D>;
557
+ columnVisibility: VisibilityState;
558
+ tableInstance: MRT_TableInstance<D>;
559
+ }) => void;
560
+ onDetailPanelClick?: ({
561
+ event,
562
+ row,
563
+ tableInstance,
564
+ }: {
565
+ event: MouseEvent<HTMLTableCellElement>;
566
+ row: MRT_Row<D>;
567
+ tableInstance: MRT_TableInstance<D>;
568
+ }) => void;
569
+ onGlobalFilterChange?: ({
570
+ event,
571
+ tableInstance,
572
+ }: {
573
+ event: ChangeEvent<HTMLInputElement>;
574
+ tableInstance: MRT_TableInstance<D>;
575
+ }) => void;
576
+ onRowClick?: ({
577
+ event,
578
+ row,
579
+ tableInstance,
580
+ }: {
581
+ event: MouseEvent<HTMLTableRowElement>;
582
+ row: MRT_Row<D>;
583
+ tableInstance: MRT_TableInstance<D>;
584
+ }) => void;
585
+ onRowEditSubmit?: ({
586
+ row,
587
+ tableInstance,
588
+ }: {
589
+ row: MRT_Row<D>;
590
+ tableInstance: MRT_TableInstance<D>;
591
+ }) => Promise<void> | void;
592
+ onRowExpandChange?: ({
593
+ event,
594
+ row,
595
+ }: {
596
+ event: MouseEvent<HTMLButtonElement>;
597
+ row: MRT_Row<D>;
598
+ tableInstance: MRT_TableInstance<D>;
599
+ }) => void;
600
+ onSelectAllChange?: ({
601
+ event,
602
+ selectedRows,
603
+ tableInstance,
604
+ }: {
605
+ event: ChangeEvent;
606
+ selectedRows: MRT_Row<D>[];
607
+ tableInstance: MRT_TableInstance<D>;
608
+ }) => void;
609
+ onSelectChange?: ({
610
+ event,
611
+ row,
612
+ selectedRows,
613
+ tableInstance,
614
+ }: {
615
+ event: ChangeEvent;
616
+ row: MRT_Row<D>;
617
+ selectedRows: MRT_Row<D>[];
618
+ tableInstance: MRT_TableInstance<D>;
619
+ }) => void;
362
620
  positionActionsColumn?: 'first' | 'last';
363
621
  positionPagination?: 'bottom' | 'top' | 'both';
364
622
  positionToolbarActions?: 'bottom' | 'top';
365
623
  positionToolbarAlertBanner?: 'bottom' | 'top';
366
- renderDetailPanel?: (row: Row<D>) => ReactNode;
367
- renderRowActionMenuItems?: (
368
- rowData: Row<D>,
369
- tableInstance: MRT_TableInstance<D>,
370
- closeMenu: () => void,
371
- ) => ReactNode[];
372
- renderRowActions?: (
373
- row: Row<D>,
374
- tableInstance: MRT_TableInstance<D>,
375
- ) => ReactNode;
376
- renderToolbarCustomActions?: (
377
- tableInstance: MRT_TableInstance<D>,
378
- ) => ReactNode;
379
- renderToolbarInternalActions?: (
380
- tableInstance: MRT_TableInstance<D>,
381
- {
382
- MRT_ToggleSearchButton,
383
- MRT_ToggleFiltersButton,
384
- MRT_ShowHideColumnsButton,
385
- MRT_ToggleDensePaddingButton,
386
- MRT_FullScreenToggleButton,
387
- }: {
388
- MRT_ToggleSearchButton: FC<IconButtonProps>;
389
- MRT_ToggleFiltersButton: FC<IconButtonProps>;
390
- MRT_ShowHideColumnsButton: FC<IconButtonProps>;
391
- MRT_ToggleDensePaddingButton: FC<IconButtonProps>;
392
- MRT_FullScreenToggleButton: FC<IconButtonProps>;
393
- },
394
- ) => ReactNode;
624
+ renderDetailPanel?: ({
625
+ row,
626
+ tableInstance,
627
+ }: {
628
+ row: MRT_Row<D>;
629
+ tableInstance: MRT_TableInstance<D>;
630
+ }) => ReactNode;
631
+ renderRowActionMenuItems?: ({
632
+ closeMenu,
633
+ row,
634
+ tableInstance,
635
+ }: {
636
+ closeMenu: () => void;
637
+ row: MRT_Row<D>;
638
+ tableInstance: MRT_TableInstance<D>;
639
+ }) => ReactNode[];
640
+ renderRowActions?: ({
641
+ row,
642
+ tableInstance,
643
+ }: {
644
+ row: MRT_Row<D>;
645
+ tableInstance: MRT_TableInstance<D>;
646
+ }) => ReactNode;
647
+ renderToolbarCustomActions?: ({
648
+ tableInstance,
649
+ }: {
650
+ tableInstance: MRT_TableInstance<D>;
651
+ }) => ReactNode;
652
+ renderToolbarInternalActions?: ({
653
+ tableInstance,
654
+ MRT_ToggleSearchButton,
655
+ MRT_ToggleFiltersButton,
656
+ MRT_ShowHideColumnsButton,
657
+ MRT_ToggleDensePaddingButton,
658
+ MRT_FullScreenToggleButton,
659
+ }: {
660
+ tableInstance: MRT_TableInstance<D>;
661
+ MRT_ToggleSearchButton: FC<
662
+ IconButtonProps & { tableInstance: MRT_TableInstance<D> }
663
+ >;
664
+ MRT_ToggleFiltersButton: FC<
665
+ IconButtonProps & { tableInstance: MRT_TableInstance<D> }
666
+ >;
667
+ MRT_ShowHideColumnsButton: FC<
668
+ IconButtonProps & { tableInstance: MRT_TableInstance<D> }
669
+ >;
670
+ MRT_ToggleDensePaddingButton: FC<
671
+ IconButtonProps & { tableInstance: MRT_TableInstance<D> }
672
+ >;
673
+ MRT_FullScreenToggleButton: FC<
674
+ IconButtonProps & { tableInstance: MRT_TableInstance<D> }
675
+ >;
676
+ }) => ReactNode;
395
677
  };
396
678
 
397
- export default <D extends {} = {}>({
398
- defaultColumn = { minWidth: 50, maxWidth: 1000 },
679
+ export default <D extends Record<string, any> = {}>({
680
+ enableColumnActions = true,
681
+ enableColumnFilters = true,
682
+ enableDensePaddingToggle = true,
683
+ enableExpandAll = true,
684
+ enableFullScreenToggle = true,
685
+ enableGlobalFilter = true,
686
+ enableHiding = true,
687
+ enablePagination = true,
688
+ enableSelectAll = true,
689
+ enableSorting = true,
690
+ enableStickyHeader = true,
399
691
  filterTypes,
400
- globalFilter = MRT_FILTER_TYPE.BEST_MATCH_FIRST,
401
692
  icons,
402
693
  localization,
403
694
  positionActionsColumn = 'first',
@@ -406,13 +697,18 @@ export default <D extends {} = {}>({
406
697
  positionToolbarAlertBanner = 'top',
407
698
  ...rest
408
699
  }: MaterialReactTableProps<D>) => (
409
- <MaterialReactTableProvider
410
- //@ts-ignore
411
- defaultColumn={defaultColumn}
412
- //@ts-ignore
413
- filterTypes={{ ...defaultFilterFNs, ...filterTypes }}
414
- //@ts-ignore
415
- globalFilter={globalFilter}
700
+ <MRT_TableRoot
701
+ enableColumnActions={enableColumnActions}
702
+ enableColumnFilters={enableColumnFilters}
703
+ enableDensePaddingToggle={enableDensePaddingToggle}
704
+ enableExpandAll={enableExpandAll}
705
+ enableFullScreenToggle={enableFullScreenToggle}
706
+ enableGlobalFilter={enableGlobalFilter}
707
+ enableHiding={enableHiding}
708
+ enablePagination={enablePagination}
709
+ enableSelectAll={enableSelectAll}
710
+ enableSorting={enableSorting}
711
+ enableStickyHeader={enableStickyHeader}
416
712
  icons={{ ...MRT_Default_Icons, ...icons }}
417
713
  localization={{ ...MRT_DefaultLocalization_EN, ...localization }}
418
714
  positionActionsColumn={positionActionsColumn}
@@ -420,7 +716,5 @@ export default <D extends {} = {}>({
420
716
  positionToolbarActions={positionToolbarActions}
421
717
  positionToolbarAlertBanner={positionToolbarAlertBanner}
422
718
  {...rest}
423
- >
424
- <MRT_TableContainer />
425
- </MaterialReactTableProvider>
719
+ />
426
720
  );