test-nut-ui
Version:
<p align="center"> <img alt="logo" src="https://img11.360buyimg.com/imagetools/jfs/t1/211965/25/7152/22022/61b16785E433119bb/aa41d7a9f7e823f3.png" width="150" style="margin-bottom: 10px;"> </p>
135 lines (134 loc) • 6.33 kB
JavaScript
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
import _defineProperty from "@babel/runtime/helpers/defineProperty";
var _excluded = ["children", "className", "style", "checked", "defaultChecked", "shape", "value", "icon", "activeIcon", "onChange"], _excluded2 = ["labelPosition", "size", "disabled"];
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), true).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 React__default, { useContext } from "react";
import classNames from "classnames";
import RadioGroup from "./RadioGroup.js";
import { C as ComponentDefaults } from "./typings.js";
import { u as usePropsValue } from "./use-props-value.js";
import { G as Gr, P as Pr } from "./index.js";
var RadioContext = React__default.createContext(null);
var defaultProps = _objectSpread(_objectSpread({}, ComponentDefaults), {}, {
disabled: false,
shape: "round",
value: "",
labelPosition: "right",
icon: null,
activeIcon: null,
size: "middle",
onChange: function onChange(checked) {
}
});
var Radio = function Radio2(props) {
var classPrefix = "nut-radio";
var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props), children = _defaultProps$props.children, className = _defaultProps$props.className, style = _defaultProps$props.style, checked = _defaultProps$props.checked, defaultChecked = _defaultProps$props.defaultChecked, shape = _defaultProps$props.shape, value = _defaultProps$props.value, icon = _defaultProps$props.icon, activeIcon = _defaultProps$props.activeIcon, onChange2 = _defaultProps$props.onChange, others = _objectWithoutProperties(_defaultProps$props, _excluded);
var labelPosition = others.labelPosition, size = others.size, disabled = others.disabled, rest = _objectWithoutProperties(others, _excluded2);
var _usePropsValue = usePropsValue({
value: checked,
defaultValue: defaultChecked,
finalValue: false,
onChange: onChange2
}), _usePropsValue2 = _slicedToArray(_usePropsValue, 2), checkedStatement = _usePropsValue2[0], setCheckedStatement = _usePropsValue2[1];
var context = useContext(RadioContext);
if (context) {
checkedStatement = context.value === value;
if (labelPosition === "right" && context.labelPosition !== void 0) {
labelPosition = context.labelPosition;
}
if (context.size !== void 0) {
size = context.size;
}
if (context.disabled !== void 0) {
disabled = context.disabled;
}
setCheckedStatement = function setCheckedStatement2(value2) {
if (value2) {
context.check(props.value === void 0 ? "" : props.value);
} else {
context.uncheck();
}
};
}
var renderLabel = function renderLabel2() {
return React__default.createElement("div", {
className: classNames("".concat(classPrefix, "__label"), _defineProperty({}, "".concat(classPrefix, "__label--disabled"), disabled))
}, children);
};
var renderButton = function renderButton2() {
var _classNames2;
return React__default.createElement("div", {
className: classNames("".concat(classPrefix, "__button"), (_classNames2 = {}, _defineProperty(_classNames2, "".concat(classPrefix, "__button--active"), checkedStatement), _defineProperty(_classNames2, "".concat(classPrefix, "__button--disabled"), disabled), _classNames2))
}, children);
};
var color = function color2() {
var _ref;
return _ref = {}, _defineProperty(_ref, "".concat(classPrefix, "__icon--disable"), disabled), _defineProperty(_ref, "".concat(classPrefix, "__icon"), checkedStatement), _defineProperty(_ref, "".concat(classPrefix, "__icon--unchecked"), !checkedStatement), _ref;
};
var renderIcon = function renderIcon2() {
var icon2 = props.icon, activeIcon2 = props.activeIcon;
var iconSize = size === "small" ? 16 : 20;
if (checkedStatement) {
return React__default.isValidElement(activeIcon2) ? React__default.cloneElement(activeIcon2, _objectSpread(_objectSpread({}, activeIcon2.props), {}, {
className: classNames(color())
})) : React__default.createElement(Gr, {
className: classNames(color()),
size: iconSize
});
}
return React__default.isValidElement(icon2) ? React__default.cloneElement(icon2, _objectSpread(_objectSpread({}, icon2.props), {}, {
className: classNames(color())
})) : React__default.createElement(Pr, {
className: classNames(color()),
size: iconSize
});
};
var reverse = labelPosition === "left";
var renderRadioItem = function renderRadioItem2() {
if (shape === "button") {
return renderButton();
}
if (reverse) {
return React__default.createElement(React__default.Fragment, null, renderLabel(), renderIcon());
}
return React__default.createElement(React__default.Fragment, null, renderIcon(), renderLabel());
};
var handleClick = function handleClick2(e) {
if (disabled || checkedStatement)
return;
setCheckedStatement(!checkedStatement);
};
return React__default.createElement("div", _objectSpread({
className: "".concat(classPrefix, " ").concat(className, " ").concat(reverse ? "".concat(classPrefix, "--reverse") : "", " ").concat(classPrefix, "--").concat(size),
style,
onClick: handleClick
}, rest), renderRadioItem());
};
Radio.defaultProps = defaultProps;
Radio.displayName = "NutRadio";
Radio.Group = RadioGroup;
export {
Radio as R,
RadioContext as a
};