parent
b4d7c66561
commit
68e83b8662
@ -0,0 +1,51 @@ |
||||
import { PaginatedMultiSelectFiltered } from '@rocket.chat/fuselage'; |
||||
import { useDebouncedValue } from '@rocket.chat/fuselage-hooks'; |
||||
import React, { memo, useMemo, useState } from 'react'; |
||||
|
||||
import { useTranslation } from '../contexts/TranslationContext'; |
||||
import { useRecordList } from '../hooks/lists/useRecordList'; |
||||
import { AsyncStatePhase } from '../hooks/useAsyncState'; |
||||
import { useDepartmentsList } from './Omnichannel/hooks/useDepartmentsList'; |
||||
|
||||
const AutoCompleteDepartment = (props) => { |
||||
const { value, onlyMyDepartments = false, onChange = () => {} } = props; |
||||
|
||||
const t = useTranslation(); |
||||
const [departmentsFilter, setDepartmentsFilter] = useState(''); |
||||
|
||||
const debouncedDepartmentsFilter = useDebouncedValue(departmentsFilter, 500); |
||||
|
||||
const { itemsList: departmentsList, loadMoreItems: loadMoreDepartments } = useDepartmentsList( |
||||
useMemo(() => ({ filter: debouncedDepartmentsFilter, onlyMyDepartments }), [ |
||||
debouncedDepartmentsFilter, |
||||
onlyMyDepartments, |
||||
]), |
||||
); |
||||
|
||||
const { |
||||
phase: departmentsPhase, |
||||
items: departmentsItems, |
||||
itemCount: departmentsTotal, |
||||
} = useRecordList(departmentsList); |
||||
|
||||
return ( |
||||
<PaginatedMultiSelectFiltered |
||||
value={value} |
||||
onChange={onChange} |
||||
filter={departmentsFilter} |
||||
setFilter={setDepartmentsFilter} |
||||
options={departmentsItems} |
||||
width='100%' |
||||
flexShrink={0} |
||||
flexGrow={0} |
||||
placeholder={t('Select_an_option')} |
||||
endReached={ |
||||
departmentsPhase === AsyncStatePhase.LOADING |
||||
? () => {} |
||||
: (start) => loadMoreDepartments(start, Math.min(50, departmentsTotal)) |
||||
} |
||||
/> |
||||
); |
||||
}; |
||||
|
||||
export default memo(AutoCompleteDepartment); |
Loading…
Reference in new issue