mobile-more
Version:
基于 antd-mobile v5 扩展移动端 UI 组件
46 lines • 1.87 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
var _excluded = ["options", "mapKeys", "multiple", "radioMode", "defaultValue"];
import { Selector } from 'antd-mobile';
import { useControllableValue } from 'rc-hooks';
import React from 'react';
import { isArray, isUndefined } from 'ut2';
import transformKeys from "../utils/transformKeys";
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 = _objectWithoutProperties(props, _excluded);
var _useControllableValue = useControllableValue(props),
_useControllableValue2 = _slicedToArray(_useControllableValue, 2),
state = _useControllableValue2[0],
setState = _useControllableValue2[1];
var options = React.useMemo(function () {
if (mapKeys) {
return transformKeys(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.createElement(Selector, _extends({
options: options,
multiple: multiple
}, restProps, {
value: isArray(state) ? state : !isUndefined(state) ? [state] : [],
onChange: handleChange
}));
}
export default SuperSelector;