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

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 (202) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/index.js +119 -81
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/cjs/types/MaterialReactTable.d.ts +4 -4
  5. package/dist/cjs/types/body/MRT_TableBody.d.ts +4 -4
  6. package/dist/cjs/types/body/MRT_TableBodyCell.d.ts +5 -5
  7. package/dist/cjs/types/body/MRT_TableBodyCellValue.d.ts +3 -3
  8. package/dist/cjs/types/body/MRT_TableBodyRow.d.ts +5 -5
  9. package/dist/cjs/types/body/MRT_TableBodyRowGrabHandle.d.ts +3 -3
  10. package/dist/cjs/types/body/MRT_TableBodyRowPinButton.d.ts +3 -3
  11. package/dist/cjs/types/body/MRT_TableDetailPanel.d.ts +3 -3
  12. package/dist/cjs/types/buttons/MRT_ColumnPinningButtons.d.ts +3 -3
  13. package/dist/cjs/types/buttons/MRT_CopyButton.d.ts +3 -3
  14. package/dist/cjs/types/buttons/MRT_EditActionButtons.d.ts +3 -3
  15. package/dist/cjs/types/buttons/MRT_ExpandAllButton.d.ts +3 -3
  16. package/dist/cjs/types/buttons/MRT_ExpandButton.d.ts +3 -3
  17. package/dist/cjs/types/buttons/MRT_GrabHandleButton.d.ts +3 -3
  18. package/dist/cjs/types/buttons/MRT_RowPinButton.d.ts +3 -3
  19. package/dist/cjs/types/buttons/MRT_ShowHideColumnsButton.d.ts +3 -3
  20. package/dist/cjs/types/buttons/MRT_ToggleDensePaddingButton.d.ts +3 -3
  21. package/dist/cjs/types/buttons/MRT_ToggleFiltersButton.d.ts +3 -3
  22. package/dist/cjs/types/buttons/MRT_ToggleFullScreenButton.d.ts +3 -3
  23. package/dist/cjs/types/buttons/MRT_ToggleGlobalFilterButton.d.ts +3 -3
  24. package/dist/cjs/types/buttons/MRT_ToggleRowActionMenuButton.d.ts +3 -3
  25. package/dist/cjs/types/column.utils.d.ts +34 -33
  26. package/dist/cjs/types/filterFns.d.ts +15 -14
  27. package/dist/cjs/types/footer/MRT_TableFooter.d.ts +3 -3
  28. package/dist/cjs/types/footer/MRT_TableFooterCell.d.ts +3 -3
  29. package/dist/cjs/types/footer/MRT_TableFooterRow.d.ts +3 -3
  30. package/dist/cjs/types/head/MRT_TableHead.d.ts +3 -3
  31. package/dist/cjs/types/head/MRT_TableHeadCell.d.ts +3 -3
  32. package/dist/cjs/types/head/MRT_TableHeadCellColumnActionsButton.d.ts +3 -3
  33. package/dist/cjs/types/head/MRT_TableHeadCellFilterContainer.d.ts +3 -3
  34. package/dist/cjs/types/head/MRT_TableHeadCellFilterLabel.d.ts +3 -3
  35. package/dist/cjs/types/head/MRT_TableHeadCellGrabHandle.d.ts +3 -3
  36. package/dist/cjs/types/head/MRT_TableHeadCellResizeHandle.d.ts +3 -3
  37. package/dist/cjs/types/head/MRT_TableHeadCellSortLabel.d.ts +3 -3
  38. package/dist/cjs/types/head/MRT_TableHeadRow.d.ts +3 -3
  39. package/dist/cjs/types/hooks/useMRT_DisplayColumns.d.ts +3 -3
  40. package/dist/cjs/types/hooks/useMRT_Effects.d.ts +2 -2
  41. package/dist/cjs/types/hooks/useMRT_TableInstance.d.ts +2 -2
  42. package/dist/cjs/types/hooks/useMRT_TableOptions.d.ts +2 -2
  43. package/dist/cjs/types/inputs/MRT_EditCellTextField.d.ts +3 -3
  44. package/dist/cjs/types/inputs/MRT_FilterCheckbox.d.ts +3 -3
  45. package/dist/cjs/types/inputs/MRT_FilterRangeFields.d.ts +3 -3
  46. package/dist/cjs/types/inputs/MRT_FilterRangeSlider.d.ts +3 -3
  47. package/dist/cjs/types/inputs/MRT_FilterTextField.d.ts +3 -3
  48. package/dist/cjs/types/inputs/MRT_GlobalFilterTextField.d.ts +3 -3
  49. package/dist/cjs/types/inputs/MRT_SelectCheckbox.d.ts +3 -3
  50. package/dist/cjs/types/menus/MRT_ColumnActionMenu.d.ts +3 -3
  51. package/dist/cjs/types/menus/MRT_FilterOptionMenu.d.ts +3 -3
  52. package/dist/cjs/types/menus/MRT_RowActionMenu.d.ts +3 -3
  53. package/dist/cjs/types/menus/MRT_ShowHideColumnsMenu.d.ts +3 -3
  54. package/dist/cjs/types/menus/MRT_ShowHideColumnsMenuItems.d.ts +3 -3
  55. package/dist/cjs/types/modals/MRT_EditRowModal.d.ts +3 -3
  56. package/dist/cjs/types/sortingFns.d.ts +3 -3
  57. package/dist/cjs/types/table/MRT_Table.d.ts +3 -3
  58. package/dist/cjs/types/table/MRT_TableContainer.d.ts +3 -3
  59. package/dist/cjs/types/table/MRT_TablePaper.d.ts +3 -3
  60. package/dist/cjs/types/toolbar/MRT_BottomToolbar.d.ts +3 -3
  61. package/dist/cjs/types/toolbar/MRT_LinearProgressBar.d.ts +3 -3
  62. package/dist/cjs/types/toolbar/MRT_TablePagination.d.ts +3 -3
  63. package/dist/cjs/types/toolbar/MRT_ToolbarAlertBanner.d.ts +3 -3
  64. package/dist/cjs/types/toolbar/MRT_ToolbarDropZone.d.ts +3 -3
  65. package/dist/cjs/types/toolbar/MRT_ToolbarInternalButtons.d.ts +3 -3
  66. package/dist/cjs/types/toolbar/MRT_TopToolbar.d.ts +3 -3
  67. package/dist/cjs/types/types.d.ts +50 -40
  68. package/dist/cjs/types/useMaterialReactTable.d.ts +2 -2
  69. package/dist/esm/material-react-table.esm.js +119 -82
  70. package/dist/esm/material-react-table.esm.js.map +1 -1
  71. package/dist/esm/types/MaterialReactTable.d.ts +4 -4
  72. package/dist/esm/types/body/MRT_TableBody.d.ts +4 -4
  73. package/dist/esm/types/body/MRT_TableBodyCell.d.ts +5 -5
  74. package/dist/esm/types/body/MRT_TableBodyCellValue.d.ts +3 -3
  75. package/dist/esm/types/body/MRT_TableBodyRow.d.ts +5 -5
  76. package/dist/esm/types/body/MRT_TableBodyRowGrabHandle.d.ts +3 -3
  77. package/dist/esm/types/body/MRT_TableBodyRowPinButton.d.ts +3 -3
  78. package/dist/esm/types/body/MRT_TableDetailPanel.d.ts +3 -3
  79. package/dist/esm/types/buttons/MRT_ColumnPinningButtons.d.ts +3 -3
  80. package/dist/esm/types/buttons/MRT_CopyButton.d.ts +3 -3
  81. package/dist/esm/types/buttons/MRT_EditActionButtons.d.ts +3 -3
  82. package/dist/esm/types/buttons/MRT_ExpandAllButton.d.ts +3 -3
  83. package/dist/esm/types/buttons/MRT_ExpandButton.d.ts +3 -3
  84. package/dist/esm/types/buttons/MRT_GrabHandleButton.d.ts +3 -3
  85. package/dist/esm/types/buttons/MRT_RowPinButton.d.ts +3 -3
  86. package/dist/esm/types/buttons/MRT_ShowHideColumnsButton.d.ts +3 -3
  87. package/dist/esm/types/buttons/MRT_ToggleDensePaddingButton.d.ts +3 -3
  88. package/dist/esm/types/buttons/MRT_ToggleFiltersButton.d.ts +3 -3
  89. package/dist/esm/types/buttons/MRT_ToggleFullScreenButton.d.ts +3 -3
  90. package/dist/esm/types/buttons/MRT_ToggleGlobalFilterButton.d.ts +3 -3
  91. package/dist/esm/types/buttons/MRT_ToggleRowActionMenuButton.d.ts +3 -3
  92. package/dist/esm/types/column.utils.d.ts +34 -33
  93. package/dist/esm/types/filterFns.d.ts +15 -14
  94. package/dist/esm/types/footer/MRT_TableFooter.d.ts +3 -3
  95. package/dist/esm/types/footer/MRT_TableFooterCell.d.ts +3 -3
  96. package/dist/esm/types/footer/MRT_TableFooterRow.d.ts +3 -3
  97. package/dist/esm/types/head/MRT_TableHead.d.ts +3 -3
  98. package/dist/esm/types/head/MRT_TableHeadCell.d.ts +3 -3
  99. package/dist/esm/types/head/MRT_TableHeadCellColumnActionsButton.d.ts +3 -3
  100. package/dist/esm/types/head/MRT_TableHeadCellFilterContainer.d.ts +3 -3
  101. package/dist/esm/types/head/MRT_TableHeadCellFilterLabel.d.ts +3 -3
  102. package/dist/esm/types/head/MRT_TableHeadCellGrabHandle.d.ts +3 -3
  103. package/dist/esm/types/head/MRT_TableHeadCellResizeHandle.d.ts +3 -3
  104. package/dist/esm/types/head/MRT_TableHeadCellSortLabel.d.ts +3 -3
  105. package/dist/esm/types/head/MRT_TableHeadRow.d.ts +3 -3
  106. package/dist/esm/types/hooks/useMRT_DisplayColumns.d.ts +3 -3
  107. package/dist/esm/types/hooks/useMRT_Effects.d.ts +2 -2
  108. package/dist/esm/types/hooks/useMRT_TableInstance.d.ts +2 -2
  109. package/dist/esm/types/hooks/useMRT_TableOptions.d.ts +2 -2
  110. package/dist/esm/types/inputs/MRT_EditCellTextField.d.ts +3 -3
  111. package/dist/esm/types/inputs/MRT_FilterCheckbox.d.ts +3 -3
  112. package/dist/esm/types/inputs/MRT_FilterRangeFields.d.ts +3 -3
  113. package/dist/esm/types/inputs/MRT_FilterRangeSlider.d.ts +3 -3
  114. package/dist/esm/types/inputs/MRT_FilterTextField.d.ts +3 -3
  115. package/dist/esm/types/inputs/MRT_GlobalFilterTextField.d.ts +3 -3
  116. package/dist/esm/types/inputs/MRT_SelectCheckbox.d.ts +3 -3
  117. package/dist/esm/types/menus/MRT_ColumnActionMenu.d.ts +3 -3
  118. package/dist/esm/types/menus/MRT_FilterOptionMenu.d.ts +3 -3
  119. package/dist/esm/types/menus/MRT_RowActionMenu.d.ts +3 -3
  120. package/dist/esm/types/menus/MRT_ShowHideColumnsMenu.d.ts +3 -3
  121. package/dist/esm/types/menus/MRT_ShowHideColumnsMenuItems.d.ts +3 -3
  122. package/dist/esm/types/modals/MRT_EditRowModal.d.ts +3 -3
  123. package/dist/esm/types/sortingFns.d.ts +3 -3
  124. package/dist/esm/types/table/MRT_Table.d.ts +3 -3
  125. package/dist/esm/types/table/MRT_TableContainer.d.ts +3 -3
  126. package/dist/esm/types/table/MRT_TablePaper.d.ts +3 -3
  127. package/dist/esm/types/toolbar/MRT_BottomToolbar.d.ts +3 -3
  128. package/dist/esm/types/toolbar/MRT_LinearProgressBar.d.ts +3 -3
  129. package/dist/esm/types/toolbar/MRT_TablePagination.d.ts +3 -3
  130. package/dist/esm/types/toolbar/MRT_ToolbarAlertBanner.d.ts +3 -3
  131. package/dist/esm/types/toolbar/MRT_ToolbarDropZone.d.ts +3 -3
  132. package/dist/esm/types/toolbar/MRT_ToolbarInternalButtons.d.ts +3 -3
  133. package/dist/esm/types/toolbar/MRT_TopToolbar.d.ts +3 -3
  134. package/dist/esm/types/types.d.ts +50 -40
  135. package/dist/esm/types/useMaterialReactTable.d.ts +2 -2
  136. package/dist/index.d.ts +219 -208
  137. package/package.json +1 -1
  138. package/src/MaterialReactTable.tsx +5 -4
  139. package/src/body/MRT_TableBody.tsx +12 -3
  140. package/src/body/MRT_TableBodyCell.tsx +28 -8
  141. package/src/body/MRT_TableBodyCellValue.tsx +7 -3
  142. package/src/body/MRT_TableBodyRow.tsx +9 -4
  143. package/src/body/MRT_TableBodyRowGrabHandle.tsx +7 -3
  144. package/src/body/MRT_TableBodyRowPinButton.tsx +7 -3
  145. package/src/body/MRT_TableDetailPanel.tsx +8 -5
  146. package/src/buttons/MRT_ColumnPinningButtons.tsx +7 -3
  147. package/src/buttons/MRT_CopyButton.tsx +7 -3
  148. package/src/buttons/MRT_EditActionButtons.tsx +7 -3
  149. package/src/buttons/MRT_ExpandAllButton.tsx +5 -6
  150. package/src/buttons/MRT_ExpandButton.tsx +9 -6
  151. package/src/buttons/MRT_GrabHandleButton.tsx +3 -3
  152. package/src/buttons/MRT_RowPinButton.tsx +7 -3
  153. package/src/buttons/MRT_ShowHideColumnsButton.tsx +3 -3
  154. package/src/buttons/MRT_ToggleDensePaddingButton.tsx +3 -5
  155. package/src/buttons/MRT_ToggleFiltersButton.tsx +3 -3
  156. package/src/buttons/MRT_ToggleFullScreenButton.tsx +3 -3
  157. package/src/buttons/MRT_ToggleGlobalFilterButton.tsx +3 -5
  158. package/src/buttons/MRT_ToggleRowActionMenuButton.tsx +8 -5
  159. package/src/column.utils.ts +41 -17
  160. package/src/filterFns.ts +15 -14
  161. package/src/footer/MRT_TableFooter.tsx +3 -3
  162. package/src/footer/MRT_TableFooterCell.tsx +7 -3
  163. package/src/footer/MRT_TableFooterRow.tsx +3 -2
  164. package/src/head/MRT_TableHead.tsx +3 -3
  165. package/src/head/MRT_TableHeadCell.tsx +28 -16
  166. package/src/head/MRT_TableHeadCellColumnActionsButton.tsx +7 -3
  167. package/src/head/MRT_TableHeadCellFilterContainer.tsx +7 -5
  168. package/src/head/MRT_TableHeadCellFilterLabel.tsx +7 -5
  169. package/src/head/MRT_TableHeadCellGrabHandle.tsx +7 -3
  170. package/src/head/MRT_TableHeadCellResizeHandle.tsx +15 -8
  171. package/src/head/MRT_TableHeadCellSortLabel.tsx +7 -3
  172. package/src/head/MRT_TableHeadRow.tsx +3 -2
  173. package/src/hooks/useMRT_DisplayColumns.tsx +3 -2
  174. package/src/hooks/useMRT_Effects.ts +6 -2
  175. package/src/hooks/useMRT_TableInstance.ts +3 -2
  176. package/src/hooks/useMRT_TableOptions.ts +7 -3
  177. package/src/inputs/MRT_EditCellTextField.tsx +17 -5
  178. package/src/inputs/MRT_FilterCheckbox.tsx +7 -3
  179. package/src/inputs/MRT_FilterRangeFields.tsx +7 -3
  180. package/src/inputs/MRT_FilterRangeSlider.tsx +7 -3
  181. package/src/inputs/MRT_FilterTextField.tsx +9 -3
  182. package/src/inputs/MRT_GlobalFilterTextField.tsx +3 -3
  183. package/src/inputs/MRT_SelectCheckbox.tsx +7 -3
  184. package/src/menus/MRT_ColumnActionMenu.tsx +7 -3
  185. package/src/menus/MRT_FilterOptionMenu.tsx +3 -2
  186. package/src/menus/MRT_RowActionMenu.tsx +7 -3
  187. package/src/menus/MRT_ShowHideColumnsMenu.tsx +7 -3
  188. package/src/menus/MRT_ShowHideColumnsMenuItems.tsx +7 -5
  189. package/src/modals/MRT_EditRowModal.tsx +7 -3
  190. package/src/sortingFns.ts +3 -3
  191. package/src/table/MRT_Table.tsx +3 -3
  192. package/src/table/MRT_TableContainer.tsx +3 -3
  193. package/src/table/MRT_TablePaper.tsx +4 -4
  194. package/src/toolbar/MRT_BottomToolbar.tsx +3 -3
  195. package/src/toolbar/MRT_LinearProgressBar.tsx +3 -3
  196. package/src/toolbar/MRT_TablePagination.tsx +8 -5
  197. package/src/toolbar/MRT_ToolbarAlertBanner.tsx +3 -3
  198. package/src/toolbar/MRT_ToolbarDropZone.tsx +3 -3
  199. package/src/toolbar/MRT_ToolbarInternalButtons.tsx +3 -3
  200. package/src/toolbar/MRT_TopToolbar.tsx +3 -3
  201. package/src/types.ts +75 -45
  202. package/src/useMaterialReactTable.ts +6 -2
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2.0.0-beta.0",
2
+ "version": "2.0.0-beta.2",
3
3
  "license": "MIT",
4
4
  "name": "material-react-table",
5
5
  "description": "A fully featured Material UI V5 implementation of TanStack React Table V8, written from the ground up in TypeScript.",
@@ -1,26 +1,27 @@
1
1
  import { MRT_TablePaper } from './table/MRT_TablePaper';
2
2
  import {
3
+ type MRT_RowData,
3
4
  type MRT_TableInstance,
4
5
  type MRT_TableOptions,
5
6
  type Xor,
6
7
  } from './types';
7
8
  import { useMaterialReactTable } from './useMaterialReactTable';
8
9
 
9
- type TableInstanceProp<TData extends Record<string, any> = {}> = {
10
+ type TableInstanceProp<TData extends MRT_RowData> = {
10
11
  table: MRT_TableInstance<TData>;
11
12
  };
12
13
 
13
- type Props<TData extends Record<string, any> = {}> = Xor<
14
+ type Props<TData extends MRT_RowData> = Xor<
14
15
  TableInstanceProp<TData>,
15
16
  MRT_TableOptions<TData>
16
17
  >;
17
18
 
18
- const isTableInstanceProp = <TData extends Record<string, any> = {}>(
19
+ const isTableInstanceProp = <TData extends MRT_RowData>(
19
20
  props: Props<TData>,
20
21
  ): props is TableInstanceProp<TData> =>
21
22
  (props as TableInstanceProp<TData>).table !== undefined;
22
23
 
23
- export const MaterialReactTable = <TData extends Record<string, any> = {}>(
24
+ export const MaterialReactTable = <TData extends MRT_RowData>(
24
25
  props: Props<TData>,
25
26
  ) => {
26
27
  let table: MRT_TableInstance<TData>;
@@ -14,9 +14,13 @@ import {
14
14
  parseFromValuesOrFunc,
15
15
  } from '../column.utils';
16
16
  import { rankGlobalFuzzy } from '../sortingFns';
17
- import { type MRT_Row, type MRT_TableInstance } from '../types';
17
+ import {
18
+ type MRT_Row,
19
+ type MRT_RowData,
20
+ type MRT_TableInstance,
21
+ } from '../types';
18
22
 
19
- interface Props<TData extends Record<string, any>> {
23
+ interface Props<TData extends MRT_RowData> {
20
24
  columnVirtualizer?: Virtualizer<HTMLDivElement, HTMLTableCellElement>;
21
25
  table: MRT_TableInstance<TData>;
22
26
  virtualColumns?: VirtualItem[];
@@ -24,7 +28,7 @@ interface Props<TData extends Record<string, any>> {
24
28
  virtualPaddingRight?: number;
25
29
  }
26
30
 
27
- export const MRT_TableBody = <TData extends Record<string, any>>({
31
+ export const MRT_TableBody = <TData extends MRT_RowData>({
28
32
  columnVirtualizer,
29
33
  table,
30
34
  virtualColumns,
@@ -40,6 +44,7 @@ export const MRT_TableBody = <TData extends Record<string, any>>({
40
44
  getState,
41
45
  getTopRows,
42
46
  options: {
47
+ createDisplayMode,
43
48
  enableGlobalFilterRankedResults,
44
49
  enablePagination,
45
50
  enableRowPinning,
@@ -64,6 +69,7 @@ export const MRT_TableBody = <TData extends Record<string, any>>({
64
69
  } = table;
65
70
  const {
66
71
  columnFilters,
72
+ creatingRow,
67
73
  density,
68
74
  draggingRow,
69
75
  expanded,
@@ -222,6 +228,9 @@ export const MRT_TableBody = <TData extends Record<string, any>>({
222
228
  ...(parseFromValuesOrFunc(tableBodyProps?.sx, theme) as any),
223
229
  })}
224
230
  >
231
+ {creatingRow && createDisplayMode === 'row' && (
232
+ <MRT_TableBodyRow row={creatingRow} rowIndex={-1} table={table} />
233
+ )}
225
234
  {tableBodyProps?.children ??
226
235
  (!rows.length ? (
227
236
  <tr
@@ -21,19 +21,23 @@ import {
21
21
  parseFromValuesOrFunc,
22
22
  } from '../column.utils';
23
23
  import { MRT_EditCellTextField } from '../inputs/MRT_EditCellTextField';
24
- import { type MRT_Cell, type MRT_TableInstance } from '../types';
24
+ import {
25
+ type MRT_Cell,
26
+ type MRT_RowData,
27
+ type MRT_TableInstance,
28
+ } from '../types';
25
29
 
26
- interface Props<TData extends Record<string, any>> {
30
+ interface Props<TData extends MRT_RowData> {
27
31
  cell: MRT_Cell<TData>;
28
32
  measureElement?: (element: HTMLTableCellElement) => void;
29
- numRows: number;
33
+ numRows?: number;
30
34
  rowIndex: number;
31
35
  rowRef: RefObject<HTMLTableRowElement>;
32
36
  table: MRT_TableInstance<TData>;
33
37
  virtualCell?: VirtualItem;
34
38
  }
35
39
 
36
- export const MRT_TableBodyCell = <TData extends Record<string, any>>({
40
+ export const MRT_TableBodyCell = <TData extends MRT_RowData>({
37
41
  cell,
38
42
  measureElement,
39
43
  numRows,
@@ -63,6 +67,7 @@ export const MRT_TableBodyCell = <TData extends Record<string, any>>({
63
67
  setHoveredColumn,
64
68
  } = table;
65
69
  const {
70
+ columnSizingInfo,
66
71
  creatingRow,
67
72
  density,
68
73
  draggingColumn,
@@ -118,15 +123,23 @@ export const MRT_TableBodyCell = <TData extends Record<string, any>>({
118
123
  const isHoveredRow = hoveredRow?.id === row.id;
119
124
  const isFirstColumn = getIsFirstColumn(column, table);
120
125
  const isLastColumn = getIsLastColumn(column, table);
121
- const isLastRow = rowIndex === numRows - 1;
126
+ const isLastRow = numRows && rowIndex === numRows - 1;
122
127
 
123
128
  const borderStyle =
124
- isDraggingColumn || isDraggingRow
129
+ columnSizingInfo.isResizingColumn === column.id
130
+ ? `2px solid ${theme.palette.primary.main} !important`
131
+ : isDraggingColumn || isDraggingRow
125
132
  ? `1px dashed ${theme.palette.text.secondary} !important`
126
- : isHoveredColumn || isHoveredRow
133
+ : isHoveredColumn ||
134
+ isHoveredRow ||
135
+ columnSizingInfo.isResizingColumn === column.id
127
136
  ? `2px dashed ${theme.palette.primary.main} !important`
128
137
  : undefined;
129
138
 
139
+ if (columnSizingInfo.isResizingColumn === column.id) {
140
+ return { borderRight: borderStyle };
141
+ }
142
+
130
143
  return borderStyle
131
144
  ? {
132
145
  borderBottom:
@@ -148,7 +161,14 @@ export const MRT_TableBodyCell = <TData extends Record<string, any>>({
148
161
  borderTop: isDraggingRow || isHoveredRow ? borderStyle : undefined,
149
162
  }
150
163
  : undefined;
151
- }, [draggingColumn, draggingRow, hoveredColumn, hoveredRow, rowIndex]);
164
+ }, [
165
+ columnSizingInfo.isResizingColumn,
166
+ draggingColumn,
167
+ draggingRow,
168
+ hoveredColumn,
169
+ hoveredRow,
170
+ rowIndex,
171
+ ]);
152
172
 
153
173
  const isEditable =
154
174
  parseFromValuesOrFunc(enableEditing, row) &&
@@ -1,17 +1,21 @@
1
1
  import { type ReactNode } from 'react';
2
2
  import Box from '@mui/material/Box';
3
3
  import { darken, lighten } from '@mui/material/styles';
4
- import { type MRT_Cell, type MRT_TableInstance } from '../types';
4
+ import {
5
+ type MRT_Cell,
6
+ type MRT_RowData,
7
+ type MRT_TableInstance,
8
+ } from '../types';
5
9
  import highlightWords from 'highlight-words';
6
10
 
7
11
  const allowedTypes = ['string', 'number'];
8
12
 
9
- interface Props<TData extends Record<string, any>> {
13
+ interface Props<TData extends MRT_RowData> {
10
14
  cell: MRT_Cell<TData>;
11
15
  table: MRT_TableInstance<TData>;
12
16
  }
13
17
 
14
- export const MRT_TableBodyCellValue = <TData extends Record<string, any>>({
18
+ export const MRT_TableBodyCellValue = <TData extends MRT_RowData>({
15
19
  cell,
16
20
  table,
17
21
  }: Props<TData>) => {
@@ -11,12 +11,17 @@ import {
11
11
  import { MRT_TableBodyCell, Memo_MRT_TableBodyCell } from './MRT_TableBodyCell';
12
12
  import { MRT_TableDetailPanel } from './MRT_TableDetailPanel';
13
13
  import { parseFromValuesOrFunc } from '../column.utils';
14
- import { type MRT_Cell, type MRT_Row, type MRT_TableInstance } from '../types';
14
+ import {
15
+ type MRT_Cell,
16
+ type MRT_Row,
17
+ type MRT_RowData,
18
+ type MRT_TableInstance,
19
+ } from '../types';
15
20
 
16
- interface Props<TData extends Record<string, any>> {
21
+ interface Props<TData extends MRT_RowData> {
17
22
  columnVirtualizer?: Virtualizer<HTMLDivElement, HTMLTableCellElement>;
18
23
  measureElement?: (element: HTMLTableRowElement) => void;
19
- numRows: number;
24
+ numRows?: number;
20
25
  pinnedRowIds?: string[];
21
26
  row: MRT_Row<TData>;
22
27
  rowIndex: number;
@@ -27,7 +32,7 @@ interface Props<TData extends Record<string, any>> {
27
32
  virtualRow?: VirtualItem;
28
33
  }
29
34
 
30
- export const MRT_TableBodyRow = <TData extends Record<string, any>>({
35
+ export const MRT_TableBodyRow = <TData extends MRT_RowData>({
31
36
  columnVirtualizer,
32
37
  measureElement,
33
38
  numRows,
@@ -1,15 +1,19 @@
1
1
  import { type DragEvent, type RefObject } from 'react';
2
2
  import { MRT_GrabHandleButton } from '../buttons/MRT_GrabHandleButton';
3
3
  import { parseFromValuesOrFunc } from '../column.utils';
4
- import { type MRT_Row, type MRT_TableInstance } from '../types';
4
+ import {
5
+ type MRT_Row,
6
+ type MRT_RowData,
7
+ type MRT_TableInstance,
8
+ } from '../types';
5
9
 
6
- interface Props<TData extends Record<string, any>> {
10
+ interface Props<TData extends MRT_RowData> {
7
11
  row: MRT_Row<TData>;
8
12
  rowRef: RefObject<HTMLTableRowElement>;
9
13
  table: MRT_TableInstance<TData>;
10
14
  }
11
15
 
12
- export const MRT_TableBodyRowGrabHandle = <TData extends Record<string, any>>({
16
+ export const MRT_TableBodyRowGrabHandle = <TData extends MRT_RowData>({
13
17
  row,
14
18
  rowRef,
15
19
  table,
@@ -1,14 +1,18 @@
1
1
  import Box from '@mui/material/Box';
2
2
  import { MRT_RowPinButton } from '../buttons/MRT_RowPinButton';
3
3
  import { parseFromValuesOrFunc } from '../column.utils';
4
- import { type MRT_Row, type MRT_TableInstance } from '../types';
4
+ import {
5
+ type MRT_Row,
6
+ type MRT_RowData,
7
+ type MRT_TableInstance,
8
+ } from '../types';
5
9
 
6
- interface Props<TData extends Record<string, any>> {
10
+ interface Props<TData extends MRT_RowData> {
7
11
  row: MRT_Row<TData>;
8
12
  table: MRT_TableInstance<TData>;
9
13
  }
10
14
 
11
- export const MRT_TableBodyRowPinButton = <TData extends Record<string, any>>({
15
+ export const MRT_TableBodyRowPinButton = <TData extends MRT_RowData>({
12
16
  row,
13
17
  table,
14
18
  }: Props<TData>) => {
@@ -5,9 +5,13 @@ import TableCell from '@mui/material/TableCell';
5
5
  import TableRow from '@mui/material/TableRow';
6
6
  import { lighten } from '@mui/material/styles';
7
7
  import { parseFromValuesOrFunc } from '../column.utils';
8
- import { type MRT_Row, type MRT_TableInstance } from '../types';
8
+ import {
9
+ type MRT_Row,
10
+ type MRT_RowData,
11
+ type MRT_TableInstance,
12
+ } from '../types';
9
13
 
10
- interface Props<TData extends Record<string, any>> {
14
+ interface Props<TData extends MRT_RowData> {
11
15
  parentRowRef: RefObject<HTMLTableRowElement>;
12
16
  row: MRT_Row<TData>;
13
17
  rowIndex: number;
@@ -15,7 +19,7 @@ interface Props<TData extends Record<string, any>> {
15
19
  virtualRow?: VirtualItem;
16
20
  }
17
21
 
18
- export const MRT_TableDetailPanel = <TData extends Record<string, any>>({
22
+ export const MRT_TableDetailPanel = <TData extends MRT_RowData>({
19
23
  parentRowRef,
20
24
  row,
21
25
  rowIndex,
@@ -74,8 +78,7 @@ export const MRT_TableDetailPanel = <TData extends Record<string, any>>({
74
78
  : undefined,
75
79
  borderBottom: !row.getIsExpanded() ? 'none' : undefined,
76
80
  display: layoutMode?.startsWith('grid') ? 'flex' : 'table-cell',
77
- pb: row.getIsExpanded() ? '1rem' : 0,
78
- pt: row.getIsExpanded() ? '1rem' : 0,
81
+ py: row.getIsExpanded() ? '1rem' : 0,
79
82
  transition: 'all 150ms ease-in-out',
80
83
  width: `${table.getTotalSize()}px`,
81
84
  ...(parseFromValuesOrFunc(tableCellProps?.sx, theme) as any),
@@ -1,14 +1,18 @@
1
1
  import Box from '@mui/material/Box';
2
2
  import IconButton from '@mui/material/IconButton';
3
3
  import Tooltip from '@mui/material/Tooltip';
4
- import { type MRT_Column, type MRT_TableInstance } from '../types';
4
+ import {
5
+ type MRT_Column,
6
+ type MRT_RowData,
7
+ type MRT_TableInstance,
8
+ } from '../types';
5
9
 
6
- interface Props<TData extends Record<string, any>> {
10
+ interface Props<TData extends MRT_RowData> {
7
11
  column: MRT_Column<TData>;
8
12
  table: MRT_TableInstance<TData>;
9
13
  }
10
14
 
11
- export const MRT_ColumnPinningButtons = <TData extends Record<string, any>>({
15
+ export const MRT_ColumnPinningButtons = <TData extends MRT_RowData>({
12
16
  column,
13
17
  table,
14
18
  }: Props<TData>) => {
@@ -2,15 +2,19 @@ import { type MouseEvent, type ReactNode, useState } from 'react';
2
2
  import Button from '@mui/material/Button';
3
3
  import Tooltip from '@mui/material/Tooltip';
4
4
  import { parseFromValuesOrFunc } from '../column.utils';
5
- import { type MRT_Cell, type MRT_TableInstance } from '../types';
5
+ import {
6
+ type MRT_Cell,
7
+ type MRT_RowData,
8
+ type MRT_TableInstance,
9
+ } from '../types';
6
10
 
7
- interface Props<TData extends Record<string, any>> {
11
+ interface Props<TData extends MRT_RowData> {
8
12
  cell: MRT_Cell<TData>;
9
13
  children: ReactNode;
10
14
  table: MRT_TableInstance<TData>;
11
15
  }
12
16
 
13
- export const MRT_CopyButton = <TData extends Record<string, any>>({
17
+ export const MRT_CopyButton = <TData extends MRT_RowData>({
14
18
  cell,
15
19
  children,
16
20
  table,
@@ -3,15 +3,19 @@ import Button from '@mui/material/Button';
3
3
  import CircularProgress from '@mui/material/CircularProgress';
4
4
  import IconButton from '@mui/material/IconButton';
5
5
  import Tooltip from '@mui/material/Tooltip';
6
- import { type MRT_Row, type MRT_TableInstance } from '../types';
6
+ import {
7
+ type MRT_Row,
8
+ type MRT_RowData,
9
+ type MRT_TableInstance,
10
+ } from '../types';
7
11
 
8
- interface Props<TData extends Record<string, any>> {
12
+ interface Props<TData extends MRT_RowData> {
9
13
  row: MRT_Row<TData>;
10
14
  table: MRT_TableInstance<TData>;
11
15
  variant?: 'icon' | 'text';
12
16
  }
13
17
 
14
- export const MRT_EditActionButtons = <TData extends Record<string, any>>({
18
+ export const MRT_EditActionButtons = <TData extends MRT_RowData>({
15
19
  row,
16
20
  table,
17
21
  variant = 'icon',
@@ -1,13 +1,13 @@
1
1
  import IconButton from '@mui/material/IconButton';
2
2
  import Tooltip from '@mui/material/Tooltip';
3
3
  import { parseFromValuesOrFunc } from '../column.utils';
4
- import { type MRT_TableInstance } from '../types';
4
+ import { type MRT_RowData, type MRT_TableInstance } from '../types';
5
5
 
6
- interface Props<TData extends Record<string, any>> {
6
+ interface Props<TData extends MRT_RowData> {
7
7
  table: MRT_TableInstance<TData>;
8
8
  }
9
9
 
10
- export const MRT_ExpandAllButton = <TData extends Record<string, any>>({
10
+ export const MRT_ExpandAllButton = <TData extends MRT_RowData>({
11
11
  table,
12
12
  }: Props<TData>) => {
13
13
  const {
@@ -37,9 +37,8 @@ export const MRT_ExpandAllButton = <TData extends Record<string, any>>({
37
37
  enterDelay={1000}
38
38
  enterNextDelay={1000}
39
39
  title={
40
- iconButtonProps?.title ?? isAllRowsExpanded
41
- ? localization.collapseAll
42
- : localization.expandAll
40
+ iconButtonProps?.title ??
41
+ (isAllRowsExpanded ? localization.collapseAll : localization.expandAll)
43
42
  }
44
43
  >
45
44
  <span>
@@ -2,14 +2,18 @@ import { type MouseEvent } from 'react';
2
2
  import IconButton from '@mui/material/IconButton';
3
3
  import Tooltip from '@mui/material/Tooltip';
4
4
  import { parseFromValuesOrFunc } from '../column.utils';
5
- import { type MRT_Row, type MRT_TableInstance } from '../types';
5
+ import {
6
+ type MRT_Row,
7
+ type MRT_RowData,
8
+ type MRT_TableInstance,
9
+ } from '../types';
6
10
 
7
- interface Props<TData extends Record<string, any>> {
11
+ interface Props<TData extends MRT_RowData> {
8
12
  row: MRT_Row<TData>;
9
13
  table: MRT_TableInstance<TData>;
10
14
  }
11
15
 
12
- export const MRT_ExpandButton = <TData extends Record<string, any>>({
16
+ export const MRT_ExpandButton = <TData extends MRT_RowData>({
13
17
  row,
14
18
  table,
15
19
  }: Props<TData>) => {
@@ -45,9 +49,8 @@ export const MRT_ExpandButton = <TData extends Record<string, any>>({
45
49
  enterDelay={1000}
46
50
  enterNextDelay={1000}
47
51
  title={
48
- iconButtonProps?.title ?? isExpanded
49
- ? localization.collapse
50
- : localization.expand
52
+ iconButtonProps?.title ??
53
+ (isExpanded ? localization.collapse : localization.expand)
51
54
  }
52
55
  >
53
56
  <span>
@@ -2,9 +2,9 @@ import { type DragEventHandler } from 'react';
2
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
- import { type MRT_TableInstance } from '../types';
5
+ import { type MRT_RowData, type MRT_TableInstance } from '../types';
6
6
 
7
- interface Props<TData extends Record<string, any>> {
7
+ interface Props<TData extends MRT_RowData> {
8
8
  iconButtonProps?: IconButtonProps;
9
9
  location?: 'column' | 'row';
10
10
  onDragEnd: DragEventHandler<HTMLButtonElement>;
@@ -12,7 +12,7 @@ interface Props<TData extends Record<string, any>> {
12
12
  table: MRT_TableInstance<TData>;
13
13
  }
14
14
 
15
- export const MRT_GrabHandleButton = <TData extends Record<string, any>>({
15
+ export const MRT_GrabHandleButton = <TData extends MRT_RowData>({
16
16
  iconButtonProps,
17
17
  location,
18
18
  onDragEnd,
@@ -2,15 +2,19 @@ import { type MouseEvent, useState } from 'react';
2
2
  import { type RowPinningPosition } from '@tanstack/react-table';
3
3
  import IconButton from '@mui/material/IconButton';
4
4
  import Tooltip from '@mui/material/Tooltip';
5
- import { type MRT_Row, type MRT_TableInstance } from '../types';
5
+ import {
6
+ type MRT_Row,
7
+ type MRT_RowData,
8
+ type MRT_TableInstance,
9
+ } from '../types';
6
10
 
7
- interface Props<TData extends Record<string, any>> {
11
+ interface Props<TData extends MRT_RowData> {
8
12
  pinningPosition: RowPinningPosition;
9
13
  row: MRT_Row<TData>;
10
14
  table: MRT_TableInstance<TData>;
11
15
  }
12
16
 
13
- export const MRT_RowPinButton = <TData extends Record<string, any>>({
17
+ export const MRT_RowPinButton = <TData extends MRT_RowData>({
14
18
  pinningPosition,
15
19
  row,
16
20
  table,
@@ -2,13 +2,13 @@ import { type MouseEvent, useState } from 'react';
2
2
  import IconButton, { type IconButtonProps } from '@mui/material/IconButton';
3
3
  import Tooltip from '@mui/material/Tooltip';
4
4
  import { MRT_ShowHideColumnsMenu } from '../menus/MRT_ShowHideColumnsMenu';
5
- import { type MRT_TableInstance } from '../types';
5
+ import { type MRT_RowData, type MRT_TableInstance } from '../types';
6
6
 
7
- interface Props<TData extends Record<string, any>> extends IconButtonProps {
7
+ interface Props<TData extends MRT_RowData> extends IconButtonProps {
8
8
  table: MRT_TableInstance<TData>;
9
9
  }
10
10
 
11
- export const MRT_ShowHideColumnsButton = <TData extends Record<string, any>>({
11
+ export const MRT_ShowHideColumnsButton = <TData extends MRT_RowData>({
12
12
  table,
13
13
  ...rest
14
14
  }: Props<TData>) => {
@@ -1,14 +1,12 @@
1
1
  import IconButton, { type IconButtonProps } from '@mui/material/IconButton';
2
2
  import Tooltip from '@mui/material/Tooltip';
3
- import { type MRT_TableInstance } from '../types';
3
+ import { type MRT_RowData, type MRT_TableInstance } from '../types';
4
4
 
5
- interface Props<TData extends Record<string, any>> extends IconButtonProps {
5
+ interface Props<TData extends MRT_RowData> extends IconButtonProps {
6
6
  table: MRT_TableInstance<TData>;
7
7
  }
8
8
 
9
- export const MRT_ToggleDensePaddingButton = <
10
- TData extends Record<string, any>,
11
- >({
9
+ export const MRT_ToggleDensePaddingButton = <TData extends MRT_RowData>({
12
10
  table,
13
11
  ...rest
14
12
  }: Props<TData>) => {
@@ -1,12 +1,12 @@
1
1
  import IconButton, { type IconButtonProps } from '@mui/material/IconButton';
2
2
  import Tooltip from '@mui/material/Tooltip';
3
- import { type MRT_TableInstance } from '../types';
3
+ import { type MRT_RowData, type MRT_TableInstance } from '../types';
4
4
 
5
- interface Props<TData extends Record<string, any>> extends IconButtonProps {
5
+ interface Props<TData extends MRT_RowData> extends IconButtonProps {
6
6
  table: MRT_TableInstance<TData>;
7
7
  }
8
8
 
9
- export const MRT_ToggleFiltersButton = <TData extends Record<string, any>>({
9
+ export const MRT_ToggleFiltersButton = <TData extends MRT_RowData>({
10
10
  table,
11
11
  ...rest
12
12
  }: Props<TData>) => {
@@ -1,13 +1,13 @@
1
1
  import { useState } from 'react';
2
2
  import IconButton, { type IconButtonProps } from '@mui/material/IconButton';
3
3
  import Tooltip from '@mui/material/Tooltip';
4
- import { type MRT_TableInstance } from '../types';
4
+ import { type MRT_RowData, type MRT_TableInstance } from '../types';
5
5
 
6
- interface Props<TData extends Record<string, any>> extends IconButtonProps {
6
+ interface Props<TData extends MRT_RowData> extends IconButtonProps {
7
7
  table: MRT_TableInstance<TData>;
8
8
  }
9
9
 
10
- export const MRT_ToggleFullScreenButton = <TData extends Record<string, any>>({
10
+ export const MRT_ToggleFullScreenButton = <TData extends MRT_RowData>({
11
11
  table,
12
12
  ...rest
13
13
  }: Props<TData>) => {
@@ -1,14 +1,12 @@
1
1
  import IconButton, { type IconButtonProps } from '@mui/material/IconButton';
2
2
  import Tooltip from '@mui/material/Tooltip';
3
- import { type MRT_TableInstance } from '../types';
3
+ import { type MRT_RowData, type MRT_TableInstance } from '../types';
4
4
 
5
- interface Props<TData extends Record<string, any>> extends IconButtonProps {
5
+ interface Props<TData extends MRT_RowData> extends IconButtonProps {
6
6
  table: MRT_TableInstance<TData>;
7
7
  }
8
8
 
9
- export const MRT_ToggleGlobalFilterButton = <
10
- TData extends Record<string, any>,
11
- >({
9
+ export const MRT_ToggleGlobalFilterButton = <TData extends MRT_RowData>({
12
10
  table,
13
11
  ...rest
14
12
  }: Props<TData>) => {
@@ -4,7 +4,12 @@ import Tooltip from '@mui/material/Tooltip';
4
4
  import { MRT_EditActionButtons } from './MRT_EditActionButtons';
5
5
  import { parseFromValuesOrFunc } from '../column.utils';
6
6
  import { MRT_RowActionMenu } from '../menus/MRT_RowActionMenu';
7
- import { type MRT_Cell, type MRT_Row, type MRT_TableInstance } from '../types';
7
+ import {
8
+ type MRT_Cell,
9
+ type MRT_Row,
10
+ type MRT_RowData,
11
+ type MRT_TableInstance,
12
+ } from '../types';
8
13
 
9
14
  const commonIconButtonStyles = {
10
15
  '&:hover': {
@@ -17,15 +22,13 @@ const commonIconButtonStyles = {
17
22
  width: '2rem',
18
23
  };
19
24
 
20
- interface Props<TData extends Record<string, any>> {
25
+ interface Props<TData extends MRT_RowData> {
21
26
  cell: MRT_Cell<TData>;
22
27
  row: MRT_Row<TData>;
23
28
  table: MRT_TableInstance<TData>;
24
29
  }
25
30
 
26
- export const MRT_ToggleRowActionMenuButton = <
27
- TData extends Record<string, any>,
28
- >({
31
+ export const MRT_ToggleRowActionMenuButton = <TData extends MRT_RowData>({
29
32
  cell,
30
33
  row,
31
34
  table,