Skip to content

[OpenSpec] kanban-task-detail-keyboard-navigation #346

Description

@github-actions

⚠️ OpenSpec-managed issue — this content is automatically synced
from the openspec/ directory. Manual edits will be overwritten on next sync.

Artifacts

Specs

Tasks

  • 1.1 In src/views/ProjectBoard.vue, add a navigateToTask(task) method that calls this.$router.push({ name: 'TaskDetail', params: { id: this.project?.id ?? this.$route.params.id, taskId: task.id } }), mirroring ProjectList navigateToProject
  • 1.2 On the card wrapper, add role="button", tabindex="0", :aria-label="task.title", data-testid="task-card", @click, @keydown.enter, @keydown.space.prevent all invoking navigateToTask(task) — existing draggable/@dragstart/@dragend bindings unchanged. The data-testid satisfies task-collaboration.spec.ts's [data-testid="task-card"] selector without changing the card to an <a>
  • 1.3 Add a :focus-visible outline in the card's scoped <style> (var(--color-primary-element), no hardcoded color)
  • 2.1 Added a per-card "Move to…" control (NcActions with one NcActionButton per other column, :force-menu="true") in the ProjectBoard.vue card wrapper, reachable by keyboard
  • 2.2 Wired its handler to moveTask(task, status) → shared applyStatusMove which calls the existing updateTaskStatus store action (the same method the drag path uses via the refactored onDrop) — optimistic update + rollback + RBAC identical between drag and keyboard
  • 2.3 The "Move to…" wrapper is draggable="false" with @dragstart.stop, @click.stop, @keydown.enter/.space.stop so it never starts a drag or navigates to detail
  • 3.1 In openspec/specs/kanban-board.md, checked off "Board is keyboard-navigable (WCAG AA)" (line 155)
  • 4.5 Companion note: navigateToTask + data-testid="task-card" now give task-collaboration.spec.ts's taskLink selector a real target; that spec's fixture-absence guards were converted to assertions in the e2e-seed change.

Synced from openspec/changes/kanban-task-detail-keyboard-navigation by OpenSpec workflow
App: planninq

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions