[BUG]: Table sort headers can't be used from the keyboard and don't announce sort order
メンテナーはふだん 4 日以内に返信
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 78/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- javascript, react
- 領域
- accessibility, frontend, testing
調査の方向性
src/components/UI.jsx の SortTh を読み、Repositories ページと Contributors ページでの使われ方を確認してください。提案されているキーボード操作とソート状態の動作を追加し、src/components/UI.test.jsx で Testing Library を使ってテストしてください。ソート見出しをキーボードで操作でき、アクティブなソート順をスクリーンリーダーに伝えられれば完了です。
索引モデルが issue の本文から書いたものです。
説明
Bug Description
The sortable column headers on the Repositories and Contributors pages can only be used with a mouse.
SortTh in src/components/UI.jsx (lines 119-138) renders a plain <th> with an onClick handler. A <th> is not focusable, so Tab skips every sort header and there is no way to change the sort order from the keyboard. The header also has no aria-sort, so screen readers do not announce which column is sorted or in which direction. The only hint is the chevron icon and the accent color.
This affects 5 headers on /contributors (ContributorsPage.jsx lines 321-325) and every column on /repositories (RepositoriesPage.jsx line 253). Open PR #276 adds 4 more on a new Maintainers page through the same component.
Impact
Low - Minor inconvenience
Proposed Solution
A small change in SortTh only, so both pages get it:
- Put a
<button type="button">inside the<th>and move theonClickto it, so the header is focusable and Enter/Space work. - Set
aria-sort="ascending"/"descending"on the active<th>and"none"on the others. - Mark the chevron icon
aria-hidden="true". - Add
src/components/UI.test.jsxwith Testing Library: the header is a button, clicking it callsonSortwith the key, andaria-sortfollowssortConfig.
Steps to Reproduce
- Explore any org, for example
AOSSIE-Org, and open the Repositories page. - Press Tab repeatedly from the search box.
- Focus never lands on a column header, and Enter or Space can't change the sort.
- With a screen reader on, move to a header: it is read as plain text with no sorted state.
Logs and Screenshots
No response
Environment Details
- Branch:
main(b396d1b) - Found by reading the code; any browser
I'd like to work on this if it's okay with the maintainers.
Code of Conduct
- I have joined the Discord server and will post updates there
- I have searched existing issues to avoid duplicates
- 主要言語
- JavaScript
- スター
- 48
- フォーク
- 163
- 平均マージ
- 5日 2時間
- マージ済み PR(30日)
- 31
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
AOSSIE-Org/OrgExplorer のほかの issue
-
[BUG]: `fetchWithCache` crashes with `SyntaxError: Unexpected end of JSON input` when encountering empty repositories (HTTP 204 No Content)対応中かも @Devnil434 が 3 日前に担当しました。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
AOSSIE-Org/OrgExplorer#433 · コメント 1 件 ·
メンテナーはふだん 4 日以内に返信
-
[BUG]: Connect PAT modal saves invalid GitHub tokens without validation対応中かも @Prince-ES が 6 日前に担当しました。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
AOSSIE-Org/OrgExplorer#416 · コメント 1 件 ·
メンテナーはふだん 4 日以内に返信
-
[BUG]: Avoid triggering Release Drafter for closed, unmerged pull requests対応中かも @Praveena2809 が 4 日前に担当しました。 オープンbug
難易度 1/5 1時間未満 初心者へのやさしさ 82/100
AOSSIE-Org/OrgExplorer#414 · コメント 2 件 ·
メンテナーはふだん 4 日以内に返信
-
[BUG]: Overview "Language Distribution" percentages are relative to the top-7 languages, not all repos対応中かも @Rohit270406 が 9 日前に担当しました。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
AOSSIE-Org/OrgExplorer#402 · コメント 1 件 ·
メンテナーはふだん 4 日以内に返信
-
[BUG]: Overview wrongly lists a successfully-loaded org as "could not be loaded" (case / duplicate)対応中かも @Rajvardhan-Singh-Rathore が 4 日前に担当しました。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
AOSSIE-Org/OrgExplorer#400 · コメント 2 件 ·
メンテナーはふだん 4 日以内に返信
AOSSIE-Org/OrgExplorer の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
hexlet-codebattle/codebattle#2374 ·
-
docs: Code on siteオープン
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
saadeghi/daisyui#4846 · コメント 1 件 ·
メンテナーはふだん 4 日以内に返信
-
spec-feedback
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
-
難易度 1/5 1時間未満 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
-
automated-link-issue broken-link
難易度 2/5 半日 初心者へのやさしさ 65/100
JuanPabloDiaz/freeForGeeks#313 ·