import React, { useState } from 'react'; import { Icon, CircularLoader, Button, TextEllipsis } from 'UI'; import cn from 'classnames'; import stl from './widgetAutoComplete.module.css'; import { debounce } from 'App/utils'; const WidgetAutoComplete = props => { const { className, placeholder = "Search for Resource", itemStyle = {}, filterParams = {} } = props; const [selected, setSelected] = useState(null) const [focused, setFocused] = useState(props.autoFocus) const fetchOptions = debounce(props.fetchOptions, 300) const handleChange = ({ target: { name, value } }) => { fetchOptions({ ...filterParams, q: value }); } const onSelected = opt => { setSelected(opt); props.onSelect(opt); } const onItemClick = (e, { name, value }) => { props.onSelect({ url: value }); setSelected(value); } const onClearHandle = (e) => { e.preventDefault(); e.stopPropagation(); setSelected(null); props.onSelect({}); } return (
!focused && setFocused(true)} > { !focused && selected && (
{selected.value}
)} { (focused || !selected) && ( setFocused(true)} onBlur={() => setFocused(false)} /> )}
{ props.loading && }
{ focused && props.options.length > 0 && (
{ props.options.map(opt => (
onSelected(opt)} style={itemStyle} > {opt.text || opt.value}
)) }
)}
) } export default WidgetAutoComplete