mirror of
https://github.com/harvard-edge/cs249r_book.git
synced 2026-07-20 04:45:11 -05:00
[PR #1820] [MERGED] fix(staffml): drop misleading role=button from MetaTooltip and stop nesting it inside a real button #33380
Closed
opened 2026-07-13 12:01:28 -05:00 by GiteaMirror
·
0 comments
No Branch/Tag Specified
dev
audit/mlperf-edu-readiness
feat/mlperf-edu-precondition
gh-pages
vol1/all-final
main
vol1/appendices-final
vol1/ch16-final
vol1/ch15-final
vol1/ch14-final
vol1/ch13-final
vol1/ch11-final
vol1/ch12-final
vol1/ch10-final
vol1/ch9-final
vol1/ch8-final
vol1/ch7-final
vol1/ch6-final
vol1/ch5-final
vol1/ch4-final
vol1/ch3-final
vol1/ch2-final
vol1/frontmater-final
kai/fixing-profile-setting-and-map
chore/staffml-ci-path
fix/callout-flow
vol1/ch10-pass4
vol1/ch9-pass4
vol1/ch8-pass4
vol1/ch7-pass4
vol1/ch6-pass4
vol1/ch5-pass4
vol1/apC-pass3
vol1/ch4-pass4
vol1/ch3-pass4
vol1/ch2-pass4
vol1/ch1-pass4
vol1/frontmatter
vol1/apE-pass3
vol1/apD-pass3
fmt-fix
vol1/ch14-pass3
kai/clarify-community-map-totals
vol1/ch13-pass3
vol1/ch12-pass3
vol1/ch11-pass3
vol1/ch10-pass3
vol1/ch7-pass3
vol1/ch9-pass3
vol1/ch8-pass3
vol1/ch6-pass3
vol1/ch5-pass3
vol1/ch4-pass3
vol1/ch3-pass3
vol1/ch2-pass3
vol1/ch1-pass3
vol1/ch6-pass2
vol1/ch5-pass2
vol1/ch4-pass2
vol1/ch3-pass2
vol1/ch2-pass2
fix/badge-fixes
chore/precommit-cleanup
cleanup/book-validate-paths
fix/staffml-trigger-on-workflow-edits
fix/staffml-reusable-concurrency
feat/container-preflight-urls
instructors-v0.1.1
vol1-pr1957-merged
vol2-v0.2.1
vol1-v0.7.1
vol1-v0.7.0+vol2-v0.2.0
slides-v0.1.0
vol2-v0.2.0
vol1-v0.7.0
tinytorch-v0.1.13
mlsysim-v0.2.0
vol2-v0.1.2
vol1-v0.6.2
tinytorch-v0.1.12
vol2-v0.1.1
vol1-v0.6.1
mlsysim-v0.1.3
vol2-v0.1.0
vol1-v0.6.0
mlsysim-v0.1.2
staffml-v0.1.1
tinytorch-v0.1.11
labs-v0.1.0
kits-v0.1.0
slides-latest
instructors-v0.1.0
staffml-v0.1.0
mlsysim-v0.1.1
mlsysim-v0.1.0
tinytorch-v0.1.10
build-verified-windows-v1
tinytorch-v0.1.9
tinytorch-v0.1.8
mit-submission-v1
tinytorch-v0.1.7
tinytorch-v0.1.6
tinytorch-v0.1.5
tinytorch-slides-v0.1.0
tinytorch-v0.1.3
tinytorch-v0.1.4
tinytorch-v0.1.2
tinytorch-v0.1.1
tinytorch-v0.1.0
book-v0.5.1
tinytorch-audio-v0.1.1
tinytorch-audio-assets-v0.1
book-v0.5.0
book-v0.4.2
book-v0.4.1
book-v0.4.0
book-v0.3.0
book-v0.2.0
book-v0.1.0
Labels
Clear labels
area: book
area: collabs
area: kits
area: labs
area: socratiq
area: staffml
area: tinytorch
area: tools
area: website
bug
dependencies
format: epub
format: pdf
javascript
link-health
link-rot
priority-high
pull-request
staffml
type: bug
type: citation
type: code
type: errata
type: improvement
type: new
type: question
vault-sli
Mirrored from GitHub Pull Request
No labels
pull-request
Milestone
No items
No Milestone
Projects
Clear projects
No projects
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/cs249r_book#33380
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
📋 Pull Request Information
Original PR: https://github.com/harvard-edge/cs249r_book/pull/1820
Author: @farhan523
Created: 5/29/2026
Status: ✅ Merged
Merged: 6/2/2026
Merged by: @profvjreddi
Base:
dev← Head:fix/metatooltip-role-button-and-nested📝 Commits (1)
4b56e5bfix(staffml): drop misleading role=button from MetaTooltip and stop nesting it inside a real button📊 Changes
3 files changed (+77 additions, -4 deletions)
View changed files
➕
interviews/staffml/src/__tests__/meta-tooltip.test.tsx(+67 -0)📝
interviews/staffml/src/components/MetaTooltip.tsx(+9 -3)📝
interviews/staffml/src/components/vault/TopicDetail.tsx(+1 -1)📄 Description
Summary
Two related a11y issues in
MetaTooltip/LevelBadge:role=\"button\"with no handler.MetaTooltip's trigger declaredrole=\"button\"with noonClick/onKeyDown— screen readers announced "button" but Enter/Space did nothing.LevelBadgewraps its badge inMetaTooltipby default, andvault/TopicDetailrendersLevelBadgeinside a real<button>for the drill-by-difficulty rows. The result was<button><span role=\"button\" tabIndex={0}>…</span></button>— invalid HTML and a double tab stop for one logical control.Changes
MetaTooltip.tsx: droprole=\"button\". KeeptabIndex={0}so keyboard users can still focus the trigger and the tooltip appears viagroup-focus-within. Keeparia-describedbylinking to therole=\"tooltip\"body.vault/TopicDetail.tsx: passwithTooltip={false}on the nestedLevelBadge(thewithTooltipprop already exists onLevelBadgefor exactly this case).role=\"button\", trigger stays focusable,aria-describedbystill resolves to arole=\"tooltip\"body, andLevelBadgewithwithTooltip={false}skips the wrapper.Test plan
npx vitest run→ 42/42 passing (was 37/37 on dev — the 5 new tests cover the above)npx tsc --noEmit→ clean/?topic=...— each row should be one tab stop (the parent<button>), not twoLevelBadgeoutside any button (e.g. on the practice page header) — tooltip still appears; screen reader announces the tooltip text viaaria-describedbyinstead of "button"🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.