You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
133 lines
4.5 KiB
133 lines
4.5 KiB
"use strict";
|
|
|
|
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
|
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports["default"] = void 0;
|
|
|
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
|
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
|
|
var React = _interopRequireWildcard(require("react"));
|
|
|
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
|
|
var _useMergedState3 = _interopRequireDefault(require("rc-util/lib/hooks/useMergedState"));
|
|
|
|
var _radio = _interopRequireDefault(require("./radio"));
|
|
|
|
var _configProvider = require("../config-provider");
|
|
|
|
var _SizeContext = _interopRequireDefault(require("../config-provider/SizeContext"));
|
|
|
|
var _context = require("./context");
|
|
|
|
var RadioGroup = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
var _React$useContext = React.useContext(_configProvider.ConfigContext),
|
|
getPrefixCls = _React$useContext.getPrefixCls,
|
|
direction = _React$useContext.direction;
|
|
|
|
var size = React.useContext(_SizeContext["default"]);
|
|
|
|
var _useMergedState = (0, _useMergedState3["default"])(props.defaultValue, {
|
|
value: props.value
|
|
}),
|
|
_useMergedState2 = (0, _slicedToArray2["default"])(_useMergedState, 2),
|
|
value = _useMergedState2[0],
|
|
setValue = _useMergedState2[1];
|
|
|
|
var onRadioChange = function onRadioChange(ev) {
|
|
var lastValue = value;
|
|
var val = ev.target.value;
|
|
|
|
if (!('value' in props)) {
|
|
setValue(val);
|
|
}
|
|
|
|
var onChange = props.onChange;
|
|
|
|
if (onChange && val !== lastValue) {
|
|
onChange(ev);
|
|
}
|
|
};
|
|
|
|
var renderGroup = function renderGroup() {
|
|
var _classNames;
|
|
|
|
var customizePrefixCls = props.prefixCls,
|
|
_props$className = props.className,
|
|
className = _props$className === void 0 ? '' : _props$className,
|
|
options = props.options,
|
|
optionType = props.optionType,
|
|
buttonStyle = props.buttonStyle,
|
|
disabled = props.disabled,
|
|
children = props.children,
|
|
customizeSize = props.size,
|
|
style = props.style,
|
|
id = props.id,
|
|
onMouseEnter = props.onMouseEnter,
|
|
onMouseLeave = props.onMouseLeave;
|
|
var prefixCls = getPrefixCls('radio', customizePrefixCls);
|
|
var groupPrefixCls = "".concat(prefixCls, "-group");
|
|
var childrenToRender = children; // 如果存在 options, 优先使用
|
|
|
|
if (options && options.length > 0) {
|
|
var optionsPrefixCls = optionType === 'button' ? "".concat(prefixCls, "-button") : prefixCls;
|
|
childrenToRender = options.map(function (option) {
|
|
if (typeof option === 'string') {
|
|
// 此处类型自动推导为 string
|
|
return /*#__PURE__*/React.createElement(_radio["default"], {
|
|
ref: ref,
|
|
key: option,
|
|
prefixCls: optionsPrefixCls,
|
|
disabled: disabled,
|
|
value: option,
|
|
checked: value === option
|
|
}, option);
|
|
} // 此处类型自动推导为 { label: string value: string }
|
|
|
|
|
|
return /*#__PURE__*/React.createElement(_radio["default"], {
|
|
ref: ref,
|
|
key: "radio-group-value-options-".concat(option.value),
|
|
prefixCls: optionsPrefixCls,
|
|
disabled: option.disabled || disabled,
|
|
value: option.value,
|
|
checked: value === option.value,
|
|
style: option.style
|
|
}, option.label);
|
|
});
|
|
}
|
|
|
|
var mergedSize = customizeSize || size;
|
|
var classString = (0, _classnames["default"])(groupPrefixCls, "".concat(groupPrefixCls, "-").concat(buttonStyle), (_classNames = {}, (0, _defineProperty2["default"])(_classNames, "".concat(groupPrefixCls, "-").concat(mergedSize), mergedSize), (0, _defineProperty2["default"])(_classNames, "".concat(groupPrefixCls, "-rtl"), direction === 'rtl'), _classNames), className);
|
|
return /*#__PURE__*/React.createElement("div", {
|
|
className: classString,
|
|
style: style,
|
|
onMouseEnter: onMouseEnter,
|
|
onMouseLeave: onMouseLeave,
|
|
id: id
|
|
}, childrenToRender);
|
|
};
|
|
|
|
return /*#__PURE__*/React.createElement(_context.RadioGroupContextProvider, {
|
|
value: {
|
|
onChange: onRadioChange,
|
|
value: value,
|
|
disabled: props.disabled,
|
|
name: props.name
|
|
}
|
|
}, renderGroup());
|
|
});
|
|
RadioGroup.defaultProps = {
|
|
buttonStyle: 'outline'
|
|
};
|
|
|
|
var _default = /*#__PURE__*/React.memo(RadioGroup);
|
|
|
|
exports["default"] = _default; |