# Feature AGILE-378 - Improve draggability/clickability of work package cards on Backlog and Sprints page

Project: Stream agile
Status: in specification
URL: https://community.openproject.org/work_packages/AGILE-378

## Planning

| Attribute | Value |
| --- | --- |
| Date |  |
| Priority | Medium |
| Target versions | 18.1.0 |
| Sprint |  |
| Backlog bucket | ⏭️ Next up |
| Votes |  |
| List |  |
| Roadmap |  |
| Relevance |  |

## OPEN POINTS / FEEDBACK

| ID | Subject | Status | Decision |
| --- | --- | --- | --- |
| AGILE-379 | Should we reintroduce a drag handle for work package cards? | needs clarification |  |
| AGILE-380 | How many ways of opening a work package do we need? | decided |  |
| AGILE-401 | How should work package cards be moved on touch devices? | rejected |  |

## Features and Chunks

_No work packages_

## Bugs and other work packages

_No work packages_

## Technical Details

| Attribute | Value |
| --- | --- |
| Module | Modules and project features / Backlogs, Frontend components and Primer design system |
| Feature Flag |  |
| Requires doc change | No |
| Enterprise plan | Community (COM) |

## Details

| Attribute | Value |
| --- | --- |
| Pull preview |  |
| Mockups |  |
| Accessibility | Yes |

## People

| Attribute | Value |
| --- | --- |
| Assignee | Julia Racsko |
| Accountable |  |
| Product manager |  |
| Developers | OP Dev Polaris Team, OP Dev Dream Team |
| Designer | Julia Racsko |
| Ordered by |  |
| Signed off by |  |
| Interest by |  |

## Estimates and progress

| Attribute | Value |
| --- | --- |
| PD (min) |  |
| PD (max) |  |
| Work |  |
| Labor costs |  |

## Description

**As** a Backlogs user
**I want to** see where a card can be grabbed and where it can be clicked
**so that** I can reorder and open work packages without guessing.

**Context**

The whole card is the drag surface and the click surface at once. Nothing marks a card as draggable except a `grab` cursor, which only appears under a hovering pointer. The dedicated drag handle was removed in <mention class="mention" data-id="AGILE-152" data-type="work_package" data-text="#AGILE-152">#AGILE-152</mention>.

**Acceptance criteria**

  - A card shows where its drag starts, without needing to be hovered first.
  - Opening a work package from a card does not compete with starting a drag or with selecting a batch.
  - Card text can be selected wherever no drag starts.

**Technical notes**

  - Drag surface today: the whole card, via `data-sortable-lists--item-target="preview handle"` in `Backlogs::WorkPackageCardListItemComponent`.
  - `OpenProject::Common::WorkPackageCardComponent` already accepts `show_drag_handle:`; Backlogs does not pass it.
  - `.Box-card--draggable` sets `cursor: grab` and `user-select: none`; `.Box-card--clickable` sets `cursor: pointer` and loses on source order.
  - Single click waits 250 ms to tell itself apart from double click before the details pane opens (`backlogs--work-package` controller).
  - Batch selection (<mention class="mention" data-id="AGILE-361" data-type="work_package" data-text="#AGILE-361">#AGILE-361</mention>) claims modifier-click on the same surface.
  - Drag works on touch, through the platform's own long-press lift (<mention class="mention" data-id="AGILE-291" data-type="work_package" data-text="#AGILE-291">#AGILE-291</mention> lists the supported browsers; Firefox on Android is the one exception). But there is no hover on touch, so `cursor: grab` never appears there at all — the missing signal is worse on touch, not absent.
  - The click surface that opens the details pane is whatever the three card links do not cover, so it shrinks as the subject wraps and the parent row appears.

**Open points**

  - <mention class="mention" data-id="AGILE-379" data-type="work_package" data-text="#AGILE-379">#AGILE-379</mention> — should the drag handle come back?
  - <mention class="mention" data-id="AGILE-380" data-type="work_package" data-text="#AGILE-380">#AGILE-380</mention> — how many ways of opening a work package do we need?

**Permissions and visibility considerations**

  - The drag signal is shown only where the user may actually drag: a card without `manage_sprint_items` is not a drag source.
  - A card confined to its own list may reorder but not move out (<mention class="mention" data-id="AGILE-392" data-type="work_package" data-text="#AGILE-392">#AGILE-392</mention>); the signal should not promise more than that.

**Translation considerations**

  - A handle needs an accessible label again — the `label_drag_*` keys were deleted with <mention class="mention" data-id="AGILE-152" data-type="work_package" data-text="#AGILE-152">#AGILE-152</mention>.

**Out of scope**

  - Card redesign.
  - Drag and drop outside the Backlog and Sprints page.
  - Keyboard reordering.
