shineout
Version:
Shein 前端组件库
135 lines (101 loc) • 4.28 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = void 0;
var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireDefault(require("react"));
var _classnames = _interopRequireDefault(require("classnames"));
var _component = require("../component");
var _uid = require("../utils/uid");
var _types = require("../Datum/types");
var _context = require("../Checkbox/context");
var _styles = require("../Checkbox/styles");
var _Radio = _interopRequireDefault(require("./Radio"));
var _config = require("../config");
var RadioGroup =
/*#__PURE__*/
function (_PureComponent) {
(0, _inheritsLoose2.default)(RadioGroup, _PureComponent);
function RadioGroup(props) {
var _this;
_this = _PureComponent.call(this, props) || this;
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "handleUpdate", void 0);
_this.handleClick = _this.handleClick.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
_this.handleUpdate = _this.forceUpdate.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
_this.handleRawChange = _this.handleRawChange.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
return _this;
}
var _proto = RadioGroup.prototype;
_proto.componentDidMount = function componentDidMount() {
_PureComponent.prototype.componentDidMount.call(this);
this.props.datum.subscribe(_types.CHANGE_TOPIC, this.handleUpdate);
};
_proto.componentWillUnmount = function componentWillUnmount() {
_PureComponent.prototype.componentWillUnmount.call(this);
this.props.datum.unsubscribe(_types.CHANGE_TOPIC, this.handleUpdate);
};
_proto.getContent = function getContent(d, index) {
var renderItem = this.props.renderItem;
if (typeof renderItem === 'string') {
return d[renderItem];
}
if (typeof renderItem === 'function') {
return renderItem(d, index);
}
return '';
};
_proto.handleClick = function handleClick(_val, _checked, index) {
var _this$props = this.props,
data = _this$props.data,
datum = _this$props.datum;
datum.set(data[index]);
};
_proto.handleRawChange = function handleRawChange(value) {
this.props.datum.set(value);
};
_proto.render = function render() {
var _this2 = this;
var _this$props2 = this.props,
block = _this$props2.block,
data = _this$props2.data,
datum = _this$props2.datum,
keygen = _this$props2.keygen,
children = _this$props2.children,
button = _this$props2.button,
size = _this$props2.size;
var rtl = (0, _config.isRTL)();
var className = (0, _classnames.default)((0, _styles.checkinputClass)('group', block && 'block', button && 'button', button === 'outline' && 'outline', button && size, rtl && 'rtl'), this.props.className);
if (data === undefined) {
return _react.default.createElement("div", {
className: className
}, _react.default.createElement(_context.Provider, {
value: {
onRawChange: this.handleRawChange,
checked: datum.check.bind(datum)
}
}, children));
}
return _react.default.createElement("div", {
className: className
}, data.map(function (d, i) {
return _react.default.createElement(_Radio.default, {
checked: datum.check(d),
disabled: datum.disabled(d),
key: (0, _uid.getKey)(d, keygen, i),
htmlValue: i,
index: i,
onChange: _this2.handleClick
}, _this2.getContent(d, i));
}), children);
};
return RadioGroup;
}(_component.PureComponent);
(0, _defineProperty2.default)(RadioGroup, "defaultProps", {
renderItem: function renderItem(d) {
return d;
}
});
var _default = RadioGroup;
exports.default = _default;