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

Navigation: Fix 'ariaLabel' block support #66943

Merged
merged 7 commits into from
Nov 14, 2024
Merged

Conversation

up1512001
Copy link
Member

What?

Added text control field to navigation block to specify other accessible name apart from menu name.

Why?

Closes #66935

How?

  • created accessibleMenuName attribute and storing name provided in text field.
  • setting aria-lable to with provided attribute and if that's empty then applying fallback label with menu name.

Testing Instructions

  1. open post editor & add navigation block
  2. go to Settings > Advance and add any text to Accessible menu name field.
  3. check front end navigation block aria-label will be updated with new provided text.

Screenshots or screencast

Screen.Recording.2024-11-12.at.23.14.44.mov

@up1512001 up1512001 added [Type] Enhancement A suggestion for improvement. [Focus] Accessibility (a11y) Changes that impact accessibility and need corresponding review (e.g. markup changes). [Block] Navigation Affects the Navigation Block labels Nov 12, 2024
@up1512001 up1512001 self-assigned this Nov 12, 2024
@up1512001 up1512001 requested a review from ajitbohra as a code owner November 12, 2024 17:52
Copy link

github-actions bot commented Nov 12, 2024

The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the props-bot label.

If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message.

Co-authored-by: up1512001 <[email protected]>
Co-authored-by: fabiankaegy <[email protected]>
Co-authored-by: getdave <[email protected]>
Co-authored-by: Mamaduka <[email protected]>
Co-authored-by: t-hamano <[email protected]>

To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.

Copy link
Member

@fabiankaegy fabiankaegy left a comment

Choose a reason for hiding this comment

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

Thank you so much for your quick PR here :) This is awesome!

From my perspective this looks great and tests week!

Since it was my ticket though, I want to leave a bit of time for others like @getdave to chime in and provide their feedback :)

@fabiankaegy
Copy link
Member

Actually @up1512001 looks like the test failure here in CI is legit. Seems like some of the test snapshots need to be updated

@getdave getdave requested a review from jeryj November 12, 2024 21:35
Copy link
Contributor

@getdave getdave left a comment

Choose a reason for hiding this comment

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

Based on the rationale provided by @fabiankaegy in the Issue this seems logical to me. Do we have a precedent in any other Core blocks?

@fabiankaegy
Copy link
Member

@getdave As of #41744 we have a block support for aria-label that gets used in a few places. It uses the ariaLabel attribute under the hood. It does not provide a UI for it however. So I'd be okay with changing this PR to only add the attribute but not add a UI just yet if we are concerned about adding it.

Maybe @richtabor has an opinion as I know he has spent some time trying to clean up the Advanced panel

@Mamaduka
Copy link
Member

I agree. Let's solve this using the method from #41744.

@fabiankaegy fabiankaegy added the Needs Dev Note Requires a developer note for a major WordPress release cycle label Nov 13, 2024
@getdave
Copy link
Contributor

getdave commented Nov 13, 2024

Let's be consistent with the other approaches then. I'm curious as to why we didn't provide a UI in the Group block.

@fabiankaegy
Copy link
Member

@getdave
This is what the other issue said:

This implementation does NOT add a UI for the aria-label. A visible option would have the potential to confuse users, and could cause more harm than good if they enter the wrong thing or misunderstand the purpose.
However, allowing users & theme-authors to manually define an aria-label in their templates is something that can significantly enhance the a11y of themes, without exposing any option to users. Furthermore, implementing this as a hook will allow us to implement a UI if at some point in the future we choose to do so.

And agreed 👍 @up1512001 can you make that update? :)

@getdave
Copy link
Contributor

getdave commented Nov 13, 2024

@getdave This is what the other issue said:

Thanks. I should have looked at that more carefully. That seems entirely logical. We can always add a control later if we need.

@t-hamano
Copy link
Contributor

I'm a bit confused, since the Navigation block already supports ariaLabel as a block support, developer should be able to override aria-label via the code editor etc, right?

@up1512001
Copy link
Member Author

up1512001 commented Nov 13, 2024

I'm a bit confused, since the Navigation block already supports ariaLabel as a block support, developer should be able to override aria-label via the code editor etc, right?

This is dynamic block and inside editor user only sees like

<!-- wp:navigation {"ref":51} /-->

that's why ariaLabel help to provide any meaningful explanation to menu like this

<!-- wp:navigation {"ref":51,"ariaLabel":"global header"} /-->

Let me know if I am missing anything 🙇‍♂️

@t-hamano
Copy link
Contributor

So does that mean that the current Navigation block ariaLabel block support doesn't work unless we explicitly add the ariaLabel attribute? Looking at #54418, it seems to work as expected with just the ariaLabel block support.

Or is this PR trying to change how aria-label attributes are handled server-side?

Sorry if I misunderstood something. I'm trying to understand what this PR is trying to achieve.

@Mamaduka
Copy link
Member

You're correct, @t-hamano! The aria-label support was introduced in #54418, but it stopped working properly after that.

To get it working again, I think we just need to fix the logic in the WP_Navigation_Block_Renderer::get_navigation_name method.

@up1512001
Copy link
Member Author

@Mamaduka added early return in WP_Navigation_Block_Renderer::get_navigation_name if ariaLable is not empty.

Screen.Recording.2024-11-13.at.23.28.25.mov

Copy link
Member

@Mamaduka Mamaduka left a comment

Choose a reason for hiding this comment

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

Thanks for the follow-ups, @up1512001!

Everything is working as expected ✅

@Mamaduka Mamaduka changed the title feature: created text control to specify other navigation accessible name Navigation: Fix 'ariaLabel' block support Nov 14, 2024
@Mamaduka Mamaduka merged commit a8a8747 into WordPress:trunk Nov 14, 2024
61 checks passed
@github-actions github-actions bot added this to the Gutenberg 19.8 milestone Nov 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Block] Navigation Affects the Navigation Block [Focus] Accessibility (a11y) Changes that impact accessibility and need corresponding review (e.g. markup changes). Needs Dev Note Requires a developer note for a major WordPress release cycle [Type] Enhancement A suggestion for improvement.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add the ability to manually define an aria-label for the navigation block
5 participants