1.0.0 - A New Hope
November 18th 2015. We're embarking on a journey to make accessibility simpler. Version 1.0.0 - the official release - of ally.js has been 14 months in the making. But it's only the beginning of a long story - or so I hope.
The mission
Making accessibility simpler (for developers) by providing
- providing core functionality (not complete solutions)
- documentation to learn about accessibility requirements
- the basis figure out how specifications need to evolve
- a common ground for the community to collaborate
The plan
I've laid the foundation for collaboration. My goals are laid out. Everything is done on github, in the open. Everything is up for discussion. Anyone can join. See contributing to ally.js for more.
The past
Version 1.0.0 is a complete rewrite from the the early 0.0.x releases, there are no breaking changes, it is a giant breaking change. More than 400 commits have been made since 0.0.7, resulting in a few changes:
- moving dependencies from bower to npm (in fact, abandoning bower altogether)
- moving source from AMD to ES6 Module Syntax
- unifying API of all functions, see the API docs
- adding ES6 build infrastructure - issue #1
- adding unit tests - issue #2 (>90% coverage!)
- adding
ally.query.firstTabbable(replacingfocus/first) to find the first keyboard focusable element in a sub-tree - adding
strategy: 'strict'option toally.query.focusableto find elements by filters unavailable toquerySelectorAll()- i.e. Shadow DOM without the "Shadow Piercing Descendant Combinator", scrollable containers,-webkit-user-modify: read-write- issue #17, issue #21 ally.query.focusableno longer considers<html>and<body>focusable - issue #31- adding
ally.is.focusRelevantto identify technically focusable elements (refactored fromally.is.focusable) - adding
ally.is.onlyTabbableto identify elements that cannot be focused by script, but by keyboard - adding
ally.element.disabled(refactored fromfocus/disabled) - issue #33 - adding
ally.when.keyto observe simple keyboard input - issue #47 - adding
ally.get.insignificantBranchesto find branches not relevant to a given set of elements - issue #32 - adding
ally.maintain.hiddento hide everything in the DOM that is not relevant to a given set of elements - issue #46 - fixing
ally.is.visibleby removing dimension constraint - issue #14 - fixing
ally.is.focusableto also identify "edge-cases" - issue #17, issue #20, issue #21
Breaking changes (compared to 0.0.7)
- ally.js is no longer available through bower, other than by downloading the built archive
src/was ES5 and AMD, it is now ES6. AMD modules are available indist/amd/- dropping
focus/firstin favor ofally.query.firstTabbable - dropping
focus/trapin favor ofally.maintain.disabled ally.is.validArea(dom/is-valid-area) now returnsfalsefor elements that are not<area>ally.is.validTabindex(dom/is-valid-tabindex) now returnsfalsefor elements withouttabindexattributeally.style.focusSourcehas methods.next()and.repeat()removed
Renamed Files
- renamed
dom/active-elements.jstoget/active-elements.js - renamed
dom/focus-target.jstoget/focus-target.js - renamed
dom/is-disabled.jstois/disabled.js - renamed
dom/is-focusable.jstois/focusable.js - renamed
dom/is-shadowed.jstois/shadowed.js - renamed
dom/is-tabbable.jstois/tabbable.js - renamed
dom/is-valid-area.jstois/valid-area.js - renamed
dom/is-valid-tabindex.jstois/valid-tabindex.js - renamed
dom/is-visible.jstois/visible.js - renamed
dom/node-array.jstoutil/node-array.js - renamed
dom/path.jstoget/parents.js - renamed
dom/query-focusable.jstoquery/focusable.js - renamed
dom/query-tabbable.jstoquery/tabbable.js - renamed
dom/query-tabsequence.jstoquery/tabsequence.js - renamed
dom/shadow-host-ancestors.jstoget/shadow-host-parents.js - renamed
dom/when-visible.jstowhen/visible-area.js - renamed
dom/shadow-host.jstoget/shadow-host.js - renamed
dom/sort-tabindex.jstoutil/sort-elements-by-tabindex.js - renamed
dom/visible-quotient.jstoutil/visible-area.js - renamed
event/interaction-type-listener.jstoobserve/interaction-type.js - renamed
focus/source.jstostyle/focus-source.js - renamed
focus/when-visible.jstowhen/focusable.js - renamed
focus/within.jstostyle/focus-within.js - renamed
focus/disable-focustomaintain/disabled