diff --git a/app/w/[id]/workflow.tsx b/app/w/[id]/workflow.tsx index aea6e87f2e..7e439eab4a 100644 --- a/app/w/[id]/workflow.tsx +++ b/app/w/[id]/workflow.tsx @@ -118,6 +118,7 @@ function WorkflowCanvas() { type: 'workflowBlock', position: block.position, selected: block.id === selectedBlockId, + dragHandle: '.workflow-drag-handle', data: { type: block.type, config: getBlock(block.type), @@ -323,6 +324,7 @@ function WorkflowCanvas() { selectNodesOnDrag={false} nodesConnectable={true} nodesDraggable={true} + draggable={false} > diff --git a/app/w/components/workflow-block/components/connection-block/connection-block.tsx b/app/w/components/workflow-block/components/connection-block/connection-block.tsx index 228961f0c4..17185c3a5d 100644 --- a/app/w/components/workflow-block/components/connection-block/connection-block.tsx +++ b/app/w/components/workflow-block/components/connection-block/connection-block.tsx @@ -11,12 +11,31 @@ export function ConnectionBlock({ blockId }: ConnectionBlockProps) { if (!hasIncomingConnections) return null + const handleDragStart = (e: React.DragEvent, connection: any) => { + e.stopPropagation() // Prevent parent drag handlers from firing + e.dataTransfer.setData( + 'application/json', + JSON.stringify({ + type: 'connection', + connectionData: { + id: connection.id, + name: connection.name, + outputType: connection.outputType, + sourceBlockId: blockId, + }, + }) + ) + e.dataTransfer.effectAllowed = 'copy' + } + return (
{incomingConnections.map((connection) => ( handleDragStart(e, connection)} + className="group flex items-center rounded-lg border bg-card p-2 shadow-sm transition-colors hover:bg-accent/50 cursor-grab active:cursor-grabbing w-fit" >
diff --git a/app/w/components/workflow-block/workflow-block.tsx b/app/w/components/workflow-block/workflow-block.tsx index f053ef6878..09eaa6c1b3 100644 --- a/app/w/components/workflow-block/workflow-block.tsx +++ b/app/w/components/workflow-block/workflow-block.tsx @@ -51,7 +51,7 @@ export function WorkflowBlock({ const subBlockRows = groupSubBlocks(workflow.subBlocks) return ( - + {selected && } @@ -59,15 +59,16 @@ export function WorkflowBlock({ type="target" position={Position.Top} className={cn( - '!w-3 !h-3', + '!w-3.5 !h-3.5', '!bg-white !rounded-full !border !border-gray-200', '!opacity-0 group-hover:!opacity-100', '!transition-opacity !duration-200 !cursor-crosshair', - 'hover:!border-blue-500' + 'hover:!border-blue-500', + '!top-[-7px]' )} /> -
+