ant-design/components/tree/demo/contextmenu.md

116 lines
3.0 KiB
Markdown
Raw Normal View History

# 右键菜单
2016-01-07 19:05:55 +08:00
- order: 0
右键菜单示例
2016-01-07 19:05:55 +08:00
---
````jsx
import { Tree, Tooltip } from 'antd';
import assign from 'object-assign';
const TreeNode = Tree.TreeNode;
2016-01-15 20:10:46 +08:00
import React from 'react';
2016-01-07 19:05:55 +08:00
function contains(root, n) {
let node = n;
while (node) {
if (node === root) {
return true;
}
node = node.parentNode;
}
return false;
}
const Demo = React.createClass({
propTypes: {},
componentDidMount() {
this.getContainer();
2016-01-15 20:10:46 +08:00
// console.log(ReactDOM.findDOMNode(this), this.cmContainer);
console.log(contains(ReactDOM.findDOMNode(this), this.cmContainer));
2016-01-07 19:05:55 +08:00
},
componentWillUnmount() {
if (this.cmContainer) {
ReactDOM.unmountComponentAtNode(this.cmContainer);
document.body.removeChild(this.cmContainer);
this.cmContainer = null;
}
},
onSelect(info) {
console.log('selected', info);
},
onRightClick(info) {
console.log('right click', info);
this.renderCm(info);
},
2016-01-15 20:10:46 +08:00
onMouseEnter(info) {
console.log('enter', info);
this.renderCm(info);
},
2016-01-07 19:05:55 +08:00
onMouseLeave(info) {
console.log('leave', info);
},
getContainer() {
if (!this.cmContainer) {
this.cmContainer = document.createElement('div');
document.body.appendChild(this.cmContainer);
}
return this.cmContainer;
},
renderCm(info) {
if (this.toolTip) {
ReactDOM.unmountComponentAtNode(this.cmContainer);
this.toolTip = null;
}
2016-01-15 20:10:46 +08:00
this.toolTip = (<Tooltip trigger="click" placement="bottomRight" prefixCls="rc-tree-contextmenu" defaultVisible overlay={<h4>{info.node.props.title}</h4>}>
<span></span>
2016-01-07 19:05:55 +08:00
</Tooltip>);
const container = this.getContainer();
assign(this.cmContainer.style, {
position: 'absolute',
left: info.event.pageX + 'px',
top: info.event.pageY + 'px',
});
2016-01-15 20:10:46 +08:00
ReactDOM.render(this.toolTip, container);
2016-01-07 19:05:55 +08:00
},
render() {
return (
<div>
<h2>right click contextmenu</h2>
<Tree onRightClick={this.onRightClick} onSelect={this.onSelect}
2016-01-15 20:10:46 +08:00
defaultSelectedKeys={['0-1', '0-1-1']}
2016-01-07 19:05:55 +08:00
multiple defaultExpandAll showLine>
<TreeNode title="parent 1" key="0-1">
<TreeNode title="parent 1-0" key="0-1-1">
<TreeNode title="leaf0" />
<TreeNode title="leaf1" />
<TreeNode title="leaf2" />
</TreeNode>
<TreeNode title="parent 1-1">
<TreeNode title="leaf" />
</TreeNode>
</TreeNode>
</Tree>
2016-01-15 20:10:46 +08:00
<h2>hover popup contextmenu</h2>
<Tree onMouseEnter={this.onMouseEnter} onMouseLeave={this.onMouseLeave} onSelect={this.onSelect} multiple defaultExpandAll showLine>
<TreeNode title="parent 1" key="0-1">
<TreeNode title="parent 1-0" key="0-1-1">
<TreeNode title="leaf" />
<TreeNode title="leaf" />
</TreeNode>
<TreeNode title="parent 1-1">
<TreeNode title="leaf" />
</TreeNode>
</TreeNode>
</Tree>
2016-01-07 19:05:55 +08:00
</div>
);
},
});
ReactDOM.render(<Demo />, mountNode);
````