Skip to content

Commit d233f08

Browse files
authored
[datagrid] Fix scroll jumping (#19156)
1 parent 30efac3 commit d233f08

File tree

2 files changed

+7
-7
lines changed

2 files changed

+7
-7
lines changed

packages/x-data-grid/src/hooks/features/dimensions/useGridDimensions.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import * as React from 'react';
33
import { RefObject } from '@mui/x-internals/types';
44
import { useStoreEffect } from '@mui/x-internals/store';
5+
import { Size } from '@mui/x-virtualizer/models';
56
import { GridEventListener } from '../../../models/events';
67
import { ElementSize } from '../../../models';
78
import { GridPrivateApiCommunity } from '../../../models/api/gridApiCommunity';
@@ -136,7 +137,7 @@ export function useGridDimensions(apiRef: RefObject<GridPrivateApiCommunity>, pr
136137
const errorShown = React.useRef(false);
137138

138139
useGridEventPriority(apiRef, 'resize', (size) => {
139-
if (!getRootDimensions().isReady) {
140+
if (!getRootDimensions().isReady || size === Size.EMPTY) {
140141
return;
141142
}
142143
if (size.height === 0 && !errorShown.current && !props.autoHeight && !isJSDOM) {

packages/x-virtualizer/src/features/dimensions.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,8 @@ function useDimensions(store: Store<BaseState>, params: VirtualizerParams, _api:
121121
},
122122
} = params;
123123

124+
const containerNode = refs.container.current;
125+
124126
const updateDimensions = React.useCallback(() => {
125127
if (isFirstSizing.current) {
126128
return;
@@ -132,10 +134,7 @@ function useDimensions(store: Store<BaseState>, params: VirtualizerParams, _api:
132134
// All the floating point dimensions should be rounded to .1 decimal places to avoid subpixel rendering issues
133135
// https://github.com/mui/mui-x/issues/9550#issuecomment-1619020477
134136
// https://github.com/mui/mui-x/issues/15721
135-
const scrollbarSize = measureScrollbarSize(
136-
params.refs.container.current,
137-
params.dimensions.scrollbarSize,
138-
);
137+
const scrollbarSize = measureScrollbarSize(containerNode, params.dimensions.scrollbarSize);
139138

140139
const topContainerHeight = topPinnedHeight + rowsMeta.pinnedTopRowsTotalHeight;
141140
const bottomContainerHeight = bottomPinnedHeight + rowsMeta.pinnedBottomRowsTotalHeight;
@@ -234,7 +233,7 @@ function useDimensions(store: Store<BaseState>, params: VirtualizerParams, _api:
234233
store.update({ dimensions: newDimensions });
235234
}, [
236235
store,
237-
params.refs.container,
236+
containerNode,
238237
params.dimensions.scrollbarSize,
239238
params.autoHeight,
240239
rowHeight,
@@ -259,7 +258,7 @@ function useDimensions(store: Store<BaseState>, params: VirtualizerParams, _api:
259258
);
260259
React.useEffect(() => debouncedUpdateDimensions?.clear, [debouncedUpdateDimensions]);
261260

262-
useLayoutEffect(() => observeRootNode(refs.container.current, store), [refs, store]);
261+
useLayoutEffect(() => observeRootNode(containerNode, store), [containerNode, store]);
263262

264263
useLayoutEffect(updateDimensions, [updateDimensions]);
265264

0 commit comments

Comments
 (0)