import { CheckOption, PaginatedMultiSelectFiltered } from '@rocket.chat/fuselage'; import { useDebouncedValue } from '@rocket.chat/fuselage-hooks'; import type { ComponentProps } from 'react'; import { memo, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { useMonitorsList } from '../hooks/useMonitorsList'; export type AutoCompleteMonitorsProps = Omit< ComponentProps, 'options' | 'setFilter' | 'endReached' | 'filter' | 'renderItem' >; const AutoCompleteMonitors = ({ value = [], onBlur, onChange, ...props }: AutoCompleteMonitorsProps) => { const { t } = useTranslation(); const [monitorsFilter, setMonitorsFilter] = useState(''); const debouncedMonitorsFilter = useDebouncedValue(monitorsFilter, 500); const { data: monitorsOptions, fetchNextPage } = useMonitorsList({ filter: debouncedMonitorsFilter }); const selectedValues = useMemo(() => new Set(value.map((item) => item.value)), [value]); return ( fetchNextPage()} onBlur={onBlur} onChange={onChange} renderItem={({ label, value, ...props }) => ( )} /> ); }; export default memo(AutoCompleteMonitors);