linkmore-design
Version:
🌈 🚀lm组件库。🚀
89 lines (87 loc) • 3.14 kB
JavaScript
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _ahooks = require("ahooks");
var _omit = _interopRequireDefault(require("lodash/omit"));
var _pick = _interopRequireDefault(require("lodash/pick"));
var _react = _interopRequireWildcard(require("react"));
var _button = _interopRequireDefault(require("../../button"));
var _cascader = _interopRequireDefault(require("../../cascader"));
var _DelayInput = _interopRequireDefault(require("./DelayInput"));
// 重置级联弹框
const DropdownRender = props => {
const {
dom,
setSearchValue,
onCancel,
locale,
multiple,
onOk
} = props;
const inputRef = (0, _react.useRef)(null);
(0, _ahooks.useDebounceEffect)(() => {
inputRef.current?.focus?.({
cursor: 'all'
});
}, [], {
wait: 200
});
return /*#__PURE__*/_react.default.createElement("div", {
className: "filter_dropdown"
}, /*#__PURE__*/_react.default.createElement("div", {
className: "filter_header"
}, /*#__PURE__*/_react.default.createElement(_DelayInput.default, {
ref: inputRef,
onSearch: setSearchValue,
onChange: setSearchValue
})), dom, !!multiple && /*#__PURE__*/_react.default.createElement("div", {
className: "filter_footer"
}, /*#__PURE__*/_react.default.createElement("div", {
className: "footer_clear",
onClick: onCancel
}, locale.cancel), /*#__PURE__*/_react.default.createElement(_button.default, {
type: "primary",
size: "small",
onClick: onOk
}, locale.ok)));
};
const CascaderFilter = props => {
const {
value = [],
onChange,
onCancel
} = props;
const [checkedValues, setCheckedValues] = (0, _react.useState)(value);
const [searchValue, setSearchValue] = (0, _react.useState)('');
const handleChange = item => {
setCheckedValues(item);
if (!props.multiple) {
onChange?.(item);
}
};
// 确定
const onOk = () => {
const resetValue = checkedValues?.length ? checkedValues : undefined;
onChange?.(resetValue);
onCancel?.(false);
};
const dropdownRender = (0, _ahooks.useMemoizedFn)(dom => /*#__PURE__*/_react.default.createElement(DropdownRender, (0, _extends2.default)({
dom: dom,
onOk: onOk,
setSearchValue: setSearchValue
}, (0, _pick.default)(props, ['onCancel', 'locale', 'multiple']))));
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_cascader.default, (0, _extends2.default)({}, (0, _omit.default)(props, ['value', 'onChange', 'onCancel', 'children']), {
onChange: handleChange,
defaultValue: value,
showSearch: true,
searchValue: searchValue,
dropdownRender: dropdownRender
}), /*#__PURE__*/_react.default.createElement("div", null)));
};
var _default = CascaderFilter;
exports.default = _default;