UNPKG

es-grid-template

Version:

es-grid-template

40 lines 1.21 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import React, { useEffect, useMemo, useState } from 'react'; import debounce from 'lodash/debounce'; import { TableSelect } from "rc-master-ui"; export function AsyncTableSelect({ loadOptions, debounceTimeout = 500, defaultOptions, columns, 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); }, [debounceTimeout, loadOptions, defaultOptions, rowData]); useEffect(() => { setOptions(defaultOptions ?? []); }, [defaultOptions]); return /*#__PURE__*/React.createElement(TableSelect, _extends({}, props, { filterOption: loadOptions ? false : props?.filterOption, onSearch: debounceFetcher, onSelect: () => setOptions(defaultOptions ?? []), options: options, columns: columns })); }