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
@@ -15,23 +15,27 @@ import { type MRT_SortingFns } from './sortingFns';
15
15
  import {
16
16
  type MRT_Column,
17
17
  type MRT_ColumnDef,
18
+ type MRT_ColumnHelper,
18
19
  type MRT_ColumnOrderState,
19
20
  type MRT_DefinedColumnDef,
21
+ type MRT_DisplayColumnDef,
20
22
  type MRT_DisplayColumnIds,
21
23
  type MRT_FilterOption,
24
+ type MRT_GroupColumnDef,
22
25
  type MRT_GroupingState,
23
26
  type MRT_Header,
24
27
  type MRT_Row,
28
+ type MRT_RowData,
25
29
  type MRT_TableInstance,
26
30
  type MRT_TableOptions,
27
31
  } from './types';
28
32
 
29
- export const getColumnId = <TData extends Record<string, any>>(
33
+ export const getColumnId = <TData extends MRT_RowData>(
30
34
  columnDef: MRT_ColumnDef<TData>,
31
35
  ): string =>
32
36
  columnDef.id ?? columnDef.accessorKey?.toString?.() ?? columnDef.header;
33
37
 
34
- export const getAllLeafColumnDefs = <TData extends Record<string, any>>(
38
+ export const getAllLeafColumnDefs = <TData extends MRT_RowData>(
35
39
  columns: MRT_ColumnDef<TData>[],
36
40
  ): MRT_ColumnDef<TData>[] => {
37
41
  const allLeafColumnDefs: MRT_ColumnDef<TData>[] = [];
@@ -48,7 +52,7 @@ export const getAllLeafColumnDefs = <TData extends Record<string, any>>(
48
52
  return allLeafColumnDefs;
49
53
  };
50
54
 
51
- export const prepareColumns = <TData extends Record<string, any>>({
55
+ export const prepareColumns = <TData extends MRT_RowData>({
52
56
  aggregationFns,
53
57
  columnDefs,
54
58
  columnFilterFns,
@@ -122,7 +126,7 @@ export const prepareColumns = <TData extends Record<string, any>>({
122
126
  return columnDef;
123
127
  }) as MRT_DefinedColumnDef<TData>[];
124
128
 
125
- export const reorderColumn = <TData extends Record<string, any>>(
129
+ export const reorderColumn = <TData extends MRT_RowData>(
126
130
  draggedColumn: MRT_Column<TData>,
127
131
  targetColumn: MRT_Column<TData>,
128
132
  columnOrder: MRT_ColumnOrderState,
@@ -139,7 +143,7 @@ export const reorderColumn = <TData extends Record<string, any>>(
139
143
  return newColumnOrder;
140
144
  };
141
145
 
142
- export const showExpandColumn = <TData extends Record<string, any>>(
146
+ export const showExpandColumn = <TData extends MRT_RowData>(
143
147
  props: MRT_TableOptions<TData>,
144
148
  grouping?: MRT_GroupingState,
145
149
  ) =>
@@ -149,7 +153,7 @@ export const showExpandColumn = <TData extends Record<string, any>>(
149
153
  props.renderDetailPanel
150
154
  );
151
155
 
152
- export const getLeadingDisplayColumnIds = <TData extends Record<string, any>>(
156
+ export const getLeadingDisplayColumnIds = <TData extends MRT_RowData>(
153
157
  props: MRT_TableOptions<TData>,
154
158
  ) =>
155
159
  [
@@ -170,7 +174,7 @@ export const getLeadingDisplayColumnIds = <TData extends Record<string, any>>(
170
174
  props.layoutMode === 'grid-no-grow' && 'mrt-row-spacer',
171
175
  ].filter(Boolean) as MRT_DisplayColumnIds[];
172
176
 
173
- export const getTrailingDisplayColumnIds = <TData extends Record<string, any>>(
177
+ export const getTrailingDisplayColumnIds = <TData extends MRT_RowData>(
174
178
  props: MRT_TableOptions<TData>,
175
179
  ) =>
176
180
  [
@@ -184,7 +188,7 @@ export const getTrailingDisplayColumnIds = <TData extends Record<string, any>>(
184
188
  'mrt-row-expand',
185
189
  ].filter(Boolean) as MRT_DisplayColumnIds[];
186
190
 
187
- export const getDefaultColumnOrderIds = <TData extends Record<string, any>>(
191
+ export const getDefaultColumnOrderIds = <TData extends MRT_RowData>(
188
192
  props: MRT_TableOptions<TData>,
189
193
  ) => {
190
194
  const leadingDisplayCols: string[] = getLeadingDisplayColumnIds(props);
@@ -199,7 +203,7 @@ export const getDefaultColumnOrderIds = <TData extends Record<string, any>>(
199
203
  return [...leadingDisplayCols, ...allLeafColumnDefs, ...trailingDisplayCols];
200
204
  };
201
205
 
202
- export const getDefaultColumnFilterFn = <TData extends Record<string, any>>(
206
+ export const getDefaultColumnFilterFn = <TData extends MRT_RowData>(
203
207
  columnDef: MRT_ColumnDef<TData>,
204
208
  ): MRT_FilterOption => {
205
209
  if (columnDef.filterVariant === 'multi-select') return 'arrIncludesSome';
@@ -212,7 +216,7 @@ export const getDefaultColumnFilterFn = <TData extends Record<string, any>>(
212
216
  return 'fuzzy';
213
217
  };
214
218
 
215
- export const getIsFirstColumn = <TData extends Record<string, any>>(
219
+ export const getIsFirstColumn = <TData extends MRT_RowData>(
216
220
  column: MRT_Column<TData>,
217
221
  table: MRT_TableInstance<TData>,
218
222
  ) => {
@@ -222,7 +226,7 @@ export const getIsFirstColumn = <TData extends Record<string, any>>(
222
226
  : table.getVisibleLeafColumns()[0].id === column.id;
223
227
  };
224
228
 
225
- export const getIsLastColumn = <TData extends Record<string, any>>(
229
+ export const getIsLastColumn = <TData extends MRT_RowData>(
226
230
  column: MRT_Column<TData>,
227
231
  table: MRT_TableInstance<TData>,
228
232
  ) => {
@@ -233,7 +237,7 @@ export const getIsLastColumn = <TData extends Record<string, any>>(
233
237
  : columns[columns.length - 1].id === column.id;
234
238
  };
235
239
 
236
- export const getIsLastLeftPinnedColumn = <TData extends Record<string, any>>(
240
+ export const getIsLastLeftPinnedColumn = <TData extends MRT_RowData>(
237
241
  table: MRT_TableInstance<TData>,
238
242
  column: MRT_Column<TData>,
239
243
  ) => {
@@ -243,13 +247,13 @@ export const getIsLastLeftPinnedColumn = <TData extends Record<string, any>>(
243
247
  );
244
248
  };
245
249
 
246
- export const getIsFirstRightPinnedColumn = <TData extends Record<string, any>>(
250
+ export const getIsFirstRightPinnedColumn = <TData extends MRT_RowData>(
247
251
  column: MRT_Column<TData>,
248
252
  ) => {
249
253
  return column.getIsPinned() === 'right' && column.getPinnedIndex() === 0;
250
254
  };
251
255
 
252
- export const getTotalRight = <TData extends Record<string, any>>(
256
+ export const getTotalRight = <TData extends MRT_RowData>(
253
257
  table: MRT_TableInstance<TData>,
254
258
  column: MRT_Column<TData>,
255
259
  ) => {
@@ -259,7 +263,7 @@ export const getTotalRight = <TData extends Record<string, any>>(
259
263
  .reduce((acc, col) => acc + col.getSize(), 0);
260
264
  };
261
265
 
262
- export const getCanRankRows = <TData extends Record<string, any>>(
266
+ export const getCanRankRows = <TData extends MRT_RowData>(
263
267
  table: MRT_TableInstance<TData>,
264
268
  ) => {
265
269
  const { getState, options } = table;
@@ -284,7 +288,7 @@ export const getCanRankRows = <TData extends Record<string, any>>(
284
288
  );
285
289
  };
286
290
 
287
- export const getCommonCellStyles = <TData extends Record<string, any>>({
291
+ export const getCommonCellStyles = <TData extends MRT_RowData>({
288
292
  column,
289
293
  header,
290
294
  table,
@@ -409,7 +413,7 @@ export const flexRender = _flexRender as (
409
413
  props: any,
410
414
  ) => JSX.Element | ReactNode;
411
415
 
412
- export const createRow = <TData extends Record<string, any>>(
416
+ export const createRow = <TData extends MRT_RowData>(
413
417
  table: MRT_TableInstance<TData>,
414
418
  originalRow?: TData,
415
419
  ): MRT_Row<TData> =>
@@ -443,3 +447,23 @@ export const extraIndexRangeExtractor = (
443
447
  }
444
448
  return newIndexs;
445
449
  };
450
+
451
+ export function createMRTColumnHelper<
452
+ TData extends MRT_RowData,
453
+ >(): MRT_ColumnHelper<TData> {
454
+ return {
455
+ accessor: (accessor, column) => {
456
+ return typeof accessor === 'function'
457
+ ? ({
458
+ ...column,
459
+ accessorFn: accessor,
460
+ } as any)
461
+ : {
462
+ ...column,
463
+ accessorKey: accessor,
464
+ };
465
+ },
466
+ display: (column) => column as MRT_DisplayColumnDef<TData>,
467
+ group: (column) => column as MRT_GroupColumnDef<TData>,
468
+ };
469
+ }
package/src/filterFns.ts CHANGED
@@ -4,8 +4,9 @@ import {
4
4
  rankings,
5
5
  } from '@tanstack/match-sorter-utils';
6
6
  import { type Row, filterFns } from '@tanstack/react-table';
7
+ import { type MRT_RowData } from './types';
7
8
 
8
- const fuzzy = <TData extends Record<string, any>>(
9
+ const fuzzy = <TData extends MRT_RowData>(
9
10
  row: Row<TData>,
10
11
  columnId: string,
11
12
  filterValue: number | string,
@@ -20,7 +21,7 @@ const fuzzy = <TData extends Record<string, any>>(
20
21
 
21
22
  fuzzy.autoRemove = (val: any) => !val;
22
23
 
23
- const contains = <TData extends Record<string, any>>(
24
+ const contains = <TData extends MRT_RowData>(
24
25
  row: Row<TData>,
25
26
  id: string,
26
27
  filterValue: number | string,
@@ -34,7 +35,7 @@ const contains = <TData extends Record<string, any>>(
34
35
 
35
36
  contains.autoRemove = (val: any) => !val;
36
37
 
37
- const startsWith = <TData extends Record<string, any>>(
38
+ const startsWith = <TData extends MRT_RowData>(
38
39
  row: Row<TData>,
39
40
  id: string,
40
41
  filterValue: number | string,
@@ -48,7 +49,7 @@ const startsWith = <TData extends Record<string, any>>(
48
49
 
49
50
  startsWith.autoRemove = (val: any) => !val;
50
51
 
51
- const endsWith = <TData extends Record<string, any>>(
52
+ const endsWith = <TData extends MRT_RowData>(
52
53
  row: Row<TData>,
53
54
  id: string,
54
55
  filterValue: number | string,
@@ -62,7 +63,7 @@ const endsWith = <TData extends Record<string, any>>(
62
63
 
63
64
  endsWith.autoRemove = (val: any) => !val;
64
65
 
65
- const equals = <TData extends Record<string, any>>(
66
+ const equals = <TData extends MRT_RowData>(
66
67
  row: Row<TData>,
67
68
  id: string,
68
69
  filterValue: number | string,
@@ -72,7 +73,7 @@ const equals = <TData extends Record<string, any>>(
72
73
 
73
74
  equals.autoRemove = (val: any) => !val;
74
75
 
75
- const notEquals = <TData extends Record<string, any>>(
76
+ const notEquals = <TData extends MRT_RowData>(
76
77
  row: Row<TData>,
77
78
  id: string,
78
79
  filterValue: number | string,
@@ -82,7 +83,7 @@ const notEquals = <TData extends Record<string, any>>(
82
83
 
83
84
  notEquals.autoRemove = (val: any) => !val;
84
85
 
85
- const greaterThan = <TData extends Record<string, any>>(
86
+ const greaterThan = <TData extends MRT_RowData>(
86
87
  row: Row<TData>,
87
88
  id: string,
88
89
  filterValue: number | string,
@@ -94,7 +95,7 @@ const greaterThan = <TData extends Record<string, any>>(
94
95
 
95
96
  greaterThan.autoRemove = (val: any) => !val;
96
97
 
97
- const greaterThanOrEqualTo = <TData extends Record<string, any>>(
98
+ const greaterThanOrEqualTo = <TData extends MRT_RowData>(
98
99
  row: Row<TData>,
99
100
  id: string,
100
101
  filterValue: number | string,
@@ -102,7 +103,7 @@ const greaterThanOrEqualTo = <TData extends Record<string, any>>(
102
103
 
103
104
  greaterThanOrEqualTo.autoRemove = (val: any) => !val;
104
105
 
105
- const lessThan = <TData extends Record<string, any>>(
106
+ const lessThan = <TData extends MRT_RowData>(
106
107
  row: Row<TData>,
107
108
  id: string,
108
109
  filterValue: number | string,
@@ -114,7 +115,7 @@ const lessThan = <TData extends Record<string, any>>(
114
115
 
115
116
  lessThan.autoRemove = (val: any) => !val;
116
117
 
117
- const lessThanOrEqualTo = <TData extends Record<string, any>>(
118
+ const lessThanOrEqualTo = <TData extends MRT_RowData>(
118
119
  row: Row<TData>,
119
120
  id: string,
120
121
  filterValue: number | string,
@@ -122,7 +123,7 @@ const lessThanOrEqualTo = <TData extends Record<string, any>>(
122
123
 
123
124
  lessThanOrEqualTo.autoRemove = (val: any) => !val;
124
125
 
125
- const between = <TData extends Record<string, any>>(
126
+ const between = <TData extends MRT_RowData>(
126
127
  row: Row<TData>,
127
128
  id: string,
128
129
  filterValues: [number | string, number | string],
@@ -137,7 +138,7 @@ const between = <TData extends Record<string, any>>(
137
138
 
138
139
  between.autoRemove = (val: any) => !val;
139
140
 
140
- const betweenInclusive = <TData extends Record<string, any>>(
141
+ const betweenInclusive = <TData extends MRT_RowData>(
141
142
  row: Row<TData>,
142
143
  id: string,
143
144
  filterValues: [number | string, number | string],
@@ -152,7 +153,7 @@ const betweenInclusive = <TData extends Record<string, any>>(
152
153
 
153
154
  betweenInclusive.autoRemove = (val: any) => !val;
154
155
 
155
- const empty = <TData extends Record<string, any>>(
156
+ const empty = <TData extends MRT_RowData>(
156
157
  row: Row<TData>,
157
158
  id: string,
158
159
  _filterValue: number | string,
@@ -160,7 +161,7 @@ const empty = <TData extends Record<string, any>>(
160
161
 
161
162
  empty.autoRemove = (val: any) => !val;
162
163
 
163
- const notEmpty = <TData extends Record<string, any>>(
164
+ const notEmpty = <TData extends MRT_RowData>(
164
165
  row: Row<TData>,
165
166
  id: string,
166
167
  _filterValue: number | string,
@@ -2,16 +2,16 @@ import { type VirtualItem } from '@tanstack/react-virtual';
2
2
  import TableFooter from '@mui/material/TableFooter';
3
3
  import { MRT_TableFooterRow } from './MRT_TableFooterRow';
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
  table: MRT_TableInstance<TData>;
9
9
  virtualColumns?: VirtualItem[];
10
10
  virtualPaddingLeft?: number;
11
11
  virtualPaddingRight?: number;
12
12
  }
13
13
 
14
- export const MRT_TableFooter = <TData extends Record<string, any>>({
14
+ export const MRT_TableFooter = <TData extends MRT_RowData>({
15
15
  table,
16
16
  virtualColumns,
17
17
  virtualPaddingLeft,
@@ -1,13 +1,17 @@
1
1
  import TableCell from '@mui/material/TableCell';
2
2
  import { getCommonCellStyles, parseFromValuesOrFunc } from '../column.utils';
3
- import { type MRT_Header, type MRT_TableInstance } from '../types';
3
+ import {
4
+ type MRT_Header,
5
+ type MRT_RowData,
6
+ type MRT_TableInstance,
7
+ } from '../types';
4
8
 
5
- interface Props<TData extends Record<string, any>> {
9
+ interface Props<TData extends MRT_RowData> {
6
10
  footer: MRT_Header<TData>;
7
11
  table: MRT_TableInstance<TData>;
8
12
  }
9
13
 
10
- export const MRT_TableFooterCell = <TData extends Record<string, any>>({
14
+ export const MRT_TableFooterCell = <TData extends MRT_RowData>({
11
15
  footer,
12
16
  table,
13
17
  }: Props<TData>) => {
@@ -6,10 +6,11 @@ import { parseFromValuesOrFunc } from '../column.utils';
6
6
  import {
7
7
  type MRT_Header,
8
8
  type MRT_HeaderGroup,
9
+ type MRT_RowData,
9
10
  type MRT_TableInstance,
10
11
  } from '../types';
11
12
 
12
- interface Props<TData extends Record<string, any>> {
13
+ interface Props<TData extends MRT_RowData> {
13
14
  footerGroup: MRT_HeaderGroup<TData>;
14
15
  table: MRT_TableInstance<TData>;
15
16
  virtualColumns?: VirtualItem[];
@@ -17,7 +18,7 @@ interface Props<TData extends Record<string, any>> {
17
18
  virtualPaddingRight?: number;
18
19
  }
19
20
 
20
- export const MRT_TableFooterRow = <TData extends Record<string, any>>({
21
+ export const MRT_TableFooterRow = <TData extends MRT_RowData>({
21
22
  footerGroup,
22
23
  table,
23
24
  virtualColumns,
@@ -3,16 +3,16 @@ import TableHead 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
- import { type MRT_TableInstance } from '../types';
6
+ import { type MRT_RowData, type MRT_TableInstance } from '../types';
7
7
 
8
- interface Props<TData extends Record<string, any>> {
8
+ interface Props<TData extends MRT_RowData> {
9
9
  table: MRT_TableInstance<TData>;
10
10
  virtualColumns?: VirtualItem[];
11
11
  virtualPaddingLeft?: number;
12
12
  virtualPaddingRight?: number;
13
13
  }
14
14
 
15
- export const MRT_TableHead = <TData extends Record<string, any>>({
15
+ export const MRT_TableHead = <TData extends MRT_RowData>({
16
16
  table,
17
17
  virtualColumns,
18
18
  virtualPaddingLeft,
@@ -11,14 +11,18 @@ import { MRT_TableHeadCellResizeHandle } from './MRT_TableHeadCellResizeHandle';
11
11
  import { MRT_TableHeadCellSortLabel } from './MRT_TableHeadCellSortLabel';
12
12
  import { getCommonCellStyles } from '../column.utils';
13
13
  import { parseFromValuesOrFunc } from '../column.utils';
14
- import { type MRT_Header, type MRT_TableInstance } from '../types';
14
+ import {
15
+ type MRT_Header,
16
+ type MRT_RowData,
17
+ type MRT_TableInstance,
18
+ } from '../types';
15
19
 
16
- interface Props<TData extends Record<string, any>> {
20
+ interface Props<TData extends MRT_RowData> {
17
21
  header: MRT_Header<TData>;
18
22
  table: MRT_TableInstance<TData>;
19
23
  }
20
24
 
21
- export const MRT_TableHeadCell = <TData extends Record<string, any>>({
25
+ export const MRT_TableHeadCell = <TData extends MRT_RowData>({
22
26
  header,
23
27
  table,
24
28
  }: Props<TData>) => {
@@ -39,6 +43,7 @@ export const MRT_TableHeadCell = <TData extends Record<string, any>>({
39
43
  setHoveredColumn,
40
44
  } = table;
41
45
  const {
46
+ columnSizingInfo,
42
47
  density,
43
48
  draggingColumn,
44
49
  grouping,
@@ -78,23 +83,30 @@ export const MRT_TableHeadCell = <TData extends Record<string, any>>({
78
83
  return pl;
79
84
  }, [showColumnActions, showDragHandle]);
80
85
 
81
- const draggingBorder = useMemo(
82
- () =>
83
- draggingColumn?.id === column.id
86
+ const draggingBorders = useMemo(() => {
87
+ const borderStyle =
88
+ columnSizingInfo.isResizingColumn === column.id &&
89
+ !header.subHeaders.length
90
+ ? `2px solid ${theme.palette.primary.main} !important`
91
+ : draggingColumn?.id === column.id
84
92
  ? `1px dashed ${theme.palette.text.secondary}`
85
93
  : hoveredColumn?.id === column.id
86
94
  ? `2px dashed ${theme.palette.primary.main}`
87
- : undefined,
88
- [draggingColumn, hoveredColumn],
89
- );
95
+ : undefined;
96
+
97
+ if (columnSizingInfo.isResizingColumn === column.id) {
98
+ return { borderRight: borderStyle };
99
+ }
100
+ const draggingBorders = borderStyle
101
+ ? {
102
+ borderLeft: borderStyle,
103
+ borderRight: borderStyle,
104
+ borderTop: borderStyle,
105
+ }
106
+ : undefined;
90
107
 
91
- const draggingBorders = draggingBorder
92
- ? {
93
- borderLeft: draggingBorder,
94
- borderRight: draggingBorder,
95
- borderTop: draggingBorder,
96
- }
97
- : undefined;
108
+ return draggingBorders;
109
+ }, [draggingColumn, hoveredColumn, columnSizingInfo.isResizingColumn]);
98
110
 
99
111
  const handleDragEnter = (_e: DragEvent) => {
100
112
  if (enableGrouping && hoveredColumn?.id === 'drop-zone') {
@@ -3,15 +3,19 @@ import IconButton 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';
6
- import { type MRT_Header, type MRT_TableInstance } from '../types';
6
+ import {
7
+ type MRT_Header,
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
  header: MRT_Header<TData>;
10
14
  table: MRT_TableInstance<TData>;
11
15
  }
12
16
 
13
17
  export const MRT_TableHeadCellColumnActionsButton = <
14
- TData extends Record<string, any>,
18
+ TData extends MRT_RowData,
15
19
  >({
16
20
  header,
17
21
  table,
@@ -3,16 +3,18 @@ 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';
5
5
  import { MRT_FilterTextField } from '../inputs/MRT_FilterTextField';
6
- import { type MRT_Header, type MRT_TableInstance } from '../types';
6
+ import {
7
+ type MRT_Header,
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
  header: MRT_Header<TData>;
10
14
  table: MRT_TableInstance<TData>;
11
15
  }
12
16
 
13
- export const MRT_TableHeadCellFilterContainer = <
14
- TData extends Record<string, any>,
15
- >({
17
+ export const MRT_TableHeadCellFilterContainer = <TData extends MRT_RowData>({
16
18
  header,
17
19
  table,
18
20
  }: Props<TData>) => {
@@ -5,16 +5,18 @@ import IconButton 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 { type MRT_Header, type MRT_TableInstance } from '../types';
8
+ import {
9
+ type MRT_Header,
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
  header: MRT_Header<TData>;
12
16
  table: MRT_TableInstance<TData>;
13
17
  }
14
18
 
15
- export const MRT_TableHeadCellFilterLabel = <
16
- TData extends Record<string, any> = {},
17
- >({
19
+ export const MRT_TableHeadCellFilterLabel = <TData extends MRT_RowData = {}>({
18
20
  header,
19
21
  table,
20
22
  }: Props<TData>) => {
@@ -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, reorderColumn } from '../column.utils';
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
  tableHeadCellRef: RefObject<HTMLTableCellElement>;
10
14
  }
11
15
 
12
- export const MRT_TableHeadCellGrabHandle = <TData extends Record<string, any>>({
16
+ export const MRT_TableHeadCellGrabHandle = <TData extends MRT_RowData>({
13
17
  column,
14
18
  table,
15
19
  tableHeadCellRef,
@@ -1,15 +1,17 @@
1
1
  import Box from '@mui/material/Box';
2
2
  import Divider from '@mui/material/Divider';
3
- import { type MRT_Header, type MRT_TableInstance } from '../types';
3
+ import {
4
+ type MRT_Header,
5
+ type MRT_RowData,
6
+ type MRT_TableInstance,
7
+ } from '../types';
4
8
 
5
- interface Props<TData extends Record<string, any>> {
9
+ interface Props<TData extends MRT_RowData> {
6
10
  header: MRT_Header<TData>;
7
11
  table: MRT_TableInstance<TData>;
8
12
  }
9
13
 
10
- export const MRT_TableHeadCellResizeHandle = <
11
- TData extends Record<string, any>,
12
- >({
14
+ export const MRT_TableHeadCellResizeHandle = <TData extends MRT_RowData>({
13
15
  header,
14
16
  table,
15
17
  }: Props<TData>) => {
@@ -42,13 +44,18 @@ export const MRT_TableHeadCellResizeHandle = <
42
44
  sx={(theme) => ({
43
45
  '&:active > hr': {
44
46
  backgroundColor: theme.palette.info.main,
45
- opacity: 1,
47
+ opacity: header.subHeaders.length ? 1 : 0,
46
48
  },
47
49
  cursor: 'col-resize',
48
- mr: density === 'compact' ? '-0.75rem' : '-1rem',
50
+ mr:
51
+ density === 'compact'
52
+ ? '-12px'
53
+ : density === 'comfortable'
54
+ ? '-20px'
55
+ : '-28px',
49
56
  position: 'absolute',
50
57
  px: '4px',
51
- right: '4px',
58
+ right: '0',
52
59
  })}
53
60
  >
54
61
  <Divider
@@ -2,15 +2,19 @@ import Badge from '@mui/material/Badge';
2
2
  import { type TableCellProps } from '@mui/material/TableCell';
3
3
  import TableSortLabel from '@mui/material/TableSortLabel';
4
4
  import Tooltip from '@mui/material/Tooltip';
5
- import { type MRT_Header, type MRT_TableInstance } from '../types';
5
+ import {
6
+ type MRT_Header,
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
  header: MRT_Header<TData>;
9
13
  table: MRT_TableInstance<TData>;
10
14
  tableCellProps?: TableCellProps;
11
15
  }
12
16
 
13
- export const MRT_TableHeadCellSortLabel = <TData extends Record<string, any>>({
17
+ export const MRT_TableHeadCellSortLabel = <TData extends MRT_RowData>({
14
18
  header,
15
19
  table,
16
20
  }: Props<TData>) => {
@@ -6,10 +6,11 @@ import { parseFromValuesOrFunc } from '../column.utils';
6
6
  import {
7
7
  type MRT_Header,
8
8
  type MRT_HeaderGroup,
9
+ type MRT_RowData,
9
10
  type MRT_TableInstance,
10
11
  } from '../types';
11
12
 
12
- interface Props<TData extends Record<string, any>> {
13
+ interface Props<TData extends MRT_RowData> {
13
14
  headerGroup: MRT_HeaderGroup<TData>;
14
15
  table: MRT_TableInstance<TData>;
15
16
  virtualColumns?: VirtualItem[];
@@ -17,7 +18,7 @@ interface Props<TData extends Record<string, any>> {
17
18
  virtualPaddingRight?: number;
18
19
  }
19
20
 
20
- export const MRT_TableHeadRow = <TData extends Record<string, any>>({
21
+ export const MRT_TableHeadRow = <TData extends MRT_RowData>({
21
22
  headerGroup,
22
23
  table,
23
24
  virtualColumns,