Admin toolbar navigation accessibility
メンテナーはふだん 3 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 52/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 静か
- 技術スタック
- angular, html, typescript
調査の方向性
Locate the admin navigation component by searching the Angular app for admin-sidebar; the issue provides rendered markup but no source file or test path. Read how the sidebar renders expandable sections and handles keyboard focus, then verify the behavior with keyboard navigation and VoiceOver. Done means screen readers and keyboard users can navigate the links and toggle sections without skipped items or a focus loop.
索引モデルが issue の本文から書いたものです。
説明
@lgeggleston
Submitted on behalf of University of Virginia (UVA) Library’s Assessment, Communications, and User Experience (ACE) team as part of internal DSpace 9 accessibility audit.
Issue 1 of 3: Admin Navigation for Screen Readers
Describe the bug
The left-hand admin navigation bar is not fully usable with Voice Over (screen reader). The dropdowns are not functional with voice over key commands, resulting in an unusable interface for screen reader users.
Page
General Alerts and Sitewide Issues
WCAG Guideline
WCAG 2.1.1, 2.4.3, 4.1.2, 1.3.1
To Reproduce
Located in Admin Menu Bar.
Relevant code
Start of code snippet:
\<nav \_ngcontent-dspace-angular-c1031589132="" id="admin-sidebar" class="navbar navbar-dark p-0 vh-100 ng-trigger ng-trigger-slideSidebar ng-tns-c1031589132-4 collapsed ng-star-inserted" aria-label="Admin navigation bar" style="max-width: 55px;"\>\<div \_ngcontent-dspace-angular-c1031589132="" id="sidebar-header-container" aria-hidden="true" class=
Expected behavior
The admin navigation bar is not navigable or operable for screen reader users. The voice over navigation issues are occurring due to inconsistent semantics and poorly used ARIA roles. The role="menubar" on the container forces screen readers into application menu mode, affecting navigation commands. The nested interactive elements with tabindex="0" creates two focusable elements nested inside each other: The outer <a> with tabindex="0" and the inner <span> with tabindex="0" and role="button". This creates duplicate tab stops and confuses screen readers about which element to focus. Links with href="javascript:void(0);" should be <button> elements since they trigger actions (expanding sections), not navigation. The role="menuitem" on expandable sections is not proper use; menu item roles shouldn't expand/collapse - they should either navigate or trigger actions. For expandable sections, you need <button> elements with aria-expanded. There is also a mix of role="menuitem" and actual navigation links. Some items are real links (Admin Search, Processes, etc.) and some are toggles. The inconsistent semantics confuse navigation for keyboard navigation.
For expandable sections:
\<button aria-expanded="false" aria-controls="admin-menu-section-new"\> \<i aria-hidden="true" class="fa-plus fas"\>\</i\> New \<i aria-hidden="true" class="fa-chevron-right"\>\</i\>\</button\> For navigation links: \<a href="/admin/search"\> \<i aria-hidden="true" class="fa-search fas"\>\</i\> Admin Search\</a\> Remove: role="menubar" from container role="menuitem" from all elements All nested tabindex="0" elements All href="javascript:void(0);" links Inner \<span role="button"\> elements (since we will be using semantic \<button\>).
Suggested fix / example code
The following is example code; please update for each item and check for Javascript changes. Navigation Landmark:
\<nav aria-label="Admin navigation"\> ...\</nav\> Expandable section (with toggle): \<button type="button" aria-expanded="false" aria-controls="admin-menu-section-new"\> \<i aria-hidden="true" class="fa-plus fas"\>\</i\> \<span\>New\</span\> \<i aria-hidden="true" class="fa-chevron-right"\>\</i\>\</button\> Individual Links (going to different page): \<a href="/admin/search"\> \<i aria-hidden="true" class="fa-search fas"\>\</i\> \<span\>Admin Search\</span\>\</a\> Pin Sidebar button: \<button type="button" aria-pressed="false"\> \<i aria-hidden="true" class="fa-angle-double-right"\</i\> \<span\>Pin sidebar\</span\>\</button\>
Issue 2 of 3: Admin Bar for Keyboard Navigation
Describe the bug
The admin navigation bar is not fully usable with keyboard navigation. Using the standard keyboard navigation (no VO), the focus order jumps around and skips menu items entirely.
Page
General Alerts and Sitewide Issues
WCAG Guideline
WCAG 2.1.1, 2.4.3, 4.1.2, 1.3.1
To Reproduce
Relevant code
Start of code snippet:
\<nav \_ngcontent-dspace-angular-c1031589132="" id="admin-sidebar" class="navbar navbar-dark p-0 vh-100 ng-trigger ng-trigger-slideSidebar ng-tns-c1031589132-4 collapsed ng-star-inserted" aria-label="Admin navigation bar" style="max-width: 55px;"\>\<div \_ngcontent-dspace-angular-c1031589132="" id="sidebar-header-container" aria-hidden="true" class="sidebar-full-width-container ng-tns-c1031589132-4"\>
Expected behavior
The admin navigation bar is not navigable or operable for keyboard users. The voice over navigation issues are occurring due to inconsistent semantics and poorly used ARIA roles. The role="menubar" on the container forces screen readers into application menu mode, affecting navigation commands. The nested interactive elements with tabindex="0" creates two focusable elements nested inside each other: The outer <a> with tabindex="0" and the inner <span> with tabindex="0" and role="button". This creates duplicate tab stops and confuses screen readers about which element to focus. Links with href="javascript:void(0);" should be <button> elements since they trigger actions (expanding sections), not navigation. The role="menuitem" on expandable sections is not proper use; menu item roles shouldn't expand/collapse - they should either navigate or trigger actions. For expandable sections, you need <button> elements with aria-expanded. There is also a mix of role="menuitem" and actual navigation links. Some items are real links (Admin Search, Processes, etc.) and some are toggles. The inconsistent semantics confuse navigation for keyboard navigation.
For expandable sections: \<button aria-expanded="false" aria-controls="admin-menu-section-new"\> \<i aria-hidden="true" class="fa-plus fas"\>\</i\> New \<i aria-hidden="true" class="fa-chevron-right"\>\</i\>\</button\>
For navigation links: \<a href="/admin/search"\> \<i aria-hidden="true" class="fa-search fas"\>\</i\> Admin Search\</a\>
Remove: role="menubar" from container role="menuitem" from all elements All nested tabindex="0" elements All href="javascript:void(0);" links Inner <span role="button"> elements (since we will be using semantic <button>).
Suggested fix / example code
The following is example code; please update for each item and check for Javascript changes. Navigation Landmark:
\<nav aria-label="Admin navigation"\> ...\</nav\> Expandable section (with toggle): \<button type="button" aria-expanded="false" aria-controls="admin-menu-section-new"\> \<i aria-hidden="true" class="fa-plus fas"\>\</i\> \<span\>New\</span\> \<i aria-hidden="true" class="fa-chevron-right"\>\</i\>\</button\> Individual Links (going to different page): \<a href="/admin/search"\> \<i aria-hidden="true" class="fa-search fas"\>\</i\> \<span\>Admin Search\</span\>\</a\> Pin Sidebar button: \<button type="button" aria-pressed="false"\> \<i aria-hidden="true" class="fa-angle-double-right"\>\</i\> \<span\>Pin sidebar\</span\>\</button\>
Issue 3 of 3: Admin Navigation Keyboard Trap
Describe the bug
The screen reader in Mac (VoiceOver) gets stuck in a loop when reading the page. The focus goes from skip to main content button > admin menu > window name, and gets stuck repeating window name. Including a video instead of a photo for clarity on what this looks like. This is the same issue as the main navigation bar. The admin navigation bar starts with <nav>, but then they switch to role=menubar and role=menuitem, which make VoiceOver in Safari jump to the window level. VO in Safari registers these roles as software/application type of navigation, so it automatically jumps to the window-level. Since both the admin navigation and main navigation use role=menu, VO will keep going in a loop because it's being told constantly to jump up.
Page
General Alerts and Sitewide Issues
WCAG Guideline
WCAG 2.1.2, 4.1.2, 1.3.1
To Reproduce
Located in Admin menu bar.
Relevant code
See issue 2 of 3 code block above
Expected behavior
Screen reader users cannot access the page. Removing the role="menubar" and role="menuitem" roles fully resolves the VoiceOver looping behavior. This loop occurs because VoiceOver treats these roles as desktop application menus and repeatedly jumps out of the webpage into Safari’s window-level navigation. Converting expandable items into <button aria-expanded> and leaving navigation items as standard <a> links restores correct semantics and prevents the loop.
Suggested fix / example code
See code block above, as well as code block for navigation bar.
- 主要言語
- TypeScript
- スター
- 180
- フォーク
- 577
- 平均マージ
- 2日 12時間
- マージ済み PR(30日)
- 111
環境構築
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
DSpace/dspace-angular のほかの issue
-
affects: 10.x affects: 9.x bug component: submission Difficulty: Low help wanted ux
難易度 2/5 1〜3時間 初心者へのやさしさ 66/100
DSpace/dspace-angular#6412 ·
メンテナーはふだん 3 日以内に返信
-
accessibility affects: 10.x affects: 8.x affects: 9.x bug help wanted ux
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
DSpace/dspace-angular#6364 · コメント 1 件 ·
メンテナーはふだん 3 日以内に返信
-
Author browse links on item page open in a new tab, unlike other browse links対応中かも @jesielviana が 19 日前に担当しました。 オープンaffects: main bug component: Item low priority
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
DSpace/dspace-angular#6268 · コメント 4 件 · 担当者 1 名 ·
メンテナーはふだん 3 日以内に返信
-
Mathjax single dollar sign delimiter configuration causes unintentional math rendering in abstractsオープンbug needs triage
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
DSpace/dspace-angular#6263 ·
メンテナーはふだん 3 日以内に返信
-
UI spacing regression on ds-generic-item-page-field (extra spaces around metadata values) in v10.xオープンaffects: 10.x affects: main bug component: Item ux
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
DSpace/dspace-angular#6254 · コメント 1 件 ·
メンテナーはふだん 3 日以内に返信
DSpace/dspace-angular の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
vekexasia/pi-extensible-workflows#374 ·
メンテナーはふだん 2 日以内に返信
-
documentation good first issue
難易度 2/5 1〜3時間 初心者へのやさしさ 77/100
メンテナーはふだん 1 日以内に返信
-
help wanted linux
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
GiuseppeBellamacina/downtime#19 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
scaleway/ultraviolet#7089 ·
メンテナーはふだん 2 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
Get-Concord-AI/concord-mcp#296 ·
メンテナーはふだん 1 日以内に返信