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
@@ -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
  );