material-react-table 0.6.8 → 0.6.9
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 +4 -3
- package/dist/material-react-table.cjs.development.js +35 -18
- 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 +35 -18
- package/dist/material-react-table.esm.js.map +1 -1
- package/package.json +1 -1
- package/src/MaterialReactTable.tsx +12 -4
- package/src/body/MRT_TableBodyRow.tsx +15 -1
- package/src/head/MRT_TableHeadRow.tsx +12 -1
- package/src/inputs/MRT_SelectCheckbox.tsx +58 -35
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.6.
|
|
2
|
+
"version": "0.6.9",
|
|
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.",
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React, { ChangeEvent, FC, MouseEvent, ReactNode } from 'react';
|
|
2
2
|
import {
|
|
3
3
|
AlertProps,
|
|
4
|
+
CheckboxProps,
|
|
4
5
|
IconButtonProps,
|
|
5
6
|
LinearProgressProps,
|
|
6
7
|
SkeletonProps,
|
|
@@ -260,6 +261,13 @@ export type MaterialReactTableProps<D extends {} = {}> = UseTableOptions<D> &
|
|
|
260
261
|
| LinearProgressProps
|
|
261
262
|
| ((tableInstance: MRT_TableInstance) => LinearProgressProps);
|
|
262
263
|
muiSearchTextFieldProps?: TextFieldProps;
|
|
264
|
+
muiSelectCheckboxProps?:
|
|
265
|
+
| CheckboxProps
|
|
266
|
+
| ((
|
|
267
|
+
isSelectAll?: boolean,
|
|
268
|
+
row?: MRT_Row<D>,
|
|
269
|
+
tableInstance?: MRT_TableInstance<D>,
|
|
270
|
+
) => CheckboxProps);
|
|
263
271
|
muiTableBodyCellEditTextFieldProps?:
|
|
264
272
|
| TextFieldProps
|
|
265
273
|
| ((cell?: MRT_Cell<D>) => TextFieldProps);
|
|
@@ -282,15 +290,15 @@ export type MaterialReactTableProps<D extends {} = {}> = UseTableOptions<D> &
|
|
|
282
290
|
muiTableFooterCellProps?:
|
|
283
291
|
| TableCellProps
|
|
284
292
|
| ((column: Column<D>) => TableCellProps);
|
|
285
|
-
muiTableHeadCellColumnActionsButtonProps?:
|
|
286
|
-
| IconButtonProps
|
|
287
|
-
| ((column: Column<D>) => IconButtonProps);
|
|
288
293
|
muiTableFooterProps?:
|
|
289
294
|
| TableFooterProps
|
|
290
295
|
| ((tableInstance: MRT_TableInstance<D>) => TableFooterProps);
|
|
291
296
|
muiTableFooterRowProps?:
|
|
292
297
|
| TableRowProps
|
|
293
298
|
| ((footerGroup: MRT_HeaderGroup<D>) => TableRowProps);
|
|
299
|
+
muiTableHeadCellColumnActionsButtonProps?:
|
|
300
|
+
| IconButtonProps
|
|
301
|
+
| ((column: Column<D>) => IconButtonProps);
|
|
294
302
|
muiTableHeadCellFilterTextFieldProps?:
|
|
295
303
|
| TextFieldProps
|
|
296
304
|
| ((column: Column<D>) => TextFieldProps);
|
|
@@ -336,7 +344,7 @@ export type MaterialReactTableProps<D extends {} = {}> = UseTableOptions<D> &
|
|
|
336
344
|
event: MouseEvent<HTMLButtonElement>,
|
|
337
345
|
row: Row<D>,
|
|
338
346
|
) => void;
|
|
339
|
-
|
|
347
|
+
onSelectChange?: (
|
|
340
348
|
event: ChangeEvent,
|
|
341
349
|
row: Row<D>,
|
|
342
350
|
selectedRows: Row<D>[],
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React, { FC, MouseEvent } from 'react';
|
|
2
2
|
import { TableCell, TableRow } from '@mui/material';
|
|
3
3
|
import {
|
|
4
|
+
commonTableBodyButtonCellStyles,
|
|
4
5
|
commonTableBodyCellStyles,
|
|
5
6
|
MRT_TableBodyCell,
|
|
6
7
|
} from './MRT_TableBodyCell';
|
|
@@ -26,6 +27,7 @@ export const MRT_TableBodyRow: FC<Props> = ({ row }) => {
|
|
|
26
27
|
onRowClick,
|
|
27
28
|
positionActionsColumn,
|
|
28
29
|
renderDetailPanel,
|
|
30
|
+
tableInstance,
|
|
29
31
|
tableInstance: {
|
|
30
32
|
state: { densePadding },
|
|
31
33
|
},
|
|
@@ -67,7 +69,19 @@ export const MRT_TableBodyRow: FC<Props> = ({ row }) => {
|
|
|
67
69
|
{(anyRowsCanExpand || renderDetailPanel) && (
|
|
68
70
|
<MRT_ExpandButton row={row} />
|
|
69
71
|
)}
|
|
70
|
-
{enableSelection &&
|
|
72
|
+
{enableSelection && (
|
|
73
|
+
<TableCell
|
|
74
|
+
sx={{
|
|
75
|
+
...commonTableBodyButtonCellStyles(
|
|
76
|
+
tableInstance.state.densePadding,
|
|
77
|
+
),
|
|
78
|
+
maxWidth: '3rem',
|
|
79
|
+
width: '3rem',
|
|
80
|
+
}}
|
|
81
|
+
>
|
|
82
|
+
<MRT_SelectCheckbox row={row} />
|
|
83
|
+
</TableCell>
|
|
84
|
+
)}
|
|
71
85
|
{row.cells.map((cell: MRT_Cell) => (
|
|
72
86
|
<MRT_TableBodyCell key={cell.getCellProps().key} cell={cell} />
|
|
73
87
|
))}
|
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
commonTableHeadCellStyles,
|
|
5
5
|
MRT_TableHeadCell,
|
|
6
6
|
} from './MRT_TableHeadCell';
|
|
7
|
+
import { commonTableBodyButtonCellStyles } from '../body/MRT_TableBodyCell';
|
|
7
8
|
import { useMRT } from '../useMRT';
|
|
8
9
|
import { MRT_SelectCheckbox } from '../inputs/MRT_SelectCheckbox';
|
|
9
10
|
import { MRT_ExpandAllButton } from '../buttons/MRT_ExpandAllButton';
|
|
@@ -83,7 +84,17 @@ export const MRT_TableHeadRow: FC<Props> = ({ headerGroup }) => {
|
|
|
83
84
|
) : null}
|
|
84
85
|
{enableSelection ? (
|
|
85
86
|
!isParentHeader && !disableSelectAll ? (
|
|
86
|
-
<
|
|
87
|
+
<TableCell
|
|
88
|
+
sx={{
|
|
89
|
+
...commonTableBodyButtonCellStyles(
|
|
90
|
+
tableInstance.state.densePadding,
|
|
91
|
+
),
|
|
92
|
+
maxWidth: '3rem',
|
|
93
|
+
width: '3rem',
|
|
94
|
+
}}
|
|
95
|
+
>
|
|
96
|
+
<MRT_SelectCheckbox selectAll />
|
|
97
|
+
</TableCell>
|
|
87
98
|
) : (
|
|
88
99
|
<MRT_TableSpacerCell width="1rem" />
|
|
89
100
|
)
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import React, { ChangeEvent, FC } from 'react';
|
|
2
|
-
import { Checkbox,
|
|
2
|
+
import { Checkbox, Tooltip } from '@mui/material';
|
|
3
3
|
import { useMRT } from '../useMRT';
|
|
4
4
|
import type { MRT_Row } from '..';
|
|
5
|
-
import { commonTableBodyButtonCellStyles } from '../body/MRT_TableBodyCell';
|
|
6
5
|
|
|
7
6
|
interface Props {
|
|
8
7
|
row?: MRT_Row;
|
|
@@ -10,52 +9,76 @@ interface Props {
|
|
|
10
9
|
}
|
|
11
10
|
|
|
12
11
|
export const MRT_SelectCheckbox: FC<Props> = ({ row, selectAll }) => {
|
|
13
|
-
const {
|
|
14
|
-
|
|
12
|
+
const {
|
|
13
|
+
localization,
|
|
14
|
+
muiSelectCheckboxProps,
|
|
15
|
+
onSelectChange,
|
|
16
|
+
onSelectAllChange,
|
|
17
|
+
tableInstance,
|
|
18
|
+
tableInstance: {
|
|
19
|
+
state: { densePadding },
|
|
20
|
+
},
|
|
21
|
+
} = useMRT();
|
|
15
22
|
|
|
16
|
-
const
|
|
23
|
+
const handleSelectChange = (event: ChangeEvent<HTMLInputElement>) => {
|
|
17
24
|
if (selectAll) {
|
|
18
25
|
tableInstance?.getToggleAllRowsSelectedProps?.()?.onChange?.(event);
|
|
19
|
-
onSelectAllChange?.(
|
|
26
|
+
onSelectAllChange?.(
|
|
27
|
+
event,
|
|
28
|
+
event.target.checked ? tableInstance.rows : [],
|
|
29
|
+
);
|
|
20
30
|
} else if (row) {
|
|
21
31
|
row?.getToggleRowSelectedProps()?.onChange?.(event);
|
|
22
|
-
|
|
32
|
+
onSelectChange?.(
|
|
33
|
+
event,
|
|
34
|
+
row,
|
|
35
|
+
event.target.checked
|
|
36
|
+
? [...tableInstance.selectedFlatRows, row]
|
|
37
|
+
: tableInstance.selectedFlatRows.filter(
|
|
38
|
+
(selectedRow) => selectedRow.id !== row.id,
|
|
39
|
+
),
|
|
40
|
+
);
|
|
23
41
|
}
|
|
24
42
|
};
|
|
25
43
|
|
|
26
|
-
const
|
|
44
|
+
const mTableBodyRowSelectCheckboxProps =
|
|
45
|
+
muiSelectCheckboxProps instanceof Function
|
|
46
|
+
? muiSelectCheckboxProps(selectAll, row, tableInstance)
|
|
47
|
+
: muiSelectCheckboxProps;
|
|
48
|
+
|
|
49
|
+
const rtSelectCheckboxProps = selectAll
|
|
27
50
|
? tableInstance.getToggleAllRowsSelectedProps()
|
|
28
51
|
: row?.getToggleRowSelectedProps();
|
|
29
52
|
|
|
53
|
+
const checkboxProps = {
|
|
54
|
+
...mTableBodyRowSelectCheckboxProps,
|
|
55
|
+
...rtSelectCheckboxProps,
|
|
56
|
+
style: {
|
|
57
|
+
...rtSelectCheckboxProps?.style,
|
|
58
|
+
...mTableBodyRowSelectCheckboxProps?.style,
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
|
|
30
62
|
return (
|
|
31
|
-
<
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
63
|
+
<Tooltip
|
|
64
|
+
arrow
|
|
65
|
+
enterDelay={1000}
|
|
66
|
+
enterNextDelay={1000}
|
|
67
|
+
title={
|
|
68
|
+
selectAll ? localization.toggleSelectAll : localization.toggleSelectRow
|
|
69
|
+
}
|
|
37
70
|
>
|
|
38
|
-
<
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
enterNextDelay={1000}
|
|
42
|
-
title={
|
|
43
|
-
selectAll
|
|
71
|
+
<Checkbox
|
|
72
|
+
inputProps={{
|
|
73
|
+
'aria-label': selectAll
|
|
44
74
|
? localization.toggleSelectAll
|
|
45
|
-
: localization.toggleSelectRow
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
}}
|
|
54
|
-
onChange={onSelectChange}
|
|
55
|
-
{...checkboxProps}
|
|
56
|
-
title={undefined}
|
|
57
|
-
/>
|
|
58
|
-
</Tooltip>
|
|
59
|
-
</TableCell>
|
|
75
|
+
: localization.toggleSelectRow,
|
|
76
|
+
}}
|
|
77
|
+
size={densePadding ? 'small' : 'medium'}
|
|
78
|
+
{...checkboxProps}
|
|
79
|
+
onChange={handleSelectChange}
|
|
80
|
+
title={undefined}
|
|
81
|
+
/>
|
|
82
|
+
</Tooltip>
|
|
60
83
|
);
|
|
61
84
|
};
|