MemberJunction / MemberJunction/MJ

Whiteboard is not keyboard-operable (WCAG 2.1.1) — open on next and lts/5, not a backport gap

Open
#4,338 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
TSQL
Stars
29
Forks
6
Avg merge
2d 1h
Merged PRs (30d)
323

Description

## Summary

Whiteboard keyboard operability (item 4 of the Sidecar a11y brief) has not been addressed **on any line**. It was not part of #4121, so it is not a backport gap — `next` and `lts/5` are equally affected.

Raising it because #4303 surfaced it while clearing the other findings, and an item that is out of scope on every PR that touches the area tends to stay that way.

## What #4121 did and did not do

#4121 changed how whiteboard shortcuts are *scoped*: the eleven bare single-character tool shortcuts (`v h p r s t m w i c e`) previously listened on `document` and fired anywhere on the page, failing WCAG 2.1.4 (Character Key Shortcuts). They are now gated on focus being inside the whiteboard host, along with undo/redo, `Escape` and `Delete`/`Backspace`. `EnableGlobalShortcuts` restores the old behaviour for surfaces that accept the exposure.

That fixes the *interference* problem — a whiteboard no longer swallows keystrokes meant for the rest of the page.

It does not make the whiteboard itself **operable** by keyboard. Selecting, moving, resizing and connecting shapes still require a pointer. That is WCAG 2.1.1 (Keyboard), a separate success criterion from the one #4121 addressed, and a more substantial piece of work than scoping a keydown handler.

## Why this is worth stating explicitly

Reading the #4121 and #4303 changesets, it is easy to conclude the whiteboard's keyboard story is now handled. It is not — the shortcuts were made *safe*, not *sufficient*. Anyone assembling a conformance statement from the changelog would get this wrong.

## What is needed

A scoped design for keyboard operation of the canvas: focus model for shapes, selection and traversal order, move/resize commands, and how connections are made without a pointer. Probably its own brief rather than an incremental fix.

Sizing this is the first task; I am not proposing an implementation here.

## Lines affected

Both. Fix on `next` first; backport to `lts/5` only if Sidecar's conformance statement requires it, per the usual line rules.

Follow-up to #4303. Related: #4121. Sidecar a11y brief item 4.

Contributor guide

Open the contributing guide

Research direction

Start with Sidecar a11y brief item 4 and review the changesets for #4121 and #4303 to understand the existing shortcut scope. Produce a design brief covering shape focus, selection and traversal order, keyboard move/resize commands, and pointer-free connections; completion means the scope and sizing are agreed before implementation.

Written by the indexing model from the issue text.

Assessment

Domain
accessibility, frontend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.