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.
- package/README.md +29 -19
- package/dist/MaterialReactTable.d.ts +314 -108
- package/dist/body/MRT_TableBody.d.ts +3 -0
- package/dist/body/MRT_TableBodyCell.d.ts +2 -11
- package/dist/body/MRT_TableBodyRow.d.ts +3 -1
- package/dist/body/MRT_TableDetailPanel.d.ts +2 -1
- package/dist/buttons/MRT_CopyButton.d.ts +2 -1
- package/dist/buttons/MRT_EditActionButtons.d.ts +2 -1
- package/dist/buttons/MRT_ExpandAllButton.d.ts +2 -0
- package/dist/buttons/MRT_ExpandButton.d.ts +2 -1
- package/dist/buttons/MRT_FullScreenToggleButton.d.ts +2 -0
- package/dist/buttons/MRT_ShowHideColumnsButton.d.ts +2 -0
- package/dist/buttons/MRT_ToggleColumnActionMenuButton.d.ts +3 -2
- package/dist/buttons/MRT_ToggleDensePaddingButton.d.ts +2 -0
- package/dist/buttons/MRT_ToggleFiltersButton.d.ts +2 -0
- package/dist/buttons/MRT_ToggleRowActionMenuButton.d.ts +2 -1
- package/dist/buttons/MRT_ToggleSearchButton.d.ts +2 -0
- package/dist/enums.d.ts +2 -1
- package/dist/filtersFNs.d.ts +13 -5
- package/dist/footer/MRT_TableFooter.d.ts +3 -0
- package/dist/footer/MRT_TableFooterCell.d.ts +3 -2
- package/dist/footer/MRT_TableFooterRow.d.ts +2 -1
- package/dist/head/MRT_TableHead.d.ts +3 -0
- package/dist/head/MRT_TableHeadCell.d.ts +4 -18
- package/dist/head/MRT_TableHeadRow.d.ts +2 -1
- package/dist/icons.d.ts +1 -1
- package/dist/inputs/MRT_EditCellTextField.d.ts +2 -1
- package/dist/inputs/MRT_FilterTextField.d.ts +3 -2
- package/dist/inputs/MRT_SearchTextField.d.ts +2 -0
- package/dist/inputs/MRT_SelectCheckbox.d.ts +2 -1
- package/dist/localization.d.ts +10 -2
- package/dist/material-react-table.cjs.development.js +2286 -2459
- 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 +2288 -2461
- package/dist/material-react-table.esm.js.map +1 -1
- package/dist/menus/MRT_ColumnActionMenu.d.ts +3 -2
- package/dist/menus/MRT_FilterTypeMenu.d.ts +4 -3
- package/dist/menus/MRT_RowActionMenu.d.ts +3 -2
- package/dist/menus/MRT_ShowHideColumnsMenu.d.ts +2 -0
- package/dist/menus/MRT_ShowHideColumnsMenuItems.d.ts +2 -1
- package/dist/table/MRT_Table.d.ts +3 -0
- package/dist/table/MRT_TableContainer.d.ts +2 -0
- package/dist/table/MRT_TablePaper.d.ts +7 -0
- package/dist/table/MRT_TableRoot.d.ts +3 -0
- package/dist/toolbar/MRT_LinearProgressBar.d.ts +2 -0
- package/dist/toolbar/MRT_TablePagination.d.ts +2 -0
- package/dist/toolbar/MRT_ToolbarAlertBanner.d.ts +2 -0
- package/dist/toolbar/MRT_ToolbarBottom.d.ts +2 -0
- package/dist/toolbar/MRT_ToolbarInternalButtons.d.ts +2 -0
- package/dist/toolbar/MRT_ToolbarTop.d.ts +4 -2
- package/dist/utils.d.ts +12 -2
- package/package.json +29 -30
- package/src/MaterialReactTable.tsx +614 -297
- package/src/body/MRT_TableBody.tsx +26 -22
- package/src/body/MRT_TableBodyCell.tsx +79 -55
- package/src/body/MRT_TableBodyRow.tsx +37 -67
- package/src/body/MRT_TableDetailPanel.tsx +21 -17
- package/src/buttons/MRT_CopyButton.tsx +34 -10
- package/src/buttons/MRT_EditActionButtons.tsx +16 -13
- package/src/buttons/MRT_ExpandAllButton.tsx +36 -28
- package/src/buttons/MRT_ExpandButton.tsx +35 -41
- package/src/buttons/MRT_FullScreenToggleButton.tsx +18 -11
- package/src/buttons/MRT_ShowHideColumnsButton.tsx +18 -7
- package/src/buttons/MRT_ToggleColumnActionMenuButton.tsx +22 -11
- package/src/buttons/MRT_ToggleDensePaddingButton.tsx +18 -11
- package/src/buttons/MRT_ToggleFiltersButton.tsx +16 -9
- package/src/buttons/MRT_ToggleRowActionMenuButton.tsx +31 -26
- package/src/buttons/MRT_ToggleSearchButton.tsx +24 -12
- package/src/enums.ts +2 -1
- package/src/filtersFNs.ts +17 -3
- package/src/footer/MRT_TableFooter.tsx +24 -8
- package/src/footer/MRT_TableFooterCell.tsx +34 -26
- package/src/footer/MRT_TableFooterRow.tsx +21 -39
- package/src/head/MRT_TableHead.tsx +24 -8
- package/src/head/MRT_TableHeadCell.tsx +185 -142
- package/src/head/MRT_TableHeadRow.tsx +16 -93
- package/src/icons.ts +3 -3
- package/src/inputs/MRT_EditCellTextField.tsx +39 -24
- package/src/inputs/MRT_FilterTextField.tsx +53 -39
- package/src/inputs/MRT_SearchTextField.tsx +71 -25
- package/src/inputs/MRT_SelectCheckbox.tsx +42 -30
- package/src/localization.ts +20 -4
- package/src/menus/MRT_ColumnActionMenu.tsx +129 -69
- package/src/menus/MRT_FilterTypeMenu.tsx +55 -23
- package/src/menus/MRT_RowActionMenu.tsx +22 -15
- package/src/menus/MRT_ShowHideColumnsMenu.tsx +52 -20
- package/src/menus/MRT_ShowHideColumnsMenuItems.tsx +27 -17
- package/src/table/MRT_Table.tsx +25 -15
- package/src/table/MRT_TableContainer.tsx +106 -45
- package/src/table/MRT_TablePaper.tsx +65 -0
- package/src/table/MRT_TableRoot.tsx +239 -0
- package/src/toolbar/MRT_LinearProgressBar.tsx +10 -7
- package/src/toolbar/MRT_TablePagination.tsx +33 -19
- package/src/toolbar/MRT_ToolbarAlertBanner.tsx +33 -20
- package/src/toolbar/MRT_ToolbarBottom.tsx +32 -21
- package/src/toolbar/MRT_ToolbarInternalButtons.tsx +34 -20
- package/src/toolbar/MRT_ToolbarTop.tsx +36 -29
- package/src/utils.ts +37 -8
- package/dist/head/MRT_TableHeadCellActions.d.ts +0 -5
- package/dist/table/MRT_TableSpacerCell.d.ts +0 -6
- package/dist/useMRT.d.ts +0 -27
- package/src/@types/faker.d.ts +0 -4
- package/src/@types/react-table-config.d.ts +0 -53
- package/src/head/MRT_TableHeadCellActions.tsx +0 -29
- package/src/table/MRT_TableSpacerCell.tsx +0 -20
- package/src/useMRT.tsx +0 -215
|
@@ -1,62 +1,69 @@
|
|
|
1
1
|
import React, { ChangeEvent, FC } from 'react';
|
|
2
2
|
import { Checkbox, Tooltip } from '@mui/material';
|
|
3
|
-
import {
|
|
4
|
-
import type { MRT_Row } from '..';
|
|
3
|
+
import type { MRT_Row, MRT_TableInstance } from '..';
|
|
5
4
|
|
|
6
5
|
interface Props {
|
|
7
6
|
row?: MRT_Row;
|
|
8
7
|
selectAll?: boolean;
|
|
8
|
+
tableInstance: MRT_TableInstance;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
export const MRT_SelectCheckbox: FC<Props> = ({
|
|
11
|
+
export const MRT_SelectCheckbox: FC<Props> = ({
|
|
12
|
+
row,
|
|
13
|
+
selectAll,
|
|
14
|
+
tableInstance,
|
|
15
|
+
}) => {
|
|
12
16
|
const {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
getRowModel,
|
|
18
|
+
getSelectedRowModel,
|
|
19
|
+
getState,
|
|
20
|
+
getToggleAllRowsSelectedProps,
|
|
21
|
+
options: {
|
|
22
|
+
isLoading,
|
|
23
|
+
localization,
|
|
24
|
+
muiSelectCheckboxProps,
|
|
25
|
+
onSelectChange,
|
|
26
|
+
onSelectAllChange,
|
|
20
27
|
},
|
|
21
|
-
} =
|
|
28
|
+
} = tableInstance;
|
|
29
|
+
|
|
30
|
+
const { isDensePadding } = getState();
|
|
22
31
|
|
|
23
32
|
const handleSelectChange = (event: ChangeEvent<HTMLInputElement>) => {
|
|
24
33
|
if (selectAll) {
|
|
25
|
-
|
|
26
|
-
onSelectAllChange?.(
|
|
34
|
+
getToggleAllRowsSelectedProps?.()?.onChange?.(event as any);
|
|
35
|
+
onSelectAllChange?.({
|
|
27
36
|
event,
|
|
28
|
-
event.target.checked ?
|
|
29
|
-
|
|
37
|
+
selectedRows: event.target.checked ? getRowModel().flatRows : [],
|
|
38
|
+
tableInstance,
|
|
39
|
+
});
|
|
30
40
|
} else if (row) {
|
|
31
|
-
row?.
|
|
32
|
-
onSelectChange?.(
|
|
41
|
+
row?.getToggleSelectedProps()?.onChange?.(event as any);
|
|
42
|
+
onSelectChange?.({
|
|
33
43
|
event,
|
|
34
44
|
row,
|
|
35
|
-
event.target.checked
|
|
36
|
-
? [...
|
|
37
|
-
:
|
|
45
|
+
selectedRows: event.target.checked
|
|
46
|
+
? [...getSelectedRowModel().flatRows, row]
|
|
47
|
+
: getSelectedRowModel().flatRows.filter(
|
|
38
48
|
(selectedRow) => selectedRow.id !== row.id,
|
|
39
49
|
),
|
|
40
|
-
|
|
50
|
+
tableInstance,
|
|
51
|
+
});
|
|
41
52
|
}
|
|
42
53
|
};
|
|
43
54
|
|
|
44
55
|
const mTableBodyRowSelectCheckboxProps =
|
|
45
56
|
muiSelectCheckboxProps instanceof Function
|
|
46
|
-
? muiSelectCheckboxProps(selectAll, row, tableInstance)
|
|
57
|
+
? muiSelectCheckboxProps({ isSelectAll: !!selectAll, row, tableInstance })
|
|
47
58
|
: muiSelectCheckboxProps;
|
|
48
59
|
|
|
49
60
|
const rtSelectCheckboxProps = selectAll
|
|
50
|
-
?
|
|
51
|
-
: row?.
|
|
61
|
+
? getToggleAllRowsSelectedProps()
|
|
62
|
+
: row?.getToggleSelectedProps();
|
|
52
63
|
|
|
53
64
|
const checkboxProps = {
|
|
54
|
-
...mTableBodyRowSelectCheckboxProps,
|
|
55
65
|
...rtSelectCheckboxProps,
|
|
56
|
-
|
|
57
|
-
...rtSelectCheckboxProps?.style,
|
|
58
|
-
...mTableBodyRowSelectCheckboxProps?.style,
|
|
59
|
-
},
|
|
66
|
+
...mTableBodyRowSelectCheckboxProps,
|
|
60
67
|
};
|
|
61
68
|
|
|
62
69
|
return (
|
|
@@ -69,13 +76,18 @@ export const MRT_SelectCheckbox: FC<Props> = ({ row, selectAll }) => {
|
|
|
69
76
|
}
|
|
70
77
|
>
|
|
71
78
|
<Checkbox
|
|
79
|
+
disabled={isLoading}
|
|
72
80
|
inputProps={{
|
|
73
81
|
'aria-label': selectAll
|
|
74
82
|
? localization.toggleSelectAll
|
|
75
83
|
: localization.toggleSelectRow,
|
|
76
84
|
}}
|
|
77
|
-
size={
|
|
85
|
+
size={isDensePadding ? 'small' : 'medium'}
|
|
78
86
|
{...checkboxProps}
|
|
87
|
+
sx={{
|
|
88
|
+
height: isDensePadding ? '1.75rem' : '2.25rem',
|
|
89
|
+
width: isDensePadding ? '1.75rem' : '2.25rem',
|
|
90
|
+
}}
|
|
79
91
|
onChange={handleSelectChange}
|
|
80
92
|
title={undefined}
|
|
81
93
|
/>
|
package/src/localization.ts
CHANGED
|
@@ -2,6 +2,7 @@ export interface MRT_Localization {
|
|
|
2
2
|
actions: string;
|
|
3
3
|
cancel: string;
|
|
4
4
|
changeFilterMode: string;
|
|
5
|
+
changeSearchMode: string;
|
|
5
6
|
clearFilter: string;
|
|
6
7
|
clearSearch: string;
|
|
7
8
|
clearSort: string;
|
|
@@ -11,12 +12,13 @@ export interface MRT_Localization {
|
|
|
11
12
|
edit: string;
|
|
12
13
|
expand: string;
|
|
13
14
|
expandAll: string;
|
|
15
|
+
filterBestMatch: string;
|
|
16
|
+
filterBestMatchFirst: string;
|
|
14
17
|
filterByColumn: string;
|
|
15
18
|
filterContains: string;
|
|
16
19
|
filterEmpty: string;
|
|
17
20
|
filterEndsWith: string;
|
|
18
21
|
filterEquals: string;
|
|
19
|
-
filterFuzzy: string;
|
|
20
22
|
filterGreaterThan: string;
|
|
21
23
|
filterLessThan: string;
|
|
22
24
|
filterMode: string;
|
|
@@ -28,13 +30,18 @@ export interface MRT_Localization {
|
|
|
28
30
|
groupedBy: string;
|
|
29
31
|
hideAll: string;
|
|
30
32
|
hideColumn: string;
|
|
33
|
+
pinToLeft: string;
|
|
34
|
+
pinToRight: string;
|
|
31
35
|
rowActions: string;
|
|
36
|
+
rowNumber: string;
|
|
37
|
+
rowNumbers: string;
|
|
32
38
|
save: string;
|
|
33
39
|
search: string;
|
|
40
|
+
select: string;
|
|
34
41
|
selectedCountOfRowCountRowsSelected: string;
|
|
35
42
|
showAll: string;
|
|
36
|
-
showHideColumns: string;
|
|
37
43
|
showAllColumns: string;
|
|
44
|
+
showHideColumns: string;
|
|
38
45
|
showHideFilters: string;
|
|
39
46
|
showHideSearch: string;
|
|
40
47
|
sortByColumnAsc: string;
|
|
@@ -45,12 +52,14 @@ export interface MRT_Localization {
|
|
|
45
52
|
toggleSelectAll: string;
|
|
46
53
|
toggleSelectRow: string;
|
|
47
54
|
ungroupByColumn: string;
|
|
55
|
+
unpin: string;
|
|
48
56
|
}
|
|
49
57
|
|
|
50
58
|
export const MRT_DefaultLocalization_EN: MRT_Localization = {
|
|
51
59
|
actions: 'Actions',
|
|
52
60
|
cancel: 'Cancel',
|
|
53
61
|
changeFilterMode: 'Change filter mode',
|
|
62
|
+
changeSearchMode: 'Change search mode',
|
|
54
63
|
clearFilter: 'Clear filter',
|
|
55
64
|
clearSearch: 'Clear search',
|
|
56
65
|
clearSort: 'Clear sort',
|
|
@@ -60,12 +69,13 @@ export const MRT_DefaultLocalization_EN: MRT_Localization = {
|
|
|
60
69
|
edit: 'Edit',
|
|
61
70
|
expand: 'Expand',
|
|
62
71
|
expandAll: 'Expand all',
|
|
72
|
+
filterBestMatch: 'Best Match',
|
|
73
|
+
filterBestMatchFirst: 'Best Match First',
|
|
63
74
|
filterByColumn: 'Filter by {column}',
|
|
64
|
-
filterContains: 'Contains
|
|
75
|
+
filterContains: 'Contains',
|
|
65
76
|
filterEmpty: 'Empty',
|
|
66
77
|
filterEndsWith: 'Ends With',
|
|
67
78
|
filterEquals: 'Equals',
|
|
68
|
-
filterFuzzy: 'Fuzzy Match',
|
|
69
79
|
filterGreaterThan: 'Greater Than',
|
|
70
80
|
filterLessThan: 'Less Than',
|
|
71
81
|
filterMode: 'Filter Mode: {filterType}',
|
|
@@ -77,11 +87,16 @@ export const MRT_DefaultLocalization_EN: MRT_Localization = {
|
|
|
77
87
|
groupedBy: 'Grouped by ',
|
|
78
88
|
hideAll: 'Hide all',
|
|
79
89
|
hideColumn: 'Hide {column} column',
|
|
90
|
+
pinToLeft: 'Pin to left',
|
|
91
|
+
pinToRight: 'Pin to right',
|
|
80
92
|
rowActions: 'Row Actions',
|
|
93
|
+
rowNumber: '#',
|
|
94
|
+
rowNumbers: 'Row Numbers',
|
|
81
95
|
save: 'Save',
|
|
82
96
|
search: 'Search',
|
|
83
97
|
selectedCountOfRowCountRowsSelected:
|
|
84
98
|
'{selectedCount} of {rowCount} row(s) selected',
|
|
99
|
+
select: 'Select',
|
|
85
100
|
showAll: 'Show all',
|
|
86
101
|
showAllColumns: 'Show all columns',
|
|
87
102
|
showHideColumns: 'Show/Hide columns',
|
|
@@ -95,4 +110,5 @@ export const MRT_DefaultLocalization_EN: MRT_Localization = {
|
|
|
95
110
|
toggleSelectAll: 'Toggle select all',
|
|
96
111
|
toggleSelectRow: 'Toggle select row',
|
|
97
112
|
ungroupByColumn: 'Ungroup by {column}',
|
|
113
|
+
unpin: 'Unpin',
|
|
98
114
|
};
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React, { FC, useState } from 'react';
|
|
2
2
|
import { Box, IconButton, ListItemIcon, Menu, MenuItem } from '@mui/material';
|
|
3
|
-
import {
|
|
4
|
-
import type { MRT_HeaderGroup } from '..';
|
|
3
|
+
import type { MRT_Header, MRT_TableInstance } from '..';
|
|
5
4
|
import { MRT_FilterTypeMenu } from './MRT_FilterTypeMenu';
|
|
6
5
|
import { MRT_ShowHideColumnsMenu } from './MRT_ShowHideColumnsMenu';
|
|
7
6
|
|
|
@@ -19,35 +18,47 @@ export const commonListItemStyles = {
|
|
|
19
18
|
|
|
20
19
|
interface Props {
|
|
21
20
|
anchorEl: HTMLElement | null;
|
|
22
|
-
|
|
21
|
+
header: MRT_Header;
|
|
23
22
|
setAnchorEl: (anchorEl: HTMLElement | null) => void;
|
|
23
|
+
tableInstance: MRT_TableInstance;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
export const MRT_ColumnActionMenu: FC<Props> = ({
|
|
27
27
|
anchorEl,
|
|
28
|
-
|
|
28
|
+
header,
|
|
29
29
|
setAnchorEl,
|
|
30
|
+
tableInstance,
|
|
30
31
|
}) => {
|
|
31
32
|
const {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
33
|
+
getState,
|
|
34
|
+
toggleAllColumnsVisible,
|
|
35
|
+
setColumnOrder,
|
|
36
|
+
options: {
|
|
37
|
+
enableColumnFilters,
|
|
38
|
+
enableColumnPinning,
|
|
39
|
+
enableGrouping,
|
|
40
|
+
enableHiding,
|
|
41
|
+
enableSorting,
|
|
42
|
+
icons: {
|
|
43
|
+
ArrowRightIcon,
|
|
44
|
+
ClearAllIcon,
|
|
45
|
+
ViewColumnIcon,
|
|
46
|
+
DynamicFeedIcon,
|
|
47
|
+
FilterListIcon,
|
|
48
|
+
FilterListOffIcon,
|
|
49
|
+
PushPinIcon,
|
|
50
|
+
SortIcon,
|
|
51
|
+
VisibilityOffIcon,
|
|
52
|
+
},
|
|
53
|
+
idPrefix,
|
|
54
|
+
localization,
|
|
55
|
+
setShowFilters,
|
|
45
56
|
},
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
} =
|
|
57
|
+
} = tableInstance;
|
|
58
|
+
|
|
59
|
+
const { column } = header;
|
|
60
|
+
|
|
61
|
+
const { isDensePadding, columnVisibility } = getState();
|
|
51
62
|
|
|
52
63
|
const [filterMenuAnchorEl, setFilterMenuAnchorEl] =
|
|
53
64
|
useState<null | HTMLElement>(null);
|
|
@@ -56,32 +67,37 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
|
|
|
56
67
|
useState<null | HTMLElement>(null);
|
|
57
68
|
|
|
58
69
|
const handleClearSort = () => {
|
|
59
|
-
column.
|
|
70
|
+
column.resetSorting();
|
|
60
71
|
setAnchorEl(null);
|
|
61
72
|
};
|
|
62
73
|
|
|
63
74
|
const handleSortAsc = () => {
|
|
64
|
-
column.
|
|
75
|
+
column.toggleSorting(false);
|
|
65
76
|
setAnchorEl(null);
|
|
66
77
|
};
|
|
67
78
|
|
|
68
79
|
const handleSortDesc = () => {
|
|
69
|
-
column.
|
|
80
|
+
column.toggleSorting(true);
|
|
70
81
|
setAnchorEl(null);
|
|
71
82
|
};
|
|
72
83
|
|
|
73
84
|
const handleHideColumn = () => {
|
|
74
|
-
column.
|
|
85
|
+
column.toggleVisibility(false);
|
|
75
86
|
setAnchorEl(null);
|
|
76
87
|
};
|
|
77
88
|
|
|
89
|
+
const handlePinColumn = (pinDirection: 'left' | 'right' | false) => {
|
|
90
|
+
column.pin(pinDirection);
|
|
91
|
+
};
|
|
92
|
+
|
|
78
93
|
const handleGroupByColumn = () => {
|
|
79
|
-
column.
|
|
94
|
+
column.toggleGrouping();
|
|
95
|
+
setColumnOrder((old) => ['mrt-expand', ...old]);
|
|
80
96
|
setAnchorEl(null);
|
|
81
97
|
};
|
|
82
98
|
|
|
83
99
|
const handleClearFilter = () => {
|
|
84
|
-
column.
|
|
100
|
+
column.setColumnFilterValue('');
|
|
85
101
|
setAnchorEl(null);
|
|
86
102
|
};
|
|
87
103
|
|
|
@@ -92,8 +108,8 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
|
|
|
92
108
|
document
|
|
93
109
|
.getElementById(
|
|
94
110
|
// @ts-ignore
|
|
95
|
-
|
|
96
|
-
`mrt-${idPrefix}-${
|
|
111
|
+
header.muiTableHeadCellFilterTextFieldProps?.id ??
|
|
112
|
+
`mrt-${idPrefix}-${header.id}-filter-text-field`,
|
|
97
113
|
)
|
|
98
114
|
?.focus(),
|
|
99
115
|
200,
|
|
@@ -102,7 +118,7 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
|
|
|
102
118
|
};
|
|
103
119
|
|
|
104
120
|
const handleShowAllColumns = () => {
|
|
105
|
-
|
|
121
|
+
toggleAllColumnsVisible(true);
|
|
106
122
|
setAnchorEl(null);
|
|
107
123
|
};
|
|
108
124
|
|
|
@@ -124,13 +140,13 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
|
|
|
124
140
|
open={!!anchorEl}
|
|
125
141
|
onClose={() => setAnchorEl(null)}
|
|
126
142
|
MenuListProps={{
|
|
127
|
-
dense:
|
|
143
|
+
dense: isDensePadding,
|
|
128
144
|
}}
|
|
129
145
|
>
|
|
130
|
-
{
|
|
131
|
-
column.
|
|
146
|
+
{enableSorting &&
|
|
147
|
+
column.getCanSort() && [
|
|
132
148
|
<MenuItem
|
|
133
|
-
disabled={!column.
|
|
149
|
+
disabled={!column.getIsSorted()}
|
|
134
150
|
key={0}
|
|
135
151
|
onClick={handleClearSort}
|
|
136
152
|
sx={commonMenuItemStyles}
|
|
@@ -143,7 +159,7 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
|
|
|
143
159
|
</Box>
|
|
144
160
|
</MenuItem>,
|
|
145
161
|
<MenuItem
|
|
146
|
-
disabled={column.
|
|
162
|
+
disabled={column.getIsSorted() === 'asc'}
|
|
147
163
|
key={1}
|
|
148
164
|
onClick={handleSortAsc}
|
|
149
165
|
sx={commonMenuItemStyles}
|
|
@@ -154,16 +170,14 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
|
|
|
154
170
|
</ListItemIcon>
|
|
155
171
|
{localization.sortByColumnAsc?.replace(
|
|
156
172
|
'{column}',
|
|
157
|
-
String(column.
|
|
173
|
+
String(column.header),
|
|
158
174
|
)}
|
|
159
175
|
</Box>
|
|
160
176
|
</MenuItem>,
|
|
161
177
|
<MenuItem
|
|
162
|
-
divider={
|
|
163
|
-
!disableFilters || enableColumnGrouping || !disableColumnHiding
|
|
164
|
-
}
|
|
178
|
+
divider={enableColumnFilters || enableGrouping || enableHiding}
|
|
165
179
|
key={2}
|
|
166
|
-
disabled={column.
|
|
180
|
+
disabled={column.getIsSorted() === 'desc'}
|
|
167
181
|
onClick={handleSortDesc}
|
|
168
182
|
sx={commonMenuItemStyles}
|
|
169
183
|
>
|
|
@@ -173,15 +187,15 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
|
|
|
173
187
|
</ListItemIcon>
|
|
174
188
|
{localization.sortByColumnDesc?.replace(
|
|
175
189
|
'{column}',
|
|
176
|
-
String(column.
|
|
190
|
+
String(column.header),
|
|
177
191
|
)}
|
|
178
192
|
</Box>
|
|
179
193
|
</MenuItem>,
|
|
180
194
|
]}
|
|
181
|
-
{
|
|
182
|
-
column.
|
|
195
|
+
{enableColumnFilters &&
|
|
196
|
+
column.getCanColumnFilter() && [
|
|
183
197
|
<MenuItem
|
|
184
|
-
disabled={!column.
|
|
198
|
+
disabled={!column.getColumnFilterValue()}
|
|
185
199
|
key={0}
|
|
186
200
|
onClick={handleClearFilter}
|
|
187
201
|
sx={commonMenuItemStyles}
|
|
@@ -194,7 +208,7 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
|
|
|
194
208
|
</Box>
|
|
195
209
|
</MenuItem>,
|
|
196
210
|
<MenuItem
|
|
197
|
-
divider={
|
|
211
|
+
divider={enableGrouping || enableHiding}
|
|
198
212
|
key={1}
|
|
199
213
|
onClick={handleFilterByColumn}
|
|
200
214
|
sx={commonMenuItemStyles}
|
|
@@ -205,7 +219,7 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
|
|
|
205
219
|
</ListItemIcon>
|
|
206
220
|
{localization.filterByColumn?.replace(
|
|
207
221
|
'{column}',
|
|
208
|
-
String(column.
|
|
222
|
+
String(column.header),
|
|
209
223
|
)}
|
|
210
224
|
</Box>
|
|
211
225
|
{!column.filterSelectOptions && (
|
|
@@ -221,16 +235,17 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
|
|
|
221
235
|
</MenuItem>,
|
|
222
236
|
<MRT_FilterTypeMenu
|
|
223
237
|
anchorEl={filterMenuAnchorEl}
|
|
224
|
-
|
|
238
|
+
header={header}
|
|
225
239
|
key={2}
|
|
226
|
-
setAnchorEl={setFilterMenuAnchorEl}
|
|
227
240
|
onSelect={handleFilterByColumn}
|
|
241
|
+
setAnchorEl={setFilterMenuAnchorEl}
|
|
242
|
+
tableInstance={tableInstance}
|
|
228
243
|
/>,
|
|
229
244
|
]}
|
|
230
|
-
{
|
|
231
|
-
column.
|
|
245
|
+
{enableGrouping &&
|
|
246
|
+
column.getCanGroup() && [
|
|
232
247
|
<MenuItem
|
|
233
|
-
divider={
|
|
248
|
+
divider={enableColumnPinning}
|
|
234
249
|
key={0}
|
|
235
250
|
onClick={handleGroupByColumn}
|
|
236
251
|
sx={commonMenuItemStyles}
|
|
@@ -240,14 +255,57 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
|
|
|
240
255
|
<DynamicFeedIcon />
|
|
241
256
|
</ListItemIcon>
|
|
242
257
|
{localization[
|
|
243
|
-
column.
|
|
244
|
-
]?.replace('{column}', String(column.
|
|
258
|
+
column.getIsGrouped() ? 'ungroupByColumn' : 'groupByColumn'
|
|
259
|
+
]?.replace('{column}', String(column.header))}
|
|
245
260
|
</Box>
|
|
246
261
|
</MenuItem>,
|
|
247
262
|
]}
|
|
248
|
-
{
|
|
263
|
+
{enableColumnPinning &&
|
|
264
|
+
column.getCanPin() && [
|
|
265
|
+
<MenuItem
|
|
266
|
+
disabled={column.getIsPinned() === 'left'}
|
|
267
|
+
key={0}
|
|
268
|
+
onClick={() => handlePinColumn('left')}
|
|
269
|
+
sx={commonMenuItemStyles}
|
|
270
|
+
>
|
|
271
|
+
<Box sx={commonListItemStyles}>
|
|
272
|
+
<ListItemIcon>
|
|
273
|
+
<PushPinIcon style={{ transform: 'rotate(90deg)' }} />
|
|
274
|
+
</ListItemIcon>
|
|
275
|
+
{localization.pinToLeft}
|
|
276
|
+
</Box>
|
|
277
|
+
</MenuItem>,
|
|
278
|
+
<MenuItem
|
|
279
|
+
disabled={column.getIsPinned() === 'right'}
|
|
280
|
+
key={0}
|
|
281
|
+
onClick={() => handlePinColumn('right')}
|
|
282
|
+
sx={commonMenuItemStyles}
|
|
283
|
+
>
|
|
284
|
+
<Box sx={commonListItemStyles}>
|
|
285
|
+
<ListItemIcon>
|
|
286
|
+
<PushPinIcon style={{ transform: 'rotate(-90deg)' }} />
|
|
287
|
+
</ListItemIcon>
|
|
288
|
+
{localization.pinToRight}
|
|
289
|
+
</Box>
|
|
290
|
+
</MenuItem>,
|
|
291
|
+
<MenuItem
|
|
292
|
+
disabled={!column.getIsPinned()}
|
|
293
|
+
divider={enableHiding}
|
|
294
|
+
key={0}
|
|
295
|
+
onClick={() => handlePinColumn(false)}
|
|
296
|
+
sx={commonMenuItemStyles}
|
|
297
|
+
>
|
|
298
|
+
<Box sx={commonListItemStyles}>
|
|
299
|
+
<ListItemIcon>
|
|
300
|
+
<PushPinIcon />
|
|
301
|
+
</ListItemIcon>
|
|
302
|
+
{localization.unpin}
|
|
303
|
+
</Box>
|
|
304
|
+
</MenuItem>,
|
|
305
|
+
]}
|
|
306
|
+
{enableHiding && [
|
|
249
307
|
<MenuItem
|
|
250
|
-
disabled={column.
|
|
308
|
+
disabled={column.enableHiding === false}
|
|
251
309
|
key={0}
|
|
252
310
|
onClick={handleHideColumn}
|
|
253
311
|
sx={commonMenuItemStyles}
|
|
@@ -258,12 +316,15 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
|
|
|
258
316
|
</ListItemIcon>
|
|
259
317
|
{localization.hideColumn?.replace(
|
|
260
318
|
'{column}',
|
|
261
|
-
String(column.
|
|
319
|
+
String(column.header),
|
|
262
320
|
)}
|
|
263
321
|
</Box>
|
|
264
322
|
</MenuItem>,
|
|
265
323
|
<MenuItem
|
|
266
|
-
disabled={
|
|
324
|
+
disabled={
|
|
325
|
+
!Object.values(columnVisibility).filter((visible) => !visible)
|
|
326
|
+
.length
|
|
327
|
+
}
|
|
267
328
|
key={1}
|
|
268
329
|
onClick={handleShowAllColumns}
|
|
269
330
|
sx={commonMenuItemStyles}
|
|
@@ -274,25 +335,24 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
|
|
|
274
335
|
</ListItemIcon>
|
|
275
336
|
{localization.showAllColumns?.replace(
|
|
276
337
|
'{column}',
|
|
277
|
-
String(column.
|
|
338
|
+
String(column.header),
|
|
278
339
|
)}
|
|
279
340
|
</Box>
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
</IconButton>
|
|
289
|
-
)}
|
|
341
|
+
<IconButton
|
|
342
|
+
onClick={handleOpenShowHideColumnsMenu}
|
|
343
|
+
onMouseEnter={handleOpenShowHideColumnsMenu}
|
|
344
|
+
size="small"
|
|
345
|
+
sx={{ p: 0 }}
|
|
346
|
+
>
|
|
347
|
+
<ArrowRightIcon />
|
|
348
|
+
</IconButton>
|
|
290
349
|
</MenuItem>,
|
|
291
350
|
<MRT_ShowHideColumnsMenu
|
|
292
351
|
anchorEl={showHideColumnsMenuAnchorEl}
|
|
293
352
|
isSubMenu
|
|
294
353
|
key={2}
|
|
295
354
|
setAnchorEl={setShowHideColumnsMenuAnchorEl}
|
|
355
|
+
tableInstance={tableInstance}
|
|
296
356
|
/>,
|
|
297
357
|
]}
|
|
298
358
|
</Menu>
|