1- import type { Virtualizer } from '@tanstack/react-virtual' ;
1+ import type { Virtualizer , VirtualItem } from '@tanstack/react-virtual' ;
22import { clsx } from 'clsx' ;
33import type { MutableRefObject } from 'react' ;
44import { useEffect , useMemo , useRef } from 'react' ;
@@ -39,6 +39,15 @@ interface VirtualTableBodyProps {
3939 rowVirtualizer : Virtualizer < DivWithCustomScrollProp , HTMLElement > ;
4040}
4141
42+ function getDirectionStyles ( isRtl : boolean , virtualColumn : VirtualItem ) {
43+ return isRtl
44+ ? {
45+ transform : `translateX(-${ virtualColumn . start } px)` ,
46+ insertInlineStart : 0 ,
47+ }
48+ : { transform : `translateX(${ virtualColumn . start } px)` , insertInlineStart : 0 } ;
49+ }
50+
4251export const VirtualTableBody = ( props : VirtualTableBodyProps ) => {
4352 const {
4453 alternateRowColor,
@@ -141,7 +150,13 @@ export const VirtualTableBody = (props: VirtualTableBodyProps) => {
141150 data-empty-row-cell = "true"
142151 tabIndex = { - 1 }
143152 aria-hidden = "true"
144- style = { { ...emptyRowCellProps . style , cursor : 'unset' , width : item . size } }
153+ style = { {
154+ ...emptyRowCellProps . style ,
155+ cursor : 'unset' ,
156+ position : 'absolute' ,
157+ width : `${ item . size } px` ,
158+ ...getDirectionStyles ( isRtl , item ) ,
159+ } }
145160 />
146161 ) ;
147162 } ) }
@@ -205,12 +220,6 @@ export const VirtualTableBody = (props: VirtualTableBodyProps) => {
205220 ) }
206221 { columnVirtualizer . getVirtualItems ( ) . map ( ( virtualColumn , visibleColumnIndex ) => {
207222 const cell = row . cells [ virtualColumn . index ] ;
208- const directionStyles = isRtl
209- ? {
210- transform : `translateX(-${ virtualColumn . start } px)` ,
211- insertInlineStart : 0 ,
212- }
213- : { transform : `translateX(${ virtualColumn . start } px)` , insertInlineStart : 0 } ;
214223 if ( ! cell ) {
215224 return null ;
216225 }
@@ -227,7 +236,7 @@ export const VirtualTableBody = (props: VirtualTableBodyProps) => {
227236 width : `${ virtualColumn . size } px` ,
228237 top : 0 ,
229238 height : `${ rowHeight } px` ,
230- ...directionStyles ,
239+ ...getDirectionStyles ( isRtl , virtualColumn ) ,
231240 } ,
232241 } ;
233242 let contentToRender : RenderColumnTypes ;
0 commit comments