Skip to content

fix(GlToast): Improve accessibility

What does this MR do?

Related to #1743 (closed)

Add isStatus: true in default ToastPlugin options in order to generate Toast with role='status' aria-live='polite'

Before:

<div id="gl-toast-1__toast_outer" role="alert" aria-live="assertive" aria-atomic="true" class="b-toast b-toast-prepend"
    style="">
    <div id="gl-toast-1" tabindex="0" class="toast gl-toast">
        <header class="toast-header"><button aria-label="Close" type="button"
                class="btn btn-default btn-sm gl-button btn-default-tertiary btn-icon gl-toast-close-button gl-close-btn-color-inherit">
                <!----> <svg data-testid="close-icon" role="img" aria-hidden="true" class="gl-button-icon gl-icon s16">
                    <use href="00a956e0b84f0777454d978fccef22f2.svg#close"></use>
                </svg>
                <!----></button></header>
        <div class="toast-body">This is the default toast.</div>
    </div>
</div>

After:

<div id="gl-toast-1__toast_outer" role="status" aria-live="polite" aria-atomic="true" class="b-toast b-toast-prepend"
    style="">
    <div id="gl-toast-1" tabindex="0" class="toast gl-toast">
        <header class="toast-header"><button aria-label="Close" type="button"
                class="btn btn-default btn-sm gl-button btn-default-tertiary btn-icon gl-toast-close-button gl-close-btn-color-inherit">
                <!----> <svg data-testid="close-icon" role="img" aria-hidden="true" class="gl-button-icon gl-icon s16">
                    <use href="00a956e0b84f0777454d978fccef22f2.svg#close"></use>
                </svg>
                <!----></button></header>
        <div class="toast-body">This is the default toast.</div>
    </div>
</div>

Does this MR meet the acceptance criteria?

Conformity

  • Code review guidelines.
  • GitLab UI's contributing guidlines.
  • If it changes a Pajamas-compliant component's look & feel, the MR has been reviewed by a UX designer.
  • If it changes GitLab UI's documentation guidelines, the MR has been reviewed by a Technical Writer.
  • If the MR changes a component's API, integration MR(s) have been opened in the following projects to ensure that the @gitlab/ui package can be upgraded quickly after the changes are released:
  • Added the ~"component:*" label(s) if applicable.

Security

If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:

  • Label as security and @ mention @gitlab-com/gl-security/appsec
  • Security reports checked/validated by a reviewer from the AppSec team

Accessibility

If this MR adds or modifies a component, take a few moments to review the following:

  • All actions and functionality can be done with a keyboard.
  • Links, buttons, and controls have a visible focus state.
  • All content is presented in text or with a text equivalent. For example, alt text for SVG, or aria-label for icons that have meaning or perform actions.
  • Changes in a component’s state are announced by a screen reader. For example, changing aria-expanded="false" to aria-expanded="true" when an accordion is expanded.
  • Color combinations have sufficient contrast.

Closes #1743 (closed)

Edited by Scott de Jonge

Merge request reports