Skip to content

[PickerInput]: accessibility issues related to the component #3085

@mari-shakhanava

Description

@mari-shakhanava

Case №1

Description

With NVDA enabled, keyboard navigation in PickerInput (selectionMode: 'single') does not work correctly: it is not possible to navigate through the dropdown options or select them, and the screen reader does not announce the available options.

Precondition

Screen Reader is ON

Steps to Reproduce

  1. Open PickerInput (selectionMode: 'single') component.
  2. Using keyboard navigate through items in dropdown menu via keyboard (with launched NVDA tool);
  3. Note the announcement.

Actual Result

2026-04-08_09h44_18.mp4

Expected Result

It should be possible to interact with dropdown, navigate through items (e.g., via pressing arrow keys) and select. Currently, this works correctly for the multiselect PickerInput, but not for selectionMode: 'single'.
Note: If NVDA is not launched the behavior is correct.

Environment

  • UUI version: 6.4.4

Case №2

Description

PickerInput with Lazy Data Source announces incorrect item position to screen reader.
Related to: Case #10 (Listbox items are not semantically grouped — partially fixed).

After the fix for Case 10, the screen reader now correctly announces item position within a listbox (e.g., "1 of 20"). However, for PickerInput backed by a LazyDataSource (lazy-loaded/paginated lists), the total count used for the announcement is calculated from the current batch size rather than the actual total number of items.
As a result, the announced position resets relative to each newly loaded batch:

  • Batch 1: "1 of 20", "2 of 20", …, "20 of 20"
  • After scroll/next batch: "21 of 40", "22 of 40", …, "40 of 40"
  • After next batch: "41 of 60", …

This gives the user a false impression of the total list size and makes navigation confusing.

Precondition

  1. Screen Reader is ON (e.g., NVDA + Chrome, or VoiceOver + Safari)
  2. A page with PickerInput backed by LazyDataSource is open

Steps to Reproduce

  1. Open a PickerInput with a LazyDataSource that returns paginated results (batch size e.g. 20).
  2. Enable a screen reader (NVDA + Chrome or VoiceOver + Safari).
  3. Open the picker dropdown.
  4. Navigate through items using ↓ / ↑ keyboard keys — note the announced position ("X of Y").
  5. Scroll down to trigger loading of the next batch.
  6. Continue keyboard navigation — note the announced total has changed to reflect only the accumulated loaded items, not the real total.

Actual Result

2026-04-08_10h18_24.mp4

Currently aria-setsize is set to the count of loaded items, which is incorrect and misleading.
Failed WCAG checkpoints:
1.3.1 Info and Relationships (Level A)

Expected Result

The aria-setsize attribute on listbox option elements should reflect either:

  • The actual total count of items (if returned by the API response as totalCount)
  • Or -1 if the total is unknown at load time, per WAI-ARIA specification:

"If the total number of items is unknown, set aria-setsize to -1."

Environment

  • UUI version: 6.4.4

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    Status

    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions