mobile-more
Version:
基于 antd-mobile v5 扩展移动端 UI 组件
68 lines (67 loc) • 2.65 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 _antdMobile = require("antd-mobile");
var _rcHooks = require("rc-hooks");
var React = _interopRequireWildcard(require("react"));
var _ut = require("ut2");
var _transformKeys = _interopRequireDefault(require("../utils/transformKeys"));
var _excluded = ["options", "mapKeys", "multiple", "radioMode", "defaultValue"];
function SuperSelector(props) {
var _props$options = props.options,
outOptions = _props$options === void 0 ? [] : _props$options,
mapKeys = props.mapKeys,
_props$multiple = props.multiple,
multiple = _props$multiple === void 0 ? false : _props$multiple,
_props$radioMode = props.radioMode,
radioMode = _props$radioMode === void 0 ? true : _props$radioMode,
defaultValue = props.defaultValue,
restProps = (0, _objectWithoutProperties2.default)(props, _excluded);
var _useControllableValue = (0, _rcHooks.useControllableValue)(props),
_useControllableValue2 = (0, _slicedToArray2.default)(_useControllableValue, 2),
state = _useControllableValue2[0],
setState = _useControllableValue2[1];
var options = React.useMemo(function () {
if (mapKeys) {
return (0, _transformKeys.default)(outOptions, mapKeys);
}
return outOptions;
}, [mapKeys, outOptions]);
var handleChange = function handleChange(v, _ref) {
var items = _ref.items;
if (multiple) {
setState(v, {
items: items
});
} else {
var fmtValue = v.length > 0 ? v[0] : radioMode ? state : undefined;
setState(fmtValue, {
items: items
});
}
};
var realValue = React.useMemo(function () {
if ((0, _ut.isArray)(state)) {
return state;
}
if (typeof state !== 'undefined') {
return [state];
}
return [];
}, [state]);
return /*#__PURE__*/React.createElement(_antdMobile.Selector, (0, _objectSpread2.default)((0, _objectSpread2.default)({
options: options,
multiple: multiple
}, restProps), {}, {
value: realValue,
onChange: handleChange
}));
}
var _default = exports.default = SuperSelector;