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

Fix double-scroll issue on iOS devices #2728

Merged
merged 2 commits into from
Jul 27, 2023
Merged

Fix double-scroll issue on iOS devices #2728

merged 2 commits into from
Jul 27, 2023

Conversation

dhruvkb
Copy link
Member

@dhruvkb dhruvkb commented Jul 27, 2023

Fixes

Fixes #2683 by @fcoveram

Description

This PR fixes the janky scrolling behaviour on iOS by fixing the order in which the 100vh and 100dvh heights are applied. On iOS they were being applied in the opposite order of what's desired, leading to the problem.

Fixing the order as 100vh, 100dvh ensures that dvh wins, if supported, fixing the issue.

Testing Instructions

  1. Install XCode on your Mac (it's huge, like ~8GB so do not use cellular or limited plans)
  2. Check out the PR and run the dev server.
  3. Visit https://localhost:8443 from Safari in the simulator.
  4. Try (and hopefully fail) to reproduce the problem described in Hidden header as scrolling down #2683.

Checklist

  • My pull request has a descriptive title (not a vague title likeUpdate index.md).
  • My pull request targets the default branch of the repository (main) or a parent feature branch.
  • My commit messages follow best practices.
  • My code follows the established code style of the repository.
  • I added or updated tests for the changes I made (if applicable).
  • I added or updated documentation (if applicable).
  • I tried running the project locally and verified that there are no visible errors.
  • I ran the DAG documentation generator (if applicable).

Developer Certificate of Origin

Developer Certificate of Origin
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.


Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.

@dhruvkb dhruvkb requested a review from a team as a code owner July 27, 2023 01:51
@dhruvkb dhruvkb requested review from obulat and sarayourfriend July 27, 2023 01:51
@github-actions github-actions bot added 🧱 stack: documentation Related to Sphinx documentation 🧱 stack: frontend Related to the Nuxt frontend labels Jul 27, 2023
@openverse-bot openverse-bot added 🟥 priority: critical Must be addressed ASAP 🛠 goal: fix Bug fix 🕹 aspect: interface Concerns end-users' experience with the software labels Jul 27, 2023
@dhruvkb dhruvkb requested review from fcoveram and zackkrida and removed request for sarayourfriend July 27, 2023 01:54
@dhruvkb
Copy link
Member Author

dhruvkb commented Jul 27, 2023

Reviewers changed to folks who own iPhones or MacBooks.

@github-actions
Copy link

github-actions bot commented Jul 27, 2023

Size Change: +1.27 kB (0%)

Total Size: 839 kB

Filename Size Change
./frontend/.nuxt/dist/client/232.js 0 B -273 B (removed) 🏆
./frontend/.nuxt/dist/client/232.modern.js 0 B -277 B (removed) 🏆
./frontend/.nuxt/dist/client/233.js 0 B -1.85 kB (removed) 🏆
./frontend/.nuxt/dist/client/app.js 122 kB +214 B (0%)
./frontend/.nuxt/dist/client/app.modern.js 113 kB +138 B (0%)
./frontend/.nuxt/dist/client/components/v-all-results-grid.js 4.03 kB -2.49 kB (-38%) 🎉
./frontend/.nuxt/dist/client/components/v-all-results-grid.modern.js 3.98 kB -2.38 kB (-37%) 🎉
./frontend/.nuxt/dist/client/components/v-grid-skeleton.js 1.52 kB -12 B (-1%)
./frontend/.nuxt/dist/client/components/v-grid-skeleton.modern.js 1.53 kB -11 B (-1%)
./frontend/.nuxt/dist/client/components/v-snackbar.modern.js 1.08 kB +10 B (+1%)
./frontend/.nuxt/dist/client/pages/search/audio.js 1.41 kB -2.7 kB (-66%) 🏆
./frontend/.nuxt/dist/client/pages/search/audio.modern.js 1.39 kB -2.59 kB (-65%) 🏆
./frontend/.nuxt/dist/client/pages/search/index.modern.js 4.13 kB +3.68 kB (+821%) 🆘
./frontend/.nuxt/dist/client/runtime.js 2.72 kB +27 B (+1%)
./frontend/.nuxt/dist/client/runtime.modern.js 2.72 kB +28 B (+1%)
./frontend/.nuxt/dist/client/234.js 273 B +273 B (new file) 🆕
./frontend/.nuxt/dist/client/234.modern.js 277 B +277 B (new file) 🆕
./frontend/.nuxt/dist/client/235.js 1.85 kB +1.85 kB (new file) 🆕
./frontend/.nuxt/dist/client/components/v-all-results-grid/pages/search/audio/pages/search/index.js 3.19 kB +3.19 kB (new file) 🆕
./frontend/.nuxt/dist/client/components/v-all-results-grid/pages/search/audio/pages/search/index.modern.js 3.08 kB +3.08 kB (new file) 🆕
./frontend/.nuxt/dist/client/components/v-icon-button.js 523 B +523 B (new file) 🆕
./frontend/.nuxt/dist/client/components/v-icon-button.modern.js 528 B +528 B (new file) 🆕
ℹ️ View Unchanged
Filename Size Change
./frontend/.nuxt/dist/client/commons/app.js 90.2 kB -4 B (0%)
./frontend/.nuxt/dist/client/commons/app.modern.js 80.8 kB 0 B
./frontend/.nuxt/dist/client/commons/components/v-search-grid/pages/search.js 5.17 kB -1 B (0%)
./frontend/.nuxt/dist/client/commons/components/v-search-grid/pages/search.modern.js 5.61 kB +1 B (0%)
./frontend/.nuxt/dist/client/components/loading-icon.js 732 B +1 B (0%)
./frontend/.nuxt/dist/client/components/loading-icon.modern.js 733 B 0 B
./frontend/.nuxt/dist/client/components/table-sort-icon.js 514 B 0 B
./frontend/.nuxt/dist/client/components/table-sort-icon.modern.js 519 B +1 B (0%)
./frontend/.nuxt/dist/client/components/v-audio-cell.js 571 B 0 B
./frontend/.nuxt/dist/client/components/v-audio-cell.modern.js 575 B -1 B (0%)
./frontend/.nuxt/dist/client/components/v-audio-details.js 1.79 kB +1 B (0%)
./frontend/.nuxt/dist/client/components/v-audio-details.modern.js 1.77 kB 0 B
./frontend/.nuxt/dist/client/components/v-audio-track-skeleton.js 958 B -1 B (0%)
./frontend/.nuxt/dist/client/components/v-audio-track-skeleton.modern.js 960 B -1 B (0%)
./frontend/.nuxt/dist/client/components/v-audio-track.js 5.38 kB +2 B (0%)
./frontend/.nuxt/dist/client/components/v-audio-track.modern.js 5.34 kB -5 B (0%)
./frontend/.nuxt/dist/client/components/v-back-to-search-results-link.js 634 B -2 B (0%)
./frontend/.nuxt/dist/client/components/v-back-to-search-results-link.modern.js 641 B 0 B
./frontend/.nuxt/dist/client/components/v-bone.js 631 B -1 B (0%)
./frontend/.nuxt/dist/client/components/v-bone.modern.js 635 B -1 B (0%)
./frontend/.nuxt/dist/client/components/v-box-layout.js 1.33 kB -1 B (0%)
./frontend/.nuxt/dist/client/components/v-box-layout.modern.js 1.33 kB -1 B (0%)
./frontend/.nuxt/dist/client/components/v-content-link.js 1.06 kB 0 B
./frontend/.nuxt/dist/client/components/v-content-link.modern.js 1.06 kB +2 B (0%)
./frontend/.nuxt/dist/client/components/v-content-page.js 530 B 0 B
./frontend/.nuxt/dist/client/components/v-content-page.modern.js 536 B 0 B
./frontend/.nuxt/dist/client/components/v-content-report-button.js 493 B +1 B (0%)
./frontend/.nuxt/dist/client/components/v-content-report-button.modern.js 497 B 0 B
./frontend/.nuxt/dist/client/components/v-content-report-form.js 3.33 kB -1 B (0%)
./frontend/.nuxt/dist/client/components/v-content-report-form.modern.js 3.21 kB +2 B (0%)
./frontend/.nuxt/dist/client/components/v-content-report-popover.js 3.79 kB +2 B (0%)
./frontend/.nuxt/dist/client/components/v-content-report-popover.modern.js 3.67 kB -1 B (0%)
./frontend/.nuxt/dist/client/components/v-copy-button.js 3.99 kB +1 B (0%)
./frontend/.nuxt/dist/client/components/v-copy-button.modern.js 4 kB 0 B
./frontend/.nuxt/dist/client/components/v-copy-license.js 2.28 kB -1 B (0%)
./frontend/.nuxt/dist/client/components/v-copy-license.modern.js 2.25 kB 0 B
./frontend/.nuxt/dist/client/components/v-dmca-notice.js 793 B +2 B (0%)
./frontend/.nuxt/dist/client/components/v-dmca-notice.modern.js 798 B +1 B (0%)
./frontend/.nuxt/dist/client/components/v-error-image.js 2.41 kB -1 B (0%)
./frontend/.nuxt/dist/client/components/v-error-image.modern.js 2.38 kB -2 B (0%)
./frontend/.nuxt/dist/client/components/v-error-section.js 372 B -1 B (0%)
./frontend/.nuxt/dist/client/components/v-error-section.modern.js 377 B +1 B (0%)
./frontend/.nuxt/dist/client/components/v-external-search-form.js 2 kB +2 B (0%)
./frontend/.nuxt/dist/client/components/v-external-search-form.modern.js 1.98 kB -2 B (0%)
./frontend/.nuxt/dist/client/components/v-external-source-list.js 896 B +2 B (0%)
./frontend/.nuxt/dist/client/components/v-external-source-list.modern.js 896 B 0 B
./frontend/.nuxt/dist/client/components/v-full-layout.js 1.57 kB 0 B
./frontend/.nuxt/dist/client/components/v-full-layout.modern.js 1.57 kB -1 B (0%)
./frontend/.nuxt/dist/client/components/v-home-gallery.js 4.28 kB -1 B (0%)
./frontend/.nuxt/dist/client/components/v-home-gallery.modern.js 4.26 kB 0 B
./frontend/.nuxt/dist/client/components/v-homepage-content.js 1.8 kB +2 B (0%)
./frontend/.nuxt/dist/client/components/v-homepage-content.modern.js 1.77 kB 0 B
./frontend/.nuxt/dist/client/components/v-image-cell.js 1.96 kB +2 B (0%)
./frontend/.nuxt/dist/client/components/v-image-cell.modern.js 1.94 kB 0 B
./frontend/.nuxt/dist/client/components/v-image-details.js 1.44 kB -3 B (0%)
./frontend/.nuxt/dist/client/components/v-image-details.modern.js 1.43 kB -2 B (0%)
./frontend/.nuxt/dist/client/components/v-image-grid.js 4.42 kB -1 B (0%)
./frontend/.nuxt/dist/client/components/v-image-grid.modern.js 4.29 kB -4 B (0%)
./frontend/.nuxt/dist/client/components/v-license-tab-panel.js 642 B 0 B
./frontend/.nuxt/dist/client/components/v-license-tab-panel.modern.js 650 B +1 B (0%)
./frontend/.nuxt/dist/client/components/v-load-more.js 1.18 kB +1 B (0%)
./frontend/.nuxt/dist/client/components/v-load-more.modern.js 1.06 kB -1 B (0%)
./frontend/.nuxt/dist/client/components/v-media-license.js 932 B 0 B
./frontend/.nuxt/dist/client/components/v-media-license.modern.js 939 B 0 B
./frontend/.nuxt/dist/client/components/v-media-reuse.js 2.94 kB 0 B
./frontend/.nuxt/dist/client/components/v-media-reuse.modern.js 2.91 kB -2 B (0%)
./frontend/.nuxt/dist/client/components/v-media-tag.js 416 B 0 B
./frontend/.nuxt/dist/client/components/v-media-tag.modern.js 419 B -1 B (0%)
./frontend/.nuxt/dist/client/components/v-modal.js 1.01 kB 0 B
./frontend/.nuxt/dist/client/components/v-modal.modern.js 997 B +2 B (0%)
./frontend/.nuxt/dist/client/components/v-no-results.js 855 B 0 B
./frontend/.nuxt/dist/client/components/v-no-results.modern.js 858 B +1 B (0%)
./frontend/.nuxt/dist/client/components/v-radio.js 1 kB +2 B (0%)
./frontend/.nuxt/dist/client/components/v-radio.modern.js 1.01 kB +2 B (0%)
./frontend/.nuxt/dist/client/components/v-related-audio.js 1.73 kB 0 B
./frontend/.nuxt/dist/client/components/v-related-audio.modern.js 1.64 kB -3 B (0%)
./frontend/.nuxt/dist/client/components/v-related-images.js 807 B +1 B (0%)
./frontend/.nuxt/dist/client/components/v-related-images.modern.js 719 B +1 B (0%)
./frontend/.nuxt/dist/client/components/v-report-desc-form.js 976 B 0 B
./frontend/.nuxt/dist/client/components/v-report-desc-form.modern.js 980 B 0 B
./frontend/.nuxt/dist/client/components/v-row-layout.js 1.72 kB -2 B (0%)
./frontend/.nuxt/dist/client/components/v-row-layout.modern.js 1.72 kB -2 B (0%)
./frontend/.nuxt/dist/client/components/v-scroll-button.js 891 B 0 B
./frontend/.nuxt/dist/client/components/v-scroll-button.modern.js 891 B -1 B (0%)
./frontend/.nuxt/dist/client/components/v-search-grid.js 6.82 kB +2 B (0%)
./frontend/.nuxt/dist/client/components/v-search-grid.modern.js 6.18 kB +3 B (0%)
./frontend/.nuxt/dist/client/components/v-search-results-title.js 618 B 0 B
./frontend/.nuxt/dist/client/components/v-search-results-title.modern.js 622 B +1 B (0%)
./frontend/.nuxt/dist/client/components/v-server-timeout.js 298 B 0 B
./frontend/.nuxt/dist/client/components/v-server-timeout.modern.js 303 B 0 B
./frontend/.nuxt/dist/client/components/v-sketch-fab-viewer.js 1.01 kB +1 B (0%)
./frontend/.nuxt/dist/client/components/v-sketch-fab-viewer.modern.js 915 B 0 B
./frontend/.nuxt/dist/client/components/v-snackbar.js 1.07 kB +7 B (+1%)
./frontend/.nuxt/dist/client/components/v-sources-table.js 14.3 kB 0 B
./frontend/.nuxt/dist/client/components/v-sources-table.modern.js 14.4 kB +1 B (0%)
./frontend/.nuxt/dist/client/components/v-warning-suppressor.js 306 B 0 B
./frontend/.nuxt/dist/client/components/v-warning-suppressor.modern.js 311 B 0 B
./frontend/.nuxt/dist/client/pages/about.js 1.42 kB +1 B (0%)
./frontend/.nuxt/dist/client/pages/about.modern.js 1.42 kB -1 B (0%)
./frontend/.nuxt/dist/client/pages/audio/_id/index.js 6.73 kB +6 B (0%)
./frontend/.nuxt/dist/client/pages/audio/_id/index.modern.js 6.58 kB +6 B (0%)
./frontend/.nuxt/dist/client/pages/feedback.js 1.35 kB -2 B (0%)
./frontend/.nuxt/dist/client/pages/feedback.modern.js 1.36 kB -1 B (0%)
./frontend/.nuxt/dist/client/pages/image/_id/index.js 7.05 kB +7 B (0%)
./frontend/.nuxt/dist/client/pages/image/_id/index.modern.js 6.87 kB +4 B (0%)
./frontend/.nuxt/dist/client/pages/image/_id/report.js 4.89 kB +2 B (0%)
./frontend/.nuxt/dist/client/pages/image/_id/report.modern.js 4.67 kB 0 B
./frontend/.nuxt/dist/client/pages/index.js 6.34 kB 0 B
./frontend/.nuxt/dist/client/pages/index.modern.js 6.3 kB +1 B (0%)
./frontend/.nuxt/dist/client/pages/preferences.js 1.32 kB 0 B
./frontend/.nuxt/dist/client/pages/preferences.modern.js 1.31 kB -1 B (0%)
./frontend/.nuxt/dist/client/pages/privacy.js 1.26 kB 0 B
./frontend/.nuxt/dist/client/pages/privacy.modern.js 1.26 kB 0 B
./frontend/.nuxt/dist/client/pages/search-help.js 1.62 kB +1 B (0%)
./frontend/.nuxt/dist/client/pages/search-help.modern.js 1.61 kB -1 B (0%)
./frontend/.nuxt/dist/client/pages/search.js 2.26 kB +1 B (0%)
./frontend/.nuxt/dist/client/pages/search.modern.js 2.06 kB +2 B (0%)
./frontend/.nuxt/dist/client/pages/search/image.js 544 B 0 B
./frontend/.nuxt/dist/client/pages/search/image.modern.js 549 B 0 B
./frontend/.nuxt/dist/client/pages/search/index.js 442 B +1 B (0%)
./frontend/.nuxt/dist/client/pages/search/model-3d.js 243 B +1 B (0%)
./frontend/.nuxt/dist/client/pages/search/model-3d.modern.js 246 B 0 B
./frontend/.nuxt/dist/client/pages/search/search-page.types.js 266 B 0 B
./frontend/.nuxt/dist/client/pages/search/search-page.types.modern.js 270 B -1 B (0%)
./frontend/.nuxt/dist/client/pages/search/video.js 240 B 0 B
./frontend/.nuxt/dist/client/pages/search/video.modern.js 243 B -1 B (0%)
./frontend/.nuxt/dist/client/pages/sources.js 1.53 kB -1 B (0%)
./frontend/.nuxt/dist/client/pages/sources.modern.js 1.54 kB +1 B (0%)
./frontend/.nuxt/dist/client/vendors/app.js 68.3 kB +1 B (0%)
./frontend/.nuxt/dist/client/vendors/app.modern.js 68.1 kB +4 B (0%)

compressed-size-action

@github-actions
Copy link

Full-stack documentation: https://docs.openverse.org/_preview/2728

Please note that GitHub pages takes a little time to deploy newly pushed code, if the links above don't work or you see old versions, wait 5 minutes and try again.

You can check the GitHub pages deployment action list to see the current status of the deployments.

Copy link
Contributor

@obulat obulat left a comment

Choose a reason for hiding this comment

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

I tested using an iPhone emulator, and the bug when you couldn't see the top of the header when you navigate from the homepage to the search page is fixed - so approving to unblock this.

I think we also need to add dyn-screen to the default layout. Also, in the emulator, I can see a white space in the bottom of the homepage. Can you see it on an iphone, @dhruvkb ?

Screenshot 2023-07-27 at 11 28 53 AM

frontend/tailwind.config.js Show resolved Hide resolved
@dhruvkb
Copy link
Member Author

dhruvkb commented Jul 27, 2023

@obulat that white space is likely because of the absence of the soft keyboard. It's not present on the actual phone.

@obulat
Copy link
Contributor

obulat commented Jul 27, 2023

@obulat that white space is likely because of the absence of the soft keyboard. It's not present on the actual phone.

Nice! So happy that it's not a real problem :)

Copy link
Member

@zackkrida zackkrida left a comment

Choose a reason for hiding this comment

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

@obulat is right that we need to add this to the homepage, either here or another PR is fine. The bug in question is fixed. Tested in the simulator and on an actual iPhone 12.

@dhruvkb
Copy link
Member Author

dhruvkb commented Jul 27, 2023

I've updated the PR to include the changes to the default and content-layout layouts. It can be merged when tests have passed.

Copy link
Contributor

@fcoveram fcoveram left a comment

Choose a reason for hiding this comment

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

It works great now ✨ 🚀

@fcoveram
Copy link
Contributor

I tested it on my iPhone and also Chrome in a Google Pixel phone, and noticed an issue that does not block this work in any way.

Here is the homepage

Safari on iPhone 12 Pro Chrome on Google Pixel
Openverse homepage on Safari browser Openverse homepage on Chrome browser

The footer is behind the browser's bottom part. I personally don't think is a problem. And saw that other similar sites have the same issue in both browsers in both OS.

But I do see a white space when scrolling after tapping the search input.

safari.screen.recording.mp4

@dhruvkb
Copy link
Member Author

dhruvkb commented Jul 27, 2023

@fcoveram that's the same white space that @obulat pointed out, it's strange that it only appears when the search bar is focused. I'll investigate immediately, but merging this PR because it's "critical" priority.

@dhruvkb dhruvkb merged commit e5d41da into main Jul 27, 2023
@dhruvkb dhruvkb changed the title Fix order of fallback using array values Fix double-scroll issue on iOS devices Jul 27, 2023
@dhruvkb dhruvkb deleted the ios_scroll branch July 27, 2023 16:40
@dhruvkb
Copy link
Member Author

dhruvkb commented Jul 28, 2023

Update regarding the white space that appears below the page on input focus: That seems to be a Safari thing that cannot be disabled or worked around. Confirmed this to also affect Wikipedia and DuckDuckGo. Other iOS browsers like Arc or Quiche do not suffer from this bug.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🕹 aspect: interface Concerns end-users' experience with the software 🛠 goal: fix Bug fix 🟥 priority: critical Must be addressed ASAP 🧱 stack: documentation Related to Sphinx documentation 🧱 stack: frontend Related to the Nuxt frontend
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

Hidden header as scrolling down
5 participants