Skip to content

Commit cfb99e1

Browse files
fix(tables): auto-scroll during column drag (#6722)
* fix(tables): auto-scroll during column drag * fix(tables): keep drag targets aligned while scrolling * fix(tables): preserve column targets across drag surface * fix(tables): align workflow group drop indicators
1 parent b198080 commit cfb99e1

5 files changed

Lines changed: 279 additions & 89 deletions

File tree

apps/sim/app/workspace/[workspaceId]/tables/[tableId]/components/table-grid/headers/column-header-menu.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,8 @@ export const ColumnHeaderMenu = React.memo(function ColumnHeaderMenu({
252252

253253
return (
254254
<th
255+
data-column-drag-target={column.key}
256+
data-column-drag-group={column.workflowGroupId}
255257
className={cn(
256258
'group relative border-[var(--border)] border-r border-b bg-[var(--bg)] p-0 text-left align-middle',
257259
stickyLeft !== undefined && 'z-[11]',

apps/sim/app/workspace/[workspaceId]/tables/[tableId]/components/table-grid/headers/workflow-group-meta-cell.tsx

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,7 @@ interface WorkflowGroupMetaCellProps {
270270
size: number
271271
startColIndex: number
272272
columnName: string
273+
columnKey: string
273274
/** Underlying logical column — needed for the right-click options menu. */
274275
column?: DisplayColumn
275276
workflows?: WorkflowMetadata[]
@@ -323,6 +324,7 @@ export function WorkflowGroupMetaCell({
323324
size,
324325
startColIndex,
325326
columnName,
327+
columnKey,
326328
column,
327329
workflows,
328330
isGroupSelected,
@@ -405,13 +407,13 @@ export function WorkflowGroupMetaCell({
405407
}
406408

407409
function handleDragStart(e: React.DragEvent) {
408-
if (readOnly || !onDragStart || !columnName) {
410+
if (readOnly || !onDragStart) {
409411
e.preventDefault()
410412
return
411413
}
412414
didDragRef.current = true
413415
e.dataTransfer.effectAllowed = 'move'
414-
e.dataTransfer.setData('text/plain', columnName)
416+
e.dataTransfer.setData('text/plain', columnKey)
415417

416418
const ghost = document.createElement('div')
417419
ghost.textContent = name
@@ -422,17 +424,17 @@ export function WorkflowGroupMetaCell({
422424
e.dataTransfer.setDragImage(ghost, ghost.offsetWidth / 2, ghost.offsetHeight / 2)
423425
requestAnimationFrame(() => ghost.parentNode?.removeChild(ghost))
424426

425-
onDragStart(columnName)
427+
onDragStart(columnKey)
426428
}
427429

428430
function handleDragOver(e: React.DragEvent) {
429-
if (!onDragOver || !columnName) return
431+
if (!onDragOver) return
430432
e.preventDefault()
431433
e.dataTransfer.dropEffect = 'move'
432434
const rect = (e.currentTarget as HTMLElement).getBoundingClientRect()
433435
const midX = rect.left + rect.width / 2
434436
const side = e.clientX < midX ? 'left' : 'right'
435-
onDragOver(columnName, side)
437+
onDragOver(columnKey, side)
436438
}
437439

438440
function handleDragEnd() {
@@ -457,6 +459,8 @@ export function WorkflowGroupMetaCell({
457459
return (
458460
<th
459461
colSpan={size}
462+
data-column-drag-target={columnKey}
463+
data-column-drag-group={groupId}
460464
onClick={selectGroupAndOpenConfig}
461465
onContextMenu={handleContextMenu}
462466
draggable={isDraggable}

0 commit comments

Comments
 (0)