Carousel: no API to specify accessible name for individual slide listitem elements
I maintainer di solito rispondono entro 2 giorni
Nessuno ha ancora preso questa issue.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
Description
The ui5-carousel component renders each slide as role="listitem" inside a shadow DOM role="list" container. These listitem elements have no accessible name — the accessibility tree shows listitem "" (empty name) for every slide.
There is currently no API that allows callers to specify an accessible name per slide from the light DOM. The component does not propagate aria-label from slotted items to the shadow listitem wrappers, and there is no typed prop or slot mechanism for this purpose.
Steps to Reproduce
- Create a
ui5-carouselwith multiple content items - Inspect the accessibility tree in browser DevTools
- Observe that each slide wrapper has
role="listitem"with an empty accessible name ("")
Current Behavior
From CarouselTemplate.tsx:
<div
role="listitem"
aria-posinset={itemInfo.posinset}
aria-setsize={itemInfo.setsize}
tabindex={itemInfo.tabIndex}
>
<slot name={itemInfo.item._individualSlot}></slot>
</div>
The listitem has position attributes but no aria-label/aria-labelledby, and there is no mechanism for the caller to contribute a name to this shadow DOM element.
Accessibility tree:
list "Item Container"
listitem "" focusable: true ← no accessible name
[all slide content]
listitem "" focusable: true
Expected Behavior
Each listitem should have an accessible name identifying the slide. Screen readers would announce it when focus lands on a slide, giving users immediate context.
Proposed approach: if the directly slotted element has an aria-label, the Carousel copies it onto the shadow listitem:
<div
role="listitem"
aria-label={itemInfo.item.getAttribute?.("aria-label") ?? undefined}
aria-posinset={itemInfo.posinset}
aria-setsize={itemInfo.setsize}
tabindex={itemInfo.tabIndex}
>
Caller usage:
<ui5-carousel accessible-name="Needs Attention">
<div aria-label="My Team"><!-- card content --></div>
<div aria-label="Pending Approvals"><!-- card content --></div>
</ui5-carousel>
Impact
- Screen readers cannot identify which slide is focused
- Without a name on the
listitem, browse-mode screen readers fall through into slide content rather than treating the slide as a navigable unit - Users cannot build a mental model of carousel content from keyboard navigation alone
WCAG Reference
- 1.3.1 Info and Relationships —
listitemrole conveys no information about slide identity - 4.1.2 Name, Role, Value — focusable
listitemhas no accessible name
Environment
@ui5/webcomponents2.24- Browser: Chrome
- Screen reader: JAWS 2026
- Lingua principale
- TypeScript
- Stelle
- 1.8k
- Fork
- 290
- Merge medio
- 2g 13h
- PR unite (30g)
- 50
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di UI5/webcomponents
-
ACC author action
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
UI5/webcomponents#14273 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
[Button]: crash on Safari 17 due to missing ElementInternals.states guard in _setBadgeOverlayStyleForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertaauthor action bug TOPIC B
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 87/100
UI5/webcomponents#14270 · 2 commenti ·
I maintainer di solito rispondono entro 2 giorni
-
[Feature Request][Side Navigation][A11Y]: Enhance user experience navigating components tree itemsForse già presa @TeodorTaushanov l’ha presa 8 giorni fa. Apertabug Medium Prio TOPIC RD
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
UI5/webcomponents#14232 · 1 commento · 1 assegnatario ·
I maintainer di solito rispondono entro 2 giorni
-
enhancement feature request TOPIC RD
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
UI5/webcomponents#14222 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
[SF][A11y][ui5-select] Conflicting ARIA: role="combobox" rendered with aria-roledescription="Listbox" (confuses screen-reader users)Forse già presa @PetyaMarkovaBogdanova l’ha presa 12 giorni fa. Apertabug Medium Prio TOPIC P
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
UI5/webcomponents#14212 · 2 commenti · 1 assegnatario ·
I maintainer di solito rispondono entro 2 giorni
Tutte le issue di UI5/webcomponents
Issue simili
-
Bug: Cloudflare Pages static _redirects identity rule causes RSC Flight to reload as HTMLForse già presa @Donvero l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
Mantitup-Org/vista#210 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
simstudioai/sim#9831 ·
I maintainer di solito rispondono entro 1 giorno
-
status: waiting for maintainer
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
mui/material-ui#49751 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
diplodoc-platform/transform#1184 ·
I maintainer di solito rispondono entro 1 giorno