This commit is contained in:
asp_ly 2024-12-14 15:14:35 +08:00
parent a89f4773ab
commit 13b20224f0

View File

@ -354,6 +354,69 @@ const WorkflowDesign: React.FC = () => {
}; };
document.addEventListener('click', handleClickOutside); document.addEventListener('click', handleClickOutside);
}); });
// 添加边的右键菜单
graph.on('edge:contextmenu', ({cell, view, e}) => {
e.preventDefault();
graph.cleanSelection();
graph.select(cell);
const dropdownContainer = document.createElement('div');
dropdownContainer.style.position = 'absolute';
dropdownContainer.style.left = `${e.clientX}px`;
dropdownContainer.style.top = `${e.clientY}px`;
document.body.appendChild(dropdownContainer);
const root = createRoot(dropdownContainer);
let isOpen = true;
const closeMenu = () => {
isOpen = false;
root.render(
<Dropdown menu={{ items }} open={false} onOpenChange={(open) => {
if (!open) {
setTimeout(() => {
root.unmount();
document.body.removeChild(dropdownContainer);
}, 100);
}
}}>
<div />
</Dropdown>
);
};
const items = [
{
key: '1',
label: '删除',
onClick: () => {
closeMenu();
Modal.confirm({
title: '确认删除',
content: '确定要删除该连接线吗?',
onOk: () => {
cell.remove();
}
});
}
}
];
root.render(
<Dropdown menu={{ items }} open={isOpen}>
<div />
</Dropdown>
);
const handleClickOutside = (e: MouseEvent) => {
if (!dropdownContainer.contains(e.target as Node)) {
closeMenu();
document.removeEventListener('click', handleClickOutside);
}
};
document.addEventListener('click', handleClickOutside);
});
}; };
// 处理复制操作 // 处理复制操作