feat(flowEditor): 添加节点和边的右键菜单功能
- 新增节点右键菜单和边右键菜单组件 - 实现节点和边的删除、编辑、复制等功能 - 优化画布点击事件,关闭未选中的菜单- 调整菜单显示位置,确保在画布区域内显示master
parent
10af5b0d78
commit
54235f0f8e
@ -0,0 +1,36 @@
|
||||
import React from 'react';
|
||||
import { Menu } from '@arco-design/web-react';
|
||||
import { Edge } from '@xyflow/react';
|
||||
|
||||
interface EdgeContextMenuProps {
|
||||
edge: Edge;
|
||||
onDelete?: (edge: Edge) => void;
|
||||
onEdit?: (edge: Edge) => void;
|
||||
}
|
||||
|
||||
const EdgeContextMenu: React.FC<EdgeContextMenuProps> = ({
|
||||
edge,
|
||||
onDelete,
|
||||
onEdit
|
||||
}) => {
|
||||
const handleDelete = () => {
|
||||
onDelete && onDelete(edge);
|
||||
};
|
||||
|
||||
const handleEdit = () => {
|
||||
onEdit && onEdit(edge);
|
||||
};
|
||||
|
||||
return (
|
||||
<Menu>
|
||||
<Menu.Item key="edit" onClick={handleEdit}>
|
||||
编辑连接
|
||||
</Menu.Item>
|
||||
<Menu.Item key="delete" onClick={handleDelete}>
|
||||
删除连接
|
||||
</Menu.Item>
|
||||
</Menu>
|
||||
);
|
||||
};
|
||||
|
||||
export default EdgeContextMenu;
|
||||
@ -0,0 +1,51 @@
|
||||
import React from 'react';
|
||||
import { Menu, Dropdown } from '@arco-design/web-react';
|
||||
import { Node } from '@xyflow/react';
|
||||
|
||||
interface NodeContextMenuProps {
|
||||
node: Node;
|
||||
onRename?: (node: Node) => void;
|
||||
onDelete?: (node: Node) => void;
|
||||
onCopy?: (node: Node) => void;
|
||||
onEdit?: (node: Node) => void;
|
||||
}
|
||||
|
||||
const NodeContextMenu: React.FC<NodeContextMenuProps> = ({
|
||||
node,
|
||||
onDelete,
|
||||
onCopy,
|
||||
onEdit
|
||||
}) => {
|
||||
const handleDelete = () => {
|
||||
onDelete && onDelete(node);
|
||||
};
|
||||
|
||||
const handleCopy = () => {
|
||||
onCopy && onCopy(node);
|
||||
};
|
||||
|
||||
const handleEdit = () => {
|
||||
onEdit && onEdit(node);
|
||||
};
|
||||
|
||||
return (
|
||||
<Menu>
|
||||
<Menu.Item key="edit" onClick={handleEdit}>
|
||||
编辑节点
|
||||
</Menu.Item>
|
||||
|
||||
{(!['start', 'end'].includes(node.type)) && (
|
||||
<>
|
||||
<Menu.Item key="copy" onClick={handleCopy}>
|
||||
复制节点
|
||||
</Menu.Item>
|
||||
<Menu.Item key="delete" onClick={handleDelete}>
|
||||
删除节点
|
||||
</Menu.Item>
|
||||
</>
|
||||
)}
|
||||
</Menu>
|
||||
);
|
||||
};
|
||||
|
||||
export default NodeContextMenu;
|
||||
Loading…
Reference in New Issue