From 88f70d7b77fd19db55a758b40c9d376d7e00f288 Mon Sep 17 00:00:00 2001 From: sundeep8967 Date: Fri, 28 Aug 2026 17:46:52 +0530 Subject: [PATCH] fix(react-stately): set allowOverflow on TableLayout nodes for sticky columns Fixes #10518 by setting allowOverflow = true across TableLayout nodes (header, headerrow, column, row, cell), ensuring that columns marked as sticky via isStickyColumn() are not clipped during virtualized scroll. Signed-off-by: sundeep8967 --- packages/react-stately/src/layout/TableLayout.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/react-stately/src/layout/TableLayout.ts b/packages/react-stately/src/layout/TableLayout.ts index e8d75a8021b..72df1d735e0 100644 --- a/packages/react-stately/src/layout/TableLayout.ts +++ b/packages/react-stately/src/layout/TableLayout.ts @@ -232,6 +232,7 @@ export class TableLayout exten let layoutInfo = new LayoutInfo('header', collection.head?.key ?? 'header', rect); layoutInfo.isSticky = true; layoutInfo.zIndex = 1; + layoutInfo.allowOverflow = true; let y = this.padding; let width = 0; @@ -259,6 +260,7 @@ export class TableLayout exten protected buildHeaderRow(headerRow: GridNode, x: number, y: number): LayoutNode { let rect = new Rect(x, y, 0, 0); let row = new LayoutInfo('headerrow', headerRow.key, rect); + row.allowOverflow = true; let height = 0; let columns: LayoutNode[] = []; @@ -358,6 +360,7 @@ export class TableLayout exten let layoutInfo = new LayoutInfo(node.type, node.key, rect); layoutInfo.isSticky = this.isStickyColumn(node); layoutInfo.zIndex = layoutInfo.isSticky ? 2 : 1; + layoutInfo.allowOverflow = true; layoutInfo.estimatedSize = isEstimated; return { @@ -461,6 +464,7 @@ export class TableLayout exten let collection = this.virtualizer!.collection as TableCollection; let rect = new Rect(x, y, 0, 0); let layoutInfo = new LayoutInfo('row', node.key, rect); + layoutInfo.allowOverflow = true; let children: LayoutNode[] = []; let height = 0; @@ -511,6 +515,7 @@ export class TableLayout exten let layoutInfo = new LayoutInfo(node.type, node.key, rect); layoutInfo.isSticky = this.isStickyColumn(node); layoutInfo.zIndex = layoutInfo.isSticky ? 2 : 1; + layoutInfo.allowOverflow = true; layoutInfo.estimatedSize = isEstimated; return {