1- import { forwardRef , useCallback , useImperativeHandle , useMemo , useRef , useState } from 'react' ;
2- import type { Key , KeyboardEvent , RefAttributes } from 'react' ;
1+ import {
2+ useCallback ,
3+ useImperativeHandle ,
4+ useLayoutEffect ,
5+ useMemo ,
6+ useRef ,
7+ useState
8+ } from 'react' ;
9+ import type { Key , KeyboardEvent } from 'react' ;
310import { flushSync } from 'react-dom' ;
411import clsx from 'clsx' ;
512
613import {
7- HeaderRowSelectionChangeProvider ,
8- HeaderRowSelectionProvider ,
9- RowSelectionChangeProvider ,
14+ HeaderRowSelectionChangeContext ,
15+ HeaderRowSelectionContext ,
16+ RowSelectionChangeContext ,
1017 useCalculatedColumns ,
1118 useColumnWidths ,
1219 useGridDimensions ,
1320 useLatestFunc ,
14- useLayoutEffect ,
1521 useViewportColumns ,
1622 useViewportRows ,
1723 type HeaderRowSelectionContextValue
@@ -55,9 +61,9 @@ import type {
5561import { defaultRenderCell } from './Cell' ;
5662import { renderCheckbox as defaultRenderCheckbox } from './cellRenderers' ;
5763import {
58- DataGridDefaultRenderersProvider ,
64+ DataGridDefaultRenderersContext ,
5965 useDefaultRenderers
60- } from './DataGridDefaultRenderersProvider ' ;
66+ } from './DataGridDefaultRenderersContext ' ;
6167import DragHandle from './DragHandle' ;
6268import EditCell from './EditCell' ;
6369import GroupedColumnHeaderRow from './GroupedColumnHeaderRow' ;
@@ -97,7 +103,7 @@ export interface DataGridHandle {
97103}
98104
99105type SharedDivProps = Pick <
100- React . HTMLAttributes < HTMLDivElement > ,
106+ React . ComponentProps < 'div' > ,
101107 | 'role'
102108 | 'aria-label'
103109 | 'aria-labelledby'
@@ -109,6 +115,7 @@ type SharedDivProps = Pick<
109115> ;
110116
111117export interface DataGridProps < R , SR = unknown , K extends Key = Key > extends SharedDivProps {
118+ ref ?: Maybe < React . Ref < DataGridHandle > > ;
112119 /**
113120 * Grid and data Props
114121 */
@@ -215,11 +222,11 @@ export interface DataGridProps<R, SR = unknown, K extends Key = Key> extends Sha
215222 *
216223 * <DataGrid columns={columns} rows={rows} />
217224 */
218- function DataGrid < R , SR , K extends Key > (
219- props : DataGridProps < R , SR , K > ,
220- ref : React . Ref < DataGridHandle >
225+ export default function DataGrid < R , SR = unknown , K extends Key = Key > (
226+ props : DataGridProps < R , SR , K >
221227) {
222228 const {
229+ ref,
223230 // Grid and data Props
224231 columns : rawColumns ,
225232 rows,
@@ -1125,9 +1132,9 @@ function DataGrid<R, SR, K extends Key>(
11251132 data-testid = { testId }
11261133 data-cy = { dataCy }
11271134 >
1128- < DataGridDefaultRenderersProvider value = { defaultGridComponents } >
1129- < HeaderRowSelectionChangeProvider value = { selectHeaderRowLatest } >
1130- < HeaderRowSelectionProvider value = { headerSelectionValue } >
1135+ < DataGridDefaultRenderersContext value = { defaultGridComponents } >
1136+ < HeaderRowSelectionChangeContext value = { selectHeaderRowLatest } >
1137+ < HeaderRowSelectionContext value = { headerSelectionValue } >
11311138 { Array . from ( { length : groupedColumnHeaderRowsCount } , ( _ , index ) => (
11321139 < GroupedColumnHeaderRow
11331140 key = { index }
@@ -1155,8 +1162,8 @@ function DataGrid<R, SR, K extends Key>(
11551162 shouldFocusGrid = { ! selectedCellIsWithinSelectionBounds }
11561163 direction = { direction }
11571164 />
1158- </ HeaderRowSelectionProvider >
1159- </ HeaderRowSelectionChangeProvider >
1165+ </ HeaderRowSelectionContext >
1166+ </ HeaderRowSelectionChangeContext >
11601167 { rows . length === 0 && noRowsFallback ? (
11611168 noRowsFallback
11621169 ) : (
@@ -1184,9 +1191,9 @@ function DataGrid<R, SR, K extends Key>(
11841191 />
11851192 ) ;
11861193 } ) }
1187- < RowSelectionChangeProvider value = { selectRowLatest } >
1194+ < RowSelectionChangeContext value = { selectRowLatest } >
11881195 { getViewportRows ( ) }
1189- </ RowSelectionChangeProvider >
1196+ </ RowSelectionChangeContext >
11901197 { bottomSummaryRows ?. map ( ( row , rowIdx ) => {
11911198 const gridRowStart = headerAndTopSummaryRowsCount + rows . length + rowIdx + 1 ;
11921199 const summaryRowIdx = rows . length + rowIdx ;
@@ -1219,7 +1226,7 @@ function DataGrid<R, SR, K extends Key>(
12191226 } ) }
12201227 </ >
12211228 ) }
1222- </ DataGridDefaultRenderersProvider >
1229+ </ DataGridDefaultRenderersContext >
12231230
12241231 { renderDragHandle ( ) }
12251232
@@ -1262,7 +1269,3 @@ function getCellToScroll(gridEl: HTMLDivElement) {
12621269function isSamePosition ( p1 : Position , p2 : Position ) {
12631270 return p1 . idx === p2 . idx && p1 . rowIdx === p2 . rowIdx ;
12641271}
1265-
1266- export default forwardRef ( DataGrid ) as < R , SR = unknown , K extends Key = Key > (
1267- props : DataGridProps < R , SR , K > & RefAttributes < DataGridHandle >
1268- ) => React . JSX . Element ;
0 commit comments