material-react-table 0.4.8 → 0.5.1

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.
Files changed (42) hide show
  1. package/dist/MaterialReactTable.d.ts +6 -5
  2. package/dist/body/MRT_TableBodyCell.d.ts +10 -3
  3. package/dist/body/MRT_TableBodyRow.d.ts +1 -16
  4. package/dist/head/MRT_TableHeadCell.d.ts +8 -4
  5. package/dist/material-react-table.cjs.development.js +400 -471
  6. package/dist/material-react-table.cjs.development.js.map +1 -1
  7. package/dist/material-react-table.cjs.production.min.js +1 -1
  8. package/dist/material-react-table.cjs.production.min.js.map +1 -1
  9. package/dist/material-react-table.esm.js +404 -475
  10. package/dist/material-react-table.esm.js.map +1 -1
  11. package/package.json +4 -4
  12. package/src/MaterialReactTable.tsx +8 -7
  13. package/src/body/MRT_TableBody.tsx +6 -7
  14. package/src/body/MRT_TableBodyCell.tsx +20 -11
  15. package/src/body/MRT_TableBodyRow.tsx +17 -14
  16. package/src/body/MRT_TableDetailPanel.tsx +9 -26
  17. package/src/buttons/MRT_EditActionButtons.tsx +3 -8
  18. package/src/buttons/MRT_ExpandAllButton.tsx +5 -5
  19. package/src/buttons/MRT_ExpandButton.tsx +10 -10
  20. package/src/buttons/MRT_ShowHideColumnsButton.tsx +9 -9
  21. package/src/buttons/MRT_ToggleColumnActionMenuButton.tsx +11 -12
  22. package/src/buttons/MRT_ToggleRowActionMenuButton.tsx +9 -8
  23. package/src/footer/MRT_TableFooterCell.tsx +10 -17
  24. package/src/footer/MRT_TableFooterRow.tsx +1 -1
  25. package/src/head/MRT_TableHeadCell.tsx +47 -54
  26. package/src/head/MRT_TableHeadCellActions.tsx +5 -4
  27. package/src/head/MRT_TableHeadRow.tsx +5 -4
  28. package/src/inputs/MRT_SearchTextField.tsx +2 -11
  29. package/src/inputs/MRT_SelectCheckbox.tsx +4 -4
  30. package/src/menus/MRT_ColumnActionMenu.tsx +17 -6
  31. package/src/menus/MRT_RowActionMenu.tsx +2 -7
  32. package/src/menus/MRT_ShowHideColumnsMenu.tsx +1 -1
  33. package/src/table/MRT_Table.tsx +1 -1
  34. package/src/table/MRT_TableContainer.tsx +17 -41
  35. package/src/table/MRT_TableSpacerCell.tsx +4 -3
  36. package/src/toolbar/MRT_TablePagination.tsx +6 -1
  37. package/src/toolbar/MRT_ToolbarAlertBanner.tsx +19 -29
  38. package/src/toolbar/MRT_ToolbarBottom.tsx +23 -20
  39. package/src/toolbar/MRT_ToolbarInternalButtons.tsx +13 -12
  40. package/src/toolbar/MRT_ToolbarTop.tsx +38 -35
  41. package/dist/table/MRT_TableButtonCell.d.ts +0 -3
  42. package/src/table/MRT_TableButtonCell.tsx +0 -9
@@ -1,54 +1,27 @@
1
1
  import React, { FC } from 'react';
2
2
  import {
3
- TableCell as MuiTableCell,
3
+ TableCell,
4
4
  TableSortLabel,
5
- styled,
6
- Divider as MuiDivider,
5
+ Divider,
7
6
  Collapse,
8
7
  Tooltip,
8
+ Box,
9
9
  } from '@mui/material';
10
10
  import { useMRT } from '../useMRT';
11
11
  import { MRT_FilterTextField } from '../inputs/MRT_FilterTextField';
12
12
  import { MRT_ToggleColumnActionMenuButton } from '../buttons/MRT_ToggleColumnActionMenuButton';
13
13
  import { MRT_HeaderGroup } from '..';
14
14
 
15
- export const MRT_StyledTableHeadCell = styled(MuiTableCell, {
16
- shouldForwardProp: (prop) =>
17
- prop !== 'densePadding' && prop !== 'enableColumnResizing',
18
- })<{ densePadding?: boolean; enableColumnResizing?: boolean }>(
19
- ({ densePadding, enableColumnResizing }) => ({
20
- fontWeight: 'bold',
21
- height: '100%',
22
- padding: densePadding ? '0.5rem' : '1rem',
23
- paddingTop: densePadding ? '0.75rem' : '1.25rem',
24
- transition: `all ${enableColumnResizing ? '10ms' : '0.2s'} ease-in-out`,
25
- verticalAlign: 'text-top',
26
- }),
27
- );
28
-
29
- const TableCellWrapper = styled('div')({
30
- alignContent: 'space-between',
31
- display: 'grid',
15
+ export const commonTableHeadCellStyles = (
16
+ densePadding: boolean,
17
+ enableColumnResizing?: boolean,
18
+ ) => ({
19
+ fontWeight: 'bold',
32
20
  height: '100%',
33
- });
34
-
35
- const TableCellTopContents = styled('div')({
36
- width: '100%',
37
- display: 'flex',
38
- justifyContent: 'space-between',
39
- alignItems: 'flex-start',
40
- });
41
-
42
- const CellFlexItem = styled('span')({
43
- alignItems: 'center',
44
- display: 'flex',
45
- flexWrap: 'nowrap',
46
- });
47
-
48
- const Divider = styled(MuiDivider)({
49
- borderRightWidth: '2px',
50
- borderRadius: '2px',
51
- maxHeight: '2rem',
21
+ p: densePadding ? '0.5rem' : '1rem',
22
+ pt: densePadding ? '0.75rem' : '1.25rem',
23
+ transition: `all ${enableColumnResizing ? '10ms' : '0.2s'} ease-in-out`,
24
+ verticalAlign: 'text-top',
52
25
  });
53
26
 
54
27
  interface Props {
@@ -85,8 +58,8 @@ export const MRT_TableHeadCell: FC<Props> = ({ column }) => {
85
58
  ...column.getHeaderProps(),
86
59
  style: {
87
60
  ...column.getHeaderProps().style,
88
- ...(mTableHeadCellProps?.style ?? {}),
89
- ...(mcTableHeadCellProps?.style ?? {}),
61
+ ...mTableHeadCellProps?.style,
62
+ ...mcTableHeadCellProps?.style,
90
63
  },
91
64
  };
92
65
 
@@ -103,17 +76,30 @@ export const MRT_TableHeadCell: FC<Props> = ({ column }) => {
103
76
  );
104
77
 
105
78
  return (
106
- <MRT_StyledTableHeadCell
79
+ <TableCell
107
80
  align={isParentHeader ? 'center' : 'left'}
108
- densePadding={densePadding}
109
- enableColumnResizing={enableColumnResizing}
110
81
  {...tableCellProps}
82
+ sx={{
83
+ ...commonTableHeadCellStyles(densePadding, enableColumnResizing),
84
+ ...tableCellProps?.sx,
85
+ }}
111
86
  >
112
- <TableCellWrapper>
113
- <TableCellTopContents
114
- style={{ justifyContent: isParentHeader ? 'center' : undefined }}
87
+ <Box
88
+ sx={{ alignContent: 'space-between', display: 'grid', height: '100%' }}
89
+ >
90
+ <Box
91
+ sx={{
92
+ alignItems: 'flex-start',
93
+ display: 'flex',
94
+ justifyContent: isParentHeader ? 'center' : 'space-between',
95
+ width: '100%',
96
+ }}
115
97
  >
116
- <CellFlexItem {...column.getSortByToggleProps()} title={undefined}>
98
+ <Box
99
+ {...column.getSortByToggleProps()}
100
+ sx={{ alignItems: 'center', display: 'flex', flexWrap: 'nowrap' }}
101
+ title={undefined}
102
+ >
117
103
  {column.render('Header')}
118
104
  {!isParentHeader && column.canSort && (
119
105
  <Tooltip arrow title={sortTooltip}>
@@ -124,8 +110,10 @@ export const MRT_TableHeadCell: FC<Props> = ({ column }) => {
124
110
  />
125
111
  </Tooltip>
126
112
  )}
127
- </CellFlexItem>
128
- <CellFlexItem>
113
+ </Box>
114
+ <Box
115
+ sx={{ alignItems: 'center', display: 'flex', flexWrap: 'nowrap' }}
116
+ >
129
117
  {!disableColumnActions && !isParentHeader && (
130
118
  <MRT_ToggleColumnActionMenuButton column={column} />
131
119
  )}
@@ -135,16 +123,21 @@ export const MRT_TableHeadCell: FC<Props> = ({ column }) => {
135
123
  orientation="vertical"
136
124
  onDoubleClick={() => tableInstance.resetResizing()}
137
125
  {...column.getResizerProps()}
126
+ sx={{
127
+ borderRightWidth: '2px',
128
+ borderRadius: '2px',
129
+ maxHeight: '2rem',
130
+ }}
138
131
  />
139
132
  )}
140
- </CellFlexItem>
141
- </TableCellTopContents>
133
+ </Box>
134
+ </Box>
142
135
  {!disableFilters && column.canFilter && (
143
136
  <Collapse in={showFilters}>
144
137
  <MRT_FilterTextField column={column} />
145
138
  </Collapse>
146
139
  )}
147
- </TableCellWrapper>
148
- </MRT_StyledTableHeadCell>
140
+ </Box>
141
+ </TableCell>
149
142
  );
150
143
  };
@@ -1,6 +1,7 @@
1
1
  import React, { FC } from 'react';
2
+ import { TableCell } from '@mui/material';
2
3
  import { useMRT } from '../useMRT';
3
- import { MRT_StyledTableHeadCell } from './MRT_TableHeadCell';
4
+ import { commonTableHeadCellStyles } from './MRT_TableHeadCell';
4
5
 
5
6
  interface Props {}
6
7
 
@@ -8,11 +9,11 @@ export const MRT_TableHeadCellActions: FC<Props> = () => {
8
9
  const { densePadding, localization } = useMRT();
9
10
 
10
11
  return (
11
- <MRT_StyledTableHeadCell
12
- densePadding={densePadding}
12
+ <TableCell
13
13
  style={{ textAlign: 'center' }}
14
+ sx={{ ...commonTableHeadCellStyles(densePadding), textAlign: 'center' }}
14
15
  >
15
16
  {localization.actionsHeadColumnTitle}
16
- </MRT_StyledTableHeadCell>
17
+ </TableCell>
17
18
  );
18
19
  };
@@ -1,7 +1,7 @@
1
1
  import React, { FC, useMemo } from 'react';
2
- import { TableRow } from '@mui/material';
2
+ import { TableCell, TableRow } from '@mui/material';
3
3
  import {
4
- MRT_StyledTableHeadCell,
4
+ commonTableHeadCellStyles,
5
5
  MRT_TableHeadCell,
6
6
  } from './MRT_TableHeadCell';
7
7
  import { useMRT } from '../useMRT';
@@ -18,6 +18,7 @@ interface Props {
18
18
  export const MRT_TableHeadRow: FC<Props> = ({ headerGroup }) => {
19
19
  const {
20
20
  anyRowsCanExpand,
21
+ densePadding,
21
22
  disableExpandAll,
22
23
  enableRowActions,
23
24
  enableRowEditing,
@@ -44,7 +45,7 @@ export const MRT_TableHeadRow: FC<Props> = ({ headerGroup }) => {
44
45
  ...headerGroup.getHeaderGroupProps(),
45
46
  style: {
46
47
  ...headerGroup.getHeaderGroupProps().style,
47
- ...(mTableHeadRowProps?.style ?? {}),
48
+ ...mTableHeadRowProps?.style,
48
49
  },
49
50
  };
50
51
 
@@ -54,7 +55,7 @@ export const MRT_TableHeadRow: FC<Props> = ({ headerGroup }) => {
54
55
  (isParentHeader ? (
55
56
  <MRT_TableSpacerCell />
56
57
  ) : (
57
- <MRT_StyledTableHeadCell>#</MRT_StyledTableHeadCell>
58
+ <TableCell sx={{...commonTableHeadCellStyles(densePadding)}}>#</TableCell>
58
59
  ))}
59
60
  {(enableRowActions || enableRowEditing) &&
60
61
  positionActionsColumn === 'first' &&
@@ -1,18 +1,8 @@
1
1
  import React, { ChangeEvent, FC, useState } from 'react';
2
- import {
3
- Collapse,
4
- IconButton,
5
- InputAdornment,
6
- styled,
7
- TextField as MuiTextField,
8
- } from '@mui/material';
2
+ import { Collapse, IconButton, InputAdornment, TextField } from '@mui/material';
9
3
  import { useMRT } from '../useMRT';
10
4
  import { useAsyncDebounce } from 'react-table';
11
5
 
12
- const TextField = styled(MuiTextField)({
13
- justifySelf: 'end',
14
- });
15
-
16
6
  interface Props {}
17
7
 
18
8
  export const MRT_SearchTextField: FC<Props> = () => {
@@ -72,6 +62,7 @@ export const MRT_SearchTextField: FC<Props> = () => {
72
62
  ),
73
63
  }}
74
64
  {...muiSearchTextFieldProps}
65
+ sx={{ justifySelf: 'end', ...muiSearchTextFieldProps?.sx }}
75
66
  />
76
67
  </Collapse>
77
68
  );
@@ -1,8 +1,8 @@
1
1
  import React, { ChangeEvent, FC } from 'react';
2
- import { Checkbox, Tooltip } from '@mui/material';
2
+ import { Checkbox, TableCell, Tooltip } from '@mui/material';
3
3
  import { useMRT } from '../useMRT';
4
- import { MRT_TableButtonCell } from '../table/MRT_TableButtonCell';
5
4
  import { MRT_Row } from '..';
5
+ import { commonTableBodyButtonCellStyles } from '../body/MRT_TableBodyCell';
6
6
 
7
7
  interface Props {
8
8
  row?: MRT_Row;
@@ -33,7 +33,7 @@ export const MRT_SelectCheckbox: FC<Props> = ({ row, selectAll }) => {
33
33
  : row?.getToggleRowSelectedProps();
34
34
 
35
35
  return (
36
- <MRT_TableButtonCell densePadding={densePadding}>
36
+ <TableCell sx={commonTableBodyButtonCellStyles(densePadding)} >
37
37
  <Tooltip
38
38
  arrow
39
39
  enterDelay={1000}
@@ -55,6 +55,6 @@ export const MRT_SelectCheckbox: FC<Props> = ({ row, selectAll }) => {
55
55
  title={undefined}
56
56
  />
57
57
  </Tooltip>
58
- </MRT_TableButtonCell>
58
+ </TableCell>
59
59
  );
60
60
  };
@@ -1,12 +1,12 @@
1
1
  import React, { FC } from 'react';
2
- import { Divider, Menu, MenuItem as MuiMenuItem, styled } from '@mui/material';
2
+ import { Divider, Menu, MenuItem } from '@mui/material';
3
3
  import { useMRT } from '../useMRT';
4
4
  import { MRT_HeaderGroup } from '..';
5
5
 
6
- const MenuItem = styled(MuiMenuItem)({
6
+ const commonMenuItemStyles = {
7
7
  display: 'flex',
8
8
  gap: '0.75rem',
9
- });
9
+ };
10
10
 
11
11
  interface Props {
12
12
  anchorEl: HTMLElement | null;
@@ -88,6 +88,7 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
88
88
  key={1}
89
89
  disabled={!column.isSorted}
90
90
  onClick={handleClearSort}
91
+ sx={commonMenuItemStyles}
91
92
  >
92
93
  <ClearAllIcon /> {localization.columnActionMenuItemClearSort}
93
94
  </MenuItem>,
@@ -95,6 +96,7 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
95
96
  key={2}
96
97
  disabled={column.isSorted && !column.isSortedDesc}
97
98
  onClick={handleSortAsc}
99
+ sx={commonMenuItemStyles}
98
100
  >
99
101
  <SortIcon />{' '}
100
102
  {localization.columnActionMenuItemSortAsc?.replace(
@@ -106,6 +108,7 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
106
108
  key={3}
107
109
  disabled={column.isSorted && column.isSortedDesc}
108
110
  onClick={handleSortDesc}
111
+ sx={commonMenuItemStyles}
109
112
  >
110
113
  <SortIcon style={{ transform: 'rotate(180deg) scaleX(-1)' }} />{' '}
111
114
  {localization.columnActionMenuItemSortDesc?.replace(
@@ -117,7 +120,11 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
117
120
  {!disableFilters &&
118
121
  column.canFilter && [
119
122
  <Divider key={0} />,
120
- <MenuItem key={1} onClick={handleFilterByColumn}>
123
+ <MenuItem
124
+ key={1}
125
+ onClick={handleFilterByColumn}
126
+ sx={commonMenuItemStyles}
127
+ >
121
128
  <FilterListIcon />{' '}
122
129
  {localization.filterTextFieldPlaceholder?.replace(
123
130
  '{column}',
@@ -128,7 +135,11 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
128
135
  {enableColumnGrouping &&
129
136
  column.canGroupBy && [
130
137
  <Divider key={1} />,
131
- <MenuItem key={2} onClick={handleGroupByColumn}>
138
+ <MenuItem
139
+ key={2}
140
+ onClick={handleGroupByColumn}
141
+ sx={commonMenuItemStyles}
142
+ >
132
143
  <DynamicFeedIcon />{' '}
133
144
  {localization[
134
145
  column.isGrouped
@@ -139,7 +150,7 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
139
150
  ]}
140
151
  {!disableColumnHiding && [
141
152
  <Divider key={0} />,
142
- <MenuItem key={1} onClick={handleHideColumn}>
153
+ <MenuItem key={1} onClick={handleHideColumn} sx={commonMenuItemStyles}>
143
154
  <VisibilityOffIcon />{' '}
144
155
  {localization.columnActionMenuItemHideColumn?.replace(
145
156
  '{column}',
@@ -1,13 +1,8 @@
1
1
  import React, { FC } from 'react';
2
- import { Menu, MenuItem as MuiMenuItem, styled } from '@mui/material';
2
+ import { Menu, MenuItem } from '@mui/material';
3
3
  import { useMRT } from '../useMRT';
4
4
  import { MRT_Row } from '..';
5
5
 
6
- const MenuItem = styled(MuiMenuItem)({
7
- display: 'flex',
8
- gap: '0.75rem',
9
- });
10
-
11
6
  interface Props {
12
7
  anchorEl: HTMLElement | null;
13
8
  row: MRT_Row;
@@ -36,7 +31,7 @@ export const MRT_RowActionMenu: FC<Props> = ({
36
31
  onClose={() => setAnchorEl(null)}
37
32
  >
38
33
  {enableRowEditing && (
39
- <MenuItem onClick={handleEdit}>
34
+ <MenuItem sx={{ display: 'flex', gap: '0.75rem' }} onClick={handleEdit}>
40
35
  <EditIcon /> {localization.rowActionMenuItemEdit}
41
36
  </MenuItem>
42
37
  )}
@@ -28,7 +28,7 @@ export const MRT_ShowHideColumnsMenu: FC<Props> = ({ column }) => {
28
28
 
29
29
  return (
30
30
  <>
31
- <MenuItem style={{ paddingLeft: `${(column.depth + 0.5) * 2}rem` }}>
31
+ <MenuItem sx={{ pl: `${(column.depth + 0.5) * 2}rem` }}>
32
32
  <FormControlLabel
33
33
  checked={switchChecked}
34
34
  control={<Switch />}
@@ -16,7 +16,7 @@ export const MRT_Table: FC<Props> = () => {
16
16
  ...tableInstance.getTableProps(),
17
17
  style: {
18
18
  ...tableInstance.getTableProps().style,
19
- ...(muiTableProps?.style ?? {}),
19
+ ...muiTableProps?.style,
20
20
  },
21
21
  };
22
22
 
@@ -1,43 +1,10 @@
1
1
  import React, { FC, useEffect, useRef } from 'react';
2
- import {
3
- CircularProgress,
4
- LinearProgress,
5
- Paper,
6
- TableContainer as MuiTableContainer,
7
- alpha,
8
- styled,
9
- } from '@mui/material';
2
+ import { LinearProgress, Paper, TableContainer, Collapse } from '@mui/material';
10
3
  import { useMRT } from '../useMRT';
11
4
  import { MRT_Table } from './MRT_Table';
12
5
  import { MRT_ToolbarTop } from '../toolbar/MRT_ToolbarTop';
13
6
  import { MRT_ToolbarBottom } from '../toolbar/MRT_ToolbarBottom';
14
7
 
15
- const TableContainer = styled(MuiTableContainer, {
16
- shouldForwardProp: (prop) => prop !== 'fullScreen',
17
- })<{ fullScreen?: boolean; component: any }>(({ fullScreen }) => ({
18
- bottom: fullScreen ? '0' : undefined,
19
- height: fullScreen ? '100%' : undefined,
20
- left: fullScreen ? '0' : undefined,
21
- margin: fullScreen ? '0' : undefined,
22
- position: fullScreen ? 'fixed' : undefined,
23
- right: fullScreen ? '0' : undefined,
24
- top: fullScreen ? '0' : undefined,
25
- transition: 'all 0.2s ease-in-out',
26
- width: fullScreen ? '100vw' : undefined,
27
- zIndex: fullScreen ? 1200 : 1,
28
- }));
29
-
30
- const CircularProgressWrapper = styled('div')(({ theme }) => ({
31
- alignItems: 'center',
32
- backgroundColor: alpha(theme.palette.background.paper, 0.5),
33
- display: 'grid',
34
- height: '100%',
35
- justifyContent: 'center',
36
- margin: 'auto',
37
- position: 'absolute',
38
- width: 'calc(100% - 2rem)',
39
- }));
40
-
41
8
  interface Props {}
42
9
 
43
10
  export const MRT_TableContainer: FC<Props> = () => {
@@ -77,16 +44,25 @@ export const MRT_TableContainer: FC<Props> = () => {
77
44
  return (
78
45
  <TableContainer
79
46
  component={Paper}
80
- fullScreen={fullScreen}
81
47
  {...tableContainerProps}
48
+ sx={{
49
+ bottom: fullScreen ? '0' : undefined,
50
+ height: fullScreen ? '100%' : undefined,
51
+ left: fullScreen ? '0' : undefined,
52
+ m: fullScreen ? '0' : undefined,
53
+ position: fullScreen ? 'fixed' : undefined,
54
+ right: fullScreen ? '0' : undefined,
55
+ top: fullScreen ? '0' : undefined,
56
+ transition: 'all 0.2s ease-in-out',
57
+ width: fullScreen ? '100vw' : undefined,
58
+ zIndex: fullScreen ? 1200 : 1,
59
+ ...tableContainerProps?.sx,
60
+ }}
82
61
  >
83
62
  {!hideToolbarTop && <MRT_ToolbarTop />}
84
- {isFetching && <LinearProgress />}
85
- {isLoading && (
86
- <CircularProgressWrapper>
87
- <CircularProgress aria-busy="true" aria-label="Loading data" />
88
- </CircularProgressWrapper>
89
- )}
63
+ <Collapse in={isFetching || isLoading} unmountOnExit>
64
+ <LinearProgress />
65
+ </Collapse>
90
66
  <MRT_Table />
91
67
  {!hideToolbarBottom && <MRT_ToolbarBottom />}
92
68
  </TableContainer>
@@ -17,10 +17,11 @@ export const MRT_TableSpacerCell: FC<Props> = ({ width }) => {
17
17
  const tableCellProps = {
18
18
  ...mTableBodyCellrops,
19
19
  style: {
20
- width,
21
- ...(mTableBodyCellrops?.style ?? {}),
20
+ ...mTableBodyCellrops?.style,
22
21
  },
23
22
  };
24
23
 
25
- return <TableCell {...tableCellProps} />;
24
+ return (
25
+ <TableCell {...tableCellProps} sx={{ width, ...tableCellProps?.sx }} />
26
+ );
26
27
  };
@@ -32,8 +32,13 @@ export const MRT_TablePagination: FC<Props> = () => {
32
32
  showLastButton={
33
33
  tableInstance.rows.length / tableInstance.state.pageSize > 2
34
34
  }
35
- style={{ padding: 0, position: 'relative', zIndex: 2 }}
36
35
  {...tablePaginationProps}
36
+ sx={{
37
+ p: 0,
38
+ position: 'relative',
39
+ zIndex: 2,
40
+ ...tablePaginationProps?.sx,
41
+ }}
37
42
  />
38
43
  );
39
44
  };
@@ -1,31 +1,7 @@
1
1
  import React, { FC, Fragment } from 'react';
2
- import {
3
- Alert as MuiAlert,
4
- Chip,
5
- Collapse,
6
- styled,
7
- useMediaQuery,
8
- } from '@mui/material';
2
+ import { Alert, Box, Chip, Collapse, useMediaQuery } from '@mui/material';
9
3
  import { useMRT } from '../useMRT';
10
4
 
11
- const Alert = styled(MuiAlert, {
12
- shouldForwardProp: (prop) =>
13
- prop !== 'displayAbsolute' && prop !== 'toolbarPosition',
14
- })<{ displayAbsolute?: boolean; toolbarPosition?: 'top' | 'bottom' }>(
15
- ({ displayAbsolute, toolbarPosition }) => ({
16
- borderRadius: 0,
17
- fontSize: '1rem',
18
- left: 0,
19
- marginLeft: !displayAbsolute ? '-0.5rem' : undefined,
20
- padding: toolbarPosition === 'bottom' ? '0 1rem' : '0.5rem 1.25rem',
21
- position: displayAbsolute ? 'absolute' : 'relative',
22
- right: 0,
23
- top: 0,
24
- width: `calc(100% - ${displayAbsolute ? '2.5rem' : '1.5rem'})`,
25
- zIndex: 2,
26
- }),
27
- );
28
-
29
5
  interface Props {}
30
6
 
31
7
  export const MRT_ToolbarAlertBanner: FC<Props> = () => {
@@ -89,13 +65,27 @@ export const MRT_ToolbarAlertBanner: FC<Props> = () => {
89
65
  timeout={displayAbsolute ? 0 : 200}
90
66
  >
91
67
  <Alert
92
- displayAbsolute={displayAbsolute}
93
- icon={false}
94
68
  color="info"
69
+ icon={false}
70
+ sx={{
71
+ borderRadius: 0,
72
+ fontSize: '1rem',
73
+ left: 0,
74
+ p: 0,
75
+ position: displayAbsolute ? 'absolute' : 'relative',
76
+ right: 0,
77
+ minHeight: '3.5rem',
78
+ top: 0,
79
+ width: '100%',
80
+ zIndex: 2,
81
+ ...alertProps?.sx,
82
+ }}
95
83
  {...alertProps}
96
84
  >
97
- {selectMessage}
98
- {groupedByMessage}
85
+ <Box sx={{ p: '0.5rem 1rem' }}>
86
+ {selectMessage}
87
+ {groupedByMessage}
88
+ </Box>
99
89
  </Alert>
100
90
  </Collapse>
101
91
  );
@@ -1,28 +1,10 @@
1
1
  import React, { FC } from 'react';
2
- import { alpha, styled, Toolbar as MuiToolbar } from '@mui/material';
2
+ import { alpha, Toolbar } from '@mui/material';
3
3
  import { useMRT } from '../useMRT';
4
4
  import { MRT_TablePagination } from './MRT_TablePagination';
5
5
  import { MRT_ToolbarInternalButtons } from './MRT_ToolbarInternalButtons';
6
6
  import { MRT_ToolbarAlertBanner } from './MRT_ToolbarAlertBanner';
7
7
 
8
- const Toolbar = styled(MuiToolbar, {
9
- shouldForwardProp: (prop) => prop !== 'fullScreen',
10
- })<{ fullScreen?: boolean }>(({ fullScreen, theme }) => ({
11
- backgroundColor: theme.palette.background.default,
12
- backgroundImage: `linear-gradient(${alpha(
13
- theme.palette.common.white,
14
- 0.05,
15
- )},${alpha(theme.palette.common.white, 0.05)})`,
16
- bottom: fullScreen ? '0' : undefined,
17
- display: 'flex',
18
- justifyContent: 'space-between',
19
- overflowY: 'hidden',
20
- padding: '0 0.5rem !important',
21
- position: fullScreen ? 'fixed' : undefined,
22
- width: 'calc(100% - 1rem)',
23
- zIndex: 1,
24
- }));
25
-
26
8
  interface Props {}
27
9
 
28
10
  export const MRT_ToolbarBottom: FC<Props> = () => {
@@ -43,7 +25,28 @@ export const MRT_ToolbarBottom: FC<Props> = () => {
43
25
  : muiTableToolbarBottomProps;
44
26
 
45
27
  return (
46
- <Toolbar fullScreen={fullScreen} variant="dense" {...toolbarProps}>
28
+ <Toolbar
29
+ variant="dense"
30
+ {...toolbarProps}
31
+ sx={(theme) =>
32
+ ({
33
+ backgroundColor: theme.palette.background.default,
34
+ backgroundImage: `linear-gradient(${alpha(
35
+ theme.palette.common.white,
36
+ 0.05,
37
+ )},${alpha(theme.palette.common.white, 0.05)})`,
38
+ bottom: fullScreen ? '0' : undefined,
39
+ display: 'flex',
40
+ justifyContent: 'space-between',
41
+ overflowY: 'hidden',
42
+ p: '0 0.5rem !important',
43
+ position: fullScreen ? 'fixed' : undefined,
44
+ width: 'calc(100% - 1rem)',
45
+ zIndex: 1,
46
+ ...toolbarProps?.sx,
47
+ } as any)
48
+ }
49
+ >
47
50
  {!hideToolbarInternalActions && positionToolbarActions === 'bottom' ? (
48
51
  <MRT_ToolbarInternalButtons />
49
52
  ) : (
@@ -1,17 +1,11 @@
1
1
  import React, { FC } from 'react';
2
- import { styled } from '@mui/material';
3
- import { MRT_ToggleFiltersButton } from '../buttons/MRT_ToggleFiltersButton';
2
+ import { Box } from '@mui/material';
3
+ import { MRT_FullScreenToggleButton } from '../buttons/MRT_FullScreenToggleButton';
4
4
  import { MRT_ShowHideColumnsButton } from '../buttons/MRT_ShowHideColumnsButton';
5
- import { useMRT } from '../useMRT';
6
5
  import { MRT_ToggleDensePaddingButton } from '../buttons/MRT_ToggleDensePaddingButton';
6
+ import { MRT_ToggleFiltersButton } from '../buttons/MRT_ToggleFiltersButton';
7
7
  import { MRT_ToggleSearchButton } from '../buttons/MRT_ToggleSearchButton';
8
- import { MRT_FullScreenToggleButton } from '../buttons/MRT_FullScreenToggleButton';
9
-
10
- const ToolbarButtonsContainer = styled('div')({
11
- display: 'flex',
12
- gap: '0.5rem',
13
- alignItems: 'center',
14
- });
8
+ import { useMRT } from '../useMRT';
15
9
 
16
10
  interface Props {}
17
11
 
@@ -41,12 +35,19 @@ export const MRT_ToolbarInternalButtons: FC<Props> = () => {
41
35
  }
42
36
 
43
37
  return (
44
- <ToolbarButtonsContainer>
38
+ <Box
39
+ sx={{
40
+ display: 'flex',
41
+ gap: '0.5rem',
42
+ alignItems: 'center',
43
+ p: '0 0.5rem',
44
+ }}
45
+ >
45
46
  {!disableGlobalFilter && <MRT_ToggleSearchButton />}
46
47
  {!disableFilters && <MRT_ToggleFiltersButton />}
47
48
  {!disableColumnHiding && <MRT_ShowHideColumnsButton />}
48
49
  {!disableDensePaddingToggle && <MRT_ToggleDensePaddingButton />}
49
50
  {!disableFullScreenToggle && <MRT_FullScreenToggleButton />}
50
- </ToolbarButtonsContainer>
51
+ </Box>
51
52
  );
52
53
  };