import React, { useMemo, useCallback, useState } from 'react'; import { MenuItem, Button } from '@blueprintjs/core'; import { omit } from 'lodash'; import MultiSelect from 'components/MultiSelect'; import { FormattedMessage as T } from 'react-intl'; export default function ContactsMultiSelect({ contacts, defaultText = , buttonProps, onCustomerSelected: onContactSelected, ...selectProps }) { const [selectedContacts, setSelectedContacts] = useState({}); const isContactSelect = useCallback( (id) => typeof selectedContacts[id] !== 'undefined', [selectedContacts], ); const contactRenderer = useCallback( (contact, { handleClick }) => ( ), [isContactSelect], ); const countSelected = useMemo(() => Object.values(selectedContacts).length, [ selectedContacts, ]); const onContactSelect = useCallback( ({ id }) => { const selected = { ...(isContactSelect(id) ? { ...omit(selectedContacts, [id]), } : { ...selectedContacts, [id]: true, }), }; setSelectedContacts({ ...selected }); onContactSelected && onContactSelected(selected); }, [ setSelectedContacts, selectedContacts, isContactSelect, onContactSelected, ], ); return ( } itemRenderer={contactRenderer} popoverProps={{ minimal: true }} filterable={true} onItemSelect={onContactSelect} >