-
Notifications
You must be signed in to change notification settings - Fork 3.8k
feat: Use custom ARIA roledescriptions for different block types #9507
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: add-screen-reader-support-experimental
Are you sure you want to change the base?
Conversation
maribethb
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks, this refactor is great
core/block_svg.ts
Outdated
| * @returns The ARIA roledescription for this block. | ||
| */ | ||
| protected getAriaRoleDescription() { | ||
| if (this.isShadow()) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wonder if replaceable should be added to the specific type? Like "replaceable value block"? Or should replaceable stay in the aria label and not in the role description?
cc @BenHenning for thoughts
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Replaceable was meant to hint at it being a shadow more than its type, so I think I agree with this. If custom block types facilitate special labels then it could still work for shadow blocks (if that ever actually makes sense).
Separately, should this be protected? I assumed we never designed Block functionality for inheritance since Blockly doesn't support custom BlockSvg class implementations. I'm wondering if this needs to be something overridable in the block definition instead.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great callout Maribeth, and thanks for confirming this makes sense to you as well Ben. To clarify, do we want "replaceable" in the label or the role description? I'm inclined towards the label personally, in the same part as we call out the disabled/collapsed modifiers since it seems to be the same kind of thing.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes I think the label makes sense alongside the other modifiers, but defer to Ben if he thinks differently
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated to mention it in the label. @BenHenning PTAL as well. Also I think block definitions are able to override protected methods via mixins?
The basics
The details
Resolves
Fixes #9489
Proposed Changes
This PR updates the
aria-roledescriptionto specify the kind of block, rather than simply "block", with the kind specified in the label. This results in less redundant output and uses hopefully clearer names for the different block types. I also refactored the ARIA label generation code since it had become an unmaintainable mess of string manipulation.