linkmore-design
Version:
π πlmη»δ»ΆεΊγπ
74 lines (72 loc) β’ 2.91 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
import cn from 'classnames';
import React, { memo, useMemo, useRef, useState } from 'react';
import LocaleReceiver from "../../locale-provider/LocaleReceiver";
import { getIsHas } from "../utils";
import GhostRender from "./GhostRender";
import GhostText from "./GhostText";
import PopDropDown from "./PopDropDown";
var Control = /*#__PURE__*/memo(function (props) {
var popupClassName = props.popupClassName,
dropdownRender = props.dropdownRender,
type = props.type,
value = props.value,
onChange = props.onChange,
className = props.className,
size = props.size,
style = props.style;
var ghostRef = useRef(null);
var _useState = useState(false),
_useState2 = _slicedToArray(_useState, 2),
visible = _useState2[0],
setVisible = _useState2[1];
// ζ―ε¦ζηιεΌ/ζ―ε¦ε€δΊηιηΆζ
var active = useMemo(function () {
return getIsHas(value);
}, [value]);
var overlayClassName = cn("filter_dropdown_container_".concat(type), popupClassName);
var onOpenChange = function onOpenChange(v) {
var _props$componentProps, _props$componentProps2;
setVisible(v);
(_props$componentProps = props.componentProps) === null || _props$componentProps === void 0 ? void 0 : (_props$componentProps2 = _props$componentProps.onVisibleChange) === null || _props$componentProps2 === void 0 ? void 0 : _props$componentProps2.call(_props$componentProps, v);
// v && ghostRef.current?.focus?.()
};
var handleChange = function handleChange(val) {
onChange === null || onChange === void 0 ? void 0 : onChange(val);
setVisible(false);
};
var onCancel = function onCancel() {
return setVisible(false);
};
var overlayRender = function overlayRender() {
return (dropdownRender === null || dropdownRender === void 0 ? void 0 : dropdownRender(props)) || /*#__PURE__*/React.createElement(GhostRender, _extends({}, props, {
ref: ghostRef,
onChange: handleChange,
onCancel: onCancel,
visible: visible
}));
};
return /*#__PURE__*/React.createElement(PopDropDown, {
overlayClassName: overlayClassName,
dropdownRender: overlayRender,
open: visible,
onOpenChange: onOpenChange
}, /*#__PURE__*/React.createElement("div", {
className: cn('lm_filter_basic_item', className, size, {
expand: visible,
active: active
}),
style: style
}, /*#__PURE__*/React.createElement(GhostText, props)));
});
var LocalcControl = function LocalcControl(props) {
return /*#__PURE__*/React.createElement(LocaleReceiver, {
componentName: "FilterWidget"
}, function (contextLocale) {
return /*#__PURE__*/React.createElement(Control, _extends({}, props, {
locale: contextLocale
}));
});
};
export default /*#__PURE__*/memo(LocalcControl);