material-react-table 0.23.3 → 0.24.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 (31) hide show
  1. package/README.md +13 -1
  2. package/dist/MaterialReactTable.d.ts +48 -16
  3. package/dist/body/MRT_TableBodyCell.d.ts +2 -1
  4. package/dist/body/MRT_TableBodyRowGrabHandle.d.ts +9 -0
  5. package/dist/buttons/MRT_GrabHandleButton.d.ts +4 -2
  6. package/dist/head/MRT_TableHeadCellGrabHandle.d.ts +9 -0
  7. package/dist/localization.d.ts +1 -0
  8. package/dist/material-react-table.cjs.development.js +293 -172
  9. package/dist/material-react-table.cjs.development.js.map +1 -1
  10. package/dist/material-react-table.cjs.production.min.js +1 -1
  11. package/dist/material-react-table.cjs.production.min.js.map +1 -1
  12. package/dist/material-react-table.esm.js +294 -173
  13. package/dist/material-react-table.esm.js.map +1 -1
  14. package/dist/toolbar/MRT_LinearProgressBar.d.ts +1 -1
  15. package/dist/utils.d.ts +1 -1
  16. package/package.json +3 -3
  17. package/src/MaterialReactTable.tsx +71 -14
  18. package/src/body/MRT_TableBodyCell.tsx +17 -3
  19. package/src/body/MRT_TableBodyRow.tsx +37 -3
  20. package/src/body/MRT_TableBodyRowGrabHandle.tsx +48 -0
  21. package/src/buttons/MRT_GrabHandleButton.tsx +12 -8
  22. package/src/head/MRT_TableHeadCell.tsx +14 -31
  23. package/src/head/MRT_TableHeadCellGrabHandle.tsx +77 -0
  24. package/src/localization.ts +2 -0
  25. package/src/menus/MRT_ColumnActionMenu.tsx +1 -1
  26. package/src/menus/MRT_ShowHideColumnsMenuItems.tsx +3 -3
  27. package/src/table/MRT_TableRoot.tsx +25 -6
  28. package/src/toolbar/MRT_LinearProgressBar.tsx +5 -5
  29. package/src/toolbar/MRT_ToolbarBottom.tsx +1 -1
  30. package/src/toolbar/MRT_ToolbarTop.tsx +1 -1
  31. package/src/utils.ts +9 -8
package/README.md CHANGED
@@ -12,6 +12,9 @@
12
12
  <a href="https://github.com/KevinVandy/material-react-table" target="_blank_">
13
13
  <img alt="" src="https://img.shields.io/github/stars/KevinVandy/material-react-table.svg?style=social&label=Star" />
14
14
  </a>
15
+ <a href="http://makeapullrequest.com" target="_blank_">
16
+ <img alt="" src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square" />
17
+ </a>
15
18
 
16
19
  ---
17
20
 
@@ -108,7 +111,7 @@ npm install material-react-table
108
111
  > Read the full usage docs [here](https://www.material-react-table.com/docs/usage/)
109
112
 
110
113
  ```jsx
111
- import React, { useMemo } from 'react';
114
+ import React, { useMemo, useState, useEffect } from 'react';
112
115
  import MaterialReactTable from 'material-react-table';
113
116
 
114
117
  export default function App() {
@@ -145,6 +148,13 @@ export default function App() {
145
148
  [],
146
149
  );
147
150
 
151
+ //optionally, you can manage any/all of the table state yourself
152
+ const [rowSelection, setRowSelection] = useState({});
153
+
154
+ useEffect(() => {
155
+ //do something when the row selection changes
156
+ }, [rowSelection]);
157
+
148
158
  return (
149
159
  <MaterialReactTable
150
160
  columns={columns}
@@ -152,6 +162,8 @@ export default function App() {
152
162
  enableColumnOrdering //enable some features
153
163
  enableRowSelection
154
164
  enableStickyHeader
165
+ onRowSelectionChange={setRowSelection} //hoist internal state to your own state (optional)
166
+ state={{ rowSelection }} //manage your own state, pass it back to the table (optional)
155
167
  />
156
168
  );
157
169
  }
@@ -1,7 +1,7 @@
1
- import { ChangeEvent, Dispatch, FC, FocusEvent, ReactNode, SetStateAction } from 'react';
2
- import { AlertProps, ButtonProps, CheckboxProps, IconButtonProps, LinearProgressProps, PaperProps, SkeletonProps, TableBodyProps, TableCellProps, TableContainerProps, TableFooterProps, TableHeadProps, TablePaginationProps, TableProps, TableRowProps, TextFieldProps, ToolbarProps } from '@mui/material';
3
- import { Cell, Column, ColumnDef, FilterFn, Header, HeaderGroup, OnChangeFn, Row, SortingFn, Table, TableOptions, TableState } from '@tanstack/react-table';
4
- import { Options as VirtualizerOptions } from 'react-virtual';
1
+ import { ChangeEvent, Dispatch, DragEvent, FC, FocusEvent, ReactNode, SetStateAction } from 'react';
2
+ import type { AlertProps, ButtonProps, CheckboxProps, IconButtonProps, LinearProgressProps, PaperProps, SkeletonProps, TableBodyProps, TableCellProps, TableContainerProps, TableFooterProps, TableHeadProps, TablePaginationProps, TableProps, TableRowProps, TextFieldProps, ToolbarProps } from '@mui/material';
3
+ import type { Cell, Column, ColumnDef, FilterFn, Header, HeaderGroup, OnChangeFn, Row, SortingFn, Table, TableOptions, TableState } from '@tanstack/react-table';
4
+ import type { Options as VirtualizerOptions } from 'react-virtual';
5
5
  import { MRT_Localization } from './localization';
6
6
  import { MRT_Icons } from './icons';
7
7
  import { MRT_FilterFns } from './filtersFns';
@@ -43,6 +43,7 @@ export declare type MRT_TableInstance<TData extends Record<string, any> = {}> =
43
43
  localization: MRT_Localization;
44
44
  };
45
45
  setCurrentDraggingColumn: Dispatch<SetStateAction<MRT_Column<TData> | null>>;
46
+ setCurrentDraggingRow: Dispatch<SetStateAction<MRT_Row<TData> | null>>;
46
47
  setCurrentEditingCell: Dispatch<SetStateAction<MRT_Cell | null>>;
47
48
  setCurrentEditingRow: Dispatch<SetStateAction<MRT_Row | null>>;
48
49
  setCurrentFilterFns: Dispatch<SetStateAction<{
@@ -50,6 +51,7 @@ export declare type MRT_TableInstance<TData extends Record<string, any> = {}> =
50
51
  }>>;
51
52
  setCurrentGlobalFilterFn: Dispatch<SetStateAction<MRT_FilterOption>>;
52
53
  setCurrentHoveredColumn: Dispatch<SetStateAction<MRT_Column<TData> | null>>;
54
+ setCurrentHoveredRow: Dispatch<SetStateAction<MRT_Row | null>>;
53
55
  setDensity: Dispatch<SetStateAction<'comfortable' | 'compact' | 'spacious'>>;
54
56
  setIsFullScreen: Dispatch<SetStateAction<boolean>>;
55
57
  setShowAlertBanner: Dispatch<SetStateAction<boolean>>;
@@ -58,11 +60,13 @@ export declare type MRT_TableInstance<TData extends Record<string, any> = {}> =
58
60
  };
59
61
  export declare type MRT_TableState<TData extends Record<string, any> = {}> = TableState & {
60
62
  currentDraggingColumn: MRT_Column<TData> | null;
63
+ currentDraggingRow: MRT_Row<TData> | null;
61
64
  currentEditingCell: MRT_Cell<TData> | null;
62
65
  currentEditingRow: MRT_Row<TData> | null;
63
66
  currentFilterFns: Record<string, MRT_FilterOption>;
64
67
  currentGlobalFilterFn: Record<string, MRT_FilterOption>;
65
68
  currentHoveredColumn: MRT_Column<TData> | null;
69
+ currentHoveredRow: MRT_Row<TData> | null;
66
70
  density: 'comfortable' | 'compact' | 'spacious';
67
71
  isFullScreen: boolean;
68
72
  isLoading: boolean;
@@ -123,6 +127,7 @@ export declare type MRT_ColumnDef<TData extends Record<string, any> = {}> = Omit
123
127
  columns?: MRT_ColumnDef<TData>[];
124
128
  enableClickToCopy?: boolean;
125
129
  enableColumnActions?: boolean;
130
+ enableColumnDragging?: boolean;
126
131
  enableColumnFilterChangeMode?: boolean;
127
132
  enableColumnOrdering?: boolean;
128
133
  enableEditing?: boolean;
@@ -170,6 +175,10 @@ export declare type MRT_ColumnDef<TData extends Record<string, any> = {}> = Omit
170
175
  table: MRT_TableInstance<TData>;
171
176
  column: MRT_Column<TData>;
172
177
  }) => IconButtonProps);
178
+ muiTableHeadCellDragHandleProps?: IconButtonProps | (({ table, column, }: {
179
+ table: MRT_TableInstance<TData>;
180
+ column: MRT_Column<TData>;
181
+ }) => IconButtonProps);
173
182
  muiTableHeadCellFilterTextFieldProps?: TextFieldProps | (({ table, column, }: {
174
183
  table: MRT_TableInstance<TData>;
175
184
  column: MRT_Column<TData>;
@@ -206,11 +215,10 @@ export declare type MRT_Header<TData extends Record<string, any> = {}> = Omit<He
206
215
  export declare type MRT_HeaderGroup<TData extends Record<string, any> = {}> = Omit<HeaderGroup<TData>, 'headers'> & {
207
216
  headers: MRT_Header<TData>[];
208
217
  };
209
- export declare type MRT_Row<TData extends Record<string, any> = {}> = Omit<Row<TData>, 'getVisibleCells' | 'getAllCells' | 'subRows' | 'original' | '_valuesCache'> & {
218
+ export declare type MRT_Row<TData extends Record<string, any> = {}> = Omit<Row<TData>, 'getVisibleCells' | 'getAllCells' | 'subRows' | '_valuesCache'> & {
210
219
  getAllCells: () => MRT_Cell<TData>[];
211
220
  getVisibleCells: () => MRT_Cell<TData>[];
212
221
  subRows?: MRT_Row<TData>[];
213
- original: TData;
214
222
  _valuesCache?: TData;
215
223
  };
216
224
  export declare type MRT_Cell<TData extends Record<string, any> = {}> = Omit<Cell<TData, unknown>, 'column' | 'row'> & {
@@ -221,10 +229,20 @@ export declare type MRT_SortingOption = keyof typeof MRT_SortingFns;
221
229
  export declare type MRT_SortingFn<TData extends Record<string, any> = {}> = SortingFn<TData> | MRT_SortingOption;
222
230
  export declare type MRT_FilterOption = keyof typeof MRT_FilterFns;
223
231
  export declare type MRT_FilterFn<TData extends Record<string, any> = {}> = FilterFn<TData> | MRT_FilterOption;
232
+ /**
233
+ * `columns` and `data` props are the only required props, but there are over 150 other optional props.
234
+ *
235
+ * See more info on creating columns and data on the official docs site:
236
+ * @link https://www.material-react-table.com/docs/usage
237
+ *
238
+ * See the full props list on the official docs site:
239
+ * @link https://www.material-react-table.com/docs/api/props
240
+ */
224
241
  export declare type MaterialReactTableProps<TData extends Record<string, any> = {}> = MRT_TableOptions<TData> & {
225
242
  editingMode?: 'table' | 'row' | 'cell';
226
243
  enableClickToCopy?: boolean;
227
244
  enableColumnActions?: boolean;
245
+ enableColumnDragging?: boolean;
228
246
  enableColumnFilterChangeMode?: boolean;
229
247
  enableColumnOrdering?: boolean;
230
248
  enableDensityToggle?: boolean;
@@ -235,7 +253,9 @@ export declare type MaterialReactTableProps<TData extends Record<string, any> =
235
253
  enableGlobalFilterRankedResults?: boolean;
236
254
  enablePagination?: boolean;
237
255
  enableRowActions?: boolean;
256
+ enableRowDragging?: boolean;
238
257
  enableRowNumbers?: boolean;
258
+ enableRowOrdering?: boolean;
239
259
  enableRowVirtualization?: boolean;
240
260
  enableSelectAll?: boolean;
241
261
  enableStickyHeader?: boolean;
@@ -255,7 +275,8 @@ export declare type MaterialReactTableProps<TData extends Record<string, any> =
255
275
  table: MRT_TableInstance<TData>;
256
276
  row: MRT_Row<TData>;
257
277
  }) => IconButtonProps);
258
- muiLinearProgressProps?: LinearProgressProps | (({ table, }: {
278
+ muiLinearProgressProps?: LinearProgressProps | (({ isTopToolbar, table, }: {
279
+ isTopToolbar: boolean;
259
280
  table: MRT_TableInstance<TData>;
260
281
  }) => LinearProgressProps);
261
282
  muiSearchTextFieldProps?: TextFieldProps | (({ table }: {
@@ -284,6 +305,10 @@ export declare type MaterialReactTableProps<TData extends Record<string, any> =
284
305
  table: MRT_TableInstance<TData>;
285
306
  cell: MRT_Cell<TData>;
286
307
  }) => SkeletonProps);
308
+ muiTableBodyRowDragHandleProps?: IconButtonProps | (({ table, row, }: {
309
+ table: MRT_TableInstance<TData>;
310
+ row: MRT_Row<TData>;
311
+ }) => IconButtonProps);
287
312
  muiTableBodyProps?: TableBodyProps | (({ table }: {
288
313
  table: MRT_TableInstance<TData>;
289
314
  }) => TableBodyProps);
@@ -313,6 +338,10 @@ export declare type MaterialReactTableProps<TData extends Record<string, any> =
313
338
  table: MRT_TableInstance<TData>;
314
339
  column: MRT_Column<TData>;
315
340
  }) => IconButtonProps);
341
+ muiTableHeadCellDragHandleProps?: IconButtonProps | (({ table, column, }: {
342
+ table: MRT_TableInstance<TData>;
343
+ column: MRT_Column<TData>;
344
+ }) => IconButtonProps);
316
345
  muiTableHeadCellFilterTextFieldProps?: TextFieldProps | (({ table, column, }: {
317
346
  table: MRT_TableInstance<TData>;
318
347
  column: MRT_Column<TData>;
@@ -356,7 +385,13 @@ export declare type MaterialReactTableProps<TData extends Record<string, any> =
356
385
  cell: MRT_Cell<TData>;
357
386
  table: MRT_TableInstance<TData>;
358
387
  }) => void;
388
+ onColumnDrop?: ({ event, draggedColumn, targetColumn, }: {
389
+ event: DragEvent<HTMLButtonElement>;
390
+ draggedColumn: MRT_Column<TData>;
391
+ targetColumn: MRT_Column<TData> | null;
392
+ }) => void;
359
393
  onCurrentDraggingColumnChange?: OnChangeFn<MRT_Column<TData> | null>;
394
+ onCurrentDraggingRowChange?: OnChangeFn<MRT_Row<TData> | null>;
360
395
  onCurrentEditingCellChange?: OnChangeFn<MRT_Cell<TData> | null>;
361
396
  onCurrentEditingRowChange?: OnChangeFn<MRT_Row<TData> | null>;
362
397
  onCurrentFilterFnsChange?: OnChangeFn<{
@@ -364,12 +399,18 @@ export declare type MaterialReactTableProps<TData extends Record<string, any> =
364
399
  }>;
365
400
  onCurrentGlobalFilterFnChange?: OnChangeFn<MRT_FilterOption>;
366
401
  onCurrentHoveredColumnChange?: OnChangeFn<MRT_Column<TData> | null>;
402
+ onCurrentHoveredRowChange?: OnChangeFn<MRT_Row<TData> | null>;
367
403
  onEditRowSubmit?: ({ row, table, }: {
368
404
  row: MRT_Row<TData>;
369
405
  table: MRT_TableInstance<TData>;
370
406
  }) => Promise<void> | void;
371
407
  onDensityChange?: OnChangeFn<boolean>;
372
408
  onIsFullScreenChange?: OnChangeFn<boolean>;
409
+ onRowDrop?: ({ event, draggedRow, targetRow, }: {
410
+ event: DragEvent<HTMLButtonElement>;
411
+ draggedRow: MRT_Row<TData>;
412
+ targetRow: MRT_Row<TData> | null;
413
+ }) => void;
373
414
  onShowAlertBannerChange?: OnChangeFn<boolean>;
374
415
  onShowFiltersChange?: OnChangeFn<boolean>;
375
416
  onShowGlobalFilterChange?: OnChangeFn<boolean>;
@@ -421,13 +462,4 @@ export declare type MaterialReactTableProps<TData extends Record<string, any> =
421
462
  virtualizerProps?: Partial<VirtualizerOptions<HTMLDivElement>>;
422
463
  };
423
464
  declare const _default: <TData extends Record<string, any> = {}>({ autoResetExpanded, columnResizeMode, defaultColumn, editingMode, enableColumnActions, enableColumnFilterChangeMode, enableColumnFilters, enableColumnOrdering, enableColumnResizing, enableDensityToggle, enableExpandAll, enableFilters, enableFullScreenToggle, enableGlobalFilter, enableGlobalFilterChangeMode, enableGlobalFilterRankedResults, enableGrouping, enableHiding, enableMultiRowSelection, enableMultiSort, enablePagination, enablePinning, enableRowSelection, enableSelectAll, enableSorting, enableStickyHeader, enableTableFooter, enableTableHead, enableToolbarBottom, enableToolbarInternalActions, enableToolbarTop, icons, localization, positionActionsColumn, positionGlobalFilter, positionPagination, positionToolbarAlertBanner, rowNumberMode, selectAllMode, ...rest }: MaterialReactTableProps<TData>) => JSX.Element;
424
- /**
425
- * `columns` and `data` props are the only required props, but there are over 150 other optional props.
426
- *
427
- * See more info on creating columns and data on the official docs site:
428
- * @link https://www.material-react-table.com/docs/usage
429
- *
430
- * See the full props list on the official docs site:
431
- * @link https://www.material-react-table.com/docs/api/props
432
- */
433
465
  export default _default;
@@ -1,9 +1,10 @@
1
- import { FC } from 'react';
1
+ import { FC, RefObject } from 'react';
2
2
  import type { MRT_Cell, MRT_TableInstance } from '..';
3
3
  interface Props {
4
4
  cell: MRT_Cell;
5
5
  enableHover?: boolean;
6
6
  rowIndex: number;
7
+ rowRef: RefObject<HTMLTableRowElement>;
7
8
  table: MRT_TableInstance;
8
9
  }
9
10
  export declare const MRT_TableBodyCell: FC<Props>;
@@ -0,0 +1,9 @@
1
+ import { FC, RefObject } from 'react';
2
+ import { MRT_Cell, MRT_TableInstance } from '..';
3
+ interface Props {
4
+ cell: MRT_Cell;
5
+ rowRef: RefObject<HTMLTableRowElement>;
6
+ table: MRT_TableInstance;
7
+ }
8
+ export declare const MRT_TableBodyRowGrabHandle: FC<Props>;
9
+ export {};
@@ -1,8 +1,10 @@
1
+ import { IconButtonProps } from '@mui/material';
1
2
  import { DragEventHandler, FC } from 'react';
2
3
  import { MRT_TableInstance } from '..';
3
4
  interface Props {
4
- handleDragStart: DragEventHandler<HTMLButtonElement>;
5
- handleDragEnd: DragEventHandler<HTMLButtonElement>;
5
+ iconButtonProps?: IconButtonProps;
6
+ onDragStart: DragEventHandler<HTMLButtonElement>;
7
+ onDragEnd: DragEventHandler<HTMLButtonElement>;
6
8
  table: MRT_TableInstance;
7
9
  }
8
10
  export declare const MRT_GrabHandleButton: FC<Props>;
@@ -0,0 +1,9 @@
1
+ import { FC, RefObject } from 'react';
2
+ import type { MRT_Column, MRT_TableInstance } from '..';
3
+ interface Props {
4
+ column: MRT_Column;
5
+ table: MRT_TableInstance;
6
+ tableHeadCellRef: RefObject<HTMLTableCellElement>;
7
+ }
8
+ export declare const MRT_TableHeadCellGrabHandle: FC<Props>;
9
+ export {};
@@ -34,6 +34,7 @@ export interface MRT_Localization {
34
34
  hideColumn: string;
35
35
  max: string;
36
36
  min: string;
37
+ move: string;
37
38
  pinToLeft: string;
38
39
  pinToRight: string;
39
40
  resetColumnSize: string;