Skip to content

Commit 63a6a41

Browse files
authored
fix(AnalyticalTable): virtualize empty cells horizontally (#7880)
Fixes #7841
1 parent b7859b2 commit 63a6a41

File tree

1 file changed

+18
-9
lines changed

1 file changed

+18
-9
lines changed

packages/main/src/components/AnalyticalTable/TableBody/VirtualTableBody.tsx

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { Virtualizer } from '@tanstack/react-virtual';
1+
import type { Virtualizer, VirtualItem } from '@tanstack/react-virtual';
22
import { clsx } from 'clsx';
33
import type { MutableRefObject } from 'react';
44
import { 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+
4251
export 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

Comments
 (0)