UNPKG

es-grid-template

Version:

es-grid-template

38 lines 1.14 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import React, { useEffect, useMemo, useState } from 'react'; import debounce from 'lodash/debounce'; import { Select } from "rc-master-ui"; export function AsyncSelect({ loadOptions, debounceTimeout = 500, defaultOptions, rowData, ...props }) { const [options, setOptions] = useState(defaultOptions ?? []); const debounceFetcher = useMemo(() => { const fetchOptions = value => { if (value.trim().length === 0) { setOptions(defaultOptions ?? []); return; } if (loadOptions) { loadOptions(value, newOptions => { setOptions(newOptions); }, { rowData }); } }; return debounce(fetchOptions, debounceTimeout); }, [loadOptions, debounceTimeout]); useEffect(() => { setOptions(defaultOptions ?? []); }, [defaultOptions]); return /*#__PURE__*/React.createElement(Select, _extends({}, props, { filterOption: loadOptions ? false : props?.filterOption, onSearch: debounceFetcher, onSelect: () => setOptions(defaultOptions ?? []), options: options })); }