material-react-table 2.6.0 → 2.7.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.
Files changed (47) hide show
  1. package/dist/index.d.ts +224 -240
  2. package/dist/index.esm.js +2248 -2211
  3. package/dist/index.esm.js.map +1 -1
  4. package/dist/index.js +2353 -2315
  5. package/dist/index.js.map +1 -1
  6. package/package.json +2 -2
  7. package/src/body/MRT_TableBody.tsx +3 -25
  8. package/src/body/MRT_TableBodyRow.tsx +4 -2
  9. package/src/body/MRT_TableDetailPanel.tsx +3 -3
  10. package/src/buttons/MRT_CopyButton.tsx +2 -3
  11. package/src/buttons/MRT_ExpandAllButton.tsx +2 -2
  12. package/src/buttons/MRT_ExpandButton.tsx +5 -2
  13. package/src/buttons/MRT_GrabHandleButton.tsx +2 -3
  14. package/src/buttons/MRT_RowPinButton.tsx +2 -2
  15. package/src/buttons/MRT_ToggleRowActionMenuButton.tsx +6 -6
  16. package/src/column.utils.ts +22 -29
  17. package/src/head/MRT_TableHead.tsx +1 -1
  18. package/src/head/MRT_TableHeadCellColumnActionsButton.tsx +2 -3
  19. package/src/hooks/useMRT_DisplayColumns.tsx +43 -52
  20. package/src/hooks/useMRT_Effects.ts +6 -5
  21. package/src/hooks/useMRT_Rows.ts +30 -4
  22. package/src/hooks/useMRT_TableInstance.ts +44 -55
  23. package/src/hooks/useMRT_TableOptions.ts +2 -0
  24. package/src/icons.ts +4 -38
  25. package/src/index.ts +84 -10
  26. package/src/inputs/MRT_FilterCheckbox.tsx +2 -2
  27. package/src/inputs/MRT_SelectCheckbox.tsx +2 -2
  28. package/src/menus/MRT_ColumnActionMenu.tsx +11 -3
  29. package/src/menus/MRT_FilterOptionMenu.tsx +8 -0
  30. package/src/menus/MRT_RowActionMenu.tsx +14 -3
  31. package/src/menus/MRT_ShowHideColumnsMenu.tsx +8 -0
  32. package/src/menus/MRT_ShowHideColumnsMenuItems.tsx +2 -3
  33. package/src/style.utils.ts +29 -13
  34. package/src/table/MRT_TableContainer.tsx +1 -1
  35. package/src/toolbar/MRT_TablePagination.tsx +7 -5
  36. package/src/toolbar/MRT_ToolbarAlertBanner.tsx +1 -1
  37. package/src/types.ts +5 -0
  38. package/src/body/index.ts +0 -7
  39. package/src/buttons/index.ts +0 -13
  40. package/src/footer/index.ts +0 -3
  41. package/src/head/index.ts +0 -9
  42. package/src/hooks/index.ts +0 -7
  43. package/src/inputs/index.ts +0 -7
  44. package/src/menus/index.ts +0 -5
  45. package/src/modals/index.ts +0 -1
  46. package/src/table/index.ts +0 -5
  47. package/src/toolbar/index.ts +0 -7
@@ -1,5 +1,6 @@
1
1
  import { type CSSProperties } from 'react';
2
2
  import { type TableCellProps } from '@mui/material/TableCell';
3
+ import { type TooltipProps } from '@mui/material/Tooltip';
3
4
  import { alpha, darken, lighten } from '@mui/material/styles';
4
5
  import { type Theme } from '@mui/material/styles';
5
6
  import {
@@ -20,20 +21,26 @@ export const parseCSSVarId = (id: string) => id.replace(/[^a-zA-Z0-9]/g, '_');
20
21
  export const getMRTTheme = <TData extends MRT_RowData>(
21
22
  table: MRT_TableInstance<TData>,
22
23
  theme: Theme,
23
- ) => ({
24
- baseBackgroundColor:
25
- theme.palette.mode === 'dark'
24
+ ) => {
25
+ const themeOverrides = parseFromValuesOrFunc(table.options.mrtTheme, theme);
26
+ const baseBackgroundColor =
27
+ themeOverrides?.baseBackgroundColor ??
28
+ (theme.palette.mode === 'dark'
26
29
  ? lighten(theme.palette.background.default, 0.05)
27
- : theme.palette.background.default,
28
- draggingBorderColor: theme.palette.primary.main,
29
- matchHighlightColor:
30
- theme.palette.mode === 'dark'
31
- ? darken(theme.palette.warning.dark, 0.25)
32
- : lighten(theme.palette.warning.light, 0.5),
33
- pinnedRowBackgroundColor: alpha(theme.palette.primary.main, 0.1),
34
- selectedRowBackgroundColor: alpha(theme.palette.primary.main, 0.2),
35
- ...parseFromValuesOrFunc(table.options.mrtTheme, theme),
36
- });
30
+ : theme.palette.background.default);
31
+ return {
32
+ baseBackgroundColor,
33
+ draggingBorderColor: theme.palette.primary.main,
34
+ matchHighlightColor:
35
+ theme.palette.mode === 'dark'
36
+ ? darken(theme.palette.warning.dark, 0.25)
37
+ : lighten(theme.palette.warning.light, 0.5),
38
+ menuBackgroundColor: lighten(baseBackgroundColor, 0.07),
39
+ pinnedRowBackgroundColor: alpha(theme.palette.primary.main, 0.1),
40
+ selectedRowBackgroundColor: alpha(theme.palette.primary.main, 0.2),
41
+ ...themeOverrides,
42
+ };
43
+ };
37
44
 
38
45
  export const getCommonMRTCellStyles = <TData extends MRT_RowData>({
39
46
  column,
@@ -133,3 +140,12 @@ export const flipIconStyles = (theme: Theme) =>
133
140
  theme.direction === 'rtl'
134
141
  ? { style: { transform: 'scaleX(-1)' } }
135
142
  : undefined;
143
+
144
+ export const getCommonTooltipProps = (
145
+ placement?: TooltipProps['placement'],
146
+ ): Partial<TooltipProps> => ({
147
+ disableInteractive: true,
148
+ enterDelay: 1000,
149
+ enterNextDelay: 1000,
150
+ placement,
151
+ });
@@ -5,7 +5,7 @@ import TableContainer, {
5
5
  import { MRT_Table } from './MRT_Table';
6
6
  import { MRT_TableLoadingOverlay } from './MRT_TableLoadingOverlay';
7
7
  import { parseFromValuesOrFunc } from '../column.utils';
8
- import { MRT_EditRowModal } from '../modals';
8
+ import { MRT_EditRowModal } from '../modals/MRT_EditRowModal';
9
9
  import { type MRT_RowData, type MRT_TableInstance } from '../types';
10
10
 
11
11
  const useIsomorphicLayoutEffect =
@@ -9,7 +9,7 @@ import Tooltip from '@mui/material/Tooltip';
9
9
  import Typography from '@mui/material/Typography';
10
10
  import { useTheme } from '@mui/material/styles';
11
11
  import { parseFromValuesOrFunc } from '../column.utils';
12
- import { flipIconStyles } from '../style.utils';
12
+ import { flipIconStyles, getCommonTooltipProps } from '../style.utils';
13
13
  import { type MRT_RowData, type MRT_TableInstance } from '../types';
14
14
 
15
15
  const defaultRowsPerPage = [5, 10, 15, 20, 25, 30, 50, 100];
@@ -79,6 +79,8 @@ export const MRT_TablePagination = <TData extends MRT_RowData>({
79
79
  const disableBack = pageIndex <= 0 || disabled;
80
80
  const disableNext = lastRowIndex >= totalRowCount || disabled;
81
81
 
82
+ const tooltipProps = getCommonTooltipProps();
83
+
82
84
  return (
83
85
  <Box
84
86
  className="MuiTablePagination-root"
@@ -173,7 +175,7 @@ export const MRT_TablePagination = <TData extends MRT_RowData>({
173
175
  } ${totalRowCount.toLocaleString()}`}</Typography>
174
176
  <Box gap="xs">
175
177
  {showFirstButton && (
176
- <Tooltip enterDelay={1000} title={localization.goToFirstPage}>
178
+ <Tooltip {...tooltipProps} title={localization.goToFirstPage}>
177
179
  <span>
178
180
  <IconButton
179
181
  aria-label={localization.goToFirstPage}
@@ -186,7 +188,7 @@ export const MRT_TablePagination = <TData extends MRT_RowData>({
186
188
  </span>
187
189
  </Tooltip>
188
190
  )}
189
- <Tooltip enterDelay={1000} title={localization.goToPreviousPage}>
191
+ <Tooltip {...tooltipProps} title={localization.goToPreviousPage}>
190
192
  <span>
191
193
  <IconButton
192
194
  aria-label={localization.goToPreviousPage}
@@ -198,7 +200,7 @@ export const MRT_TablePagination = <TData extends MRT_RowData>({
198
200
  </IconButton>
199
201
  </span>
200
202
  </Tooltip>
201
- <Tooltip enterDelay={1000} title={localization.goToNextPage}>
203
+ <Tooltip {...tooltipProps} title={localization.goToNextPage}>
202
204
  <span>
203
205
  <IconButton
204
206
  aria-label={localization.goToNextPage}
@@ -211,7 +213,7 @@ export const MRT_TablePagination = <TData extends MRT_RowData>({
211
213
  </span>
212
214
  </Tooltip>
213
215
  {showLastButton && (
214
- <Tooltip enterDelay={1000} title={localization.goToLastPage}>
216
+ <Tooltip {...tooltipProps} title={localization.goToLastPage}>
215
217
  <span>
216
218
  <IconButton
217
219
  aria-label={localization.goToLastPage}
@@ -6,7 +6,7 @@ import Chip from '@mui/material/Chip';
6
6
  import Collapse from '@mui/material/Collapse';
7
7
  import Stack from '@mui/material/Stack';
8
8
  import { parseFromValuesOrFunc } from '../column.utils';
9
- import { MRT_SelectCheckbox } from '../inputs';
9
+ import { MRT_SelectCheckbox } from '../inputs/MRT_SelectCheckbox';
10
10
  import { type MRT_RowData, type MRT_TableInstance } from '../types';
11
11
 
12
12
  interface Props<TData extends MRT_RowData> extends AlertProps {
package/src/types.ts CHANGED
@@ -247,6 +247,7 @@ export interface MRT_Theme {
247
247
  baseBackgroundColor?: CSSProperties['backgroundColor'];
248
248
  draggingBorderColor?: CSSProperties['borderColor'];
249
249
  matchHighlightColor?: CSSProperties['backgroundColor'];
250
+ menuBackgroundColor?: CSSProperties['backgroundColor'];
250
251
  pinnedRowBackgroundColor?: CSSProperties['backgroundColor'];
251
252
  selectedRowBackgroundColor?: CSSProperties['backgroundColor'];
252
253
  }
@@ -919,6 +920,7 @@ export type MRT_TableOptions<TData extends MRT_RowData> = Omit<
919
920
  muiExpandButtonProps?:
920
921
  | ((props: {
921
922
  row: MRT_Row<TData>;
923
+ staticRowIndex?: number;
922
924
  table: MRT_TableInstance<TData>;
923
925
  }) => IconButtonProps)
924
926
  | IconButtonProps;
@@ -1122,6 +1124,7 @@ export type MRT_TableOptions<TData extends MRT_RowData> = Omit<
1122
1124
  onShowToolbarDropZoneChange?: OnChangeFn<boolean>;
1123
1125
  paginationDisplayMode?: 'custom' | 'default' | 'pages';
1124
1126
  positionActionsColumn?: 'first' | 'last';
1127
+ positionCreatingRow?: 'bottom' | 'top' | number;
1125
1128
  positionExpandColumn?: 'first' | 'last';
1126
1129
  positionGlobalFilter?: 'left' | 'none' | 'right';
1127
1130
  positionPagination?: 'both' | 'bottom' | 'none' | 'top';
@@ -1170,11 +1173,13 @@ export type MRT_TableOptions<TData extends MRT_RowData> = Omit<
1170
1173
  renderRowActionMenuItems?: (props: {
1171
1174
  closeMenu: () => void;
1172
1175
  row: MRT_Row<TData>;
1176
+ staticRowIndex?: number;
1173
1177
  table: MRT_TableInstance<TData>;
1174
1178
  }) => ReactNode[];
1175
1179
  renderRowActions?: (props: {
1176
1180
  cell: MRT_Cell<TData>;
1177
1181
  row: MRT_Row<TData>;
1182
+ staticRowIndex?: number;
1178
1183
  table: MRT_TableInstance<TData>;
1179
1184
  }) => ReactNode;
1180
1185
  renderToolbarAlertBannerContent?: (props: {
package/src/body/index.ts DELETED
@@ -1,7 +0,0 @@
1
- export * from './MRT_TableBody';
2
- export * from './MRT_TableBodyCell';
3
- export * from './MRT_TableBodyCellValue';
4
- export * from './MRT_TableBodyRow';
5
- export * from './MRT_TableBodyRowGrabHandle';
6
- export * from './MRT_TableBodyRowPinButton';
7
- export * from './MRT_TableDetailPanel';
@@ -1,13 +0,0 @@
1
- export * from './MRT_ColumnPinningButtons';
2
- export * from './MRT_CopyButton';
3
- export * from './MRT_EditActionButtons';
4
- export * from './MRT_ExpandAllButton';
5
- export * from './MRT_ExpandButton';
6
- export * from './MRT_GrabHandleButton';
7
- export * from './MRT_RowPinButton';
8
- export * from './MRT_ShowHideColumnsButton';
9
- export * from './MRT_ToggleDensePaddingButton';
10
- export * from './MRT_ToggleFiltersButton';
11
- export * from './MRT_ToggleFullScreenButton';
12
- export * from './MRT_ToggleGlobalFilterButton';
13
- export * from './MRT_ToggleRowActionMenuButton';
@@ -1,3 +0,0 @@
1
- export * from './MRT_TableFooter';
2
- export * from './MRT_TableFooterCell';
3
- export * from './MRT_TableFooterRow';
package/src/head/index.ts DELETED
@@ -1,9 +0,0 @@
1
- export * from './MRT_TableHead';
2
- export * from './MRT_TableHeadCell';
3
- export * from './MRT_TableHeadCellColumnActionsButton';
4
- export * from './MRT_TableHeadCellFilterContainer';
5
- export * from './MRT_TableHeadCellFilterLabel';
6
- export * from './MRT_TableHeadCellGrabHandle';
7
- export * from './MRT_TableHeadCellResizeHandle';
8
- export * from './MRT_TableHeadCellSortLabel';
9
- export * from './MRT_TableHeadRow';
@@ -1,7 +0,0 @@
1
- export * from './useMRT_ColumnVirtualizer';
2
- export * from './useMRT_DisplayColumns';
3
- export * from './useMRT_Effects';
4
- export * from './useMRT_RowVirtualizer';
5
- export * from './useMRT_Rows';
6
- export * from './useMRT_TableInstance';
7
- export * from './useMRT_TableOptions';
@@ -1,7 +0,0 @@
1
- export * from './MRT_EditCellTextField';
2
- export * from './MRT_FilterCheckbox';
3
- export * from './MRT_FilterRangeFields';
4
- export * from './MRT_FilterRangeSlider';
5
- export * from './MRT_FilterTextField';
6
- export * from './MRT_GlobalFilterTextField';
7
- export * from './MRT_SelectCheckbox';
@@ -1,5 +0,0 @@
1
- export * from './MRT_ColumnActionMenu';
2
- export * from './MRT_FilterOptionMenu';
3
- export * from './MRT_RowActionMenu';
4
- export * from './MRT_ShowHideColumnsMenu';
5
- export * from './MRT_ShowHideColumnsMenuItems';
@@ -1 +0,0 @@
1
- export * from './MRT_EditRowModal';
@@ -1,5 +0,0 @@
1
- export * from '../modals/MRT_EditRowModal';
2
- export * from './MRT_Table';
3
- export * from './MRT_TableContainer';
4
- export * from './MRT_TableLoadingOverlay';
5
- export * from './MRT_TablePaper';
@@ -1,7 +0,0 @@
1
- export * from './MRT_BottomToolbar';
2
- export * from './MRT_LinearProgressBar';
3
- export * from './MRT_TablePagination';
4
- export * from './MRT_ToolbarAlertBanner';
5
- export * from './MRT_ToolbarDropZone';
6
- export * from './MRT_ToolbarInternalButtons';
7
- export * from './MRT_TopToolbar';