material-react-table 2.9.2 → 2.11.0

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 (199) hide show
  1. package/README.md +3 -2
  2. package/dist/index.d.ts +222 -152
  3. package/dist/index.esm.js +906 -769
  4. package/dist/index.esm.js.map +1 -1
  5. package/dist/index.js +910 -768
  6. package/dist/index.js.map +1 -1
  7. package/locales/ar/index.esm.js +2 -0
  8. package/locales/ar/index.js +2 -0
  9. package/locales/az/index.esm.js +2 -0
  10. package/locales/az/index.js +2 -0
  11. package/locales/bg/index.esm.js +2 -0
  12. package/locales/bg/index.js +2 -0
  13. package/locales/cs/index.esm.js +2 -0
  14. package/locales/cs/index.js +2 -0
  15. package/locales/da/index.esm.js +2 -0
  16. package/locales/da/index.js +2 -0
  17. package/locales/de/index.esm.js +2 -0
  18. package/locales/de/index.js +2 -0
  19. package/locales/en/index.esm.js +2 -0
  20. package/locales/en/index.js +2 -0
  21. package/locales/es/index.esm.js +2 -0
  22. package/locales/es/index.js +2 -0
  23. package/locales/et/index.esm.js +2 -0
  24. package/locales/et/index.js +2 -0
  25. package/locales/fa/index.esm.js +2 -0
  26. package/locales/fa/index.js +2 -0
  27. package/locales/fi/index.esm.js +2 -0
  28. package/locales/fi/index.js +2 -0
  29. package/locales/fr/index.esm.js +2 -0
  30. package/locales/fr/index.js +2 -0
  31. package/locales/he/index.esm.js +2 -0
  32. package/locales/he/index.js +2 -0
  33. package/locales/hu/index.esm.js +2 -0
  34. package/locales/hu/index.js +2 -0
  35. package/locales/hy/index.esm.js +2 -0
  36. package/locales/hy/index.js +2 -0
  37. package/locales/id/index.esm.js +2 -0
  38. package/locales/id/index.js +2 -0
  39. package/locales/it/index.esm.js +2 -0
  40. package/locales/it/index.js +2 -0
  41. package/locales/ja/index.esm.js +2 -0
  42. package/locales/ja/index.js +2 -0
  43. package/locales/ko/index.esm.js +2 -0
  44. package/locales/ko/index.js +2 -0
  45. package/locales/nl/index.esm.js +2 -0
  46. package/locales/nl/index.js +2 -0
  47. package/locales/no/index.esm.js +2 -0
  48. package/locales/no/index.js +2 -0
  49. package/locales/np/index.esm.js +2 -0
  50. package/locales/np/index.js +2 -0
  51. package/locales/pl/index.esm.js +2 -0
  52. package/locales/pl/index.js +2 -0
  53. package/locales/pt/index.esm.js +2 -0
  54. package/locales/pt/index.js +2 -0
  55. package/locales/pt-BR/index.esm.js +2 -0
  56. package/locales/pt-BR/index.js +2 -0
  57. package/locales/ro/index.esm.js +2 -0
  58. package/locales/ro/index.js +2 -0
  59. package/locales/ru/index.esm.js +2 -0
  60. package/locales/ru/index.js +2 -0
  61. package/locales/sk/index.esm.js +2 -0
  62. package/locales/sk/index.js +2 -0
  63. package/locales/sr-Cyrl-RS/index.esm.js +2 -0
  64. package/locales/sr-Cyrl-RS/index.js +2 -0
  65. package/locales/sr-Latn-RS/index.esm.js +2 -0
  66. package/locales/sr-Latn-RS/index.js +2 -0
  67. package/locales/sv/index.esm.js +2 -0
  68. package/locales/sv/index.js +2 -0
  69. package/locales/tr/index.esm.js +2 -0
  70. package/locales/tr/index.js +2 -0
  71. package/locales/uk/index.esm.js +2 -0
  72. package/locales/uk/index.js +2 -0
  73. package/locales/vi/index.esm.js +2 -0
  74. package/locales/vi/index.js +2 -0
  75. package/locales/zh-Hans/index.esm.js +2 -0
  76. package/locales/zh-Hans/index.js +2 -0
  77. package/locales/zh-Hant/index.esm.js +2 -0
  78. package/locales/zh-Hant/index.js +2 -0
  79. package/package.json +20 -20
  80. package/src/components/MaterialReactTable.tsx +3 -3
  81. package/src/components/body/MRT_TableBody.tsx +3 -2
  82. package/src/components/body/MRT_TableBodyCell.tsx +45 -34
  83. package/src/components/body/MRT_TableBodyCellValue.tsx +5 -2
  84. package/src/components/body/MRT_TableBodyRow.tsx +13 -12
  85. package/src/components/body/MRT_TableBodyRowGrabHandle.tsx +4 -3
  86. package/src/components/body/MRT_TableBodyRowPinButton.tsx +3 -2
  87. package/src/components/body/MRT_TableDetailPanel.tsx +3 -2
  88. package/src/components/buttons/MRT_ColumnPinningButtons.tsx +3 -2
  89. package/src/components/buttons/MRT_CopyButton.tsx +4 -2
  90. package/src/components/buttons/MRT_EditActionButtons.tsx +3 -2
  91. package/src/components/buttons/MRT_ExpandAllButton.tsx +3 -2
  92. package/src/components/buttons/MRT_ExpandButton.tsx +3 -2
  93. package/src/components/buttons/MRT_GrabHandleButton.tsx +9 -15
  94. package/src/components/buttons/MRT_RowPinButton.tsx +3 -2
  95. package/src/components/buttons/MRT_ShowHideColumnsButton.tsx +3 -2
  96. package/src/components/buttons/MRT_ToggleDensePaddingButton.tsx +3 -2
  97. package/src/components/buttons/MRT_ToggleFiltersButton.tsx +3 -2
  98. package/src/components/buttons/MRT_ToggleFullScreenButton.tsx +3 -2
  99. package/src/components/buttons/MRT_ToggleGlobalFilterButton.tsx +3 -2
  100. package/src/components/buttons/MRT_ToggleRowActionMenuButton.tsx +3 -2
  101. package/src/components/footer/MRT_TableFooter.tsx +3 -2
  102. package/src/components/footer/MRT_TableFooterCell.tsx +3 -2
  103. package/src/components/footer/MRT_TableFooterRow.tsx +5 -3
  104. package/src/components/head/MRT_TableHead.tsx +3 -2
  105. package/src/components/head/MRT_TableHeadCell.tsx +9 -5
  106. package/src/components/head/MRT_TableHeadCellColumnActionsButton.tsx +4 -2
  107. package/src/components/head/MRT_TableHeadCellFilterContainer.tsx +4 -2
  108. package/src/components/head/MRT_TableHeadCellFilterLabel.tsx +4 -2
  109. package/src/components/head/MRT_TableHeadCellGrabHandle.tsx +4 -3
  110. package/src/components/head/MRT_TableHeadCellResizeHandle.tsx +3 -2
  111. package/src/components/head/MRT_TableHeadCellSortLabel.tsx +3 -2
  112. package/src/components/head/MRT_TableHeadRow.tsx +4 -2
  113. package/src/components/inputs/MRT_EditCellTextField.tsx +3 -2
  114. package/src/components/inputs/MRT_FilterCheckbox.tsx +3 -2
  115. package/src/components/inputs/MRT_FilterRangeFields.tsx +3 -2
  116. package/src/components/inputs/MRT_FilterRangeSlider.tsx +3 -2
  117. package/src/components/inputs/MRT_FilterTextField.tsx +15 -6
  118. package/src/components/inputs/MRT_GlobalFilterTextField.tsx +3 -2
  119. package/src/components/inputs/MRT_SelectCheckbox.tsx +26 -33
  120. package/src/components/menus/MRT_ActionMenuItem.tsx +61 -0
  121. package/src/components/menus/MRT_CellActionMenu.tsx +109 -0
  122. package/src/components/menus/MRT_ColumnActionMenu.tsx +92 -172
  123. package/src/components/menus/MRT_FilterOptionMenu.tsx +9 -16
  124. package/src/components/menus/MRT_RowActionMenu.tsx +10 -17
  125. package/src/components/menus/MRT_ShowHideColumnsMenu.tsx +11 -3
  126. package/src/components/menus/MRT_ShowHideColumnsMenuItems.tsx +7 -5
  127. package/src/components/modals/MRT_EditRowModal.tsx +3 -2
  128. package/src/components/table/MRT_Table.tsx +2 -2
  129. package/src/components/table/MRT_TableContainer.tsx +7 -2
  130. package/src/components/table/MRT_TableLoadingOverlay.tsx +11 -8
  131. package/src/components/table/MRT_TablePaper.tsx +3 -2
  132. package/src/components/toolbar/MRT_BottomToolbar.tsx +3 -2
  133. package/src/components/toolbar/MRT_LinearProgressBar.tsx +3 -2
  134. package/src/components/toolbar/MRT_TablePagination.tsx +2 -2
  135. package/src/components/toolbar/MRT_ToolbarAlertBanner.tsx +30 -13
  136. package/src/components/toolbar/MRT_ToolbarDropZone.tsx +3 -2
  137. package/src/components/toolbar/MRT_ToolbarInternalButtons.tsx +3 -2
  138. package/src/components/toolbar/MRT_TopToolbar.tsx +2 -2
  139. package/src/hooks/display-columns/getMRT_RowActionsColumnDef.tsx +1 -8
  140. package/src/hooks/display-columns/getMRT_RowDragColumnDef.tsx +1 -8
  141. package/src/hooks/display-columns/getMRT_RowExpandColumnDef.tsx +1 -8
  142. package/src/hooks/display-columns/getMRT_RowNumbersColumnDef.tsx +1 -8
  143. package/src/hooks/display-columns/getMRT_RowPinningColumnDef.tsx +1 -8
  144. package/src/hooks/display-columns/getMRT_RowSelectColumnDef.tsx +1 -8
  145. package/src/hooks/display-columns/getMRT_RowSpacerColumnDef.tsx +1 -8
  146. package/src/hooks/useMRT_Effects.ts +14 -4
  147. package/src/hooks/useMRT_Rows.ts +11 -79
  148. package/src/hooks/useMRT_TableInstance.ts +114 -59
  149. package/src/hooks/useMRT_TableOptions.ts +2 -0
  150. package/src/icons.ts +2 -0
  151. package/src/index.ts +2 -0
  152. package/src/locales/ar.ts +2 -0
  153. package/src/locales/az.ts +2 -0
  154. package/src/locales/bg.ts +2 -0
  155. package/src/locales/cs.ts +2 -0
  156. package/src/locales/da.ts +2 -0
  157. package/src/locales/de.ts +2 -0
  158. package/src/locales/en.ts +2 -0
  159. package/src/locales/es.ts +2 -0
  160. package/src/locales/et.ts +2 -0
  161. package/src/locales/fa.ts +2 -0
  162. package/src/locales/fi.ts +2 -0
  163. package/src/locales/fr.ts +2 -0
  164. package/src/locales/he.ts +2 -0
  165. package/src/locales/hu.ts +2 -0
  166. package/src/locales/hy.ts +2 -0
  167. package/src/locales/id.ts +2 -0
  168. package/src/locales/it.ts +2 -0
  169. package/src/locales/ja.ts +2 -0
  170. package/src/locales/ko.ts +2 -0
  171. package/src/locales/nl.ts +2 -0
  172. package/src/locales/no.ts +2 -0
  173. package/src/locales/np.ts +2 -0
  174. package/src/locales/pl.ts +2 -0
  175. package/src/locales/pt-BR.ts +2 -0
  176. package/src/locales/pt.ts +2 -0
  177. package/src/locales/ro.ts +2 -0
  178. package/src/locales/ru.ts +2 -0
  179. package/src/locales/sk.ts +2 -0
  180. package/src/locales/sr-Cyrl-RS.ts +2 -0
  181. package/src/locales/sr-Latn-RS.ts +2 -0
  182. package/src/locales/sv.ts +2 -0
  183. package/src/locales/tr.ts +2 -0
  184. package/src/locales/uk.ts +2 -0
  185. package/src/locales/vi.ts +2 -0
  186. package/src/locales/zh-Hans.ts +2 -0
  187. package/src/locales/zh-Hant.ts +2 -0
  188. package/src/types.ts +51 -13
  189. package/src/utils/cell.utils.ts +50 -0
  190. package/src/utils/column.utils.ts +4 -6
  191. package/src/utils/displayColumn.utils.ts +39 -21
  192. package/src/utils/row.utils.ts +179 -21
  193. package/locales/am/index.d.ts +0 -3
  194. package/locales/am/index.esm.d.ts +0 -3
  195. package/locales/am/index.esm.js +0 -93
  196. package/locales/am/index.js +0 -97
  197. package/locales/am/package.json +0 -6
  198. package/src/hooks/display-columns/getMRT_DisplayColumns.tsx +0 -26
  199. package/src/locales/am.ts +0 -94
@@ -25,14 +25,36 @@ import {
25
25
  getDefaultColumnFilterFn,
26
26
  prepareColumns,
27
27
  } from '../utils/column.utils';
28
- import { getDefaultColumnOrderIds } from '../utils/displayColumn.utils';
28
+ import {
29
+ getDefaultColumnOrderIds,
30
+ showRowActionsColumn,
31
+ showRowDragColumn,
32
+ showRowExpandColumn,
33
+ showRowNumbersColumn,
34
+ showRowPinningColumn,
35
+ showRowSelectionColumn,
36
+ showRowSpacerColumn,
37
+ } from '../utils/displayColumn.utils';
29
38
  import { createRow } from '../utils/tanstack.helpers';
30
- import { getMRT_DisplayColumns } from './display-columns/getMRT_DisplayColumns';
39
+ import { getMRT_RowActionsColumnDef } from './display-columns/getMRT_RowActionsColumnDef';
40
+ import { getMRT_RowDragColumnDef } from './display-columns/getMRT_RowDragColumnDef';
41
+ import { getMRT_RowExpandColumnDef } from './display-columns/getMRT_RowExpandColumnDef';
42
+ import { getMRT_RowNumbersColumnDef } from './display-columns/getMRT_RowNumbersColumnDef';
43
+ import { getMRT_RowPinningColumnDef } from './display-columns/getMRT_RowPinningColumnDef';
44
+ import { getMRT_RowSelectColumnDef } from './display-columns/getMRT_RowSelectColumnDef';
45
+ import { getMRT_RowSpacerColumnDef } from './display-columns/getMRT_RowSpacerColumnDef';
31
46
  import { useMRT_Effects } from './useMRT_Effects';
32
47
 
48
+ /**
49
+ * The MRT hook that wraps the TanStack useReactTable hook and adds additional functionality
50
+ * @param definedTableOptions - table options with proper defaults set
51
+ * @returns the MRT table instance
52
+ */
33
53
  export const useMRT_TableInstance = <TData extends MRT_RowData>(
34
- _tableOptions: MRT_DefinedTableOptions<TData>,
54
+ definedTableOptions: MRT_DefinedTableOptions<TData>,
35
55
  ): MRT_TableInstance<TData> => {
56
+ const lastSelectedRowId = useRef<null | string>(null);
57
+ const actionCellRef = useRef<HTMLTableCellElement>(null);
36
58
  const bottomToolbarRef = useRef<HTMLDivElement>(null);
37
59
  const editInputRefs = useRef<Record<string, HTMLInputElement>>({});
38
60
  const filterInputRefs = useRef<Record<string, HTMLInputElement>>({});
@@ -44,20 +66,27 @@ export const useMRT_TableInstance = <TData extends MRT_RowData>(
44
66
  const tableHeadRef = useRef<HTMLTableSectionElement>(null);
45
67
  const tableFooterRef = useRef<HTMLTableSectionElement>(null);
46
68
 
69
+ //transform initial state with proper column order
47
70
  const initialState: Partial<MRT_TableState<TData>> = useMemo(() => {
48
- const initState = _tableOptions.initialState ?? {};
71
+ const initState = definedTableOptions.initialState ?? {};
49
72
  initState.columnOrder =
50
73
  initState.columnOrder ??
51
74
  getDefaultColumnOrderIds({
52
- ..._tableOptions,
53
- state: { ..._tableOptions.initialState, ..._tableOptions.state },
75
+ ...definedTableOptions,
76
+ state: {
77
+ ...definedTableOptions.initialState,
78
+ ...definedTableOptions.state,
79
+ },
54
80
  } as MRT_StatefulTableOptions<TData>);
55
- initState.globalFilterFn = _tableOptions.globalFilterFn ?? 'fuzzy';
81
+ initState.globalFilterFn = definedTableOptions.globalFilterFn ?? 'fuzzy';
56
82
  return initState;
57
83
  }, []);
58
84
 
59
- _tableOptions.initialState = initialState;
85
+ definedTableOptions.initialState = initialState;
60
86
 
87
+ const [actionCell, setActionCell] = useState<MRT_Cell<TData> | null>(
88
+ initialState.actionCell ?? null,
89
+ );
61
90
  const [creatingRow, _setCreatingRow] = useState<MRT_Row<TData> | null>(
62
91
  initialState.creatingRow ?? null,
63
92
  );
@@ -66,7 +95,7 @@ export const useMRT_TableInstance = <TData extends MRT_RowData>(
66
95
  Object.assign(
67
96
  {},
68
97
  ...getAllLeafColumnDefs(
69
- _tableOptions.columns as MRT_ColumnDef<TData>[],
98
+ definedTableOptions.columns as MRT_ColumnDef<TData>[],
70
99
  ).map((col) => ({
71
100
  [getColumnId(col)]:
72
101
  col.filterFn instanceof Function
@@ -129,7 +158,8 @@ export const useMRT_TableInstance = <TData extends MRT_RowData>(
129
158
  initialState?.showToolbarDropZone ?? false,
130
159
  );
131
160
 
132
- _tableOptions.state = {
161
+ definedTableOptions.state = {
162
+ actionCell,
133
163
  columnFilterFns,
134
164
  columnOrder,
135
165
  columnSizingInfo,
@@ -149,48 +179,71 @@ export const useMRT_TableInstance = <TData extends MRT_RowData>(
149
179
  showColumnFilters,
150
180
  showGlobalFilter,
151
181
  showToolbarDropZone,
152
- ..._tableOptions.state,
182
+ ...definedTableOptions.state,
153
183
  };
154
184
 
155
- const tableOptions = _tableOptions as MRT_StatefulTableOptions<TData>;
185
+ //The table options now include all state needed to help determine column visibility and order logic
186
+ const statefulTableOptions =
187
+ definedTableOptions as MRT_StatefulTableOptions<TData>;
156
188
 
157
189
  //don't recompute columnDefs while resizing column or dragging column/row
158
190
  const columnDefsRef = useRef<MRT_ColumnDef<TData>[]>([]);
159
- tableOptions.columns =
160
- tableOptions.state.columnSizingInfo.isResizingColumn ||
161
- tableOptions.state.draggingColumn ||
162
- tableOptions.state.draggingRow
191
+ statefulTableOptions.columns =
192
+ statefulTableOptions.state.columnSizingInfo.isResizingColumn ||
193
+ statefulTableOptions.state.draggingColumn ||
194
+ statefulTableOptions.state.draggingRow
163
195
  ? columnDefsRef.current
164
196
  : prepareColumns({
165
197
  columnDefs: [
166
- ...getMRT_DisplayColumns(tableOptions),
167
- ...tableOptions.columns,
198
+ ...([
199
+ showRowPinningColumn(statefulTableOptions) &&
200
+ getMRT_RowPinningColumnDef(statefulTableOptions),
201
+ showRowDragColumn(statefulTableOptions) &&
202
+ getMRT_RowDragColumnDef(statefulTableOptions),
203
+ showRowActionsColumn(statefulTableOptions) &&
204
+ getMRT_RowActionsColumnDef(statefulTableOptions),
205
+ showRowExpandColumn(statefulTableOptions) &&
206
+ getMRT_RowExpandColumnDef(statefulTableOptions),
207
+ showRowSelectionColumn(statefulTableOptions) &&
208
+ getMRT_RowSelectColumnDef(statefulTableOptions),
209
+ showRowNumbersColumn(statefulTableOptions) &&
210
+ getMRT_RowNumbersColumnDef(statefulTableOptions),
211
+ ].filter(Boolean) as MRT_ColumnDef<TData>[]),
212
+ ...statefulTableOptions.columns,
213
+ ...([
214
+ showRowSpacerColumn(statefulTableOptions) &&
215
+ getMRT_RowSpacerColumnDef(statefulTableOptions),
216
+ ].filter(Boolean) as MRT_ColumnDef<TData>[]),
168
217
  ],
169
- tableOptions,
218
+ tableOptions: statefulTableOptions,
170
219
  });
171
- columnDefsRef.current = tableOptions.columns;
220
+ columnDefsRef.current = statefulTableOptions.columns;
172
221
 
173
- tableOptions.data = useMemo(
222
+ //if loading, generate blank rows to show skeleton loaders
223
+ statefulTableOptions.data = useMemo(
174
224
  () =>
175
- (tableOptions.state.isLoading || tableOptions.state.showSkeletons) &&
176
- !tableOptions.data.length
225
+ (statefulTableOptions.state.isLoading ||
226
+ statefulTableOptions.state.showSkeletons) &&
227
+ !statefulTableOptions.data.length
177
228
  ? [
178
- ...Array(Math.min(tableOptions.state.pagination.pageSize, 20)).fill(
179
- null,
180
- ),
229
+ ...Array(
230
+ Math.min(statefulTableOptions.state.pagination.pageSize, 20),
231
+ ).fill(null),
181
232
  ].map(() =>
182
233
  Object.assign(
183
234
  {},
184
- ...getAllLeafColumnDefs(tableOptions.columns).map((col) => ({
185
- [getColumnId(col)]: null,
186
- })),
235
+ ...getAllLeafColumnDefs(statefulTableOptions.columns).map(
236
+ (col) => ({
237
+ [getColumnId(col)]: null,
238
+ }),
239
+ ),
187
240
  ),
188
241
  )
189
- : tableOptions.data,
242
+ : statefulTableOptions.data,
190
243
  [
191
- tableOptions.data,
192
- tableOptions.state.isLoading,
193
- tableOptions.state.showSkeletons,
244
+ statefulTableOptions.data,
245
+ statefulTableOptions.state.isLoading,
246
+ statefulTableOptions.state.showSkeletons,
194
247
  ],
195
248
  );
196
249
 
@@ -200,61 +253,63 @@ export const useMRT_TableInstance = <TData extends MRT_RowData>(
200
253
  onColumnSizingInfoChange,
201
254
  onGroupingChange,
202
255
  onPaginationChange,
203
- ...tableOptions,
204
- globalFilterFn: tableOptions.filterFns?.[globalFilterFn ?? 'fuzzy'],
256
+ ...statefulTableOptions,
257
+ globalFilterFn: statefulTableOptions.filterFns?.[globalFilterFn ?? 'fuzzy'],
205
258
  }) as MRT_TableInstance<TData>;
206
259
 
207
- //@ts-ignore
208
260
  table.refs = {
209
- //@ts-ignore
261
+ actionCellRef,
210
262
  bottomToolbarRef,
211
263
  editInputRefs,
212
264
  filterInputRefs,
213
- //@ts-ignore
265
+ lastSelectedRowId,
214
266
  searchInputRef,
215
- //@ts-ignore
216
267
  tableContainerRef,
217
- //@ts-ignore
218
268
  tableFooterRef,
219
269
  tableHeadCellRefs,
220
- //@ts-ignore
221
270
  tableHeadRef,
222
- //@ts-ignore
223
271
  tablePaperRef,
224
- //@ts-ignore
225
272
  topToolbarRef,
226
273
  };
227
274
 
275
+ table.setActionCell =
276
+ statefulTableOptions.onActionCellChange ?? setActionCell;
228
277
  table.setCreatingRow = (row: MRT_Updater<MRT_Row<TData> | null | true>) => {
229
278
  let _row = row;
230
279
  if (row === true) {
231
280
  _row = createRow(table);
232
281
  }
233
- tableOptions?.onCreatingRowChange?.(_row as MRT_Row<TData> | null) ??
234
- _setCreatingRow(_row as MRT_Row<TData> | null);
282
+ statefulTableOptions?.onCreatingRowChange?.(
283
+ _row as MRT_Row<TData> | null,
284
+ ) ?? _setCreatingRow(_row as MRT_Row<TData> | null);
235
285
  };
236
286
  table.setColumnFilterFns =
237
- tableOptions.onColumnFilterFnsChange ?? setColumnFilterFns;
238
- table.setDensity = tableOptions.onDensityChange ?? setDensity;
287
+ statefulTableOptions.onColumnFilterFnsChange ?? setColumnFilterFns;
288
+ table.setDensity = statefulTableOptions.onDensityChange ?? setDensity;
239
289
  table.setDraggingColumn =
240
- tableOptions.onDraggingColumnChange ?? setDraggingColumn;
241
- table.setDraggingRow = tableOptions.onDraggingRowChange ?? setDraggingRow;
242
- table.setEditingCell = tableOptions.onEditingCellChange ?? setEditingCell;
243
- table.setEditingRow = tableOptions.onEditingRowChange ?? setEditingRow;
290
+ statefulTableOptions.onDraggingColumnChange ?? setDraggingColumn;
291
+ table.setDraggingRow =
292
+ statefulTableOptions.onDraggingRowChange ?? setDraggingRow;
293
+ table.setEditingCell =
294
+ statefulTableOptions.onEditingCellChange ?? setEditingCell;
295
+ table.setEditingRow =
296
+ statefulTableOptions.onEditingRowChange ?? setEditingRow;
244
297
  table.setGlobalFilterFn =
245
- tableOptions.onGlobalFilterFnChange ?? setGlobalFilterFn;
298
+ statefulTableOptions.onGlobalFilterFnChange ?? setGlobalFilterFn;
246
299
  table.setHoveredColumn =
247
- tableOptions.onHoveredColumnChange ?? setHoveredColumn;
248
- table.setHoveredRow = tableOptions.onHoveredRowChange ?? setHoveredRow;
249
- table.setIsFullScreen = tableOptions.onIsFullScreenChange ?? setIsFullScreen;
300
+ statefulTableOptions.onHoveredColumnChange ?? setHoveredColumn;
301
+ table.setHoveredRow =
302
+ statefulTableOptions.onHoveredRowChange ?? setHoveredRow;
303
+ table.setIsFullScreen =
304
+ statefulTableOptions.onIsFullScreenChange ?? setIsFullScreen;
250
305
  table.setShowAlertBanner =
251
- tableOptions.onShowAlertBannerChange ?? setShowAlertBanner;
306
+ statefulTableOptions.onShowAlertBannerChange ?? setShowAlertBanner;
252
307
  table.setShowColumnFilters =
253
- tableOptions.onShowColumnFiltersChange ?? setShowColumnFilters;
308
+ statefulTableOptions.onShowColumnFiltersChange ?? setShowColumnFilters;
254
309
  table.setShowGlobalFilter =
255
- tableOptions.onShowGlobalFilterChange ?? setShowGlobalFilter;
310
+ statefulTableOptions.onShowGlobalFilterChange ?? setShowGlobalFilter;
256
311
  table.setShowToolbarDropZone =
257
- tableOptions.onShowToolbarDropZoneChange ?? setShowToolbarDropZone;
312
+ statefulTableOptions.onShowToolbarDropZoneChange ?? setShowToolbarDropZone;
258
313
 
259
314
  useMRT_Effects(table);
260
315
 
@@ -56,6 +56,7 @@ export const useMRT_TableOptions: <TData extends MRT_RowData>(
56
56
  defaultColumn,
57
57
  defaultDisplayColumn,
58
58
  editDisplayMode = 'modal',
59
+ enableBatchRowSelection = true,
59
60
  enableBottomToolbar = true,
60
61
  enableColumnActions = true,
61
62
  enableColumnFilters = true,
@@ -180,6 +181,7 @@ export const useMRT_TableOptions: <TData extends MRT_RowData>(
180
181
  defaultColumn,
181
182
  defaultDisplayColumn,
182
183
  editDisplayMode,
184
+ enableBatchRowSelection,
183
185
  enableBottomToolbar,
184
186
  enableColumnActions,
185
187
  enableColumnFilters,
package/src/icons.ts CHANGED
@@ -5,6 +5,7 @@ import ChevronLeftIcon from '@mui/icons-material/ChevronLeft';
5
5
  import ChevronRightIcon from '@mui/icons-material/ChevronRight';
6
6
  import ClearAllIcon from '@mui/icons-material/ClearAll';
7
7
  import CloseIcon from '@mui/icons-material/Close';
8
+ import ContentCopy from '@mui/icons-material/ContentCopy';
8
9
  import DensityLargeIcon from '@mui/icons-material/DensityLarge';
9
10
  import DensityMediumIcon from '@mui/icons-material/DensityMedium';
10
11
  import DensitySmallIcon from '@mui/icons-material/DensitySmall';
@@ -40,6 +41,7 @@ export const MRT_Default_Icons = {
40
41
  ChevronRightIcon,
41
42
  ClearAllIcon,
42
43
  CloseIcon,
44
+ ContentCopy,
43
45
  DensityLargeIcon,
44
46
  DensityMediumIcon,
45
47
  DensitySmallIcon,
package/src/index.ts CHANGED
@@ -2,6 +2,7 @@ export * from './types';
2
2
 
3
3
  //helpers
4
4
  export * from './utils/tanstack.helpers';
5
+ export * from './utils/cell.utils';
5
6
  export * from './utils/column.utils';
6
7
  export * from './utils/displayColumn.utils';
7
8
  export * from './utils/row.utils';
@@ -67,6 +68,7 @@ export * from './components/inputs/MRT_FilterTextField';
67
68
  export * from './components/inputs/MRT_GlobalFilterTextField';
68
69
  export * from './components/inputs/MRT_SelectCheckbox';
69
70
  //menu components
71
+ export * from './components/menus/MRT_ActionMenuItem';
70
72
  export * from './components/menus/MRT_ColumnActionMenu';
71
73
  export * from './components/menus/MRT_FilterOptionMenu';
72
74
  export * from './components/menus/MRT_RowActionMenu';
package/src/locales/ar.ts CHANGED
@@ -8,8 +8,10 @@ export const MRT_Localization_AR: MRT_Localization = {
8
8
  changeSearchMode: 'تغيير وضع البحث',
9
9
  clearFilter: 'إعادة تعين المرشح',
10
10
  clearSearch: 'إعادة تعيين البحث',
11
+ clearSelection: 'إعادة تعيين التحديد',
11
12
  clearSort: 'إعادة تعيين الفرز',
12
13
  clickToCopy: 'انقر للنسخ',
14
+ copy: 'نسخ',
13
15
  collapse: 'إخفاء',
14
16
  collapseAll: 'إخفاء الكل',
15
17
  columnActions: 'إجراءات العمود',
package/src/locales/az.ts CHANGED
@@ -8,8 +8,10 @@ export const MRT_Localization_AZ: MRT_Localization = {
8
8
  changeSearchMode: 'Axtarış Rejimini Dəyiş',
9
9
  clearFilter: 'Filteri təmizlə',
10
10
  clearSearch: 'Axtarışı təmizlə',
11
+ clearSelection: 'Seçimi təmizlə',
11
12
  clearSort: 'Sıralamanı sıfırla',
12
13
  clickToCopy: 'Köçür',
14
+ copy: 'Köçür',
13
15
  columnActions: 'Sütun Əməliyyatları',
14
16
  copiedToClipboard: 'Panelə Köçürüldü',
15
17
  collapse: 'Daralt',
package/src/locales/bg.ts CHANGED
@@ -8,8 +8,10 @@ export const MRT_Localization_BG: MRT_Localization = {
8
8
  changeSearchMode: 'Промяна на режима на търсене',
9
9
  clearFilter: 'Изчисти филтъра',
10
10
  clearSearch: 'Изчисти търсенето',
11
+ clearSelection: 'Изчисти избора',
11
12
  clearSort: 'Изчисти сортирането',
12
13
  clickToCopy: 'Кликни, за да копираш',
14
+ copy: 'Копирай',
13
15
  collapse: 'Свий',
14
16
  collapseAll: 'Свий всички',
15
17
  columnActions: 'Действия за колони',
package/src/locales/cs.ts CHANGED
@@ -8,8 +8,10 @@ export const MRT_Localization_CS: MRT_Localization = {
8
8
  changeSearchMode: 'Změnit režim hledání',
9
9
  clearFilter: 'Vyčistit filtr',
10
10
  clearSearch: 'Vyčistit hledání',
11
+ clearSelection: 'Vyčistit výběr',
11
12
  clearSort: 'vyčistit řazení',
12
13
  clickToCopy: 'Kliknutím zkopírovat',
14
+ copy: 'Kopírovat',
13
15
  collapse: 'Sbalit',
14
16
  collapseAll: 'Sbalit vše',
15
17
  columnActions: 'Akce sloupce',
package/src/locales/da.ts CHANGED
@@ -8,8 +8,10 @@ export const MRT_Localization_DA: MRT_Localization = {
8
8
  changeSearchMode: 'Skift søgetilstand',
9
9
  clearFilter: 'Ryd filter',
10
10
  clearSearch: 'Ryd søgning',
11
+ clearSelection: 'Ryd valg',
11
12
  clearSort: 'Ryd sortering',
12
13
  clickToCopy: 'Tryk for at kopiere',
14
+ copy: 'Kopier',
13
15
  collapse: 'Luk',
14
16
  collapseAll: 'Luk alle',
15
17
  columnActions: 'Kolonnehandlinger',
package/src/locales/de.ts CHANGED
@@ -8,8 +8,10 @@ export const MRT_Localization_DE: MRT_Localization = {
8
8
  changeSearchMode: 'Suchmodus ändern',
9
9
  clearFilter: 'Filter zurücksetzen',
10
10
  clearSearch: 'Suche zurücksetzen',
11
+ clearSelection: 'Auswahl zurücksetzen',
11
12
  clearSort: 'Sortierung zurücksetzen',
12
13
  clickToCopy: 'Kopieren',
14
+ copy: 'Kopieren',
13
15
  columnActions: 'Spalten-Aktionen',
14
16
  copiedToClipboard: 'In die Zwischenablage kopiert',
15
17
  collapse: 'Einklappen',
package/src/locales/en.ts CHANGED
@@ -8,8 +8,10 @@ export const MRT_Localization_EN: MRT_Localization = {
8
8
  changeSearchMode: 'Change search mode',
9
9
  clearFilter: 'Clear filter',
10
10
  clearSearch: 'Clear search',
11
+ clearSelection: 'Clear selection',
11
12
  clearSort: 'Clear sort',
12
13
  clickToCopy: 'Click to copy',
14
+ copy: 'Copy',
13
15
  collapse: 'Collapse',
14
16
  collapseAll: 'Collapse all',
15
17
  columnActions: 'Column Actions',
package/src/locales/es.ts CHANGED
@@ -8,8 +8,10 @@ export const MRT_Localization_ES: MRT_Localization = {
8
8
  changeSearchMode: 'Cambiar modo de búsqueda',
9
9
  clearFilter: 'Borrar filtro',
10
10
  clearSearch: 'Borrar búsqueda',
11
+ clearSelection: 'Borrar selección',
11
12
  clearSort: 'Borrar ordenamiento',
12
13
  clickToCopy: 'Haga click para copiar',
14
+ copy: 'Copiar',
13
15
  collapse: 'Colapsar',
14
16
  collapseAll: 'Colapsar todo',
15
17
  columnActions: 'Columna de acciones',
package/src/locales/et.ts CHANGED
@@ -8,8 +8,10 @@ export const MRT_Localization_ET: MRT_Localization = {
8
8
  changeSearchMode: 'Muuda otsingu režiimi',
9
9
  clearFilter: 'Tühista filter',
10
10
  clearSearch: 'Tühjenda otsing',
11
+ clearSelection: 'Tühjenda valik',
11
12
  clearSort: 'Tühjenda sorteerimine',
12
13
  clickToCopy: 'Klõpsa kopeerimiseks',
14
+ copy: 'Kopeeri',
13
15
  collapse: 'Ahenda',
14
16
  collapseAll: 'Ahenda kõik',
15
17
  columnActions: 'Veeru toimingud',
package/src/locales/fa.ts CHANGED
@@ -8,8 +8,10 @@ export const MRT_Localization_FA: MRT_Localization = {
8
8
  changeSearchMode: 'تغییر حالت جستجو',
9
9
  clearFilter: 'پاک کردن فیلتر',
10
10
  clearSearch: 'پاک کردن جستجو',
11
+ clearSelection: 'پاک کردن انتخاب',
11
12
  clearSort: 'پاک کردن مرتب سازی',
12
13
  clickToCopy: 'کپی کردن',
14
+ copy: 'کپی',
13
15
  collapse: 'بستن',
14
16
  collapseAll: 'بستن همه',
15
17
  columnActions: 'اقدامات ستون',
package/src/locales/fi.ts CHANGED
@@ -8,8 +8,10 @@ export const MRT_Localization_FI: MRT_Localization = {
8
8
  changeSearchMode: 'Muuta hakutapaa',
9
9
  clearFilter: 'Tyhjennä suodatin',
10
10
  clearSearch: 'Tyhjennä haku',
11
+ clearSelection: 'Tyhjennä valinta',
11
12
  clearSort: 'Tyhjennä lajittelu',
12
13
  clickToCopy: 'Kopioi napsauttamalla',
14
+ copy: 'Kopioi',
13
15
  collapse: 'Supista',
14
16
  collapseAll: 'Supista kaikki',
15
17
  columnActions: 'Saraketoiminnot',
package/src/locales/fr.ts CHANGED
@@ -8,8 +8,10 @@ export const MRT_Localization_FR: MRT_Localization = {
8
8
  changeSearchMode: 'Changer le mode de recherche',
9
9
  clearFilter: 'Effacer le filtre',
10
10
  clearSearch: 'Effacer la recherche',
11
+ clearSelection: 'Effacer la sélection',
11
12
  clearSort: 'Effacer le tri',
12
13
  clickToCopy: 'Cliquer pour copier',
14
+ copy: 'Copier',
13
15
  collapse: 'Réduire',
14
16
  collapseAll: 'Réduire tout',
15
17
  columnActions: 'Actions de colonne',
package/src/locales/he.ts CHANGED
@@ -8,8 +8,10 @@ export const MRT_Localization_HE: MRT_Localization = {
8
8
  changeSearchMode: 'שינוי מצב חיפוש',
9
9
  clearFilter: 'נקה סינון',
10
10
  clearSearch: 'נקה חיפוש',
11
+ clearSelection: 'נקה בחירה',
11
12
  clearSort: 'נקה מיון',
12
13
  clickToCopy: 'לחץ להעתקה',
14
+ copy: 'העתק',
13
15
  collapse: 'צמצום',
14
16
  collapseAll: 'צמצום הכל',
15
17
  columnActions: 'פעולות עמודה',
package/src/locales/hu.ts CHANGED
@@ -8,8 +8,10 @@ export const MRT_Localization_HU: MRT_Localization = {
8
8
  changeSearchMode: 'Keresés módjának megváltoztatása',
9
9
  clearFilter: 'Szűrő törlése',
10
10
  clearSearch: 'Keresés törlése',
11
+ clearSelection: 'Kiválasztás törlése',
11
12
  clearSort: 'Rendezés törlése',
12
13
  clickToCopy: 'Kattintson a másoláshoz',
14
+ copy: 'Másolás',
13
15
  collapse: 'Összecsukás',
14
16
  collapseAll: 'Mindet összecsuk',
15
17
  columnActions: 'Oszlop műveletek',
package/src/locales/hy.ts CHANGED
@@ -8,8 +8,10 @@ export const MRT_Localization_HY: MRT_Localization = {
8
8
  changeSearchMode: 'Փոխել որոնման ռեժիմը',
9
9
  clearFilter: 'Մաքրել զտիչը',
10
10
  clearSearch: 'Մաքրել որոնումը',
11
+ clearSelection: 'Մաքրել ընտրությունը',
11
12
  clearSort: 'Մաքրել տեսակավորումը',
12
13
  clickToCopy: 'Սեղմել պատճենելու համար',
14
+ copy: 'Պատճենել',
13
15
  columnActions: 'Սյունակի գործողություն',
14
16
  copiedToClipboard: 'Պատճենվել է փոխանակման բուֆերում',
15
17
  collapse: 'Փոքրացնել',
package/src/locales/id.ts CHANGED
@@ -8,8 +8,10 @@ export const MRT_Localization_ID: MRT_Localization = {
8
8
  changeSearchMode: 'Ubah mode pencarian',
9
9
  clearFilter: 'Hapus filter',
10
10
  clearSearch: 'Hapus pencarian',
11
+ clearSelection: 'Hapus pilihan',
11
12
  clearSort: 'Hapus urutan',
12
13
  clickToCopy: 'Klik untuk menyalin',
14
+ copy: 'Salin',
13
15
  collapse: 'Ciutkan',
14
16
  collapseAll: 'Ciutkan semua',
15
17
  columnActions: 'Aksi Kolom',
package/src/locales/it.ts CHANGED
@@ -8,8 +8,10 @@ export const MRT_Localization_IT: MRT_Localization = {
8
8
  changeSearchMode: 'Cambia modalità ricerca',
9
9
  clearFilter: 'Cancella filtro',
10
10
  clearSearch: 'Cancella ricerca',
11
+ clearSelection: 'Cancella selezione',
11
12
  clearSort: 'Cancella ordinamento',
12
13
  clickToCopy: 'Click per copiare',
14
+ copy: 'Copia',
13
15
  collapse: 'Chiudi',
14
16
  collapseAll: 'Chiudi tutto',
15
17
  columnActions: 'Azioni colonna',
package/src/locales/ja.ts CHANGED
@@ -8,8 +8,10 @@ export const MRT_Localization_JA: MRT_Localization = {
8
8
  changeSearchMode: '検索モードを変更',
9
9
  clearFilter: 'リセット',
10
10
  clearSearch: 'リセット',
11
+ clearSelection: '選択を解除',
11
12
  clearSort: '並べ替えを解除',
12
13
  clickToCopy: 'クリックでコピー',
14
+ copy: 'コピー',
13
15
  collapse: '折りたたむ',
14
16
  collapseAll: 'すべて折りたたむ',
15
17
  columnActions: '操作',
package/src/locales/ko.ts CHANGED
@@ -8,8 +8,10 @@ export const MRT_Localization_KO: MRT_Localization = {
8
8
  changeSearchMode: '검색 모드 변경',
9
9
  clearFilter: '필터 초기화',
10
10
  clearSearch: '검색 초기화',
11
+ clearSelection: '선택 초기화',
11
12
  clearSort: '정렬 초기화',
12
13
  clickToCopy: '클릭하여 복사하기',
14
+ copy: '복사',
13
15
  collapse: '행 접기',
14
16
  collapseAll: '전체 접기',
15
17
  columnActions: '열 동작',
package/src/locales/nl.ts CHANGED
@@ -8,8 +8,10 @@ export const MRT_Localization_NL: MRT_Localization = {
8
8
  changeSearchMode: 'Zoekmodus wijzigen',
9
9
  clearFilter: 'Filter wissen',
10
10
  clearSearch: 'Zoekbalk wissen',
11
+ clearSelection: 'Selectie wissen',
11
12
  clearSort: 'Annuleer sortering',
12
13
  clickToCopy: 'Klik om te kopiëren',
14
+ copy: 'Kopiëren',
13
15
  collapse: 'Samenvouwen',
14
16
  collapseAll: 'Alles samenvouwen',
15
17
  columnActions: 'Kolom acties',
package/src/locales/no.ts CHANGED
@@ -8,8 +8,10 @@ export const MRT_Localization_NO: MRT_Localization = {
8
8
  changeSearchMode: 'Endre søkemodus',
9
9
  clearFilter: 'Tøm filter',
10
10
  clearSearch: 'Tøm søk',
11
+ clearSelection: 'Tøm valg',
11
12
  clearSort: 'Tøm sortering',
12
13
  clickToCopy: 'Klikk for å kopiere',
14
+ copy: 'Kopier',
13
15
  collapse: 'Kollaps',
14
16
  collapseAll: 'Kollapse alle',
15
17
  columnActions: 'Kolonnehandlinger',
package/src/locales/np.ts CHANGED
@@ -8,8 +8,10 @@ export const MRT_Localization_NP: MRT_Localization = {
8
8
  changeSearchMode: 'खोज प्रणाली परिवर्तन गर्नुहोस्',
9
9
  clearFilter: 'फिल्टर हटाउनुहोस्',
10
10
  clearSearch: 'खोजिएको शब्द मेट्नुहोस्',
11
+ clearSelection: 'चयन हटाउनुहोस्',
11
12
  clearSort: 'क्रम हटाउनुहोस्',
12
13
  clickToCopy: 'प्रतिलिपि बनाउन क्लिक गर्नुहोस्',
14
+ copy: 'प्रतिलिपि बनाउनुहोस्',
13
15
  collapse: 'संकुचित गर्नुहोस्',
14
16
  collapseAll: 'सबै संकुचित गर्नुहोस्',
15
17
  columnActions: 'यस स्तम्भका कार्यहरू',
package/src/locales/pl.ts CHANGED
@@ -8,8 +8,10 @@ export const MRT_Localization_PL: MRT_Localization = {
8
8
  changeSearchMode: 'Zmień tryb wyszukiwania',
9
9
  clearFilter: 'Wyczyść filtr',
10
10
  clearSearch: 'Wyczyść wyszukiwanie',
11
+ clearSelection: 'Wyczyść zaznaczenie',
11
12
  clearSort: 'Wyczyść sortowanie',
12
13
  clickToCopy: 'Kliknij, aby skopiować',
14
+ copy: 'Kopiuj',
13
15
  collapse: 'Zwiń',
14
16
  collapseAll: 'Zwiń wszystko',
15
17
  columnActions: 'Akcje dla kolumny',
@@ -8,8 +8,10 @@ export const MRT_Localization_PT_BR: MRT_Localization = {
8
8
  changeSearchMode: 'Alterar o modo de pesquisa',
9
9
  clearFilter: 'Limpar filtros',
10
10
  clearSearch: 'Limpar pesquisa',
11
+ clearSelection: 'Limpar seleção',
11
12
  clearSort: 'Limpar classificações',
12
13
  clickToCopy: 'Clique para copiar',
14
+ copy: 'Copiar',
13
15
  collapse: 'Recolher',
14
16
  collapseAll: 'Recolher tudo',
15
17
  columnActions: 'Ações das colunas',
package/src/locales/pt.ts CHANGED
@@ -8,8 +8,10 @@ export const MRT_Localization_PT: MRT_Localization = {
8
8
  changeSearchMode: 'Alterar o modo de pesquisa',
9
9
  clearFilter: 'Limpar filtros',
10
10
  clearSearch: 'Limpar pesquisa',
11
+ clearSelection: 'Limpar seleção',
11
12
  clearSort: 'Limpar classificações',
12
13
  clickToCopy: 'Clique para copiar',
14
+ copy: 'Copiar',
13
15
  collapse: 'Recolher',
14
16
  collapseAll: 'Recolher tudo',
15
17
  columnActions: 'Ações das colunas',
package/src/locales/ro.ts CHANGED
@@ -8,8 +8,10 @@ export const MRT_Localization_RO: MRT_Localization = {
8
8
  changeSearchMode: 'Schimbă mod căutare',
9
9
  clearFilter: 'Curăță filtrarea',
10
10
  clearSearch: 'Curăță căutarea',
11
+ clearSelection: 'Curăță selecția',
11
12
  clearSort: 'Curăță sortarea',
12
13
  clickToCopy: 'Apasă pentru a copia',
14
+ copy: 'Copiază',
13
15
  collapse: 'Restrânge',
14
16
  collapseAll: 'Restrânge tot',
15
17
  columnActions: 'Acțiuni Coloană',