-
Notifications
You must be signed in to change notification settings - Fork 64
Conversation
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.
This is a great improvement!
There are a couple of things that don't match the mockups:
- there is not 'Cross' close button at the top right corner
- the heading font size should be 14px
Co-authored-by: Olga Bulat <[email protected]>
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 for adding the deprecated license icons! That's a great addition 🎉
Navigating to an image result from the search page results in the app crashing. It does work if you reload the result page directly in SSR though. This appears to be an issue with media.license
being undefined instead of a string.
In addition to what Olga pointed out, there's a couple other issues I noticed:
- Keyboard navigation is mostly fine, but we should change the initial focus element to be the license explanation text rather than the Read more link
- On mobile, opening the filters really messes with the layout of the filters on the page. It's also difficult to close the popover by tapping outside of it, which is probably more a Popover bug than it is an issue with this PR. I tested the popover component on mobile in Storybook and they worked fine, tapping outside of the popover closed it as expected. I'm wondering if there's some edge case with mobile Safari where tapping inside a fieldset doesn't register a regular click event or something? I can't reproduce it in Firefox for Android (neither the interaction issue nor the layout issue).
Here's a screenshot of the layout issue on mobile Safari. Note the license buttons are pushed all the way next to the license text.
The icon should have Otherwise this is looking good. |
src/components/VLicenseElements.vue
Outdated
:size="isSmall ? 5 : 6" | ||
:icon-path="icons[element]" | ||
/> | ||
<span class="sr-only">{{ element.toUpperCase() }}</span> |
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.
For pdm
and cc0
or any other "single element licenses/marks" this can be left out as it's redundant with the heading of the popover.
@sarayourfriend please review this PR. If all's okay, I'll resolve the conflicts and merge it. |
I don't currently have access to VoiceOver or NVDA so if someone else can test that it would be ideal. Based on the code changes the problems I was concerned about should be addressed so I'm removing my request for changes. I'll work on setting up a Windows VM this week so I can continue testing NVDA and start testing JAWS as well. |
I noticed two things:
Here is the mockup for reference and a screenshot of expected implementation. The component is from the WordPress Design Library. |
We don't currently have a component to handle tooltips. Can we implement this feature in a separate PR? This one is already really long running. The icon does have an aria-label so it's accessible for screen readers at least. The main reason I'd like to push the tooltip into a separate issue/PR is that tooltips have their own set of complicated a11y considerations that would probably delay this PR even more than it's already been. Whomever implements the tooltip component will need to do some research into the best practices for them. I think it can be implemented using the VPopover or its composables but the a11y requirements are slightly different (especially around focus handling and disclosure interactions). |
Absolutely, that makes sense. Putting my comment aside, excellent work @dhruvkb, as always ✨ |
We could add a tooltip like that by adding |
IIRC SRs behave slightly differently when there's both |
@panchovm can you verify if this PR happens to fix the issues you filed in #759? |
Here's a video of VoiceOver in Safari, using keyboard navigation. Please turn the sound on for the full experience.
CleanShot.2022-02-22.at.11.22.00-converted.mp4 |
@zackkrida I think those are meant to be addressed in a separate issue as discussed in this conversation #850 (comment) (you need to expand the resolved conversation to see it). |
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.
LGTM. I've tried to read through the (extensive) history of updates since I approved this, and I believe everything is done. I created a new issue for the high-priority bug of screen readers not announcing the popover contents: #987
@panchovm if you have an opportunity today, could you test this pull request and then open it on your iPad? You should see a permalink like We have a theory that this pull request fixes the issue you were seeing in #759 If @dhruvkb has merged this before you get to do this, you can test it with the |
@panchovm I merged this pretty quickly because it was repeatedly developing conflicts. You can test this on your iPad by directly opening search-staging. |
I tested it on my iPad on Firefox and Safari and the header bug (#759) has gone. It works perfectly. Excellent work ✨ |
* Rename AudioDetails (#892) * Rename AudioDetails folder * Fix store access * Revert conversion to Composition API * Revert conversion to defineComponent * Update pot * Use v-show instead of v-if for width-based condition (#884) * Use v-show instead of v-if for width-based condition Use v-show instead of v-if to fix server-client mismatch * Fix waveform not loading on SSR * Split CI into discrete jobs (#981) * Split CI into discrete jobs * Update outdated POT file * Skip writing POT file if the only thing changing is the date * Format yaml * Add yaml to lint staged * Get locales when setting up node env * Cram it all into a single workflow * Add getting translations * Update license explanation tooltip (#850) Co-authored-by: Zack Krida <[email protected]> Co-authored-by: sarayourfriend <[email protected]> * Fix attribution HTML glyph reference and fix historical usages as well (#990) * Fix attribution HTML glyph reference and fix historical usages as well * Add missing license parts * Add note to explain directory structure * Refactor media services (#867) * Create a single media-service data fetching object * Move slug creation from media service to the api service * Use typing data from #868 * Update src/constants/media.js Co-authored-by: sarayourfriend <[email protected]> * Apply suggestions from code review Co-authored-by: sarayourfriend <[email protected]> * edit api-service styles; format * fix decode-media-data type import * Return decoded data from the media services Co-authored-by: sarayourfriend <[email protected]> * Make active media setup store and add unit tests * Commit the lock file * Fix merge problems Co-authored-by: sarayourfriend <[email protected]> Co-authored-by: Dhruv Bhanushali <[email protected]> Co-authored-by: Zack Krida <[email protected]>
* Install Pinia * Update the active media store to use Pinia * Delete the Vuex store * Update type definition and use it * Document the store composition variable * Fix a lint error that Prettier did not catch locally * Use `~` instead of `@` in imports * Update the nav store to use Pinia * Rename store * Make mutation payload fields non-nullable * Fix leftover incorrect usage of the active media store * Make active media setup store and add unit tests (#997) * Rename AudioDetails (#892) * Rename AudioDetails folder * Fix store access * Revert conversion to Composition API * Revert conversion to defineComponent * Update pot * Use v-show instead of v-if for width-based condition (#884) * Use v-show instead of v-if for width-based condition Use v-show instead of v-if to fix server-client mismatch * Fix waveform not loading on SSR * Split CI into discrete jobs (#981) * Split CI into discrete jobs * Update outdated POT file * Skip writing POT file if the only thing changing is the date * Format yaml * Add yaml to lint staged * Get locales when setting up node env * Cram it all into a single workflow * Add getting translations * Update license explanation tooltip (#850) Co-authored-by: Zack Krida <[email protected]> Co-authored-by: sarayourfriend <[email protected]> * Fix attribution HTML glyph reference and fix historical usages as well (#990) * Fix attribution HTML glyph reference and fix historical usages as well * Add missing license parts * Add note to explain directory structure * Refactor media services (#867) * Create a single media-service data fetching object * Move slug creation from media service to the api service * Use typing data from #868 * Update src/constants/media.js Co-authored-by: sarayourfriend <[email protected]> * Apply suggestions from code review Co-authored-by: sarayourfriend <[email protected]> * edit api-service styles; format * fix decode-media-data type import * Return decoded data from the media services Co-authored-by: sarayourfriend <[email protected]> * Make active media setup store and add unit tests * Commit the lock file * Fix merge problems Co-authored-by: sarayourfriend <[email protected]> Co-authored-by: Dhruv Bhanushali <[email protected]> Co-authored-by: Zack Krida <[email protected]> * fix possibly undefined * Add tests and other small fixes * Update nuxt.config.ts Co-authored-by: Zack Krida <[email protected]> * Move converted modules to /stores/ and add unit tests * Fix linting error * Update nuxt.config.ts Co-authored-by: sarayourfriend <[email protected]> * Add changes from review * Register component * Make properties readonly * Remove dublicates Co-authored-by: Olga Bulat <[email protected]> Co-authored-by: sarayourfriend <[email protected]> Co-authored-by: Zack Krida <[email protected]>
Fixes
Fixes #761 by @Ad-Mk
Fixes #423 by @obulat
Fixes #541 by @panchovm
Description
This PR
VPopover
to render license explanationsdefineComponent
and 'V-' prefixTesting Instructions
Checklist
Update index.md
).main
) or a parent feature branch.Developer Certificate of Origin
Developer Certificate of Origin