UNPKG

mobile-more

Version:

基于 antd-mobile v5 扩展移动端 UI 组件

135 lines (134 loc) 5.55 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _react = _interopRequireWildcard(require("react")); var _ut = require("ut2"); var _classnames = _interopRequireDefault(require("classnames")); var _rcHooks = require("rc-hooks"); var _FormItem = _interopRequireDefault(require("../FormItem")); var _AutoCompleteInput = _interopRequireDefault(require("./AutoCompleteInput")); var _BizConfigProvider = require("../../BizConfigProvider"); var _config = require("../../../config"); var _excluded = ["options", "filterOption", "hideMaskOnEmpty", "onMaskClick", "mask", "maskProps", "popupBodyStyle", "destroyOnClose", "clearable", "placeholder", "disabledWhiteSpace", "maxLength", "readOnly", "inputProps", "className", "disabled", "required"]; var prefixCls = "".concat(_config.formItemPrefixClass, "-auto-complete"); var BizFormItemAutoComplete = function BizFormItemAutoComplete(props) { var _useConfig = (0, _BizConfigProvider.useConfig)(), locale = _useConfig.locale; var options = props.options, filterOption = props.filterOption, hideMaskOnEmpty = props.hideMaskOnEmpty, onMaskClick = props.onMaskClick, mask = props.mask, maskProps = props.maskProps, popupBodyStyle = props.popupBodyStyle, destroyOnClose = props.destroyOnClose, clearable = props.clearable, _props$placeholder = props.placeholder, placeholder = _props$placeholder === void 0 ? locale.form.common.inputPlaceholder : _props$placeholder, disabledWhiteSpace = props.disabledWhiteSpace, maxLength = props.maxLength, readOnly = props.readOnly, inputProps = props.inputProps, className = props.className, disabled = props.disabled, required = props.required, restProps = (0, _objectWithoutProperties2.default)(props, _excluded); var wrapperRef = (0, _react.useRef)(null); var _useSetState = (0, _rcHooks.useSetState)({ focus: false, width: 0, top: 0 }), _useSetState2 = (0, _slicedToArray2.default)(_useSetState, 2), state = _useSetState2[0], setState = _useSetState2[1]; var stateRef = (0, _rcHooks.useLatest)(state); var adjustSize = (0, _react.useCallback)(function () { if (wrapperRef.current) { var rect = wrapperRef.current.getBoundingClientRect(); setState({ width: rect.width, top: rect.height }); } }, [setState]); (0, _react.useEffect)(function () { if (state.focus) { adjustSize(); } }, [adjustSize, state.focus]); (0, _react.useEffect)(function () { if (_ut.isBrowser) { var throttleAdjustSize = (0, _ut.throttle)(function () { if (stateRef.current.focus) { adjustSize(); } }, 100); window.addEventListener('resize', throttleAdjustSize); return function () { window.removeEventListener('resize', throttleAdjustSize); }; } }, [adjustSize, stateRef]); return /*#__PURE__*/_react.default.createElement("div", { className: "".concat(prefixCls, "-wrapper"), ref: wrapperRef }, /*#__PURE__*/_react.default.createElement(_FormItem.default, (0, _extends2.default)({ disabled: disabled, required: required, arrow: false, arrowIcon: false, rules: [{ required: required, message: locale.form.common.inputRequired }], className: (0, _classnames.default)(prefixCls, (0, _defineProperty2.default)({}, "".concat(prefixCls, "-focus"), state.focus), className) }, restProps), /*#__PURE__*/_react.default.createElement(_AutoCompleteInput.default, (0, _extends2.default)({ options: options, filterOption: filterOption, hideMaskOnEmpty: hideMaskOnEmpty, onMaskClick: onMaskClick, mask: mask, maskProps: maskProps, clearable: clearable, placeholder: placeholder, disabledWhiteSpace: disabledWhiteSpace, maxLength: maxLength, readOnly: readOnly, popupProps: { destroyOnClose: destroyOnClose, getContainer: function getContainer() { return wrapperRef.current; }, bodyStyle: (0, _objectSpread2.default)({ width: state.width, top: state.top }, popupBodyStyle) } }, inputProps, { onFocus: function onFocus(e) { var _inputProps$onFocus; setState({ focus: true }); inputProps === null || inputProps === void 0 || (_inputProps$onFocus = inputProps.onFocus) === null || _inputProps$onFocus === void 0 || _inputProps$onFocus.call(inputProps, e); }, onBlur: function onBlur(e) { var _inputProps$onBlur; setState({ focus: false }); inputProps === null || inputProps === void 0 || (_inputProps$onBlur = inputProps.onBlur) === null || _inputProps$onBlur === void 0 || _inputProps$onBlur.call(inputProps, e); } })))); }; var _default = exports.default = BizFormItemAutoComplete;