material-react-table 0.3.1 → 0.3.2
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 +32 -162
- package/dist/MaterialReactTable.d.ts +3 -1
- package/dist/body/MRT_TableBodyRow.d.ts +16 -1
- package/dist/head/MRT_TableHeadCell.d.ts +4 -1
- package/dist/inputs/MRT_EditCellTextfield.d.ts +7 -0
- package/dist/material-react-table.cjs.development.js +286 -157
- 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 +292 -163
- package/dist/material-react-table.esm.js.map +1 -1
- package/dist/useMaterialReactTable.d.ts +3 -3
- package/dist/utils/localization.d.ts +4 -3
- package/package.json +15 -14
- package/src/@types/faker.d.ts +4 -0
- package/src/@types/react-table-config.d.ts +153 -0
- package/src/MaterialReactTable.tsx +10 -4
- package/src/body/MRT_TableBody.tsx +2 -23
- package/src/body/MRT_TableBodyCell.tsx +27 -6
- package/src/body/MRT_TableBodyRow.tsx +15 -5
- package/src/body/MRT_TableDetailPanel.tsx +17 -6
- package/src/buttons/MRT_EditActionButtons.tsx +9 -5
- package/src/buttons/MRT_ExpandAllButton.tsx +12 -10
- package/src/buttons/MRT_ExpandButton.tsx +27 -24
- package/src/buttons/MRT_ToggleRowActionMenuButton.tsx +2 -2
- package/src/footer/MRT_TableFooter.tsx +2 -2
- package/src/footer/MRT_TableFooterCell.tsx +22 -6
- package/src/footer/MRT_TableFooterRow.tsx +2 -2
- package/src/head/MRT_TableHead.tsx +2 -2
- package/src/head/MRT_TableHeadCell.tsx +24 -7
- package/src/head/MRT_TableHeadRow.tsx +3 -2
- package/src/inputs/MRT_EditCellTextfield.tsx +57 -0
- package/src/inputs/MRT_FilterTextField.tsx +0 -1
- package/src/inputs/MRT_SelectAllCheckbox.tsx +11 -11
- package/src/inputs/MRT_SelectCheckbox.tsx +9 -8
- package/src/menus/MRT_RowActionMenu.tsx +2 -2
- package/src/table/MRT_TableContainer.tsx +31 -3
- package/src/table/MRT_TableSpacerCell.tsx +3 -3
- package/src/toolbar/MRT_ToolbarBottom.tsx +2 -17
- package/src/toolbar/MRT_ToolbarTop.tsx +4 -17
- package/src/useMaterialReactTable.tsx +6 -7
- package/src/utils/localization.ts +8 -6
|
@@ -10,9 +10,9 @@ export const MRT_TableFooter: FC<Props> = () => {
|
|
|
10
10
|
|
|
11
11
|
return (
|
|
12
12
|
<TableFooter {...muiTableFooterProps}>
|
|
13
|
-
{tableInstance.footerGroups.map((footerGroup
|
|
13
|
+
{tableInstance.footerGroups.map((footerGroup) => (
|
|
14
14
|
<MRT_TableFooterRow
|
|
15
|
-
key={
|
|
15
|
+
key={footerGroup.getFooterGroupProps().key}
|
|
16
16
|
footerGroup={footerGroup}
|
|
17
17
|
/>
|
|
18
18
|
))}
|
|
@@ -3,16 +3,25 @@ import { styled, TableCell as MuiTableCell } from '@mui/material';
|
|
|
3
3
|
import { HeaderGroup } from 'react-table';
|
|
4
4
|
import { useMaterialReactTable } from '../useMaterialReactTable';
|
|
5
5
|
|
|
6
|
-
const TableCell = styled(MuiTableCell
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
const TableCell = styled(MuiTableCell, {
|
|
7
|
+
shouldForwardProp: (prop) =>
|
|
8
|
+
prop !== 'densePadding' && prop !== 'enableColumnResizing',
|
|
9
|
+
})<{ densePadding?: boolean; enableColumnResizing?: boolean }>(
|
|
10
|
+
({ densePadding, enableColumnResizing }) => ({
|
|
11
|
+
fontWeight: 'bold',
|
|
12
|
+
verticalAlign: 'text-top',
|
|
13
|
+
padding: densePadding ? '0.5rem' : '1rem',
|
|
14
|
+
transition: `all ${enableColumnResizing ? '10ms' : '0.2s'} ease-in-out`,
|
|
15
|
+
}),
|
|
16
|
+
);
|
|
9
17
|
|
|
10
18
|
interface Props {
|
|
11
19
|
column: HeaderGroup;
|
|
12
20
|
}
|
|
13
21
|
|
|
14
22
|
export const MRT_TableFooterCell: FC<Props> = ({ column }) => {
|
|
15
|
-
const { muiTableFooterCellProps, densePadding } =
|
|
23
|
+
const { muiTableFooterCellProps, densePadding, enableColumnResizing } =
|
|
24
|
+
useMaterialReactTable();
|
|
16
25
|
|
|
17
26
|
const isParentHeader = (column?.columns?.length ?? 0) > 0;
|
|
18
27
|
|
|
@@ -21,20 +30,27 @@ export const MRT_TableFooterCell: FC<Props> = ({ column }) => {
|
|
|
21
30
|
? muiTableFooterCellProps(column)
|
|
22
31
|
: muiTableFooterCellProps;
|
|
23
32
|
|
|
33
|
+
const mcTableFooterCellProps =
|
|
34
|
+
column.muiTableFooterCellProps instanceof Function
|
|
35
|
+
? column.muiTableFooterCellProps(column)
|
|
36
|
+
: column.muiTableFooterCellProps;
|
|
37
|
+
|
|
24
38
|
const tableCellProps = {
|
|
25
39
|
...mTableFooterCellProps,
|
|
40
|
+
...mcTableFooterCellProps,
|
|
26
41
|
...column.getFooterProps(),
|
|
27
42
|
style: {
|
|
28
|
-
padding: densePadding ? '0.5rem' : '1rem',
|
|
29
|
-
transition: 'all 0.2s ease-in-out',
|
|
30
43
|
...column.getFooterProps().style,
|
|
31
44
|
...(mTableFooterCellProps?.style ?? {}),
|
|
45
|
+
...(mcTableFooterCellProps?.style ?? {}),
|
|
32
46
|
},
|
|
33
47
|
};
|
|
34
48
|
|
|
35
49
|
return (
|
|
36
50
|
<TableCell
|
|
37
51
|
align={isParentHeader ? 'center' : 'left'}
|
|
52
|
+
densePadding={densePadding}
|
|
53
|
+
enableColumnResizing={enableColumnResizing}
|
|
38
54
|
variant="head"
|
|
39
55
|
{...tableCellProps}
|
|
40
56
|
>
|
|
@@ -51,8 +51,8 @@ export const MRT_TableFooterRow: FC<Props> = ({ footerGroup }) => {
|
|
|
51
51
|
/>
|
|
52
52
|
)}
|
|
53
53
|
{enableSelection && <MRT_TableSpacerCell width="1rem" />}
|
|
54
|
-
{footerGroup.headers.map((column,
|
|
55
|
-
<MRT_TableFooterCell key={
|
|
54
|
+
{footerGroup.headers.map((column,) => (
|
|
55
|
+
<MRT_TableFooterCell key={column.getFooterProps().key} column={column} />
|
|
56
56
|
))}
|
|
57
57
|
{enableRowActions && positionActionsColumn === 'last' && (
|
|
58
58
|
<MRT_TableSpacerCell />
|
|
@@ -15,9 +15,9 @@ export const MRT_TableHead: FC<Props> = () => {
|
|
|
15
15
|
|
|
16
16
|
return (
|
|
17
17
|
<TableHead {...tableHeadProps}>
|
|
18
|
-
{tableInstance.headerGroups.map((headerGroup
|
|
18
|
+
{tableInstance.headerGroups.map((headerGroup) => (
|
|
19
19
|
<MRT_TableHeadRow
|
|
20
|
-
key={
|
|
20
|
+
key={headerGroup.getHeaderGroupProps().key}
|
|
21
21
|
headerGroup={headerGroup}
|
|
22
22
|
/>
|
|
23
23
|
))}
|
|
@@ -11,10 +11,17 @@ import { useMaterialReactTable } from '../useMaterialReactTable';
|
|
|
11
11
|
import { MRT_FilterTextfield } from '../inputs/MRT_FilterTextField';
|
|
12
12
|
import { MRT_ToggleColumnActionMenuButton } from '../buttons/MRT_ToggleColumnActionMenuButton';
|
|
13
13
|
|
|
14
|
-
export const StyledTableHeadCell = styled(MuiTableCell
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
});
|
|
14
|
+
export const StyledTableHeadCell = styled(MuiTableCell, {
|
|
15
|
+
shouldForwardProp: (prop) =>
|
|
16
|
+
prop !== 'densePadding' && prop !== 'enableColumnResizing',
|
|
17
|
+
})<{ densePadding?: boolean; enableColumnResizing?: boolean }>(
|
|
18
|
+
({ densePadding, enableColumnResizing }) => ({
|
|
19
|
+
fontWeight: 'bold',
|
|
20
|
+
verticalAlign: 'text-top',
|
|
21
|
+
padding: densePadding ? '0.5rem' : '1rem',
|
|
22
|
+
transition: `all ${enableColumnResizing ? '10ms' : '0.2s'} ease-in-out`,
|
|
23
|
+
}),
|
|
24
|
+
);
|
|
18
25
|
|
|
19
26
|
const TableCellContents = styled('div')({
|
|
20
27
|
display: 'grid',
|
|
@@ -61,19 +68,29 @@ export const MRT_TableHeadCell: FC<Props> = ({ column }) => {
|
|
|
61
68
|
? muiTableHeadCellProps(column)
|
|
62
69
|
: muiTableHeadCellProps;
|
|
63
70
|
|
|
71
|
+
const mcTableHeadCellProps =
|
|
72
|
+
column.muiTableHeadCellProps instanceof Function
|
|
73
|
+
? column.muiTableHeadCellProps(column)
|
|
74
|
+
: column.muiTableHeadCellProps;
|
|
75
|
+
|
|
64
76
|
const tableCellProps = {
|
|
65
77
|
...mTableHeadCellProps,
|
|
78
|
+
...mcTableHeadCellProps,
|
|
66
79
|
...column.getHeaderProps(),
|
|
67
80
|
style: {
|
|
68
|
-
padding: densePadding ? '0.5rem' : '1rem',
|
|
69
|
-
transition: `all ${enableColumnResizing ? '10ms' : '0.2s'} ease-in-out`,
|
|
70
81
|
...column.getHeaderProps().style,
|
|
71
82
|
...(mTableHeadCellProps?.style ?? {}),
|
|
83
|
+
...(mcTableHeadCellProps?.style ?? {}),
|
|
72
84
|
},
|
|
73
85
|
};
|
|
74
86
|
|
|
75
87
|
return (
|
|
76
|
-
<StyledTableHeadCell
|
|
88
|
+
<StyledTableHeadCell
|
|
89
|
+
align={isParentHeader ? 'center' : 'left'}
|
|
90
|
+
densePadding={densePadding}
|
|
91
|
+
enableColumnResizing={enableColumnResizing}
|
|
92
|
+
{...tableCellProps}
|
|
93
|
+
>
|
|
77
94
|
<TableCellContents>
|
|
78
95
|
<TableCellText
|
|
79
96
|
style={{ justifyContent: isParentHeader ? 'center' : undefined }}
|
|
@@ -14,6 +14,7 @@ interface Props {
|
|
|
14
14
|
export const MRT_TableHeadRow: FC<Props> = ({ headerGroup }) => {
|
|
15
15
|
const {
|
|
16
16
|
anyRowsCanExpand,
|
|
17
|
+
densePadding,
|
|
17
18
|
disableExpandAll,
|
|
18
19
|
enableRowActions,
|
|
19
20
|
enableSelection,
|
|
@@ -72,7 +73,7 @@ export const MRT_TableHeadRow: FC<Props> = ({ headerGroup }) => {
|
|
|
72
73
|
<MRT_TableSpacerCell width="1rem" />
|
|
73
74
|
)
|
|
74
75
|
) : null}
|
|
75
|
-
{headerGroup.headers.map((column) => (
|
|
76
|
+
{headerGroup.headers.map((column: HeaderGroup) => (
|
|
76
77
|
<MRT_TableHeadCell key={column.getHeaderProps().key} column={column} />
|
|
77
78
|
))}
|
|
78
79
|
{enableRowActions &&
|
|
@@ -80,7 +81,7 @@ export const MRT_TableHeadRow: FC<Props> = ({ headerGroup }) => {
|
|
|
80
81
|
(isParentHeader ? (
|
|
81
82
|
<MRT_TableSpacerCell />
|
|
82
83
|
) : (
|
|
83
|
-
<StyledTableHeadCell>
|
|
84
|
+
<StyledTableHeadCell densePadding={densePadding}>
|
|
84
85
|
{localization?.actionsHeadColumnTitle}
|
|
85
86
|
</StyledTableHeadCell>
|
|
86
87
|
))}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { TextField } from '@mui/material';
|
|
2
|
+
import React, { ChangeEvent, FC } from 'react';
|
|
3
|
+
import { Cell } from 'react-table';
|
|
4
|
+
import { useMaterialReactTable } from '../useMaterialReactTable';
|
|
5
|
+
|
|
6
|
+
interface Props {
|
|
7
|
+
cell: Cell;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export const MRT_EditCellTextfield: FC<Props> = ({ cell }) => {
|
|
11
|
+
const {
|
|
12
|
+
localization,
|
|
13
|
+
currentEditingRow,
|
|
14
|
+
setCurrentEditingRow,
|
|
15
|
+
muiTableBodyCellEditTextFieldProps,
|
|
16
|
+
} = useMaterialReactTable();
|
|
17
|
+
|
|
18
|
+
const handleChange = (event: ChangeEvent<HTMLInputElement>) => {
|
|
19
|
+
if (currentEditingRow) {
|
|
20
|
+
setCurrentEditingRow({
|
|
21
|
+
...currentEditingRow,
|
|
22
|
+
values: { ...cell.row.values, [cell.column.id]: event.target.value },
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
const textFieldProps = {
|
|
28
|
+
...muiTableBodyCellEditTextFieldProps,
|
|
29
|
+
...cell.column.muiTableBodyCellEditTextFieldProps,
|
|
30
|
+
style: {
|
|
31
|
+
//@ts-ignore
|
|
32
|
+
...muiTableBodyCellEditTextFieldProps?.style,
|
|
33
|
+
//@ts-ignore
|
|
34
|
+
...cell.column.muiTableBodyCellEditTextFieldProps?.style,
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
if (cell.column.editable && cell.column.Edit) {
|
|
39
|
+
return (
|
|
40
|
+
<>
|
|
41
|
+
{cell.column.Edit({ ...textFieldProps, cell, onChange: handleChange })}
|
|
42
|
+
</>
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return (
|
|
47
|
+
<TextField
|
|
48
|
+
margin="dense"
|
|
49
|
+
placeholder={localization?.filterTextFieldPlaceholder}
|
|
50
|
+
onChange={handleChange}
|
|
51
|
+
onClick={(e) => e.stopPropagation()}
|
|
52
|
+
value={currentEditingRow?.values?.[cell.column.id]}
|
|
53
|
+
variant="standard"
|
|
54
|
+
{...textFieldProps}
|
|
55
|
+
/>
|
|
56
|
+
);
|
|
57
|
+
};
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { Checkbox, TableCell } from '@mui/material';
|
|
2
|
+
import { Checkbox, TableCell as MuiTableCell, styled } from '@mui/material';
|
|
3
3
|
import { useMaterialReactTable } from '../useMaterialReactTable';
|
|
4
4
|
|
|
5
|
+
const TableCell = styled(MuiTableCell, {
|
|
6
|
+
shouldForwardProp: (prop) => prop !== 'densePadding',
|
|
7
|
+
})<{ densePadding?: boolean }>(({ densePadding }) => ({
|
|
8
|
+
padding: densePadding ? '0' : '0.6rem',
|
|
9
|
+
transition: 'all 0.2s ease-in-out',
|
|
10
|
+
}));
|
|
11
|
+
|
|
5
12
|
export const MRT_SelectAllCheckbox = () => {
|
|
6
|
-
const { tableInstance, disableSelectAll, densePadding } =
|
|
13
|
+
const { tableInstance, disableSelectAll, densePadding, localization } =
|
|
7
14
|
useMaterialReactTable();
|
|
8
15
|
|
|
9
16
|
return (
|
|
10
|
-
<TableCell
|
|
11
|
-
style={{
|
|
12
|
-
width: '2rem',
|
|
13
|
-
padding: densePadding ? '0' : '0.6rem',
|
|
14
|
-
transition: 'all 0.2s ease-in-out',
|
|
15
|
-
}}
|
|
16
|
-
variant="head"
|
|
17
|
-
>
|
|
17
|
+
<TableCell densePadding={densePadding} variant="head">
|
|
18
18
|
{!disableSelectAll ? (
|
|
19
19
|
<Checkbox
|
|
20
|
-
aria-label=
|
|
20
|
+
aria-label={localization?.selectAllCheckboxTitle}
|
|
21
21
|
{...tableInstance.getToggleAllPageRowsSelectedProps()}
|
|
22
22
|
/>
|
|
23
23
|
) : null}
|
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
import React, { ChangeEvent, FC } from 'react';
|
|
2
|
-
import { Checkbox, TableCell } from '@mui/material';
|
|
2
|
+
import { Checkbox, TableCell as MuiTableCell, styled } from '@mui/material';
|
|
3
3
|
import { Row } from 'react-table';
|
|
4
4
|
import { useMaterialReactTable } from '../useMaterialReactTable';
|
|
5
5
|
|
|
6
|
+
const TableCell = styled(MuiTableCell, {
|
|
7
|
+
shouldForwardProp: (prop) => prop !== 'densePadding',
|
|
8
|
+
})<{ densePadding?: boolean }>(({ densePadding }) => ({
|
|
9
|
+
padding: densePadding ? '0' : '0.6rem',
|
|
10
|
+
transition: 'all 0.2s ease-in-out',
|
|
11
|
+
}));
|
|
12
|
+
|
|
6
13
|
interface Props {
|
|
7
14
|
row: Row;
|
|
8
15
|
}
|
|
@@ -17,13 +24,7 @@ export const MRT_SelectCheckbox: FC<Props> = ({ row }) => {
|
|
|
17
24
|
};
|
|
18
25
|
|
|
19
26
|
return (
|
|
20
|
-
<TableCell
|
|
21
|
-
style={{
|
|
22
|
-
width: '2rem',
|
|
23
|
-
padding: densePadding ? '0' : '0.6rem',
|
|
24
|
-
transition: 'all 0.2s ease-in-out',
|
|
25
|
-
}}
|
|
26
|
-
>
|
|
27
|
+
<TableCell densePadding={densePadding}>
|
|
27
28
|
<Checkbox
|
|
28
29
|
{...row.getToggleRowSelectedProps()}
|
|
29
30
|
onChange={onSelectChange}
|
|
@@ -24,12 +24,12 @@ export const MRT_RowActionMenu: FC<Props> = ({
|
|
|
24
24
|
enableRowEditing,
|
|
25
25
|
localization,
|
|
26
26
|
renderRowActionMenuItems,
|
|
27
|
-
|
|
27
|
+
setCurrentEditingRow,
|
|
28
28
|
tableInstance,
|
|
29
29
|
} = useMaterialReactTable();
|
|
30
30
|
|
|
31
31
|
const handleEdit = () => {
|
|
32
|
-
|
|
32
|
+
setCurrentEditingRow({ ...row });
|
|
33
33
|
setAnchorEl(null);
|
|
34
34
|
};
|
|
35
35
|
|
|
@@ -1,20 +1,48 @@
|
|
|
1
1
|
import React, { FC } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
alpha,
|
|
4
|
+
CircularProgress,
|
|
5
|
+
LinearProgress,
|
|
6
|
+
Paper,
|
|
7
|
+
styled,
|
|
8
|
+
TableContainer,
|
|
9
|
+
} from '@mui/material';
|
|
3
10
|
import { useMaterialReactTable } from '../useMaterialReactTable';
|
|
4
11
|
import { MRT_Table } from './MRT_Table';
|
|
5
12
|
import { MRT_ToolbarTop } from '../toolbar/MRT_ToolbarTop';
|
|
6
13
|
import { MRT_ToolbarBottom } from '../toolbar/MRT_ToolbarBottom';
|
|
7
14
|
|
|
15
|
+
const CircularProgressWrapper = styled('div')(({ theme }) => ({
|
|
16
|
+
alignItems: 'center',
|
|
17
|
+
backgroundColor: alpha(theme.palette.background.paper, 0.5),
|
|
18
|
+
display: 'grid',
|
|
19
|
+
height: '100%',
|
|
20
|
+
justifyContent: 'center',
|
|
21
|
+
margin: 'auto',
|
|
22
|
+
position: 'absolute',
|
|
23
|
+
width: 'calc(100% - 2rem)',
|
|
24
|
+
}));
|
|
25
|
+
|
|
8
26
|
interface Props {}
|
|
9
27
|
|
|
10
28
|
export const MRT_TableContainer: FC<Props> = () => {
|
|
11
|
-
const {
|
|
12
|
-
|
|
29
|
+
const {
|
|
30
|
+
muiTableContainerProps,
|
|
31
|
+
hideToolbarTop,
|
|
32
|
+
hideToolbarBottom,
|
|
33
|
+
isLoading,
|
|
34
|
+
isFetching,
|
|
35
|
+
} = useMaterialReactTable();
|
|
13
36
|
|
|
14
37
|
return (
|
|
15
38
|
<TableContainer component={Paper} {...muiTableContainerProps}>
|
|
16
39
|
{!hideToolbarTop && <MRT_ToolbarTop />}
|
|
17
40
|
{isFetching && <LinearProgress />}
|
|
41
|
+
{isLoading && (
|
|
42
|
+
<CircularProgressWrapper>
|
|
43
|
+
<CircularProgress aria-busy="true" aria-label="Loading data" />
|
|
44
|
+
</CircularProgressWrapper>
|
|
45
|
+
)}
|
|
18
46
|
<MRT_Table />
|
|
19
47
|
{!hideToolbarBottom && <MRT_ToolbarBottom />}
|
|
20
48
|
</TableContainer>
|
|
@@ -9,16 +9,16 @@ interface Props {
|
|
|
9
9
|
export const MRT_TableSpacerCell: FC<Props> = ({ width }) => {
|
|
10
10
|
const { muiTableBodyCellProps } = useMaterialReactTable();
|
|
11
11
|
|
|
12
|
-
const
|
|
12
|
+
const mTableBodyCellrops =
|
|
13
13
|
muiTableBodyCellProps instanceof Function
|
|
14
14
|
? muiTableBodyCellProps()
|
|
15
15
|
: muiTableBodyCellProps;
|
|
16
16
|
|
|
17
17
|
const tableCellProps = {
|
|
18
|
-
...
|
|
18
|
+
...mTableBodyCellrops,
|
|
19
19
|
style: {
|
|
20
20
|
width,
|
|
21
|
-
...(
|
|
21
|
+
...(mTableBodyCellrops?.style ?? {}),
|
|
22
22
|
},
|
|
23
23
|
};
|
|
24
24
|
|
|
@@ -14,29 +14,14 @@ interface Props {}
|
|
|
14
14
|
|
|
15
15
|
export const MRT_ToolbarBottom: FC<Props> = () => {
|
|
16
16
|
const {
|
|
17
|
-
|
|
18
|
-
disableColumnHiding,
|
|
17
|
+
hideToolbarActions,
|
|
19
18
|
manualPagination,
|
|
19
|
+
muiTableToolbarBottomProps,
|
|
20
20
|
positionPagination,
|
|
21
|
-
disableFilters,
|
|
22
|
-
hideToolbarActions,
|
|
23
21
|
positionToolbarActions,
|
|
24
|
-
muiTableToolbarBottomProps,
|
|
25
|
-
title,
|
|
26
22
|
tableInstance,
|
|
27
23
|
} = useMaterialReactTable();
|
|
28
24
|
|
|
29
|
-
// if no features in the toolbar are enabled, don't render anything
|
|
30
|
-
if (
|
|
31
|
-
!muiTableToolbarBottomProps &&
|
|
32
|
-
!title &&
|
|
33
|
-
disableColumnHiding &&
|
|
34
|
-
disableFilters &&
|
|
35
|
-
disableGlobalFilter
|
|
36
|
-
) {
|
|
37
|
-
return null;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
25
|
const toolbarProps =
|
|
41
26
|
muiTableToolbarBottomProps instanceof Function
|
|
42
27
|
? muiTableToolbarBottomProps(tableInstance)
|
|
@@ -25,29 +25,16 @@ interface Props {}
|
|
|
25
25
|
export const MRT_ToolbarTop: FC<Props> = () => {
|
|
26
26
|
const {
|
|
27
27
|
disableGlobalFilter,
|
|
28
|
-
|
|
29
|
-
muiTableTitleProps,
|
|
30
|
-
disableFilters,
|
|
28
|
+
hideToolbarActions,
|
|
31
29
|
manualPagination,
|
|
32
|
-
|
|
30
|
+
muiTableTitleProps,
|
|
33
31
|
muiTableToolbarTopProps,
|
|
34
|
-
|
|
32
|
+
positionPagination,
|
|
35
33
|
positionToolbarActions,
|
|
36
|
-
title,
|
|
37
34
|
tableInstance,
|
|
35
|
+
title,
|
|
38
36
|
} = useMaterialReactTable();
|
|
39
37
|
|
|
40
|
-
// if no features in the toolbar are enabled, don't render anything
|
|
41
|
-
if (
|
|
42
|
-
!muiTableToolbarTopProps &&
|
|
43
|
-
!title &&
|
|
44
|
-
disableColumnHiding &&
|
|
45
|
-
disableFilters &&
|
|
46
|
-
disableGlobalFilter
|
|
47
|
-
) {
|
|
48
|
-
return null;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
38
|
const toolbarProps =
|
|
52
39
|
muiTableToolbarTopProps instanceof Function
|
|
53
40
|
? muiTableToolbarTopProps(tableInstance)
|
|
@@ -7,6 +7,7 @@ import React, {
|
|
|
7
7
|
} from 'react';
|
|
8
8
|
import {
|
|
9
9
|
PluginHook,
|
|
10
|
+
Row,
|
|
10
11
|
TableInstance,
|
|
11
12
|
useExpanded,
|
|
12
13
|
useFilters,
|
|
@@ -25,9 +26,9 @@ import { UseMRTCalcs, useMRTCalcs } from './utils/useMRTCalcs';
|
|
|
25
26
|
export interface UseMaterialReactTable<D extends {}>
|
|
26
27
|
extends MaterialReactTableProps<D>,
|
|
27
28
|
UseMRTCalcs {
|
|
28
|
-
|
|
29
|
+
currentEditingRow: Row<D> | null;
|
|
29
30
|
densePadding: boolean;
|
|
30
|
-
|
|
31
|
+
setCurrentEditingRow: (currentRowEditingId: Row<D> | null) => void;
|
|
31
32
|
setDensePadding: (densePadding: boolean) => void;
|
|
32
33
|
setShowFilters: (showFilters: boolean) => void;
|
|
33
34
|
showFilters: boolean;
|
|
@@ -65,9 +66,7 @@ export const MaterialReactTableProvider = <D extends {}>(
|
|
|
65
66
|
const [densePadding, setDensePadding] = useState<boolean>(
|
|
66
67
|
props.defaultDensePadding ?? false,
|
|
67
68
|
);
|
|
68
|
-
const [
|
|
69
|
-
null,
|
|
70
|
-
);
|
|
69
|
+
const [currentEditingRow, setCurrentEditingRow] = useState<Row | null>(null);
|
|
71
70
|
|
|
72
71
|
return (
|
|
73
72
|
<MaterialReactTableContext.Provider
|
|
@@ -77,8 +76,8 @@ export const MaterialReactTableProvider = <D extends {}>(
|
|
|
77
76
|
densePadding,
|
|
78
77
|
setDensePadding,
|
|
79
78
|
setShowFilters,
|
|
80
|
-
|
|
81
|
-
|
|
79
|
+
currentEditingRow,
|
|
80
|
+
setCurrentEditingRow,
|
|
82
81
|
showFilters,
|
|
83
82
|
// @ts-ignore
|
|
84
83
|
tableInstance,
|
|
@@ -11,13 +11,14 @@ export interface MRT_Localization {
|
|
|
11
11
|
expandButtonTitle: string;
|
|
12
12
|
filterTextFieldClearButtonTitle: string;
|
|
13
13
|
filterTextFieldPlaceholder: string;
|
|
14
|
-
rowActionMenuButtonTitle: string;
|
|
15
|
-
rowActionsColumnTitle: string;
|
|
16
|
-
rowActionButtonSave: string;
|
|
17
14
|
rowActionButtonCancel: string;
|
|
15
|
+
rowActionButtonSave: string;
|
|
16
|
+
rowActionMenuButtonTitle: string;
|
|
18
17
|
rowActionMenuItemEdit: string;
|
|
18
|
+
rowActionsColumnTitle: string;
|
|
19
19
|
searchTextFieldClearButtonTitle: string;
|
|
20
20
|
searchTextFieldPlaceholder: string;
|
|
21
|
+
selectAllCheckboxTitle: string;
|
|
21
22
|
showHideColumnsButtonTitle: string;
|
|
22
23
|
toggleDensePaddingSwitchTitle: string;
|
|
23
24
|
toggleFilterButtonTitle: string;
|
|
@@ -36,13 +37,14 @@ export const defaultLocalization: MRT_Localization = {
|
|
|
36
37
|
expandButtonTitle: 'Expand',
|
|
37
38
|
filterTextFieldClearButtonTitle: 'Clear filter',
|
|
38
39
|
filterTextFieldPlaceholder: 'Filter',
|
|
40
|
+
rowActionButtonCancel: 'Cancel',
|
|
41
|
+
rowActionButtonSave: 'Save',
|
|
39
42
|
rowActionMenuButtonTitle: 'Row Actions',
|
|
40
|
-
rowActionsColumnTitle: 'Actions',
|
|
41
43
|
rowActionMenuItemEdit: 'Edit',
|
|
42
|
-
|
|
43
|
-
rowActionButtonCancel: 'Cancel',
|
|
44
|
+
rowActionsColumnTitle: 'Actions',
|
|
44
45
|
searchTextFieldClearButtonTitle: 'Clear search',
|
|
45
46
|
searchTextFieldPlaceholder: 'Search',
|
|
47
|
+
selectAllCheckboxTitle: 'Select all',
|
|
46
48
|
showHideColumnsButtonTitle: 'Show/Hide columns',
|
|
47
49
|
toggleDensePaddingSwitchTitle: 'Toggle dense padding',
|
|
48
50
|
toggleFilterButtonTitle: 'Toggle filters',
|