Skip to content

Components: Provide modal focus scope and background accessibility isolation #4379

Open

Description

@JasonVMo

Goal

Establish the native modal foundation needed by Dialog #4222, Drawer #4223, and modal Popover policy in #4236. Part of #4274. Existing component-generation issues remain the delivery owners; this issue owns their shared native prerequisite.

Acceptance

  • Review host/window ownership, arbitrary-child focus containment, initial focus, Escape/close, nested modality, and safe restoration as a modal contract distinct from FocusZone navigation.
  • Implement actual background accessibility isolation and scrim/input containment with attachment/window/generation-scoped ownership and idempotent teardown.
  • Test forward/backward Tab, programmatic and assistive-technology focus escape, nested popup ownership, owner loss/unmount, close/reopen races, and restoring only when policy still permits it.
  • Qualify native keyboard and assistive-technology behavior across the declared macOS Paper/Fabric, Windows, and Win32 capability matrix; record refusals/unsupported paths explicitly.
  • Keep root/all-host admission gated by equivalent mandatory semantics; cycling a FocusZone or showing an anchored Callout is not modal qualification.

Evidence

Retired handoff: b55d6c9a3:packages/agentic/native-core/plans/modernization.md. Durable boundaries: native-core README/AGENTS and modern Callout/FocusZone SPEC.md files. Reuse proven host services without introducing a global view-tag registry or speculative cross-platform framework.

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions