material-react-table 2.0.0-alpha.0 → 2.0.0-alpha.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 +2 -2
- package/dist/cjs/index.js +2480 -2392
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/MaterialReactTable.d.ts +1 -1
- package/dist/cjs/types/body/MRT_TableBodyRow.d.ts +3 -2
- package/dist/cjs/types/body/MRT_TableBodyRowPinButton.d.ts +7 -0
- package/dist/cjs/types/body/index.d.ts +1 -0
- package/dist/cjs/types/buttons/MRT_GrabHandleButton.d.ts +1 -1
- package/dist/cjs/types/buttons/MRT_RowPinButton.d.ts +9 -0
- package/dist/cjs/types/buttons/index.d.ts +2 -1
- package/dist/cjs/types/column.utils.d.ts +7 -6
- package/dist/cjs/types/filterFns.d.ts +14 -14
- package/dist/cjs/types/head/MRT_TableHeadCellFilterLabel.d.ts +1 -1
- package/dist/cjs/types/head/MRT_TableHeadCellSortLabel.d.ts +1 -1
- package/dist/cjs/types/hooks/useMRT_DisplayColumns.d.ts +3 -3
- package/dist/cjs/types/icons.d.ts +1 -1
- package/dist/cjs/types/inputs/MRT_FilterRangeSlider.d.ts +1 -1
- package/dist/cjs/types/menus/MRT_ColumnActionMenu.d.ts +4 -4
- package/dist/cjs/types/menus/MRT_ShowHideColumnsMenuItems.d.ts +1 -1
- package/dist/cjs/types/toolbar/MRT_TablePagination.d.ts +2 -2
- package/dist/cjs/types/toolbar/MRT_TopToolbar.d.ts +1 -1
- package/dist/cjs/types/types.d.ts +203 -197
- package/dist/esm/material-react-table.esm.js +2442 -2358
- package/dist/esm/material-react-table.esm.js.map +1 -1
- package/dist/esm/types/MaterialReactTable.d.ts +1 -1
- package/dist/esm/types/body/MRT_TableBodyRow.d.ts +3 -2
- package/dist/esm/types/body/MRT_TableBodyRowPinButton.d.ts +7 -0
- package/dist/esm/types/body/index.d.ts +1 -0
- package/dist/esm/types/buttons/MRT_GrabHandleButton.d.ts +1 -1
- package/dist/esm/types/buttons/MRT_RowPinButton.d.ts +9 -0
- package/dist/esm/types/buttons/index.d.ts +2 -1
- package/dist/esm/types/column.utils.d.ts +7 -6
- package/dist/esm/types/filterFns.d.ts +14 -14
- package/dist/esm/types/head/MRT_TableHeadCellFilterLabel.d.ts +1 -1
- package/dist/esm/types/head/MRT_TableHeadCellSortLabel.d.ts +1 -1
- package/dist/esm/types/hooks/useMRT_DisplayColumns.d.ts +3 -3
- package/dist/esm/types/icons.d.ts +1 -1
- package/dist/esm/types/inputs/MRT_FilterRangeSlider.d.ts +1 -1
- package/dist/esm/types/menus/MRT_ColumnActionMenu.d.ts +4 -4
- package/dist/esm/types/menus/MRT_ShowHideColumnsMenuItems.d.ts +1 -1
- package/dist/esm/types/toolbar/MRT_TablePagination.d.ts +2 -2
- package/dist/esm/types/toolbar/MRT_TopToolbar.d.ts +1 -1
- package/dist/esm/types/types.d.ts +203 -197
- package/dist/index.d.ts +293 -272
- package/locales/en.esm.js +1 -0
- package/locales/en.esm.js.map +1 -1
- package/locales/en.js +1 -0
- package/locales/en.js.map +1 -1
- package/locales/fr.esm.js +1 -1
- package/locales/fr.esm.js.map +1 -1
- package/locales/fr.js +1 -1
- package/locales/fr.js.map +1 -1
- package/package.json +10 -9
- package/src/MaterialReactTable.tsx +2 -2
- package/src/body/MRT_TableBody.tsx +180 -76
- package/src/body/MRT_TableBodyCell.tsx +45 -43
- package/src/body/MRT_TableBodyCellValue.tsx +5 -5
- package/src/body/MRT_TableBodyRow.tsx +117 -29
- package/src/body/MRT_TableBodyRowGrabHandle.tsx +6 -5
- package/src/body/MRT_TableBodyRowPinButton.tsx +46 -0
- package/src/body/MRT_TableDetailPanel.tsx +16 -22
- package/src/body/index.ts +2 -1
- package/src/buttons/MRT_CopyButton.tsx +14 -20
- package/src/buttons/MRT_EditActionButtons.tsx +4 -4
- package/src/buttons/MRT_ExpandAllButton.tsx +7 -9
- package/src/buttons/MRT_ExpandButton.tsx +6 -7
- package/src/buttons/MRT_GrabHandleButton.tsx +12 -13
- package/src/buttons/MRT_RowPinButton.tsx +74 -0
- package/src/buttons/MRT_ShowHideColumnsButton.tsx +1 -1
- package/src/buttons/MRT_ToggleFullScreenButton.tsx +2 -2
- package/src/buttons/MRT_ToggleRowActionMenuButton.tsx +9 -10
- package/src/buttons/index.ts +2 -1
- package/src/column.utils.ts +33 -21
- package/src/filterFns.ts +29 -29
- package/src/footer/MRT_TableFooter.tsx +14 -8
- package/src/footer/MRT_TableFooterCell.tsx +8 -21
- package/src/footer/MRT_TableFooterRow.tsx +7 -8
- package/src/head/MRT_TableHead.tsx +12 -8
- package/src/head/MRT_TableHeadCell.tsx +18 -25
- package/src/head/MRT_TableHeadCellColumnActionsButton.tsx +18 -23
- package/src/head/MRT_TableHeadCellFilterContainer.tsx +11 -4
- package/src/head/MRT_TableHeadCellFilterLabel.tsx +106 -61
- package/src/head/MRT_TableHeadCellGrabHandle.tsx +8 -15
- package/src/head/MRT_TableHeadCellResizeHandle.tsx +11 -11
- package/src/head/MRT_TableHeadCellSortLabel.tsx +8 -8
- package/src/head/MRT_TableHeadRow.tsx +7 -8
- package/src/hooks/useMRT_DisplayColumns.tsx +17 -4
- package/src/hooks/useMRT_Effects.ts +3 -3
- package/src/hooks/useMRT_TableInstance.ts +17 -10
- package/src/hooks/useMRT_TableOptions.ts +9 -5
- package/src/icons.ts +2 -2
- package/src/inputs/MRT_EditCellTextField.tsx +23 -31
- package/src/inputs/MRT_FilterCheckbox.tsx +17 -29
- package/src/inputs/MRT_FilterRangeFields.tsx +1 -1
- package/src/inputs/MRT_FilterRangeSlider.tsx +12 -29
- package/src/inputs/MRT_FilterTextField.tsx +83 -99
- package/src/inputs/MRT_GlobalFilterTextField.tsx +29 -29
- package/src/inputs/MRT_SelectCheckbox.tsx +35 -21
- package/src/locales/en.ts +1 -1
- package/src/locales/fr.ts +1 -1
- package/src/menus/MRT_ColumnActionMenu.tsx +14 -14
- package/src/menus/MRT_FilterOptionMenu.tsx +35 -35
- package/src/menus/MRT_RowActionMenu.tsx +17 -18
- package/src/menus/MRT_ShowHideColumnsMenu.tsx +6 -6
- package/src/menus/MRT_ShowHideColumnsMenuItems.tsx +5 -5
- package/src/modals/MRT_EditRowModal.tsx +12 -20
- package/src/sortingFns.ts +1 -1
- package/src/table/MRT_Table.tsx +14 -19
- package/src/table/MRT_TableContainer.tsx +14 -20
- package/src/table/MRT_TablePaper.tsx +16 -20
- package/src/toolbar/MRT_BottomToolbar.tsx +18 -24
- package/src/toolbar/MRT_LinearProgressBar.tsx +8 -7
- package/src/toolbar/MRT_TablePagination.tsx +23 -25
- package/src/toolbar/MRT_ToolbarAlertBanner.tsx +11 -14
- package/src/toolbar/MRT_ToolbarDropZone.tsx +6 -6
- package/src/toolbar/MRT_ToolbarInternalButtons.tsx +8 -5
- package/src/toolbar/MRT_TopToolbar.tsx +14 -20
- package/src/types.ts +269 -252
- package/src/useMaterialReactTable.ts +1 -1
@@ -1,5 +1,6 @@
|
|
1
1
|
import Collapse from '@mui/material/Collapse';
|
2
2
|
import LinearProgress from '@mui/material/LinearProgress';
|
3
|
+
import { parseFromValuesOrFunc } from '../column.utils';
|
3
4
|
import { type MRT_TableInstance } from '../types';
|
4
5
|
|
5
6
|
interface Props<TData extends Record<string, any>> {
|
@@ -12,31 +13,31 @@ export const MRT_LinearProgressBar = <TData extends Record<string, any>>({
|
|
12
13
|
table,
|
13
14
|
}: Props<TData>) => {
|
14
15
|
const {
|
15
|
-
options: { muiLinearProgressProps },
|
16
16
|
getState,
|
17
|
+
options: { muiLinearProgressProps },
|
17
18
|
} = table;
|
18
19
|
const { isLoading, showProgressBars } = getState();
|
19
20
|
|
20
|
-
const linearProgressProps =
|
21
|
-
|
22
|
-
|
23
|
-
|
21
|
+
const linearProgressProps = parseFromValuesOrFunc(muiLinearProgressProps, {
|
22
|
+
isTopToolbar,
|
23
|
+
table,
|
24
|
+
});
|
24
25
|
|
25
26
|
return (
|
26
27
|
<Collapse
|
27
28
|
in={isLoading || showProgressBars}
|
28
29
|
mountOnEnter
|
29
|
-
unmountOnExit
|
30
30
|
sx={{
|
31
31
|
bottom: isTopToolbar ? 0 : undefined,
|
32
32
|
position: 'absolute',
|
33
33
|
top: !isTopToolbar ? 0 : undefined,
|
34
34
|
width: '100%',
|
35
35
|
}}
|
36
|
+
unmountOnExit
|
36
37
|
>
|
37
38
|
<LinearProgress
|
38
|
-
aria-label="Loading"
|
39
39
|
aria-busy="true"
|
40
|
+
aria-label="Loading"
|
40
41
|
sx={{ position: 'relative' }}
|
41
42
|
{...linearProgressProps}
|
42
43
|
/>
|
@@ -1,40 +1,40 @@
|
|
1
1
|
import { type ChangeEvent } from 'react';
|
2
2
|
import TablePagination from '@mui/material/TablePagination';
|
3
|
+
import { parseFromValuesOrFunc } from '../column.utils';
|
3
4
|
import { type MRT_TableInstance } from '../types';
|
4
5
|
|
5
6
|
interface Props<TData extends Record<string, any>> {
|
6
|
-
position?: '
|
7
|
+
position?: 'bottom' | 'top';
|
7
8
|
table: MRT_TableInstance<TData>;
|
8
9
|
}
|
9
10
|
|
10
11
|
export const MRT_TablePagination = <TData extends Record<string, any>>({
|
11
|
-
table,
|
12
12
|
position = 'bottom',
|
13
|
+
table,
|
13
14
|
}: Props<TData>) => {
|
14
15
|
const {
|
15
16
|
getPrePaginationRowModel,
|
16
17
|
getState,
|
17
|
-
setPageIndex,
|
18
|
-
setPageSize,
|
19
18
|
options: {
|
20
|
-
muiTablePaginationProps,
|
21
19
|
enableToolbarInternalActions,
|
22
20
|
localization,
|
21
|
+
muiTablePaginationProps,
|
23
22
|
rowCount,
|
24
23
|
},
|
24
|
+
setPageIndex,
|
25
|
+
setPageSize,
|
25
26
|
} = table;
|
26
27
|
const {
|
27
|
-
pagination: {
|
28
|
+
pagination: { pageIndex = 0, pageSize = 10 },
|
28
29
|
showGlobalFilter,
|
29
30
|
} = getState();
|
30
31
|
|
31
32
|
const totalRowCount = rowCount ?? getPrePaginationRowModel().rows.length;
|
32
33
|
const showFirstLastPageButtons = totalRowCount / pageSize > 2;
|
33
34
|
|
34
|
-
const tablePaginationProps =
|
35
|
-
|
36
|
-
|
37
|
-
: muiTablePaginationProps;
|
35
|
+
const tablePaginationProps = parseFromValuesOrFunc(muiTablePaginationProps, {
|
36
|
+
table,
|
37
|
+
});
|
38
38
|
|
39
39
|
const handleChangeRowsPerPage = (event: ChangeEvent<HTMLInputElement>) => {
|
40
40
|
setPageSize(+event.target.value);
|
@@ -53,7 +53,7 @@ export const MRT_TablePagination = <TData extends Record<string, any>>({
|
|
53
53
|
? localization.goToNextPage
|
54
54
|
: localization.goToPreviousPage
|
55
55
|
}
|
56
|
-
labelDisplayedRows={({ from, to
|
56
|
+
labelDisplayedRows={({ count, from, to }) =>
|
57
57
|
`${from}-${to} ${localization.of} ${count}`
|
58
58
|
}
|
59
59
|
labelRowsPerPage={localization.rowsPerPage}
|
@@ -69,28 +69,28 @@ export const MRT_TablePagination = <TData extends Record<string, any>>({
|
|
69
69
|
showLastButton={showFirstLastPageButtons}
|
70
70
|
{...tablePaginationProps}
|
71
71
|
SelectProps={{
|
72
|
-
sx: { m: '0 1rem 0 1ch' },
|
73
72
|
MenuProps: { MenuListProps: { disablePadding: true }, sx: { m: 0 } },
|
73
|
+
sx: { m: '0 1rem 0 1ch' },
|
74
74
|
...tablePaginationProps?.SelectProps,
|
75
75
|
}}
|
76
76
|
sx={(theme) => ({
|
77
|
-
'& .MuiTablePagination-
|
78
|
-
display: 'flex',
|
79
|
-
alignItems: 'center',
|
80
|
-
},
|
81
|
-
'& .MuiTablePagination-selectLabel': {
|
82
|
-
m: '0 -1px',
|
83
|
-
},
|
84
|
-
'&. MuiInputBase-root': {
|
77
|
+
'& . MuiTablePagination-select': {
|
85
78
|
m: '0 1px',
|
86
79
|
},
|
87
|
-
'& .
|
80
|
+
'& .MuiTablePagination-actions': {
|
88
81
|
m: '0 1px',
|
89
82
|
},
|
90
83
|
'& .MuiTablePagination-displayedRows': {
|
91
84
|
m: '0 1px',
|
92
85
|
},
|
93
|
-
'& .MuiTablePagination-
|
86
|
+
'& .MuiTablePagination-selectLabel': {
|
87
|
+
m: '0 -1px',
|
88
|
+
},
|
89
|
+
'& .MuiTablePagination-toolbar': {
|
90
|
+
alignItems: 'center',
|
91
|
+
display: 'flex',
|
92
|
+
},
|
93
|
+
'&. MuiInputBase-root': {
|
94
94
|
m: '0 1px',
|
95
95
|
},
|
96
96
|
mt:
|
@@ -101,9 +101,7 @@ export const MRT_TablePagination = <TData extends Record<string, any>>({
|
|
101
101
|
: undefined,
|
102
102
|
position: 'relative',
|
103
103
|
zIndex: 2,
|
104
|
-
...(tablePaginationProps?.sx
|
105
|
-
? tablePaginationProps.sx(theme)
|
106
|
-
: (tablePaginationProps?.sx as any)),
|
104
|
+
...(parseFromValuesOrFunc(tablePaginationProps?.sx, theme) as any),
|
107
105
|
})}
|
108
106
|
/>
|
109
107
|
);
|
@@ -4,6 +4,7 @@ import AlertTitle from '@mui/material/AlertTitle';
|
|
4
4
|
import Box from '@mui/material/Box';
|
5
5
|
import Chip from '@mui/material/Chip';
|
6
6
|
import Collapse from '@mui/material/Collapse';
|
7
|
+
import { parseFromValuesOrFunc } from '../column.utils';
|
7
8
|
import { type MRT_TableInstance } from '../types';
|
8
9
|
|
9
10
|
interface Props<TData extends Record<string, any>> {
|
@@ -21,23 +22,21 @@ export const MRT_ToolbarAlertBanner = <TData extends Record<string, any>>({
|
|
21
22
|
getState,
|
22
23
|
options: {
|
23
24
|
localization,
|
24
|
-
muiToolbarAlertBannerProps,
|
25
25
|
muiToolbarAlertBannerChipProps,
|
26
|
+
muiToolbarAlertBannerProps,
|
26
27
|
positionToolbarAlertBanner,
|
27
28
|
rowCount,
|
28
29
|
},
|
29
30
|
} = table;
|
30
31
|
const { grouping, showAlertBanner } = getState();
|
31
32
|
|
32
|
-
const alertProps =
|
33
|
-
|
34
|
-
|
35
|
-
: muiToolbarAlertBannerProps;
|
33
|
+
const alertProps = parseFromValuesOrFunc(muiToolbarAlertBannerProps, {
|
34
|
+
table,
|
35
|
+
});
|
36
36
|
|
37
|
-
const chipProps =
|
38
|
-
|
39
|
-
|
40
|
-
: muiToolbarAlertBannerChipProps;
|
37
|
+
const chipProps = parseFromValuesOrFunc(muiToolbarAlertBannerChipProps, {
|
38
|
+
table,
|
39
|
+
});
|
41
40
|
|
42
41
|
const selectMessage =
|
43
42
|
getSelectedRowModel().rows.length > 0
|
@@ -82,20 +81,18 @@ export const MRT_ToolbarAlertBanner = <TData extends Record<string, any>>({
|
|
82
81
|
borderRadius: 0,
|
83
82
|
fontSize: '1rem',
|
84
83
|
left: 0,
|
85
|
-
p: 0,
|
86
|
-
position: 'relative',
|
87
84
|
mb: stackAlertBanner
|
88
85
|
? 0
|
89
86
|
: positionToolbarAlertBanner === 'bottom'
|
90
87
|
? '-1rem'
|
91
88
|
: undefined,
|
89
|
+
p: 0,
|
90
|
+
position: 'relative',
|
92
91
|
right: 0,
|
93
92
|
top: 0,
|
94
93
|
width: '100%',
|
95
94
|
zIndex: 2,
|
96
|
-
...(alertProps?.sx
|
97
|
-
? alertProps.sx(theme)
|
98
|
-
: (alertProps?.sx as any)),
|
95
|
+
...(parseFromValuesOrFunc(alertProps?.sx, theme) as any),
|
99
96
|
})}
|
100
97
|
>
|
101
98
|
{alertProps?.title && <AlertTitle>{alertProps.title}</AlertTitle>}
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import { type DragEvent, useEffect } from 'react';
|
2
|
-
import { alpha } from '@mui/material/styles';
|
3
2
|
import Box from '@mui/material/Box';
|
4
3
|
import Fade from '@mui/material/Fade';
|
5
4
|
import Typography from '@mui/material/Typography';
|
5
|
+
import { alpha } from '@mui/material/styles';
|
6
6
|
import { type MRT_TableInstance } from '../types';
|
7
7
|
|
8
8
|
interface Props<TData extends Record<string, any>> {
|
@@ -19,7 +19,7 @@ export const MRT_ToolbarDropZone = <TData extends Record<string, any>>({
|
|
19
19
|
setShowToolbarDropZone,
|
20
20
|
} = table;
|
21
21
|
|
22
|
-
const { draggingColumn,
|
22
|
+
const { draggingColumn, grouping, hoveredColumn, showToolbarDropZone } =
|
23
23
|
getState();
|
24
24
|
|
25
25
|
const handleDragEnter = (_event: DragEvent<HTMLDivElement>) => {
|
@@ -41,23 +41,23 @@ export const MRT_ToolbarDropZone = <TData extends Record<string, any>>({
|
|
41
41
|
<Fade in={showToolbarDropZone}>
|
42
42
|
<Box
|
43
43
|
className="Mui-ToolbarDropZone"
|
44
|
+
onDragEnter={handleDragEnter}
|
44
45
|
sx={(theme) => ({
|
45
46
|
alignItems: 'center',
|
47
|
+
backdropFilter: 'blur(4px)',
|
46
48
|
backgroundColor: alpha(
|
47
49
|
theme.palette.info.main,
|
48
50
|
hoveredColumn?.id === 'drop-zone' ? 0.2 : 0.1,
|
49
51
|
),
|
50
|
-
backdropFilter: 'blur(4px)',
|
51
|
-
boxSizing: 'border-box',
|
52
52
|
border: `dashed ${theme.palette.info.main} 2px`,
|
53
|
+
boxSizing: 'border-box',
|
53
54
|
display: 'flex',
|
54
|
-
justifyContent: 'center',
|
55
55
|
height: '100%',
|
56
|
+
justifyContent: 'center',
|
56
57
|
position: 'absolute',
|
57
58
|
width: '100%',
|
58
59
|
zIndex: 4,
|
59
60
|
})}
|
60
|
-
onDragEnter={handleDragEnter}
|
61
61
|
>
|
62
62
|
<Typography fontStyle="italic">
|
63
63
|
{localization.dropToGroupBy.replace(
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import Box from '@mui/material/Box';
|
2
|
-
import { MRT_ToggleFullScreenButton } from '../buttons/MRT_ToggleFullScreenButton';
|
3
2
|
import { MRT_ShowHideColumnsButton } from '../buttons/MRT_ShowHideColumnsButton';
|
4
3
|
import { MRT_ToggleDensePaddingButton } from '../buttons/MRT_ToggleDensePaddingButton';
|
5
4
|
import { MRT_ToggleFiltersButton } from '../buttons/MRT_ToggleFiltersButton';
|
5
|
+
import { MRT_ToggleFullScreenButton } from '../buttons/MRT_ToggleFullScreenButton';
|
6
6
|
import { MRT_ToggleGlobalFilterButton } from '../buttons/MRT_ToggleGlobalFilterButton';
|
7
7
|
import { type MRT_TableInstance } from '../types';
|
8
8
|
|
@@ -15,14 +15,15 @@ export const MRT_ToolbarInternalButtons = <TData extends Record<string, any>>({
|
|
15
15
|
}: Props<TData>) => {
|
16
16
|
const {
|
17
17
|
options: {
|
18
|
+
columnFilterDisplayMode,
|
18
19
|
enableColumnFilters,
|
19
20
|
enableColumnOrdering,
|
21
|
+
enableColumnPinning,
|
20
22
|
enableDensityToggle,
|
21
23
|
enableFilters,
|
22
24
|
enableFullScreenToggle,
|
23
25
|
enableGlobalFilter,
|
24
26
|
enableHiding,
|
25
|
-
enableColumnPinning,
|
26
27
|
initialState,
|
27
28
|
renderToolbarInternalActions,
|
28
29
|
},
|
@@ -45,9 +46,11 @@ export const MRT_ToolbarInternalButtons = <TData extends Record<string, any>>({
|
|
45
46
|
!initialState?.showGlobalFilter && (
|
46
47
|
<MRT_ToggleGlobalFilterButton table={table} />
|
47
48
|
)}
|
48
|
-
{enableFilters &&
|
49
|
-
|
50
|
-
|
49
|
+
{enableFilters &&
|
50
|
+
enableColumnFilters &&
|
51
|
+
columnFilterDisplayMode !== 'popover' && (
|
52
|
+
<MRT_ToggleFiltersButton table={table} />
|
53
|
+
)}
|
51
54
|
{(enableHiding || enableColumnOrdering || enableColumnPinning) && (
|
52
55
|
<MRT_ShowHideColumnsButton table={table} />
|
53
56
|
)}
|
@@ -1,15 +1,16 @@
|
|
1
1
|
import Box from '@mui/material/Box';
|
2
2
|
import Toolbar from '@mui/material/Toolbar';
|
3
|
-
import useMediaQuery from '@mui/material/useMediaQuery';
|
4
3
|
import { lighten } from '@mui/material/styles';
|
5
|
-
import {
|
4
|
+
import { type Theme } from '@mui/material/styles';
|
5
|
+
import useMediaQuery from '@mui/material/useMediaQuery';
|
6
6
|
import { MRT_LinearProgressBar } from './MRT_LinearProgressBar';
|
7
7
|
import { MRT_TablePagination } from './MRT_TablePagination';
|
8
8
|
import { MRT_ToolbarAlertBanner } from './MRT_ToolbarAlertBanner';
|
9
|
-
import { MRT_ToolbarInternalButtons } from './MRT_ToolbarInternalButtons';
|
10
9
|
import { MRT_ToolbarDropZone } from './MRT_ToolbarDropZone';
|
10
|
+
import { MRT_ToolbarInternalButtons } from './MRT_ToolbarInternalButtons';
|
11
|
+
import { parseFromValuesOrFunc } from '../column.utils';
|
12
|
+
import { MRT_GlobalFilterTextField } from '../inputs/MRT_GlobalFilterTextField';
|
11
13
|
import { type MRT_TableInstance } from '../types';
|
12
|
-
import { type Theme } from '@mui/material/styles';
|
13
14
|
|
14
15
|
export const commonToolbarStyles = ({ theme }: { theme: Theme }) => ({
|
15
16
|
alignItems: 'flex-start',
|
@@ -51,10 +52,7 @@ export const MRT_TopToolbar = <TData extends Record<string, any>>({
|
|
51
52
|
|
52
53
|
const isMobile = useMediaQuery('(max-width:720px)');
|
53
54
|
|
54
|
-
const toolbarProps =
|
55
|
-
muiTopToolbarProps instanceof Function
|
56
|
-
? muiTopToolbarProps({ table })
|
57
|
-
: muiTopToolbarProps;
|
55
|
+
const toolbarProps = parseFromValuesOrFunc(muiTopToolbarProps, { table });
|
58
56
|
|
59
57
|
const stackAlertBanner =
|
60
58
|
isMobile || !!renderTopToolbarCustomActions || showGlobalFilter;
|
@@ -70,16 +68,12 @@ export const MRT_TopToolbar = <TData extends Record<string, any>>({
|
|
70
68
|
toolbarProps.ref.current = ref;
|
71
69
|
}
|
72
70
|
}}
|
73
|
-
sx={(theme) =>
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
? toolbarProps.sx(theme)
|
80
|
-
: (toolbarProps?.sx as any)),
|
81
|
-
} as any)
|
82
|
-
}
|
71
|
+
sx={(theme) => ({
|
72
|
+
position: isFullScreen ? 'sticky' : undefined,
|
73
|
+
top: isFullScreen ? '0' : undefined,
|
74
|
+
...commonToolbarStyles({ theme }),
|
75
|
+
...(parseFromValuesOrFunc(toolbarProps?.sx, theme) as any),
|
76
|
+
})}
|
83
77
|
>
|
84
78
|
{positionToolbarAlertBanner === 'top' && (
|
85
79
|
<MRT_ToolbarAlertBanner
|
@@ -128,8 +122,8 @@ export const MRT_TopToolbar = <TData extends Record<string, any>>({
|
|
128
122
|
)}
|
129
123
|
</Box>
|
130
124
|
{enablePagination &&
|
131
|
-
['
|
132
|
-
<MRT_TablePagination table={table}
|
125
|
+
['both', 'top'].includes(positionPagination ?? '') && (
|
126
|
+
<MRT_TablePagination position="top" table={table} />
|
133
127
|
)}
|
134
128
|
<MRT_LinearProgressBar isTopToolbar table={table} />
|
135
129
|
</Toolbar>
|