material-react-table 1.1.0-beta.0 → 1.1.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.
@@ -1,10 +1,11 @@
1
- import React, { DragEvent, FC, memo, useRef } from 'react';
1
+ import React, { DragEvent, FC, memo, useMemo, useRef } from 'react';
2
2
  import { darken, lighten, TableRow, useTheme } from '@mui/material';
3
3
  import { Memo_MRT_TableBodyCell, MRT_TableBodyCell } from './MRT_TableBodyCell';
4
4
  import { MRT_TableDetailPanel } from './MRT_TableDetailPanel';
5
5
  import type { MRT_Row, MRT_TableInstance } from '..';
6
6
 
7
7
  interface Props {
8
+ numRows: number;
8
9
  row: MRT_Row;
9
10
  rowIndex: number;
10
11
  table: MRT_TableInstance;
@@ -12,6 +13,7 @@ interface Props {
12
13
  }
13
14
 
14
15
  export const MRT_TableBodyRow: FC<Props> = ({
16
+ numRows,
15
17
  row,
16
18
  rowIndex,
17
19
  table,
@@ -45,12 +47,15 @@ export const MRT_TableBodyRow: FC<Props> = ({
45
47
 
46
48
  const rowRef = useRef<HTMLTableRowElement | null>(null);
47
49
 
48
- const draggingBorder =
49
- draggingRow?.id === row.id
50
- ? `1px dashed ${theme.palette.text.secondary}`
51
- : hoveredRow?.id === row.id
52
- ? `2px dashed ${theme.palette.primary.main}`
53
- : undefined;
50
+ const draggingBorder = useMemo(
51
+ () =>
52
+ draggingRow?.id === row.id
53
+ ? `1px dashed ${theme.palette.text.secondary}`
54
+ : hoveredRow?.id === row.id
55
+ ? `2px dashed ${theme.palette.primary.main}`
56
+ : undefined,
57
+ [draggingRow, hoveredRow],
58
+ );
54
59
 
55
60
  const draggingBorders = draggingBorder
56
61
  ? {
@@ -90,16 +95,17 @@ export const MRT_TableBodyRow: FC<Props> = ({
90
95
  ...draggingBorders,
91
96
  })}
92
97
  >
93
- {row?.getVisibleCells()?.map?.((cell) => {
98
+ {row.getVisibleCells().map((cell) => {
94
99
  const props = {
95
100
  cell,
96
101
  enableHover: tableRowProps?.hover !== false,
97
102
  key: cell.id,
103
+ numRows,
98
104
  rowIndex,
99
105
  rowRef,
100
106
  table,
101
107
  };
102
- return memoMode === 'cell' &&
108
+ return memoMode === 'cells' &&
103
109
  cell.column.columnDef.columnDefType === 'data' &&
104
110
  !draggingColumn &&
105
111
  !draggingRow &&
@@ -1,4 +1,4 @@
1
- import React, { DragEvent, FC, ReactNode } from 'react';
1
+ import React, { DragEvent, FC, ReactNode, useMemo } from 'react';
2
2
  import { Box, TableCell, Theme, useTheme } from '@mui/material';
3
3
  import { MRT_TableHeadCellColumnActionsButton } from './MRT_TableHeadCellColumnActionsButton';
4
4
  import { MRT_TableHeadCellFilterContainer } from './MRT_TableHeadCellFilterContainer';
@@ -54,6 +54,24 @@ export const MRT_TableHeadCell: FC<Props> = ({ header, table }) => {
54
54
  ...mcTableHeadCellProps,
55
55
  };
56
56
 
57
+ const draggingBorder = useMemo(
58
+ () =>
59
+ draggingColumn?.id === column.id
60
+ ? `1px dashed ${theme.palette.text.secondary}`
61
+ : hoveredColumn?.id === column.id
62
+ ? `2px dashed ${theme.palette.primary.main}`
63
+ : undefined,
64
+ [draggingColumn, hoveredColumn],
65
+ );
66
+
67
+ const draggingBorders = draggingBorder
68
+ ? {
69
+ borderLeft: draggingBorder,
70
+ borderRight: draggingBorder,
71
+ borderTop: draggingBorder,
72
+ }
73
+ : undefined;
74
+
57
75
  const handleDragEnter = (_e: DragEvent) => {
58
76
  if (enableGrouping && hoveredColumn?.id === 'drop-zone') {
59
77
  setHoveredColumn(null);
@@ -65,21 +83,6 @@ export const MRT_TableHeadCell: FC<Props> = ({ header, table }) => {
65
83
  }
66
84
  };
67
85
 
68
- const draggingBorder =
69
- draggingColumn?.id === column.id
70
- ? `1px dashed ${theme.palette.text.secondary}`
71
- : hoveredColumn?.id === column.id
72
- ? `2px dashed ${theme.palette.primary.main}`
73
- : undefined;
74
-
75
- const draggingBorders = draggingBorder
76
- ? {
77
- borderLeft: draggingBorder,
78
- borderRight: draggingBorder,
79
- borderTop: draggingBorder,
80
- }
81
- : undefined;
82
-
83
86
  const headerElement = ((columnDef?.Header instanceof Function
84
87
  ? columnDef?.Header?.({
85
88
  column,