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

Sign up to get free protection for your applications and to get access to all the features.
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,