material-react-table 0.7.0-alpha.1 → 0.7.0-alpha.12
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 -21
- package/dist/MaterialReactTable.d.ts +236 -75
- package/dist/buttons/MRT_CopyButton.d.ts +1 -2
- package/dist/buttons/{MRT_ToggleSearchButton.d.ts → MRT_ToggleGlobalFilterButton.d.ts} +1 -1
- package/dist/localization.d.ts +1 -0
- package/dist/material-react-table.cjs.development.js +399 -1011
- 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 +400 -1012
- package/dist/material-react-table.esm.js.map +1 -1
- package/dist/utils.d.ts +1 -1
- package/package.json +7 -7
- package/src/MaterialReactTable.tsx +436 -143
- package/src/body/MRT_TableBody.tsx +1 -1
- package/src/body/MRT_TableBodyCell.tsx +11 -8
- package/src/body/MRT_TableBodyRow.tsx +2 -2
- package/src/body/MRT_TableDetailPanel.tsx +6 -4
- package/src/buttons/MRT_CopyButton.tsx +3 -4
- package/src/buttons/MRT_EditActionButtons.tsx +6 -4
- package/src/buttons/MRT_ExpandButton.tsx +1 -1
- package/src/buttons/MRT_FullScreenToggleButton.tsx +13 -3
- package/src/buttons/MRT_ToggleColumnActionMenuButton.tsx +5 -2
- package/src/buttons/MRT_ToggleDensePaddingButton.tsx +13 -3
- package/src/buttons/MRT_ToggleFiltersButton.tsx +13 -3
- package/src/buttons/MRT_ToggleGlobalFilterButton.tsx +57 -0
- package/src/buttons/MRT_ToggleRowActionMenuButton.tsx +7 -7
- package/src/footer/MRT_TableFooter.tsx +1 -1
- package/src/footer/MRT_TableFooterCell.tsx +2 -2
- package/src/footer/MRT_TableFooterRow.tsx +1 -1
- package/src/head/MRT_TableHead.tsx +1 -1
- package/src/head/MRT_TableHeadCell.tsx +23 -30
- package/src/head/MRT_TableHeadRow.tsx +1 -1
- package/src/inputs/MRT_EditCellTextField.tsx +27 -14
- package/src/inputs/MRT_FilterTextField.tsx +3 -3
- package/src/inputs/MRT_SearchTextField.tsx +10 -5
- package/src/inputs/MRT_SelectCheckbox.tsx +9 -7
- package/src/localization.ts +2 -1
- package/src/menus/MRT_ColumnActionMenu.tsx +4 -4
- package/src/menus/MRT_FilterTypeMenu.tsx +3 -6
- package/src/menus/MRT_RowActionMenu.tsx +7 -5
- package/src/menus/MRT_ShowHideColumnsMenuItems.tsx +5 -6
- package/src/table/MRT_Table.tsx +1 -1
- package/src/table/MRT_TableContainer.tsx +20 -24
- package/src/table/MRT_TablePaper.tsx +9 -5
- package/src/table/MRT_TableRoot.tsx +44 -40
- package/src/toolbar/MRT_LinearProgressBar.tsx +1 -1
- package/src/toolbar/MRT_TablePagination.tsx +6 -2
- package/src/toolbar/MRT_ToolbarAlertBanner.tsx +2 -1
- package/src/toolbar/MRT_ToolbarBottom.tsx +1 -1
- package/src/toolbar/MRT_ToolbarInternalButtons.tsx +12 -10
- package/src/toolbar/MRT_ToolbarTop.tsx +2 -2
- package/src/buttons/MRT_ToggleSearchButton.tsx +0 -46
|
@@ -32,8 +32,8 @@ export const MRT_FilterTextField: FC<Props> = ({ header, tableInstance }) => {
|
|
|
32
32
|
idPrefix,
|
|
33
33
|
localization,
|
|
34
34
|
muiTableHeadCellFilterTextFieldProps,
|
|
35
|
-
setCurrentFilterTypes,
|
|
36
35
|
},
|
|
36
|
+
setCurrentFilterTypes,
|
|
37
37
|
} = tableInstance;
|
|
38
38
|
|
|
39
39
|
const { column } = header;
|
|
@@ -44,12 +44,12 @@ export const MRT_FilterTextField: FC<Props> = ({ header, tableInstance }) => {
|
|
|
44
44
|
|
|
45
45
|
const mTableHeadCellFilterTextFieldProps =
|
|
46
46
|
muiTableHeadCellFilterTextFieldProps instanceof Function
|
|
47
|
-
? muiTableHeadCellFilterTextFieldProps(column)
|
|
47
|
+
? muiTableHeadCellFilterTextFieldProps({ column, tableInstance })
|
|
48
48
|
: muiTableHeadCellFilterTextFieldProps;
|
|
49
49
|
|
|
50
50
|
const mcTableHeadCellFilterTextFieldProps =
|
|
51
51
|
column.muiTableHeadCellFilterTextFieldProps instanceof Function
|
|
52
|
-
? column.muiTableHeadCellFilterTextFieldProps(column)
|
|
52
|
+
? column.muiTableHeadCellFilterTextFieldProps({ column, tableInstance })
|
|
53
53
|
: column.muiTableHeadCellFilterTextFieldProps;
|
|
54
54
|
|
|
55
55
|
const textFieldProps = {
|
|
@@ -33,7 +33,7 @@ export const MRT_SearchTextField: FC<Props> = ({ tableInstance }) => {
|
|
|
33
33
|
},
|
|
34
34
|
} = tableInstance;
|
|
35
35
|
|
|
36
|
-
const { globalFilter,
|
|
36
|
+
const { globalFilter, showGlobalFilter } = getState();
|
|
37
37
|
|
|
38
38
|
const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);
|
|
39
39
|
const [searchValue, setSearchValue] = useState(globalFilter ?? '');
|
|
@@ -41,7 +41,7 @@ export const MRT_SearchTextField: FC<Props> = ({ tableInstance }) => {
|
|
|
41
41
|
const handleChange = useCallback(
|
|
42
42
|
debounce((event: ChangeEvent<HTMLInputElement>) => {
|
|
43
43
|
setGlobalFilter(event.target.value ?? undefined);
|
|
44
|
-
onGlobalFilterChange?.(event);
|
|
44
|
+
onGlobalFilterChange?.({ event, tableInstance });
|
|
45
45
|
}, 200),
|
|
46
46
|
[],
|
|
47
47
|
);
|
|
@@ -55,8 +55,13 @@ export const MRT_SearchTextField: FC<Props> = ({ tableInstance }) => {
|
|
|
55
55
|
setGlobalFilter(undefined);
|
|
56
56
|
};
|
|
57
57
|
|
|
58
|
+
const textFieldProps =
|
|
59
|
+
muiSearchTextFieldProps instanceof Function
|
|
60
|
+
? muiSearchTextFieldProps({ tableInstance })
|
|
61
|
+
: muiSearchTextFieldProps;
|
|
62
|
+
|
|
58
63
|
return (
|
|
59
|
-
<Collapse in={
|
|
64
|
+
<Collapse in={showGlobalFilter} orientation="horizontal">
|
|
60
65
|
<TextField
|
|
61
66
|
id={`mrt-${idPrefix}-search-text-field`}
|
|
62
67
|
placeholder={localization.search}
|
|
@@ -97,8 +102,8 @@ export const MRT_SearchTextField: FC<Props> = ({ tableInstance }) => {
|
|
|
97
102
|
</InputAdornment>
|
|
98
103
|
),
|
|
99
104
|
}}
|
|
100
|
-
{...
|
|
101
|
-
sx={{ justifySelf: 'end', ...
|
|
105
|
+
{...textFieldProps}
|
|
106
|
+
sx={{ justifySelf: 'end', ...textFieldProps?.sx }}
|
|
102
107
|
/>
|
|
103
108
|
<MRT_FilterTypeMenu
|
|
104
109
|
anchorEl={anchorEl}
|
|
@@ -32,27 +32,29 @@ export const MRT_SelectCheckbox: FC<Props> = ({
|
|
|
32
32
|
const handleSelectChange = (event: ChangeEvent<HTMLInputElement>) => {
|
|
33
33
|
if (selectAll) {
|
|
34
34
|
getToggleAllRowsSelectedProps?.()?.onChange?.(event as any);
|
|
35
|
-
onSelectAllChange?.(
|
|
35
|
+
onSelectAllChange?.({
|
|
36
36
|
event,
|
|
37
|
-
event.target.checked ? getRowModel().flatRows : [],
|
|
38
|
-
|
|
37
|
+
selectedRows: event.target.checked ? getRowModel().flatRows : [],
|
|
38
|
+
tableInstance,
|
|
39
|
+
});
|
|
39
40
|
} else if (row) {
|
|
40
41
|
row?.getToggleSelectedProps()?.onChange?.(event as any);
|
|
41
|
-
onSelectChange?.(
|
|
42
|
+
onSelectChange?.({
|
|
42
43
|
event,
|
|
43
44
|
row,
|
|
44
|
-
event.target.checked
|
|
45
|
+
selectedRows: event.target.checked
|
|
45
46
|
? [...getSelectedRowModel().flatRows, row]
|
|
46
47
|
: getSelectedRowModel().flatRows.filter(
|
|
47
48
|
(selectedRow) => selectedRow.id !== row.id,
|
|
48
49
|
),
|
|
49
|
-
|
|
50
|
+
tableInstance,
|
|
51
|
+
});
|
|
50
52
|
}
|
|
51
53
|
};
|
|
52
54
|
|
|
53
55
|
const mTableBodyRowSelectCheckboxProps =
|
|
54
56
|
muiSelectCheckboxProps instanceof Function
|
|
55
|
-
? muiSelectCheckboxProps(selectAll, row, tableInstance)
|
|
57
|
+
? muiSelectCheckboxProps({ isSelectAll: !!selectAll, row, tableInstance })
|
|
56
58
|
: muiSelectCheckboxProps;
|
|
57
59
|
|
|
58
60
|
const rtSelectCheckboxProps = selectAll
|
package/src/localization.ts
CHANGED
|
@@ -33,6 +33,7 @@ export interface MRT_Localization {
|
|
|
33
33
|
pinToLeft: string;
|
|
34
34
|
pinToRight: string;
|
|
35
35
|
rowActions: string;
|
|
36
|
+
rowNumber: string;
|
|
36
37
|
rowNumbers: string;
|
|
37
38
|
save: string;
|
|
38
39
|
search: string;
|
|
@@ -89,12 +90,12 @@ export const MRT_DefaultLocalization_EN: MRT_Localization = {
|
|
|
89
90
|
pinToLeft: 'Pin to left',
|
|
90
91
|
pinToRight: 'Pin to right',
|
|
91
92
|
rowActions: 'Row Actions',
|
|
93
|
+
rowNumber: '#',
|
|
92
94
|
rowNumbers: 'Row Numbers',
|
|
93
95
|
save: 'Save',
|
|
94
96
|
search: 'Search',
|
|
95
97
|
selectedCountOfRowCountRowsSelected:
|
|
96
98
|
'{selectedCount} of {rowCount} row(s) selected',
|
|
97
|
-
|
|
98
99
|
select: 'Select',
|
|
99
100
|
showAll: 'Show all',
|
|
100
101
|
showAllColumns: 'Show all columns',
|
|
@@ -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 } =
|
|
@@ -25,7 +25,7 @@ export const MRT_RowActionMenu: FC<Props> = ({
|
|
|
25
25
|
getState,
|
|
26
26
|
options: {
|
|
27
27
|
icons: { EditIcon },
|
|
28
|
-
|
|
28
|
+
enableEditing,
|
|
29
29
|
localization,
|
|
30
30
|
renderRowActionMenuItems,
|
|
31
31
|
},
|
|
@@ -42,7 +42,7 @@ export const MRT_RowActionMenu: FC<Props> = ({
|
|
|
42
42
|
dense: isDensePadding,
|
|
43
43
|
}}
|
|
44
44
|
>
|
|
45
|
-
{
|
|
45
|
+
{enableEditing && (
|
|
46
46
|
<MenuItem onClick={handleEdit} sx={commonMenuItemStyles}>
|
|
47
47
|
<Box sx={commonListItemStyles}>
|
|
48
48
|
<ListItemIcon>
|
|
@@ -52,9 +52,11 @@ export const MRT_RowActionMenu: FC<Props> = ({
|
|
|
52
52
|
</Box>
|
|
53
53
|
</MenuItem>
|
|
54
54
|
)}
|
|
55
|
-
{renderRowActionMenuItems?.(
|
|
56
|
-
|
|
57
|
-
|
|
55
|
+
{renderRowActionMenuItems?.({
|
|
56
|
+
row,
|
|
57
|
+
tableInstance,
|
|
58
|
+
closeMenu: () => setAnchorEl(null),
|
|
59
|
+
})}
|
|
58
60
|
</Menu>
|
|
59
61
|
);
|
|
60
62
|
};
|
|
@@ -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,12 +34,11 @@ export const MRT_ShowHideColumnsMenuItems: FC<Props> = ({
|
|
|
34
34
|
} else {
|
|
35
35
|
column.toggleVisibility();
|
|
36
36
|
}
|
|
37
|
-
|
|
37
|
+
onToggleColumnVisibility?.({
|
|
38
38
|
column,
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
);
|
|
39
|
+
columnVisibility,
|
|
40
|
+
tableInstance,
|
|
41
|
+
});
|
|
43
42
|
};
|
|
44
43
|
|
|
45
44
|
return (
|
package/src/table/MRT_Table.tsx
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import React, { FC,
|
|
2
|
-
import { alpha, Box,
|
|
3
|
-
import {
|
|
1
|
+
import React, { FC, useEffect, useState } from 'react';
|
|
2
|
+
import { alpha, Box, TableContainer, Theme } from '@mui/material';
|
|
3
|
+
import { SystemStyleObject } from '@mui/material/node_modules/@mui/system';
|
|
4
4
|
import { MRT_TableInstance } from '..';
|
|
5
|
+
import { MRT_Table } from './MRT_Table';
|
|
5
6
|
|
|
6
7
|
const commonBoxStyles = ({
|
|
7
8
|
pinned,
|
|
@@ -11,18 +12,17 @@ const commonBoxStyles = ({
|
|
|
11
12
|
pinned?: 'left' | 'right';
|
|
12
13
|
theme: Theme;
|
|
13
14
|
visible?: boolean;
|
|
14
|
-
}) =>
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
} as SxProps<Theme>);
|
|
15
|
+
}): SystemStyleObject<Theme> => ({
|
|
16
|
+
display: 'grid',
|
|
17
|
+
minWidth: visible ? '200px' : 0,
|
|
18
|
+
overflowX: 'auto',
|
|
19
|
+
boxShadow:
|
|
20
|
+
pinned === 'left'
|
|
21
|
+
? `0 1px 12px ${alpha(theme.palette.common.black, 0.5)}`
|
|
22
|
+
: pinned === 'right'
|
|
23
|
+
? `0 -1px 12px ${alpha(theme.palette.common.black, 0.5)}`
|
|
24
|
+
: 'none',
|
|
25
|
+
});
|
|
26
26
|
|
|
27
27
|
interface Props {
|
|
28
28
|
tableInstance: MRT_TableInstance;
|
|
@@ -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,
|
|
@@ -49,10 +49,10 @@ export const MRT_TableContainer: FC<Props> = ({ tableInstance }) => {
|
|
|
49
49
|
|
|
50
50
|
const tableContainerProps =
|
|
51
51
|
muiTableContainerProps instanceof Function
|
|
52
|
-
? muiTableContainerProps(tableInstance)
|
|
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',
|
|
@@ -93,7 +93,6 @@ export const MRT_TableContainer: FC<Props> = ({ tableInstance }) => {
|
|
|
93
93
|
}}
|
|
94
94
|
>
|
|
95
95
|
<Box
|
|
96
|
-
// @ts-ignore
|
|
97
96
|
sx={(theme: Theme) =>
|
|
98
97
|
commonBoxStyles({
|
|
99
98
|
pinned: 'left',
|
|
@@ -104,13 +103,10 @@ export const MRT_TableContainer: FC<Props> = ({ tableInstance }) => {
|
|
|
104
103
|
>
|
|
105
104
|
<MRT_Table pinned="left" tableInstance={tableInstance} />
|
|
106
105
|
</Box>
|
|
107
|
-
<Box
|
|
108
|
-
sx={(theme: Theme) => commonBoxStyles({ theme })}
|
|
109
|
-
>
|
|
106
|
+
<Box sx={(theme: Theme) => commonBoxStyles({ theme })}>
|
|
110
107
|
<MRT_Table pinned="center" tableInstance={tableInstance} />
|
|
111
108
|
</Box>
|
|
112
109
|
<Box
|
|
113
|
-
// @ts-ignore
|
|
114
110
|
sx={(theme: Theme) =>
|
|
115
111
|
commonBoxStyles({
|
|
116
112
|
pinned: 'right',
|
|
@@ -29,7 +29,7 @@ export const MRT_TablePaper: FC<Props> = ({ tableInstance }) => {
|
|
|
29
29
|
|
|
30
30
|
const tablePaperProps =
|
|
31
31
|
muiTablePaperProps instanceof Function
|
|
32
|
-
? muiTablePaperProps(tableInstance)
|
|
32
|
+
? muiTablePaperProps({ tableInstance })
|
|
33
33
|
: muiTablePaperProps;
|
|
34
34
|
|
|
35
35
|
return (
|
|
@@ -37,18 +37,22 @@ export const MRT_TablePaper: FC<Props> = ({ tableInstance }) => {
|
|
|
37
37
|
elevation={2}
|
|
38
38
|
{...tablePaperProps}
|
|
39
39
|
sx={{
|
|
40
|
-
|
|
40
|
+
transition: 'all 0.2s ease-in-out',
|
|
41
|
+
...tablePaperProps?.sx,
|
|
42
|
+
}}
|
|
43
|
+
style={{
|
|
41
44
|
height: isFullScreen ? '100%' : undefined,
|
|
42
45
|
left: isFullScreen ? '0' : undefined,
|
|
43
|
-
|
|
46
|
+
margin: isFullScreen ? '0' : undefined,
|
|
47
|
+
maxHeight: isFullScreen ? '100%' : undefined,
|
|
48
|
+
maxWidth: isFullScreen ? '100%' : undefined,
|
|
44
49
|
overflowY: !isFullScreen ? 'hidden' : undefined,
|
|
45
50
|
position: isFullScreen ? 'fixed' : undefined,
|
|
46
51
|
right: isFullScreen ? '0' : undefined,
|
|
47
52
|
top: isFullScreen ? '0' : undefined,
|
|
48
|
-
transition: 'all 0.2s ease-in-out',
|
|
49
53
|
width: isFullScreen ? '100vw' : undefined,
|
|
50
54
|
zIndex: isFullScreen ? 1200 : 1,
|
|
51
|
-
|
|
55
|
+
bottom: isFullScreen ? '0' : undefined,
|
|
52
56
|
}}
|
|
53
57
|
>
|
|
54
58
|
{!hideToolbarTop && <MRT_ToolbarTop tableInstance={tableInstance} />}
|
|
@@ -52,10 +52,9 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
52
52
|
const [showFilters, setShowFilters] = useState(
|
|
53
53
|
props.initialState?.showFilters ?? false,
|
|
54
54
|
);
|
|
55
|
-
const [
|
|
56
|
-
props.initialState?.
|
|
55
|
+
const [showGlobalFilter, setShowGlobalFilter] = useState(
|
|
56
|
+
props.initialState?.showGlobalFilter ?? false,
|
|
57
57
|
);
|
|
58
|
-
|
|
59
58
|
const [pagination, setPagination] = useState<PaginationState>({
|
|
60
59
|
pageIndex: props.initialState?.pagination?.pageIndex ?? 0,
|
|
61
60
|
pageSize: props.initialState?.pagination?.pageSize ?? 10,
|
|
@@ -92,7 +91,7 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
92
91
|
const displayColumns = useMemo(
|
|
93
92
|
() =>
|
|
94
93
|
[
|
|
95
|
-
(props.enableRowActions || props.
|
|
94
|
+
(props.enableRowActions || props.enableEditing) &&
|
|
96
95
|
createDisplayColumn(table, {
|
|
97
96
|
Cell: ({ cell }) => (
|
|
98
97
|
<MRT_ToggleRowActionMenuButton
|
|
@@ -142,7 +141,7 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
142
141
|
props.enableRowNumbers &&
|
|
143
142
|
createDisplayColumn(table, {
|
|
144
143
|
Cell: ({ cell }) => cell.row.index + 1,
|
|
145
|
-
Header: () =>
|
|
144
|
+
Header: () => props.localization?.rowNumber,
|
|
146
145
|
header: props.localization?.rowNumbers,
|
|
147
146
|
id: 'mrt-row-numbers',
|
|
148
147
|
maxWidth: 40,
|
|
@@ -151,14 +150,16 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
151
150
|
}),
|
|
152
151
|
].filter(Boolean),
|
|
153
152
|
[
|
|
153
|
+
props.enableEditing,
|
|
154
154
|
props.enableExpandAll,
|
|
155
155
|
props.enableExpanded,
|
|
156
|
+
props.enableGrouping,
|
|
156
157
|
props.enableRowActions,
|
|
157
|
-
props.enableRowEditing,
|
|
158
158
|
props.enableRowNumbers,
|
|
159
159
|
props.enableRowSelection,
|
|
160
160
|
props.enableSelectAll,
|
|
161
161
|
props.localization,
|
|
162
|
+
table,
|
|
162
163
|
],
|
|
163
164
|
);
|
|
164
165
|
|
|
@@ -175,10 +176,10 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
175
176
|
[table, props.columns, currentFilterTypes],
|
|
176
177
|
);
|
|
177
178
|
|
|
178
|
-
const data = useMemo(
|
|
179
|
+
const data: D['Row'][] = useMemo(
|
|
179
180
|
() =>
|
|
180
181
|
props.isLoading && !props.data.length
|
|
181
|
-
? [...Array(10).fill(null)].map((
|
|
182
|
+
? [...Array(10).fill(null)].map(() =>
|
|
182
183
|
Object.assign(
|
|
183
184
|
{},
|
|
184
185
|
...getAllLeafColumnDefs(
|
|
@@ -193,44 +194,47 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
|
|
|
193
194
|
);
|
|
194
195
|
|
|
195
196
|
//@ts-ignore
|
|
196
|
-
const tableInstance: MRT_TableInstance<{}> =
|
|
197
|
-
...
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
197
|
+
const tableInstance: MRT_TableInstance<{}> = {
|
|
198
|
+
...useTable(table, {
|
|
199
|
+
...props,
|
|
200
|
+
columnFilterRowsFn: columnFilterRowsFn,
|
|
201
|
+
columns,
|
|
202
|
+
data,
|
|
203
|
+
expandRowsFn: expandRowsFn,
|
|
204
|
+
//@ts-ignore
|
|
205
|
+
filterTypes: defaultFilterFNs,
|
|
206
|
+
getSubRows: props.getSubRows ?? ((originalRow: D) => originalRow.subRows),
|
|
207
|
+
globalFilterRowsFn: globalFilterRowsFn,
|
|
208
|
+
globalFilterType: currentGlobalFilterType,
|
|
209
|
+
groupRowsFn: groupRowsFn,
|
|
210
|
+
idPrefix,
|
|
211
|
+
//@ts-ignore
|
|
212
|
+
initialState: props.initialState,
|
|
213
|
+
onPaginationChange: (updater: any) =>
|
|
214
|
+
setPagination((old) => functionalUpdate(updater, old)),
|
|
215
|
+
paginateRowsFn: paginateRowsFn,
|
|
216
|
+
sortRowsFn,
|
|
217
|
+
state: {
|
|
218
|
+
currentEditingRow,
|
|
219
|
+
currentFilterTypes,
|
|
220
|
+
currentGlobalFilterType,
|
|
221
|
+
isDensePadding,
|
|
222
|
+
isFullScreen,
|
|
223
|
+
//@ts-ignore
|
|
224
|
+
pagination,
|
|
225
|
+
showFilters,
|
|
226
|
+
showGlobalFilter,
|
|
227
|
+
...props.state,
|
|
228
|
+
},
|
|
229
|
+
}),
|
|
212
230
|
setCurrentEditingRow,
|
|
213
231
|
setCurrentFilterTypes,
|
|
214
232
|
setCurrentGlobalFilterType,
|
|
215
233
|
setIsDensePadding,
|
|
216
234
|
setIsFullScreen,
|
|
217
235
|
setShowFilters,
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
state: {
|
|
221
|
-
...props.initialState,
|
|
222
|
-
currentEditingRow,
|
|
223
|
-
currentFilterTypes,
|
|
224
|
-
currentGlobalFilterType,
|
|
225
|
-
isDensePadding,
|
|
226
|
-
isFullScreen,
|
|
227
|
-
//@ts-ignore
|
|
228
|
-
pagination,
|
|
229
|
-
showFilters,
|
|
230
|
-
showSearch,
|
|
231
|
-
...props.state,
|
|
232
|
-
},
|
|
233
|
-
});
|
|
236
|
+
setShowGlobalFilter,
|
|
237
|
+
};
|
|
234
238
|
|
|
235
239
|
return <MRT_TablePaper tableInstance={tableInstance} />;
|
|
236
240
|
};
|
|
@@ -13,7 +13,7 @@ export const MRT_LinearProgressBar: FC<Props> = ({ tableInstance }) => {
|
|
|
13
13
|
|
|
14
14
|
const linearProgressProps =
|
|
15
15
|
muiLinearProgressProps instanceof Function
|
|
16
|
-
? muiLinearProgressProps(tableInstance)
|
|
16
|
+
? muiLinearProgressProps({ tableInstance })
|
|
17
17
|
: muiLinearProgressProps;
|
|
18
18
|
|
|
19
19
|
return (
|
|
@@ -21,7 +21,7 @@ export const MRT_TablePagination: FC<Props> = ({ tableInstance }) => {
|
|
|
21
21
|
|
|
22
22
|
const tablePaginationProps =
|
|
23
23
|
muiTablePaginationProps instanceof Function
|
|
24
|
-
? muiTablePaginationProps(tableInstance)
|
|
24
|
+
? muiTablePaginationProps({ tableInstance })
|
|
25
25
|
: muiTablePaginationProps;
|
|
26
26
|
|
|
27
27
|
const handleChangeRowsPerPage = (event: ChangeEvent<HTMLInputElement>) => {
|
|
@@ -33,13 +33,17 @@ export const MRT_TablePagination: FC<Props> = ({ tableInstance }) => {
|
|
|
33
33
|
|
|
34
34
|
return (
|
|
35
35
|
<TablePagination
|
|
36
|
+
SelectProps={{
|
|
37
|
+
sx: { m: '0 1rem 0 1ch' },
|
|
38
|
+
MenuProps: { MenuListProps: { disablePadding: true } },
|
|
39
|
+
}}
|
|
36
40
|
component="div"
|
|
37
41
|
count={getPrePaginationRowModel().rows.length}
|
|
38
42
|
onPageChange={(_: any, newPage: number) => setPageIndex(newPage)}
|
|
39
43
|
onRowsPerPageChange={handleChangeRowsPerPage}
|
|
40
44
|
page={pageIndex}
|
|
41
45
|
rowsPerPage={pageSize}
|
|
42
|
-
|
|
46
|
+
rowsPerPageOptions={[5, 10, 15, 20, 25, 30, 50, 100]}
|
|
43
47
|
showFirstButton={showFirstLastPageButtons}
|
|
44
48
|
showLastButton={showFirstLastPageButtons}
|
|
45
49
|
{...tablePaginationProps}
|
|
@@ -27,7 +27,7 @@ export const MRT_ToolbarAlertBanner: FC<Props> = ({ tableInstance }) => {
|
|
|
27
27
|
|
|
28
28
|
const alertProps =
|
|
29
29
|
muiTableToolbarAlertBannerProps instanceof Function
|
|
30
|
-
? muiTableToolbarAlertBannerProps(tableInstance)
|
|
30
|
+
? muiTableToolbarAlertBannerProps({ tableInstance })
|
|
31
31
|
: muiTableToolbarAlertBannerProps;
|
|
32
32
|
|
|
33
33
|
const selectMessage =
|
|
@@ -96,6 +96,7 @@ export const MRT_ToolbarAlertBanner: FC<Props> = ({ tableInstance }) => {
|
|
|
96
96
|
>
|
|
97
97
|
<Box sx={{ p: '0.5rem 1rem' }}>
|
|
98
98
|
{selectMessage}
|
|
99
|
+
<br />
|
|
99
100
|
{groupedByMessage}
|
|
100
101
|
</Box>
|
|
101
102
|
</Alert>
|
|
@@ -29,7 +29,7 @@ export const MRT_ToolbarBottom: FC<Props> = ({ tableInstance }) => {
|
|
|
29
29
|
|
|
30
30
|
const toolbarProps =
|
|
31
31
|
muiTableToolbarBottomProps instanceof Function
|
|
32
|
-
? muiTableToolbarBottomProps(tableInstance)
|
|
32
|
+
? muiTableToolbarBottomProps({ tableInstance })
|
|
33
33
|
: muiTableToolbarBottomProps;
|
|
34
34
|
|
|
35
35
|
return (
|
|
@@ -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;
|
|
@@ -26,12 +27,13 @@ export const MRT_ToolbarInternalButtons: FC<Props> = ({ tableInstance }) => {
|
|
|
26
27
|
if (renderToolbarInternalActions) {
|
|
27
28
|
return (
|
|
28
29
|
<>
|
|
29
|
-
{renderToolbarInternalActions(
|
|
30
|
-
|
|
31
|
-
MRT_ToggleFiltersButton,
|
|
30
|
+
{renderToolbarInternalActions({
|
|
31
|
+
MRT_FullScreenToggleButton,
|
|
32
32
|
MRT_ShowHideColumnsButton,
|
|
33
33
|
MRT_ToggleDensePaddingButton,
|
|
34
|
-
|
|
34
|
+
MRT_ToggleFiltersButton,
|
|
35
|
+
MRT_ToggleGlobalFilterButton,
|
|
36
|
+
tableInstance,
|
|
35
37
|
})}
|
|
36
38
|
</>
|
|
37
39
|
);
|
|
@@ -46,10 +48,10 @@ export const MRT_ToolbarInternalButtons: FC<Props> = ({ tableInstance }) => {
|
|
|
46
48
|
p: '0 0.5rem',
|
|
47
49
|
}}
|
|
48
50
|
>
|
|
49
|
-
{enableGlobalFilter && (
|
|
50
|
-
<
|
|
51
|
+
{enableFilters && enableGlobalFilter && (
|
|
52
|
+
<MRT_ToggleGlobalFilterButton tableInstance={tableInstance} />
|
|
51
53
|
)}
|
|
52
|
-
{enableColumnFilters && (
|
|
54
|
+
{enableFilters && enableColumnFilters && (
|
|
53
55
|
<MRT_ToggleFiltersButton tableInstance={tableInstance} />
|
|
54
56
|
)}
|
|
55
57
|
{enableHiding && (
|
|
@@ -43,7 +43,7 @@ export const MRT_ToolbarTop: FC<Props> = ({ tableInstance }) => {
|
|
|
43
43
|
|
|
44
44
|
const toolbarProps =
|
|
45
45
|
muiTableToolbarTopProps instanceof Function
|
|
46
|
-
? muiTableToolbarTopProps(tableInstance)
|
|
46
|
+
? muiTableToolbarTopProps({ tableInstance })
|
|
47
47
|
: muiTableToolbarTopProps;
|
|
48
48
|
|
|
49
49
|
return (
|
|
@@ -70,7 +70,7 @@ export const MRT_ToolbarTop: FC<Props> = ({ tableInstance }) => {
|
|
|
70
70
|
justifyContent: 'space-between',
|
|
71
71
|
}}
|
|
72
72
|
>
|
|
73
|
-
{renderToolbarCustomActions?.(tableInstance) ?? <span />}
|
|
73
|
+
{renderToolbarCustomActions?.({ tableInstance }) ?? <span />}
|
|
74
74
|
<Box
|
|
75
75
|
sx={{
|
|
76
76
|
display: 'flex',
|