import React, { useRef, useEffect } from "react";
|
import { Button } from 'antd';
|
|
//右键菜单组件
|
export const RightMenu = ((props) => {
|
|
useEffect(() => {
|
if (props.isReady) {
|
const graph = props.graphRef.current;
|
|
graph.on('blank:contextmenu', ({ e, x, y }) => {
|
// 阻止浏览器的默认行为
|
e.preventDefault();
|
closeContextMenu()
|
openContextMenu(e.clientX, e.clientY, graph);
|
});
|
|
graph.on('cell:mouseup blank:mouseup', closeContextMenu);
|
document.body.addEventListener('click', closeContextMenu);
|
}
|
})
|
|
})
|
|
function openContextMenu(x, y, graph) {
|
// 创建你的自定义菜单元素
|
let menuElement = document.createElement('div');
|
menuElement.classList.add('my-context-menu');
|
menuElement.style.left = `${x}px`;
|
menuElement.style.top = `${y}px`;
|
|
let dataList = ['选择', '移动']
|
dataList.forEach((val) => {
|
// 在这里填充你的菜单内容,例如
|
let menuItem = document.createElement('div');
|
menuItem.classList.add("right-menu-button")
|
menuItem.textContent = val;
|
menuItem.onclick = (e) => {
|
// 在这里处理菜单项点击事件,例如你可以根据点击的菜单项进行不同的操作
|
if (e.target.textContent == "选择") {
|
graph.disablePanning();//禁用移动
|
graph.enableRubberband();//开启框选
|
} else if (e.target.textContent == "移动") {
|
graph.enablePanning();//开启移动
|
graph.disableRubberband();//禁用框选
|
}
|
};
|
menuElement.append(menuItem);
|
})
|
|
|
// 最后,将菜单添加到文档中
|
document.body.append(menuElement);
|
}
|
|
function closeContextMenu() {
|
let menuElement = document.querySelector('.my-context-menu');
|
if (menuElement) {
|
document.body.removeChild(menuElement);
|
}
|
}
|