All files / src/px-tree index.js

70% Statements 7/10
50% Branches 1/2
40% Functions 2/5
70% Lines 7/10
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48                    1x 1x       1x                       1x   1x   1x   1x                            
import React from 'react';
import classnames from 'classnames';
import stylesheet from './style.scss';
import TreeNode from './px-tree-node';
 
/**
 * px-tree component
 */
 export default class Tree extends React.Component {
   constructor(props){
     super(props);
     this.state = {
       selectedNode: null
     };
 
     this.handleClick = this.handleClick.bind(this);
   }
 
   handleClick(node){
     this.setState({selectedNode: node});
   }
 
  render(){
    const {
      style,
      items,
      children
    } = this.props;
 
    const {selectedNode} = this.state;
 
    const baseClasses = classnames('px-tree');
 
    return (
      <div className={baseClasses} style={style}>
        <ul>
          {items && items.map((item, index) => <TreeNode
            onClick={(e) => {this.handleClick(e)}}
            item={item}
            isSelected={selectedNode === item}
            key={index} {...item}/>)}
        </ul>
        <style jsx>{stylesheet}</style>
      </div>
    );
  }
}