Skip to content

Commit 153f91b

Browse files
authored
fix(AnalyticalTable): add "Filter" text to column popover (#6165)
Partial cherry-pick of [955271b](955271b) Fixes #6132
1 parent 5a968b9 commit 153f91b

File tree

2 files changed

+38
-7
lines changed

2 files changed

+38
-7
lines changed

packages/main/src/components/AnalyticalTable/ColumnHeader/ColumnHeaderModal.module.css

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@
88

99
.filterIcon {
1010
padding-inline-end: 0.5rem;
11-
min-width: 1rem;
12-
min-height: 1rem;
1311
color: var(--sapContent_NonInteractiveIconColor);
1412
}
13+
14+
.filterText {
15+
overflow: visible;
16+
padding-inline-end: 0.5rem;
17+
}

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

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1+
import { getScopedVarName } from '@ui5/webcomponents-base/CustomElementsScope.js';
12
import iconDecline from '@ui5/webcomponents-icons/dist/decline.js';
23
import iconFilter from '@ui5/webcomponents-icons/dist/filter.js';
34
import iconGroup from '@ui5/webcomponents-icons/dist/group-2.js';
45
import iconSortAscending from '@ui5/webcomponents-icons/dist/sort-ascending.js';
56
import iconSortDescending from '@ui5/webcomponents-icons/dist/sort-descending.js';
67
import { enrichEventWithDetails, useI18nBundle, useStylesheet } from '@ui5/webcomponents-react-base';
78
import type { MutableRefObject } from 'react';
8-
import { useEffect, useRef } from 'react';
9+
import { useEffect, useMemo, useRef } from 'react';
910
import { createPortal } from 'react-dom';
1011
import {
1112
FlexBoxAlignItems,
@@ -14,7 +15,7 @@ import {
1415
PopoverPlacementType,
1516
TextAlign
1617
} from '../../../enums/index.js';
17-
import { CLEAR_SORTING, GROUP, SORT_ASCENDING, SORT_DESCENDING, UNGROUP } from '../../../i18n/i18n-defaults.js';
18+
import { CLEAR_SORTING, FILTER, GROUP, SORT_ASCENDING, SORT_DESCENDING, UNGROUP } from '../../../i18n/i18n-defaults.js';
1819
import { useCanRenderPortal } from '../../../internal/ssr.js';
1920
import { stopPropagation } from '../../../internal/stopPropagation.js';
2021
import { getUi5TagWithSuffix } from '../../../internal/utils.js';
@@ -25,6 +26,7 @@ import type { PopoverDomRef } from '../../../webComponents/Popover/index.js';
2526
import { Popover } from '../../../webComponents/Popover/index.js';
2627
import { StandardListItem } from '../../../webComponents/StandardListItem/index.js';
2728
import { FlexBox } from '../../FlexBox/index.js';
29+
import { Text } from '../../Text/index.js';
2830
import type { AnalyticalTableColumnDefinition } from '../types/index.js';
2931
import { classNames, styleData } from './ColumnHeaderModal.module.css.js';
3032

@@ -58,6 +60,16 @@ export const ColumnHeaderModal = (props: ColumnHeaderModalProperties) => {
5860
const sortDescendingText = i18nBundle.getText(SORT_DESCENDING);
5961
const groupText = i18nBundle.getText(GROUP);
6062
const ungroupText = i18nBundle.getText(UNGROUP);
63+
const filterText = i18nBundle.getText(FILTER);
64+
65+
const filterStyles = useMemo(() => {
66+
if (showFilter) {
67+
return {
68+
iconDimensions: `var(${getScopedVarName('--_ui5_list_item_icon_size')})`,
69+
fontSize: `var(${getScopedVarName('--_ui5_list_item_title_size')})`
70+
};
71+
}
72+
}, [showFilter]);
6173

6274
const handleSort = (e) => {
6375
const sortType = e.detail.item.getAttribute('data-sort');
@@ -207,10 +219,26 @@ export const ColumnHeaderModal = (props: ColumnHeaderModalProperties) => {
207219
</StandardListItem>
208220
)}
209221
{showFilter && (
210-
//todo maybe need to enhance Input selection after ui5-webcomponents issue has been fixed (undefined is displayed as val)
211-
<CustomListItem type={ListItemType.Inactive} onKeyDown={handleCustomLiKeyDown}>
222+
<CustomListItem type={ListItemType.Inactive} onKeyDown={handleCustomLiKeyDown} accessibleName={filterText}>
212223
<FlexBox alignItems={FlexBoxAlignItems.Center}>
213-
<Icon name={iconFilter} className={classNames.filterIcon} aria-hidden />
224+
<Icon
225+
name={iconFilter}
226+
className={classNames.filterIcon}
227+
aria-hidden
228+
style={{
229+
minWidth: filterStyles.iconDimensions,
230+
minHeight: filterStyles.iconDimensions
231+
}}
232+
/>
233+
<Text
234+
wrapping={false}
235+
className={classNames.filterText}
236+
style={{
237+
fontSize: filterStyles.fontSize
238+
}}
239+
>
240+
{filterText}
241+
</Text>
214242
<Filter column={column} popoverRef={ref} />
215243
</FlexBox>
216244
</CustomListItem>

0 commit comments

Comments
 (0)