diff --git a/package.json b/package.json index 25a35ee..3545f45 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-org-tree", - "version": "0.2.1", + "version": "0.2.2", "description": "a simple organization tree component based on react", "main": "dist/bundle.js", "files": [ diff --git a/src/org_tree.js b/src/org_tree.js index ea50e1d..448fda1 100644 --- a/src/org_tree.js +++ b/src/org_tree.js @@ -43,7 +43,10 @@ export const renderBtn = (data, prop ) => { return React.createElement('span', { className: cls.join(' '), - onClick: (e) => typeof onExpand === 'function' && onExpand(e, data) + onClick: (e) => { + e.stopPropagation(); + typeof onExpand === 'function' && onExpand(e, data); + } }); }; @@ -52,6 +55,7 @@ export const renderLabel = (data, prop) => { const node = prop.node; const label = data[node.label]; const renderContent = prop.renderContent; + const onClick = prop.onClick; const childNodes = []; if (typeof renderContent === 'function') { @@ -78,9 +82,10 @@ export const renderLabel = (data, prop) => { return React.createElement('div', { className: 'org-tree-node-label', + onClick: (e) => typeof onClick === 'function' && onClick(e, data) }, [React.createElement('div', { className: cls.join(' '), - style: { width: labelWidth }, + style: { width: labelWidth } }, childNodes)]); }; diff --git a/src/org_tree.jsx b/src/org_tree.jsx index 6771afb..6d22e5c 100644 --- a/src/org_tree.jsx +++ b/src/org_tree.jsx @@ -63,7 +63,7 @@ class OrgTree extends Component { } render() { - const { horizontal, node, data } = this.props; + const { horizontal, node, data, onClick } = this.props; return
this.handleExpand(e, nodeData)} + onClick={(e, nodeData)=> onClick && onClick(e, nodeData)} {...this.props} />
@@ -87,7 +88,8 @@ OrgTree.propTypes = { expandAll: PropTypes.bool, renderContent: PropTypes.func, labelWidth: PropTypes.number, - labelClassName: PropTypes.string + labelClassName: PropTypes.string, + onClick: PropTypes.func } OrgTree.defaultProps = {