mirror of
https://github.com/Unleash/unleash.git
synced 2025-03-27 00:19:39 +01:00
fix: avoid duplicate unselected filters (#5633)
This commit is contained in:
parent
c552f3ae72
commit
bcf0e6b7a3
@ -63,29 +63,32 @@ export const Filters: VFC<IFilterProps> = ({
|
|||||||
firstArray: string[],
|
firstArray: string[],
|
||||||
secondArray: string[],
|
secondArray: string[],
|
||||||
): string[] => {
|
): string[] => {
|
||||||
|
const resultArray: string[] = [...firstArray];
|
||||||
const elementsSet = new Set(firstArray);
|
const elementsSet = new Set(firstArray);
|
||||||
|
|
||||||
secondArray.forEach((element) => {
|
secondArray.forEach((element) => {
|
||||||
if (!elementsSet.has(element)) {
|
if (!elementsSet.has(element)) {
|
||||||
firstArray.push(element);
|
resultArray.push(element);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return firstArray;
|
return resultArray;
|
||||||
};
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const newSelectedFilters = availableFilters
|
const newSelectedFilters = availableFilters
|
||||||
.filter((field) => Boolean(state[field.filterKey]))
|
.filter((field) => Boolean(state[field.filterKey]))
|
||||||
.map((field) => field.label);
|
.map((field) => field.label);
|
||||||
|
const allSelectedFilters = mergeArraysKeepingOrder(
|
||||||
|
selectedFilters,
|
||||||
|
newSelectedFilters,
|
||||||
|
);
|
||||||
|
setSelectedFilters(allSelectedFilters);
|
||||||
|
|
||||||
const newUnselectedFilters = availableFilters
|
const newUnselectedFilters = availableFilters
|
||||||
.filter((field) => !state[field.filterKey])
|
.filter((item) => !allSelectedFilters.includes(item.label))
|
||||||
.map((field) => field.label)
|
.map((field) => field.label)
|
||||||
.sort();
|
.sort();
|
||||||
|
|
||||||
setSelectedFilters(
|
|
||||||
mergeArraysKeepingOrder(selectedFilters, newSelectedFilters),
|
|
||||||
);
|
|
||||||
setUnselectedFilters(newUnselectedFilters);
|
setUnselectedFilters(newUnselectedFilters);
|
||||||
}, [JSON.stringify(state), JSON.stringify(availableFilters)]);
|
}, [JSON.stringify(state), JSON.stringify(availableFilters)]);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user