Skip to content

ally.js

JavaScript library to help modern web applications with accessibility concerns by making accessibility simpler

# API index

When creating web applications or UI widgets these modules may come in handy.

# Countering browser bugs

Every software has its problems - so do browsers. These utilities combat things browsers get wrong.

# Extended :focus Styling

Sometimes :focus is not enough for communicating your application's intentions properly.

# Altering browser focus behavior

While it's best to use standardized features and leave browsers to figure things out, specifications sometimes leave us hanging in limbo.

# Finding elements

In order to work with focusable elements, we must first know which elements we're supposed to work with. See what does "focusable" mean? for a differentiation.

# Element state

Unlike any other ally modules, these components do not take take options.context argument, but expect the element as first argument, allowing easy use in .filter(). See what does "focusable" mean? for a differentiation.

# Manipulating element state

Making up for missing or lacking DOM mutation APIs.

# Reacting to element state

Especially when dealing with transitional user interfaces we need to know when an element can be safely focused.

# DOM traversal

Sometimes you need some DOM traversal utilities

# Values


# Developer modules

When creating libraries these modules may come in handy.

When you find yourself using one of these in your application code, we should talk about what you're trying to achieve and how we could do that as part of the library instead. Get in touch, file an issue explaining what you're trying to achieve!

# DOM traversal (extended)

Sometimes you need some DOM traversal utilities

# Event dispatchers

Emitting events when there's no standardized equivalent

# Event listeners

Translate volatile events to stateful interfaces


# Contributor modules

When working on ally.js these modules may come in handy.

When you find yourself using one of these in your application or library code, we should talk about what you're trying to achieve and how we could do that as part of the library instead. Get in touch, file an issue explaining what you're trying to achieve!

::note These modules are only available to be consumed via ES6, AMD or CommonJS directly, they are not exposed in the production bundle dist/ally.min.js. :::

The internal tools are documented in a less accessible way to make it just a tiny bit harder for someone not working on ally to use them. This is intentional. The stability of these APIs is not guaranteed.