linkmore-design
Version:
🌈 🚀lm组件库。🚀
51 lines (50 loc) • 1.97 kB
JavaScript
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
import React, { useEffect, useMemo, useRef } from 'react';
import InputSearchClose from "../components/InputSearchClose";
var FuzzySearch = function FuzzySearch(_ref) {
var instance = _ref.instance;
var inputRef = useRef(null);
var state = instance.state,
setFilterValue = instance.setFilterValue,
setSearchFilter = instance.setSearchFilter,
size = instance.size,
placeholder = instance.placeholder,
searchKey = instance.searchKey,
searchConfig = instance.searchConfig,
locale = instance.locale;
// 默认值, 不同searchKey类型时获取的方式不同
var defaultValue = useMemo(function () {
var _state$searchFilter, _state$basicFilter;
var nValue = Array.isArray(searchKey) ? (_state$searchFilter = state.searchFilter) === null || _state$searchFilter === void 0 ? void 0 : _state$searchFilter[searchKey[0]] : (_state$basicFilter = state.basicFilter) === null || _state$basicFilter === void 0 ? void 0 : _state$basicFilter[searchKey];
return nValue || '';
}, [state.basicFilter, state.searchFilter, searchKey]);
var onSearch = function onSearch(val) {
var isFuzzy = Array.isArray(searchKey);
var item = _objectSpread(_objectSpread({}, searchConfig), {}, {
field: searchKey
});
if (isFuzzy) {
setSearchFilter(val);
} else {
setFilterValue(val, item);
}
};
useEffect(function () {
if (!defaultValue) {
inputRef.current.setValue('');
} else {
inputRef.current.setValue(defaultValue);
}
}, [state.basicFilter, state.searchFilter]);
return /*#__PURE__*/React.createElement("div", {
className: "lm_filter_search"
}, /*#__PURE__*/React.createElement(InputSearchClose, {
ref: inputRef,
allowClear: true,
defaultValue: defaultValue,
size: size,
placeholder: placeholder || locale.placeholder,
onSearch: onSearch
}));
};
export default FuzzySearch;