|
1 | | -import { type DragEvent, useMemo } from 'react'; |
| 1 | +import { type DragEvent, useMemo, useCallback } from 'react'; |
2 | 2 | import Box from '@mui/material/Box'; |
3 | 3 | import TableCell, { type TableCellProps } from '@mui/material/TableCell'; |
4 | 4 | import { useTheme } from '@mui/material/styles'; |
@@ -159,6 +159,20 @@ export const MRT_TableHeadCell = <TData extends MRT_RowData>({ |
159 | 159 | }); |
160 | 160 | }; |
161 | 161 |
|
| 162 | + const handleRef = useCallback( |
| 163 | + (node: HTMLTableCellElement) => { |
| 164 | + if (node) { |
| 165 | + if (tableHeadCellRefs.current) { |
| 166 | + tableHeadCellRefs.current[column.id] = node; |
| 167 | + } |
| 168 | + if (columnDefType !== 'group') { |
| 169 | + columnVirtualizer?.measureElement?.(node); |
| 170 | + } |
| 171 | + } |
| 172 | + }, |
| 173 | + [column.id, columnDefType, columnVirtualizer, tableHeadCellRefs], |
| 174 | + ); |
| 175 | + |
162 | 176 | const HeaderElement = |
163 | 177 | parseFromValuesOrFunc(columnDef.Header, { |
164 | 178 | column, |
@@ -189,14 +203,7 @@ export const MRT_TableHeadCell = <TData extends MRT_RowData>({ |
189 | 203 | data-sort={column.getIsSorted() || undefined} |
190 | 204 | onDragEnter={handleDragEnter} |
191 | 205 | onDragOver={handleDragOver} |
192 | | - ref={(node: HTMLTableCellElement) => { |
193 | | - if (node) { |
194 | | - tableHeadCellRefs.current![column.id] = node; |
195 | | - if (columnDefType !== 'group') { |
196 | | - columnVirtualizer?.measureElement?.(node); |
197 | | - } |
198 | | - } |
199 | | - }} |
| 206 | + ref={handleRef} |
200 | 207 | tabIndex={enableKeyboardShortcuts ? 0 : undefined} |
201 | 208 | {...tableCellProps} |
202 | 209 | onKeyDown={handleKeyDown} |
|
0 commit comments