Add suppress checkboxes and better ARIA roles for dialogs.

Review Request #14649 — Created Oct. 24, 2025 and submitted

Information

Ink
master

Reviewers

It's common for some types of dialogs to have a suppression checkbox,
such as "Do not ask again." To ensure there's a standard approach for
this, dialogs can now have canSuppress=true set. This will place a
checkbox in the secondary actions area, at the far left.

The default text will be "Do not ask again," but this can be customized
by setting suppressText=.

It's up to the caller to determine how to suppress. The dialog doesn't
control any of this. It does provide the result of the checkbox though
as an isSuppressed property.

This will be used for upcoming confirmation utility dialogs.

Along with this, the ARIA role for modal dialogs has been updated to use
alertdialog. This will announce the dialog to screen readers, and is
the correct choice when popping up a modal dialog that requires
attention, rather than a utility dialog that is simply on screen.

Tested with and without suppression checkboxes, and with custom
label text.

Summary ID
Add suppress checkboxes and better ARIA roles for dialogs.
It's common for some types of dialogs to have a suppression checkbox, such as "Do not ask again." To ensure there's a standard approach for this, dialogs can now have `canSuppress=true` set. This will place a checkbox in the secondary actions area, at the far left. The default text will be "Do not ask again," but this can be customized by setting `suppressText=`. It's up to the caller to determine how to suppress. The dialog doesn't control any of this. It does provide the result of the checkbox though as an `isSuppressed` property. This will be used for upcoming confirmation utility dialogs. Along with this, the ARIA role for modal dialogs has been updated to use `alertdialog`. This will announce the dialog to screen readers, and is the correct choice when popping up a modal dialog that requires attention, rather than a utility dialog that is simply on screen.
c936311c0af0c07840f4cbe3249c4fc80ec38d66

Description From Last Updated

I think I'd prefer if this was named something like isSuppressChecked. isSuppressed makes me think the dialog will handle the …

daviddavid

Seems like this should be id= or name=. This also needs the ink-c-dialog__suppress class to match the styling/docs elsewhere.

daviddavid

What does this mean?

daviddavid

This should be __suppress, to match the comment.

daviddavid

This should have defaults for canSuppress and suppressText

daviddavid
david
  1. 
      
  2. Show all issues

    I think I'd prefer if this was named something like isSuppressChecked. isSuppressed makes me think the dialog will handle the suppression.

  3. Show all issues

    Seems like this should be id= or name=.

    This also needs the ink-c-dialog__suppress class to match the styling/docs elsewhere.

    1. Looks like this fix ended up in /r/14689/. Moving it back here.

  4. Show all issues

    What does this mean?

    1. This is part of the schema documentation format I introduced in Ink. Meant to be a more formal way of showing how many of a component part can/must be in an element. It's used throughout the codebase.

  5. Show all issues

    This should be __suppress, to match the comment.

  6. Show all issues

    This should have defaults for canSuppress and suppressText

    1. Only if we want to supply a value. This is specifically using defaults.

  7. 
      
chipx86
david
  1. Ship It!
  2. 
      
chipx86
Review request changed
Status:
Completed
Change Summary:
Pushed to master (01d672e)