angular / angular/components

bug(mat-calendar): The calendar contains toggle buttons that do not behave like toggle buttons (Accessibility)

Abierto
#30,190 4 comentarios 0 reacciones 0 asignados Ver en GitHub
Accessibility area: material/datepicker P3
Lenguaje dominante
TypeScript
Estrellas
25k
Forks
6.8k
Merge medio
1 d 8 h
PR fusionados (30 d)
91

Descripción

### Is this a regression?

- [ ] Yes, this behavior used to work in the previous version

### The previous version in which this bug was not present was

_No response_

### Description

The mat-calendar component contains a button for each selectable date. When navigating the calendar using a screen reader, each button will be read as "toggle button" indicating that the buttons state should change each time the button is pressed. However the button does not behave like a toggle button. Once the button is toggled it cannot be "untoggled", potentially causing confusion for the user. I believe the `aria-pressed` attribute on the button should be removed to correctly reflect the buttons behaviour.

This was discovered during a recent accessibility evaluation and they provided the following link: https://www.w3.org/WAI/WCAG22/Understanding/name-role-value.html

### Reproduction

Example link: https://material.angular.io/components/datepicker/overview#datepicker-inline-calendar

Steps to reproduce:
1. Use the example link in the browser (I used Chrome)
2. Start the screen reader (I used VoiceOver on MacOS)
3. Navigate to the calendar dates an hear them being read as "toggle button"
4. Realize that you cannot change the pressed state of the toggle button by pressing it multiple times

### Expected Behavior

That the button isn't announced as a toggle button when it doesn't behave like a toggle button.

### Actual Behavior

The button is announced as a toggle button even though it doesn't behave like one.

### Environment

- Angular: 19.0.4
- CDK/Material: 19.0.3
- Browser(s): Chrome (similar result expected in other browsers)
- Operating System: macOS

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Empieza con los botones de fecha de mat-calendar que se muestran en el ejemplo de inline-calendar de datepicker y localiza dónde se aplica su atributo aria-pressed. Verifica el comportamiento con un lector de pantalla después del cambio; se considera terminado cuando las fechas seleccionables ya no se anuncian como botones de alternancia, mientras su comportamiento de calendario permanece intacto.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
angular, typescript
Área
accessibility, frontend
Tipo de issue
Error
Dificultad
2/5
Tiempo estimado
1-3 horas
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
48/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.