cuz
Version:
Front-end modular development kit.
74 lines (58 loc) • 1.99 kB
JavaScript
var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default')['default'];
exports.__esModule = true;
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
var _reactBootstrap = require('react-bootstrap');
function getDefaultActiveKeyFromChildren(children) {
var defaultActiveKey = undefined;
_reactBootstrap.utils.ValidComponentChildren.forEach(children, function (child, index) {
if (child.props.checked === true) {
defaultActiveKey = index;
}
});
return defaultActiveKey + 1;
}
var RadioGroup = _react2['default'].createClass({
displayName: 'RadioGroup',
propTypes: {
defaultActiveKey: _react2['default'].PropTypes.any,
children: _react2['default'].PropTypes.any,
onSelect: _react2['default'].PropTypes.func,
vertical: _react2['default'].PropTypes.bool
},
getInitialState: function getInitialState() {
var defaultKey = this.props.defaultActiveKey || getDefaultActiveKeyFromChildren(this.props.children);
return {
checkedKey: defaultKey,
vertical: false
};
},
onSelect: function onSelect(value, index) {
var onSelect = this.props.onSelect;
this.setState({
checkedKey: index
});
if (onSelect) {
onSelect(value, index);
}
},
renderRadioItem: function renderRadioItem(child, index) {
return _react.cloneElement(child, {
checked: index + 1 === this.state.checkedKey,
eventKey: index + 1,
onSelect: this.onSelect
});
},
render: function render() {
return _react2['default'].createElement(
'div',
{ className: _classnames2['default']({ 'form-inline': !this.props.vertical }) },
_reactBootstrap.utils.ValidComponentChildren.map(this.props.children, this.renderRadioItem)
);
}
});
exports['default'] = RadioGroup;
module.exports = exports['default'];
;