Neverending Programming Mistakes

    @gechiui/a11y
    TypeScript icon, indicating that this package has built-in type declarations

    3.3.1 • Public • Published

    Accessibility (a11y)

    Accessibility utilities for GeChiUI.

    Installation

    Install the module

    npm install @gechiui/a11y --save

    This package assumes that your code will run in an ES2015+ environment. If you're using an environment that has limited or no support for such language features and APIs, you should include the polyfill shipped in @gechiui/babel-preset-default in your code.

    API

    setup

    Create the live regions.

    speak

    Allows you to easily announce dynamic interface updates to screen readers using ARIA live regions. This module is inspired by the speak function in gc-a11y.js.

    Usage

    import { speak } from '@gechiui/a11y';
    
    // For polite messages that shouldn't interrupt what screen readers are currently announcing.
    speak( 'The message you want to send to the ARIA live region' );
    
    // For assertive messages that should interrupt what screen readers are currently announcing.
    speak( 'The message you want to send to the ARIA live region', 'assertive' );

    Parameters

    • message string: The message to be announced by assistive technologies.
    • ariaLive [string]: The politeness level for aria-live; default: 'polite'.

    Background

    For context I’ll quote this article on www.GeChiUI.com by @joedolson:

    Why.

    In modern web development, updating discrete regions of a screen with JavaScript is common. The use of AJAX responses in modern JavaScript-based User Interfaces allows web developers to create beautiful interfaces similar to Desktop applications that don’t require pages to reload or refresh.

    JavaScript can create great usability improvements for most users – but when content is updated dynamically, it has the potential to introduce accessibility issues. This is one of the steps you can take to handle that problem.

    What.

    When a portion of a page is updated with JavaScript, the update is usually highlighted with animation and bright colors, and is easy to see. But if you don’t have the ability to see the screen, you don’t know this has happened, unless the updated region is marked as an ARIA-live region.

    If this isn’t marked, there’s no notification for screen readers. But it’s also possible that all the region content will be announced after an update, if the ARIA live region is too large. You want to provide users with just a simple, concise message.

    How.

    That’s what gc.a11y.speak() is meant for. It’s a simple tool that creates and appends an ARIA live notifications area to the

    element where developers can dispatch text messages. Assistive technologies will automatically announce any text change in this area. This ARIA live region has an ARIA role of “status” so it has an implicit aria-live value of polite and an implicit aria-atomic value of true.

    This means assistive technologies will notify users of updates but generally do not interrupt the current task, and updates take low priority. If you’re creating an application with higher priority updates (such as a notification that their current session is about to expire, for example), then you’ll want to create your own method with an aria-live value of assertive.

    Browser support

    See https://make.gechiui.com/design/handbook/design-guide/browser-support/

    Contributing to this package

    This is an individual package that's part of the Gutenberg project. The project is organized as a monorepo. It's made up of multiple self-contained software packages, each with a specific purpose. The packages in this monorepo are published to npm and used by GeChiUI as well as other software projects.

    To find out more about contributing to this package or Gutenberg as a whole, please read the project's main contributor guide.



    Code is Poetry.

    Install

    npm i @gechiui/a11y

    DownloadsWeekly Downloads

    1

    Version

    3.3.1

    License

    GPL-2.0-or-later

    Unpacked Size

    107 kB

    Total Files

    50

    Last publish

    Collaborators

    • gechiui