Skip to content
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

Improve accessibility of video block select poster image. #14752

Merged

Conversation

jorgefilipecosta
Copy link
Member

Description

Related in #14416 we have a similar issue but for the featured image that issue is being addressed on #14593.

Here the solution is not as perfect, as we don't have the alt text of the poster image only the URL was saved in the attributes.

How has this been tested?

I used the voice over utility and I checked that a descriptive message is announced after the select/replace poster image button gains focus.

@jorgefilipecosta jorgefilipecosta added [Focus] Accessibility (a11y) Changes that impact accessibility and need corresponding review (e.g. markup changes). [Block] Video Affects the Video Block labels Apr 1, 2019
@@ -232,11 +240,21 @@ class VideoEdit extends Component {
isDefault
onClick={ open }
ref={ this.posterImageButton }
aria-describedby={ `video-block__poster-image-description-${ instanceId }` }
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For simpler maintainability, this id could be assigned to a variable and used in both places.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also saves space :)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated :)

>
{ ! this.props.attributes.poster ? __( 'Select Poster Image' ) : __( 'Replace image' ) }
</Button>
) }
/>
<p
id={ `video-block__poster-image-description-${ instanceId }` }
hidden
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the purpose of using hidden prop here? In other places, we use screen-reader-text class name if the message exists only for screen readers.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @gziolo, nice question!
Like you said we use screen-reader-text class name if the message exists only for screen readers. When we use screen-reader-text the screen readers still announce the text of the element. In this case, we also want to hide this element from screen readers. This element should not appear on the a11y tree by itself. It is only used when the other element that references it is focused and in that case the description is announced as part of the other element because it references it with aria-describedby.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn’t articulate it good enough. This special class hides an element completely unless it receives focus. In this case this class would be applied to p element which never gets focused through tabbing.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@joedolson, could you advise what is the best approach? I saw your name in related docs 😃

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just trying to figure out exactly what this change is doing. It seems like it's adding a description of the image that's currently selected as the poster image - is that correct?

If so, this should be fine. If a hidden element is the target of an aria-describedby or aria-labelledby attribute, that text should be read out by screen readers when they focus on the element that carries the labelling attribute. (In short: being hidden doesn't matter to aria-describedby).

Do I correctly understand what's being done here?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, it’s correct. Thanks for a quick answer 👍

@gziolo gziolo added the [Type] Bug An existing feature does not function as intended label Apr 2, 2019
@jorgefilipecosta jorgefilipecosta force-pushed the update/improve-accessibility-of-select-poster-image branch from aaba291 to cc840ba Compare April 10, 2019 19:51
Copy link
Member

@gziolo gziolo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks good and I learned something new reviewing this PR 😀

@jorgefilipecosta jorgefilipecosta force-pushed the update/improve-accessibility-of-select-poster-image branch from cc840ba to d61b99c Compare April 11, 2019 08:26
@jorgefilipecosta jorgefilipecosta merged commit 9454453 into master Apr 11, 2019
@jorgefilipecosta jorgefilipecosta deleted the update/improve-accessibility-of-select-poster-image branch April 11, 2019 09:49
@youknowriad youknowriad added this to the 5.5 (Gutenberg) milestone Apr 12, 2019
mchowning pushed a commit to mchowning/gutenberg that referenced this pull request Apr 15, 2019
…14752)

## Description
Related in WordPress#14416 we have a similar issue but for the featured image that issue is being addressed on WordPress#14593.

Here the solution is not as perfect, as we don't have the alt text of the poster image only the URL was saved in the attributes.

## How has this been tested?
I used the voice over utility and I checked that a descriptive message is announced after the select/replace poster image button gains focus.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Block] Video Affects the Video Block [Focus] Accessibility (a11y) Changes that impact accessibility and need corresponding review (e.g. markup changes). [Type] Bug An existing feature does not function as intended
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants