mobile-more
Version:
基于 antd-mobile v5 扩展移动端 UI 组件
93 lines (92 loc) • 4.19 kB
JavaScript
"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 _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
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 _FormItem = _interopRequireDefault(require("../FormItem"));
var _transform = require("../utils/transform");
var _SuperPicker = _interopRequireDefault(require("./SuperPicker"));
var _BizConfigProvider = require("../../BizConfigProvider");
var _getDefaultPopupTitle = _interopRequireDefault(require("../utils/getDefaultPopupTitle"));
var _utils = require("../../../utils/utils");
var _excluded = ["placeholder", "mapKeys", "renderCurrentValue", "separator", "columns", "title", "pickerProps", "names", "name", "readOnly", "required", "disabled", "onClick", "transform"];
var BizFormItemPicker = function BizFormItemPicker(props) {
var _useConfig = (0, _BizConfigProvider.useConfig)(),
locale = _useConfig.locale;
var _props$placeholder = props.placeholder,
placeholder = _props$placeholder === void 0 ? locale.form.common.selectPlaceholder : _props$placeholder,
mapKeys = props.mapKeys,
renderCurrentValue = props.renderCurrentValue,
separator = props.separator,
_props$columns = props.columns,
columns = _props$columns === void 0 ? [] : _props$columns,
_props$title = props.title,
title = _props$title === void 0 ? (0, _getDefaultPopupTitle.default)(props, locale) : _props$title,
pickerProps = props.pickerProps,
names = props.names,
name = props.name,
readOnly = props.readOnly,
required = props.required,
disabled = props.disabled,
onClick = props.onClick,
outTransform = props.transform,
restProps = (0, _objectWithoutProperties2.default)(props, _excluded);
var _React$useState = React.useState(false),
_React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
visible = _React$useState2[0],
setVisible = _React$useState2[1];
var currentName = React.useMemo(function () {
return name || ((0, _ut.isArray)(names) && names.length > 0 ? (0, _utils.getTimestampString)('__item_picker') : name);
}, [name, names]);
var handleClick = React.useCallback(function (e, widgetRef) {
if (!disabled && !readOnly) {
setVisible(true);
}
onClick === null || onClick === void 0 ? void 0 : onClick(e, widgetRef);
}, [disabled, onClick, readOnly]);
var transform = React.useCallback(function (value, currentLevelValues) {
if (typeof outTransform === 'function') {
return outTransform(value);
}
return (0, _transform.transformValueToNames)(value, currentLevelValues, names);
}, [names, outTransform]);
return /*#__PURE__*/React.createElement(_FormItem.default, (0, _objectSpread2.default)((0, _objectSpread2.default)({
name: currentName,
rules: [{
validator: function validator(rule, value) {
if (required) {
if ((0, _ut.isArray)(value) && value.length <= 0 || typeof value === 'undefined') {
return Promise.reject(locale.form.common.selectRequired);
}
}
return Promise.resolve();
}
}],
required: required,
disabled: disabled,
onClick: handleClick,
transform: transform
}, restProps), {}, {
trigger: "onConfirm",
validateTrigger: "onConfirm"
}), /*#__PURE__*/React.createElement(_SuperPicker.default, (0, _objectSpread2.default)({
title: title,
visible: visible,
onClose: function onClose() {
return setVisible(false);
},
placeholder: placeholder,
mapKeys: mapKeys,
renderCurrentValue: renderCurrentValue,
separator: separator,
columns: columns
}, pickerProps)));
};
var _default = exports.default = BizFormItemPicker;