Skip to content

Feature/drag and drop reordering#883

Open
waldemar-p wants to merge 5 commits into
ransome1:mainfrom
waldemar-p:feature/drag-and-drop-reordering
Open

Feature/drag and drop reordering#883
waldemar-p wants to merge 5 commits into
ransome1:mainfrom
waldemar-p:feature/drag-and-drop-reordering

Conversation

@waldemar-p

Copy link
Copy Markdown

I was missing drag and drop so I prepared something.

This branch introduces drag-and-drop reordering for todo items using @dnd-kit/core and @dnd-kit/sortable.

  • Adds drag handles to each row for initiating drag operations
  • Implements optimistic UI updates so reordering feels instant
  • Adds IPC communication between renderer and main process for reorderTodoLines and moveTodoLine
  • When a todo is dropped in a different group, its projects/contexts attributes are automatically updated
  • Updates DataRequest sorting to always preserve file line order
  • Adds keyboard sensor support for accessible drag-and-drop

- Add @dnd-kit dependencies for sortable drag-and-drop
- Implement drag handles and visual feedback while dragging
- Add IPC handlers for reorderTodoLines and moveTodoLine
- Implement optimistic UI updates in IpcRenderer for reorder-only changes
- Sort todos by lineNumber to preserve file order during reordering
- Add keyboard sensor support for accessibility
…rdering logic

- Add comprehensive test suite for same-group and cross-group drag operations
- Implement handleDragStart, handleDragOver, and handleDragCancel handlers
- Fix cross-group drop positioning to correctly compute target line numbers
- Add support for inserting items before/after based on drag position
- Preserve original state on drag cancel for proper rollback
- Handle edge cases with gaps in file line numbers and single-item groups
…ize hash comparison logic

- Extract replaceAttributeTag function to deduplicate project/context tag replacement logic
- Consolidate import statements from CreateTodoObjects module
- Add buildTodoHashes helper to simplify hash set creation in IpcRenderer
- Simplify moveTodoLine control flow by inverting fromLineNumber check
- Convert DragOverlayWrapper props to interface for consistency
- Remove unnecessary intermediate variable
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Backlog

Development

Successfully merging this pull request may close these issues.

1 participant