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

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -171,7 +171,6 @@ export const getLeadingDisplayColumnIds = <TData extends MRT_RowData>(
171
171
  'mrt-row-expand',
172
172
  props.enableRowSelection && 'mrt-row-select',
173
173
  props.enableRowNumbers && 'mrt-row-numbers',
174
- props.layoutMode === 'grid-no-grow' && 'mrt-row-spacer',
175
174
  ].filter(Boolean) as MRT_DisplayColumnIds[];
176
175
 
177
176
  export const getTrailingDisplayColumnIds = <TData extends MRT_RowData>(
@@ -186,6 +185,7 @@ export const getTrailingDisplayColumnIds = <TData extends MRT_RowData>(
186
185
  props.positionExpandColumn === 'last' &&
187
186
  showExpandColumn(props) &&
188
187
  'mrt-row-expand',
188
+ props.layoutMode === 'grid-no-grow' && 'mrt-row-spacer',
189
189
  ].filter(Boolean) as MRT_DisplayColumnIds[];
190
190
 
191
191
  export const getDefaultColumnOrderIds = <TData extends MRT_RowData>(
@@ -1,10 +1,10 @@
1
1
  import { type VirtualItem } from '@tanstack/react-virtual';
2
- import TableFooter from '@mui/material/TableFooter';
2
+ import TableFooter, { type TableFooterProps } from '@mui/material/TableFooter';
3
3
  import { MRT_TableFooterRow } from './MRT_TableFooterRow';
4
4
  import { parseFromValuesOrFunc } from '../column.utils';
5
5
  import { type MRT_RowData, type MRT_TableInstance } from '../types';
6
6
 
7
- interface Props<TData extends MRT_RowData> {
7
+ interface Props<TData extends MRT_RowData> extends TableFooterProps {
8
8
  table: MRT_TableInstance<TData>;
9
9
  virtualColumns?: VirtualItem[];
10
10
  virtualPaddingLeft?: number;
@@ -16,6 +16,7 @@ export const MRT_TableFooter = <TData extends MRT_RowData>({
16
16
  virtualColumns,
17
17
  virtualPaddingLeft,
18
18
  virtualPaddingRight,
19
+ ...rest
19
20
  }: Props<TData>) => {
20
21
  const {
21
22
  getFooterGroups,
@@ -25,9 +26,12 @@ export const MRT_TableFooter = <TData extends MRT_RowData>({
25
26
  } = table;
26
27
  const { isFullScreen } = getState();
27
28
 
28
- const tableFooterProps = parseFromValuesOrFunc(muiTableFooterProps, {
29
- table,
30
- });
29
+ const tableFooterProps = {
30
+ ...parseFromValuesOrFunc(muiTableFooterProps, {
31
+ table,
32
+ }),
33
+ ...rest,
34
+ };
31
35
 
32
36
  const stickFooter =
33
37
  (isFullScreen || enableStickyFooter) && enableStickyFooter !== false;
@@ -1,4 +1,4 @@
1
- import TableCell from '@mui/material/TableCell';
1
+ import TableCell, { type TableCellProps } from '@mui/material/TableCell';
2
2
  import { getCommonCellStyles, parseFromValuesOrFunc } from '../column.utils';
3
3
  import {
4
4
  type MRT_Header,
@@ -6,7 +6,7 @@ import {
6
6
  type MRT_TableInstance,
7
7
  } from '../types';
8
8
 
9
- interface Props<TData extends MRT_RowData> {
9
+ interface Props<TData extends MRT_RowData> extends TableCellProps {
10
10
  footer: MRT_Header<TData>;
11
11
  table: MRT_TableInstance<TData>;
12
12
  }
@@ -14,6 +14,7 @@ interface Props<TData extends MRT_RowData> {
14
14
  export const MRT_TableFooterCell = <TData extends MRT_RowData>({
15
15
  footer,
16
16
  table,
17
+ ...rest
17
18
  }: Props<TData>) => {
18
19
  const {
19
20
  getState,
@@ -24,12 +25,11 @@ export const MRT_TableFooterCell = <TData extends MRT_RowData>({
24
25
  const { columnDef } = column;
25
26
  const { columnDefType } = columnDef;
26
27
 
28
+ const args = { column, table };
27
29
  const tableCellProps = {
28
- ...parseFromValuesOrFunc(muiTableFooterCellProps, { column, table }),
29
- ...parseFromValuesOrFunc(columnDef.muiTableFooterCellProps, {
30
- column,
31
- table,
32
- }),
30
+ ...parseFromValuesOrFunc(muiTableFooterCellProps, args),
31
+ ...parseFromValuesOrFunc(columnDef.muiTableFooterCellProps, args),
32
+ ...rest,
33
33
  };
34
34
 
35
35
  return (
@@ -39,7 +39,7 @@ export const MRT_TableFooterCell = <TData extends MRT_RowData>({
39
39
  variant="head"
40
40
  {...tableCellProps}
41
41
  sx={(theme) => ({
42
- display: layoutMode?.startsWith('grid') ? 'grid' : 'table-cell',
42
+ display: layoutMode?.startsWith('grid') ? 'grid' : undefined,
43
43
  fontWeight: 'bold',
44
44
  justifyContent: columnDefType === 'group' ? 'center' : undefined,
45
45
  p:
@@ -56,10 +56,11 @@ export const MRT_TableFooterCell = <TData extends MRT_RowData>({
56
56
  tableCellProps,
57
57
  theme,
58
58
  }),
59
+ ...(parseFromValuesOrFunc(tableCellProps?.sx, theme) as any),
59
60
  })}
60
61
  >
61
- <>
62
- {footer.isPlaceholder
62
+ {tableCellProps.children ??
63
+ (footer.isPlaceholder
63
64
  ? null
64
65
  : parseFromValuesOrFunc(columnDef.Footer, {
65
66
  column,
@@ -67,8 +68,7 @@ export const MRT_TableFooterCell = <TData extends MRT_RowData>({
67
68
  table,
68
69
  }) ??
69
70
  columnDef.footer ??
70
- null}
71
- </>
71
+ null)}
72
72
  </TableCell>
73
73
  );
74
74
  };
@@ -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 { lighten } from '@mui/material/styles';
4
4
  import { MRT_TableFooterCell } from './MRT_TableFooterCell';
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
  footerGroup: MRT_HeaderGroup<TData>;
15
15
  table: MRT_TableInstance<TData>;
16
16
  virtualColumns?: VirtualItem[];
@@ -24,6 +24,7 @@ export const MRT_TableFooterRow = <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, muiTableFooterRowProps },
@@ -40,10 +41,13 @@ export const MRT_TableFooterRow = <TData extends MRT_RowData>({
40
41
  )
41
42
  return null;
42
43
 
43
- const tableRowProps = parseFromValuesOrFunc(muiTableFooterRowProps, {
44
- footerGroup,
45
- table,
46
- });
44
+ const tableRowProps = {
45
+ ...parseFromValuesOrFunc(muiTableFooterRowProps, {
46
+ footerGroup,
47
+ table,
48
+ }),
49
+ ...rest,
50
+ };
47
51
 
48
52
  return (
49
53
  <TableRow
@@ -1,11 +1,11 @@
1
1
  import { type VirtualItem } from '@tanstack/react-virtual';
2
- import TableHead from '@mui/material/TableHead';
2
+ import TableHead, { type TableHeadProps } from '@mui/material/TableHead';
3
3
  import { MRT_TableHeadRow } from './MRT_TableHeadRow';
4
4
  import { parseFromValuesOrFunc } from '../column.utils';
5
5
  import { MRT_ToolbarAlertBanner } from '../toolbar';
6
6
  import { type MRT_RowData, type MRT_TableInstance } from '../types';
7
7
 
8
- interface Props<TData extends MRT_RowData> {
8
+ interface Props<TData extends MRT_RowData> extends TableHeadProps {
9
9
  table: MRT_TableInstance<TData>;
10
10
  virtualColumns?: VirtualItem[];
11
11
  virtualPaddingLeft?: number;
@@ -17,6 +17,7 @@ export const MRT_TableHead = <TData extends MRT_RowData>({
17
17
  virtualColumns,
18
18
  virtualPaddingLeft,
19
19
  virtualPaddingRight,
20
+ ...rest
20
21
  }: Props<TData>) => {
21
22
  const {
22
23
  getHeaderGroups,
@@ -32,7 +33,10 @@ export const MRT_TableHead = <TData extends MRT_RowData>({
32
33
  } = table;
33
34
  const { isFullScreen, showAlertBanner } = getState();
34
35
 
35
- const tableHeadProps = parseFromValuesOrFunc(muiTableHeadProps, { table });
36
+ const tableHeadProps = {
37
+ ...parseFromValuesOrFunc(muiTableHeadProps, { table }),
38
+ ...rest,
39
+ };
36
40
 
37
41
  const stickyHeader = enableStickyHeader || isFullScreen;
38
42
 
@@ -65,7 +69,7 @@ export const MRT_TableHead = <TData extends MRT_RowData>({
65
69
  <th
66
70
  colSpan={table.getVisibleLeafColumns().length}
67
71
  style={{
68
- display: layoutMode?.startsWith('grid') ? 'grid' : 'table-cell',
72
+ display: layoutMode?.startsWith('grid') ? 'grid' : undefined,
69
73
  padding: 0,
70
74
  }}
71
75
  >
@@ -1,6 +1,6 @@
1
1
  import { type DragEvent, useMemo } from 'react';
2
2
  import Box from '@mui/material/Box';
3
- import TableCell from '@mui/material/TableCell';
3
+ import TableCell, { type TableCellProps } from '@mui/material/TableCell';
4
4
  import { useTheme } from '@mui/material/styles';
5
5
  import { type Theme } from '@mui/material/styles';
6
6
  import { MRT_TableHeadCellColumnActionsButton } from './MRT_TableHeadCellColumnActionsButton';
@@ -17,7 +17,7 @@ import {
17
17
  type MRT_TableInstance,
18
18
  } from '../types';
19
19
 
20
- interface Props<TData extends MRT_RowData> {
20
+ interface Props<TData extends MRT_RowData> extends TableCellProps {
21
21
  header: MRT_Header<TData>;
22
22
  table: MRT_TableInstance<TData>;
23
23
  }
@@ -25,6 +25,7 @@ interface Props<TData extends MRT_RowData> {
25
25
  export const MRT_TableHeadCell = <TData extends MRT_RowData>({
26
26
  header,
27
27
  table,
28
+ ...rest
28
29
  }: Props<TData>) => {
29
30
  const theme = useTheme();
30
31
  const {
@@ -60,6 +61,7 @@ export const MRT_TableHeadCell = <TData extends MRT_RowData>({
60
61
  column,
61
62
  table,
62
63
  }),
64
+ ...rest,
63
65
  };
64
66
 
65
67
  const showColumnActions =
@@ -186,97 +188,104 @@ export const MRT_TableHeadCell = <TData extends MRT_RowData>({
186
188
  ...draggingBorders,
187
189
  })}
188
190
  >
189
- {header.isPlaceholder ? null : (
190
- <Box
191
- className="Mui-TableHeadCell-Content"
192
- sx={{
193
- alignItems: 'center',
194
- display: 'flex',
195
- flexDirection:
196
- tableCellProps?.align === 'right' ? 'row-reverse' : 'row',
197
- justifyContent:
198
- columnDefType === 'group' || tableCellProps?.align === 'center'
199
- ? 'center'
200
- : column.getCanResize()
201
- ? 'space-between'
202
- : 'flex-start',
203
- position: 'relative',
204
- width: '100%',
205
- }}
206
- >
207
- <Box
208
- className="Mui-TableHeadCell-Content-Labels"
209
- onClick={column.getToggleSortingHandler()}
210
- sx={{
211
- alignItems: 'center',
212
- cursor:
213
- column.getCanSort() && columnDefType !== 'group'
214
- ? 'pointer'
215
- : undefined,
216
- display: 'flex',
217
- flexDirection:
218
- tableCellProps?.align === 'right' ? 'row-reverse' : 'row',
219
- overflow: columnDefType === 'data' ? 'hidden' : undefined,
220
- pl:
221
- tableCellProps?.align === 'center'
222
- ? `${headerPL}rem`
223
- : undefined,
224
- }}
225
- >
191
+ {header.isPlaceholder
192
+ ? null
193
+ : tableCellProps.children ?? (
226
194
  <Box
227
- className="Mui-TableHeadCell-Content-Wrapper"
195
+ className="Mui-TableHeadCell-Content"
228
196
  sx={{
229
- '&:hover': {
230
- textOverflow: 'clip',
231
- },
232
- minWidth: `${Math.min(columnDef.header?.length ?? 0, 4)}ch`,
233
- overflow: columnDefType === 'data' ? 'hidden' : undefined,
234
- textOverflow: 'ellipsis',
235
- whiteSpace:
236
- (columnDef.header?.length ?? 0) < 20 ? 'nowrap' : 'normal',
197
+ alignItems: 'center',
198
+ display: 'flex',
199
+ flexDirection:
200
+ tableCellProps?.align === 'right' ? 'row-reverse' : 'row',
201
+ justifyContent:
202
+ columnDefType === 'group' ||
203
+ tableCellProps?.align === 'center'
204
+ ? 'center'
205
+ : column.getCanResize()
206
+ ? 'space-between'
207
+ : 'flex-start',
208
+ position: 'relative',
209
+ width: '100%',
237
210
  }}
238
- title={columnDefType === 'data' ? columnDef.header : undefined}
239
211
  >
240
- {headerElement}
241
- </Box>
242
- {column.getCanFilter() && (
243
- <MRT_TableHeadCellFilterLabel header={header} table={table} />
244
- )}
245
- {column.getCanSort() && (
246
- <MRT_TableHeadCellSortLabel
247
- header={header}
248
- table={table}
249
- tableCellProps={tableCellProps}
250
- />
251
- )}
252
- </Box>
253
- {columnDefType !== 'group' && (
254
- <Box
255
- className="Mui-TableHeadCell-Content-Actions"
256
- sx={{ whiteSpace: 'nowrap' }}
257
- >
258
- {showDragHandle && (
259
- <MRT_TableHeadCellGrabHandle
260
- column={column}
261
- table={table}
262
- tableHeadCellRef={{
263
- current: tableHeadCellRefs.current[column.id],
212
+ <Box
213
+ className="Mui-TableHeadCell-Content-Labels"
214
+ onClick={column.getToggleSortingHandler()}
215
+ sx={{
216
+ alignItems: 'center',
217
+ cursor:
218
+ column.getCanSort() && columnDefType !== 'group'
219
+ ? 'pointer'
220
+ : undefined,
221
+ display: 'flex',
222
+ flexDirection:
223
+ tableCellProps?.align === 'right' ? 'row-reverse' : 'row',
224
+ overflow: columnDefType === 'data' ? 'hidden' : undefined,
225
+ pl:
226
+ tableCellProps?.align === 'center'
227
+ ? `${headerPL}rem`
228
+ : undefined,
229
+ }}
230
+ >
231
+ <Box
232
+ className="Mui-TableHeadCell-Content-Wrapper"
233
+ sx={{
234
+ '&:hover': {
235
+ textOverflow: 'clip',
236
+ },
237
+ minWidth: `${Math.min(columnDef.header?.length ?? 0, 4)}ch`,
238
+ overflow: columnDefType === 'data' ? 'hidden' : undefined,
239
+ textOverflow: 'ellipsis',
240
+ whiteSpace:
241
+ (columnDef.header?.length ?? 0) < 20
242
+ ? 'nowrap'
243
+ : 'normal',
264
244
  }}
265
- />
245
+ title={
246
+ columnDefType === 'data' ? columnDef.header : undefined
247
+ }
248
+ >
249
+ {headerElement}
250
+ </Box>
251
+ {column.getCanFilter() && (
252
+ <MRT_TableHeadCellFilterLabel header={header} table={table} />
253
+ )}
254
+ {column.getCanSort() && (
255
+ <MRT_TableHeadCellSortLabel
256
+ header={header}
257
+ table={table}
258
+ tableCellProps={tableCellProps}
259
+ />
260
+ )}
261
+ </Box>
262
+ {columnDefType !== 'group' && (
263
+ <Box
264
+ className="Mui-TableHeadCell-Content-Actions"
265
+ sx={{ whiteSpace: 'nowrap' }}
266
+ >
267
+ {showDragHandle && (
268
+ <MRT_TableHeadCellGrabHandle
269
+ column={column}
270
+ table={table}
271
+ tableHeadCellRef={{
272
+ current: tableHeadCellRefs.current[column.id],
273
+ }}
274
+ />
275
+ )}
276
+ {showColumnActions && (
277
+ <MRT_TableHeadCellColumnActionsButton
278
+ header={header}
279
+ table={table}
280
+ />
281
+ )}
282
+ </Box>
266
283
  )}
267
- {showColumnActions && (
268
- <MRT_TableHeadCellColumnActionsButton
269
- header={header}
270
- table={table}
271
- />
284
+ {column.getCanResize() && (
285
+ <MRT_TableHeadCellResizeHandle header={header} table={table} />
272
286
  )}
273
287
  </Box>
274
288
  )}
275
- {column.getCanResize() && (
276
- <MRT_TableHeadCellResizeHandle header={header} table={table} />
277
- )}
278
- </Box>
279
- )}
280
289
  {columnFilterDisplayMode === 'subheader' && column.getCanFilter() && (
281
290
  <MRT_TableHeadCellFilterContainer header={header} table={table} />
282
291
  )}
@@ -1,5 +1,5 @@
1
1
  import { type MouseEvent, useState } from 'react';
2
- import IconButton from '@mui/material/IconButton';
2
+ import IconButton, { type IconButtonProps } from '@mui/material/IconButton';
3
3
  import Tooltip from '@mui/material/Tooltip';
4
4
  import { parseFromValuesOrFunc } from '../column.utils';
5
5
  import { MRT_ColumnActionMenu } from '../menus/MRT_ColumnActionMenu';
@@ -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 IconButtonProps {
13
13
  header: MRT_Header<TData>;
14
14
  table: MRT_TableInstance<TData>;
15
15
  }
@@ -19,6 +19,7 @@ export const MRT_TableHeadCellColumnActionsButton = <
19
19
  >({
20
20
  header,
21
21
  table,
22
+ ...rest
22
23
  }: Props<TData>) => {
23
24
  const {
24
25
  options: {
@@ -48,6 +49,7 @@ export const MRT_TableHeadCellColumnActionsButton = <
48
49
  column,
49
50
  table,
50
51
  }),
52
+ ...rest,
51
53
  };
52
54
 
53
55
  return (
@@ -71,7 +73,7 @@ export const MRT_TableHeadCellColumnActionsButton = <
71
73
  height: '2rem',
72
74
  m: '-4px',
73
75
  opacity: 0.3,
74
- transform: `scale(0.85) ${
76
+ transform: `scale(0.8) ${
75
77
  columnFilterDisplayMode !== 'popover' ? 'translateX(-4px)' : ''
76
78
  }`,
77
79
  transition: 'opacity 150ms',
@@ -1,4 +1,4 @@
1
- import Collapse from '@mui/material/Collapse';
1
+ import Collapse, { type CollapseProps } from '@mui/material/Collapse';
2
2
  import { MRT_FilterCheckbox } from '../inputs/MRT_FilterCheckbox';
3
3
  import { MRT_FilterRangeFields } from '../inputs/MRT_FilterRangeFields';
4
4
  import { MRT_FilterRangeSlider } from '../inputs/MRT_FilterRangeSlider';
@@ -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 CollapseProps {
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_TableHeadCellFilterContainer = <TData extends MRT_RowData>({
18
18
  header,
19
19
  table,
20
+ ...rest
20
21
  }: Props<TData>) => {
21
22
  const {
22
23
  getState,
@@ -31,6 +32,7 @@ export const MRT_TableHeadCellFilterContainer = <TData extends MRT_RowData>({
31
32
  in={showColumnFilters || columnFilterDisplayMode === 'popover'}
32
33
  mountOnEnter
33
34
  unmountOnExit
35
+ {...rest}
34
36
  >
35
37
  {columnDef.filterVariant === 'checkbox' ? (
36
38
  <MRT_FilterCheckbox column={column} table={table} />
@@ -1,17 +1,18 @@
1
1
  import { type MouseEvent, useState } from 'react';
2
2
  import Box from '@mui/material/Box';
3
3
  import Grow from '@mui/material/Grow';
4
- import IconButton from '@mui/material/IconButton';
4
+ import IconButton, { type IconButtonProps } from '@mui/material/IconButton';
5
5
  import Popover from '@mui/material/Popover';
6
6
  import Tooltip from '@mui/material/Tooltip';
7
7
  import { MRT_TableHeadCellFilterContainer } from './MRT_TableHeadCellFilterContainer';
8
+ import { parseFromValuesOrFunc } from '../column.utils';
8
9
  import {
9
10
  type MRT_Header,
10
11
  type MRT_RowData,
11
12
  type MRT_TableInstance,
12
13
  } from '../types';
13
14
 
14
- interface Props<TData extends MRT_RowData> {
15
+ interface Props<TData extends MRT_RowData> extends IconButtonProps {
15
16
  header: MRT_Header<TData>;
16
17
  table: MRT_TableInstance<TData>;
17
18
  }
@@ -19,6 +20,7 @@ interface Props<TData extends MRT_RowData> {
19
20
  export const MRT_TableHeadCellFilterLabel = <TData extends MRT_RowData = {}>({
20
21
  header,
21
22
  table,
23
+ ...rest
22
24
  }: Props<TData>) => {
23
25
  const {
24
26
  options: {
@@ -106,7 +108,8 @@ export const MRT_TableHeadCellFilterLabel = <TData extends MRT_RowData = {}>({
106
108
  event.stopPropagation();
107
109
  }}
108
110
  size="small"
109
- sx={{
111
+ {...rest}
112
+ sx={(theme) => ({
110
113
  height: '16px',
111
114
  ml: '4px',
112
115
  opacity: isFilterActive ? 1 : 0.3,
@@ -114,7 +117,8 @@ export const MRT_TableHeadCellFilterLabel = <TData extends MRT_RowData = {}>({
114
117
  transform: 'scale(0.75)',
115
118
  transition: 'all 150ms ease-in-out',
116
119
  width: '16px',
117
- }}
120
+ ...(parseFromValuesOrFunc(rest?.sx, theme) as any),
121
+ })}
118
122
  >
119
123
  <FilterAltIcon />
120
124
  </IconButton>
@@ -1,4 +1,5 @@
1
1
  import { type DragEvent, type RefObject } from 'react';
2
+ import { type IconButtonProps } from '@mui/material/IconButton';
2
3
  import { MRT_GrabHandleButton } from '../buttons/MRT_GrabHandleButton';
3
4
  import { parseFromValuesOrFunc, reorderColumn } from '../column.utils';
4
5
  import {
@@ -7,7 +8,7 @@ import {
7
8
  type MRT_TableInstance,
8
9
  } from '../types';
9
10
 
10
- interface Props<TData extends MRT_RowData> {
11
+ interface Props<TData extends MRT_RowData> extends IconButtonProps {
11
12
  column: MRT_Column<TData>;
12
13
  table: MRT_TableInstance<TData>;
13
14
  tableHeadCellRef: RefObject<HTMLTableCellElement>;
@@ -17,6 +18,7 @@ export const MRT_TableHeadCellGrabHandle = <TData extends MRT_RowData>({
17
18
  column,
18
19
  table,
19
20
  tableHeadCellRef,
21
+ ...rest
20
22
  }: Props<TData>) => {
21
23
  const {
22
24
  getState,
@@ -34,6 +36,7 @@ export const MRT_TableHeadCellGrabHandle = <TData extends MRT_RowData>({
34
36
  column,
35
37
  table,
36
38
  }),
39
+ ...rest
37
40
  };
38
41
 
39
42
  const handleDragStart = (event: DragEvent<HTMLButtonElement>) => {
@@ -1,12 +1,13 @@
1
1
  import Box from '@mui/material/Box';
2
- import Divider from '@mui/material/Divider';
2
+ import Divider, { type DividerProps } from '@mui/material/Divider';
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 DividerProps {
10
11
  header: MRT_Header<TData>;
11
12
  table: MRT_TableInstance<TData>;
12
13
  }
@@ -14,6 +15,7 @@ interface Props<TData extends MRT_RowData> {
14
15
  export const MRT_TableHeadCellResizeHandle = <TData extends MRT_RowData>({
15
16
  header,
16
17
  table,
18
+ ...rest
17
19
  }: Props<TData>) => {
18
20
  const {
19
21
  getState,
@@ -62,7 +64,7 @@ export const MRT_TableHeadCellResizeHandle = <TData extends MRT_RowData>({
62
64
  className="Mui-TableHeadCell-ResizeHandle-Divider"
63
65
  flexItem
64
66
  orientation="vertical"
65
- sx={{
67
+ sx={(theme) => ({
66
68
  borderRadius: '2px',
67
69
  borderWidth: '2px',
68
70
  height: '24px',
@@ -72,7 +74,8 @@ export const MRT_TableHeadCellResizeHandle = <TData extends MRT_RowData>({
72
74
  : 'all 150ms ease-in-out',
73
75
  userSelect: 'none',
74
76
  zIndex: 4,
75
- }}
77
+ ...(parseFromValuesOrFunc(rest?.sx, theme) as any),
78
+ })}
76
79
  />
77
80
  </Box>
78
81
  );