material-react-table 2.11.2 → 2.12.0
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 -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;
|