diff --git a/packages/main/__karma_snapshots__/FilterBar.md b/packages/main/__karma_snapshots__/FilterBar.md index 674b489a969..ba427027516 100644 --- a/packages/main/__karma_snapshots__/FilterBar.md +++ b/packages/main/__karma_snapshots__/FilterBar.md @@ -352,6 +352,31 @@ + +
+
+ + + + + + Text 1 + + + + + Text 2 + + + + +
+
+
diff --git a/packages/main/src/components/FilterBar/FilterBar.karma.tsx b/packages/main/src/components/FilterBar/FilterBar.karma.tsx index a9f8786bfbd..69339c4c5e2 100644 --- a/packages/main/src/components/FilterBar/FilterBar.karma.tsx +++ b/packages/main/src/components/FilterBar/FilterBar.karma.tsx @@ -106,12 +106,19 @@ describe('FilterBar', () => { key="classification3" type={FilterType.Default} /> + alert(e.getParameter('selectedItem').key)} + filterItems={filterItems} + label="Classification" + key="classification3" + type={FilterType.MultiSelect} + /> ); // console.log(wrapper.debug()); // console.log(wrapper.find('Select').debug()); wrapper - .find('ui5-li') + .find('ui5-option') .at(1) .simulate('change'); diff --git a/packages/main/src/components/FilterBar/demo.stories.tsx b/packages/main/src/components/FilterBar/demo.stories.tsx index 971e239fd89..2a94a8bdef2 100644 --- a/packages/main/src/components/FilterBar/demo.stories.tsx +++ b/packages/main/src/components/FilterBar/demo.stories.tsx @@ -9,6 +9,7 @@ import { PlacementType } from '../../lib/PlacementType'; import { Switch } from '../../lib/Switch'; import { TitleLevel } from '../../lib/TitleLevel'; import { VariantManagement } from '../../lib/VariantManagement'; +import { action } from '@storybook/addon-actions'; const flavours = []; for (let i = 1; i <= 9; i++) { @@ -57,17 +58,17 @@ function renderStory() { > - {/**/} - {/* {*/} - {/*alert(e.parameters.selectedItem);*/} - {/*}}/>*/} - {/**/} + ); } diff --git a/packages/main/src/components/FilterItem/index.tsx b/packages/main/src/components/FilterItem/index.tsx index 1d57eee1a82..3f982e45139 100644 --- a/packages/main/src/components/FilterItem/index.tsx +++ b/packages/main/src/components/FilterItem/index.tsx @@ -1,5 +1,5 @@ import { Event, StyleClassHelper } from '@ui5/webcomponents-react-base'; -import React, { forwardRef, ReactNode, RefObject, useMemo, FC } from 'react'; +import React, { FC, forwardRef, ReactNode, RefObject, useMemo } from 'react'; import { CommonProps } from '../../interfaces/CommonProps'; import { BusyIndicator } from '../../lib/BusyIndicator'; import { FilterType } from '../../lib/FilterType'; @@ -7,6 +7,8 @@ import { Input } from '../../lib/Input'; import { Label } from '../../lib/Label'; import { createUseStyles } from 'react-jss'; import { Select } from '../../lib/Select'; +import { MultiComboBox } from '../../lib/MultiComboBox'; +import { StandardListItem } from '../../lib/StandardListItem'; import { Option } from '../../lib/Option'; import styles from './FilterItem.jss'; import { BusyIndicatorType } from '../../lib/BusyIndicatorType'; @@ -52,6 +54,17 @@ const FilterItem: FC = forwardRef((props: FilterItemPropTyp onChange(Event.of(null, e.getOriginalEvent(), { selectedItem: item })); } + function onMultiCbChange(e) { + const selectedItems = e.getParameter('items'); + onChange( + Event.of(null, e.getOriginalEvent(), { + selectedItems: selectedItems.map((item) => { + return getItemByKey(item.getAttribute('data-key')); + }) + }) + ); + } + const filterComponent = useMemo(() => { if (loading) { return ( @@ -68,6 +81,16 @@ const FilterItem: FC = forwardRef((props: FilterItemPropTyp switch (type) { case FilterType.Default: return ; + case FilterType.MultiSelect: + return ( + + {filterItems.map((item) => ( + + {item.text} + + ))} + + ); case FilterType.Select: return (