Carousel: no API to specify accessible name for individual slide listitem elements
Los mantenedores suelen responder en 2 días
Nadie ha tomado este issue todavía.
Evaluación
Este issue todavía no se ha evaluado.
Descripción
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
- Lenguaje dominante
- TypeScript
- Estrellas
- 1.8k
- Forks
- 290
- Merge medio
- 2 d 13 h
- PR fusionados (30 d)
- 50
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de UI5/webcomponents
-
ACC author action
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
UI5/webcomponents#14273 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
[Button]: crash on Safari 17 due to missing ElementInternals.states guard in _setBadgeOverlayStylePosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertoauthor action bug TOPIC B
Dificultad 1/5 Menos de una hora Aptitud para principiantes 87/100
UI5/webcomponents#14270 · 2 comentarios ·
Los mantenedores suelen responder en 2 días
-
[Feature Request][Side Navigation][A11Y]: Enhance user experience navigating components tree itemsPosiblemente ocupada @TeodorTaushanov la tomó hace 8 días. Abiertobug Medium Prio TOPIC RD
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
UI5/webcomponents#14232 · 1 comentario · 1 asignado ·
Los mantenedores suelen responder en 2 días
-
enhancement feature request TOPIC RD
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
UI5/webcomponents#14222 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
[SF][A11y][ui5-select] Conflicting ARIA: role="combobox" rendered with aria-roledescription="Listbox" (confuses screen-reader users)Posiblemente ocupada @PetyaMarkovaBogdanova la tomó hace 12 días. Abiertobug Medium Prio TOPIC P
Dificultad 2/5 1-3 horas Aptitud para principiantes 67/100
UI5/webcomponents#14212 · 2 comentarios · 1 asignado ·
Los mantenedores suelen responder en 2 días
Todos los issues de UI5/webcomponents
Issues similares
-
Bug: Cloudflare Pages static _redirects identity rule causes RSC Flight to reload as HTMLPosiblemente ocupada @Donvero la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Mantitup-Org/vista#210 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
simstudioai/sim#9831 ·
Los mantenedores suelen responder en 1 día
-
status: waiting for maintainer
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
mui/material-ui#49751 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
diplodoc-platform/transform#1184 ·
Los mantenedores suelen responder en 1 día