Skip to content

Update other field classes aria #9658

@maribethb

Description

@maribethb

Check for duplicates

  • I have searched for similar issues before opening a new one.

Problem

No response

Request

Most fields inherit from dropdown or input field base class, so those should be done first. The changes needed for other fields are smaller.

  • FieldLabel needs to be updated to set itself to be aria-hidden always since it never should be in the accessibility node tree (it's never navigable).
  • FieldNumber needs to have its custom aria-valuemin and aria-valuemax logic removed because those aren't valid for this field type. These properties are only used for range widgets (see ARIA range-related properties). These properties likely never worked before, and applications that wish to have full range integration for numeric ranges will instead need to use the @blockly/field-slider plugin.
  • FieldImage needs to be updated to provide its image's alt text as its ARIA value by default, and to set its role either to button or presentation depending on whether it has a click handler (and is outside the flyout). This is because only clickable image fields are navigable. Finally, it also needs to be updated to set its label since it's a direct descendant of Field and doesn't benefit from FieldInput's default ARIA setup.
  • FieldCheckbox needs to be updated to:
    • Return an ARIA value of 'checked' or 'not checked' depending on its current value. These are human-exposed strings which means they will need to be made translatable through Blockly's internationalization system (see section 4.6).
    • Set the field's focusable element to have the role checkbox.
    • Set the field's label to either its provided ARIA type name or 'Checkbox' as a fallback (with proper translation support).
    • Set its aria-checked state based on whether it's been checked.
    • Automatically recompute its ARIA state if its checked state changes.
    • Automatically be set to aria-hidden if in the flyout.

Alternatives considered

No response

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    help wantedExternal contributions actively solicitedissue: feature requestDescribes a new feature and why it should be addedissue: triageIssues awaiting triage by a Blockly team member

    Projects

    Status

    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions