Skip to content

Commit fe93af8

Browse files
authored
fix(AnalyticalTable): fix dynamic column width and prevent table from overflowing in some cases (#597)
1 parent bbeed09 commit fe93af8

File tree

3 files changed

+17
-16
lines changed

3 files changed

+17
-16
lines changed

packages/main/src/components/AnalyticalTable/__snapshots__/AnalyticalTable.test.tsx.snap

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
exports[`AnalyticalTable Alternate Row Color 1`] = `
44
<div
5-
style="max-width: 100%; overflow-x: auto; visibility: hidden;"
5+
style="max-width: 100%; overflow-x: auto; display: flex; flex-direction: column; visibility: hidden;"
66
>
77
<div
88
style="min-height: 1.5rem; display: flex; align-items: center;"
@@ -509,7 +509,7 @@ exports[`AnalyticalTable Alternate Row Color 1`] = `
509509

510510
exports[`AnalyticalTable Loading - Loader 1`] = `
511511
<div
512-
style="max-width: 100%; overflow-x: auto; visibility: hidden;"
512+
style="max-width: 100%; overflow-x: auto; display: flex; flex-direction: column; visibility: hidden;"
513513
>
514514
<div
515515
style="min-height: 1.5rem; display: flex; align-items: center;"
@@ -1016,7 +1016,7 @@ exports[`AnalyticalTable Loading - Loader 1`] = `
10161016

10171017
exports[`AnalyticalTable Loading - Placeholder 1`] = `
10181018
<div
1019-
style="max-width: 100%; overflow-x: auto; visibility: hidden;"
1019+
style="max-width: 100%; overflow-x: auto; display: flex; flex-direction: column; visibility: hidden;"
10201020
>
10211021
<div
10221022
style="min-height: 1.5rem; display: flex; align-items: center;"
@@ -1515,7 +1515,7 @@ exports[`AnalyticalTable Loading - Placeholder 1`] = `
15151515

15161516
exports[`AnalyticalTable Tree Table 1`] = `
15171517
<div
1518-
style="max-width: 100%; overflow-x: auto; visibility: hidden;"
1518+
style="max-width: 100%; overflow-x: auto; display: flex; flex-direction: column; visibility: hidden;"
15191519
>
15201520
<div
15211521
style="min-height: 1.5rem; display: flex; align-items: center;"
@@ -2165,7 +2165,7 @@ exports[`AnalyticalTable Tree Table 1`] = `
21652165

21662166
exports[`AnalyticalTable custom row height 1`] = `
21672167
<div
2168-
style="max-width: 100%; overflow-x: auto; --sapWcrAnalyticalTableRowHeight: 60px; visibility: hidden;"
2168+
style="max-width: 100%; overflow-x: auto; display: flex; flex-direction: column; --sapWcrAnalyticalTableRowHeight: 60px; visibility: hidden;"
21692169
>
21702170
<div
21712171
style="min-height: 1.5rem; display: flex; align-items: center;"
@@ -2672,7 +2672,7 @@ exports[`AnalyticalTable custom row height 1`] = `
26722672

26732673
exports[`AnalyticalTable render without data 1`] = `
26742674
<div
2675-
style="max-width: 100%; overflow-x: auto; visibility: hidden;"
2675+
style="max-width: 100%; overflow-x: auto; display: flex; flex-direction: column; visibility: hidden;"
26762676
>
26772677
<div
26782678
style="min-height: 1.5rem; display: flex; align-items: center;"
@@ -2944,7 +2944,7 @@ exports[`AnalyticalTable render without data 1`] = `
29442944

29452945
exports[`AnalyticalTable test Asc desc 1`] = `
29462946
<div
2947-
style="max-width: 100%; overflow-x: auto; visibility: hidden;"
2947+
style="max-width: 100%; overflow-x: auto; display: flex; flex-direction: column; visibility: hidden;"
29482948
>
29492949
<div
29502950
style="min-height: 1.5rem; display: flex; align-items: center;"
@@ -3451,7 +3451,7 @@ exports[`AnalyticalTable test Asc desc 1`] = `
34513451

34523452
exports[`AnalyticalTable test Asc desc 2`] = `
34533453
<div
3454-
style="max-width: 100%; overflow-x: auto; visibility: hidden;"
3454+
style="max-width: 100%; overflow-x: auto; display: flex; flex-direction: column; visibility: hidden;"
34553455
>
34563456
<div
34573457
style="min-height: 1.5rem; display: flex; align-items: center;"
@@ -3958,7 +3958,7 @@ exports[`AnalyticalTable test Asc desc 2`] = `
39583958

39593959
exports[`AnalyticalTable test Asc desc 3`] = `
39603960
<div
3961-
style="max-width: 100%; overflow-x: auto; visibility: hidden;"
3961+
style="max-width: 100%; overflow-x: auto; display: flex; flex-direction: column; visibility: hidden;"
39623962
>
39633963
<div
39643964
style="min-height: 1.5rem; display: flex; align-items: center;"
@@ -4465,7 +4465,7 @@ exports[`AnalyticalTable test Asc desc 3`] = `
44654465

44664466
exports[`AnalyticalTable test drag and drop of a draggable column 1`] = `
44674467
<div
4468-
style="max-width: 100%; overflow-x: auto; visibility: hidden;"
4468+
style="max-width: 100%; overflow-x: auto; display: flex; flex-direction: column; visibility: hidden;"
44694469
>
44704470
<div
44714471
style="min-height: 1.5rem; display: flex; align-items: center;"
@@ -4972,7 +4972,7 @@ exports[`AnalyticalTable test drag and drop of a draggable column 1`] = `
49724972

49734973
exports[`AnalyticalTable with highlight row 1`] = `
49744974
<div
4975-
style="max-width: 100%; overflow-x: auto; visibility: hidden;"
4975+
style="max-width: 100%; overflow-x: auto; display: flex; flex-direction: column; visibility: hidden;"
49764976
>
49774977
<div
49784978
style="min-height: 1.5rem; display: flex; align-items: center;"
@@ -5607,7 +5607,7 @@ exports[`AnalyticalTable with highlight row 1`] = `
56075607

56085608
exports[`AnalyticalTable without selection Column 1`] = `
56095609
<div
5610-
style="max-width: 100%; overflow-x: auto; visibility: hidden;"
5610+
style="max-width: 100%; overflow-x: auto; display: flex; flex-direction: column; visibility: hidden;"
56115611
>
56125612
<div
56135613
style="min-height: 1.5rem; display: flex; align-items: center;"

packages/main/src/components/AnalyticalTable/hooks/useDynamicColumnWidths.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,12 @@ const columns = (columns, { instance }) => {
5959
internalDefaultColumnsCount--;
6060
return acceptedWidth;
6161
}
62-
if (minWidth > availableWidth / defaultColumnsCount) {
62+
if (minWidth > availableWidth / internalDefaultColumnsCount) {
6363
availableWidth -= minWidth;
6464
internalDefaultColumnsCount--;
6565
return minWidth;
6666
}
67-
if (maxWidth < availableWidth / defaultColumnsCount) {
67+
if (maxWidth < availableWidth / internalDefaultColumnsCount) {
6868
availableWidth -= maxWidth;
6969
internalDefaultColumnsCount--;
7070
return maxWidth;
@@ -74,7 +74,6 @@ const columns = (columns, { instance }) => {
7474
.filter(Boolean);
7575

7676
const fixedWidth = columnsWithFixedWidth.reduce((acc, val) => acc + val, 0);
77-
7877
const defaultColumnsCount = visibleColumns.length - columnsWithFixedWidth.length;
7978
// check if columns are visible and table has width
8079
if (visibleColumns.length > 0 && totalWidth > 0) {

packages/main/src/components/AnalyticalTable/index.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,9 @@ const AnalyticalTable: FC<TableProps> = forwardRef((props: TableProps, ref: Ref<
327327
const inlineStyle = useMemo(() => {
328328
const tableStyles = {
329329
maxWidth: '100%',
330-
overflowX: 'auto'
330+
overflowX: 'auto',
331+
display: 'flex',
332+
flexDirection: 'column'
331333
};
332334
if (!!rowHeight) {
333335
tableStyles['--sapWcrAnalyticalTableRowHeight'] = `${rowHeight}px`;

0 commit comments

Comments
 (0)