material-react-table 2.0.0-beta.2 → 2.0.0-beta.4

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 (162) hide show
  1. package/dist/cjs/index.js +417 -410
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/types/body/MRT_TableBody.d.ts +4 -3
  4. package/dist/cjs/types/body/MRT_TableBodyCell.d.ts +5 -5
  5. package/dist/cjs/types/body/MRT_TableBodyRowGrabHandle.d.ts +3 -2
  6. package/dist/cjs/types/body/MRT_TableBodyRowPinButton.d.ts +3 -2
  7. package/dist/cjs/types/body/MRT_TableDetailPanel.d.ts +3 -2
  8. package/dist/cjs/types/buttons/MRT_ColumnPinningButtons.d.ts +3 -2
  9. package/dist/cjs/types/buttons/MRT_CopyButton.d.ts +3 -4
  10. package/dist/cjs/types/buttons/MRT_EditActionButtons.d.ts +3 -2
  11. package/dist/cjs/types/buttons/MRT_ExpandAllButton.d.ts +3 -2
  12. package/dist/cjs/types/buttons/MRT_ExpandButton.d.ts +2 -1
  13. package/dist/cjs/types/buttons/MRT_GrabHandleButton.d.ts +2 -2
  14. package/dist/cjs/types/buttons/MRT_RowPinButton.d.ts +3 -2
  15. package/dist/cjs/types/buttons/MRT_ToggleRowActionMenuButton.d.ts +3 -2
  16. package/dist/cjs/types/footer/MRT_TableFooter.d.ts +3 -2
  17. package/dist/cjs/types/footer/MRT_TableFooterCell.d.ts +3 -2
  18. package/dist/cjs/types/footer/MRT_TableFooterRow.d.ts +3 -2
  19. package/dist/cjs/types/head/MRT_TableHead.d.ts +3 -2
  20. package/dist/cjs/types/head/MRT_TableHeadCell.d.ts +3 -2
  21. package/dist/cjs/types/head/MRT_TableHeadCellColumnActionsButton.d.ts +3 -2
  22. package/dist/cjs/types/head/MRT_TableHeadCellFilterContainer.d.ts +3 -2
  23. package/dist/cjs/types/head/MRT_TableHeadCellFilterLabel.d.ts +3 -2
  24. package/dist/cjs/types/head/MRT_TableHeadCellGrabHandle.d.ts +3 -2
  25. package/dist/cjs/types/head/MRT_TableHeadCellResizeHandle.d.ts +3 -2
  26. package/dist/cjs/types/head/MRT_TableHeadCellSortLabel.d.ts +3 -2
  27. package/dist/cjs/types/head/MRT_TableHeadRow.d.ts +3 -2
  28. package/dist/cjs/types/inputs/MRT_EditCellTextField.d.ts +3 -2
  29. package/dist/cjs/types/inputs/MRT_FilterCheckbox.d.ts +3 -2
  30. package/dist/cjs/types/inputs/MRT_FilterRangeFields.d.ts +3 -2
  31. package/dist/cjs/types/inputs/MRT_FilterRangeSlider.d.ts +3 -2
  32. package/dist/cjs/types/inputs/MRT_FilterTextField.d.ts +3 -2
  33. package/dist/cjs/types/inputs/MRT_GlobalFilterTextField.d.ts +3 -2
  34. package/dist/cjs/types/inputs/MRT_SelectCheckbox.d.ts +3 -2
  35. package/dist/cjs/types/menus/MRT_ColumnActionMenu.d.ts +3 -2
  36. package/dist/cjs/types/menus/MRT_FilterOptionMenu.d.ts +3 -2
  37. package/dist/cjs/types/menus/MRT_RowActionMenu.d.ts +3 -2
  38. package/dist/cjs/types/menus/MRT_ShowHideColumnsMenu.d.ts +3 -2
  39. package/dist/cjs/types/menus/MRT_ShowHideColumnsMenuItems.d.ts +3 -2
  40. package/dist/cjs/types/modals/MRT_EditRowModal.d.ts +3 -2
  41. package/dist/cjs/types/table/MRT_Table.d.ts +3 -2
  42. package/dist/cjs/types/table/MRT_TableContainer.d.ts +3 -2
  43. package/dist/cjs/types/table/MRT_TableLoadingOverlay.d.ts +7 -0
  44. package/dist/cjs/types/table/MRT_TablePaper.d.ts +3 -2
  45. package/dist/cjs/types/table/index.d.ts +1 -0
  46. package/dist/cjs/types/toolbar/MRT_BottomToolbar.d.ts +3 -2
  47. package/dist/cjs/types/toolbar/MRT_LinearProgressBar.d.ts +3 -2
  48. package/dist/cjs/types/toolbar/MRT_TablePagination.d.ts +6 -2
  49. package/dist/cjs/types/toolbar/MRT_ToolbarAlertBanner.d.ts +3 -2
  50. package/dist/cjs/types/toolbar/MRT_ToolbarDropZone.d.ts +3 -2
  51. package/dist/cjs/types/toolbar/MRT_ToolbarInternalButtons.d.ts +3 -2
  52. package/dist/cjs/types/toolbar/MRT_TopToolbar.d.ts +1 -2
  53. package/dist/cjs/types/types.d.ts +3 -3
  54. package/dist/esm/material-react-table.esm.js +415 -408
  55. package/dist/esm/material-react-table.esm.js.map +1 -1
  56. package/dist/esm/types/body/MRT_TableBody.d.ts +4 -3
  57. package/dist/esm/types/body/MRT_TableBodyCell.d.ts +5 -5
  58. package/dist/esm/types/body/MRT_TableBodyRowGrabHandle.d.ts +3 -2
  59. package/dist/esm/types/body/MRT_TableBodyRowPinButton.d.ts +3 -2
  60. package/dist/esm/types/body/MRT_TableDetailPanel.d.ts +3 -2
  61. package/dist/esm/types/buttons/MRT_ColumnPinningButtons.d.ts +3 -2
  62. package/dist/esm/types/buttons/MRT_CopyButton.d.ts +3 -4
  63. package/dist/esm/types/buttons/MRT_EditActionButtons.d.ts +3 -2
  64. package/dist/esm/types/buttons/MRT_ExpandAllButton.d.ts +3 -2
  65. package/dist/esm/types/buttons/MRT_ExpandButton.d.ts +2 -1
  66. package/dist/esm/types/buttons/MRT_GrabHandleButton.d.ts +2 -2
  67. package/dist/esm/types/buttons/MRT_RowPinButton.d.ts +3 -2
  68. package/dist/esm/types/buttons/MRT_ToggleRowActionMenuButton.d.ts +3 -2
  69. package/dist/esm/types/footer/MRT_TableFooter.d.ts +3 -2
  70. package/dist/esm/types/footer/MRT_TableFooterCell.d.ts +3 -2
  71. package/dist/esm/types/footer/MRT_TableFooterRow.d.ts +3 -2
  72. package/dist/esm/types/head/MRT_TableHead.d.ts +3 -2
  73. package/dist/esm/types/head/MRT_TableHeadCell.d.ts +3 -2
  74. package/dist/esm/types/head/MRT_TableHeadCellColumnActionsButton.d.ts +3 -2
  75. package/dist/esm/types/head/MRT_TableHeadCellFilterContainer.d.ts +3 -2
  76. package/dist/esm/types/head/MRT_TableHeadCellFilterLabel.d.ts +3 -2
  77. package/dist/esm/types/head/MRT_TableHeadCellGrabHandle.d.ts +3 -2
  78. package/dist/esm/types/head/MRT_TableHeadCellResizeHandle.d.ts +3 -2
  79. package/dist/esm/types/head/MRT_TableHeadCellSortLabel.d.ts +3 -2
  80. package/dist/esm/types/head/MRT_TableHeadRow.d.ts +3 -2
  81. package/dist/esm/types/inputs/MRT_EditCellTextField.d.ts +3 -2
  82. package/dist/esm/types/inputs/MRT_FilterCheckbox.d.ts +3 -2
  83. package/dist/esm/types/inputs/MRT_FilterRangeFields.d.ts +3 -2
  84. package/dist/esm/types/inputs/MRT_FilterRangeSlider.d.ts +3 -2
  85. package/dist/esm/types/inputs/MRT_FilterTextField.d.ts +3 -2
  86. package/dist/esm/types/inputs/MRT_GlobalFilterTextField.d.ts +3 -2
  87. package/dist/esm/types/inputs/MRT_SelectCheckbox.d.ts +3 -2
  88. package/dist/esm/types/menus/MRT_ColumnActionMenu.d.ts +3 -2
  89. package/dist/esm/types/menus/MRT_FilterOptionMenu.d.ts +3 -2
  90. package/dist/esm/types/menus/MRT_RowActionMenu.d.ts +3 -2
  91. package/dist/esm/types/menus/MRT_ShowHideColumnsMenu.d.ts +3 -2
  92. package/dist/esm/types/menus/MRT_ShowHideColumnsMenuItems.d.ts +3 -2
  93. package/dist/esm/types/modals/MRT_EditRowModal.d.ts +3 -2
  94. package/dist/esm/types/table/MRT_Table.d.ts +3 -2
  95. package/dist/esm/types/table/MRT_TableContainer.d.ts +3 -2
  96. package/dist/esm/types/table/MRT_TableLoadingOverlay.d.ts +7 -0
  97. package/dist/esm/types/table/MRT_TablePaper.d.ts +3 -2
  98. package/dist/esm/types/table/index.d.ts +1 -0
  99. package/dist/esm/types/toolbar/MRT_BottomToolbar.d.ts +3 -2
  100. package/dist/esm/types/toolbar/MRT_LinearProgressBar.d.ts +3 -2
  101. package/dist/esm/types/toolbar/MRT_TablePagination.d.ts +6 -2
  102. package/dist/esm/types/toolbar/MRT_ToolbarAlertBanner.d.ts +3 -2
  103. package/dist/esm/types/toolbar/MRT_ToolbarDropZone.d.ts +3 -2
  104. package/dist/esm/types/toolbar/MRT_ToolbarInternalButtons.d.ts +3 -2
  105. package/dist/esm/types/toolbar/MRT_TopToolbar.d.ts +1 -2
  106. package/dist/esm/types/types.d.ts +3 -3
  107. package/dist/index.d.ts +130 -119
  108. package/package.json +1 -1
  109. package/src/body/MRT_TableBody.tsx +8 -4
  110. package/src/body/MRT_TableBodyCell.tsx +60 -61
  111. package/src/body/MRT_TableBodyRow.tsx +3 -3
  112. package/src/body/MRT_TableBodyRowGrabHandle.tsx +10 -5
  113. package/src/body/MRT_TableBodyRowPinButton.tsx +12 -5
  114. package/src/body/MRT_TableDetailPanel.tsx +11 -7
  115. package/src/buttons/MRT_ColumnPinningButtons.tsx +12 -3
  116. package/src/buttons/MRT_CopyButton.tsx +6 -8
  117. package/src/buttons/MRT_EditActionButtons.tsx +9 -3
  118. package/src/buttons/MRT_ExpandAllButton.tsx +9 -5
  119. package/src/buttons/MRT_ExpandButton.tsx +2 -2
  120. package/src/buttons/MRT_GrabHandleButton.tsx +8 -5
  121. package/src/buttons/MRT_RowPinButton.tsx +8 -4
  122. package/src/buttons/MRT_ToggleRowActionMenuButton.tsx +7 -3
  123. package/src/column.utils.ts +1 -1
  124. package/src/footer/MRT_TableFooter.tsx +9 -5
  125. package/src/footer/MRT_TableFooterCell.tsx +12 -12
  126. package/src/footer/MRT_TableFooterRow.tsx +10 -6
  127. package/src/head/MRT_TableHead.tsx +8 -4
  128. package/src/head/MRT_TableHeadCell.tsx +93 -84
  129. package/src/head/MRT_TableHeadCellColumnActionsButton.tsx +5 -3
  130. package/src/head/MRT_TableHeadCellFilterContainer.tsx +4 -2
  131. package/src/head/MRT_TableHeadCellFilterLabel.tsx +8 -4
  132. package/src/head/MRT_TableHeadCellGrabHandle.tsx +4 -1
  133. package/src/head/MRT_TableHeadCellResizeHandle.tsx +7 -4
  134. package/src/head/MRT_TableHeadCellSortLabel.tsx +28 -12
  135. package/src/head/MRT_TableHeadRow.tsx +10 -6
  136. package/src/hooks/useMRT_DisplayColumns.tsx +2 -1
  137. package/src/inputs/MRT_EditCellTextField.tsx +16 -2
  138. package/src/inputs/MRT_FilterCheckbox.tsx +4 -2
  139. package/src/inputs/MRT_FilterRangeFields.tsx +13 -3
  140. package/src/inputs/MRT_FilterRangeSlider.tsx +4 -2
  141. package/src/inputs/MRT_FilterTextField.tsx +3 -1
  142. package/src/inputs/MRT_GlobalFilterTextField.tsx +9 -5
  143. package/src/inputs/MRT_SelectCheckbox.tsx +8 -4
  144. package/src/menus/MRT_ColumnActionMenu.tsx +4 -2
  145. package/src/menus/MRT_FilterOptionMenu.tsx +4 -2
  146. package/src/menus/MRT_RowActionMenu.tsx +4 -2
  147. package/src/menus/MRT_ShowHideColumnsMenu.tsx +4 -2
  148. package/src/menus/MRT_ShowHideColumnsMenuItems.tsx +6 -3
  149. package/src/modals/MRT_EditRowModal.tsx +5 -3
  150. package/src/table/MRT_Table.tsx +25 -31
  151. package/src/table/MRT_TableContainer.tsx +15 -44
  152. package/src/table/MRT_TableLoadingOverlay.tsx +53 -0
  153. package/src/table/MRT_TablePaper.tsx +7 -3
  154. package/src/table/index.ts +1 -0
  155. package/src/toolbar/MRT_BottomToolbar.tsx +9 -7
  156. package/src/toolbar/MRT_LinearProgressBar.tsx +14 -8
  157. package/src/toolbar/MRT_TablePagination.tsx +18 -8
  158. package/src/toolbar/MRT_ToolbarAlertBanner.tsx +9 -5
  159. package/src/toolbar/MRT_ToolbarDropZone.tsx +6 -2
  160. package/src/toolbar/MRT_ToolbarInternalButtons.tsx +8 -4
  161. package/src/toolbar/MRT_TopToolbar.tsx +5 -8
  162. package/src/types.ts +5 -5
@@ -1,14 +1,17 @@
1
1
  import Badge from '@mui/material/Badge';
2
2
  import { type TableCellProps } from '@mui/material/TableCell';
3
- import TableSortLabel from '@mui/material/TableSortLabel';
3
+ import TableSortLabel, {
4
+ type TableSortLabelProps,
5
+ } from '@mui/material/TableSortLabel';
4
6
  import Tooltip from '@mui/material/Tooltip';
7
+ import { parseFromValuesOrFunc } from '../column.utils';
5
8
  import {
6
9
  type MRT_Header,
7
10
  type MRT_RowData,
8
11
  type MRT_TableInstance,
9
12
  } from '../types';
10
13
 
11
- interface Props<TData extends MRT_RowData> {
14
+ interface Props<TData extends MRT_RowData> extends TableSortLabelProps {
12
15
  header: MRT_Header<TData>;
13
16
  table: MRT_TableInstance<TData>;
14
17
  tableCellProps?: TableCellProps;
@@ -17,6 +20,7 @@ interface Props<TData extends MRT_RowData> {
17
20
  export const MRT_TableHeadCellSortLabel = <TData extends MRT_RowData>({
18
21
  header,
19
22
  table,
23
+ ...rest
20
24
  }: Props<TData>) => {
21
25
  const {
22
26
  getState,
@@ -27,17 +31,20 @@ export const MRT_TableHeadCellSortLabel = <TData extends MRT_RowData>({
27
31
  } = table;
28
32
  const { column } = header;
29
33
  const { columnDef } = column;
30
- const { sorting } = getState();
34
+ const { isLoading, showSkeletons, sorting } = getState();
31
35
 
32
36
  const isSorted = !!column.getIsSorted();
33
37
 
34
- const sortTooltip = column.getIsSorted()
35
- ? column.getIsSorted() === 'desc'
36
- ? localization.sortedByColumnDesc.replace('{column}', columnDef.header)
37
- : localization.sortedByColumnAsc.replace('{column}', columnDef.header)
38
- : column.getNextSortingOrder() === 'desc'
39
- ? localization.sortByColumnDesc.replace('{column}', columnDef.header)
40
- : localization.sortByColumnAsc.replace('{column}', columnDef.header);
38
+ const sortTooltip =
39
+ isLoading || showSkeletons
40
+ ? ''
41
+ : column.getIsSorted()
42
+ ? column.getIsSorted() === 'desc'
43
+ ? localization.sortedByColumnDesc.replace('{column}', columnDef.header)
44
+ : localization.sortedByColumnAsc.replace('{column}', columnDef.header)
45
+ : column.getNextSortingOrder() === 'desc'
46
+ ? localization.sortByColumnDesc.replace('{column}', columnDef.header)
47
+ : localization.sortByColumnAsc.replace('{column}', columnDef.header);
41
48
 
42
49
  return (
43
50
  <Tooltip arrow placement="top" title={sortTooltip}>
@@ -65,12 +72,21 @@ export const MRT_TableHeadCellSortLabel = <TData extends MRT_RowData>({
65
72
  e.stopPropagation();
66
73
  header.column.getToggleSortingHandler()?.(e);
67
74
  }}
68
- sx={{
75
+ {...rest}
76
+ sx={(theme) => ({
77
+ '.MuiTableSortLabel-icon': {
78
+ color: `${
79
+ theme.palette.mode === 'dark'
80
+ ? theme.palette.text.primary
81
+ : theme.palette.text.secondary
82
+ } !important`,
83
+ },
69
84
  flex: '0 0',
70
85
  opacity: isSorted ? 1 : 0.3,
71
86
  transition: 'all 150ms ease-in-out',
72
87
  width: '3ch',
73
- }}
88
+ ...(parseFromValuesOrFunc(rest?.sx, theme) as any),
89
+ })}
74
90
  />
75
91
  </Badge>
76
92
  </Tooltip>
@@ -1,5 +1,5 @@
1
1
  import { type VirtualItem } from '@tanstack/react-virtual';
2
- import TableRow from '@mui/material/TableRow';
2
+ import TableRow, { type TableRowProps } from '@mui/material/TableRow';
3
3
  import { alpha, lighten } from '@mui/material/styles';
4
4
  import { MRT_TableHeadCell } from './MRT_TableHeadCell';
5
5
  import { parseFromValuesOrFunc } from '../column.utils';
@@ -10,7 +10,7 @@ import {
10
10
  type MRT_TableInstance,
11
11
  } from '../types';
12
12
 
13
- interface Props<TData extends MRT_RowData> {
13
+ interface Props<TData extends MRT_RowData> extends TableRowProps {
14
14
  headerGroup: MRT_HeaderGroup<TData>;
15
15
  table: MRT_TableInstance<TData>;
16
16
  virtualColumns?: VirtualItem[];
@@ -24,15 +24,19 @@ export const MRT_TableHeadRow = <TData extends MRT_RowData>({
24
24
  virtualColumns,
25
25
  virtualPaddingLeft,
26
26
  virtualPaddingRight,
27
+ ...rest
27
28
  }: Props<TData>) => {
28
29
  const {
29
30
  options: { layoutMode, muiTableHeadRowProps },
30
31
  } = table;
31
32
 
32
- const tableRowProps = parseFromValuesOrFunc(muiTableHeadRowProps, {
33
- headerGroup,
34
- table,
35
- });
33
+ const tableRowProps = {
34
+ ...parseFromValuesOrFunc(muiTableHeadRowProps, {
35
+ headerGroup,
36
+ table,
37
+ }),
38
+ rest,
39
+ };
36
40
 
37
41
  return (
38
42
  <TableRow
@@ -16,6 +16,7 @@ import {
16
16
  } from '../types';
17
17
 
18
18
  const blankColProps = {
19
+ children: null,
19
20
  sx: {
20
21
  flex: '1 0 auto',
21
22
  minWidth: 0,
@@ -139,7 +140,7 @@ export const useMRT_DisplayColumns = <TData extends MRT_RowData>({
139
140
  ) && {
140
141
  columnDefType: 'display',
141
142
  header: '',
142
- id: 'spacer',
143
+ id: 'mrt-row-spacer',
143
144
  muiTableBodyCellProps: blankColProps,
144
145
  muiTableFooterCellProps: blankColProps,
145
146
  muiTableHeadCellProps: blankColProps,
@@ -14,7 +14,7 @@ import {
14
14
  type MRT_TableInstance,
15
15
  } from '../types';
16
16
 
17
- interface Props<TData extends MRT_RowData> {
17
+ interface Props<TData extends MRT_RowData> extends TextFieldProps<'standard'> {
18
18
  cell: MRT_Cell<TData>;
19
19
  table: MRT_TableInstance<TData>;
20
20
  }
@@ -22,6 +22,7 @@ interface Props<TData extends MRT_RowData> {
22
22
  export const MRT_EditCellTextField = <TData extends MRT_RowData>({
23
23
  cell,
24
24
  table,
25
+ ...rest
25
26
  }: Props<TData>) => {
26
27
  const {
27
28
  getState,
@@ -54,6 +55,7 @@ export const MRT_EditCellTextField = <TData extends MRT_RowData>({
54
55
  row,
55
56
  table,
56
57
  }),
58
+ ...rest,
57
59
  };
58
60
 
59
61
  const saveInputValueToRowCache = (newValue: string) => {
@@ -104,7 +106,7 @@ export const MRT_EditCellTextField = <TData extends MRT_RowData>({
104
106
  }
105
107
  }}
106
108
  label={
107
- !['custom', 'modal'].includes(
109
+ ['custom', 'modal'].includes(
108
110
  (isCreating ? createDisplayMode : editDisplayMode) as string,
109
111
  )
110
112
  ? columnDef.header
@@ -120,15 +122,27 @@ export const MRT_EditCellTextField = <TData extends MRT_RowData>({
120
122
  : undefined
121
123
  }
122
124
  select={isSelectEdit}
125
+ size="small"
123
126
  value={value}
124
127
  variant="standard"
125
128
  {...textFieldProps}
126
129
  InputProps={{
127
130
  disableUnderline: editDisplayMode === 'table',
128
131
  ...textFieldProps.InputProps,
132
+ sx: (theme) => ({
133
+ mb: 0,
134
+ ...(parseFromValuesOrFunc(
135
+ textFieldProps?.InputProps?.sx,
136
+ theme,
137
+ ) as any),
138
+ }),
129
139
  }}
130
140
  inputProps={{
131
141
  autoComplete: 'new-password', // disable autocomplete and autofill
142
+ sx: {
143
+ p: 0,
144
+ ...textFieldProps?.inputProps?.sx,
145
+ },
132
146
  ...textFieldProps.inputProps,
133
147
  }}
134
148
  onBlur={handleBlur}
@@ -1,4 +1,4 @@
1
- import Checkbox from '@mui/material/Checkbox';
1
+ import Checkbox, { type CheckboxProps } from '@mui/material/Checkbox';
2
2
  import FormControlLabel from '@mui/material/FormControlLabel';
3
3
  import Tooltip from '@mui/material/Tooltip';
4
4
  import { parseFromValuesOrFunc } from '../column.utils';
@@ -8,7 +8,7 @@ import {
8
8
  type MRT_TableInstance,
9
9
  } from '../types';
10
10
 
11
- interface Props<TData extends MRT_RowData> {
11
+ interface Props<TData extends MRT_RowData> extends CheckboxProps {
12
12
  column: MRT_Column<TData>;
13
13
  table: MRT_TableInstance<TData>;
14
14
  }
@@ -16,6 +16,7 @@ interface Props<TData extends MRT_RowData> {
16
16
  export const MRT_FilterCheckbox = <TData extends MRT_RowData>({
17
17
  column,
18
18
  table,
19
+ ...rest
19
20
  }: Props<TData>) => {
20
21
  const {
21
22
  getState,
@@ -33,6 +34,7 @@ export const MRT_FilterCheckbox = <TData extends MRT_RowData>({
33
34
  column,
34
35
  table,
35
36
  }),
37
+ ...rest,
36
38
  };
37
39
 
38
40
  const filterLabel = localization.filterByColumn?.replace(
@@ -1,12 +1,13 @@
1
- import Box from '@mui/material/Box';
1
+ import Box, { type BoxProps } from '@mui/material/Box';
2
2
  import { MRT_FilterTextField } from './MRT_FilterTextField';
3
+ import { parseFromValuesOrFunc } from '../column.utils';
3
4
  import {
4
5
  type MRT_Header,
5
6
  type MRT_RowData,
6
7
  type MRT_TableInstance,
7
8
  } from '../types';
8
9
 
9
- interface Props<TData extends MRT_RowData> {
10
+ interface Props<TData extends MRT_RowData> extends BoxProps {
10
11
  header: MRT_Header<TData>;
11
12
  table: MRT_TableInstance<TData>;
12
13
  }
@@ -14,9 +15,18 @@ interface Props<TData extends MRT_RowData> {
14
15
  export const MRT_FilterRangeFields = <TData extends MRT_RowData>({
15
16
  header,
16
17
  table,
18
+ ...rest
17
19
  }: Props<TData>) => {
18
20
  return (
19
- <Box sx={{ display: 'grid', gap: '1rem', gridTemplateColumns: '1fr 1fr' }}>
21
+ <Box
22
+ {...rest}
23
+ sx={(theme) => ({
24
+ display: 'grid',
25
+ gap: '1rem',
26
+ gridTemplateColumns: '1fr 1fr',
27
+ ...(parseFromValuesOrFunc(rest?.sx, theme) as any),
28
+ })}
29
+ >
20
30
  <MRT_FilterTextField header={header} rangeFilterIndex={0} table={table} />
21
31
  <MRT_FilterTextField header={header} rangeFilterIndex={1} table={table} />
22
32
  </Box>
@@ -1,6 +1,6 @@
1
1
  import { useEffect, useRef, useState } from 'react';
2
2
  import FormHelperText from '@mui/material/FormHelperText';
3
- import Slider from '@mui/material/Slider';
3
+ import Slider, { type SliderProps } from '@mui/material/Slider';
4
4
  import Stack from '@mui/material/Stack';
5
5
  import { parseFromValuesOrFunc } from '../column.utils';
6
6
  import {
@@ -9,7 +9,7 @@ import {
9
9
  type MRT_TableInstance,
10
10
  } from '../types';
11
11
 
12
- interface Props<TData extends MRT_RowData> {
12
+ interface Props<TData extends MRT_RowData> extends SliderProps {
13
13
  header: MRT_Header<TData>;
14
14
  table: MRT_TableInstance<TData>;
15
15
  }
@@ -17,6 +17,7 @@ interface Props<TData extends MRT_RowData> {
17
17
  export const MRT_FilterRangeSlider = <TData extends MRT_RowData>({
18
18
  header,
19
19
  table,
20
+ ...rest
20
21
  }: Props<TData>) => {
21
22
  const {
22
23
  options: { enableColumnFilterModes, localization, muiFilterSliderProps },
@@ -33,6 +34,7 @@ export const MRT_FilterRangeSlider = <TData extends MRT_RowData>({
33
34
  const sliderProps = {
34
35
  ...parseFromValuesOrFunc(muiFilterSliderProps, { column, table }),
35
36
  ...parseFromValuesOrFunc(columnDef.muiFilterSliderProps, { column, table }),
37
+ ...rest,
36
38
  };
37
39
 
38
40
  let [min, max] =
@@ -29,7 +29,7 @@ import {
29
29
  type MRT_TableInstance,
30
30
  } from '../types';
31
31
 
32
- interface Props<TData extends MRT_RowData> {
32
+ interface Props<TData extends MRT_RowData> extends TextFieldProps<'standard'> {
33
33
  header: MRT_Header<TData>;
34
34
  rangeFilterIndex?: number;
35
35
  table: MRT_TableInstance<TData>;
@@ -39,6 +39,7 @@ export const MRT_FilterTextField = <TData extends MRT_RowData>({
39
39
  header,
40
40
  rangeFilterIndex,
41
41
  table,
42
+ ...rest
42
43
  }: Props<TData>) => {
43
44
  const {
44
45
  options: {
@@ -64,6 +65,7 @@ export const MRT_FilterTextField = <TData extends MRT_RowData>({
64
65
  column,
65
66
  table,
66
67
  }),
68
+ ...rest,
67
69
  };
68
70
 
69
71
  const autocompleteProps = {
@@ -9,19 +9,20 @@ import {
9
9
  import Collapse from '@mui/material/Collapse';
10
10
  import IconButton from '@mui/material/IconButton';
11
11
  import InputAdornment from '@mui/material/InputAdornment';
12
- import TextField from '@mui/material/TextField';
12
+ import TextField, { type TextFieldProps } from '@mui/material/TextField';
13
13
  import Tooltip from '@mui/material/Tooltip';
14
14
  import { debounce } from '@mui/material/utils';
15
15
  import { parseFromValuesOrFunc } from '../column.utils';
16
16
  import { MRT_FilterOptionMenu } from '../menus/MRT_FilterOptionMenu';
17
17
  import { type MRT_RowData, type MRT_TableInstance } from '../types';
18
18
 
19
- interface Props<TData extends MRT_RowData> {
19
+ interface Props<TData extends MRT_RowData> extends TextFieldProps<'standard'> {
20
20
  table: MRT_TableInstance<TData>;
21
21
  }
22
22
 
23
23
  export const MRT_GlobalFilterTextField = <TData extends MRT_RowData>({
24
24
  table,
25
+ ...rest
25
26
  }: Props<TData>) => {
26
27
  const {
27
28
  getState,
@@ -37,9 +38,12 @@ export const MRT_GlobalFilterTextField = <TData extends MRT_RowData>({
37
38
  } = table;
38
39
  const { globalFilter, showGlobalFilter } = getState();
39
40
 
40
- const textFieldProps = parseFromValuesOrFunc(muiSearchTextFieldProps, {
41
- table,
42
- });
41
+ const textFieldProps = {
42
+ ...parseFromValuesOrFunc(muiSearchTextFieldProps, {
43
+ table,
44
+ }),
45
+ ...rest,
46
+ };
43
47
 
44
48
  const isMounted = useRef(false);
45
49
  const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);
@@ -10,7 +10,7 @@ import {
10
10
  type MRT_TableInstance,
11
11
  } from '../types';
12
12
 
13
- interface Props<TData extends MRT_RowData> {
13
+ interface Props<TData extends MRT_RowData> extends CheckboxProps {
14
14
  row?: MRT_Row<TData>;
15
15
  selectAll?: boolean;
16
16
  table: MRT_TableInstance<TData>;
@@ -20,6 +20,7 @@ export const MRT_SelectCheckbox = <TData extends MRT_RowData>({
20
20
  row,
21
21
  selectAll,
22
22
  table,
23
+ ...rest
23
24
  }: Props<TData>) => {
24
25
  const {
25
26
  getState,
@@ -35,9 +36,12 @@ export const MRT_SelectCheckbox = <TData extends MRT_RowData>({
35
36
  } = table;
36
37
  const { density, isLoading } = getState();
37
38
 
38
- const checkboxProps = !row
39
- ? parseFromValuesOrFunc(muiSelectAllCheckboxProps, { table })
40
- : parseFromValuesOrFunc(muiSelectCheckboxProps, { row, table });
39
+ const checkboxProps = {
40
+ ...(!row
41
+ ? parseFromValuesOrFunc(muiSelectAllCheckboxProps, { table })
42
+ : parseFromValuesOrFunc(muiSelectCheckboxProps, { row, table })),
43
+ ...rest,
44
+ };
41
45
 
42
46
  const allRowsSelected = selectAll
43
47
  ? selectAllMode === 'page'
@@ -3,7 +3,7 @@ import * as React from 'react';
3
3
  import Box from '@mui/material/Box';
4
4
  import IconButton from '@mui/material/IconButton';
5
5
  import ListItemIcon from '@mui/material/ListItemIcon';
6
- import Menu from '@mui/material/Menu';
6
+ import Menu, { type MenuProps } from '@mui/material/Menu';
7
7
  import MenuItem from '@mui/material/MenuItem';
8
8
  import { MRT_FilterOptionMenu } from './MRT_FilterOptionMenu';
9
9
  import {
@@ -24,7 +24,7 @@ export const commonListItemStyles = {
24
24
  display: 'flex',
25
25
  };
26
26
 
27
- interface Props<TData extends MRT_RowData> {
27
+ interface Props<TData extends MRT_RowData> extends Partial<MenuProps> {
28
28
  anchorEl: HTMLElement | null;
29
29
  header: MRT_Header<TData>;
30
30
  setAnchorEl: (anchorEl: HTMLElement | null) => void;
@@ -36,6 +36,7 @@ export const MRT_ColumnActionMenu = <TData extends MRT_RowData>({
36
36
  header,
37
37
  setAnchorEl,
38
38
  table,
39
+ ...rest
39
40
  }: Props<TData>) => {
40
41
  const {
41
42
  getState,
@@ -396,6 +397,7 @@ export const MRT_ColumnActionMenu = <TData extends MRT_RowData>({
396
397
  anchorEl={anchorEl}
397
398
  onClose={() => setAnchorEl(null)}
398
399
  open={!!anchorEl}
400
+ {...rest}
399
401
  >
400
402
  {columnDef.renderColumnActionsMenuItems?.({
401
403
  closeMenu: () => setAnchorEl(null),
@@ -1,6 +1,6 @@
1
1
  import { useMemo } from 'react';
2
2
  import Box from '@mui/material/Box';
3
- import Menu from '@mui/material/Menu';
3
+ import Menu, { type MenuProps } from '@mui/material/Menu';
4
4
  import MenuItem from '@mui/material/MenuItem';
5
5
  import {
6
6
  type MRT_FilterOption,
@@ -105,7 +105,7 @@ const emptyModes = ['empty', 'notEmpty'];
105
105
  const arrModes = ['arrIncludesSome', 'arrIncludesAll', 'arrIncludes'];
106
106
  const rangeVariants = ['range-slider', 'date-range', 'range'];
107
107
 
108
- interface Props<TData extends MRT_RowData> {
108
+ interface Props<TData extends MRT_RowData> extends Partial<MenuProps> {
109
109
  anchorEl: HTMLElement | null;
110
110
  header?: MRT_Header<TData>;
111
111
  onSelect?: () => void;
@@ -121,6 +121,7 @@ export const MRT_FilterOptionMenu = <TData extends MRT_RowData>({
121
121
  setAnchorEl,
122
122
  setFilterValue,
123
123
  table,
124
+ ...rest
124
125
  }: Props<TData>) => {
125
126
  const {
126
127
  getState,
@@ -240,6 +241,7 @@ export const MRT_FilterOptionMenu = <TData extends MRT_RowData>({
240
241
  anchorOrigin={{ horizontal: 'right', vertical: 'center' }}
241
242
  onClose={() => setAnchorEl(null)}
242
243
  open={!!anchorEl}
244
+ {...rest}
243
245
  >
244
246
  {(header && column && columnDef
245
247
  ? columnDef.renderColumnFilterModeMenuItems?.({
@@ -1,7 +1,7 @@
1
1
  import { type MouseEvent } from 'react';
2
2
  import Box from '@mui/material/Box';
3
3
  import ListItemIcon from '@mui/material/ListItemIcon';
4
- import Menu from '@mui/material/Menu';
4
+ import Menu, { type MenuProps } from '@mui/material/Menu';
5
5
  import MenuItem from '@mui/material/MenuItem';
6
6
  import {
7
7
  commonListItemStyles,
@@ -14,7 +14,7 @@ import {
14
14
  type MRT_TableInstance,
15
15
  } from '../types';
16
16
 
17
- interface Props<TData extends MRT_RowData> {
17
+ interface Props<TData extends MRT_RowData> extends Partial<MenuProps> {
18
18
  anchorEl: HTMLElement | null;
19
19
  handleEdit: (event: MouseEvent) => void;
20
20
  row: MRT_Row<TData>;
@@ -28,6 +28,7 @@ export const MRT_RowActionMenu = <TData extends MRT_RowData>({
28
28
  row,
29
29
  setAnchorEl,
30
30
  table,
31
+ ...rest
31
32
  }: Props<TData>) => {
32
33
  const {
33
34
  getState,
@@ -49,6 +50,7 @@ export const MRT_RowActionMenu = <TData extends MRT_RowData>({
49
50
  onClick={(event) => event.stopPropagation()}
50
51
  onClose={() => setAnchorEl(null)}
51
52
  open={!!anchorEl}
53
+ {...rest}
52
54
  >
53
55
  {parseFromValuesOrFunc(enableEditing, row) && (
54
56
  <MenuItem onClick={handleEdit} sx={commonMenuItemStyles}>
@@ -2,7 +2,7 @@ import { useMemo, useState } from 'react';
2
2
  import Box from '@mui/material/Box';
3
3
  import Button from '@mui/material/Button';
4
4
  import Divider from '@mui/material/Divider';
5
- import Menu from '@mui/material/Menu';
5
+ import Menu, { type MenuProps } from '@mui/material/Menu';
6
6
  import { MRT_ShowHideColumnsMenuItems } from './MRT_ShowHideColumnsMenuItems';
7
7
  import { getDefaultColumnOrderIds } from '../column.utils';
8
8
  import {
@@ -11,7 +11,7 @@ import {
11
11
  type MRT_TableInstance,
12
12
  } from '../types';
13
13
 
14
- interface Props<TData extends MRT_RowData> {
14
+ interface Props<TData extends MRT_RowData> extends Partial<MenuProps> {
15
15
  anchorEl: HTMLElement | null;
16
16
  isSubMenu?: boolean;
17
17
  setAnchorEl: (anchorEl: HTMLElement | null) => void;
@@ -22,6 +22,7 @@ export const MRT_ShowHideColumnsMenu = <TData extends MRT_RowData>({
22
22
  anchorEl,
23
23
  setAnchorEl,
24
24
  table,
25
+ ...rest
25
26
  }: Props<TData>) => {
26
27
  const {
27
28
  getAllColumns,
@@ -85,6 +86,7 @@ export const MRT_ShowHideColumnsMenu = <TData extends MRT_RowData>({
85
86
  anchorEl={anchorEl}
86
87
  onClose={() => setAnchorEl(null)}
87
88
  open={!!anchorEl}
89
+ {...rest}
88
90
  >
89
91
  <Box
90
92
  sx={{
@@ -7,20 +7,20 @@ import {
7
7
  } from 'react';
8
8
  import Box from '@mui/material/Box';
9
9
  import FormControlLabel from '@mui/material/FormControlLabel';
10
- import MenuItem from '@mui/material/MenuItem';
10
+ import MenuItem, { type MenuItemProps } from '@mui/material/MenuItem';
11
11
  import Switch from '@mui/material/Switch';
12
12
  import Tooltip from '@mui/material/Tooltip';
13
13
  import Typography from '@mui/material/Typography';
14
14
  import { MRT_ColumnPinningButtons } from '../buttons/MRT_ColumnPinningButtons';
15
15
  import { MRT_GrabHandleButton } from '../buttons/MRT_GrabHandleButton';
16
- import { reorderColumn } from '../column.utils';
16
+ import { parseFromValuesOrFunc, reorderColumn } from '../column.utils';
17
17
  import {
18
18
  type MRT_Column,
19
19
  type MRT_RowData,
20
20
  type MRT_TableInstance,
21
21
  } from '../types';
22
22
 
23
- interface Props<TData extends MRT_RowData> {
23
+ interface Props<TData extends MRT_RowData> extends MenuItemProps {
24
24
  allColumns: MRT_Column<TData>[];
25
25
  column: MRT_Column<TData>;
26
26
  hoveredColumn: MRT_Column<TData> | null;
@@ -34,6 +34,7 @@ export const MRT_ShowHideColumnsMenuItems = <TData extends MRT_RowData>({
34
34
  hoveredColumn,
35
35
  setHoveredColumn,
36
36
  table,
37
+ ...rest
37
38
  }: Props<TData>) => {
38
39
  const {
39
40
  getState,
@@ -93,6 +94,7 @@ export const MRT_ShowHideColumnsMenuItems = <TData extends MRT_RowData>({
93
94
  disableRipple
94
95
  onDragEnter={handleDragEnter}
95
96
  ref={menuItemRef as any}
97
+ {...rest}
96
98
  sx={(theme) => ({
97
99
  alignItems: 'center',
98
100
  justifyContent: 'flex-start',
@@ -106,6 +108,7 @@ export const MRT_ShowHideColumnsMenuItems = <TData extends MRT_RowData>({
106
108
  outlineOffset: '-2px',
107
109
  pl: `${(column.depth + 0.5) * 2}rem`,
108
110
  py: '6px',
111
+ ...(parseFromValuesOrFunc(rest?.sx, theme) as any),
109
112
  })}
110
113
  >
111
114
  <Box
@@ -1,4 +1,4 @@
1
- import Dialog from '@mui/material/Dialog';
1
+ import Dialog, { type DialogProps } from '@mui/material/Dialog';
2
2
  import DialogActions from '@mui/material/DialogActions';
3
3
  import DialogContent from '@mui/material/DialogContent';
4
4
  import DialogTitle from '@mui/material/DialogTitle';
@@ -12,7 +12,7 @@ import {
12
12
  type MRT_TableInstance,
13
13
  } from '../types';
14
14
 
15
- interface Props<TData extends MRT_RowData> {
15
+ interface Props<TData extends MRT_RowData> extends Partial<DialogProps> {
16
16
  open: boolean;
17
17
  table: MRT_TableInstance<TData>;
18
18
  }
@@ -20,6 +20,7 @@ interface Props<TData extends MRT_RowData> {
20
20
  export const MRT_EditRowModal = <TData extends MRT_RowData>({
21
21
  open,
22
22
  table,
23
+ ...rest
23
24
  }: Props<TData>) => {
24
25
  const {
25
26
  getState,
@@ -42,6 +43,7 @@ export const MRT_EditRowModal = <TData extends MRT_RowData>({
42
43
  ...parseFromValuesOrFunc(muiEditRowModalProps, { row, table }),
43
44
  ...(creatingRow &&
44
45
  parseFromValuesOrFunc(muiCreateRowModalProps, { row, table })),
46
+ ...rest,
45
47
  };
46
48
 
47
49
  const internalEditComponents = row
@@ -92,7 +94,7 @@ export const MRT_EditRowModal = <TData extends MRT_RowData>({
92
94
  <form onSubmit={(e) => e.preventDefault()}>
93
95
  <Stack
94
96
  sx={{
95
- gap: '24px',
97
+ gap: '32px',
96
98
  paddingTop: '16px',
97
99
  width: '100%',
98
100
  }}