material-react-table 0.7.0-alpha.10 → 0.7.0-alpha.13
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.
- package/README.md +1 -3
- package/dist/MaterialReactTable.d.ts +42 -23
- package/dist/buttons/{MRT_ToggleSearchButton.d.ts → MRT_ToggleGlobalFilterButton.d.ts} +1 -1
- package/dist/localization.d.ts +3 -0
- package/dist/material-react-table.cjs.development.js +131 -105
- package/dist/material-react-table.cjs.development.js.map +1 -1
- package/dist/material-react-table.cjs.production.min.js +1 -1
- package/dist/material-react-table.cjs.production.min.js.map +1 -1
- package/dist/material-react-table.esm.js +133 -107
- package/dist/material-react-table.esm.js.map +1 -1
- package/dist/utils.d.ts +1 -1
- package/package.json +5 -5
- package/src/MaterialReactTable.tsx +69 -33
- package/src/body/MRT_TableBodyCell.tsx +2 -2
- package/src/buttons/MRT_EditActionButtons.tsx +1 -1
- package/src/buttons/MRT_FullScreenToggleButton.tsx +13 -4
- package/src/buttons/MRT_ShowHideColumnsButton.tsx +0 -1
- package/src/buttons/MRT_ToggleDensePaddingButton.tsx +13 -4
- package/src/buttons/MRT_ToggleFiltersButton.tsx +13 -4
- package/src/buttons/{MRT_ToggleSearchButton.tsx → MRT_ToggleGlobalFilterButton.tsx} +14 -8
- package/src/buttons/MRT_ToggleRowActionMenuButton.tsx +1 -1
- package/src/head/MRT_TableHeadCell.tsx +7 -8
- package/src/inputs/MRT_EditCellTextField.tsx +2 -5
- package/src/inputs/MRT_FilterTextField.tsx +2 -2
- package/src/inputs/MRT_SearchTextField.tsx +6 -6
- package/src/localization.ts +6 -0
- package/src/menus/MRT_ColumnActionMenu.tsx +4 -4
- package/src/menus/MRT_FilterTypeMenu.tsx +3 -6
- package/src/menus/MRT_ShowHideColumnsMenuItems.tsx +2 -2
- package/src/table/MRT_TableContainer.tsx +4 -4
- package/src/table/MRT_TableRoot.tsx +60 -56
- package/src/toolbar/MRT_ToolbarInternalButtons.tsx +8 -9
|
@@ -39,12 +39,9 @@ export const MRT_FilterTypeMenu: FC<Props> = ({
|
|
|
39
39
|
}) => {
|
|
40
40
|
const {
|
|
41
41
|
getState,
|
|
42
|
-
options: {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
setCurrentFilterTypes,
|
|
46
|
-
setCurrentGlobalFilterType,
|
|
47
|
-
},
|
|
42
|
+
options: { enabledGlobalFilterTypes, localization },
|
|
43
|
+
setCurrentFilterTypes,
|
|
44
|
+
setCurrentGlobalFilterType,
|
|
48
45
|
} = tableInstance;
|
|
49
46
|
|
|
50
47
|
const { isDensePadding, currentFilterTypes, currentGlobalFilterType } =
|
|
@@ -16,7 +16,7 @@ export const MRT_ShowHideColumnsMenuItems: FC<Props> = ({
|
|
|
16
16
|
}) => {
|
|
17
17
|
const {
|
|
18
18
|
getState,
|
|
19
|
-
options: {
|
|
19
|
+
options: { onToggleColumnVisibility },
|
|
20
20
|
} = tableInstance;
|
|
21
21
|
|
|
22
22
|
const { columnVisibility } = getState();
|
|
@@ -34,7 +34,7 @@ export const MRT_ShowHideColumnsMenuItems: FC<Props> = ({
|
|
|
34
34
|
} else {
|
|
35
35
|
column.toggleVisibility();
|
|
36
36
|
}
|
|
37
|
-
|
|
37
|
+
onToggleColumnVisibility?.({
|
|
38
38
|
column,
|
|
39
39
|
columnVisibility,
|
|
40
40
|
tableInstance,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { FC,
|
|
1
|
+
import React, { FC, useEffect, useState } from 'react';
|
|
2
2
|
import { alpha, Box, TableContainer, Theme } from '@mui/material';
|
|
3
3
|
import { SystemStyleObject } from '@mui/material/node_modules/@mui/system';
|
|
4
4
|
import { MRT_TableInstance } from '..';
|
|
@@ -36,7 +36,7 @@ export const MRT_TableContainer: FC<Props> = ({ tableInstance }) => {
|
|
|
36
36
|
getRightTableWidth,
|
|
37
37
|
getState,
|
|
38
38
|
options: {
|
|
39
|
-
|
|
39
|
+
enablePinning,
|
|
40
40
|
enableStickyHeader,
|
|
41
41
|
idPrefix,
|
|
42
42
|
muiTableContainerProps,
|
|
@@ -52,7 +52,7 @@ export const MRT_TableContainer: FC<Props> = ({ tableInstance }) => {
|
|
|
52
52
|
? muiTableContainerProps({ tableInstance })
|
|
53
53
|
: muiTableContainerProps;
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
useEffect(() => {
|
|
56
56
|
const topToolbarHeight =
|
|
57
57
|
typeof document !== 'undefined'
|
|
58
58
|
? document?.getElementById(`mrt-${idPrefix}-toolbar-top`)
|
|
@@ -85,7 +85,7 @@ export const MRT_TableContainer: FC<Props> = ({ tableInstance }) => {
|
|
|
85
85
|
: undefined,
|
|
86
86
|
}}
|
|
87
87
|
>
|
|
88
|
-
{
|
|
88
|
+
{enablePinning && getIsSomeColumnsPinned() ? (
|
|
89
89
|
<Box
|
|
90
90
|
sx={{
|
|
91
91
|
display: 'grid',
|
|
@@ -1,17 +1,19 @@
|
|
|
1
|
+
import React, { useMemo, useState } from 'react';
|
|
1
2
|
import {
|
|
2
|
-
columnFilterRowsFn,
|
|
3
|
-
createTable,
|
|
4
|
-
expandRowsFn,
|
|
5
|
-
functionalUpdate,
|
|
6
|
-
globalFilterRowsFn,
|
|
7
|
-
groupRowsFn,
|
|
8
|
-
paginateRowsFn,
|
|
9
3
|
PaginationState,
|
|
10
|
-
sortRowsFn,
|
|
11
4
|
Table,
|
|
12
|
-
|
|
5
|
+
createTable,
|
|
6
|
+
functionalUpdate,
|
|
7
|
+
getColumnFilteredRowModelSync,
|
|
8
|
+
getExpandedRowModel,
|
|
9
|
+
getGlobalFilteredRowModelSync,
|
|
10
|
+
getGroupedRowModelSync,
|
|
11
|
+
getPaginationRowModel,
|
|
12
|
+
getSortedRowModelSync,
|
|
13
|
+
useTableInstance,
|
|
14
|
+
getCoreRowModelSync,
|
|
15
|
+
ColumnDef,
|
|
13
16
|
} from '@tanstack/react-table';
|
|
14
|
-
import React, { useMemo, useState } from 'react';
|
|
15
17
|
import {
|
|
16
18
|
MRT_ColumnInterface,
|
|
17
19
|
MRT_FilterType,
|
|
@@ -52,8 +54,8 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
52
54
|
const [showFilters, setShowFilters] = useState(
|
|
53
55
|
props.initialState?.showFilters ?? false,
|
|
54
56
|
);
|
|
55
|
-
const [
|
|
56
|
-
props.initialState?.
|
|
57
|
+
const [showGlobalFilter, setShowGlobalFilter] = useState(
|
|
58
|
+
props.initialState?.showGlobalFilter ?? false,
|
|
57
59
|
);
|
|
58
60
|
const [pagination, setPagination] = useState<PaginationState>({
|
|
59
61
|
pageIndex: props.initialState?.pagination?.pageIndex ?? 0,
|
|
@@ -70,7 +72,7 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
70
72
|
(c) => ({
|
|
71
73
|
[c.id as string]:
|
|
72
74
|
c.filter ??
|
|
73
|
-
props?.initialState?.columnFilters?.
|
|
75
|
+
props?.initialState?.columnFilters?.find((cf) => cf.id === c.id) ??
|
|
74
76
|
(!!c.filterSelectOptions?.length
|
|
75
77
|
? MRT_FILTER_TYPE.EQUALS
|
|
76
78
|
: MRT_FILTER_TYPE.BEST_MATCH),
|
|
@@ -95,7 +97,7 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
95
97
|
createDisplayColumn(table, {
|
|
96
98
|
Cell: ({ cell }) => (
|
|
97
99
|
<MRT_ToggleRowActionMenuButton
|
|
98
|
-
row={cell.row as
|
|
100
|
+
row={cell.row as MRT_Row}
|
|
99
101
|
tableInstance={tableInstance}
|
|
100
102
|
/>
|
|
101
103
|
),
|
|
@@ -108,7 +110,7 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
108
110
|
createDisplayColumn(table, {
|
|
109
111
|
Cell: ({ cell }) => (
|
|
110
112
|
<MRT_ExpandButton
|
|
111
|
-
row={cell.row as
|
|
113
|
+
row={cell.row as MRT_Row}
|
|
112
114
|
tableInstance={tableInstance}
|
|
113
115
|
/>
|
|
114
116
|
),
|
|
@@ -125,7 +127,7 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
125
127
|
createDisplayColumn(table, {
|
|
126
128
|
Cell: ({ cell }) => (
|
|
127
129
|
<MRT_SelectCheckbox
|
|
128
|
-
row={cell.row as
|
|
130
|
+
row={cell.row as MRT_Row}
|
|
129
131
|
tableInstance={tableInstance}
|
|
130
132
|
/>
|
|
131
133
|
),
|
|
@@ -150,16 +152,16 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
150
152
|
}),
|
|
151
153
|
].filter(Boolean),
|
|
152
154
|
[
|
|
153
|
-
|
|
155
|
+
props.enableEditing,
|
|
154
156
|
props.enableExpandAll,
|
|
155
157
|
props.enableExpanded,
|
|
156
|
-
props.enableRowActions,
|
|
157
158
|
props.enableGrouping,
|
|
158
|
-
props.
|
|
159
|
+
props.enableRowActions,
|
|
159
160
|
props.enableRowNumbers,
|
|
160
161
|
props.enableRowSelection,
|
|
161
162
|
props.enableSelectAll,
|
|
162
163
|
props.localization,
|
|
164
|
+
table,
|
|
163
165
|
],
|
|
164
166
|
);
|
|
165
167
|
|
|
@@ -172,14 +174,14 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
172
174
|
? createGroup(table, column, currentFilterTypes)
|
|
173
175
|
: createDataColumn(table, column, currentFilterTypes),
|
|
174
176
|
),
|
|
175
|
-
] as
|
|
177
|
+
] as ColumnDef<D>[]),
|
|
176
178
|
[table, props.columns, currentFilterTypes],
|
|
177
179
|
);
|
|
178
180
|
|
|
179
|
-
const data = useMemo(
|
|
181
|
+
const data: D['Row'][] = useMemo(
|
|
180
182
|
() =>
|
|
181
183
|
props.isLoading && !props.data.length
|
|
182
|
-
? [...Array(10).fill(null)].map((
|
|
184
|
+
? [...Array(10).fill(null)].map(() =>
|
|
183
185
|
Object.assign(
|
|
184
186
|
{},
|
|
185
187
|
...getAllLeafColumnDefs(
|
|
@@ -194,46 +196,48 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
194
196
|
);
|
|
195
197
|
|
|
196
198
|
//@ts-ignore
|
|
197
|
-
const tableInstance: MRT_TableInstance<{}> =
|
|
198
|
-
...
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
199
|
+
const tableInstance: MRT_TableInstance<{}> = {
|
|
200
|
+
...useTableInstance(table, {
|
|
201
|
+
...props,
|
|
202
|
+
columns,
|
|
203
|
+
data,
|
|
204
|
+
//@ts-ignore
|
|
205
|
+
filterTypes: defaultFilterFNs,
|
|
206
|
+
getColumnFilteredRowModel: getColumnFilteredRowModelSync(),
|
|
207
|
+
getCoreRowModel: getCoreRowModelSync(),
|
|
208
|
+
getExpandedRowModel: getExpandedRowModel(),
|
|
209
|
+
getGlobalFilteredRowModel: getGlobalFilteredRowModelSync(),
|
|
210
|
+
getGroupedRowModel: getGroupedRowModelSync(),
|
|
211
|
+
getPaginationRowModel: getPaginationRowModel(),
|
|
212
|
+
getSortedRowModel: getSortedRowModelSync(),
|
|
213
|
+
getSubRows: props.getSubRows ?? ((originalRow: D) => originalRow.subRows),
|
|
214
|
+
globalFilterType: currentGlobalFilterType,
|
|
215
|
+
idPrefix,
|
|
216
|
+
//@ts-ignore
|
|
217
|
+
initialState: props.initialState,
|
|
218
|
+
onPaginationChange: (updater: any) =>
|
|
219
|
+
setPagination((old) => functionalUpdate(updater, old)),
|
|
220
|
+
state: {
|
|
221
|
+
currentEditingRow,
|
|
222
|
+
currentFilterTypes,
|
|
223
|
+
currentGlobalFilterType,
|
|
224
|
+
isDensePadding,
|
|
225
|
+
isFullScreen,
|
|
226
|
+
//@ts-ignore
|
|
227
|
+
pagination,
|
|
228
|
+
showFilters,
|
|
229
|
+
showGlobalFilter,
|
|
230
|
+
...props.state,
|
|
231
|
+
},
|
|
232
|
+
}),
|
|
216
233
|
setCurrentEditingRow,
|
|
217
234
|
setCurrentFilterTypes,
|
|
218
235
|
setCurrentGlobalFilterType,
|
|
219
236
|
setIsDensePadding,
|
|
220
237
|
setIsFullScreen,
|
|
221
238
|
setShowFilters,
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
state: {
|
|
225
|
-
currentEditingRow,
|
|
226
|
-
currentFilterTypes,
|
|
227
|
-
currentGlobalFilterType,
|
|
228
|
-
isDensePadding,
|
|
229
|
-
isFullScreen,
|
|
230
|
-
//@ts-ignore
|
|
231
|
-
pagination,
|
|
232
|
-
showFilters,
|
|
233
|
-
showSearch,
|
|
234
|
-
...props.state,
|
|
235
|
-
},
|
|
236
|
-
});
|
|
239
|
+
setShowGlobalFilter,
|
|
240
|
+
};
|
|
237
241
|
|
|
238
242
|
return <MRT_TablePaper tableInstance={tableInstance} />;
|
|
239
243
|
};
|
|
@@ -4,7 +4,7 @@ import { MRT_FullScreenToggleButton } from '../buttons/MRT_FullScreenToggleButto
|
|
|
4
4
|
import { MRT_ShowHideColumnsButton } from '../buttons/MRT_ShowHideColumnsButton';
|
|
5
5
|
import { MRT_ToggleDensePaddingButton } from '../buttons/MRT_ToggleDensePaddingButton';
|
|
6
6
|
import { MRT_ToggleFiltersButton } from '../buttons/MRT_ToggleFiltersButton';
|
|
7
|
-
import {
|
|
7
|
+
import { MRT_ToggleGlobalFilterButton } from '../buttons/MRT_ToggleGlobalFilterButton';
|
|
8
8
|
import { MRT_TableInstance } from '..';
|
|
9
9
|
|
|
10
10
|
interface Props {
|
|
@@ -15,10 +15,11 @@ export const MRT_ToolbarInternalButtons: FC<Props> = ({ tableInstance }) => {
|
|
|
15
15
|
const {
|
|
16
16
|
options: {
|
|
17
17
|
enableColumnFilters,
|
|
18
|
-
enableHiding,
|
|
19
18
|
enableDensePaddingToggle,
|
|
20
|
-
|
|
19
|
+
enableFilters,
|
|
21
20
|
enableFullScreenToggle,
|
|
21
|
+
enableGlobalFilter,
|
|
22
|
+
enableHiding,
|
|
22
23
|
renderToolbarInternalActions,
|
|
23
24
|
},
|
|
24
25
|
} = tableInstance;
|
|
@@ -31,7 +32,7 @@ export const MRT_ToolbarInternalButtons: FC<Props> = ({ tableInstance }) => {
|
|
|
31
32
|
MRT_ShowHideColumnsButton,
|
|
32
33
|
MRT_ToggleDensePaddingButton,
|
|
33
34
|
MRT_ToggleFiltersButton,
|
|
34
|
-
|
|
35
|
+
MRT_ToggleGlobalFilterButton,
|
|
35
36
|
tableInstance,
|
|
36
37
|
})}
|
|
37
38
|
</>
|
|
@@ -42,15 +43,13 @@ export const MRT_ToolbarInternalButtons: FC<Props> = ({ tableInstance }) => {
|
|
|
42
43
|
<Box
|
|
43
44
|
sx={{
|
|
44
45
|
display: 'flex',
|
|
45
|
-
gap: '0.5rem',
|
|
46
46
|
alignItems: 'center',
|
|
47
|
-
p: '0 0.5rem',
|
|
48
47
|
}}
|
|
49
48
|
>
|
|
50
|
-
{enableGlobalFilter && (
|
|
51
|
-
<
|
|
49
|
+
{enableFilters && enableGlobalFilter && (
|
|
50
|
+
<MRT_ToggleGlobalFilterButton tableInstance={tableInstance} />
|
|
52
51
|
)}
|
|
53
|
-
{enableColumnFilters && (
|
|
52
|
+
{enableFilters && enableColumnFilters && (
|
|
54
53
|
<MRT_ToggleFiltersButton tableInstance={tableInstance} />
|
|
55
54
|
)}
|
|
56
55
|
{enableHiding && (
|