material-react-table 2.11.2 → 2.12.0
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +29 -22
- package/dist/index.d.ts +30 -16
- package/dist/index.esm.js +161 -152
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +162 -156
- package/dist/index.js.map +1 -1
- package/package.json +24 -24
- package/src/components/body/MRT_TableBodyCell.tsx +11 -6
- package/src/components/body/MRT_TableBodyCellValue.tsx +5 -4
- package/src/components/body/MRT_TableBodyRow.tsx +10 -7
- package/src/components/body/MRT_TableDetailPanel.tsx +4 -9
- package/src/components/footer/MRT_TableFooterRow.tsx +6 -3
- package/src/components/head/MRT_TableHead.tsx +11 -11
- package/src/components/head/MRT_TableHeadCell.tsx +9 -3
- package/src/components/head/MRT_TableHeadCellFilterContainer.tsx +3 -4
- package/src/components/head/MRT_TableHeadCellFilterLabel.tsx +61 -37
- package/src/components/head/MRT_TableHeadRow.tsx +7 -3
- package/src/components/inputs/MRT_FilterRangeFields.tsx +8 -2
- package/src/components/inputs/MRT_FilterTextField.tsx +29 -38
- package/src/components/inputs/MRT_SelectCheckbox.tsx +2 -1
- package/src/components/menus/MRT_CellActionMenu.tsx +1 -5
- package/src/components/menus/MRT_ColumnActionMenu.tsx +1 -5
- package/src/components/menus/MRT_FilterOptionMenu.tsx +1 -5
- package/src/components/menus/MRT_RowActionMenu.tsx +1 -5
- package/src/components/menus/MRT_ShowHideColumnsMenu.tsx +1 -5
- package/src/components/menus/MRT_ShowHideColumnsMenuItems.tsx +3 -2
- package/src/components/table/MRT_TableLoadingOverlay.tsx +8 -8
- package/src/components/table/MRT_TablePaper.tsx +6 -6
- package/src/components/toolbar/MRT_ToolbarAlertBanner.tsx +3 -1
- package/src/components/toolbar/MRT_ToolbarDropZone.tsx +5 -0
- package/src/hooks/display-columns/getMRT_RowActionsColumnDef.tsx +1 -1
- package/src/hooks/display-columns/getMRT_RowDragColumnDef.tsx +1 -1
- package/src/hooks/display-columns/getMRT_RowExpandColumnDef.tsx +1 -1
- package/src/hooks/display-columns/getMRT_RowNumbersColumnDef.tsx +1 -1
- package/src/hooks/display-columns/getMRT_RowPinningColumnDef.tsx +1 -1
- package/src/hooks/display-columns/getMRT_RowSelectColumnDef.tsx +1 -1
- package/src/hooks/display-columns/getMRT_RowSpacerColumnDef.tsx +1 -1
- package/src/hooks/useMRT_TableOptions.ts +4 -0
- package/src/types.ts +15 -13
- package/src/utils/column.utils.ts +78 -40
- package/src/utils/row.utils.ts +2 -1
- package/src/utils/style.utils.ts +24 -26
- package/src/utils/utils.ts +1 -1
@@ -3,7 +3,6 @@ import {
|
|
3
3
|
type MouseEvent,
|
4
4
|
useCallback,
|
5
5
|
useEffect,
|
6
|
-
useMemo,
|
7
6
|
useRef,
|
8
7
|
useState,
|
9
8
|
} from 'react';
|
@@ -35,6 +34,10 @@ import {
|
|
35
34
|
type MRT_RowData,
|
36
35
|
type MRT_TableInstance,
|
37
36
|
} from '../../types';
|
37
|
+
import {
|
38
|
+
getColumnFilterInfo,
|
39
|
+
useDropdownOptions,
|
40
|
+
} from '../../utils/column.utils';
|
38
41
|
import { getValueAndLabel, parseFromValuesOrFunc } from '../../utils/utils';
|
39
42
|
import { MRT_FilterOptionMenu } from '../menus/MRT_FilterOptionMenu';
|
40
43
|
|
@@ -53,7 +56,6 @@ export const MRT_FilterTextField = <TData extends MRT_RowData>({
|
|
53
56
|
}: MRT_FilterTextFieldProps<TData>) => {
|
54
57
|
const {
|
55
58
|
options: {
|
56
|
-
columnFilterModeOptions,
|
57
59
|
enableColumnFilterModes,
|
58
60
|
icons: { CloseIcon, FilterListIcon },
|
59
61
|
localization,
|
@@ -112,17 +114,20 @@ export const MRT_FilterTextField = <TData extends MRT_RowData>({
|
|
112
114
|
}),
|
113
115
|
};
|
114
116
|
|
115
|
-
const
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
117
|
+
const {
|
118
|
+
allowedColumnFilterOptions,
|
119
|
+
currentFilterOption,
|
120
|
+
facetedUniqueValues,
|
121
|
+
isAutocompleteFilter,
|
122
|
+
isDateFilter,
|
123
|
+
isMultiSelectFilter,
|
124
|
+
isRangeFilter,
|
125
|
+
isSelectFilter,
|
126
|
+
isTextboxFilter,
|
127
|
+
} = getColumnFilterInfo({ header, table });
|
128
|
+
|
129
|
+
const dropdownOptions = useDropdownOptions({ header, table });
|
130
|
+
|
126
131
|
const filterChipLabel = ['empty', 'notEmpty'].includes(currentFilterOption)
|
127
132
|
? //@ts-ignore
|
128
133
|
localization[
|
@@ -132,6 +137,7 @@ export const MRT_FilterTextField = <TData extends MRT_RowData>({
|
|
132
137
|
}`
|
133
138
|
]
|
134
139
|
: '';
|
140
|
+
|
135
141
|
const filterPlaceholder = !isRangeFilter
|
136
142
|
? textFieldProps?.placeholder ??
|
137
143
|
localization.filterByColumn?.replace('{column}', String(columnDef.header))
|
@@ -140,16 +146,14 @@ export const MRT_FilterTextField = <TData extends MRT_RowData>({
|
|
140
146
|
: rangeFilterIndex === 1
|
141
147
|
? localization.max
|
142
148
|
: '';
|
143
|
-
|
144
|
-
|
145
|
-
const showChangeModeButton =
|
149
|
+
|
150
|
+
const showChangeModeButton = !!(
|
146
151
|
enableColumnFilterModes &&
|
147
152
|
columnDef.enableColumnFilterModes !== false &&
|
148
153
|
!rangeFilterIndex &&
|
149
154
|
(allowedColumnFilterOptions === undefined ||
|
150
|
-
!!allowedColumnFilterOptions?.length)
|
151
|
-
|
152
|
-
const facetedUniqueValues = column.getFacetedUniqueValues();
|
155
|
+
!!allowedColumnFilterOptions?.length)
|
156
|
+
);
|
153
157
|
|
154
158
|
const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);
|
155
159
|
const [filterValue, setFilterValue] = useState<string | string[]>(() =>
|
@@ -257,23 +261,6 @@ export const MRT_FilterTextField = <TData extends MRT_RowData>({
|
|
257
261
|
);
|
258
262
|
}
|
259
263
|
|
260
|
-
const dropdownOptions = useMemo(
|
261
|
-
() =>
|
262
|
-
columnDef.filterSelectOptions ??
|
263
|
-
((isSelectFilter || isMultiSelectFilter || isAutocompleteFilter) &&
|
264
|
-
facetedUniqueValues
|
265
|
-
? Array.from(facetedUniqueValues.keys())
|
266
|
-
.filter((value) => value !== null && value !== undefined)
|
267
|
-
.sort((a, b) => a.localeCompare(b))
|
268
|
-
: undefined),
|
269
|
-
[
|
270
|
-
columnDef.filterSelectOptions,
|
271
|
-
facetedUniqueValues,
|
272
|
-
isMultiSelectFilter,
|
273
|
-
isSelectFilter,
|
274
|
-
],
|
275
|
-
);
|
276
|
-
|
277
264
|
const endAdornment =
|
278
265
|
!isAutocompleteFilter && !isDateFilter && !filterChipLabel ? (
|
279
266
|
<InputAdornment
|
@@ -447,8 +434,12 @@ export const MRT_FilterTextField = <TData extends MRT_RowData>({
|
|
447
434
|
) : isAutocompleteFilter ? (
|
448
435
|
<Autocomplete
|
449
436
|
freeSolo
|
450
|
-
getOptionLabel={(option) =>
|
451
|
-
|
437
|
+
getOptionLabel={(option: DropdownOption) =>
|
438
|
+
getValueAndLabel(option).label
|
439
|
+
}
|
440
|
+
onChange={(_e, newValue: DropdownOption) =>
|
441
|
+
handleAutocompleteChange(newValue)
|
442
|
+
}
|
452
443
|
options={
|
453
444
|
dropdownOptions?.map((option) => getValueAndLabel(option)) ?? []
|
454
445
|
}
|
@@ -58,6 +58,7 @@ export const MRT_SelectCheckbox = <TData extends MRT_RowData>({
|
|
58
58
|
? parseFromValuesOrFunc(muiSelectAllCheckboxProps, { table })
|
59
59
|
: parseFromValuesOrFunc(muiSelectCheckboxProps, {
|
60
60
|
row,
|
61
|
+
staticRowIndex,
|
61
62
|
table,
|
62
63
|
})),
|
63
64
|
...rest,
|
@@ -87,7 +88,7 @@ export const MRT_SelectCheckbox = <TData extends MRT_RowData>({
|
|
87
88
|
},
|
88
89
|
onChange: (event) => {
|
89
90
|
event.stopPropagation();
|
90
|
-
|
91
|
+
selectAll ? onSelectAllChange(event) : onSelectionChange!(event);
|
91
92
|
},
|
92
93
|
size: (density === 'compact' ? 'small' : 'medium') as 'medium' | 'small',
|
93
94
|
...checkboxProps,
|
@@ -1,9 +1,7 @@
|
|
1
1
|
import Menu, { type MenuProps } from '@mui/material/Menu';
|
2
|
-
import { useTheme } from '@mui/material/styles';
|
3
2
|
import { MRT_ActionMenuItem } from './MRT_ActionMenuItem';
|
4
3
|
import { type MRT_RowData, type MRT_TableInstance } from '../../types';
|
5
4
|
import { openEditingCell } from '../../utils/cell.utils';
|
6
|
-
import { getMRTTheme } from '../../utils/style.utils';
|
7
5
|
import { parseFromValuesOrFunc } from '../../utils/utils';
|
8
6
|
|
9
7
|
export interface MRT_CellActionMenuProps<TData extends MRT_RowData>
|
@@ -23,6 +21,7 @@ export const MRT_CellActionMenu = <TData extends MRT_RowData>({
|
|
23
21
|
enableEditing,
|
24
22
|
icons: { ContentCopy, EditIcon },
|
25
23
|
localization,
|
24
|
+
mrtTheme: { menuBackgroundColor },
|
26
25
|
renderCellActionMenuItems,
|
27
26
|
},
|
28
27
|
refs: { actionCellRef },
|
@@ -33,9 +32,6 @@ export const MRT_CellActionMenu = <TData extends MRT_RowData>({
|
|
33
32
|
const { column } = cell;
|
34
33
|
const { columnDef } = column;
|
35
34
|
|
36
|
-
const theme = useTheme();
|
37
|
-
const { menuBackgroundColor } = getMRTTheme(table, theme);
|
38
|
-
|
39
35
|
const handleClose = (event?: any) => {
|
40
36
|
event?.stopPropagation();
|
41
37
|
table.setActionCell(null);
|
@@ -1,6 +1,5 @@
|
|
1
1
|
import { type MouseEvent, useState } from 'react';
|
2
2
|
import Menu, { type MenuProps } from '@mui/material/Menu';
|
3
|
-
import { useTheme } from '@mui/material/styles';
|
4
3
|
import { MRT_ActionMenuItem } from './MRT_ActionMenuItem';
|
5
4
|
import { MRT_FilterOptionMenu } from './MRT_FilterOptionMenu';
|
6
5
|
import {
|
@@ -8,7 +7,6 @@ import {
|
|
8
7
|
type MRT_RowData,
|
9
8
|
type MRT_TableInstance,
|
10
9
|
} from '../../types';
|
11
|
-
import { getMRTTheme } from '../../utils/style.utils';
|
12
10
|
|
13
11
|
export interface MRT_ColumnActionMenuProps<TData extends MRT_RowData>
|
14
12
|
extends Partial<MenuProps> {
|
@@ -51,6 +49,7 @@ export const MRT_ColumnActionMenu = <TData extends MRT_RowData>({
|
|
51
49
|
VisibilityOffIcon,
|
52
50
|
},
|
53
51
|
localization,
|
52
|
+
mrtTheme: { menuBackgroundColor },
|
54
53
|
renderColumnActionsMenuItems,
|
55
54
|
},
|
56
55
|
refs: { filterInputRefs },
|
@@ -318,9 +317,6 @@ export const MRT_ColumnActionMenu = <TData extends MRT_RowData>({
|
|
318
317
|
: []),
|
319
318
|
].filter(Boolean);
|
320
319
|
|
321
|
-
const theme = useTheme();
|
322
|
-
const { menuBackgroundColor } = getMRTTheme(table, theme);
|
323
|
-
|
324
320
|
return (
|
325
321
|
<Menu
|
326
322
|
MenuListProps={{
|
@@ -1,6 +1,5 @@
|
|
1
1
|
import { useMemo } from 'react';
|
2
2
|
import Menu, { type MenuProps } from '@mui/material/Menu';
|
3
|
-
import { useTheme } from '@mui/material/styles';
|
4
3
|
import { MRT_ActionMenuItem } from './MRT_ActionMenuItem';
|
5
4
|
import {
|
6
5
|
type MRT_FilterOption,
|
@@ -10,7 +9,6 @@ import {
|
|
10
9
|
type MRT_RowData,
|
11
10
|
type MRT_TableInstance,
|
12
11
|
} from '../../types';
|
13
|
-
import { getMRTTheme } from '../../utils/style.utils';
|
14
12
|
|
15
13
|
export const mrtFilterOptions = (
|
16
14
|
localization: MRT_Localization,
|
@@ -131,6 +129,7 @@ export const MRT_FilterOptionMenu = <TData extends MRT_RowData>({
|
|
131
129
|
columnFilterModeOptions,
|
132
130
|
globalFilterModeOptions,
|
133
131
|
localization,
|
132
|
+
mrtTheme: { menuBackgroundColor },
|
134
133
|
renderColumnFilterModeMenuItems,
|
135
134
|
renderGlobalFilterModeMenuItems,
|
136
135
|
},
|
@@ -239,9 +238,6 @@ export const MRT_FilterOptionMenu = <TData extends MRT_RowData>({
|
|
239
238
|
const filterOption =
|
240
239
|
!!header && columnDef ? columnDef._filterFn : globalFilterFn;
|
241
240
|
|
242
|
-
const theme = useTheme();
|
243
|
-
const { menuBackgroundColor } = getMRTTheme(table, theme);
|
244
|
-
|
245
241
|
return (
|
246
242
|
<Menu
|
247
243
|
MenuListProps={{
|
@@ -1,13 +1,11 @@
|
|
1
1
|
import { type MouseEvent } from 'react';
|
2
2
|
import Menu, { type MenuProps } from '@mui/material/Menu';
|
3
|
-
import { useTheme } from '@mui/material/styles';
|
4
3
|
import { MRT_ActionMenuItem } from './MRT_ActionMenuItem';
|
5
4
|
import {
|
6
5
|
type MRT_Row,
|
7
6
|
type MRT_RowData,
|
8
7
|
type MRT_TableInstance,
|
9
8
|
} from '../../types';
|
10
|
-
import { getMRTTheme } from '../../utils/style.utils';
|
11
9
|
import { parseFromValuesOrFunc } from '../../utils/utils';
|
12
10
|
|
13
11
|
export interface MRT_RowActionMenuProps<TData extends MRT_RowData>
|
@@ -36,14 +34,12 @@ export const MRT_RowActionMenu = <TData extends MRT_RowData>({
|
|
36
34
|
enableEditing,
|
37
35
|
icons: { EditIcon },
|
38
36
|
localization,
|
37
|
+
mrtTheme: { menuBackgroundColor },
|
39
38
|
renderRowActionMenuItems,
|
40
39
|
},
|
41
40
|
} = table;
|
42
41
|
const { density } = getState();
|
43
42
|
|
44
|
-
const theme = useTheme();
|
45
|
-
const { menuBackgroundColor } = getMRTTheme(table, theme);
|
46
|
-
|
47
43
|
return (
|
48
44
|
<Menu
|
49
45
|
MenuListProps={{
|
@@ -3,7 +3,6 @@ import Box from '@mui/material/Box';
|
|
3
3
|
import Button from '@mui/material/Button';
|
4
4
|
import Divider from '@mui/material/Divider';
|
5
5
|
import Menu, { type MenuProps } from '@mui/material/Menu';
|
6
|
-
import { useTheme } from '@mui/material/styles';
|
7
6
|
import { MRT_ShowHideColumnsMenuItems } from './MRT_ShowHideColumnsMenuItems';
|
8
7
|
import {
|
9
8
|
type MRT_Column,
|
@@ -11,7 +10,6 @@ import {
|
|
11
10
|
type MRT_TableInstance,
|
12
11
|
} from '../../types';
|
13
12
|
import { getDefaultColumnOrderIds } from '../../utils/displayColumn.utils';
|
14
|
-
import { getMRTTheme } from '../../utils/style.utils';
|
15
13
|
|
16
14
|
export interface MRT_ShowHideColumnsMenuProps<TData extends MRT_RowData>
|
17
15
|
extends Partial<MenuProps> {
|
@@ -42,6 +40,7 @@ export const MRT_ShowHideColumnsMenu = <TData extends MRT_RowData>({
|
|
42
40
|
enableColumnPinning,
|
43
41
|
enableHiding,
|
44
42
|
localization,
|
43
|
+
mrtTheme: { menuBackgroundColor },
|
45
44
|
},
|
46
45
|
} = table;
|
47
46
|
const { columnOrder, columnPinning, density } = getState();
|
@@ -84,9 +83,6 @@ export const MRT_ShowHideColumnsMenu = <TData extends MRT_RowData>({
|
|
84
83
|
null,
|
85
84
|
);
|
86
85
|
|
87
|
-
const theme = useTheme();
|
88
|
-
const { menuBackgroundColor } = getMRTTheme(table, theme);
|
89
|
-
|
90
86
|
return (
|
91
87
|
<Menu
|
92
88
|
MenuListProps={{
|
@@ -17,7 +17,7 @@ import {
|
|
17
17
|
type MRT_TableInstance,
|
18
18
|
} from '../../types';
|
19
19
|
import { reorderColumn } from '../../utils/column.utils';
|
20
|
-
import { getCommonTooltipProps
|
20
|
+
import { getCommonTooltipProps } from '../../utils/style.utils';
|
21
21
|
import { parseFromValuesOrFunc } from '../../utils/utils';
|
22
22
|
import { MRT_ColumnPinningButtons } from '../buttons/MRT_ColumnPinningButtons';
|
23
23
|
import { MRT_GrabHandleButton } from '../buttons/MRT_GrabHandleButton';
|
@@ -48,6 +48,7 @@ export const MRT_ShowHideColumnsMenuItems = <TData extends MRT_RowData>({
|
|
48
48
|
enableColumnPinning,
|
49
49
|
enableHiding,
|
50
50
|
localization,
|
51
|
+
mrtTheme: { draggingBorderColor },
|
51
52
|
},
|
52
53
|
setColumnOrder,
|
53
54
|
} = table;
|
@@ -116,7 +117,7 @@ export const MRT_ShowHideColumnsMenuItems = <TData extends MRT_RowData>({
|
|
116
117
|
outline: isDragging
|
117
118
|
? `2px dashed ${theme.palette.grey[500]}`
|
118
119
|
: hoveredColumn?.id === column.id
|
119
|
-
? `2px dashed ${
|
120
|
+
? `2px dashed ${draggingBorderColor}`
|
120
121
|
: 'none',
|
121
122
|
outlineOffset: '-2px',
|
122
123
|
pl: `${(column.depth + 0.5) * 2}rem`,
|
@@ -4,7 +4,6 @@ import CircularProgress, {
|
|
4
4
|
} from '@mui/material/CircularProgress';
|
5
5
|
import { alpha } from '@mui/material/styles';
|
6
6
|
import { type MRT_RowData, type MRT_TableInstance } from '../../types';
|
7
|
-
import { getMRTTheme } from '../../utils/style.utils';
|
8
7
|
import { parseFromValuesOrFunc } from '../../utils/utils';
|
9
8
|
|
10
9
|
export interface MRT_TableLoadingOverlayProps<TData extends MRT_RowData>
|
@@ -17,7 +16,11 @@ export const MRT_TableLoadingOverlay = <TData extends MRT_RowData>({
|
|
17
16
|
...rest
|
18
17
|
}: MRT_TableLoadingOverlayProps<TData>) => {
|
19
18
|
const {
|
20
|
-
options: {
|
19
|
+
options: {
|
20
|
+
localization,
|
21
|
+
mrtTheme: { baseBackgroundColor },
|
22
|
+
muiCircularProgressProps,
|
23
|
+
},
|
21
24
|
} = table;
|
22
25
|
|
23
26
|
const circularProgressProps = {
|
@@ -27,12 +30,9 @@ export const MRT_TableLoadingOverlay = <TData extends MRT_RowData>({
|
|
27
30
|
|
28
31
|
return (
|
29
32
|
<Box
|
30
|
-
sx={
|
33
|
+
sx={{
|
31
34
|
alignItems: 'center',
|
32
|
-
backgroundColor: alpha(
|
33
|
-
getMRTTheme(table, theme).baseBackgroundColor,
|
34
|
-
0.5,
|
35
|
-
),
|
35
|
+
backgroundColor: alpha(baseBackgroundColor, 0.5),
|
36
36
|
bottom: 0,
|
37
37
|
display: 'flex',
|
38
38
|
justifyContent: 'center',
|
@@ -43,7 +43,7 @@ export const MRT_TableLoadingOverlay = <TData extends MRT_RowData>({
|
|
43
43
|
top: 0,
|
44
44
|
width: '100%',
|
45
45
|
zIndex: 3,
|
46
|
-
}
|
46
|
+
}}
|
47
47
|
>
|
48
48
|
{circularProgressProps?.Component ?? (
|
49
49
|
<CircularProgress
|
@@ -1,7 +1,6 @@
|
|
1
1
|
import Paper, { type PaperProps } from '@mui/material/Paper';
|
2
2
|
import { MRT_TableContainer } from './MRT_TableContainer';
|
3
3
|
import { type MRT_RowData, type MRT_TableInstance } from '../../types';
|
4
|
-
import { getMRTTheme } from '../../utils/style.utils';
|
5
4
|
import { parseFromValuesOrFunc } from '../../utils/utils';
|
6
5
|
import { MRT_BottomToolbar } from '../toolbar/MRT_BottomToolbar';
|
7
6
|
import { MRT_TopToolbar } from '../toolbar/MRT_TopToolbar';
|
@@ -20,6 +19,7 @@ export const MRT_TablePaper = <TData extends MRT_RowData>({
|
|
20
19
|
options: {
|
21
20
|
enableBottomToolbar,
|
22
21
|
enableTopToolbar,
|
22
|
+
mrtTheme: { baseBackgroundColor },
|
23
23
|
muiTablePaperProps,
|
24
24
|
renderBottomToolbar,
|
25
25
|
renderTopToolbar,
|
@@ -48,23 +48,23 @@ export const MRT_TablePaper = <TData extends MRT_RowData>({
|
|
48
48
|
...(isFullScreen
|
49
49
|
? {
|
50
50
|
bottom: 0,
|
51
|
-
height: '
|
51
|
+
height: '100dvh',
|
52
52
|
left: 0,
|
53
53
|
margin: 0,
|
54
|
-
maxHeight: '
|
55
|
-
maxWidth: '
|
54
|
+
maxHeight: '100dvh',
|
55
|
+
maxWidth: '100dvw',
|
56
56
|
padding: 0,
|
57
57
|
position: 'fixed',
|
58
58
|
right: 0,
|
59
59
|
top: 0,
|
60
|
-
width: '
|
60
|
+
width: '100dvw',
|
61
61
|
zIndex: 999,
|
62
62
|
}
|
63
63
|
: {}),
|
64
64
|
...paperProps?.style,
|
65
65
|
}}
|
66
66
|
sx={(theme) => ({
|
67
|
-
backgroundColor:
|
67
|
+
backgroundColor: baseBackgroundColor,
|
68
68
|
backgroundImage: 'unset',
|
69
69
|
overflow: 'hidden',
|
70
70
|
transition: 'all 100ms ease-in-out',
|
@@ -68,7 +68,9 @@ export const MRT_ToolbarAlertBanner = <TData extends MRT_RowData>({
|
|
68
68
|
?.replace('{selectedCount}', selectedRowCount.toLocaleString())
|
69
69
|
?.replace('{rowCount}', totalRowCount.toString())}
|
70
70
|
<Button
|
71
|
-
onClick={(event) =>
|
71
|
+
onClick={(event) =>
|
72
|
+
getMRT_SelectAllHandler({ table })(event, false, true)
|
73
|
+
}
|
72
74
|
size="small"
|
73
75
|
sx={{ p: '2px' }}
|
74
76
|
>
|
@@ -29,6 +29,10 @@ export const MRT_ToolbarDropZone = <TData extends MRT_RowData>({
|
|
29
29
|
setHoveredColumn({ id: 'drop-zone' });
|
30
30
|
};
|
31
31
|
|
32
|
+
const handleDragOver = (e: DragEvent) => {
|
33
|
+
e.preventDefault();
|
34
|
+
};
|
35
|
+
|
32
36
|
useEffect(() => {
|
33
37
|
if (table.options.state?.showToolbarDropZone !== undefined) {
|
34
38
|
setShowToolbarDropZone(
|
@@ -45,6 +49,7 @@ export const MRT_ToolbarDropZone = <TData extends MRT_RowData>({
|
|
45
49
|
<Box
|
46
50
|
className="Mui-ToolbarDropZone"
|
47
51
|
onDragEnter={handleDragEnter}
|
52
|
+
onDragOver={handleDragOver}
|
48
53
|
{...rest}
|
49
54
|
sx={(theme) => ({
|
50
55
|
alignItems: 'center',
|
@@ -8,7 +8,7 @@ import { defaultDisplayColumnProps } from '../../utils/displayColumn.utils';
|
|
8
8
|
|
9
9
|
export const getMRT_RowActionsColumnDef = <TData extends MRT_RowData>(
|
10
10
|
tableOptions: MRT_StatefulTableOptions<TData>,
|
11
|
-
): MRT_ColumnDef<TData>
|
11
|
+
): MRT_ColumnDef<TData> => {
|
12
12
|
return {
|
13
13
|
Cell: ({ cell, row, staticRowIndex, table }) => (
|
14
14
|
<MRT_ToggleRowActionMenuButton
|
@@ -9,7 +9,7 @@ import { defaultDisplayColumnProps } from '../../utils/displayColumn.utils';
|
|
9
9
|
|
10
10
|
export const getMRT_RowDragColumnDef = <TData extends MRT_RowData>(
|
11
11
|
tableOptions: MRT_StatefulTableOptions<TData>,
|
12
|
-
): MRT_ColumnDef<TData>
|
12
|
+
): MRT_ColumnDef<TData> => {
|
13
13
|
return {
|
14
14
|
Cell: ({ row, rowRef, table }) => (
|
15
15
|
<MRT_TableBodyRowGrabHandle
|
@@ -13,7 +13,7 @@ import { getCommonTooltipProps } from '../../utils/style.utils';
|
|
13
13
|
|
14
14
|
export const getMRT_RowExpandColumnDef = <TData extends MRT_RowData>(
|
15
15
|
tableOptions: MRT_StatefulTableOptions<TData>,
|
16
|
-
): MRT_ColumnDef<TData>
|
16
|
+
): MRT_ColumnDef<TData> => {
|
17
17
|
const {
|
18
18
|
defaultColumn,
|
19
19
|
enableExpandAll,
|
@@ -7,7 +7,7 @@ import { defaultDisplayColumnProps } from '../../utils/displayColumn.utils';
|
|
7
7
|
|
8
8
|
export const getMRT_RowNumbersColumnDef = <TData extends MRT_RowData>(
|
9
9
|
tableOptions: MRT_StatefulTableOptions<TData>,
|
10
|
-
): MRT_ColumnDef<TData>
|
10
|
+
): MRT_ColumnDef<TData> => {
|
11
11
|
const { localization, rowNumberDisplayMode } = tableOptions;
|
12
12
|
const {
|
13
13
|
pagination: { pageIndex, pageSize },
|
@@ -8,7 +8,7 @@ import { defaultDisplayColumnProps } from '../../utils/displayColumn.utils';
|
|
8
8
|
|
9
9
|
export const getMRT_RowPinningColumnDef = <TData extends MRT_RowData>(
|
10
10
|
tableOptions: MRT_StatefulTableOptions<TData>,
|
11
|
-
): MRT_ColumnDef<TData>
|
11
|
+
): MRT_ColumnDef<TData> => {
|
12
12
|
return {
|
13
13
|
Cell: ({ row, table }) => (
|
14
14
|
<MRT_TableBodyRowPinButton row={row} table={table} />
|
@@ -8,7 +8,7 @@ import { defaultDisplayColumnProps } from '../../utils/displayColumn.utils';
|
|
8
8
|
|
9
9
|
export const getMRT_RowSelectColumnDef = <TData extends MRT_RowData>(
|
10
10
|
tableOptions: MRT_StatefulTableOptions<TData>,
|
11
|
-
): MRT_ColumnDef<TData>
|
11
|
+
): MRT_ColumnDef<TData> => {
|
12
12
|
const { enableMultiRowSelection, enableSelectAll } = tableOptions;
|
13
13
|
|
14
14
|
return {
|
@@ -17,7 +17,7 @@ const blankColProps = {
|
|
17
17
|
|
18
18
|
export const getMRT_RowSpacerColumnDef = <TData extends MRT_RowData>(
|
19
19
|
tableOptions: MRT_StatefulTableOptions<TData>,
|
20
|
-
): MRT_ColumnDef<TData>
|
20
|
+
): MRT_ColumnDef<TData> => {
|
21
21
|
return {
|
22
22
|
...defaultDisplayColumnProps({
|
23
23
|
id: 'mrt-row-spacer',
|
@@ -21,6 +21,7 @@ import {
|
|
21
21
|
type MRT_RowData,
|
22
22
|
type MRT_TableOptions,
|
23
23
|
} from '../types';
|
24
|
+
import { getMRTTheme } from '../utils/style.utils';
|
24
25
|
|
25
26
|
export const MRT_DefaultColumn = {
|
26
27
|
filterVariant: 'text',
|
@@ -96,6 +97,7 @@ export const useMRT_TableOptions: <TData extends MRT_RowData>(
|
|
96
97
|
manualGrouping,
|
97
98
|
manualPagination,
|
98
99
|
manualSorting,
|
100
|
+
mrtTheme,
|
99
101
|
paginationDisplayMode = 'default',
|
100
102
|
positionActionsColumn = 'first',
|
101
103
|
positionCreatingRow = 'top',
|
@@ -120,6 +122,7 @@ export const useMRT_TableOptions: <TData extends MRT_RowData>(
|
|
120
122
|
}),
|
121
123
|
[localization],
|
122
124
|
);
|
125
|
+
mrtTheme = useMemo(() => getMRTTheme(mrtTheme, theme), [mrtTheme, theme]);
|
123
126
|
aggregationFns = useMemo(
|
124
127
|
() => ({ ...MRT_AggregationFns, ...aggregationFns }),
|
125
128
|
[],
|
@@ -241,6 +244,7 @@ export const useMRT_TableOptions: <TData extends MRT_RowData>(
|
|
241
244
|
manualGrouping,
|
242
245
|
manualPagination,
|
243
246
|
manualSorting,
|
247
|
+
mrtTheme,
|
244
248
|
paginationDisplayMode,
|
245
249
|
positionActionsColumn,
|
246
250
|
positionCreatingRow,
|
package/src/types.ts
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
import {
|
2
|
-
type CSSProperties,
|
3
2
|
type Dispatch,
|
4
3
|
type MutableRefObject,
|
5
4
|
type ReactNode,
|
@@ -257,12 +256,12 @@ export interface MRT_Localization {
|
|
257
256
|
}
|
258
257
|
|
259
258
|
export interface MRT_Theme {
|
260
|
-
baseBackgroundColor
|
261
|
-
draggingBorderColor
|
262
|
-
matchHighlightColor
|
263
|
-
menuBackgroundColor
|
264
|
-
pinnedRowBackgroundColor
|
265
|
-
selectedRowBackgroundColor
|
259
|
+
baseBackgroundColor: string;
|
260
|
+
draggingBorderColor: string;
|
261
|
+
matchHighlightColor: string;
|
262
|
+
menuBackgroundColor: string;
|
263
|
+
pinnedRowBackgroundColor: string;
|
264
|
+
selectedRowBackgroundColor: string;
|
266
265
|
}
|
267
266
|
|
268
267
|
export interface MRT_RowModel<TData extends MRT_RowData> {
|
@@ -348,11 +347,14 @@ export type MRT_TableInstance<TData extends MRT_RowData> = Omit<
|
|
348
347
|
setShowToolbarDropZone: Dispatch<SetStateAction<boolean>>;
|
349
348
|
};
|
350
349
|
|
351
|
-
export type MRT_DefinedTableOptions<TData extends MRT_RowData> =
|
352
|
-
MRT_TableOptions<TData
|
353
|
-
|
354
|
-
|
355
|
-
|
350
|
+
export type MRT_DefinedTableOptions<TData extends MRT_RowData> = Omit<
|
351
|
+
MRT_TableOptions<TData>,
|
352
|
+
'icons' | 'localization' | 'mrtTheme'
|
353
|
+
> & {
|
354
|
+
icons: MRT_Icons;
|
355
|
+
localization: MRT_Localization;
|
356
|
+
mrtTheme: Required<MRT_Theme>;
|
357
|
+
};
|
356
358
|
|
357
359
|
export type MRT_StatefulTableOptions<TData extends MRT_RowData> =
|
358
360
|
MRT_DefinedTableOptions<TData> & {
|
@@ -914,7 +916,7 @@ export type MRT_TableOptions<TData extends MRT_RowData> = Omit<
|
|
914
916
|
* @link https://www.material-react-table.com/docs/guides/memoize-components
|
915
917
|
*/
|
916
918
|
memoMode?: 'cells' | 'rows' | 'table-body';
|
917
|
-
mrtTheme?: ((theme: Theme) => MRT_Theme) | MRT_Theme
|
919
|
+
mrtTheme?: ((theme: Theme) => Partial<MRT_Theme>) | Partial<MRT_Theme>;
|
918
920
|
muiBottomToolbarProps?:
|
919
921
|
| ((props: { table: MRT_TableInstance<TData> }) => BoxProps)
|
920
922
|
| BoxProps;
|