UNPKG

acud

Version:

acg react 组件库

59 lines • 2.42 kB
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)); })))); });