From b249d4230f3d17f78e32801e55dadebc176ad60e Mon Sep 17 00:00:00 2001 From: Nicolas Stepien Date: Tue, 24 Feb 2026 19:03:06 +0000 Subject: [PATCH 1/2] Remove `--rdg-scroll-height` --- src/DataGrid.tsx | 5 +---- src/hooks/useGridDimensions.ts | 16 ++++------------ 2 files changed, 5 insertions(+), 16 deletions(-) diff --git a/src/DataGrid.tsx b/src/DataGrid.tsx index 9d8586c45b..71ee3dc72a 100644 --- a/src/DataGrid.tsx +++ b/src/DataGrid.tsx @@ -340,7 +340,7 @@ export function DataGrid(props: DataGridPr [columnWidths] ); - const [gridRef, gridWidth, gridHeight, horizontalScrollbarHeight] = useGridDimensions(); + const [gridRef, gridWidth, gridHeight] = useGridDimensions(); const { columns, colSpanColumns, @@ -461,8 +461,6 @@ export function DataGrid(props: DataGridPr const maxColIdx = columns.length - 1; const selectedCellIsWithinSelectionBounds = isCellWithinSelectionBounds(selectedPosition); const selectedCellIsWithinViewportBounds = isCellWithinViewportBounds(selectedPosition); - const scrollHeight = - headerRowHeight + totalRowHeight + summaryRowsHeight + horizontalScrollbarHeight; /** * The identity of the wrapper function is stable so it won't break memoization @@ -1189,7 +1187,6 @@ export function DataGrid(props: DataGridPr gridTemplateColumns, gridTemplateRows: templateRows, '--rdg-header-row-height': `${headerRowHeight}px`, - '--rdg-scroll-height': `${scrollHeight}px`, ...layoutCssVars }} dir={direction} diff --git a/src/hooks/useGridDimensions.ts b/src/hooks/useGridDimensions.ts index ddd2ac67e3..907d6f02e3 100644 --- a/src/hooks/useGridDimensions.ts +++ b/src/hooks/useGridDimensions.ts @@ -5,7 +5,6 @@ export function useGridDimensions() { const gridRef = useRef(null); const [inlineSize, setInlineSize] = useState(1); const [blockSize, setBlockSize] = useState(1); - const [horizontalScrollbarHeight, setHorizontalScrollbarHeight] = useState(0); useLayoutEffect(() => { const { ResizeObserver } = window; @@ -14,25 +13,18 @@ export function useGridDimensions() { // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (ResizeObserver == null) return; - const { clientWidth, clientHeight, offsetWidth, offsetHeight } = gridRef.current!; - const { width, height } = gridRef.current!.getBoundingClientRect(); - const initialHorizontalScrollbarHeight = offsetHeight - clientHeight; - const initialWidth = width - offsetWidth + clientWidth; - const initialHeight = height - initialHorizontalScrollbarHeight; + const { clientWidth, clientHeight } = gridRef.current!; - setInlineSize(initialWidth); - setBlockSize(initialHeight); - setHorizontalScrollbarHeight(initialHorizontalScrollbarHeight); + setInlineSize(clientWidth); + setBlockSize(clientHeight); const resizeObserver = new ResizeObserver((entries) => { const size = entries[0].contentBoxSize[0]; - const { clientHeight, offsetHeight } = gridRef.current!; // we use flushSync here to avoid flashing scrollbars flushSync(() => { setInlineSize(size.inlineSize); setBlockSize(size.blockSize); - setHorizontalScrollbarHeight(offsetHeight - clientHeight); }); }); resizeObserver.observe(gridRef.current!); @@ -42,5 +34,5 @@ export function useGridDimensions() { }; }, []); - return [gridRef, inlineSize, blockSize, horizontalScrollbarHeight] as const; + return [gridRef, inlineSize, blockSize] as const; } From f873fd6c0fc4c3cd9c8603c422dd18e8d15dcb5a Mon Sep 17 00:00:00 2001 From: Nicolas Stepien Date: Tue, 24 Feb 2026 21:05:27 +0000 Subject: [PATCH 2/2] increase actionTimeout? --- vite.config.ts | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/vite.config.ts b/vite.config.ts index 6871bdbfd5..b51a6027b3 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,6 +1,6 @@ import { tanstackRouter } from '@tanstack/router-plugin/vite'; import react from '@vitejs/plugin-react'; -import { playwright } from '@vitest/browser-playwright'; +import { playwright, type PlaywrightProviderOptions } from '@vitest/browser-playwright'; import { ecij } from 'ecij/plugin'; import { defineConfig, type ViteUserConfig } from 'vitest/config'; import type { BrowserCommand, BrowserInstanceOption } from 'vitest/node'; @@ -43,14 +43,18 @@ const viewport = { width: 1920, height: 1080 } as const; // vitest modifies the instance objects, so we cannot rely on static objects function getInstances(): BrowserInstanceOption[] { + const opts: PlaywrightProviderOptions = { + actionTimeout: 2000, + contextOptions: { + viewport + } + }; + return [ { browser: 'chromium', provider: playwright({ - actionTimeout: 1000, - contextOptions: { - viewport - }, + ...opts, launchOptions: { channel: 'chromium' } @@ -58,12 +62,7 @@ function getInstances(): BrowserInstanceOption[] { }, { browser: 'firefox', - provider: playwright({ - actionTimeout: 1000, - contextOptions: { - viewport - } - }), + provider: playwright(opts), // TODO: remove when FF tests are stable fileParallelism: false }