File tree Expand file tree Collapse file tree 4 files changed +32
-11
lines changed
Expand file tree Collapse file tree 4 files changed +32
-11
lines changed Original file line number Diff line number Diff line change @@ -29,6 +29,10 @@ import { generateCreativeWorkflowName } from '@/stores/workflows/registry/utils'
2929
3030const logger = createLogger ( 'FolderItem' )
3131
32+ const EMPTY_DRAG_IMAGE = new Image ( 1 , 1 )
33+ EMPTY_DRAG_IMAGE . src =
34+ 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=='
35+
3236interface FolderItemProps {
3337 folder : FolderTreeNode
3438 level : number
@@ -150,6 +154,10 @@ export function FolderItem({
150154 return
151155 }
152156
157+ if ( EMPTY_DRAG_IMAGE . complete ) {
158+ e . dataTransfer . setDragImage ( EMPTY_DRAG_IMAGE , 0 , 0 )
159+ }
160+
153161 e . dataTransfer . setData ( 'folder-id' , folder . id )
154162 e . dataTransfer . effectAllowed = 'move'
155163 onDragStartProp ?.( )
Original file line number Diff line number Diff line change @@ -24,6 +24,10 @@ import { useFolderStore } from '@/stores/folders/store'
2424import { useWorkflowRegistry } from '@/stores/workflows/registry/store'
2525import type { WorkflowMetadata } from '@/stores/workflows/registry/types'
2626
27+ const EMPTY_DRAG_IMAGE = new Image ( 1 , 1 )
28+ EMPTY_DRAG_IMAGE . src =
29+ 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=='
30+
2731interface WorkflowItemProps {
2832 workflow : WorkflowMetadata
2933 active : boolean
@@ -227,6 +231,10 @@ export function WorkflowItem({
227231 return
228232 }
229233
234+ if ( EMPTY_DRAG_IMAGE . complete ) {
235+ e . dataTransfer . setDragImage ( EMPTY_DRAG_IMAGE , 0 , 0 )
236+ }
237+
230238 const currentSelection = useFolderStore . getState ( ) . selectedWorkflows
231239 const isCurrentlySelected = currentSelection . has ( workflow . id )
232240 const workflowIds =
Original file line number Diff line number Diff line change @@ -30,10 +30,10 @@ function DropIndicatorLine({ show, level = 0 }: { show: boolean; level?: number
3030 if ( ! show ) return null
3131 return (
3232 < div
33- className = 'pointer-events-none absolute left -0 right -0 z-20 flex items-center'
33+ className = 'pointer-events-none absolute right -0 left -0 z-20 flex items-center'
3434 style = { { paddingLeft : `${ level * TREE_SPACING . INDENT_PER_LEVEL } px` } }
3535 >
36- < div className = 'h-[2px] flex-1 rounded-full bg-gray-400/60 ' />
36+ < div className = 'h-[2px] flex-1 rounded-full bg-[#33b4ff]/70 ' />
3737 </ div >
3838 )
3939}
@@ -228,7 +228,7 @@ export function WorkflowList({
228228 < div
229229 className = { clsx (
230230 'pointer-events-none absolute inset-0 z-10 rounded-[4px] transition-opacity duration-75' ,
231- showInside && isDragging ? 'bg-gray-400/20 opacity-100' : 'opacity-0'
231+ showInside && isDragging ? 'bg-[#33b4ff1a] opacity-100' : 'opacity-0'
232232 ) }
233233 />
234234 < div
@@ -324,7 +324,7 @@ export function WorkflowList({
324324 < div
325325 className = { clsx (
326326 'pointer-events-none absolute inset-0 z-10 rounded-[4px] transition-opacity duration-75' ,
327- showRootInside && isDragging ? 'bg-gray-400/20 opacity-100' : 'opacity-0'
327+ showRootInside && isDragging ? 'bg-[#33b4ff1a] opacity-100' : 'opacity-0'
328328 ) }
329329 />
330330 < div className = 'space-y-[2px]' >
Original file line number Diff line number Diff line change @@ -423,7 +423,6 @@ export function useDragDrop() {
423423 const position = calculateDropPosition ( e , e . currentTarget )
424424 setNormalizedDropIndicator ( { targetId : folderId , position, folderId : parentFolderId } )
425425 } else {
426- // Cross-container: highlight this folder (drop into it)
427426 setNormalizedDropIndicator ( {
428427 targetId : folderId ,
429428 position : 'inside' ,
@@ -432,12 +431,18 @@ export function useDragDrop() {
432431 setHoverFolderId ( folderId )
433432 }
434433 } else {
435- setNormalizedDropIndicator ( {
436- targetId : folderId ,
437- position : 'inside' ,
438- folderId : parentFolderId ,
439- } )
440- setHoverFolderId ( folderId )
434+ const isSameParent = draggedSourceFolderRef . current === parentFolderId
435+ if ( isSameParent ) {
436+ const position = calculateDropPosition ( e , e . currentTarget )
437+ setNormalizedDropIndicator ( { targetId : folderId , position, folderId : parentFolderId } )
438+ } else {
439+ setNormalizedDropIndicator ( {
440+ targetId : folderId ,
441+ position : 'inside' ,
442+ folderId : parentFolderId ,
443+ } )
444+ setHoverFolderId ( folderId )
445+ }
441446 }
442447 } ,
443448 onDragLeave : ( e : React . DragEvent < HTMLElement > ) => {
You can’t perform that action at this time.
0 commit comments