feat: add filter field to suggest select field.

This commit is contained in:
a.bouhuolia
2021-08-03 08:26:13 +02:00
parent c09a99a773
commit 4a0bd842e9
12 changed files with 113 additions and 42 deletions

View File

@@ -31,6 +31,7 @@ export function ItemsMultiSelect({
<MenuItem
icon={isItemSelected(item.id) ? 'tick' : 'blank'}
text={item.name}
label={item.code}
key={item.id}
onClick={handleClick}
/>
@@ -54,6 +55,21 @@ export function ItemsMultiSelect({
[setLocalSelected, localSelected, isItemSelected, onItemSelect],
);
// Filters accounts items.
const filterItemsPredicater = useCallback(
(query, item, _index, exactMatch) => {
const normalizedTitle = item.name.toLowerCase();
const normalizedQuery = query.toLowerCase();
if (exactMatch) {
return normalizedTitle === normalizedQuery;
} else {
return `${normalizedTitle} ${item.code}`.indexOf(normalizedQuery) >= 0;
}
},
[],
);
return (
<MultiSelect
items={items}
@@ -62,6 +78,7 @@ export function ItemsMultiSelect({
popoverProps={{ minimal: true }}
filterable={true}
onItemSelect={handleItemSelect}
itemPredicate={filterItemsPredicater}
{...multiSelectProps}
>
<Button