Skip to content

Commit 7e193df

Browse files
authored
fix(AnalyticalTable): fix border styles (#5028)
1 parent cca7428 commit 7e193df

File tree

11 files changed

+58
-18
lines changed

11 files changed

+58
-18
lines changed

packages/main/src/components/AnalyticalTable/AnayticalTable.jss.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ const styles = {
156156
border: `1px solid ${ThemingParameters.sapList_TableGroupHeaderBorderColor}`,
157157
color: ThemingParameters.sapList_TextColor,
158158
'& $tableCell': {
159-
borderInlineEnd: 'none'
159+
borderInlineEnd: `1px solid transparent`
160160
}
161161
}
162162
},
@@ -178,7 +178,10 @@ const styles = {
178178
display: 'inline-flex',
179179
padding: '0 0.5rem',
180180
'&:first-child': {
181-
borderInlineStart: `1px solid ${ThemingParameters.sapList_BorderColor}`
181+
borderInlineStart: CustomThemingParameters.AnalyticalTableOuterCellBorder
182+
},
183+
'&:last-child': {
184+
borderInlineEnd: CustomThemingParameters.AnalyticalTableOuterCellBorder
182185
},
183186
overflow: 'hidden',
184187
textOverflow: 'ellipsis',
@@ -193,6 +196,11 @@ const styles = {
193196
}
194197
}
195198
},
199+
showVerticalEndBorder: {
200+
'& $tableCell': {
201+
borderInlineEnd: `1px solid ${ThemingParameters.sapList_BorderColor}`
202+
}
203+
},
196204
noDataContainer: {
197205
display: 'flex',
198206
justifyContent: 'center',

packages/main/src/components/AnalyticalTable/ColumnHeader/ColumnHeaderContainer.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ interface ColumnHeaderContainerProps {
3838
columnVirtualizer: Virtualizer<DivWithCustomScrollProp>;
3939
scaleXFactor?: number;
4040
uniqueId: string;
41+
showVerticalEndBorder: boolean;
4142
}
4243

4344
const useStyles = createUseStyles(styles, { name: 'Resizer' });
@@ -59,7 +60,8 @@ export const ColumnHeaderContainer = forwardRef<HTMLDivElement, ColumnHeaderCont
5960
portalContainer,
6061
columnVirtualizer,
6162
scaleXFactor,
62-
uniqueId
63+
uniqueId,
64+
showVerticalEndBorder
6365
} = props;
6466

6567
const classes = useStyles();
@@ -100,6 +102,7 @@ export const ColumnHeaderContainer = forwardRef<HTMLDivElement, ColumnHeaderCont
100102
)}
101103
<ColumnHeader
102104
{...rest}
105+
showVerticalEndBorder={showVerticalEndBorder}
103106
id={`${uniqueId}${rest?.id ?? ''}`}
104107
columnId={rest.id}
105108
visibleColumnIndex={index}

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

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import type {
99
AriaAttributes,
1010
CSSProperties,
1111
DragEventHandler,
12-
FC,
1312
KeyboardEventHandler,
1413
MouseEventHandler,
1514
ReactNode
@@ -41,6 +40,7 @@ export interface ColumnHeaderProps {
4140
portalContainer: Element;
4241
scaleXFactor?: number;
4342
columnId?: string;
43+
showVerticalEndBorder: boolean;
4444

4545
//getHeaderProps()
4646
id: string;
@@ -56,10 +56,28 @@ export interface ColumnHeaderProps {
5656
}
5757

5858
const styles = {
59+
thContainer: {
60+
'&:first-child': {
61+
'& > [role="columnheader"]': {
62+
borderInlineStart: CustomThemingParameters.AnalyticalTableOuterCellBorder
63+
}
64+
},
65+
'&:last-child': {
66+
'& > [role="columnheader"]': {
67+
borderInlineEnd: CustomThemingParameters.AnalyticalTableOuterCellBorder
68+
}
69+
}
70+
},
71+
verticalEndBorder: {
72+
'&:last-child': {
73+
'& > [role="columnheader"]': {
74+
borderInlineEnd: `1px solid ${ThemingParameters.sapList_BorderColor}`
75+
}
76+
}
77+
},
5978
header: {
6079
height: '100%',
6180
display: 'flex',
62-
justifyContent: 'begin',
6381
alignItems: 'center',
6482
textAlign: 'start',
6583
fontFamily: CustomThemingParameters.AnalyticalTableHeaderFontFamily,
@@ -95,7 +113,7 @@ const styles = {
95113

96114
const useStyles = createUseStyles(styles, { name: 'TableColumnHeader' });
97115

98-
export const ColumnHeader: FC<ColumnHeaderProps> = (props: ColumnHeaderProps) => {
116+
export const ColumnHeader = (props: ColumnHeaderProps) => {
99117
const classes = useStyles();
100118
const {
101119
id,
@@ -125,7 +143,8 @@ export const ColumnHeader: FC<ColumnHeaderProps> = (props: ColumnHeaderProps) =>
125143
scaleXFactor,
126144
isFiltered,
127145
'aria-label': ariaLabel,
128-
'aria-sort': ariaSort
146+
'aria-sort': ariaSort,
147+
showVerticalEndBorder
129148
} = props;
130149

131150
const [popoverOpen, setPopoverOpen] = useState(false);
@@ -197,6 +216,7 @@ export const ColumnHeader: FC<ColumnHeaderProps> = (props: ColumnHeaderProps) =>
197216
return (
198217
<div
199218
ref={columnHeaderRef}
219+
className={clsx(classes.thContainer, showVerticalEndBorder && classes.verticalEndBorder)}
200220
style={{
201221
position: 'absolute',
202222
top: 0,

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { enrichEventWithDetails } from '@ui5/webcomponents-react-base';
2-
import { clsx } from 'clsx';
32
import type { MutableRefObject } from 'react';
43
import React, { useCallback, useEffect, useRef, useState } from 'react';
54
import type { AnalyticalTablePropTypes } from '../index.js';
@@ -48,7 +47,6 @@ export const VirtualTableBodyContainer = (props: VirtualTableBodyContainerProps)
4847
}
4948
}, [parentRef.current]);
5049

51-
const classNames = clsx(classes.tbody);
5250
const dataLength = rows.length;
5351

5452
const lastScrollTop = useRef(0);
@@ -111,7 +109,7 @@ export const VirtualTableBodyContainer = (props: VirtualTableBodyContainerProps)
111109

112110
return (
113111
<div
114-
className={classNames}
112+
className={classes.tbody}
115113
ref={parentRef}
116114
onScroll={onScroll}
117115
style={{

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

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1105,12 +1105,6 @@ const AnalyticalTable = forwardRef<AnalyticalTableDomRef, AnalyticalTablePropTyp
11051105
verticalScrollBarRef.current.isExternalVerticalScroll = false;
11061106
};
11071107

1108-
const tableClasses = clsx(
1109-
classes.table,
1110-
GlobalStyleClasses.sapScrollBar,
1111-
withNavigationHighlight && classes.hasNavigationIndicator
1112-
);
1113-
11141108
const columnVirtualizer = useVirtualizer({
11151109
count: visibleColumnsWidth.length,
11161110
getScrollElement: () => tableRef.current,
@@ -1124,6 +1118,16 @@ const AnalyticalTable = forwardRef<AnalyticalTableDomRef, AnalyticalTablePropTyp
11241118
overscan: overscanCountHorizontal
11251119
});
11261120

1121+
const totalSize = columnVirtualizer.getTotalSize();
1122+
const showVerticalEndBorder = tableState.tableClientWidth > totalSize;
1123+
1124+
const tableClasses = clsx(
1125+
classes.table,
1126+
GlobalStyleClasses.sapScrollBar,
1127+
withNavigationHighlight && classes.hasNavigationIndicator,
1128+
showVerticalEndBorder && classes.showVerticalEndBorder
1129+
);
1130+
11271131
scrollToRef.current = {
11281132
...scrollToRef.current,
11291133
horizontalScrollToOffset: columnVirtualizer.scrollToOffset,
@@ -1198,6 +1202,7 @@ const AnalyticalTable = forwardRef<AnalyticalTableDomRef, AnalyticalTablePropTyp
11981202
columnVirtualizer={columnVirtualizer}
11991203
scaleXFactor={scaleXFactor}
12001204
uniqueId={uniqueId}
1205+
showVerticalEndBorder={showVerticalEndBorder}
12011206
/>
12021207
)
12031208
);

packages/main/src/themes/CustomVariables.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ export enum CustomVariables {
1111
AnalyticalTableHeaderFontFamily = '--_ui5wcr-AnalyticalTable-HeaderFontFamily',
1212
AnalyticalTableOuterBorderBlock = '--_ui5wcr-AnalyticalTable-OuterBorderBlock',
1313
AnalyticalTableOuterBorderInline = '--_ui5wcr-AnalyticalTable-OuterBorderInline',
14+
AnalyticalTableOuterCellBorder = '--_ui5wcr-AnalyticalTable-OuterCellBorder',
1415
ObjectPageSectionBorderTop = '--_ui5wcr_ObjectPage_SectionBorderTop',
1516
ObjectPageSectionTitleFontFamily = '--_ui5wcr_ObjectPage_SectionTitleFontFamily',
1617
ObjectPageSectionTitleHeight = '--_ui5wcr_ObjectPage_SectionTitleHeight',

packages/main/src/themes/base.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ export const baseParameters: Partial<Record<CustomVariables, string>> = {
1212
[CustomVariables.AnalyticalTableHeaderFontFamily]: ThemingParameters.sapFontFamily,
1313
[CustomVariables.AnalyticalTableOuterBorderBlock]: `1px solid ${ThemingParameters.sapList_BorderColor}`,
1414
[CustomVariables.AnalyticalTableOuterBorderInline]: `1px solid ${ThemingParameters.sapList_BorderColor}`,
15+
[CustomVariables.AnalyticalTableOuterCellBorder]: `1px solid ${ThemingParameters.sapList_BorderColor}`,
1516
[CustomVariables.ObjectPageSectionBorderTop]: `0.0625rem solid ${ThemingParameters.sapGroup_TitleBorderColor}`,
1617
[CustomVariables.ObjectPageSectionTitleFontFamily]: ThemingParameters.sapFontFamily,
1718
[CustomVariables.ObjectPageSectionTitleHeight]: '2.25rem',

packages/main/src/themes/sap_horizon.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export const sapHorizonParameters: Partial<Record<CustomVariables, string>> = {
1010
[CustomVariables.AnalyticalTableHeaderFontFamily]: ThemingParameters.sapFontBoldFamily,
1111
[CustomVariables.AnalyticalTableOuterBorderBlock]: 'none',
1212
[CustomVariables.AnalyticalTableOuterBorderInline]: 'none',
13+
[CustomVariables.AnalyticalTableOuterCellBorder]: `1px solid transparent`,
1314
[CustomVariables.ObjectPageSectionBorderTop]: 'none',
1415
[CustomVariables.ObjectPageSectionTitleFontFamily]: ThemingParameters.sapFontBoldFamily,
1516
[CustomVariables.ObjectPageSectionTitleHeight]: '2.75rem',

packages/main/src/themes/sap_horizon_dark.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export const sapHorizonDarkParameters: Partial<Record<CustomVariables, string>>
1010
[CustomVariables.AnalyticalTableHeaderFontFamily]: ThemingParameters.sapFontBoldFamily,
1111
[CustomVariables.AnalyticalTableOuterBorderBlock]: 'none',
1212
[CustomVariables.AnalyticalTableOuterBorderInline]: 'none',
13+
[CustomVariables.AnalyticalTableOuterCellBorder]: `1px solid transparent`,
1314
[CustomVariables.ObjectPageSectionTitleFontFamily]: ThemingParameters.sapFontBoldFamily,
1415
[CustomVariables.ObjectPageSectionTitleLineHeight]: '4rem',
1516
[CustomVariables.ObjectPageSectionTitleHeight]: '2.75rem',

packages/main/src/themes/sap_horizon_hcb.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,6 @@ export const sapHorizonHcbParameters: Partial<Record<CustomVariables, string>> =
2020
[CustomVariables.AnalyticalTableHeaderFontFamily]: ThemingParameters.sapFontBoldFamily,
2121
[CustomVariables.AnalyticalTableHeaderActiveTextColor]: ThemingParameters.sapContent_ContrastTextColor,
2222
[CustomVariables.AnalyticalTableHeaderBorderWidth]: '0.188rem',
23-
[CustomVariables.AnalyticalTableOuterBorderInline]: 'none'
23+
[CustomVariables.AnalyticalTableOuterBorderInline]: 'none',
24+
[CustomVariables.AnalyticalTableOuterCellBorder]: `1px solid transparent`
2425
};

packages/main/src/themes/sap_horizon_hcw.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,6 @@ export const sapHorizonHcwParameters: Partial<Record<CustomVariables, string>> =
2020
[CustomVariables.AnalyticalTableHeaderFontFamily]: ThemingParameters.sapFontBoldFamily,
2121
[CustomVariables.AnalyticalTableHeaderActiveTextColor]: ThemingParameters.sapContent_ContrastTextColor,
2222
[CustomVariables.AnalyticalTableHeaderBorderWidth]: '0.188rem',
23-
[CustomVariables.AnalyticalTableOuterBorderInline]: 'none'
23+
[CustomVariables.AnalyticalTableOuterBorderInline]: 'none',
24+
[CustomVariables.AnalyticalTableOuterCellBorder]: `1px solid transparent`
2425
};

0 commit comments

Comments
 (0)