UNPKG

zp-bee

Version:

zp-bee,是一款基于 Dumi,由 React + TypeScript 开发的组件库 🎉。

120 lines (96 loc) 4.14 kB
"use strict"; 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 = _interopRequireDefault(require("react")); var _classnames = _interopRequireDefault(require("classnames")); var _useMergedState3 = _interopRequireDefault(require("rc-util/lib/hooks/useMergedState")); var _radio = _interopRequireDefault(require("./radio")); var _beeConfig = require("../bee-config"); var _context = require("./context"); var RadioGroup = /*#__PURE__*/_react.default.forwardRef(function (props, ref) { var _React$useContext = _react.default.useContext(_beeConfig.ConfigContext), getPrefixCls = _React$useContext.getPrefixCls, direction = _React$useContext.direction; 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 customizePrefixCls = props.prefixCls, _props$className = props.className, className = _props$className === void 0 ? '' : _props$className, options = props.options, optionType = props.optionType, _props$buttonStyle = props.buttonStyle, buttonStyle = _props$buttonStyle === void 0 ? 'outline' : _props$buttonStyle, disabled = props.disabled, children = props.children, 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.default.createElement(_radio.default, { key: option, prefixCls: optionsPrefixCls, disabled: disabled, value: option, checked: value === option }, option); } // 此处类型自动推导为 { label: string value: string } return /*#__PURE__*/_react.default.createElement(_radio.default, { 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 classString = (0, _classnames.default)(groupPrefixCls, "".concat(groupPrefixCls, "-").concat(buttonStyle), (0, _defineProperty2.default)({}, "".concat(groupPrefixCls, "-rtl"), direction === 'rtl'), className); return /*#__PURE__*/_react.default.createElement("div", { className: classString, style: style, onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, id: id, ref: ref }, childrenToRender); }; return /*#__PURE__*/_react.default.createElement(_context.RadioGroupContextProvider, { value: { onChange: onRadioChange, value: value, disabled: props.disabled, name: props.name } }, renderGroup()); }); var _default = /*#__PURE__*/_react.default.memo(RadioGroup); exports.default = _default;