linkmore-design
Version:
🌈 🚀lm组件库。🚀
116 lines (113 loc) • 3.65 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 _react = _interopRequireWildcard(require("react"));
var _button = _interopRequireDefault(require("../../button"));
var _cascader = _interopRequireDefault(require("../../cascader"));
var _InputSearchClose = _interopRequireDefault(require("./InputSearchClose"));
var _hooks = require("../hooks");
// 重置级联弹框
const DropdownRender = ({
dom,
instance,
item,
setOptions,
checkedValues
}) => {
const {
setFilterValue,
visible,
setVisible,
locale
} = instance;
const {
data: filters = []
} = item;
const inputRef = (0, _react.useRef)(null);
const delayedFn = (0, _hooks.useDelayedFn)();
const isShowFoot = (0, _react.useMemo)(() => {
return item?.props?.multiple;
}, [item]);
const handleFilter = val => {
const serachValues = filters.filter(v => v[item?.props?.fieldNames?.label || 'label']?.indexOf(val) > -1);
setOptions(serachValues);
};
// 确定
const handleSure = () => {
setFilterValue(checkedValues);
setVisible?.(false);
};
// 取消
const handleReset = () => setVisible?.(false);
(0, _react.useEffect)(() => {
if (visible) {
delayedFn(() => inputRef.current?.focus?.({
cursor: 'all'
}));
}
}, [visible]);
return /*#__PURE__*/_react.default.createElement("div", {
className: "filter_dropdown"
}, /*#__PURE__*/_react.default.createElement("div", {
className: "filter_header"
}, /*#__PURE__*/_react.default.createElement(_InputSearchClose.default, {
ref: inputRef,
onSearch: handleFilter,
onChange: handleFilter
})), dom, isShowFoot && /*#__PURE__*/_react.default.createElement("div", {
className: "filter_footer"
}, /*#__PURE__*/_react.default.createElement("div", {
className: "footer_clear",
onClick: handleReset
}, locale.cancel), /*#__PURE__*/_react.default.createElement(_button.default, {
type: "primary",
size: "small",
onClick: handleSure
}, locale.ok)));
};
const CascaderFilter = ({
instance,
item: itemProps
}) => {
const {
filterValue = [],
setFilterValue,
visible,
setVisible,
children = /*#__PURE__*/_react.default.createElement("div", null)
} = instance;
const {
data: filters = []
} = itemProps;
const [options, setOptions] = (0, _react.useState)(filters);
const [checkedValues, setCheckedValues] = (0, _react.useState)([]);
const defaultValue = (0, _react.useMemo)(() => filterValue, [filterValue]);
const onChange = item => {
setCheckedValues(item);
if (!itemProps?.props?.multiple) {
setFilterValue(item);
}
};
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_cascader.default, (0, _extends2.default)({}, itemProps.props, {
options: options,
onChange: onChange,
defaultValue: defaultValue,
open: visible,
onDropdownVisibleChange: vis => setVisible(vis),
dropdownRender: dom => /*#__PURE__*/_react.default.createElement(DropdownRender, {
dom: dom,
instance: instance,
item: itemProps,
checkedValues: checkedValues,
setCheckedValues: setCheckedValues,
setOptions: setOptions
})
}), children));
};
var _default = CascaderFilter;
exports.default = _default;