material-react-table 0.7.0-alpha.7 → 0.7.0
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 +3 -5
- 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 +142 -108
- 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 +144 -110
- 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 +7 -5
- 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
|
@@ -35,7 +35,7 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
|
|
|
35
35
|
setColumnOrder,
|
|
36
36
|
options: {
|
|
37
37
|
enableColumnFilters,
|
|
38
|
-
|
|
38
|
+
enablePinning,
|
|
39
39
|
enableGrouping,
|
|
40
40
|
enableHiding,
|
|
41
41
|
enableSorting,
|
|
@@ -52,8 +52,8 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
|
|
|
52
52
|
},
|
|
53
53
|
idPrefix,
|
|
54
54
|
localization,
|
|
55
|
-
setShowFilters,
|
|
56
55
|
},
|
|
56
|
+
setShowFilters,
|
|
57
57
|
} = tableInstance;
|
|
58
58
|
|
|
59
59
|
const { column } = header;
|
|
@@ -245,7 +245,7 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
|
|
|
245
245
|
{enableGrouping &&
|
|
246
246
|
column.getCanGroup() && [
|
|
247
247
|
<MenuItem
|
|
248
|
-
divider={
|
|
248
|
+
divider={enablePinning}
|
|
249
249
|
key={0}
|
|
250
250
|
onClick={handleGroupByColumn}
|
|
251
251
|
sx={commonMenuItemStyles}
|
|
@@ -260,7 +260,7 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
|
|
|
260
260
|
</Box>
|
|
261
261
|
</MenuItem>,
|
|
262
262
|
]}
|
|
263
|
-
{
|
|
263
|
+
{enablePinning &&
|
|
264
264
|
column.getCanPin() && [
|
|
265
265
|
<MenuItem
|
|
266
266
|
disabled={column.getIsPinned() === 'left'}
|
|
@@ -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,10 +54,9 @@ 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
|
-
|
|
59
60
|
const [pagination, setPagination] = useState<PaginationState>({
|
|
60
61
|
pageIndex: props.initialState?.pagination?.pageIndex ?? 0,
|
|
61
62
|
pageSize: props.initialState?.pagination?.pageSize ?? 10,
|
|
@@ -71,7 +72,7 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
71
72
|
(c) => ({
|
|
72
73
|
[c.id as string]:
|
|
73
74
|
c.filter ??
|
|
74
|
-
props?.initialState?.columnFilters?.
|
|
75
|
+
props?.initialState?.columnFilters?.find((cf) => cf.id === c.id) ??
|
|
75
76
|
(!!c.filterSelectOptions?.length
|
|
76
77
|
? MRT_FILTER_TYPE.EQUALS
|
|
77
78
|
: MRT_FILTER_TYPE.BEST_MATCH),
|
|
@@ -96,7 +97,7 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
96
97
|
createDisplayColumn(table, {
|
|
97
98
|
Cell: ({ cell }) => (
|
|
98
99
|
<MRT_ToggleRowActionMenuButton
|
|
99
|
-
row={cell.row as
|
|
100
|
+
row={cell.row as MRT_Row}
|
|
100
101
|
tableInstance={tableInstance}
|
|
101
102
|
/>
|
|
102
103
|
),
|
|
@@ -109,7 +110,7 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
109
110
|
createDisplayColumn(table, {
|
|
110
111
|
Cell: ({ cell }) => (
|
|
111
112
|
<MRT_ExpandButton
|
|
112
|
-
row={cell.row as
|
|
113
|
+
row={cell.row as MRT_Row}
|
|
113
114
|
tableInstance={tableInstance}
|
|
114
115
|
/>
|
|
115
116
|
),
|
|
@@ -126,7 +127,7 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
126
127
|
createDisplayColumn(table, {
|
|
127
128
|
Cell: ({ cell }) => (
|
|
128
129
|
<MRT_SelectCheckbox
|
|
129
|
-
row={cell.row as
|
|
130
|
+
row={cell.row as MRT_Row}
|
|
130
131
|
tableInstance={tableInstance}
|
|
131
132
|
/>
|
|
132
133
|
),
|
|
@@ -151,16 +152,16 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
151
152
|
}),
|
|
152
153
|
].filter(Boolean),
|
|
153
154
|
[
|
|
154
|
-
|
|
155
|
+
props.enableEditing,
|
|
155
156
|
props.enableExpandAll,
|
|
156
157
|
props.enableExpanded,
|
|
157
|
-
props.enableRowActions,
|
|
158
158
|
props.enableGrouping,
|
|
159
|
-
props.
|
|
159
|
+
props.enableRowActions,
|
|
160
160
|
props.enableRowNumbers,
|
|
161
161
|
props.enableRowSelection,
|
|
162
162
|
props.enableSelectAll,
|
|
163
163
|
props.localization,
|
|
164
|
+
table,
|
|
164
165
|
],
|
|
165
166
|
);
|
|
166
167
|
|
|
@@ -173,14 +174,14 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
173
174
|
? createGroup(table, column, currentFilterTypes)
|
|
174
175
|
: createDataColumn(table, column, currentFilterTypes),
|
|
175
176
|
),
|
|
176
|
-
] as
|
|
177
|
+
] as ColumnDef<D>[]),
|
|
177
178
|
[table, props.columns, currentFilterTypes],
|
|
178
179
|
);
|
|
179
180
|
|
|
180
|
-
const data = useMemo(
|
|
181
|
+
const data: D['Row'][] = useMemo(
|
|
181
182
|
() =>
|
|
182
183
|
props.isLoading && !props.data.length
|
|
183
|
-
? [...Array(10).fill(null)].map((
|
|
184
|
+
? [...Array(10).fill(null)].map(() =>
|
|
184
185
|
Object.assign(
|
|
185
186
|
{},
|
|
186
187
|
...getAllLeafColumnDefs(
|
|
@@ -195,45 +196,48 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
195
196
|
);
|
|
196
197
|
|
|
197
198
|
//@ts-ignore
|
|
198
|
-
const tableInstance: MRT_TableInstance<{}> =
|
|
199
|
-
...
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
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
|
+
}),
|
|
215
233
|
setCurrentEditingRow,
|
|
216
234
|
setCurrentFilterTypes,
|
|
217
235
|
setCurrentGlobalFilterType,
|
|
218
236
|
setIsDensePadding,
|
|
219
237
|
setIsFullScreen,
|
|
220
238
|
setShowFilters,
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
state: {
|
|
224
|
-
...props.initialState,
|
|
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 && (
|