feat(documents): keyboard-accessible range zoom for timeline #479

Open
opened 2026-05-08 10:12:06 +02:00 by marcel · 0 comments
Owner

Context

Spun out of PR #478 (issue #385). Leonie's review flagged that the drag-to-zoom gesture on the timeline density widget has no keyboard equivalent, which is a WCAG 2.1.1 (Keyboard) failure: keyboard users can only single-click a bar (filter only) and cannot trigger the range-zoom flow that mouse and touch users get.

"Drag is genuinely hard to keyboard-equivalent, but the feature it enables (range zoom) cannot be keyboard-only-blocked."
— Leonie, on PR #478

Acceptance criteria

  • Pressing Shift+Click (or Shift+Enter / Shift+Space on a focused bar) extends the selection from the previously focused/clicked bar to the current one and commits zoom + filter atomically (the same payload as triggerSearchWithZoom).
  • The gesture is announced to assistive technology via the existing timeline_dragging_aria_live polite live region (or an equivalent confirmation message).
  • An onboarding affordance — a title tooltip or a one-time hint — explains the keyboard shortcut so it's discoverable.
  • The existing single-click (filter only) and pointer-drag (range zoom) flows are unchanged.

Out of scope

  • Touch-equivalent gesture (already covered by drag).
  • Reorganising the bar layout for tablet (covered by the separate tablet-breakpoint follow-up).

Test plan

  • Component unit test: pressing Shift+Click on a second bar after a normal click on a first bar emits both zoomFrom/zoomTo and from/to.
  • Component unit test: Shift+Enter on a focused bar after a previous focus extends and commits.
  • E2E (deferred to the Playwright follow-up): full URL update verification.
## Context Spun out of [PR #478](http://heim-nas:3005/marcel/familienarchiv/pulls/478) (issue #385). Leonie's review flagged that the drag-to-zoom gesture on the timeline density widget has no keyboard equivalent, which is a WCAG 2.1.1 (Keyboard) failure: keyboard users can only single-click a bar (filter only) and cannot trigger the range-zoom flow that mouse and touch users get. > "Drag is genuinely hard to keyboard-equivalent, but the *feature it enables* (range zoom) cannot be keyboard-only-blocked." > — Leonie, on PR #478 ## Acceptance criteria - [ ] Pressing **Shift+Click** (or **Shift+Enter** / **Shift+Space** on a focused bar) extends the selection from the previously focused/clicked bar to the current one and commits zoom + filter atomically (the same payload as `triggerSearchWithZoom`). - [ ] The gesture is announced to assistive technology via the existing `timeline_dragging_aria_live` polite live region (or an equivalent confirmation message). - [ ] An onboarding affordance — a `title` tooltip or a one-time hint — explains the keyboard shortcut so it's discoverable. - [ ] The existing single-click (filter only) and pointer-drag (range zoom) flows are unchanged. ## Out of scope - Touch-equivalent gesture (already covered by drag). - Reorganising the bar layout for tablet (covered by the separate tablet-breakpoint follow-up). ## Test plan - Component unit test: pressing Shift+Click on a second bar after a normal click on a first bar emits both `zoomFrom`/`zoomTo` and `from`/`to`. - Component unit test: Shift+Enter on a focused bar after a previous focus extends and commits. - E2E (deferred to the Playwright follow-up): full URL update verification. ## Related - Parent issue: #385 - Parent PR: #478 (deferred this scope per Felix's discussion with the user) - Sibling follow-up: `test(documents): timeline density Playwright coverage`
marcel added the featureui labels 2026-05-08 10:12:27 +02:00
Sign in to join this conversation.
No Label feature ui
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: marcel/familienarchiv#479