material-react-table 0.6.2 → 0.6.5
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/dist/MaterialReactTable.d.ts +11 -11
- package/dist/filtersFNs.d.ts +10 -10
- package/dist/material-react-table.cjs.development.js +179 -143
- 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 +181 -145
- package/dist/material-react-table.esm.js.map +1 -1
- package/dist/menus/MRT_ColumnActionMenu.d.ts +0 -1
- package/dist/toolbar/MRT_LinearProgressBar.d.ts +5 -0
- package/dist/toolbar/MRT_ToolbarTop.d.ts +11 -0
- package/dist/useMRT.d.ts +1 -1
- package/dist/utils.d.ts +2 -0
- package/package.json +1 -1
- package/src/MaterialReactTable.tsx +14 -12
- package/src/body/MRT_TableBody.tsx +3 -1
- package/src/body/MRT_TableBodyCell.tsx +2 -1
- package/src/body/MRT_TableBodyRow.tsx +2 -9
- package/src/buttons/MRT_ExpandButton.tsx +9 -1
- package/src/filtersFNs.ts +30 -30
- package/src/inputs/MRT_EditCellTextField.tsx +1 -1
- package/src/inputs/MRT_FilterTextField.tsx +24 -12
- package/src/menus/MRT_ColumnActionMenu.tsx +30 -15
- package/src/menus/MRT_FilterTypeMenu.tsx +20 -20
- package/src/menus/MRT_RowActionMenu.tsx +11 -4
- package/src/menus/MRT_ShowHideColumnsMenuItems.tsx +3 -0
- package/src/table/MRT_TableContainer.tsx +4 -28
- package/src/toolbar/MRT_LinearProgressBar.tsx +25 -0
- package/src/toolbar/MRT_TablePagination.tsx +1 -1
- package/src/toolbar/MRT_ToolbarBottom.tsx +18 -21
- package/src/toolbar/MRT_ToolbarTop.tsx +21 -10
- package/src/useMRT.tsx +21 -20
- package/src/utils.ts +17 -0
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
import { FC } from 'react';
|
|
2
|
+
import { Theme } from '@mui/material';
|
|
3
|
+
import { MRT_TableInstance } from '..';
|
|
4
|
+
export declare const commonToolbarStyles: (theme: Theme, tableInstance: MRT_TableInstance) => {
|
|
5
|
+
backgroundColor: string;
|
|
6
|
+
backgroundImage: string;
|
|
7
|
+
display: string;
|
|
8
|
+
opacity: number;
|
|
9
|
+
p: string;
|
|
10
|
+
width: string;
|
|
11
|
+
zIndex: number;
|
|
12
|
+
};
|
|
2
13
|
interface Props {
|
|
3
14
|
}
|
|
4
15
|
export declare const MRT_ToolbarTop: FC<Props>;
|
package/dist/useMRT.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, {
|
|
1
|
+
import React, { Dispatch, PropsWithChildren, SetStateAction } from 'react';
|
|
2
2
|
import type { MRT_FilterType, MRT_Row, MRT_TableInstance } from '.';
|
|
3
3
|
import { MRT_FILTER_TYPE } from './enums';
|
|
4
4
|
import { MRT_Icons } from './icons';
|
package/dist/utils.d.ts
ADDED
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.6.
|
|
2
|
+
"version": "0.6.5",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"name": "material-react-table",
|
|
5
5
|
"description": "A fully featured Material-UI implementation of react-table, inspired by material-table and the mui DataGrid, written from the ground up in TypeScript.",
|
|
@@ -90,7 +90,7 @@ export type MRT_TableOptions<D extends {} = {}> = TableOptions<D> &
|
|
|
90
90
|
UseRowSelectOptions<D> &
|
|
91
91
|
UseRowStateOptions<D> &
|
|
92
92
|
UseSortByOptions<D> & {
|
|
93
|
-
columns:
|
|
93
|
+
columns: MRT_ColumnInterface[];
|
|
94
94
|
data: D[];
|
|
95
95
|
initialState?: Partial<MRT_TableState>;
|
|
96
96
|
};
|
|
@@ -107,13 +107,13 @@ export type MRT_TableInstance<D extends {} = {}> = TableInstance<D> &
|
|
|
107
107
|
UseRowStateInstanceProps<D> &
|
|
108
108
|
UseSortByInstanceProps<D> & {
|
|
109
109
|
columns: (Column<D> & MRT_ColumnInstance<D>)[];
|
|
110
|
-
headerGroups: MRT_HeaderGroup<D>[];
|
|
111
110
|
footerGroups: MRT_HeaderGroup<D>[];
|
|
112
|
-
|
|
113
|
-
|
|
111
|
+
getToggleAllRowsExpandedProps: () => void;
|
|
112
|
+
headerGroups: MRT_HeaderGroup<D>[];
|
|
114
113
|
page: MRT_Row<D>[];
|
|
115
114
|
resetResizing: () => void;
|
|
116
|
-
|
|
115
|
+
rows: MRT_Row<D>[];
|
|
116
|
+
state: MRT_TableState<D>;
|
|
117
117
|
};
|
|
118
118
|
|
|
119
119
|
export type MRT_ColumnInterface<D extends {} = {}> = ColumnInterface<D> &
|
|
@@ -132,13 +132,13 @@ export type MRT_ColumnInterface<D extends {} = {}> = ColumnInterface<D> &
|
|
|
132
132
|
Filter?: ({ column }: { column: MRT_HeaderGroup<D> }) => ReactNode;
|
|
133
133
|
Footer?: string;
|
|
134
134
|
Header?: string;
|
|
135
|
-
accessor
|
|
136
|
-
columns?:
|
|
135
|
+
accessor?: string;
|
|
136
|
+
columns?: MRT_ColumnInterface<D>[];
|
|
137
|
+
disableEditing?: boolean;
|
|
137
138
|
disableFilters?: boolean;
|
|
138
|
-
editable?: boolean;
|
|
139
139
|
filter?: MRT_FilterType | string | FilterType<D>;
|
|
140
140
|
filterSelectOptions?: (string | { text: string; value: string })[];
|
|
141
|
-
filterTypes
|
|
141
|
+
filterTypes?: (MRT_FILTER_TYPE | string)[];
|
|
142
142
|
muiTableBodyCellEditTextFieldProps?:
|
|
143
143
|
| TextFieldProps
|
|
144
144
|
| ((cell: MRT_Cell<D>) => TextFieldProps);
|
|
@@ -314,7 +314,7 @@ export type MaterialReactTableProps<D extends {} = {}> = UseTableOptions<D> &
|
|
|
314
314
|
event: MouseEvent<HTMLTableCellElement>,
|
|
315
315
|
cell: MRT_Cell<D>,
|
|
316
316
|
) => void;
|
|
317
|
-
onColumnHide?: (column: Column<D>,
|
|
317
|
+
onColumnHide?: (column: Column<D>, hiddenColumns?: string[]) => void;
|
|
318
318
|
onDetailPanelClick?: (
|
|
319
319
|
event: MouseEvent<HTMLTableCellElement>,
|
|
320
320
|
row: Row<D>,
|
|
@@ -367,7 +367,7 @@ export type MaterialReactTableProps<D extends {} = {}> = UseTableOptions<D> &
|
|
|
367
367
|
) => ReactNode;
|
|
368
368
|
};
|
|
369
369
|
|
|
370
|
-
export default <D extends {}>({
|
|
370
|
+
export default <D extends {} = {}>({
|
|
371
371
|
defaultColumn = { minWidth: 50, maxWidth: 1000 },
|
|
372
372
|
filterTypes,
|
|
373
373
|
globalFilter = 'fuzzy',
|
|
@@ -380,9 +380,11 @@ export default <D extends {}>({
|
|
|
380
380
|
...rest
|
|
381
381
|
}: MaterialReactTableProps<D>) => (
|
|
382
382
|
<MaterialReactTableProvider
|
|
383
|
+
//@ts-ignore
|
|
383
384
|
defaultColumn={defaultColumn}
|
|
384
|
-
|
|
385
|
+
//@ts-ignore
|
|
385
386
|
filterTypes={{ ...defaultFilterFNs, ...filterTypes }}
|
|
387
|
+
//@ts-ignore
|
|
386
388
|
globalFilter={globalFilter}
|
|
387
389
|
icons={{ ...MRT_Default_Icons, ...icons }}
|
|
388
390
|
localization={{ ...MRT_DefaultLocalization_EN, ...localization }}
|
|
@@ -28,7 +28,9 @@ export const MRT_TableBody: FC<Props> = () => {
|
|
|
28
28
|
return (
|
|
29
29
|
<TableBody
|
|
30
30
|
{...tableBodyProps}
|
|
31
|
-
sx={{
|
|
31
|
+
sx={{
|
|
32
|
+
...tableBodyProps?.sx,
|
|
33
|
+
}}
|
|
32
34
|
>
|
|
33
35
|
{rows.map((row: MRT_Row) => {
|
|
34
36
|
tableInstance.prepareRow(row);
|
|
@@ -72,7 +72,8 @@ export const MRT_TableBodyCell: FC<Props> = ({ cell }) => {
|
|
|
72
72
|
width={Math.random() * (120 - 60) + 60}
|
|
73
73
|
{...muiTableBodyCellSkeletonProps}
|
|
74
74
|
/>
|
|
75
|
-
) :
|
|
75
|
+
) : !cell.column.disableEditing &&
|
|
76
|
+
currentEditingRow?.id === cell.row.id ? (
|
|
76
77
|
<MRT_EditCellTextField cell={cell} />
|
|
77
78
|
) : cell.isPlaceholder ? null : cell.isAggregated ? (
|
|
78
79
|
cell.render('Aggregated')
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { FC, MouseEvent } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { TableCell, TableRow } from '@mui/material';
|
|
3
3
|
import {
|
|
4
4
|
commonTableBodyCellStyles,
|
|
5
5
|
MRT_TableBodyCell,
|
|
@@ -52,15 +52,8 @@ export const MRT_TableBodyRow: FC<Props> = ({ row }) => {
|
|
|
52
52
|
onClick={(event: MouseEvent<HTMLTableRowElement>) =>
|
|
53
53
|
onRowClick?.(event, row)
|
|
54
54
|
}
|
|
55
|
+
selected={row.isSelected}
|
|
55
56
|
{...tableRowProps}
|
|
56
|
-
sx={(theme) =>
|
|
57
|
-
({
|
|
58
|
-
backgroundColor: row.isSelected
|
|
59
|
-
? alpha(theme.palette.primary.light, 0.1)
|
|
60
|
-
: 'transparent',
|
|
61
|
-
...tableRowProps?.sx,
|
|
62
|
-
} as any)
|
|
63
|
-
}
|
|
64
57
|
>
|
|
65
58
|
{enableRowNumbers && (
|
|
66
59
|
<TableCell sx={{ ...commonTableBodyCellStyles(densePadding) }}>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { FC } from 'react';
|
|
1
|
+
import React, { FC, MouseEvent } from 'react';
|
|
2
2
|
import { IconButton, TableCell } from '@mui/material';
|
|
3
3
|
import { useMRT } from '../useMRT';
|
|
4
4
|
import type { MRT_Row } from '..';
|
|
@@ -12,12 +12,19 @@ export const MRT_ExpandButton: FC<Props> = ({ row }) => {
|
|
|
12
12
|
const {
|
|
13
13
|
icons: { ExpandMoreIcon },
|
|
14
14
|
localization,
|
|
15
|
+
onRowExpandChange,
|
|
15
16
|
renderDetailPanel,
|
|
16
17
|
tableInstance: {
|
|
17
18
|
state: { densePadding },
|
|
18
19
|
},
|
|
19
20
|
} = useMRT();
|
|
20
21
|
|
|
22
|
+
const handleToggleExpand = (event: MouseEvent<HTMLButtonElement>) => {
|
|
23
|
+
// @ts-ignore
|
|
24
|
+
row.getToggleRowExpandedProps()?.onClick(event);
|
|
25
|
+
onRowExpandChange?.(event, row);
|
|
26
|
+
};
|
|
27
|
+
|
|
21
28
|
return (
|
|
22
29
|
<TableCell
|
|
23
30
|
size="small"
|
|
@@ -32,6 +39,7 @@ export const MRT_ExpandButton: FC<Props> = ({ row }) => {
|
|
|
32
39
|
disabled={!row.canExpand && !renderDetailPanel}
|
|
33
40
|
title={localization.expand}
|
|
34
41
|
{...row.getToggleRowExpandedProps()}
|
|
42
|
+
onClick={handleToggleExpand}
|
|
35
43
|
>
|
|
36
44
|
<ExpandMoreIcon
|
|
37
45
|
style={{
|
package/src/filtersFNs.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { matchSorter } from 'match-sorter';
|
|
2
2
|
import { MRT_Row } from '.';
|
|
3
3
|
|
|
4
|
-
export const
|
|
4
|
+
export const fuzzy = (
|
|
5
5
|
rows: MRT_Row[],
|
|
6
6
|
columnIds: string[] | string,
|
|
7
7
|
filterValue: string | number,
|
|
@@ -13,9 +13,9 @@ export const fuzzyFilterFN = (
|
|
|
13
13
|
sorter: (rankedItems) => rankedItems,
|
|
14
14
|
});
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
fuzzy.autoRemove = (val: any) => !val;
|
|
17
17
|
|
|
18
|
-
export const
|
|
18
|
+
export const contains = (
|
|
19
19
|
rows: MRT_Row[],
|
|
20
20
|
id: string,
|
|
21
21
|
filterValue: string | number,
|
|
@@ -28,9 +28,9 @@ export const containsFilterFN = (
|
|
|
28
28
|
.includes(filterValue.toString().toLowerCase().trim()),
|
|
29
29
|
);
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
contains.autoRemove = (val: any) => !val;
|
|
32
32
|
|
|
33
|
-
export const
|
|
33
|
+
export const startsWith = (
|
|
34
34
|
rows: MRT_Row[],
|
|
35
35
|
id: string,
|
|
36
36
|
filterValue: string | number,
|
|
@@ -43,9 +43,9 @@ export const startsWithFilterFN = (
|
|
|
43
43
|
.startsWith(filterValue.toString().toLowerCase().trim()),
|
|
44
44
|
);
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
startsWith.autoRemove = (val: any) => !val;
|
|
47
47
|
|
|
48
|
-
export const
|
|
48
|
+
export const endsWith = (
|
|
49
49
|
rows: MRT_Row[],
|
|
50
50
|
id: string,
|
|
51
51
|
filterValue: string | number,
|
|
@@ -58,9 +58,9 @@ export const endsWithFilterFN = (
|
|
|
58
58
|
.endsWith(filterValue.toString().toLowerCase().trim()),
|
|
59
59
|
);
|
|
60
60
|
|
|
61
|
-
|
|
61
|
+
endsWith.autoRemove = (val: any) => !val;
|
|
62
62
|
|
|
63
|
-
export const
|
|
63
|
+
export const equals = (
|
|
64
64
|
rows: MRT_Row[],
|
|
65
65
|
id: string,
|
|
66
66
|
filterValue: string | number,
|
|
@@ -71,9 +71,9 @@ export const equalsFilterFN = (
|
|
|
71
71
|
filterValue.toString().toLowerCase().trim(),
|
|
72
72
|
);
|
|
73
73
|
|
|
74
|
-
|
|
74
|
+
equals.autoRemove = (val: any) => !val;
|
|
75
75
|
|
|
76
|
-
export const
|
|
76
|
+
export const notEquals = (
|
|
77
77
|
rows: MRT_Row[],
|
|
78
78
|
id: string,
|
|
79
79
|
filterValue: string | number,
|
|
@@ -84,9 +84,9 @@ export const notEqualsFilterFN = (
|
|
|
84
84
|
filterValue.toString().toLowerCase().trim(),
|
|
85
85
|
);
|
|
86
86
|
|
|
87
|
-
|
|
87
|
+
notEquals.autoRemove = (val: any) => !val;
|
|
88
88
|
|
|
89
|
-
export const
|
|
89
|
+
export const greaterThan = (
|
|
90
90
|
rows: MRT_Row[],
|
|
91
91
|
id: string,
|
|
92
92
|
filterValue: string | number,
|
|
@@ -98,9 +98,9 @@ export const greaterThanFilterFN = (
|
|
|
98
98
|
filterValue.toString().toLowerCase().trim(),
|
|
99
99
|
);
|
|
100
100
|
|
|
101
|
-
|
|
101
|
+
greaterThan.autoRemove = (val: any) => !val;
|
|
102
102
|
|
|
103
|
-
export const
|
|
103
|
+
export const lessThan = (
|
|
104
104
|
rows: MRT_Row[],
|
|
105
105
|
id: string,
|
|
106
106
|
filterValue: string | number,
|
|
@@ -112,33 +112,33 @@ export const lessThanFilterFN = (
|
|
|
112
112
|
filterValue.toString().toLowerCase().trim(),
|
|
113
113
|
);
|
|
114
114
|
|
|
115
|
-
|
|
115
|
+
lessThan.autoRemove = (val: any) => !val;
|
|
116
116
|
|
|
117
|
-
export const
|
|
117
|
+
export const empty = (
|
|
118
118
|
rows: MRT_Row[],
|
|
119
119
|
id: string,
|
|
120
120
|
_filterValue: string | number,
|
|
121
121
|
) => rows.filter((row) => !row.values[id].toString().toLowerCase().trim());
|
|
122
122
|
|
|
123
|
-
|
|
123
|
+
empty.autoRemove = (val: any) => !val;
|
|
124
124
|
|
|
125
|
-
export const
|
|
125
|
+
export const notEmpty = (
|
|
126
126
|
rows: MRT_Row[],
|
|
127
127
|
id: string,
|
|
128
128
|
_filterValue: string | number,
|
|
129
129
|
) => rows.filter((row) => !!row.values[id].toString().toLowerCase().trim());
|
|
130
130
|
|
|
131
|
-
|
|
131
|
+
notEmpty.autoRemove = (val: any) => !val;
|
|
132
132
|
|
|
133
133
|
export const defaultFilterFNs = {
|
|
134
|
-
contains
|
|
135
|
-
empty
|
|
136
|
-
endsWith
|
|
137
|
-
equals
|
|
138
|
-
fuzzy
|
|
139
|
-
greaterThan
|
|
140
|
-
lessThan
|
|
141
|
-
notEmpty
|
|
142
|
-
notEquals
|
|
143
|
-
startsWith
|
|
134
|
+
contains,
|
|
135
|
+
empty,
|
|
136
|
+
endsWith,
|
|
137
|
+
equals,
|
|
138
|
+
fuzzy,
|
|
139
|
+
greaterThan,
|
|
140
|
+
lessThan,
|
|
141
|
+
notEmpty,
|
|
142
|
+
notEquals,
|
|
143
|
+
startsWith,
|
|
144
144
|
};
|
|
@@ -77,6 +77,7 @@ export const MRT_FilterTextField: FC<Props> = ({ column }) => {
|
|
|
77
77
|
return <>{column.Filter?.({ column })}</>;
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
+
const filterId = `mrt-${idPrefix}-${column.id}-filter-text-field`;
|
|
80
81
|
const filterType = tableInstance.state.currentFilterTypes[column.id];
|
|
81
82
|
const isSelectFilter = !!column.filterSelectOptions;
|
|
82
83
|
const filterChipLabel =
|
|
@@ -98,7 +99,7 @@ export const MRT_FilterTextField: FC<Props> = ({ column }) => {
|
|
|
98
99
|
<>
|
|
99
100
|
<TextField
|
|
100
101
|
fullWidth
|
|
101
|
-
id={
|
|
102
|
+
id={filterId}
|
|
102
103
|
inputProps={{
|
|
103
104
|
disabled: !!filterChipLabel,
|
|
104
105
|
sx: {
|
|
@@ -108,17 +109,28 @@ export const MRT_FilterTextField: FC<Props> = ({ column }) => {
|
|
|
108
109
|
title: filterPlaceholder,
|
|
109
110
|
}}
|
|
110
111
|
helperText={
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
112
|
+
<label htmlFor={filterId}>
|
|
113
|
+
{filterType instanceof Function
|
|
114
|
+
? localization.filterMode.replace(
|
|
115
|
+
'{filterType}',
|
|
116
|
+
// @ts-ignore
|
|
117
|
+
localization[
|
|
118
|
+
`filter${
|
|
119
|
+
filterType.name.charAt(0).toUpperCase() +
|
|
120
|
+
filterType.name.slice(1)
|
|
121
|
+
}`
|
|
122
|
+
] ?? '',
|
|
123
|
+
) ?? ''
|
|
124
|
+
: localization.filterMode.replace(
|
|
125
|
+
'{filterType}',
|
|
126
|
+
// @ts-ignore
|
|
127
|
+
localization[
|
|
128
|
+
`filter${
|
|
129
|
+
filterType.charAt(0).toUpperCase() + filterType.slice(1)
|
|
130
|
+
}`
|
|
131
|
+
],
|
|
132
|
+
)}
|
|
133
|
+
</label>
|
|
122
134
|
}
|
|
123
135
|
FormHelperTextProps={{
|
|
124
136
|
sx: { fontSize: '0.6rem', lineHeight: '0.8rem' },
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { FC, useState } from 'react';
|
|
2
|
-
import { Box, IconButton, Menu, MenuItem } from '@mui/material';
|
|
2
|
+
import { Box, IconButton, ListItemIcon, Menu, MenuItem } from '@mui/material';
|
|
3
3
|
import { useMRT } from '../useMRT';
|
|
4
4
|
import type { MRT_HeaderGroup } from '..';
|
|
5
5
|
import { MRT_FilterTypeMenu } from './MRT_FilterTypeMenu';
|
|
@@ -14,7 +14,6 @@ export const commonMenuItemStyles = {
|
|
|
14
14
|
|
|
15
15
|
export const commonListItemStyles = {
|
|
16
16
|
display: 'flex',
|
|
17
|
-
gap: '0.75rem',
|
|
18
17
|
alignItems: 'center',
|
|
19
18
|
};
|
|
20
19
|
|
|
@@ -102,15 +101,16 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
|
|
|
102
101
|
setAnchorEl(null);
|
|
103
102
|
};
|
|
104
103
|
|
|
104
|
+
const handleShowAllColumns = () => {
|
|
105
|
+
tableInstance.toggleHideAllColumns(false);
|
|
106
|
+
setAnchorEl(null);
|
|
107
|
+
};
|
|
108
|
+
|
|
105
109
|
const handleOpenFilterModeMenu = (event: React.MouseEvent<HTMLElement>) => {
|
|
106
110
|
event.stopPropagation();
|
|
107
111
|
setFilterMenuAnchorEl(event.currentTarget);
|
|
108
112
|
};
|
|
109
113
|
|
|
110
|
-
const handleShowAllColumns = () => {
|
|
111
|
-
tableInstance.toggleHideAllColumns(false);
|
|
112
|
-
};
|
|
113
|
-
|
|
114
114
|
const handleOpenShowHideColumnsMenu = (
|
|
115
115
|
event: React.MouseEvent<HTMLElement>,
|
|
116
116
|
) => {
|
|
@@ -136,7 +136,9 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
|
|
|
136
136
|
sx={commonMenuItemStyles}
|
|
137
137
|
>
|
|
138
138
|
<Box sx={commonListItemStyles}>
|
|
139
|
-
<
|
|
139
|
+
<ListItemIcon>
|
|
140
|
+
<ClearAllIcon />
|
|
141
|
+
</ListItemIcon>
|
|
140
142
|
{localization.clearSort}
|
|
141
143
|
</Box>
|
|
142
144
|
</MenuItem>,
|
|
@@ -147,7 +149,9 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
|
|
|
147
149
|
sx={commonMenuItemStyles}
|
|
148
150
|
>
|
|
149
151
|
<Box sx={commonListItemStyles}>
|
|
150
|
-
<
|
|
152
|
+
<ListItemIcon>
|
|
153
|
+
<SortIcon />
|
|
154
|
+
</ListItemIcon>
|
|
151
155
|
{localization.sortByColumnAsc?.replace(
|
|
152
156
|
'{column}',
|
|
153
157
|
String(column.Header),
|
|
@@ -164,7 +168,9 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
|
|
|
164
168
|
sx={commonMenuItemStyles}
|
|
165
169
|
>
|
|
166
170
|
<Box sx={commonListItemStyles}>
|
|
167
|
-
<
|
|
171
|
+
<ListItemIcon>
|
|
172
|
+
<SortIcon style={{ transform: 'rotate(180deg) scaleX(-1)' }} />
|
|
173
|
+
</ListItemIcon>
|
|
168
174
|
{localization.sortByColumnDesc?.replace(
|
|
169
175
|
'{column}',
|
|
170
176
|
String(column.Header),
|
|
@@ -181,7 +187,9 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
|
|
|
181
187
|
sx={commonMenuItemStyles}
|
|
182
188
|
>
|
|
183
189
|
<Box sx={commonListItemStyles}>
|
|
184
|
-
<
|
|
190
|
+
<ListItemIcon>
|
|
191
|
+
<FilterListOffIcon />
|
|
192
|
+
</ListItemIcon>
|
|
185
193
|
{localization.clearFilter}
|
|
186
194
|
</Box>
|
|
187
195
|
</MenuItem>,
|
|
@@ -192,7 +200,9 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
|
|
|
192
200
|
sx={commonMenuItemStyles}
|
|
193
201
|
>
|
|
194
202
|
<Box sx={commonListItemStyles}>
|
|
195
|
-
<
|
|
203
|
+
<ListItemIcon>
|
|
204
|
+
<FilterListIcon />
|
|
205
|
+
</ListItemIcon>
|
|
196
206
|
{localization.filterByColumn?.replace(
|
|
197
207
|
'{column}',
|
|
198
208
|
String(column.Header),
|
|
@@ -226,7 +236,9 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
|
|
|
226
236
|
sx={commonMenuItemStyles}
|
|
227
237
|
>
|
|
228
238
|
<Box sx={commonListItemStyles}>
|
|
229
|
-
<
|
|
239
|
+
<ListItemIcon>
|
|
240
|
+
<DynamicFeedIcon />
|
|
241
|
+
</ListItemIcon>
|
|
230
242
|
{localization[
|
|
231
243
|
column.isGrouped ? 'ungroupByColumn' : 'groupByColumn'
|
|
232
244
|
]?.replace('{column}', String(column.Header))}
|
|
@@ -236,7 +248,9 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
|
|
|
236
248
|
{!disableColumnHiding && [
|
|
237
249
|
<MenuItem key={0} onClick={handleHideColumn} sx={commonMenuItemStyles}>
|
|
238
250
|
<Box sx={commonListItemStyles}>
|
|
239
|
-
<
|
|
251
|
+
<ListItemIcon>
|
|
252
|
+
<VisibilityOffIcon />
|
|
253
|
+
</ListItemIcon>
|
|
240
254
|
{localization.hideColumn?.replace(
|
|
241
255
|
'{column}',
|
|
242
256
|
String(column.Header),
|
|
@@ -250,8 +264,9 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
|
|
|
250
264
|
sx={commonMenuItemStyles}
|
|
251
265
|
>
|
|
252
266
|
<Box sx={commonListItemStyles}>
|
|
253
|
-
<
|
|
254
|
-
|
|
267
|
+
<ListItemIcon>
|
|
268
|
+
<ViewColumnIcon />
|
|
269
|
+
</ListItemIcon>
|
|
255
270
|
{localization.showAllColumns?.replace(
|
|
256
271
|
'{column}',
|
|
257
272
|
String(column.Header),
|
|
@@ -4,16 +4,16 @@ import { useMRT } from '../useMRT';
|
|
|
4
4
|
import type { MRT_FilterType, MRT_HeaderGroup } from '..';
|
|
5
5
|
import { MRT_FILTER_TYPE } from '../enums';
|
|
6
6
|
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
7
|
+
contains,
|
|
8
|
+
empty,
|
|
9
|
+
endsWith,
|
|
10
|
+
equals,
|
|
11
|
+
fuzzy,
|
|
12
|
+
greaterThan,
|
|
13
|
+
lessThan,
|
|
14
|
+
notEmpty,
|
|
15
|
+
notEquals,
|
|
16
|
+
startsWith,
|
|
17
17
|
} from '../filtersFNs';
|
|
18
18
|
|
|
19
19
|
const commonMenuItemStyles = {
|
|
@@ -48,61 +48,61 @@ export const MRT_FilterTypeMenu: FC<Props> = ({
|
|
|
48
48
|
type: MRT_FILTER_TYPE.FUZZY,
|
|
49
49
|
label: localization.filterFuzzy,
|
|
50
50
|
divider: false,
|
|
51
|
-
fn:
|
|
51
|
+
fn: fuzzy,
|
|
52
52
|
},
|
|
53
53
|
{
|
|
54
54
|
type: MRT_FILTER_TYPE.CONTAINS,
|
|
55
55
|
label: localization.filterContains,
|
|
56
56
|
divider: true,
|
|
57
|
-
fn:
|
|
57
|
+
fn: contains,
|
|
58
58
|
},
|
|
59
59
|
{
|
|
60
60
|
type: MRT_FILTER_TYPE.STARTS_WITH,
|
|
61
61
|
label: localization.filterStartsWith,
|
|
62
62
|
divider: false,
|
|
63
|
-
fn:
|
|
63
|
+
fn: startsWith,
|
|
64
64
|
},
|
|
65
65
|
{
|
|
66
66
|
type: MRT_FILTER_TYPE.ENDS_WITH,
|
|
67
67
|
label: localization.filterEndsWith,
|
|
68
68
|
divider: true,
|
|
69
|
-
fn:
|
|
69
|
+
fn: endsWith,
|
|
70
70
|
},
|
|
71
71
|
{
|
|
72
72
|
type: MRT_FILTER_TYPE.EQUALS,
|
|
73
73
|
label: localization.filterEquals,
|
|
74
74
|
divider: false,
|
|
75
|
-
fn:
|
|
75
|
+
fn: equals,
|
|
76
76
|
},
|
|
77
77
|
{
|
|
78
78
|
type: MRT_FILTER_TYPE.NOT_EQUALS,
|
|
79
79
|
label: localization.filterNotEquals,
|
|
80
80
|
divider: true,
|
|
81
|
-
fn:
|
|
81
|
+
fn: notEquals,
|
|
82
82
|
},
|
|
83
83
|
{
|
|
84
84
|
type: MRT_FILTER_TYPE.GREATER_THAN,
|
|
85
85
|
label: localization.filterGreaterThan,
|
|
86
86
|
divider: false,
|
|
87
|
-
fn:
|
|
87
|
+
fn: greaterThan,
|
|
88
88
|
},
|
|
89
89
|
{
|
|
90
90
|
type: MRT_FILTER_TYPE.LESS_THAN,
|
|
91
91
|
label: localization.filterLessThan,
|
|
92
92
|
divider: true,
|
|
93
|
-
fn:
|
|
93
|
+
fn: lessThan,
|
|
94
94
|
},
|
|
95
95
|
{
|
|
96
96
|
type: MRT_FILTER_TYPE.EMPTY,
|
|
97
97
|
label: localization.filterEmpty,
|
|
98
98
|
divider: false,
|
|
99
|
-
fn:
|
|
99
|
+
fn: empty,
|
|
100
100
|
},
|
|
101
101
|
{
|
|
102
102
|
type: MRT_FILTER_TYPE.NOT_EMPTY,
|
|
103
103
|
label: localization.filterNotEmpty,
|
|
104
104
|
divider: false,
|
|
105
|
-
fn:
|
|
105
|
+
fn: notEmpty,
|
|
106
106
|
},
|
|
107
107
|
],
|
|
108
108
|
[],
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import React, { FC } from 'react';
|
|
2
|
-
import { Menu, MenuItem } from '@mui/material';
|
|
2
|
+
import { Box, ListItemIcon, Menu, MenuItem } from '@mui/material';
|
|
3
3
|
import { useMRT } from '../useMRT';
|
|
4
4
|
import type { MRT_Row } from '..';
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
commonListItemStyles,
|
|
7
|
+
commonMenuItemStyles,
|
|
8
|
+
} from './MRT_ColumnActionMenu';
|
|
6
9
|
|
|
7
10
|
interface Props {
|
|
8
11
|
anchorEl: HTMLElement | null;
|
|
@@ -36,8 +39,12 @@ export const MRT_RowActionMenu: FC<Props> = ({
|
|
|
36
39
|
>
|
|
37
40
|
{enableRowEditing && (
|
|
38
41
|
<MenuItem onClick={handleEdit} sx={commonMenuItemStyles}>
|
|
39
|
-
<
|
|
40
|
-
|
|
42
|
+
<Box sx={commonListItemStyles}>
|
|
43
|
+
<ListItemIcon>
|
|
44
|
+
<EditIcon />
|
|
45
|
+
</ListItemIcon>
|
|
46
|
+
{localization.edit}
|
|
47
|
+
</Box>
|
|
41
48
|
</MenuItem>
|
|
42
49
|
)}
|
|
43
50
|
{renderRowActionMenuItems?.(row, tableInstance, () =>
|