UNPKG

@antmjs/vantui

Version:

一套适用于Taro3及React的vantui组件库

144 lines 6.4 kB
import _defineProperty from "@babel/runtime/helpers/defineProperty"; import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties"; import _slicedToArray from "@babel/runtime/helpers/slicedToArray"; var _excluded = ["name", "disabled", "checkedColor", "labelPosition", "labelDisabled", "shape", "iconSize", "renderIcon", "style", "className", "children"]; function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } import { View } from '@tarojs/components'; import { useState, useEffect, useCallback, useContext } from 'react'; import * as utils from '../wxs/utils'; import VanIcon from '../icon/index'; // import { canIUseModel } from '../common/version' import RadioGroupContext from '../radio-group/context'; import { isEmptyObject } from '../utils/type'; import { get } from '../default-props'; import * as computed from './wxs'; import { jsx as _jsx } from "react/jsx-runtime"; import { jsxs as _jsxs } from "react/jsx-runtime"; export function Radio(props) { var _useState = useState(get().Radio), _useState2 = _slicedToArray(_useState, 1), d = _useState2[0]; var _useState3 = useState({ value: '', direction: '', parentDisabled: false }), _useState4 = _slicedToArray(_useState3, 2), state = _useState4[0], setState = _useState4[1]; var _d$props = _objectSpread(_objectSpread({}, d), props), name = _d$props.name, _d$props$disabled = _d$props.disabled, disabled = _d$props$disabled === void 0 ? false : _d$props$disabled, checkedColor = _d$props.checkedColor, _d$props$labelPositio = _d$props.labelPosition, labelPosition = _d$props$labelPositio === void 0 ? 'right' : _d$props$labelPositio, _d$props$labelDisable = _d$props.labelDisabled, labelDisabled = _d$props$labelDisable === void 0 ? false : _d$props$labelDisable, _d$props$shape = _d$props.shape, shape = _d$props$shape === void 0 ? 'round' : _d$props$shape, _d$props$iconSize = _d$props.iconSize, iconSize = _d$props$iconSize === void 0 ? '20px' : _d$props$iconSize, renderIcon = _d$props.renderIcon, style = _d$props.style, className = _d$props.className, children = _d$props.children, others = _objectWithoutProperties(_d$props, _excluded); var parentData = useContext(RadioGroupContext); var onChange = useCallback(function (event) { var _props$onChange; if (parentData.onChange) { parentData.onChange(event); return; } props === null || props === void 0 ? void 0 : (_props$onChange = props.onChange) === null || _props$onChange === void 0 ? void 0 : _props$onChange.call(props, event); }, // eslint-disable-next-line [parentData.onChange, props.onChange]); useEffect(function () { setState(function (state) { return _objectSpread(_objectSpread({}, state), {}, { value: props.value }); }); }, [props.value]); useEffect(function () { if (!isEmptyObject(parentData)) { var value = parentData.value, direction = parentData.direction, _disabled = parentData.disabled; setState(function (state) { return _objectSpread(_objectSpread({}, state), {}, { value: value, direction: direction, parentDisabled: _disabled }); }); } }, [props.value, parentData]); var emitChange = useCallback(function (event) { onChange === null || onChange === void 0 ? void 0 : onChange(event); setState(function (state) { return _objectSpread(_objectSpread({}, state), {}, { value: event.detail }); }); }, [onChange]); var onClick = useCallback(function (event) { if (!disabled && !state.parentDisabled) { Object.defineProperty(event, 'detail', { value: name, writable: true }); emitChange(event); } }, [disabled, emitChange, name, state.parentDisabled]); var onClickLabel = useCallback(function (event) { if (!(disabled || state.parentDisabled) && !labelDisabled) { Object.defineProperty(event, 'detail', { value: name, writable: true }); emitChange(event); } }, [disabled, emitChange, labelDisabled, name, state.parentDisabled]); return /*#__PURE__*/_jsxs(View, _objectSpread(_objectSpread({ className: utils.bem('radio', [state.direction]) + " ".concat(className), style: style }, others), {}, { children: [labelPosition === 'left' && /*#__PURE__*/_jsx(View, { className: utils.bem('radio__label', [labelPosition, { disabled: disabled || state.parentDisabled }]) + ' label-class', onClick: onClickLabel, children: children }), /*#__PURE__*/_jsx(View, { className: "van-radio__icon-wrap", style: 'font-size: ' + utils.addUnit(iconSize), onClick: onClick, children: renderIcon || /*#__PURE__*/_jsx(VanIcon, { name: "success", className: utils.bem('radio__icon', [shape, { disabled: disabled || state.parentDisabled, checked: state.value === name }]) + ' icon-class', style: computed.iconStyle({ iconSize: iconSize, checkedColor: checkedColor, disabled: disabled, parentDisabled: state.parentDisabled, value: state.value, name: name }) }) }), labelPosition === 'right' && /*#__PURE__*/_jsx(View, { className: 'label-class ' + utils.bem('radio__label', [labelPosition, { disabled: disabled || state.parentDisabled }]), onClick: onClickLabel, children: children })] })); } export default Radio;