refactor(waf): 移除规则画布右上角删除按钮

删除改为右键菜单与键盘快捷键。
This commit is contained in:
ryan
2026-07-19 11:48:54 +08:00
parent 8f3ff59567
commit 53d9572508
@@ -28,7 +28,6 @@ import {
import { Trash2 } from 'lucide-react'; import { Trash2 } from 'lucide-react';
import '@xyflow/react/dist/style.css'; import '@xyflow/react/dist/style.css';
import { Button } from '@/components/ui/button';
import type { WAFRuleEdge, WAFRuleGraph } from '@/lib/services/openflare'; import type { WAFRuleEdge, WAFRuleGraph } from '@/lib/services/openflare';
import { cn } from '@/lib/utils'; import { cn } from '@/lib/utils';
@@ -251,22 +250,6 @@ export function RuleFlowCanvas({
[addNodeAt], [addNodeAt],
); );
const selectedNode = graph.nodes.find((node) => node.id === selectedId);
const canDeleteNode = Boolean(
selectedNode && !['start', 'allow'].includes(selectedNode.type),
);
const canDeleteEdge = Boolean(
selectedEdgeId && graph.edges.some((edge) => edge.id === selectedEdgeId),
);
const canDelete = canDeleteNode || canDeleteEdge;
const deleteLabel = canDeleteEdge
? '删除连线'
: canDeleteNode
? '删除节点'
: selectedNode
? '系统节点不可删除'
: '请选择可删除项';
const deleteNodeById = useCallback( const deleteNodeById = useCallback(
(nodeId: string) => { (nodeId: string) => {
const target = graph.nodes.find((node) => node.id === nodeId); const target = graph.nodes.find((node) => node.id === nodeId);
@@ -303,21 +286,6 @@ export function RuleFlowCanvas({
[graph, onGraphChange, onSelectEdge, selectedEdgeId, setEdges], [graph, onGraphChange, onSelectEdge, selectedEdgeId, setEdges],
); );
const deleteSelection = useCallback(() => {
if (canDeleteEdge && selectedEdgeId) {
deleteEdgeById(selectedEdgeId);
return;
}
if (canDeleteNode && selectedId) deleteNodeById(selectedId);
}, [
canDeleteEdge,
canDeleteNode,
deleteEdgeById,
deleteNodeById,
selectedEdgeId,
selectedId,
]);
const openNodeContextMenu = useCallback( const openNodeContextMenu = useCallback(
(event: ReactMouseEvent, node: FlowNode) => { (event: ReactMouseEvent, node: FlowNode) => {
event.preventDefault(); event.preventDefault();
@@ -378,17 +346,6 @@ export function RuleFlowCanvas({
<div className='absolute left-4 top-4 z-10 rounded-lg border bg-background/95 p-2 shadow-sm backdrop-blur'> <div className='absolute left-4 top-4 z-10 rounded-lg border bg-background/95 p-2 shadow-sm backdrop-blur'>
<NodeLibrary /> <NodeLibrary />
</div> </div>
<div className='absolute right-4 top-4 z-10'>
<Button
variant='destructive'
size='sm'
disabled={!canDelete}
onClick={deleteSelection}
>
<Trash2 data-icon='inline-start' />
{deleteLabel}
</Button>
</div>
<ReactFlow <ReactFlow
nodes={nodes} nodes={nodes}
edges={edges} edges={edges}