Context
This issue tracks the keyboard-accessible alternative to the pointer-only drag-and-drop interaction introduced in PR #133 for moving downloads between packages in the Packages view.
Related PR: #133
Related review comment: #133 (comment)
Requested by: @mpiton
Problem
The current PackageDownloadRow component uses native HTML5 drag-and-drop (onDragStart) as the only way to move a download from one package to another. This interaction is pointer-only and is not accessible to keyboard-only or assistive-technology users.
The drag shortcut has been intentionally deferred — all other package-level actions (expand/collapse, rename, folder, password, auto-extract, priority, pause-all, start-all, delete) remain keyboard-navigable — but the move action needs a proper alternative interaction model.
Proposed interaction model
- Select source row — add a "Move" button (or keyboard-triggered action) on each
PackageDownloadRow that marks the download as "selected for move".
- Target menu on each package row — when a download is selected for move, surface a "Move to this package…" action on each
PackageRow (e.g., via a context menu or an inline button that appears only in move-selection mode).
- ARIA semantics — annotate the source row with
aria-grabbed="true" (or equivalent role/state), and annotate target rows with aria-dropeffect="move" while a move is in progress.
- Live region — add an
aria-live="polite" region to announce move start, success, and failure outcomes to screen reader users.
Acceptance criteria
Context
This issue tracks the keyboard-accessible alternative to the pointer-only drag-and-drop interaction introduced in PR #133 for moving downloads between packages in the Packages view.
Related PR: #133
Related review comment: #133 (comment)
Requested by: @mpiton
Problem
The current
PackageDownloadRowcomponent uses native HTML5 drag-and-drop (onDragStart) as the only way to move a download from one package to another. This interaction is pointer-only and is not accessible to keyboard-only or assistive-technology users.The drag shortcut has been intentionally deferred — all other package-level actions (expand/collapse, rename, folder, password, auto-extract, priority, pause-all, start-all, delete) remain keyboard-navigable — but the move action needs a proper alternative interaction model.
Proposed interaction model
PackageDownloadRowthat marks the download as "selected for move".PackageRow(e.g., via a context menu or an inline button that appears only in move-selection mode).aria-grabbed="true"(or equivalent role/state), and annotate target rows witharia-dropeffect="move"while a move is in progress.aria-live="polite"region to announce move start, success, and failure outcomes to screen reader users.Acceptance criteria