ion-icon without a label is exposed as an image with no name
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 84/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- typescript, web-dev
- Área
- accessibility, frontend
Línea de trabajo
El issue apunta a icon.tsx en main; empieza leyendo cómo se renderizan role y los atributos ARIA del host. Comprueba si ya existen pruebas de accesibilidad y, después, verifica que un icono sin aria-label ni aria-labelledby quede oculto para las tecnologías de asistencia, mientras que un icono con etiqueta siga siendo una imagen. El issue no indica ningún archivo de pruebas, así que localiza la prueba pertinente antes de ejecutarla.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Current behaviour
ion-icon always renders role="img" on its host. When no aria-label is given, which is the usual
case for an icon next to text, screen readers meet an image with no name. axe reports this as
role-img-alt. One app we scanned had 54 of these across three pages.
Apps can add aria-hidden="true" to each decorative icon, but that is easy to miss, and the default is
the inaccessible case.
Steps to reproduce
- Add
<ion-icon name="logo-github"></ion-icon>to a page, with noaria-label. - Inspect the accessibility tree: the icon is an image with no name.
- Or run axe's
role-img-altrule.
Seen with ionicons 8.0.13. icon.tsx on main renders role="img" on the host the same way.
Expected behaviour
An ion-icon with no aria-label or aria-labelledby is hidden from assistive technology, as Angular
Material's mat-icon does by default.
Possible fix
Set aria-hidden="true" on the host when neither aria-label nor aria-labelledby is present, and
leave role="img" for labelled icons.
Related: #710 and #838 (closed), about labels being forced.
Happy to open a PR for this if you'd like one.
- Lenguaje dominante
- TypeScript
- Estrellas
- 18.2k
- Forks
- 2k
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin 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 ionic-team/ionicons
-
icon request: Easy AI logoAbiertotriage
Dificultad 2/5 1-3 horas Aptitud para principiantes 67/100
ionic-team/ionicons#1520 ·
-
triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 73/100
ionic-team/ionicons#1519 ·
-
icon request: PillAbiertotriage
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
ionic-team/ionicons#1516 ·
-
bug: Invalid @supports syntax in icon.css breaks under strict CSS parsers (e.g. Lightning CSS)Posiblemente ocupada @johnjenkins la tomó hace 74 días. Abiertotriage
Dificultad 1/5 Menos de una hora Aptitud para principiantes 92/100
ionic-team/ionicons#1513 ·
-
triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
ionic-team/ionicons#1510 ·
Todos los issues de ionic-team/ionicons
Issues similares
-
Add: ESP 2 ROAbiertoapproved check:passed streams:add
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
ipaas: Configure form shows "Deploy to apply." and "Overrides selected Link" when they don't applyAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 67/100
wso2/integration-control-plane#1118 ·
Los mantenedores suelen responder en 1 día
-
File reporting form UI DesignAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
UTDNebula/utd-notebook#311 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día