Conversation
| * @param input The Input to compute a description/context label for. | ||
| * @param lookback If true, will use fields on the previous row to compute a | ||
| * label for the given input if it has no fields itself. | ||
| * @returns An accessibility label for the given input, or undefined if one |
There was a problem hiding this comment.
This doesn't match reality, should this method join the array and return it as string?
There was a problem hiding this comment.
Doing that loses some of the commas in the full block readout. I think I'd kind of prefer to have this always return a list, and not export it?
| aria.setState(this.getSvgRoot(), aria.State.LABEL, computeARIALabel(this)); | ||
| configureARIARole(this); | ||
| } | ||
| } |
There was a problem hiding this comment.
I think BlockSvg needs a method called getAriaLabel that internally calls the aria composer. It has to be public because we'll call it from various places such as shortcuts and plugins may also want to call it (imagine someone writes a plugin that adds some accessibility feature for blocks i can't think of right now). adding the method in BlockSvg will allow us to keep the aria composer fully internal as it will be totally transparent to anyone outside the library.
The basics
The details
Resolves
Fixes #9685
Proposed Changes
This PR adds basic support for adding ARIA roles and labels to blocks. It backports the existing behavior from the screenreader branch, with heavy refactoring to improve readability and maintainability.
Future Work
Labeling will be substantially improved by field subclasses customizing their labeling. Those changes will be automatically incorporated; this PR uses the newly-introduced APIs to get appropriate field labels.
Additionally, label generation should be tweaked once Inputs have support for overriding labeling to use those APIs.
When support for detailed readout keyboard shortcuts and "where am I" shortcuts are added, methods to compute labels for the full tree leading up to a block (specified in the design doc) should be added.