Skip to main content
All patterns

Interaction

Guarded control

A control blocked by a precondition someone can fix stays in the tab order, carries the reason as real text, and refuses the action in its handler — because the native disabled attribute takes the control and its explanation out of reach together.

Reach for it when building

  • a save button waiting on a required field
  • an action that needs a higher permission level
  • a submit blocked until a file finishes uploading
  • a feature that needs a setting turned on first
  • a schedule button waiting on a reading or measurement
  • an export gated behind a plan or quota
  • a publish button waiting on a review
  • aria-disabled
  • disabled
  • preconditions
  • keyboard
  • aria-describedby
  • forms