patternfly / patternfly/react-topology

Topology nodes and edges are not keyboard accessible

Open
#321 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
21
Forks
27
PR merge metrics
No merged PRs in 30d

Description

Description

Topology visualizations built with react-topology are completely inaccessible to keyboard and screen reader users. The withSelection() HOC is mouse-only — there are no keyboard event handlers, no tabIndex attributes on nodes, and no aria-label on nodes or edges.

This means:

  • Keyboard-only users cannot reach, focus, or select any node

  • Screen reader users receive no information about the graph structure

  • Arrow-key navigation between connected nodes is not possible

WCAG Impact

  • 1.1.1 Non-text Content — Nodes/edges convey information with no text alternative

  • 2.1.1 Keyboard — All functionality must be operable via keyboard

  • Section 508 302.7 — Limited manipulation (mouse-only interactions)

Context

We maintain a large application (ansible/ansible-ui) with workflow topology views that use react-topology. We currently have no way to make these views accessible without building entirely custom keyboard navigation on top of the library.

Expected Behavior

  • Nodes should be focusable via Tab key

  • Enter/Space should activate node selection

  • Arrow keys should navigate between connected nodes

  • Nodes and edges should support aria-label for screen reader announcements

  • withSelection() should respond to keyboard events, not just mouse clicks

Current Behavior

  • No nodes are focusable

  • No keyboard event handlers exist

  • withSelection() only binds mouse click handlers

  • Screen readers announce nothing about the graph


Jira Issue: PF-4548

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the withSelection() HOC and the react-topology node and edge rendering paths. Trace how mouse selection is currently bound, then determine where focus, keyboard navigation, and ARIA labels belong. Done means nodes are tabbable and selectable with Enter/Space, connected nodes support arrow-key navigation, and nodes and edges can announce labels to screen readers.

Written by the indexing model from the issue text.

Assessment

Tech stack
react, typescript
Domain
accessibility, frontend
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.