优化交互

This commit is contained in:
limil 2026-01-29 09:22:01 +08:00
parent 9c869d7bb4
commit 63ab2d2f03
3 changed files with 27 additions and 3 deletions

View File

@ -10,6 +10,8 @@ import {
NodeTypes, NodeTypes,
NodeChange, NodeChange,
OnEdgesChange, OnEdgesChange,
ConnectionMode,
MarkerType,
OnConnect, OnConnect,
} from '@xyflow/react'; } from '@xyflow/react';
import '@xyflow/react/dist/style.css'; import '@xyflow/react/dist/style.css';
@ -102,8 +104,13 @@ function FlowContent(): ReactNode {
onNodesChange={onNodesChange} onNodesChange={onNodesChange}
onEdgesChange={onEdgesChange} onEdgesChange={onEdgesChange}
onConnect={onConnect} onConnect={onConnect}
onNodeClick={onNodeClick} onNodeDoubleClick={onNodeClick}
nodeTypes={nodeTypes} nodeTypes={nodeTypes}
deleteKeyCode={["Delete"]}
defaultEdgeOptions={{
animated: true,
markerEnd: { type: MarkerType.ArrowClosed }
}}
fitView fitView
> >
<Background /> <Background />

View File

@ -13,6 +13,20 @@
box-shadow: 0 4px 12px rgba(22, 119, 255, 0.3); box-shadow: 0 4px 12px rgba(22, 119, 255, 0.3);
} }
.custom-node .node-handle {
opacity: 0;
transition: opacity 0.3s ease;
}
.custom-node:hover .node-handle {
opacity: 1;
}
.custom-node:hover .node-handle,
.node-handle.react-flow__handle-connecting {
opacity: 1;
}
.node-header { .node-header {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;

View File

@ -28,8 +28,11 @@ export default function CustomNode({
)} )}
</div> </div>
<Handle type="target" position={Position.Top} /> {[Position.Top, Position.Bottom, Position.Right, Position.Left].map((position) => (
<Handle type="source" position={Position.Bottom} /> (["target", "source"] as const).map((type) => (
<Handle type={type} position={position} id={position} key={position} className="node-handle"/>
))
))}
</div> </div>
); );
} }