2018-08-06 10:29:12 +00:00
|
|
|
import React from 'react';
|
2018-10-16 10:19:51 +00:00
|
|
|
import PropTypes from 'prop-types';
|
2018-08-06 10:29:12 +00:00
|
|
|
import TreeNodeView from './tree-node-view';
|
|
|
|
|
2018-10-16 10:19:51 +00:00
|
|
|
const propTypes = {
|
2019-01-28 08:48:03 +00:00
|
|
|
isNodeMenuShow: PropTypes.bool.isRequired,
|
2018-10-16 10:19:51 +00:00
|
|
|
treeData: PropTypes.object.isRequired,
|
2019-01-28 08:48:03 +00:00
|
|
|
currentPath: PropTypes.string.isRequired,
|
|
|
|
onMenuItemClick: PropTypes.func,
|
2018-10-16 10:19:51 +00:00
|
|
|
onNodeClick: PropTypes.func.isRequired,
|
2019-01-28 08:48:03 +00:00
|
|
|
onNodeExpanded: PropTypes.func.isRequired,
|
|
|
|
onNodeCollapse: PropTypes.func.isRequired,
|
2018-10-16 10:19:51 +00:00
|
|
|
};
|
|
|
|
|
2019-01-28 08:48:03 +00:00
|
|
|
const PADDING_LEFT = 12;
|
|
|
|
|
|
|
|
class TreeView extends React.Component {
|
2018-08-06 10:29:12 +00:00
|
|
|
|
2019-01-28 08:48:03 +00:00
|
|
|
constructor(props) {
|
|
|
|
super(props);
|
|
|
|
this.state = {
|
|
|
|
isItemFreezed: false,
|
|
|
|
};
|
2018-08-06 10:29:12 +00:00
|
|
|
}
|
|
|
|
|
2019-01-28 08:48:03 +00:00
|
|
|
onNodeDragStart = (e, node) => {
|
|
|
|
// todo
|
2018-08-06 10:29:12 +00:00
|
|
|
}
|
|
|
|
|
2019-01-28 08:48:03 +00:00
|
|
|
onFreezedItem = () => {
|
|
|
|
this.setState({isItemFreezed: true});
|
2018-08-22 08:39:42 +00:00
|
|
|
}
|
|
|
|
|
2019-01-28 08:48:03 +00:00
|
|
|
onUnFreezedItem = () => {
|
|
|
|
this.setState({isItemFreezed: false});
|
2018-08-22 08:39:42 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
render() {
|
|
|
|
return (
|
|
|
|
<div className="tree-view tree">
|
2019-01-28 08:48:03 +00:00
|
|
|
<TreeNodeView
|
2018-08-22 08:39:42 +00:00
|
|
|
node={this.props.treeData.root}
|
2018-11-22 03:26:00 +00:00
|
|
|
currentPath={this.props.currentPath}
|
2019-01-28 08:48:03 +00:00
|
|
|
paddingLeft={PADDING_LEFT}
|
|
|
|
isNodeMenuShow={this.props.isNodeMenuShow}
|
|
|
|
isItemFreezed={this.state.isItemFreezed}
|
|
|
|
onNodeClick={this.props.onNodeClick}
|
|
|
|
onMenuItemClick={this.props.onMenuItemClick}
|
|
|
|
onNodeExpanded={this.props.onNodeExpanded}
|
|
|
|
onNodeCollapse={this.props.onNodeCollapse}
|
|
|
|
onNodeDragStart={this.onNodeDragStart}
|
|
|
|
onFreezedItem={this.onFreezedItem}
|
|
|
|
onUnFreezedItem={this.onUnFreezedItem}
|
2018-08-22 08:39:42 +00:00
|
|
|
/>
|
|
|
|
</div>
|
|
|
|
);
|
2018-08-06 10:29:12 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-10-16 10:19:51 +00:00
|
|
|
TreeView.propTypes = propTypes;
|
|
|
|
|
2018-08-06 10:29:12 +00:00
|
|
|
export default TreeView;
|