material-react-table 2.11.2 → 2.11.3

Sign up to get free protection for your applications and to get access to all the features.
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2.11.2",
2
+ "version": "2.11.3",
3
3
  "license": "MIT",
4
4
  "name": "material-react-table",
5
5
  "description": "A fully featured Material UI V5 implementation of TanStack React Table V8, written from the ground up in TypeScript.",
@@ -65,26 +65,26 @@
65
65
  "@babel/preset-react": "^7.23.3",
66
66
  "@emotion/react": "^11.11.3",
67
67
  "@emotion/styled": "^11.11.0",
68
- "@faker-js/faker": "^8.4.0",
69
- "@mui/icons-material": "^5.15.7",
70
- "@mui/material": "^5.15.7",
71
- "@mui/x-date-pickers": "^6.19.3",
68
+ "@faker-js/faker": "^8.4.1",
69
+ "@mui/icons-material": "^5.15.10",
70
+ "@mui/material": "^5.15.10",
71
+ "@mui/x-date-pickers": "^6.19.4",
72
72
  "@rollup/plugin-typescript": "^11.1.6",
73
73
  "@size-limit/preset-small-lib": "^11.0.2",
74
- "@storybook/addon-a11y": "^7.6.12",
75
- "@storybook/addon-essentials": "^7.6.12",
76
- "@storybook/addon-interactions": "^7.6.12",
77
- "@storybook/addon-links": "^7.6.12",
78
- "@storybook/addon-storysource": "^7.6.12",
79
- "@storybook/blocks": "^7.6.12",
80
- "@storybook/react": "^7.6.12",
81
- "@storybook/react-vite": "^7.6.12",
74
+ "@storybook/addon-a11y": "^7.6.15",
75
+ "@storybook/addon-essentials": "^7.6.15",
76
+ "@storybook/addon-interactions": "^7.6.15",
77
+ "@storybook/addon-links": "^7.6.15",
78
+ "@storybook/addon-storysource": "^7.6.15",
79
+ "@storybook/blocks": "^7.6.15",
80
+ "@storybook/react": "^7.6.15",
81
+ "@storybook/react-vite": "^7.6.15",
82
82
  "@storybook/testing-library": "^0.2.2",
83
- "@types/node": "^20.11.16",
84
- "@types/react": "^18.2.52",
85
- "@types/react-dom": "^18.2.18",
86
- "@typescript-eslint/eslint-plugin": "^6.20.0",
87
- "@typescript-eslint/parser": "^6.20.0",
83
+ "@types/node": "^20.11.17",
84
+ "@types/react": "^18.2.55",
85
+ "@types/react-dom": "^18.2.19",
86
+ "@typescript-eslint/eslint-plugin": "^7.0.1",
87
+ "@typescript-eslint/parser": "^7.0.1",
88
88
  "@vitejs/plugin-react": "^4.2.1",
89
89
  "eslint": "^8.56.0",
90
90
  "eslint-plugin-mui-path-imports": "^0.0.15",
@@ -99,11 +99,11 @@
99
99
  "rollup-plugin-dts": "^6.1.0",
100
100
  "rollup-plugin-peer-deps-external": "^2.2.4",
101
101
  "size-limit": "^11.0.2",
102
- "storybook": "^7.6.12",
102
+ "storybook": "^7.6.15",
103
103
  "storybook-dark-mode": "^3.0.3",
104
104
  "tslib": "^2.6.2",
105
105
  "typescript": "^5.3.3",
106
- "vite": "^5.0.12"
106
+ "vite": "^5.1.1"
107
107
  },
108
108
  "peerDependencies": {
109
109
  "@emotion/react": ">=11.11",
@@ -116,7 +116,7 @@
116
116
  },
117
117
  "dependencies": {
118
118
  "@tanstack/match-sorter-utils": "8.11.8",
119
- "@tanstack/react-table": "8.11.8",
119
+ "@tanstack/react-table": "8.12.0",
120
120
  "@tanstack/react-virtual": "3.0.4",
121
121
  "highlight-words": "1.2.2"
122
122
  }
@@ -17,8 +17,7 @@ import {
17
17
  type MRT_TableInstance,
18
18
  } from '../../types';
19
19
  import { isCellEditable, openEditingCell } from '../../utils/cell.utils';
20
- import { getIsFirstColumn, getIsLastColumn } from '../../utils/column.utils';
21
- import { getCommonMRTCellStyles, getMRTTheme } from '../../utils/style.utils';
20
+ import { getCommonMRTCellStyles } from '../../utils/style.utils';
22
21
  import { parseFromValuesOrFunc } from '../../utils/utils';
23
22
  import { MRT_CopyButton } from '../buttons/MRT_CopyButton';
24
23
  import { MRT_EditCellTextField } from '../inputs/MRT_EditCellTextField';
@@ -56,6 +55,7 @@ export const MRT_TableBodyCell = <TData extends MRT_RowData>({
56
55
  enableColumnPinning,
57
56
  enableGrouping,
58
57
  layoutMode,
58
+ mrtTheme: { draggingBorderColor },
59
59
  muiSkeletonProps,
60
60
  muiTableBodyCellProps,
61
61
  },
@@ -93,8 +93,6 @@ export const MRT_TableBodyCell = <TData extends MRT_RowData>({
93
93
  table,
94
94
  });
95
95
 
96
- const { draggingBorderColor } = getMRTTheme(table, theme);
97
-
98
96
  const [skeletonWidth, setSkeletonWidth] = useState(100);
99
97
  useEffect(() => {
100
98
  if ((!isLoading && !showSkeletons) || skeletonWidth !== 100) return;
@@ -111,8 +109,8 @@ export const MRT_TableBodyCell = <TData extends MRT_RowData>({
111
109
  const isHoveredColumn = hoveredColumn?.id === column.id;
112
110
  const isDraggingRow = draggingRow?.id === row.id;
113
111
  const isHoveredRow = hoveredRow?.id === row.id;
114
- const isFirstColumn = getIsFirstColumn(column, table);
115
- const isLastColumn = getIsLastColumn(column, table);
112
+ const isFirstColumn = column.getIsFirstColumn();
113
+ const isLastColumn = column.getIsLastColumn();
116
114
  const isLastRow = numRows && staticRowIndex === numRows - 1;
117
115
  const isResizingColumn = columnSizingInfo.isResizingColumn === column.id;
118
116
  const showResizeBorder =
@@ -5,7 +5,6 @@ import {
5
5
  type MRT_RowData,
6
6
  type MRT_TableInstance,
7
7
  } from '../../types';
8
- import { getMRTTheme } from '../../utils/style.utils';
9
8
  import highlightWords from 'highlight-words';
10
9
 
11
10
  const allowedTypes = ['string', 'number'];
@@ -27,7 +26,10 @@ export const MRT_TableBodyCellValue = <TData extends MRT_RowData>({
27
26
  }: MRT_TableBodyCellValueProps<TData>) => {
28
27
  const {
29
28
  getState,
30
- options: { enableFilterMatchHighlighting },
29
+ options: {
30
+ enableFilterMatchHighlighting,
31
+ mrtTheme: { matchHighlightColor },
32
+ },
31
33
  } = table;
32
34
  const { column, row } = cell;
33
35
  const { columnDef } = column;
@@ -88,8 +90,7 @@ export const MRT_TableBodyCellValue = <TData extends MRT_RowData>({
88
90
  sx={
89
91
  match
90
92
  ? {
91
- backgroundColor: (theme) =>
92
- getMRTTheme(table, theme).matchHighlightColor,
93
+ backgroundColor: matchHighlightColor,
93
94
  borderRadius: '2px',
94
95
  color: (theme) =>
95
96
  theme.palette.mode === 'dark'
@@ -23,7 +23,6 @@ import { getIsRowSelected } from '../../utils/row.utils';
23
23
  import {
24
24
  commonCellBeforeAfterStyles,
25
25
  getCommonPinnedCellStyles,
26
- getMRTTheme,
27
26
  } from '../../utils/style.utils';
28
27
  import { parseFromValuesOrFunc } from '../../utils/utils';
29
28
 
@@ -61,6 +60,11 @@ export const MRT_TableBodyRow = <TData extends MRT_RowData>({
61
60
  enableStickyHeader,
62
61
  layoutMode,
63
62
  memoMode,
63
+ mrtTheme: {
64
+ baseBackgroundColor,
65
+ pinnedRowBackgroundColor,
66
+ selectedRowBackgroundColor,
67
+ },
64
68
  muiTableBodyRowProps,
65
69
  renderDetailPanel,
66
70
  rowPinningDisplayMode,
@@ -138,12 +142,6 @@ export const MRT_TableBodyRow = <TData extends MRT_RowData>({
138
142
 
139
143
  const rowRef = useRef<HTMLTableRowElement | null>(null);
140
144
 
141
- const {
142
- baseBackgroundColor,
143
- pinnedRowBackgroundColor,
144
- selectedRowBackgroundColor,
145
- } = getMRTTheme(table, theme);
146
-
147
145
  const cellHighlightColor = isRowSelected
148
146
  ? selectedRowBackgroundColor
149
147
  : isRowPinned
@@ -9,7 +9,6 @@ import {
9
9
  type MRT_TableInstance,
10
10
  type MRT_VirtualItem,
11
11
  } from '../../types';
12
- import { getMRTTheme } from '../../utils/style.utils';
13
12
  import { parseFromValuesOrFunc } from '../../utils/utils';
14
13
 
15
14
  export interface MRT_TableDetailPanelProps<TData extends MRT_RowData>
@@ -37,6 +36,7 @@ export const MRT_TableDetailPanel = <TData extends MRT_RowData>({
37
36
  options: {
38
37
  enableRowVirtualization,
39
38
  layoutMode,
39
+ mrtTheme: { baseBackgroundColor },
40
40
  muiDetailPanelProps,
41
41
  muiTableBodyRowProps,
42
42
  renderDetailPanel,
@@ -89,9 +89,7 @@ export const MRT_TableDetailPanel = <TData extends MRT_RowData>({
89
89
  colSpan={getVisibleLeafColumns().length}
90
90
  {...tableCellProps}
91
91
  sx={(theme) => ({
92
- backgroundColor: virtualRow
93
- ? getMRTTheme(table, theme).baseBackgroundColor
94
- : undefined,
92
+ backgroundColor: virtualRow ? baseBackgroundColor : undefined,
95
93
  borderBottom: !row.getIsExpanded() ? 'none' : undefined,
96
94
  display: layoutMode?.startsWith('grid') ? 'flex' : undefined,
97
95
  py: !!DetailPanel && row.getIsExpanded() ? '1rem' : 0,
@@ -8,7 +8,6 @@ import {
8
8
  type MRT_TableInstance,
9
9
  type MRT_VirtualItem,
10
10
  } from '../../types';
11
- import { getMRTTheme } from '../../utils/style.utils';
12
11
  import { parseFromValuesOrFunc } from '../../utils/utils';
13
12
 
14
13
  export interface MRT_TableFooterRowProps<TData extends MRT_RowData>
@@ -25,7 +24,11 @@ export const MRT_TableFooterRow = <TData extends MRT_RowData>({
25
24
  ...rest
26
25
  }: MRT_TableFooterRowProps<TData>) => {
27
26
  const {
28
- options: { layoutMode, muiTableFooterRowProps },
27
+ options: {
28
+ layoutMode,
29
+ mrtTheme: { baseBackgroundColor },
30
+ muiTableFooterRowProps,
31
+ },
29
32
  } = table;
30
33
 
31
34
  const { virtualColumns, virtualPaddingLeft, virtualPaddingRight } =
@@ -55,7 +58,7 @@ export const MRT_TableFooterRow = <TData extends MRT_RowData>({
55
58
  <TableRow
56
59
  {...tableRowProps}
57
60
  sx={(theme) => ({
58
- backgroundColor: getMRTTheme(table, theme).baseBackgroundColor,
61
+ backgroundColor: baseBackgroundColor,
59
62
  display: layoutMode?.startsWith('grid') ? 'flex' : undefined,
60
63
  position: 'relative',
61
64
  width: '100%',
@@ -15,7 +15,7 @@ import {
15
15
  type MRT_RowData,
16
16
  type MRT_TableInstance,
17
17
  } from '../../types';
18
- import { getCommonMRTCellStyles, getMRTTheme } from '../../utils/style.utils';
18
+ import { getCommonMRTCellStyles } from '../../utils/style.utils';
19
19
  import { parseFromValuesOrFunc } from '../../utils/utils';
20
20
 
21
21
  export interface MRT_TableHeadCellProps<TData extends MRT_RowData>
@@ -47,6 +47,7 @@ export const MRT_TableHeadCell = <TData extends MRT_RowData>({
47
47
  enableGrouping,
48
48
  enableMultiSort,
49
49
  layoutMode,
50
+ mrtTheme: { draggingBorderColor },
50
51
  muiTableHeadCellProps,
51
52
  },
52
53
  refs: { tableHeadCellRefs },
@@ -73,8 +74,6 @@ export const MRT_TableHeadCell = <TData extends MRT_RowData>({
73
74
  ...rest,
74
75
  };
75
76
 
76
- const { draggingBorderColor } = getMRTTheme(table, theme);
77
-
78
77
  const isColumnPinned =
79
78
  enableColumnPinning &&
80
79
  columnDef.columnDefType !== 'group' &&
@@ -9,7 +9,6 @@ import {
9
9
  type MRT_TableInstance,
10
10
  type MRT_VirtualItem,
11
11
  } from '../../types';
12
- import { getMRTTheme } from '../../utils/style.utils';
13
12
  import { parseFromValuesOrFunc } from '../../utils/utils';
14
13
 
15
14
  export interface MRT_TableHeadRowProps<TData extends MRT_RowData>
@@ -26,7 +25,12 @@ export const MRT_TableHeadRow = <TData extends MRT_RowData>({
26
25
  ...rest
27
26
  }: MRT_TableHeadRowProps<TData>) => {
28
27
  const {
29
- options: { enableStickyHeader, layoutMode, muiTableHeadRowProps },
28
+ options: {
29
+ enableStickyHeader,
30
+ layoutMode,
31
+ mrtTheme: { baseBackgroundColor },
32
+ muiTableHeadRowProps,
33
+ },
30
34
  } = table;
31
35
 
32
36
  const { virtualColumns, virtualPaddingLeft, virtualPaddingRight } =
@@ -44,7 +48,7 @@ export const MRT_TableHeadRow = <TData extends MRT_RowData>({
44
48
  <TableRow
45
49
  {...tableRowProps}
46
50
  sx={(theme) => ({
47
- backgroundColor: getMRTTheme(table, theme).baseBackgroundColor,
51
+ backgroundColor: baseBackgroundColor,
48
52
  boxShadow: `4px 0 8px ${alpha(theme.palette.common.black, 0.1)}`,
49
53
  display: layoutMode?.startsWith('grid') ? 'flex' : undefined,
50
54
  position:
@@ -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
- row ? onSelectionChange!(event) : onSelectAllChange(event);
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, getMRTTheme } from '../../utils/style.utils';
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 ${getMRTTheme(table, theme).draggingBorderColor}`
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: { localization, muiCircularProgressProps },
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={(theme) => ({
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,
@@ -64,7 +64,7 @@ export const MRT_TablePaper = <TData extends MRT_RowData>({
64
64
  ...paperProps?.style,
65
65
  }}
66
66
  sx={(theme) => ({
67
- backgroundColor: getMRTTheme(table, theme).baseBackgroundColor,
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) => getMRT_SelectAllHandler({ table })(event, false)}
71
+ onClick={(event) =>
72
+ getMRT_SelectAllHandler({ table })(event, false, true)
73
+ }
72
74
  size="small"
73
75
  sx={{ p: '2px' }}
74
76
  >
@@ -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?: CSSProperties['backgroundColor'];
261
- draggingBorderColor?: CSSProperties['borderColor'];
262
- matchHighlightColor?: CSSProperties['backgroundColor'];
263
- menuBackgroundColor?: CSSProperties['backgroundColor'];
264
- pinnedRowBackgroundColor?: CSSProperties['backgroundColor'];
265
- selectedRowBackgroundColor?: CSSProperties['backgroundColor'];
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
- icons: MRT_Icons;
354
- localization: MRT_Localization;
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;