Skip to content

[dev-v5] FluentAppBar overflow trigger is a roleless interactive div #5322

Closed

Description

Bug report

Version

Microsoft.FluentUI.AspNetCore.Components 5.0.0-preview.26260.3.

Description

FluentAppBar renders its overflow trigger as a focusable, clickable div with an aria-label, but without an interactive ARIA role:

<div id="appbar-more-f7730221"
     class="fluent-appbar-more-item"
     tabindex="0"
     slot="trigger"
     title="View more apps"
     aria-label="0 hidden items">
</div>

The component source currently renders this element directly as a div and registers FluentKeyCode for it.

axe-core 4.13 reports aria-prohibited-attr (serious): aria-label is not permitted on this roleless generic element. The element also exposes no button semantics despite being keyboard-focusable and activating the overflow popover.

This is distinct from #1864 / #1871, which corrected the AppBar navigation and item roles but did not cover the overflow trigger.

Repro

  1. Render a FluentAppBar with enough FluentAppBarItem children to enable its overflow trigger.
  2. Inspect .fluent-appbar-more-item after rendering.
  3. Run axe-core with WCAG 2.x A/AA rules.

The same violation occurs even when the label says 0 hidden items, because the overflow trigger remains rendered and focusable.

Expected behavior

Render the trigger as a native button where possible, or give the existing element complete button semantics (including role="button" and correct Enter/Space behavior). Its accessible label and expanded/popup state should be exposed on the role-bearing trigger.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    a11yAccessibillityv5

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions