bug: ion-modal - aria-labelledby on the host does not reach the dialog element
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Facilidade para iniciantes
- 65/100
- Tipo de issue
- Bug
- Clareza
- Claramente especificada
- Status de atividade
- Ativa
- Stack de tecnologia
- typescript
- Domínio
- accessibility, frontend
Direção de pesquisa
Start with ion-modal and its inheritAriaAttributes / htmlAttributes handling, then inspect the dialog element in the shadow root and related accessibility tests. Reproduce with the linked modal example by setting aria-labelledby on the host and inspecting the presented dialog. Done means the dialog receives the label reference and the accessibility tree announces its title.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Prerequisites
- I have read the Contributing Guidelines.
- I agree to follow the Code of Conduct.
- I have searched for existing issues that already report this problem, without success.
Ionic Framework Version
v8.x
Current Behavior
The documentation states that aria-labelledby can be set on ion-modal to name the dialog.
The role="dialog" element lives in the shadow root and only aria-label and role are
forwarded to it (inheritAriaAttributes / htmlAttributes); aria-labelledby set on the host
or via htmlAttributes stays on the host, which has no role, so the dialog is announced
without a name. Naming works only with a literal aria-label, which duplicates the visible
title and is not kept in sync with it.
Verified with the reproduction on Ionic 8.8.5 (Chrome 154, page "4 ion-modal aria-labelledby"): host
aria-labelledby="modal-title", inner [role=dialog] has neither aria-labelledby nor aria-label.
Expected Behavior
The documentation states that aria-labelledby can be set on ion-modal to name the dialog.
The role="dialog" element lives in the shadow root and only aria-label and role are
forwarded to it (inheritAriaAttributes / htmlAttributes); aria-labelledby set on the host
or via htmlAttributes stays on the host, which has no role, so the dialog is announced
without a name. Naming works only with a literal aria-label, which duplicates the visible
title and is not kept in sync with it.
Verified with the reproduction on Ionic 8.8.5 (Chrome 154, page "4 ion-modal aria-labelledby"): host
aria-labelledby="modal-title", inner [role=dialog] has neither aria-labelledby nor aria-label.
Steps to Reproduce
<ion-modal aria-labelledby="t"><ng-template><h2 id="t">Antrag stellen</h2>...</ng-template></ion-modal>- Present the modal and inspect the accessibility tree: the dialog has no name.
Code Reproduction URL
https://stackblitz.com/github/mrambow/starterApp/tree/a11y-repros (page /repro/modal)
GitHub: https://github.com/mrambow/starterApp/tree/a11y-repros (src/app/repros/modal.page.ts)
Code Reproduction URL
https://github.com/mrambow/starterApp/tree/a11y-repros
Ionic Info
Ionic 8.8.5, Angular 17.3, Capacitor 6 (reproduction); found in Ionic 8.8.5, Angular 21, Capacitor 8
Additional Information
No response
- Linguagem predominante
- TypeScript
- Estrelas
- 52.7k
- Forks
- 13.3k
- Merge médio
- 3d 4h
- PRs com merge (30d)
- 72
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de ionic-team/ionic-framework
-
bug: input-otp, backspace in an empty box only moves focus instead of clearing the previous boxTalvez já em andamento @sarankumar1325 assumiu há 8 dias. Abertapackage: core type: bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 90/100
ionic-team/ionic-framework#31639 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
bug: vue swipe cancellation throws when the previous page is missingTalvez já em andamento @dandoingdev assumiu há 31 dias. Abertapackage: vue type: bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
ionic-team/ionic-framework#31514 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
bug: ion-searchbar input is always labelled "search text"; aria-label on the host is not forwardedTalvez já em andamento @HappyKnuckles assumiu há 26 dias. Abertaa11y package: core type: bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
ionic-team/ionic-framework#31492 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
bug: IonTabs throws when a Fragment contains one IonRouterOutletTalvez já em andamento @Benziza assumiu há 67 dias. Abertapackage: react type: bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
ionic-team/ionic-framework#31410 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
-
package: angular type: bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 86/100
ionic-team/ionic-framework#31291 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
Todas as issues de ionic-team/ionic-framework
Issues semelhantes
-
triage
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
Mantenedores costumam responder em até 1 dia
-
🎙️ task - drop the raw `./node_modules/.bin/rhachet roles boot` line from bhuild's feedback templateAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
ehmpathy/rhachet-roles-bhuild#639 ·
Mantenedores costumam responder em até 1 dia
-
e2e-failure ready-to-code
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
redhat-developer/rhdh-plugin-export-overlays#4650 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
Mantenedores costumam responder em até 13 dias
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
omdsh-dev/DSH-better-sidebar#1098 ·
Mantenedores costumam responder em até 2 dias