The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Rocket.Chat/client/components/AutoCompleteAgent.js

41 lines
1.1 KiB

import { AutoComplete, Option } from '@rocket.chat/fuselage';
import React, { memo, useMemo, useState } from 'react';
import { useTranslation } from '../contexts/TranslationContext';
import { useEndpointData } from '../hooks/useEndpointData';
const AutoCompleteAgent = (props) => {
const t = useTranslation();
const [filter, setFilter] = useState('');
const { value: data } = useEndpointData(
'livechat/users/agent',
useMemo(() => ({ text: filter }), [filter]),
);
const options = useMemo(
() => (data && [...data.users.map((user) => ({ value: user._id, label: user.name }))]) || [],
[data],
);
const optionsWithAll = useMemo(
() =>
(data && [
{ value: 'all', label: t('All') },
...data.users.map((user) => ({ value: user._id, label: user.name })),
]) || [{ value: 'all', label: t('All') }],
[data, t],
);
return (
<AutoComplete
{...props}
filter={filter}
setFilter={setFilter}
renderSelected={({ label }) => <>{label}</>}
renderItem={({ value, ...props }) => <Option key={value} {...props} />}
options={props.empty ? options : optionsWithAll}
/>
);
};
export default memo(AutoCompleteAgent);