saleor-dashboard/src/utils/handlers/multiAutocompleteSelectChangeHandler.ts

25 lines
799 B
TypeScript
Raw Normal View History

2019-08-09 10:17:04 +00:00
import { MultiAutocompleteChoiceType } from "@saleor/components/MultiAutocompleteSelectField";
import { ChangeEvent, FormChange } from "@saleor/hooks/useForm";
import { toggle } from "@saleor/utils/lists";
2019-08-09 10:17:04 +00:00
/**
* @param change Use toggleValue callback delivered by form
*/
2019-08-09 10:17:04 +00:00
function createMultiAutocompleteSelectHandler(
change: FormChange,
setSelected: (choices: MultiAutocompleteChoiceType[]) => void,
selected: MultiAutocompleteChoiceType[],
choices: MultiAutocompleteChoiceType[]
): FormChange {
return (event: ChangeEvent) => {
change(event);
const id = event.target.value;
const choice = choices.find(choice => choice.value === id);
setSelected(toggle(choice, selected, (a, b) => a.value === b.value));
};
}
export default createMultiAutocompleteSelectHandler;