material-react-table 0.35.2 → 0.36.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.
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Dispatch, SetStateAction, ReactNode, FocusEvent, ChangeEvent, DragEvent } from 'react';
1
+ import { Dispatch, SetStateAction, ReactNode, DragEvent } from 'react';
2
2
  import { ButtonProps, TextFieldProps, TableCellProps, IconButtonProps, LinearProgressProps, CheckboxProps, SkeletonProps, TableBodyProps, TableRowProps, ToolbarProps, TableContainerProps, TableFooterProps, TableHeadProps, TablePaginationProps, PaperProps, TableProps, AlertProps } from '@mui/material';
3
3
  import { Row, Table, TableState, ColumnDef, DeepKeys, Column, Header, HeaderGroup, Cell, SortingFn, FilterFn, TableOptions, OnChangeFn } from '@tanstack/react-table';
4
4
  import { Options } from 'react-virtual';
@@ -356,15 +356,15 @@ declare type MRT_ColumnDef<TData extends Record<string, any> = {}> = Omit<Column
356
356
  * @default gets set to the same value as `accessorKey` by default
357
357
  */
358
358
  id?: LiteralUnion<string & keyof TData>;
359
- muiTableBodyCellCopyButtonProps?: ButtonProps | (({ table, cell, }: {
359
+ muiTableBodyCellCopyButtonProps?: ButtonProps | (({ cell, table, }: {
360
360
  table: MRT_TableInstance<TData>;
361
361
  cell: MRT_Cell<TData>;
362
362
  }) => ButtonProps);
363
- muiTableBodyCellEditTextFieldProps?: TextFieldProps | (({ table, cell, }: {
364
- table: MRT_TableInstance<TData>;
363
+ muiTableBodyCellEditTextFieldProps?: TextFieldProps | (({ cell, table, }: {
365
364
  cell: MRT_Cell<TData>;
365
+ table: MRT_TableInstance<TData>;
366
366
  }) => TextFieldProps);
367
- muiTableBodyCellProps?: TableCellProps | (({ table, cell, }: {
367
+ muiTableBodyCellProps?: TableCellProps | (({ cell, table, }: {
368
368
  table: MRT_TableInstance<TData>;
369
369
  cell: MRT_Cell<TData>;
370
370
  }) => TableCellProps);
@@ -389,18 +389,6 @@ declare type MRT_ColumnDef<TData extends Record<string, any> = {}> = Omit<Column
389
389
  table: MRT_TableInstance<TData>;
390
390
  column: MRT_Column<TData>;
391
391
  }) => TableCellProps);
392
- onCellEditBlur?: ({ cell, event, table, value, }: {
393
- event: FocusEvent<HTMLInputElement>;
394
- cell: MRT_Cell<TData>;
395
- table: MRT_TableInstance<TData>;
396
- value: string;
397
- }) => void;
398
- onCellEditChange?: ({ cell, event, table, value, }: {
399
- event: ChangeEvent<HTMLInputElement>;
400
- cell: MRT_Cell<TData>;
401
- table: MRT_TableInstance<TData>;
402
- value: string;
403
- }) => void;
404
392
  sortingFn?: MRT_SortingFn;
405
393
  };
406
394
  declare type MRT_DefinedColumnDef<TData extends Record<string, any> = {}> = Omit<MRT_ColumnDef<TData>, 'id'> & {
@@ -508,9 +496,9 @@ declare type MaterialReactTableProps<TData extends Record<string, any> = {}> = O
508
496
  table: MRT_TableInstance<TData>;
509
497
  cell: MRT_Cell<TData>;
510
498
  }) => ButtonProps);
511
- muiTableBodyCellEditTextFieldProps?: TextFieldProps | (({ table, cell, }: {
512
- table: MRT_TableInstance<TData>;
499
+ muiTableBodyCellEditTextFieldProps?: TextFieldProps | (({ cell, table, }: {
513
500
  cell: MRT_Cell<TData>;
501
+ table: MRT_TableInstance<TData>;
514
502
  }) => TextFieldProps);
515
503
  muiTableBodyCellProps?: TableCellProps | (({ table, cell, }: {
516
504
  table: MRT_TableInstance<TData>;
@@ -591,18 +579,6 @@ declare type MaterialReactTableProps<TData extends Record<string, any> = {}> = O
591
579
  muiTableTopToolbarProps?: ToolbarProps | (({ table }: {
592
580
  table: MRT_TableInstance<TData>;
593
581
  }) => ToolbarProps);
594
- onCellEditBlur?: ({ cell, event, table, value, }: {
595
- event: FocusEvent<HTMLInputElement>;
596
- cell: MRT_Cell<TData>;
597
- table: MRT_TableInstance<TData>;
598
- value: string;
599
- }) => void;
600
- onCellEditChange?: ({ cell, event, table, value, }: {
601
- event: ChangeEvent<HTMLInputElement>;
602
- cell: MRT_Cell<TData>;
603
- table: MRT_TableInstance<TData>;
604
- value: string;
605
- }) => void;
606
582
  onColumnDrop?: ({ event, draggedColumn, targetColumn, }: {
607
583
  event: DragEvent<HTMLButtonElement>;
608
584
  draggedColumn: MRT_Column<TData>;
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.35.2",
2
+ "version": "0.36.0",
3
3
  "license": "MIT",
4
4
  "name": "material-react-table",
5
5
  "description": "A fully featured Material UI V5 implementation of TanStack React Table V8, written from the ground up in TypeScript.",
@@ -1,11 +1,4 @@
1
- import React, {
2
- ChangeEvent,
3
- Dispatch,
4
- DragEvent,
5
- FocusEvent,
6
- ReactNode,
7
- SetStateAction,
8
- } from 'react';
1
+ import React, { Dispatch, DragEvent, ReactNode, SetStateAction } from 'react';
9
2
  import type {
10
3
  AlertProps,
11
4
  ButtonProps,
@@ -263,8 +256,8 @@ export type MRT_ColumnDef<TData extends Record<string, any> = {}> = Omit<
263
256
  muiTableBodyCellCopyButtonProps?:
264
257
  | ButtonProps
265
258
  | (({
266
- table,
267
259
  cell,
260
+ table,
268
261
  }: {
269
262
  table: MRT_TableInstance<TData>;
270
263
  cell: MRT_Cell<TData>;
@@ -272,17 +265,17 @@ export type MRT_ColumnDef<TData extends Record<string, any> = {}> = Omit<
272
265
  muiTableBodyCellEditTextFieldProps?:
273
266
  | TextFieldProps
274
267
  | (({
275
- table,
276
268
  cell,
269
+ table,
277
270
  }: {
278
- table: MRT_TableInstance<TData>;
279
271
  cell: MRT_Cell<TData>;
272
+ table: MRT_TableInstance<TData>;
280
273
  }) => TextFieldProps);
281
274
  muiTableBodyCellProps?:
282
275
  | TableCellProps
283
276
  | (({
284
- table,
285
277
  cell,
278
+ table,
286
279
  }: {
287
280
  table: MRT_TableInstance<TData>;
288
281
  cell: MRT_Cell<TData>;
@@ -334,28 +327,6 @@ export type MRT_ColumnDef<TData extends Record<string, any> = {}> = Omit<
334
327
  table: MRT_TableInstance<TData>;
335
328
  column: MRT_Column<TData>;
336
329
  }) => TableCellProps);
337
- onCellEditBlur?: ({
338
- cell,
339
- event,
340
- table,
341
- value,
342
- }: {
343
- event: FocusEvent<HTMLInputElement>;
344
- cell: MRT_Cell<TData>;
345
- table: MRT_TableInstance<TData>;
346
- value: string;
347
- }) => void;
348
- onCellEditChange?: ({
349
- cell,
350
- event,
351
- table,
352
- value,
353
- }: {
354
- event: ChangeEvent<HTMLInputElement>;
355
- cell: MRT_Cell<TData>;
356
- table: MRT_TableInstance<TData>;
357
- value: string;
358
- }) => void;
359
330
  sortingFn?: MRT_SortingFn;
360
331
  };
361
332
 
@@ -539,11 +510,11 @@ export type MaterialReactTableProps<TData extends Record<string, any> = {}> =
539
510
  muiTableBodyCellEditTextFieldProps?:
540
511
  | TextFieldProps
541
512
  | (({
542
- table,
543
513
  cell,
514
+ table,
544
515
  }: {
545
- table: MRT_TableInstance<TData>;
546
516
  cell: MRT_Cell<TData>;
517
+ table: MRT_TableInstance<TData>;
547
518
  }) => TextFieldProps);
548
519
  muiTableBodyCellProps?:
549
520
  | TableCellProps
@@ -693,28 +664,6 @@ export type MaterialReactTableProps<TData extends Record<string, any> = {}> =
693
664
  muiTableTopToolbarProps?:
694
665
  | ToolbarProps
695
666
  | (({ table }: { table: MRT_TableInstance<TData> }) => ToolbarProps);
696
- onCellEditBlur?: ({
697
- cell,
698
- event,
699
- table,
700
- value,
701
- }: {
702
- event: FocusEvent<HTMLInputElement>;
703
- cell: MRT_Cell<TData>;
704
- table: MRT_TableInstance<TData>;
705
- value: string;
706
- }) => void;
707
- onCellEditChange?: ({
708
- cell,
709
- event,
710
- table,
711
- value,
712
- }: {
713
- event: ChangeEvent<HTMLInputElement>;
714
- cell: MRT_Cell<TData>;
715
- table: MRT_TableInstance<TData>;
716
- value: string;
717
- }) => void;
718
667
  onColumnDrop?: ({
719
668
  event,
720
669
  draggedColumn,
@@ -238,7 +238,10 @@ export const MRT_TableBodyCell: FC<Props> = ({
238
238
  : undefined,
239
239
  '&:hover': {
240
240
  backgroundColor:
241
- enableHover && enableEditing && editingMode !== 'row'
241
+ enableHover &&
242
+ enableEditing &&
243
+ columnDef.enableEditing !== false &&
244
+ editingMode !== 'row'
242
245
  ? theme.palette.mode === 'dark'
243
246
  ? `${lighten(
244
247
  theme.palette.background.default,
@@ -5,7 +5,7 @@ import React, {
5
5
  MouseEvent,
6
6
  useState,
7
7
  } from 'react';
8
- import { TextField } from '@mui/material';
8
+ import { TextField, TextFieldProps } from '@mui/material';
9
9
  import type { MRT_Cell, MRT_Row, MRT_TableInstance } from '..';
10
10
 
11
11
  interface Props {
@@ -16,12 +16,7 @@ interface Props {
16
16
  export const MRT_EditCellTextField: FC<Props> = ({ cell, table }) => {
17
17
  const {
18
18
  getState,
19
- options: {
20
- tableId,
21
- muiTableBodyCellEditTextFieldProps,
22
- onCellEditBlur,
23
- onCellEditChange,
24
- },
19
+ options: { tableId, muiTableBodyCellEditTextFieldProps },
25
20
  setEditingCell,
26
21
  setEditingRow,
27
22
  } = table;
@@ -31,23 +26,6 @@ export const MRT_EditCellTextField: FC<Props> = ({ cell, table }) => {
31
26
 
32
27
  const [value, setValue] = useState(() => cell.getValue<string>());
33
28
 
34
- const handleChange = (event: ChangeEvent<HTMLInputElement>) => {
35
- setValue(event.target.value);
36
- columnDef.onCellEditChange?.({ event, cell, table, value });
37
- onCellEditChange?.({ event, cell, table, value });
38
- };
39
-
40
- const handleBlur = (event: FocusEvent<HTMLInputElement>) => {
41
- if (editingRow) {
42
- if (!row._valuesCache) row._valuesCache = {};
43
- (row._valuesCache as Record<string, any>)[column.id] = value;
44
- setEditingRow({ ...editingRow } as MRT_Row);
45
- }
46
- setEditingCell(null);
47
- columnDef.onCellEditBlur?.({ event, cell, table, value });
48
- onCellEditBlur?.({ event, cell, table, value });
49
- };
50
-
51
29
  const mTableBodyCellEditTextFieldProps =
52
30
  muiTableBodyCellEditTextFieldProps instanceof Function
53
31
  ? muiTableBodyCellEditTextFieldProps({ cell, table })
@@ -61,11 +39,26 @@ export const MRT_EditCellTextField: FC<Props> = ({ cell, table }) => {
61
39
  })
62
40
  : columnDef.muiTableBodyCellEditTextFieldProps;
63
41
 
64
- const textFieldProps = {
42
+ const textFieldProps: TextFieldProps = {
65
43
  ...mTableBodyCellEditTextFieldProps,
66
44
  ...mcTableBodyCellEditTextFieldProps,
67
45
  };
68
46
 
47
+ const handleChange = (event: ChangeEvent<HTMLInputElement>) => {
48
+ textFieldProps.onChange?.(event);
49
+ setValue(event.target.value);
50
+ };
51
+
52
+ const handleBlur = (event: FocusEvent<HTMLInputElement>) => {
53
+ textFieldProps.onBlur?.(event);
54
+ if (editingRow) {
55
+ if (!row._valuesCache) row._valuesCache = {};
56
+ (row._valuesCache as Record<string, any>)[column.id] = value;
57
+ setEditingRow({ ...editingRow } as MRT_Row);
58
+ }
59
+ setEditingCell(null);
60
+ };
61
+
69
62
  if (columnDef.Edit) {
70
63
  return <>{columnDef.Edit?.({ cell, column, table })}</>;
71
64
  }
@@ -74,13 +67,13 @@ export const MRT_EditCellTextField: FC<Props> = ({ cell, table }) => {
74
67
  <TextField
75
68
  id={`mrt-${tableId}-edit-cell-text-field-${cell.id}`}
76
69
  margin="none"
77
- onBlur={handleBlur}
78
- onChange={handleChange}
79
70
  onClick={(e: MouseEvent<HTMLInputElement>) => e.stopPropagation()}
80
71
  placeholder={columnDef.header}
81
72
  value={value}
82
73
  variant="standard"
83
74
  {...textFieldProps}
75
+ onBlur={handleBlur}
76
+ onChange={handleChange}
84
77
  />
85
78
  );
86
79
  };