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}
>
)
}
{...buttonProps}
/>
);
}