Skip to content

Commit df54029

Browse files
committed
updated to use brand tertiary color, allow worfklows to be dropped above/below folders at the same level
1 parent 2ffc55b commit df54029

File tree

4 files changed

+32
-11
lines changed

4 files changed

+32
-11
lines changed

apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/workflow-list/components/folder-item/folder-item.tsx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ import { generateCreativeWorkflowName } from '@/stores/workflows/registry/utils'
2929

3030
const 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+
3236
interface 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?.()

apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/workflow-list/components/workflow-item/workflow-item.tsx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ import { useFolderStore } from '@/stores/folders/store'
2424
import { useWorkflowRegistry } from '@/stores/workflows/registry/store'
2525
import 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+
2731
interface 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 =

apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/workflow-list/workflow-list.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff 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]'>

apps/sim/app/workspace/[workspaceId]/w/components/sidebar/hooks/use-drag-drop.ts

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff 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>) => {

0 commit comments

Comments
 (0)