cuz
Version:
Front-end modular development kit.
83 lines (64 loc) • 2.34 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 _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
var _reactBootstrap = require('react-bootstrap');
var CategoryGroup = _react2['default'].createClass({
displayName: 'CategoryGroup',
propTypes: {
children: _react2['default'].PropTypes.any,
className: _react2['default'].PropTypes.string,
onSelect: _react2['default'].PropTypes.func,
onHover: _react2['default'].PropTypes.func,
level: _react2['default'].PropTypes.number,
activeIndex: _react2['default'].PropTypes.number,
triggerType: _react2['default'].PropTypes.string
},
getInitialState: function getInitialState() {
return {
activeIndex: this.props.activeIndex || 0,
focus: false
};
},
handleActive: function handleActive(index, focus) {
this.setState({
activeIndex: index,
focus: focus
});
},
renderItem: function renderItem(child, index) {
var _props = this.props;
var level = _props.level;
var onSelect = _props.onSelect;
var triggerType = _props.triggerType;
var onHover = _props.onHover;
return _react.cloneElement(child, {
index: index,
level: level,
triggerType: triggerType,
onSelect: onSelect,
onHover: onHover,
focus: this.state.focus,
active: this.state.activeIndex === index,
handleActive: this.handleActive
});
},
render: function render() {
var _props2 = this.props;
var className = _props2.className;
var children = _props2.children;
var props = _objectWithoutProperties(_props2, ['className', 'children']);
return _react2['default'].createElement(
'ul',
_extends({ className: _classnames2['default']('category-group', className) }, props),
_reactBootstrap.utils.ValidComponentChildren.map(this.props.children, this.renderItem)
);
}
});
exports['default'] = CategoryGroup;
module.exports = exports['default'];
;