1 import React from 'react';
2 import classnames from 'classnames';
3 import Collapse from 'react-bootstrap/lib/Collapse.js';
5 class NavigationSideBar extends React.Component {
8 activeItemId: React.PropTypes.string.isRequired,
9 onSelect: React.PropTypes.func,
10 onToggle: React.PropTypes.func,
11 groups: React.PropTypes.array
15 let {groups, activeItemId} = this.props;
18 <div className='navigation-side-content'>
19 {groups.map(group => (
20 <div className='navigation-group' key={group.id}>
21 <div className='group-name'>{group.name}</div>
22 <div className='navigation-group-items'>
24 group.items && group.items.map(item => this.renderGroupItem(item, activeItemId))
33 renderGroupItem(item, activeItemId) {
34 let isGroup = item.items && item.items.length > 0;
36 <div className={classnames('navigation-group-item', {'selected-item': item.id === activeItemId})}>
39 className={classnames('navigation-group-item-name', {
40 'selected': item.id === activeItemId,
41 'disabled': item.disabled,
42 'bold-name': item.expanded,
45 onClick={(event) => this.handleItemClicked(event, item)}>
49 <Collapse in={item.expanded}>
51 {item.items.map(item => this.renderGroupItem(item, activeItemId))}
59 handleItemClicked(event, item) {
60 event.stopPropagation();
61 if(this.props.onToggle) {
62 this.props.onToggle(this.props.groups, item.id);
67 if(this.props.onSelect) {
68 this.props.onSelect(item);
73 export default NavigationSideBar;