1
+ import { getScopedVarName } from '@ui5/webcomponents-base/CustomElementsScope.js' ;
1
2
import iconDecline from '@ui5/webcomponents-icons/dist/decline.js' ;
2
3
import iconFilter from '@ui5/webcomponents-icons/dist/filter.js' ;
3
4
import iconGroup from '@ui5/webcomponents-icons/dist/group-2.js' ;
4
5
import iconSortAscending from '@ui5/webcomponents-icons/dist/sort-ascending.js' ;
5
6
import iconSortDescending from '@ui5/webcomponents-icons/dist/sort-descending.js' ;
6
7
import { enrichEventWithDetails , useI18nBundle , useStylesheet } from '@ui5/webcomponents-react-base' ;
7
8
import type { MutableRefObject } from 'react' ;
8
- import { useEffect , useRef } from 'react' ;
9
+ import { useEffect , useMemo , useRef } from 'react' ;
9
10
import { createPortal } from 'react-dom' ;
10
11
import {
11
12
FlexBoxAlignItems ,
@@ -14,7 +15,7 @@ import {
14
15
PopoverPlacementType ,
15
16
TextAlign
16
17
} 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' ;
18
19
import { useCanRenderPortal } from '../../../internal/ssr.js' ;
19
20
import { stopPropagation } from '../../../internal/stopPropagation.js' ;
20
21
import { getUi5TagWithSuffix } from '../../../internal/utils.js' ;
@@ -25,6 +26,7 @@ import type { PopoverDomRef } from '../../../webComponents/Popover/index.js';
25
26
import { Popover } from '../../../webComponents/Popover/index.js' ;
26
27
import { StandardListItem } from '../../../webComponents/StandardListItem/index.js' ;
27
28
import { FlexBox } from '../../FlexBox/index.js' ;
29
+ import { Text } from '../../Text/index.js' ;
28
30
import type { AnalyticalTableColumnDefinition } from '../types/index.js' ;
29
31
import { classNames , styleData } from './ColumnHeaderModal.module.css.js' ;
30
32
@@ -58,6 +60,16 @@ export const ColumnHeaderModal = (props: ColumnHeaderModalProperties) => {
58
60
const sortDescendingText = i18nBundle . getText ( SORT_DESCENDING ) ;
59
61
const groupText = i18nBundle . getText ( GROUP ) ;
60
62
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 ] ) ;
61
73
62
74
const handleSort = ( e ) => {
63
75
const sortType = e . detail . item . getAttribute ( 'data-sort' ) ;
@@ -207,10 +219,26 @@ export const ColumnHeaderModal = (props: ColumnHeaderModalProperties) => {
207
219
</ StandardListItem >
208
220
) }
209
221
{ 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 } >
212
223
< 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 >
214
242
< Filter column = { column } popoverRef = { ref } />
215
243
</ FlexBox >
216
244
</ CustomListItem >
0 commit comments