Skip to content

[focusgroupV2] Define when grid topology can be inferred automatically #1496

Description

@janewman

Focusgroup V2 currently has two explicit topology paths:

  • focusgroup="grid" discovers native HTML table structure.
  • focusgroup="grid manual" discovers direct-child rows marked with focusgrouprow.

Native tables provide an unambiguous automatic case. Simple generic markup may also contain enough structural information to infer rows and cells:

<div focusgroup="grid" aria-label="Palette">
  <div focusgrouprow>
    <div tabindex="0">Bold</div>
    <div tabindex="0">Italic</div>
  </div>
  <div focusgrouprow>
    <div tabindex="0">Left</div>
    <div tabindex="0">Right</div>
  </div>
</div>

Inference becomes less reliable when markup contains wrappers or multiple plausible row levels:

<div focusgroup="grid" aria-label="Palette">
  <div class="scrollport">
    <div focusgrouprow>
      <div tabindex="0">Bold</div>
      <div tabindex="0">Italic</div>
    </div>
  </div>
</div>

We should determine how much topology user agents can infer safely and where authors must provide explicit signals.

Questions to resolve:

  1. Is the presence of focusgrouprow sufficient to select generic topology?
  2. Which structural wrappers, if any, can be transparent to row discovery?
  3. What happens when multiple plausible row levels exist?
  4. How should mixed native and generic structures behave?
  5. Can mutations change the inferred topology mode?
  6. Is manual still useful as an explicit override or disambiguation signal?

When topology is ambiguous, invalidating the grid may be safer than selecting a plausible structure that can change unexpectedly. Authored ARIA roles should not select or alter focus topology.

Related:

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions