material-react-table 0.6.8 → 0.7.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/dist/MaterialReactTable.d.ts +147 -82
  2. package/dist/body/MRT_TableBody.d.ts +3 -0
  3. package/dist/body/MRT_TableBodyCell.d.ts +2 -11
  4. package/dist/body/MRT_TableBodyRow.d.ts +3 -1
  5. package/dist/body/MRT_TableDetailPanel.d.ts +2 -1
  6. package/dist/buttons/MRT_CopyButton.d.ts +4 -2
  7. package/dist/buttons/MRT_EditActionButtons.d.ts +2 -1
  8. package/dist/buttons/MRT_ExpandAllButton.d.ts +2 -0
  9. package/dist/buttons/MRT_ExpandButton.d.ts +2 -1
  10. package/dist/buttons/MRT_FullScreenToggleButton.d.ts +2 -0
  11. package/dist/buttons/MRT_ShowHideColumnsButton.d.ts +2 -0
  12. package/dist/buttons/MRT_ToggleColumnActionMenuButton.d.ts +3 -2
  13. package/dist/buttons/MRT_ToggleDensePaddingButton.d.ts +2 -0
  14. package/dist/buttons/MRT_ToggleFiltersButton.d.ts +2 -0
  15. package/dist/buttons/MRT_ToggleRowActionMenuButton.d.ts +2 -1
  16. package/dist/buttons/MRT_ToggleSearchButton.d.ts +2 -0
  17. package/dist/enums.d.ts +2 -1
  18. package/dist/filtersFNs.d.ts +13 -5
  19. package/dist/footer/MRT_TableFooter.d.ts +3 -0
  20. package/dist/footer/MRT_TableFooterCell.d.ts +3 -2
  21. package/dist/footer/MRT_TableFooterRow.d.ts +2 -1
  22. package/dist/head/MRT_TableHead.d.ts +3 -0
  23. package/dist/head/MRT_TableHeadCell.d.ts +4 -18
  24. package/dist/head/MRT_TableHeadRow.d.ts +2 -1
  25. package/dist/icons.d.ts +1 -1
  26. package/dist/inputs/MRT_EditCellTextField.d.ts +2 -1
  27. package/dist/inputs/MRT_FilterTextField.d.ts +3 -2
  28. package/dist/inputs/MRT_SearchTextField.d.ts +2 -0
  29. package/dist/inputs/MRT_SelectCheckbox.d.ts +2 -1
  30. package/dist/localization.d.ts +9 -2
  31. package/dist/material-react-table.cjs.development.js +2183 -1686
  32. package/dist/material-react-table.cjs.development.js.map +1 -1
  33. package/dist/material-react-table.cjs.production.min.js +1 -1
  34. package/dist/material-react-table.cjs.production.min.js.map +1 -1
  35. package/dist/material-react-table.esm.js +2191 -1694
  36. package/dist/material-react-table.esm.js.map +1 -1
  37. package/dist/menus/MRT_ColumnActionMenu.d.ts +3 -2
  38. package/dist/menus/MRT_FilterTypeMenu.d.ts +4 -3
  39. package/dist/menus/MRT_RowActionMenu.d.ts +3 -2
  40. package/dist/menus/MRT_ShowHideColumnsMenu.d.ts +2 -0
  41. package/dist/menus/MRT_ShowHideColumnsMenuItems.d.ts +2 -1
  42. package/dist/table/MRT_Table.d.ts +3 -0
  43. package/dist/table/MRT_TableContainer.d.ts +2 -0
  44. package/dist/table/MRT_TablePaper.d.ts +7 -0
  45. package/dist/table/MRT_TableRoot.d.ts +3 -0
  46. package/dist/toolbar/MRT_LinearProgressBar.d.ts +2 -0
  47. package/dist/toolbar/MRT_TablePagination.d.ts +2 -0
  48. package/dist/toolbar/MRT_ToolbarAlertBanner.d.ts +2 -0
  49. package/dist/toolbar/MRT_ToolbarBottom.d.ts +2 -0
  50. package/dist/toolbar/MRT_ToolbarInternalButtons.d.ts +2 -0
  51. package/dist/toolbar/MRT_ToolbarTop.d.ts +4 -2
  52. package/dist/utils.d.ts +12 -2
  53. package/package.json +27 -28
  54. package/src/MaterialReactTable.tsx +314 -241
  55. package/src/body/MRT_TableBody.tsx +25 -21
  56. package/src/body/MRT_TableBodyCell.tsx +74 -53
  57. package/src/body/MRT_TableBodyRow.tsx +35 -51
  58. package/src/body/MRT_TableDetailPanel.tsx +16 -14
  59. package/src/buttons/MRT_CopyButton.tsx +36 -11
  60. package/src/buttons/MRT_EditActionButtons.tsx +13 -12
  61. package/src/buttons/MRT_ExpandAllButton.tsx +36 -28
  62. package/src/buttons/MRT_ExpandButton.tsx +34 -40
  63. package/src/buttons/MRT_FullScreenToggleButton.tsx +18 -11
  64. package/src/buttons/MRT_ShowHideColumnsButton.tsx +18 -7
  65. package/src/buttons/MRT_ToggleColumnActionMenuButton.tsx +17 -9
  66. package/src/buttons/MRT_ToggleDensePaddingButton.tsx +18 -11
  67. package/src/buttons/MRT_ToggleFiltersButton.tsx +16 -9
  68. package/src/buttons/MRT_ToggleRowActionMenuButton.tsx +26 -21
  69. package/src/buttons/MRT_ToggleSearchButton.tsx +18 -11
  70. package/src/enums.ts +2 -1
  71. package/src/filtersFNs.ts +17 -3
  72. package/src/footer/MRT_TableFooter.tsx +23 -7
  73. package/src/footer/MRT_TableFooterCell.tsx +32 -24
  74. package/src/footer/MRT_TableFooterRow.tsx +20 -38
  75. package/src/head/MRT_TableHead.tsx +23 -7
  76. package/src/head/MRT_TableHeadCell.tsx +201 -151
  77. package/src/head/MRT_TableHeadRow.tsx +15 -81
  78. package/src/icons.ts +3 -3
  79. package/src/inputs/MRT_EditCellTextField.tsx +23 -24
  80. package/src/inputs/MRT_FilterTextField.tsx +51 -37
  81. package/src/inputs/MRT_SearchTextField.tsx +63 -22
  82. package/src/inputs/MRT_SelectCheckbox.tsx +75 -42
  83. package/src/localization.ts +19 -4
  84. package/src/menus/MRT_ColumnActionMenu.tsx +129 -69
  85. package/src/menus/MRT_FilterTypeMenu.tsx +55 -23
  86. package/src/menus/MRT_RowActionMenu.tsx +16 -11
  87. package/src/menus/MRT_ShowHideColumnsMenu.tsx +52 -20
  88. package/src/menus/MRT_ShowHideColumnsMenuItems.tsx +28 -17
  89. package/src/table/MRT_Table.tsx +24 -14
  90. package/src/table/MRT_TableContainer.tsx +109 -44
  91. package/src/table/MRT_TablePaper.tsx +61 -0
  92. package/src/table/MRT_TableRoot.tsx +236 -0
  93. package/src/toolbar/MRT_LinearProgressBar.tsx +9 -6
  94. package/src/toolbar/MRT_TablePagination.tsx +28 -18
  95. package/src/toolbar/MRT_ToolbarAlertBanner.tsx +31 -19
  96. package/src/toolbar/MRT_ToolbarBottom.tsx +31 -20
  97. package/src/toolbar/MRT_ToolbarInternalButtons.tsx +29 -16
  98. package/src/toolbar/MRT_ToolbarTop.tsx +34 -27
  99. package/src/utils.ts +37 -8
  100. package/dist/head/MRT_TableHeadCellActions.d.ts +0 -5
  101. package/dist/table/MRT_TableSpacerCell.d.ts +0 -6
  102. package/dist/useMRT.d.ts +0 -27
  103. package/src/@types/faker.d.ts +0 -4
  104. package/src/@types/react-table-config.d.ts +0 -53
  105. package/src/head/MRT_TableHeadCellActions.tsx +0 -29
  106. package/src/table/MRT_TableSpacerCell.tsx +0 -20
  107. package/src/useMRT.tsx +0 -215
@@ -1,8 +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,
11
+ ButtonProps,
12
+ CheckboxProps,
4
13
  IconButtonProps,
5
14
  LinearProgressProps,
15
+ PaperProps,
6
16
  SkeletonProps,
7
17
  TableBodyProps,
8
18
  TableCellProps,
@@ -18,233 +28,252 @@ import {
18
28
  import {
19
29
  Cell,
20
30
  Column,
21
- ColumnInstance,
31
+ ColumnDef,
32
+ DefaultGenerics,
22
33
  FilterType,
23
- ColumnInterface,
34
+ Header,
24
35
  HeaderGroup,
36
+ Options,
37
+ Overwrite,
38
+ PaginationState,
25
39
  Row,
26
40
  TableInstance,
27
- TableOptions,
28
41
  TableState,
29
- UseColumnOrderInstanceProps,
30
- UseColumnOrderState,
31
- UseExpandedInstanceProps,
32
- UseExpandedOptions,
33
- UseExpandedRowProps,
34
- UseExpandedState,
35
- UseFiltersColumnOptions,
36
- UseFiltersColumnProps,
37
- UseFiltersInstanceProps,
38
- UseFiltersOptions,
39
- UseFiltersState,
40
- UseGlobalFiltersColumnOptions,
41
- UseGlobalFiltersInstanceProps,
42
- UseGlobalFiltersOptions,
43
- UseGlobalFiltersState,
44
- UseGroupByCellProps,
45
- UseGroupByColumnOptions,
46
- UseGroupByColumnProps,
47
- UseGroupByInstanceProps,
48
- UseGroupByOptions,
49
- UseGroupByRowProps,
50
- UseGroupByState,
51
- UsePaginationInstanceProps,
52
- UsePaginationOptions,
53
- UsePaginationState,
54
- UseResizeColumnsColumnOptions,
55
- UseResizeColumnsColumnProps,
56
- UseResizeColumnsOptions,
57
- UseResizeColumnsState,
58
- UseRowSelectInstanceProps,
59
- UseRowSelectOptions,
60
- UseRowSelectRowProps,
61
- UseRowSelectState,
62
- UseRowStateCellProps,
63
- UseRowStateInstanceProps,
64
- UseRowStateOptions,
65
- UseRowStateRowProps,
66
- UseRowStateState,
67
- UseSortByColumnOptions,
68
- UseSortByColumnProps,
69
- UseSortByInstanceProps,
70
- UseSortByOptions,
71
- UseSortByState,
72
- UseTableHeaderGroupProps,
73
- UseTableInstanceProps,
74
- UseTableOptions,
75
- } from 'react-table';
76
- import { MaterialReactTableProvider } from './useMRT';
77
- import { MRT_TableContainer } from './table/MRT_TableContainer';
42
+ } from '@tanstack/react-table';
78
43
  import { MRT_Localization, MRT_DefaultLocalization_EN } from './localization';
79
44
  import { MRT_Default_Icons, MRT_Icons } from './icons';
80
45
  import { MRT_FILTER_TYPE } from './enums';
81
- import { defaultFilterFNs } from './filtersFNs';
46
+ import { MRT_TableRoot } from './table/MRT_TableRoot';
82
47
 
83
- export type MRT_TableOptions<D extends {} = {}> = TableOptions<D> &
84
- UseExpandedOptions<D> &
85
- UseFiltersOptions<D> &
86
- UseGlobalFiltersOptions<D> &
87
- UseGroupByOptions<D> &
88
- UsePaginationOptions<D> &
89
- UseResizeColumnsOptions<D> &
90
- UseRowSelectOptions<D> &
91
- UseRowStateOptions<D> &
92
- UseSortByOptions<D> & {
93
- columns: MRT_ColumnInterface[];
94
- data: D[];
95
- initialState?: Partial<MRT_TableState>;
96
- };
48
+ export type MRT_TableOptions<D extends Record<string, any> = {}> = Partial<
49
+ Omit<
50
+ Options<D>,
51
+ 'columns' | 'data' | 'initialState' | 'state' | 'expandRowsFn'
52
+ >
53
+ > & {
54
+ columns: MRT_ColumnInterface<D>[];
55
+ data: D[];
56
+ initialState?: Partial<MRT_TableState<D>>;
57
+ state?: Partial<MRT_TableState<D>>;
58
+ expandRowsFn?: (dataRow: D) => D[];
59
+ };
97
60
 
98
- export type MRT_TableInstance<D extends {} = {}> = TableInstance<D> &
99
- UseTableInstanceProps<D> &
100
- UseColumnOrderInstanceProps<D> &
101
- UseExpandedInstanceProps<D> &
102
- UseFiltersInstanceProps<D> &
103
- UseGlobalFiltersInstanceProps<D> &
104
- UseGroupByInstanceProps<D> &
105
- UsePaginationInstanceProps<D> &
106
- UseRowSelectInstanceProps<D> &
107
- UseRowStateInstanceProps<D> &
108
- UseSortByInstanceProps<D> & {
109
- columns: (Column<D> & MRT_ColumnInstance<D>)[];
110
- footerGroups: MRT_HeaderGroup<D>[];
111
- getToggleAllRowsExpandedProps: () => void;
112
- headerGroups: MRT_HeaderGroup<D>[];
113
- page: MRT_Row<D>[];
114
- resetResizing: () => void;
115
- rows: MRT_Row<D>[];
116
- state: MRT_TableState<D>;
117
- };
61
+ export interface MRT_RowModel<D extends Record<string, any> = {}> {
62
+ flatRows: MRT_Row<D>[];
63
+ rows: MRT_Row<D>[];
64
+ rowsById: { [key: string]: MRT_Row<D> };
65
+ }
118
66
 
119
- export type MRT_ColumnInterface<D extends {} = {}> = ColumnInterface<D> &
120
- UseFiltersColumnOptions<D> &
121
- UseGlobalFiltersColumnOptions<D> &
122
- UseGroupByColumnOptions<D> &
123
- UseResizeColumnsColumnOptions<D> &
124
- UseSortByColumnOptions<D> & {
125
- Edit?: ({
126
- cell,
127
- onChange,
128
- }: {
129
- cell: MRT_Cell<D>;
130
- onChange?: (event: ChangeEvent<HTMLInputElement>) => void;
131
- }) => ReactNode;
132
- Filter?: ({ column }: { column: MRT_HeaderGroup<D> }) => ReactNode;
133
- Footer?: string;
134
- Header?: string;
135
- accessor?: string;
136
- columns?: MRT_ColumnInterface<D>[];
137
- disableClickToCopy?: boolean;
138
- disableColumnActions?: boolean;
139
- disableColumnHiding?: boolean;
140
- disableEditing?: boolean;
141
- disableFilters?: boolean;
142
- filter?: MRT_FilterType | string | FilterType<D>;
143
- filterSelectOptions?: (string | { text: string; value: string })[];
144
- filterTypes?: (MRT_FILTER_TYPE | string)[];
145
- muiTableBodyCellEditTextFieldProps?:
146
- | TextFieldProps
147
- | ((cell: MRT_Cell<D>) => TextFieldProps);
148
- muiTableBodyCellProps?:
149
- | TableCellProps
150
- | ((cell: MRT_Cell<D>) => TableCellProps);
151
- muiTableFooterCellProps?:
152
- | TableCellProps
153
- | ((column: Column<D>) => TableCellProps);
154
- muiTableHeadCellFilterTextFieldProps?:
155
- | TextFieldProps
156
- | ((column: Column<D>) => TextFieldProps);
157
- muiTableHeadCellColumnActionsButtonProps?:
158
- | IconButtonProps
159
- | ((column: Column<D>) => IconButtonProps);
160
- muiTableHeadCellProps?:
161
- | TableCellProps
162
- | ((column: Column<D>) => TableCellProps);
163
- onCellEditChange?: (
164
- event: ChangeEvent<HTMLInputElement>,
165
- cell: MRT_Cell<D>,
166
- ) => void;
167
- onFilterChange?: (
168
- event: ChangeEvent<HTMLInputElement>,
169
- filterValue: any,
170
- ) => void;
67
+ export type MRT_TableInstance<D extends Record<string, any> = {}> = Omit<
68
+ TableInstance<
69
+ Overwrite<
70
+ Partial<DefaultGenerics>,
71
+ {
72
+ Row: D;
73
+ }
74
+ >
75
+ >,
76
+ | 'getAllColumns'
77
+ | 'getAllLeafColumns'
78
+ | 'getExpandedRowModel'
79
+ | 'getPaginationRowModel'
80
+ | 'getPrePaginationRowModel'
81
+ | 'getRowModel'
82
+ | 'getSelectedRowModel'
83
+ | 'getState'
84
+ | 'options'
85
+ > & {
86
+ getAllColumns: () => MRT_ColumnInstance<D>[];
87
+ getAllLeafColumns: () => MRT_ColumnInstance<D>[];
88
+ getExpandedRowModel: () => MRT_RowModel;
89
+ getPaginationRowModel: () => MRT_RowModel;
90
+ getPrePaginationRowModel: () => MRT_RowModel;
91
+ getRowModel: () => MRT_RowModel;
92
+ getSelectedRowModel: () => MRT_RowModel;
93
+ getState: () => MRT_TableState<D>;
94
+ options: MaterialReactTableProps<D> & {
95
+ icons: MRT_Icons;
96
+ idPrefix: string;
97
+ filterTypes: { [key in MRT_FILTER_TYPE]: any };
98
+ localization: MRT_Localization;
99
+ setCurrentEditingRow: Dispatch<SetStateAction<MRT_Row<D> | null>>;
100
+ setCurrentFilterTypes: Dispatch<
101
+ SetStateAction<{
102
+ [key: string]: MRT_FilterType;
103
+ }>
104
+ >;
105
+ setCurrentGlobalFilterType: Dispatch<SetStateAction<MRT_FILTER_TYPE>>;
106
+ setIsDensePadding: Dispatch<SetStateAction<boolean>>;
107
+ setIsFullScreen: Dispatch<SetStateAction<boolean>>;
108
+ setShowFilters: Dispatch<SetStateAction<boolean>>;
109
+ setShowSearch: Dispatch<SetStateAction<boolean>>;
171
110
  };
111
+ };
172
112
 
173
- export type MRT_ColumnInstance<D extends {} = {}> = ColumnInstance<D> &
174
- UseFiltersColumnProps<D> &
175
- UseGroupByColumnProps<D> &
176
- UseResizeColumnsColumnProps<D> &
177
- UseSortByColumnProps<D> &
113
+ export type MRT_TableState<D extends Record<string, any> = {}> = Omit<
114
+ TableState,
115
+ 'pagination'
116
+ > & {
117
+ currentEditingRow: MRT_Row<D> | null;
118
+ currentFilterTypes: Record<string, string | Function>;
119
+ currentGlobalFilterType: Record<string, string | Function>;
120
+ isDensePadding: boolean;
121
+ isFullScreen: boolean;
122
+ showFilters: boolean;
123
+ showSearch: boolean;
124
+ pagination: Partial<PaginationState>;
125
+ };
126
+
127
+ export type MRT_ColumnInterface<D extends Record<string, any> = {}> = Omit<
128
+ ColumnDef<D>,
129
+ 'header' | 'footer' | 'columns'
130
+ > & {
131
+ Edit?: ({
132
+ cell,
133
+ tableInstance,
134
+ onChange,
135
+ }: {
136
+ cell: MRT_Cell<D>;
137
+ tableInstance: MRT_TableInstance<D>;
138
+ onChange?: (event: ChangeEvent<HTMLInputElement>) => void;
139
+ }) => ReactNode;
140
+ Filter?: ({
141
+ header,
142
+ tableInstance,
143
+ }: {
144
+ header: MRT_Header<D>;
145
+ tableInstance: MRT_TableInstance<D>;
146
+ }) => ReactNode;
147
+ Footer?: ({
148
+ footer,
149
+ tableInstance,
150
+ }: {
151
+ footer: MRT_Header<D>;
152
+ tableInstance: MRT_TableInstance<D>;
153
+ }) => ReactNode;
154
+ Header?: ({
155
+ header,
156
+ tableInstance,
157
+ }: {
158
+ header: MRT_Header<D>;
159
+ tableInstance: MRT_TableInstance<D>;
160
+ }) => ReactNode;
161
+ Cell?: ({
162
+ cell,
163
+ tableInstance,
164
+ }: {
165
+ cell: MRT_Cell<D>;
166
+ tableInstance: MRT_TableInstance<D>;
167
+ }) => ReactNode;
168
+ id: keyof D | string;
169
+ columns?: MRT_ColumnInterface<D>[];
170
+ enableClickToCopy?: boolean;
171
+ enableColumnActions?: boolean;
172
+ enableEditing?: boolean;
173
+ enableColumnFilters?: boolean;
174
+ enableHiding?: boolean;
175
+ enabledFilterTypes?: (MRT_FILTER_TYPE | string)[];
176
+ filter?: MRT_FilterType | string | FilterType<D>;
177
+ filterSelectOptions?: (string | { text: string; value: string })[];
178
+ footer?: string;
179
+ header: string;
180
+ muiTableBodyCellCopyButtonProps?:
181
+ | ButtonProps
182
+ | ((cell?: MRT_Cell<D>) => ButtonProps);
183
+ muiTableBodyCellEditTextFieldProps?:
184
+ | TextFieldProps
185
+ | ((cell: MRT_Cell<D>) => TextFieldProps);
186
+ muiTableBodyCellProps?:
187
+ | TableCellProps
188
+ | ((cell: MRT_Cell<D>) => TableCellProps);
189
+ muiTableFooterCellProps?:
190
+ | TableCellProps
191
+ | ((column: MRT_ColumnInstance<D>) => TableCellProps);
192
+ muiTableHeadCellColumnActionsButtonProps?:
193
+ | IconButtonProps
194
+ | ((column: MRT_ColumnInstance<D>) => IconButtonProps);
195
+ muiTableHeadCellFilterTextFieldProps?:
196
+ | TextFieldProps
197
+ | ((column: MRT_ColumnInstance<D>) => TextFieldProps);
198
+ muiTableHeadCellProps?:
199
+ | TableCellProps
200
+ | ((column: MRT_ColumnInstance<D>) => TableCellProps);
201
+ onCellEditChange?: (
202
+ event: ChangeEvent<HTMLInputElement>,
203
+ cell: MRT_Cell<D>,
204
+ ) => void;
205
+ onFilterChange?: (
206
+ event: ChangeEvent<HTMLInputElement>,
207
+ filterValue: any,
208
+ ) => void;
209
+ };
210
+
211
+ export type MRT_ColumnInstance<D extends Record<string, any> = {}> = Omit<
212
+ Column<D>,
213
+ 'header' | 'footer' | 'columns'
214
+ > &
178
215
  MRT_ColumnInterface<D> & {
179
216
  columns?: MRT_ColumnInstance<D>[];
180
217
  };
181
218
 
182
- export type MRT_HeaderGroup<D extends {} = {}> = HeaderGroup<D> &
183
- MRT_ColumnInstance<D> &
184
- UseTableHeaderGroupProps<D> & {
185
- headers: MRT_HeaderGroup<D>[];
186
- };
219
+ export type MRT_Header<D extends Record<string, any> = {}> = Omit<
220
+ Header<D>,
221
+ 'column'
222
+ > & {
223
+ column: MRT_ColumnInstance<D>;
224
+ };
187
225
 
188
- export type MRT_Row<D extends {} = {}> = Row<D> &
189
- UseExpandedRowProps<D> &
190
- UseGroupByRowProps<D> &
191
- UseRowSelectRowProps<D> &
192
- UseRowStateRowProps<D> & {
193
- cells: MRT_Cell<D>[];
194
- };
226
+ export type MRT_HeaderGroup<D extends Record<string, any> = {}> = Omit<
227
+ HeaderGroup<D>,
228
+ 'headers'
229
+ > & {
230
+ headers: MRT_Header<D>[];
231
+ };
195
232
 
196
- export type MRT_Cell<D extends {} = {}, _V = any> = Cell<D> &
197
- UseGroupByCellProps<D> &
198
- UseRowStateCellProps<D> & {
199
- column: MRT_ColumnInstance<D>;
200
- };
233
+ export type MRT_Row<D extends Record<string, any> = {}> = Omit<
234
+ Row<D>,
235
+ | 'getVisibleCells'
236
+ | 'getAllCells'
237
+ | 'subRows'
238
+ | 'original'
239
+ | 'getLeftVisibleCells'
240
+ | 'getRightVisibleCells'
241
+ | 'getCenterVisibleCells'
242
+ > & {
243
+ getAllCells: () => MRT_Cell<D>[];
244
+ getCenterVisibleCells: () => MRT_Cell<D>[];
245
+ getLeftVisibleCells: () => MRT_Cell<D>[];
246
+ getRightVisibleCells: () => MRT_Cell<D>[];
247
+ getVisibleCells: () => MRT_Cell<D>[];
248
+ subRows?: MRT_Row<D>[];
249
+ original: D;
250
+ };
201
251
 
202
- export type MRT_FilterType = MRT_FILTER_TYPE | Function;
252
+ export type MRT_Cell<D extends Record<string, any> = {}> = Omit<
253
+ Cell<D>,
254
+ 'column' | 'row'
255
+ > & {
256
+ column: MRT_ColumnInstance<D>;
257
+ row: MRT_Row<D>;
258
+ };
203
259
 
204
- export type MRT_TableState<D extends {} = {}> = TableState<D> &
205
- UseColumnOrderState<D> &
206
- UseExpandedState<D> &
207
- UseFiltersState<D> &
208
- UseGlobalFiltersState<D> &
209
- UseGroupByState<D> &
210
- UsePaginationState<D> &
211
- UseResizeColumnsState<D> &
212
- UseRowSelectState<D> &
213
- UseRowStateState<D> &
214
- UseSortByState<D> & {
215
- currentEditingRow: MRT_Row<D> | null;
216
- currentFilterTypes: { [key: string]: MRT_FilterType };
217
- densePadding: boolean;
218
- fullScreen: boolean;
219
- showFilters: boolean;
220
- showSearch: boolean;
221
- };
260
+ export type MRT_FilterType = MRT_FILTER_TYPE | Function;
222
261
 
223
- export type MaterialReactTableProps<D extends {} = {}> = UseTableOptions<D> &
224
- UseExpandedOptions<D> &
225
- UseFiltersOptions<D> &
226
- UseGlobalFiltersOptions<D> &
227
- UseGroupByOptions<D> &
228
- UsePaginationOptions<D> &
229
- UseResizeColumnsOptions<D> &
230
- UseRowSelectOptions<D> &
231
- UseRowStateOptions<D> &
232
- UseSortByOptions<D> &
262
+ export type MaterialReactTableProps<D extends Record<string, any> = {}> =
233
263
  MRT_TableOptions<D> & {
234
- disableColumnActions?: boolean;
235
- disableColumnHiding?: boolean;
236
- disableDensePaddingToggle?: boolean;
237
- disableExpandAll?: boolean;
238
- disableFullScreenToggle?: boolean;
239
- disableSelectAll?: boolean;
240
- disableSubRowTree?: boolean;
241
264
  enableClickToCopy?: boolean;
242
- enableColumnGrouping?: boolean;
243
- enableColumnResizing?: boolean;
265
+ enableColumnActions?: boolean;
266
+ enableColumnPinning?: boolean;
267
+ enableDensePaddingToggle?: boolean;
268
+ enableExpandAll?: boolean;
269
+ enableFullScreenToggle?: boolean;
270
+ enablePagination?: boolean;
244
271
  enableRowActions?: boolean;
272
+ enableStickyHeader?: boolean;
245
273
  enableRowEditing?: boolean;
246
274
  enableRowNumbers?: boolean;
247
- enableSelection?: boolean;
275
+ enableSelectAll?: boolean;
276
+ enabledGlobalFilterTypes?: (MRT_FILTER_TYPE | string)[];
248
277
  filterTypes?: { [key in MRT_FILTER_TYPE]: any };
249
278
  hideTableFooter?: boolean;
250
279
  hideTableHead?: boolean;
@@ -253,13 +282,23 @@ export type MaterialReactTableProps<D extends {} = {}> = UseTableOptions<D> &
253
282
  hideToolbarTop?: boolean;
254
283
  icons?: Partial<MRT_Icons>;
255
284
  idPrefix?: string;
256
- isFetching?: boolean;
285
+ isReloading?: boolean;
257
286
  isLoading?: boolean;
258
287
  localization?: Partial<MRT_Localization>;
259
288
  muiLinearProgressProps?:
260
289
  | LinearProgressProps
261
290
  | ((tableInstance: MRT_TableInstance) => LinearProgressProps);
262
291
  muiSearchTextFieldProps?: TextFieldProps;
292
+ muiSelectCheckboxProps?:
293
+ | CheckboxProps
294
+ | ((
295
+ isSelectAll?: boolean,
296
+ row?: MRT_Row<D>,
297
+ tableInstance?: MRT_TableInstance<D>,
298
+ ) => CheckboxProps);
299
+ muiTableBodyCellCopyButtonProps?:
300
+ | ButtonProps
301
+ | ((cell?: MRT_Cell<D>) => ButtonProps);
263
302
  muiTableBodyCellEditTextFieldProps?:
264
303
  | TextFieldProps
265
304
  | ((cell?: MRT_Cell<D>) => TextFieldProps);
@@ -272,37 +311,40 @@ export type MaterialReactTableProps<D extends {} = {}> = UseTableOptions<D> &
272
311
  muiTableBodyProps?:
273
312
  | TableBodyProps
274
313
  | ((tableInstance: MRT_TableInstance<D>) => TableBodyProps);
275
- muiTableBodyRowProps?: TableRowProps | ((row: Row<D>) => TableRowProps);
314
+ muiTableBodyRowProps?: TableRowProps | ((row: MRT_Row<D>) => TableRowProps);
276
315
  muiTableContainerProps?:
277
316
  | TableContainerProps
278
317
  | ((tableInstance: MRT_TableInstance<D>) => TableContainerProps);
279
318
  muiTableDetailPanelProps?:
280
319
  | TableCellProps
281
- | ((row: Row<D>) => TableCellProps);
320
+ | ((row: MRT_Row<D>) => TableCellProps);
282
321
  muiTableFooterCellProps?:
283
322
  | TableCellProps
284
- | ((column: Column<D>) => TableCellProps);
285
- muiTableHeadCellColumnActionsButtonProps?:
286
- | IconButtonProps
287
- | ((column: Column<D>) => IconButtonProps);
323
+ | ((column: MRT_ColumnInstance<D>) => TableCellProps);
288
324
  muiTableFooterProps?:
289
325
  | TableFooterProps
290
326
  | ((tableInstance: MRT_TableInstance<D>) => TableFooterProps);
291
327
  muiTableFooterRowProps?:
292
328
  | TableRowProps
293
329
  | ((footerGroup: MRT_HeaderGroup<D>) => TableRowProps);
330
+ muiTableHeadCellColumnActionsButtonProps?:
331
+ | IconButtonProps
332
+ | ((column: MRT_ColumnInstance<D>) => IconButtonProps);
294
333
  muiTableHeadCellFilterTextFieldProps?:
295
334
  | TextFieldProps
296
- | ((column: Column<D>) => TextFieldProps);
335
+ | ((column: MRT_ColumnInstance<D>) => TextFieldProps);
297
336
  muiTableHeadCellProps?:
298
337
  | TableCellProps
299
- | ((column: Column<D>) => TableCellProps);
338
+ | ((column: MRT_ColumnInstance<D>) => TableCellProps);
300
339
  muiTableHeadProps?:
301
340
  | TableHeadProps
302
341
  | ((tableInstance: MRT_TableInstance<D>) => TableHeadProps);
303
342
  muiTableHeadRowProps?:
304
343
  | TableRowProps
305
- | ((row: MRT_HeaderGroup<D>) => TableRowProps);
344
+ | ((headerGroup: MRT_HeaderGroup<D>) => TableRowProps);
345
+ muiTablePaperProps?:
346
+ | PaperProps
347
+ | ((tableInstance: MRT_TableInstance<D>) => PaperProps);
306
348
  muiTablePaginationProps?:
307
349
  | Partial<TablePaginationProps>
308
350
  | ((
@@ -324,36 +366,45 @@ export type MaterialReactTableProps<D extends {} = {}> = UseTableOptions<D> &
324
366
  event: MouseEvent<HTMLTableCellElement>,
325
367
  cell: MRT_Cell<D>,
326
368
  ) => void;
327
- onColumnHide?: (column: Column<D>, hiddenColumns?: string[]) => void;
369
+ onColumnHide?: (
370
+ column: MRT_ColumnInstance<D>,
371
+ hiddenColumns?: string[],
372
+ ) => void;
328
373
  onDetailPanelClick?: (
329
374
  event: MouseEvent<HTMLTableCellElement>,
330
- row: Row<D>,
375
+ row: MRT_Row<D>,
331
376
  ) => void;
332
377
  onGlobalFilterChange?: (event: ChangeEvent<HTMLInputElement>) => void;
333
- onRowClick?: (event: MouseEvent<HTMLTableRowElement>, row: Row<D>) => void;
334
- onRowEditSubmit?: (row: Row<D>) => Promise<void> | void;
378
+ onRowClick?: (
379
+ event: MouseEvent<HTMLTableRowElement>,
380
+ row: MRT_Row<D>,
381
+ ) => void;
382
+ onRowEditSubmit?: (row: MRT_Row<D>) => Promise<void> | void;
335
383
  onRowExpandChange?: (
336
384
  event: MouseEvent<HTMLButtonElement>,
337
- row: Row<D>,
385
+ row: MRT_Row<D>,
386
+ ) => void;
387
+ onSelectAllChange?: (
388
+ event: ChangeEvent,
389
+ selectedRows: MRT_Row<D>[],
338
390
  ) => void;
339
- onRowSelectChange?: (
391
+ onSelectChange?: (
340
392
  event: ChangeEvent,
341
- row: Row<D>,
342
- selectedRows: Row<D>[],
393
+ row: MRT_Row<D>,
394
+ selectedRows: MRT_Row<D>[],
343
395
  ) => void;
344
- onSelectAllChange?: (event: ChangeEvent, selectedRows: Row<D>[]) => void;
345
396
  positionActionsColumn?: 'first' | 'last';
346
397
  positionPagination?: 'bottom' | 'top' | 'both';
347
398
  positionToolbarActions?: 'bottom' | 'top';
348
399
  positionToolbarAlertBanner?: 'bottom' | 'top';
349
- renderDetailPanel?: (row: Row<D>) => ReactNode;
400
+ renderDetailPanel?: (row: MRT_Row<D>) => ReactNode;
350
401
  renderRowActionMenuItems?: (
351
- rowData: Row<D>,
402
+ rowData: MRT_Row<D>,
352
403
  tableInstance: MRT_TableInstance<D>,
353
404
  closeMenu: () => void,
354
405
  ) => ReactNode[];
355
406
  renderRowActions?: (
356
- row: Row<D>,
407
+ row: MRT_Row<D>,
357
408
  tableInstance: MRT_TableInstance<D>,
358
409
  ) => ReactNode;
359
410
  renderToolbarCustomActions?: (
@@ -368,19 +419,38 @@ export type MaterialReactTableProps<D extends {} = {}> = UseTableOptions<D> &
368
419
  MRT_ToggleDensePaddingButton,
369
420
  MRT_FullScreenToggleButton,
370
421
  }: {
371
- MRT_ToggleSearchButton: FC<IconButtonProps>;
372
- MRT_ToggleFiltersButton: FC<IconButtonProps>;
373
- MRT_ShowHideColumnsButton: FC<IconButtonProps>;
374
- MRT_ToggleDensePaddingButton: FC<IconButtonProps>;
375
- MRT_FullScreenToggleButton: FC<IconButtonProps>;
422
+ MRT_ToggleSearchButton: FC<
423
+ IconButtonProps & { tableInstance: MRT_TableInstance<D> }
424
+ >;
425
+ MRT_ToggleFiltersButton: FC<
426
+ IconButtonProps & { tableInstance: MRT_TableInstance<D> }
427
+ >;
428
+ MRT_ShowHideColumnsButton: FC<
429
+ IconButtonProps & { tableInstance: MRT_TableInstance<D> }
430
+ >;
431
+ MRT_ToggleDensePaddingButton: FC<
432
+ IconButtonProps & { tableInstance: MRT_TableInstance<D> }
433
+ >;
434
+ MRT_FullScreenToggleButton: FC<
435
+ IconButtonProps & { tableInstance: MRT_TableInstance<D> }
436
+ >;
376
437
  },
377
438
  ) => ReactNode;
378
439
  };
379
440
 
380
- export default <D extends {} = {}>({
381
- defaultColumn = { minWidth: 50, maxWidth: 1000 },
441
+ export default <D extends Record<string, any> = {}>({
442
+ enableColumnActions = true,
443
+ enableColumnFilters = true,
444
+ enableDensePaddingToggle = true,
445
+ enableExpandAll = true,
446
+ enableFullScreenToggle = true,
447
+ enableGlobalFilter = true,
448
+ enableHiding = true,
449
+ enablePagination = true,
450
+ enableSelectAll = true,
451
+ enableSorting = true,
452
+ enableStickyHeader = true,
382
453
  filterTypes,
383
- globalFilter = 'fuzzy',
384
454
  icons,
385
455
  localization,
386
456
  positionActionsColumn = 'first',
@@ -389,13 +459,18 @@ export default <D extends {} = {}>({
389
459
  positionToolbarAlertBanner = 'top',
390
460
  ...rest
391
461
  }: MaterialReactTableProps<D>) => (
392
- <MaterialReactTableProvider
393
- //@ts-ignore
394
- defaultColumn={defaultColumn}
395
- //@ts-ignore
396
- filterTypes={{ ...defaultFilterFNs, ...filterTypes }}
397
- //@ts-ignore
398
- globalFilter={globalFilter}
462
+ <MRT_TableRoot
463
+ enableColumnActions={enableColumnActions}
464
+ enableColumnFilters={enableColumnFilters}
465
+ enableDensePaddingToggle={enableDensePaddingToggle}
466
+ enableExpandAll={enableExpandAll}
467
+ enableFullScreenToggle={enableFullScreenToggle}
468
+ enableGlobalFilter={enableGlobalFilter}
469
+ enableHiding={enableHiding}
470
+ enablePagination={enablePagination}
471
+ enableSelectAll={enableSelectAll}
472
+ enableSorting={enableSorting}
473
+ enableStickyHeader={enableStickyHeader}
399
474
  icons={{ ...MRT_Default_Icons, ...icons }}
400
475
  localization={{ ...MRT_DefaultLocalization_EN, ...localization }}
401
476
  positionActionsColumn={positionActionsColumn}
@@ -403,7 +478,5 @@ export default <D extends {} = {}>({
403
478
  positionToolbarActions={positionToolbarActions}
404
479
  positionToolbarAlertBanner={positionToolbarAlertBanner}
405
480
  {...rest}
406
- >
407
- <MRT_TableContainer />
408
- </MaterialReactTableProvider>
481
+ />
409
482
  );