reactjs/react-a11y

Have a look at `romeovs/react-a11y`, possibly for v1.0.0

romeovs opened this issue · 2 comments

Hi guys,

I really like the work you've been doing on react-a11y. I think the problem it
is trying to solve is an important one and I think it does a great job solving
it.

However, after looking at the source code, I felt the project could move faster
if it were built with more modularity in mind.

After forking the project to work on some of the open issues (I've created some
pull requests), I felt that it would be more feasible to do a total rewrite
(starting from you code) than to attempt to change the architecture bit by bit.
So I did!

Take a look at my repo. You'll see I've
changed quite a bit. I've tried to document the changes as clearly as possible in the
README, but here is the gist of it:

  • Rules are now all in separate files, which makes them a lot more maintainable.
  • Rules are pluggable, other people can write their own plugins to add more
    rules.
  • react-a11y now uses ReactDOM.finDOMNode instead of
    document.getElementById, because this caused a lot of issues (#54, #55, #77,
    #85, #102).
  • It is now possible to use react-a11y on the server-side with no problems!
    The tests reflect this.
  • Rule tests are generated automatically from the rule definititions. Rules can
    specify examples that should pass or fail, and these examples are used in the tests.
  • Rule docs are generated automatically from the rule definitions in the same
    way the rule tests are.
  • The api has changed a lot, but the old options still work (with a deprecation
    warning). The defaults for the new options are based on their old
    counterparts.
  • Rule warnings have an accompanying url that points to an article that
    describes the error in more depth.
  • There are no dependencies.
  • Tests now run both in node with mocha and in the browser with karma.

I incorporated a lot of your code of course, mainly from your rules (as well as
some rules from eslint-plugin-jsx-a11y).

I hope you like the work I did. It would be nice if we could find a way for
these changes to be moved back into this fork (as a next major version for
example). I would love to remain a contributor so I can help maintain the new
codebase.

Please let me know if you feel the same about merging the forks, and how you
think we should go about it!

Anyways, keep up the good work!

gf3 commented

wow this is awesome, +1 to this

All of the changes made in romeovs's fork have been merged and included in v1.0.0! 🎆 Please update to v1.0.0 to receive all these wonderful improvements!