material-react-table 0.6.9 → 0.7.0-alpha.10

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