mobile-more
Version:
基于 antd-mobile v5 扩展移动端 UI 组件
53 lines (52 loc) • 2.3 kB
JavaScript
"use strict";
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 _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 = _interopRequireDefault(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.default.useMemo(function () {
if (mapKeys) {
return (0, _transformKeys.default)(outOptions, mapKeys);
}
return outOptions;
}, [mapKeys, outOptions]);
var handleChange = function handleChange(v, info) {
if (multiple) {
setState(v, info);
} else {
var fmtValue = v.length > 0 ? v[0] : radioMode ? state : undefined;
setState(fmtValue, info);
}
};
return /*#__PURE__*/_react.default.createElement(_antdMobile.Selector, (0, _extends2.default)({
options: options,
multiple: multiple
}, restProps, {
value: (0, _ut.isArray)(state) ? state : !(0, _ut.isUndefined)(state) ? [state] : [],
onChange: handleChange
}));
}
var _default = exports.default = SuperSelector;