cuz
Version:
Front-end modular development kit.
86 lines (64 loc) • 2.38 kB
JavaScript
var _objectWithoutProperties = require('babel-runtime/helpers/object-without-properties')['default'];
var _extends = require('babel-runtime/helpers/extends')['default'];
var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default')['default'];
exports.__esModule = true;
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactBootstrap = require('react-bootstrap');
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
function getActiveStepFromChildren(children) {
var activeStep = 0;
_reactBootstrap.utils.ValidComponentChildren.forEach(children, function (child, index) {
if (child.props.active === true) {
activeStep = index;
}
});
return activeStep;
}
var Steps = _react2['default'].createClass({
displayName: 'Steps',
propTypes: {
children: _react2['default'].PropTypes.any,
onSelect: _react2['default'].PropTypes.func,
defaultActiveStep: _react2['default'].PropTypes.number,
activeStep: _react2['default'].PropTypes.number,
className: _react2['default'].PropTypes.string
},
getInitialState: function getInitialState() {
var activeStep = this.props.defaultActiveStep || getActiveStepFromChildren(this.props.children);
return {
activeStep: activeStep
};
},
onSelect: function onSelect(step) {
var onSelect = this.props.onSelect;
this.setState({
activeStep: step
});
if (onSelect) onSelect(step);
},
renderStep: function renderStep(child, index) {
var activeStep = this.props.activeStep || this.state.activeStep;
return _react.cloneElement(child, {
active: index + 1 === activeStep,
index: child.props.index || index + 1,
onSelect: this.onSelect
});
},
render: function render() {
var _props = this.props;
var children = _props.children;
var className = _props.className;
var props = _objectWithoutProperties(_props, ['children', 'className']);
return _react2['default'].createElement(
'ul',
_extends({}, props, {
className: _classnames2['default']('wizard-steps', 'form-wizard', 'clearfix', className) }),
_reactBootstrap.utils.ValidComponentChildren.map(children, this.renderStep)
);
}
});
exports['default'] = Steps;
module.exports = exports['default'];
;