Grid row-click gating blocks keyboard and touch users from opening details
Nobody has claimed this yet.
- Dominant language
- C#
- Stars
- 5
- Forks
- 3
- Avg merge
- 1d 22h
- Merged PRs (30d)
- 14
Description
Background
While addressing Copilot review feedback on #584, four related comments surfaced a consistent keyboard-accessibility regression in the monitor grids. The PR intentionally gates onRowClick on _pointerActive (set only via @mousedown) so that programmatic row activation doesn't open the details panel — a good fix for the original bug, but it means keyboard and touch/pointer users now have no way to open details on those grids.
Four affected call sites, same root pattern:
| File | Lines |
|---|---|
src/dorc-web/src/components/environment-tabs/env-monitor.ts |
189 (mousedown gating), 654 (onRowClick early-return) |
src/dorc-web/src/pages/page-monitor-requests.ts |
186 (mousedown gating), 707 (onRowClick early-return) |
These need to be fixed together, not one commit per component, so they were deferred from #584 rather than partially applied.
Proposed approach
Apply the same fix to both grids:
- Broaden pointer gating — replace
@mousedownwith@pointerdown(covers mouse, touch, pen) and/or@click, so touch users on tablets/phones can also open details. - Add keyboard activation — handle
EnterandSpaceon the currently active row. The grid'sactive-item-changedstill fires on keyboard navigation; instead of discarding those events when_pointerActiveis false, treat a keyboard commit (keydownwithEnter/Space) as an explicit "open details" signal equivalent to a click. - Consider an accessible secondary affordance — an explicit details button or overflow menu item per row would remove the ambiguity entirely. Worth weighing against the UX goal of "click row = open" that drove the original change.
Acceptance criteria
- Mouse click on a row opens details (regression check — current behaviour).
- Tap on a row (touch device) opens details.
- Keyboard user navigating rows with arrow keys and pressing Enter/Space opens details.
- Programmatic
active-item-changedevents (e.g. from code that setsgrid.activeItem) do not open details — preserves the bug #584 originally fixed.
Context
- PR #584 inline threads (closed with reference to this issue):
- https://github.com/sefe/dorc/pull/584#discussion_r3101698395 (
env-monitor.ts:189) - https://github.com/sefe/dorc/pull/584#discussion_r3101698424 (
env-monitor.ts:654) - https://github.com/sefe/dorc/pull/584#discussion_r3101698458 (
page-monitor-requests.ts:186) - https://github.com/sefe/dorc/pull/584#discussion_r3101698477 (
page-monitor-requests.ts:707)
- https://github.com/sefe/dorc/pull/584#discussion_r3101698395 (
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the row handling at the cited lines in src/dorc-web/src/components/environment-tabs/env-monitor.ts and src/dorc-web/src/pages/page-monitor-requests.ts, then review the linked PR #584 discussions. Trace how pointer, keyboard, and programmatic active-item-changed events reach onRowClick. Done means mouse, touch, Enter, and Space open details while programmatic activation does not, in both grids.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- accessibility, frontend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100