acud
Version:
acg react 组件库
59 lines • 2.42 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
import React, { Fragment, useCallback } from 'react';
import classnames from 'classnames';
import Radio from './Radio';
import Context from './context';
import { ConfigContext } from '../config-provider';
import useMergedState from '../_util/hooks/useMergedState';
export default (function (props) {
var customizePrefixCls = props.prefixCls,
_props$disabled = props.disabled,
disabled = _props$disabled === void 0 ? false : _props$disabled,
_props$optionType = props.optionType,
optionType = _props$optionType === void 0 ? 'default' : _props$optionType,
options = props.options,
children = props.children,
className = props.className,
_props$enhance = props.enhance,
enhance = _props$enhance === void 0 ? false : _props$enhance,
onChange = props.onChange;
var _useMergedState = useMergedState(props.defaultValue, {
value: props.value
}),
_useMergedState2 = _slicedToArray(_useMergedState, 2),
value = _useMergedState2[0],
setValue = _useMergedState2[1];
var handleClick = useCallback(function (e) {
var newValue = e.target.value;
if (disabled) {
return;
}
setValue(newValue);
if (onChange && value !== newValue) {
onChange(e);
}
},
// eslint-disable-next-line react-hooks/exhaustive-deps
[value, disabled, onChange]);
var Compo = optionType === 'default' ? Radio : Radio.Button;
var _React$useContext = React.useContext(ConfigContext),
getPrefixCls = _React$useContext.getPrefixCls;
var prefixCls = getPrefixCls('radio-group', customizePrefixCls);
var enhancePrefixCls = getPrefixCls('radio-group-enhance', customizePrefixCls);
var classNames = classnames(prefixCls, _defineProperty({}, enhancePrefixCls, enhance), className);
return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("div", {
className: classNames
}, /*#__PURE__*/React.createElement(Context.Provider, {
value: {
value: value,
disabled: disabled,
onChange: handleClick
}
}, !options ? children : options.map(function (option, index) {
return /*#__PURE__*/React.createElement(Compo, _extends({
key: option.value || index
}, option));
}))));
});