You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
ix-input: aria-label / aria-required on host not exposed to native input in shadow root (screen readers announce no name or required state) #2913
I have not leaked any internal/restricted information like screenshots, videos, code snippets, links etc.
What happened?
Summary
When aria-label (or aria-required) is set on <ix-input>, it stays on the host element and never reaches the native <input> inside the shadow root. Screen readers therefore announce only "edit text" and give no accessible name or required state for the field.
Environment
@siemens/ix: 3.2.0
@siemens/ix-vue:
Framework: Vue 3
Screen readers: VoiceOver (macOS/iOS), TalkBack (Android) <add NVDA/JAWS if tested>
Browsers:
Steps to reproduce
Render an input with an external label and a required state:
Hi @kathrinschalber, I saw this is on your internal backlog (EIX-484). Would it be okay if I picked it up, or is someone on the team already working on it?
What I'd do, reusing what ix-date-dropdown and ix-slider already do:
In ix-input, ix-number-input and ix-textarea, collect the host's ARIA attributes once with a11yHostAttributes(this.hostElement) and spread them onto the native <input> / <textarea>. Like the other components, this moves them off the host, so the name isn't announced twice.
Keep aria-invalid coming from the validation state, as getAriaAttributesForInput does today. aria-required becomes true when either required is set or the host had aria-required="true".
Tests: a host aria-label ends up on the native control and not on the host, a host aria-required="true" is exposed on the native control, and required still sets it as before.
Activity
kathrinschalber commentedon Oct 27, 2026
Added to our internal backlog (internal reference EIX-484)
khushi-git-7 commentedon Nov 3, 2026
Hi @kathrinschalber, I saw this is on your internal backlog (EIX-484). Would it be okay if I picked it up, or is someone on the team already working on it?
What I'd do, reusing what
ix-date-dropdownandix-slideralready do:ix-input,ix-number-inputandix-textarea, collect the host's ARIA attributes once witha11yHostAttributes(this.hostElement)and spread them onto the native<input>/<textarea>. Like the other components, this moves them off the host, so the name isn't announced twice.aria-invalidcoming from the validation state, asgetAriaAttributesForInputdoes today.aria-requiredbecomestruewhen eitherrequiredis set or the host hadaria-required="true".aria-labelends up on the native control and not on the host, a hostaria-required="true"is exposed on the native control, andrequiredstill sets it as before.@siemens/ix.kathrinschalber commentedon Nov 4, 2026
Hi @khushi-git-7! as you can see, my colleague just added the contribution badge, so we would be happy to get your support there ❤️
khushi-git-7 commentedon Nov 4, 2026
Thank you! The PR is up: #2975