Skip to content
This repository has been archived by the owner on Feb 22, 2023. It is now read-only.

Add a tabbed ContentSettings mobile modal #1846

Merged
merged 3 commits into from
Oct 6, 2022
Merged

Add a tabbed ContentSettings mobile modal #1846

merged 3 commits into from
Oct 6, 2022

Conversation

obulat
Copy link
Contributor

@obulat obulat commented Sep 22, 2022

Fixes

Fixes #1847 by @obulat

Description

This PR adds a VContentSettingsModal component that is a modal 2/3 the height of the window. It is only displayed on mobile widths, and shows two tabs: Content switcher and the Filters.
Screen Shot 2022-09-22 at 5 28 01 PM

Testing Instructions

Run the app and go to 'https://localhost:8443/search/?q=cat&ff_new_header=on' on mobile width. When you click on the ContentSettings button in the header, the modal should open. You should be able to change the content settings (search type, filters) using the modal, and close it by clicking on the 'Close' button.

Checklist

  • My pull request has a descriptive title (not a vague title like Update 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.

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.

@obulat obulat requested a review from a team as a code owner September 22, 2022 14:30
@obulat obulat self-assigned this Sep 22, 2022
@github-actions
Copy link

github-actions bot commented Sep 22, 2022

Storybook and Tailwind configuration previews: Ready

Storybook: https://wordpress.github.io/openverse-frontend/_preview/1846
Tailwind: https://wordpress.github.io/openverse-frontend/_preview/1846/tailwind

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.

@obulat obulat added this to the Create new header and footer milestone Sep 22, 2022
@openverse-bot openverse-bot added ✨ goal: improvement Improvement to an existing user-facing feature 🕹 aspect: interface Concerns end-users' experience with the software 🟧 priority: high Stalls work on the project or its dependents labels Sep 22, 2022
@github-actions
Copy link

github-actions bot commented Sep 22, 2022

Size Change: -19.8 kB (-2%)

Total Size: 813 kB

Filename Size Change
./.nuxt/dist/client/234.js 0 B -272 B (removed) 🏆
./.nuxt/dist/client/234.modern.js 0 B -277 B (removed) 🏆
./.nuxt/dist/client/235.js 0 B -1.85 kB (removed) 🏆
./.nuxt/dist/client/app.js 131 kB +2.05 kB (+2%)
./.nuxt/dist/client/app.modern.js 123 kB +2.54 kB (+2%)
./.nuxt/dist/client/commons/app.modern.js 77 kB +15 B (0%)
./.nuxt/dist/client/components/v-copy-license.js 998 B -1.95 kB (-66%) 🏆
./.nuxt/dist/client/components/v-copy-license.modern.js 1 kB -1.93 kB (-66%) 🏆
./.nuxt/dist/client/components/v-copy-license/components/v-error-image/components/v-media-reuse/components/v-search-grid/09090664.js 9.47 kB +26 B (0%)
./.nuxt/dist/client/components/v-copy-license/components/v-error-image/components/v-media-reuse/components/v-search-grid/09090664.modern.js 9.44 kB +27 B (0%)
./.nuxt/dist/client/components/v-license-tab-panel.js 521 B -402 B (-44%) 🎉
./.nuxt/dist/client/components/v-license-tab-panel.modern.js 525 B -395 B (-43%) 🎉
./.nuxt/dist/client/components/v-media-reuse.js 1.62 kB +545 B (+51%) 🆘
./.nuxt/dist/client/components/v-media-reuse.modern.js 1.62 kB +537 B (+50%) 🆘
./.nuxt/dist/client/components/v-media-reuse/pages/image/_id.js 0 B -2.95 kB (removed) 🏆
./.nuxt/dist/client/components/v-media-reuse/pages/image/_id.modern.js 0 B -2.93 kB (removed) 🏆
./.nuxt/dist/client/components/v-sources-table.js 15.2 kB +96 B (+1%)
./.nuxt/dist/client/components/v-sources-table.modern.js 15.2 kB +96 B (+1%)
./.nuxt/dist/client/components/v-tab-panel.js 0 B -689 B (removed) 🏆
./.nuxt/dist/client/components/v-tab-panel.modern.js 0 B -685 B (removed) 🏆
./.nuxt/dist/client/components/v-tab.js 0 B -1.73 kB (removed) 🏆
./.nuxt/dist/client/components/v-tab.modern.js 0 B -1.72 kB (removed) 🏆
./.nuxt/dist/client/components/v-tabs.js 0 B -780 B (removed) 🏆
./.nuxt/dist/client/components/v-tabs.modern.js 0 B -766 B (removed) 🏆
./.nuxt/dist/client/pages/audio/_id.js 4.92 kB -1.71 kB (-26%) 🎉
./.nuxt/dist/client/pages/audio/_id.modern.js 4.76 kB -1.7 kB (-26%) 🎉
./.nuxt/dist/client/pages/feedback.js 1.24 kB -2 kB (-62%) 🏆
./.nuxt/dist/client/pages/feedback.modern.js 1.24 kB -1.97 kB (-61%) 🏆
./.nuxt/dist/client/pages/image/_id.js 5.26 kB -1.74 kB (-25%) 🎉
./.nuxt/dist/client/pages/image/_id.modern.js 7.25 kB +487 B (+7%) 🔍
./.nuxt/dist/client/runtime.js 2.67 kB -49 B (-2%)
./.nuxt/dist/client/runtime.modern.js 2.67 kB -51 B (-2%)
./.nuxt/dist/client/vendors/app.js 57.2 kB -17 B (0%)
./.nuxt/dist/client/vendors/app.modern.js 56.3 kB +13 B (0%)
./.nuxt/dist/client/224.js 272 B +272 B (new file) 🆕
./.nuxt/dist/client/224.modern.js 276 B +276 B (new file) 🆕
./.nuxt/dist/client/225.js 1.85 kB +1.85 kB (new file) 🆕
ℹ️ View Unchanged
Filename Size Change
./.nuxt/dist/client/commons/app.js 88.2 kB -3 B (0%)
./.nuxt/dist/client/components/loading-icon.js 745 B -2 B (0%)
./.nuxt/dist/client/components/loading-icon.modern.js 750 B 0 B
./.nuxt/dist/client/components/table-sort-icon.js 509 B 0 B
./.nuxt/dist/client/components/table-sort-icon.modern.js 514 B +1 B (0%)
./.nuxt/dist/client/components/v-all-results-grid.js 2.75 kB -8 B (0%)
./.nuxt/dist/client/components/v-all-results-grid.modern.js 2.73 kB +1 B (0%)
./.nuxt/dist/client/components/v-all-results-grid/pages/search/audio/pages/search/index.js 3.02 kB -1 B (0%)
./.nuxt/dist/client/components/v-all-results-grid/pages/search/audio/pages/search/index.modern.js 2.91 kB -2 B (0%)
./.nuxt/dist/client/components/v-audio-cell.js 357 B +2 B (+1%)
./.nuxt/dist/client/components/v-audio-cell.modern.js 360 B -1 B (0%)
./.nuxt/dist/client/components/v-audio-details.js 1.82 kB -2 B (0%)
./.nuxt/dist/client/components/v-audio-details.modern.js 1.79 kB 0 B
./.nuxt/dist/client/components/v-audio-track-skeleton.js 1.01 kB 0 B
./.nuxt/dist/client/components/v-audio-track-skeleton.modern.js 1.01 kB -1 B (0%)
./.nuxt/dist/client/components/v-audio-track.js 5.12 kB +1 B (0%)
./.nuxt/dist/client/components/v-audio-track.modern.js 5.06 kB -3 B (0%)
./.nuxt/dist/client/components/v-back-to-search-results-link.js 570 B 0 B
./.nuxt/dist/client/components/v-back-to-search-results-link.modern.js 573 B -1 B (0%)
./.nuxt/dist/client/components/v-bone.js 685 B +1 B (0%)
./.nuxt/dist/client/components/v-bone.modern.js 691 B +2 B (0%)
./.nuxt/dist/client/components/v-box-layout.js 1.2 kB -2 B (0%)
./.nuxt/dist/client/components/v-box-layout.modern.js 1.2 kB 0 B
./.nuxt/dist/client/components/v-content-link.js 1.11 kB -1 B (0%)
./.nuxt/dist/client/components/v-content-link.modern.js 1.09 kB 0 B
./.nuxt/dist/client/components/v-content-page.js 466 B 0 B
./.nuxt/dist/client/components/v-content-page.modern.js 471 B 0 B
./.nuxt/dist/client/components/v-content-report-button.js 778 B 0 B
./.nuxt/dist/client/components/v-content-report-button.modern.js 781 B -1 B (0%)
./.nuxt/dist/client/components/v-content-report-form.js 3.75 kB -1 B (0%)
./.nuxt/dist/client/components/v-content-report-form.modern.js 3.56 kB -3 B (0%)
./.nuxt/dist/client/components/v-content-report-popover.js 4.44 kB 0 B
./.nuxt/dist/client/components/v-content-report-popover.modern.js 4.24 kB -6 B (0%)
./.nuxt/dist/client/components/v-copy-button.js 3.98 kB -1 B (0%)
./.nuxt/dist/client/components/v-copy-button.modern.js 3.99 kB 0 B
./.nuxt/dist/client/components/v-dmca-notice.js 749 B +1 B (0%)
./.nuxt/dist/client/components/v-dmca-notice.modern.js 753 B -1 B (0%)
./.nuxt/dist/client/components/v-error-image.js 1.69 kB 0 B
./.nuxt/dist/client/components/v-error-image.modern.js 1.68 kB -4 B (0%)
./.nuxt/dist/client/components/v-error-section.js 372 B 0 B
./.nuxt/dist/client/components/v-error-section.modern.js 376 B 0 B
./.nuxt/dist/client/components/v-external-search-form.js 3.11 kB +1 B (0%)
./.nuxt/dist/client/components/v-external-search-form.modern.js 3.08 kB +2 B (0%)
./.nuxt/dist/client/components/v-external-source-list.js 2.57 kB -2 B (0%)
./.nuxt/dist/client/components/v-external-source-list.modern.js 2.54 kB +1 B (0%)
./.nuxt/dist/client/components/v-full-layout.js 1.48 kB +3 B (0%)
./.nuxt/dist/client/components/v-full-layout.modern.js 1.48 kB -3 B (0%)
./.nuxt/dist/client/components/v-grid-skeleton.js 1.61 kB +1 B (0%)
./.nuxt/dist/client/components/v-grid-skeleton.modern.js 1.61 kB +1 B (0%)
./.nuxt/dist/client/components/v-image-cell-square.js 1.01 kB -1 B (0%)
./.nuxt/dist/client/components/v-image-cell-square.modern.js 1.02 kB 0 B
./.nuxt/dist/client/components/v-image-cell.js 1.43 kB 0 B
./.nuxt/dist/client/components/v-image-cell.modern.js 1.42 kB 0 B
./.nuxt/dist/client/components/v-image-details.js 1.44 kB 0 B
./.nuxt/dist/client/components/v-image-details.modern.js 1.44 kB +2 B (0%)
./.nuxt/dist/client/components/v-image-grid.js 2.53 kB +2 B (0%)
./.nuxt/dist/client/components/v-image-grid.modern.js 2.42 kB +3 B (0%)
./.nuxt/dist/client/components/v-load-more.js 788 B 0 B
./.nuxt/dist/client/components/v-load-more.modern.js 683 B 0 B
./.nuxt/dist/client/components/v-media-license.js 799 B 0 B
./.nuxt/dist/client/components/v-media-license.modern.js 807 B -1 B (0%)
./.nuxt/dist/client/components/v-media-tag.js 430 B 0 B
./.nuxt/dist/client/components/v-media-tag.modern.js 434 B 0 B
./.nuxt/dist/client/components/v-no-results.js 2.77 kB -1 B (0%)
./.nuxt/dist/client/components/v-no-results.modern.js 2.74 kB +2 B (0%)
./.nuxt/dist/client/components/v-radio.js 1.51 kB +1 B (0%)
./.nuxt/dist/client/components/v-radio.modern.js 1.47 kB -5 B (0%)
./.nuxt/dist/client/components/v-related-audio.js 1.23 kB -2 B (0%)
./.nuxt/dist/client/components/v-related-audio.modern.js 1.23 kB +1 B (0%)
./.nuxt/dist/client/components/v-related-images.js 3.09 kB 0 B
./.nuxt/dist/client/components/v-related-images.modern.js 2.97 kB -6 B (0%)
./.nuxt/dist/client/components/v-report-desc-form.js 965 B -1 B (0%)
./.nuxt/dist/client/components/v-report-desc-form.modern.js 964 B -1 B (0%)
./.nuxt/dist/client/components/v-row-layout.js 1.7 kB +3 B (0%)
./.nuxt/dist/client/components/v-row-layout.modern.js 1.7 kB +1 B (0%)
./.nuxt/dist/client/components/v-scroll-button.js 813 B 0 B
./.nuxt/dist/client/components/v-scroll-button.modern.js 819 B +1 B (0%)
./.nuxt/dist/client/components/v-search-grid.js 5.46 kB +2 B (0%)
./.nuxt/dist/client/components/v-search-grid.modern.js 5.4 kB 0 B
./.nuxt/dist/client/components/v-search-results-title.js 660 B +2 B (0%)
./.nuxt/dist/client/components/v-search-results-title.modern.js 651 B -1 B (0%)
./.nuxt/dist/client/components/v-search-type-radio.js 794 B -1 B (0%)
./.nuxt/dist/client/components/v-search-type-radio.modern.js 768 B -2 B (0%)
./.nuxt/dist/client/components/v-server-timeout.js 298 B 0 B
./.nuxt/dist/client/components/v-server-timeout.modern.js 303 B 0 B
./.nuxt/dist/client/components/v-sketch-fab-viewer.js 995 B 0 B
./.nuxt/dist/client/components/v-sketch-fab-viewer.modern.js 894 B 0 B
./.nuxt/dist/client/components/v-skip-to-content-container.js 889 B -1 B (0%)
./.nuxt/dist/client/components/v-skip-to-content-container.modern.js 894 B +1 B (0%)
./.nuxt/dist/client/components/v-snackbar.js 1.18 kB 0 B
./.nuxt/dist/client/components/v-snackbar.modern.js 1.19 kB -1 B (0%)
./.nuxt/dist/client/components/v-warning-suppressor.js 298 B 0 B
./.nuxt/dist/client/components/v-warning-suppressor.modern.js 303 B 0 B
./.nuxt/dist/client/pages/about.js 1.06 kB +1 B (0%)
./.nuxt/dist/client/pages/about.modern.js 1.07 kB 0 B
./.nuxt/dist/client/pages/external-sources.js 1.45 kB -1 B (0%)
./.nuxt/dist/client/pages/external-sources.modern.js 1.45 kB -2 B (0%)
./.nuxt/dist/client/pages/index.js 5.05 kB +4 B (0%)
./.nuxt/dist/client/pages/index.modern.js 4.91 kB -3 B (0%)
./.nuxt/dist/client/pages/preferences.js 1.21 kB 0 B
./.nuxt/dist/client/pages/preferences.modern.js 1.21 kB -1 B (0%)
./.nuxt/dist/client/pages/search-help.js 1.55 kB 0 B
./.nuxt/dist/client/pages/search-help.modern.js 1.55 kB +1 B (0%)
./.nuxt/dist/client/pages/search.js 2.75 kB +1 B (0%)
./.nuxt/dist/client/pages/search.modern.js 2.59 kB -2 B (0%)
./.nuxt/dist/client/pages/search/audio.js 1.19 kB +1 B (0%)
./.nuxt/dist/client/pages/search/audio.modern.js 1.2 kB +3 B (0%)
./.nuxt/dist/client/pages/search/image.js 2.79 kB +5 B (0%)
./.nuxt/dist/client/pages/search/image.modern.js 2.67 kB +1 B (0%)
./.nuxt/dist/client/pages/search/index.js 2.97 kB -6 B (0%)
./.nuxt/dist/client/pages/search/index.modern.js 2.94 kB +1 B (0%)
./.nuxt/dist/client/pages/search/model-3d.js 242 B 0 B
./.nuxt/dist/client/pages/search/model-3d.modern.js 246 B -1 B (0%)
./.nuxt/dist/client/pages/search/search-page.types.js 266 B 0 B
./.nuxt/dist/client/pages/search/search-page.types.modern.js 270 B 0 B
./.nuxt/dist/client/pages/search/video.js 239 B 0 B
./.nuxt/dist/client/pages/search/video.modern.js 243 B -1 B (0%)
./.nuxt/dist/client/pages/sources.js 1.44 kB 0 B
./.nuxt/dist/client/pages/sources.modern.js 1.45 kB -1 B (0%)

compressed-size-action

@zackkrida
Copy link
Member

zackkrida commented Sep 22, 2022

I'm not sure the Close button should live inside of VTabs like this. Couldn't it just live in the specific implementation of the mobile modal instead, something like this?

<VMobileModal>
 <VTabs>
   <template #tabs>
      <VTab v-for="tab in tabs" :id="tab" :key="tab">
        {{ 'tab name here' }}
      </VTab>
      <VIconButton
        class="ms-auto"
        @click="$emit('close')"
      />
   </template>
   <ContentTypeTabPanel />
   <FiltersTabPanel />
 </VTabs>
</VMobileModal>

@obulat
Copy link
Contributor Author

obulat commented Sep 23, 2022

I'm not sure the Close button should live inside of VTabs like this. Couldn't it just live in the specific implementation of the mobile modal instead, something like this?

<VMobileModal>
 <VTabs>
   <template #tabs>
      <VTab v-for="tab in tabs" :id="tab" :key="tab">
        {{ 'tab name here' }}
      </VTab>
      <VIconButton
        class="ms-auto"
        @click="$emit('close')"
      />
   </template>
   <ContentTypeTabPanel />
   <FiltersTabPanel />
 </VTabs>
</VMobileModal>

Thank you, @zackkrida, this is a much better suggestion!

@obulat obulat force-pushed the add/closable_tabs branch 2 times, most recently from 5b0460b to 13aae6d Compare September 27, 2022 11:06
@zackkrida zackkrida requested review from dhruvkb and removed request for sarayourfriend September 27, 2022 19:22
@obulat obulat changed the title Make tabs closable Add a tabbed ContentSettings mobile modal Sep 28, 2022
@obulat obulat marked this pull request as draft September 29, 2022 07:32
@obulat obulat force-pushed the add/closable_tabs branch from e393c0a to 6e147eb Compare October 1, 2022 05:08
@obulat obulat marked this pull request as ready for review October 3, 2022 11:45
@obulat obulat removed this from the Create new header and footer milestone Oct 3, 2022
@obulat obulat force-pushed the add/closable_tabs branch 2 times, most recently from 5f95c66 to c8c2147 Compare October 4, 2022 09:17
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.

This looks amazing! The only issue I see is that the 'footer' of the modal, with the buttons, is not keyboard navigable.

@obulat obulat mentioned this pull request Oct 4, 2022
1 task
@obulat
Copy link
Contributor Author

obulat commented Oct 5, 2022

This looks amazing! The only issue I see is that the 'footer' of the modal, with the buttons, is not keyboard navigable.

For the filters sidebar, we've added the special handling of the Tab buttons on the last element: it should focus the first tabbable element in main. I've made this behavior configurable through prop, and turned it off for the mobile.

@obulat obulat mentioned this pull request Oct 5, 2022
7 tasks
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.

LGTM! It looks really nice, @obulat.

Use ::after for tab underline and add medium size VTab

Create VContentSettingsTabs component

Fix Storybook build

Move components to VHeaderMobile directory

Fix tablist styles

Remove unused style declaration

Polish the modal

Add text button snapshots

Make the modal footer buttons available in the page Tabbing order

Correct text button hover style

Update snapshots
@obulat obulat force-pushed the add/closable_tabs branch from 7653261 to 8a5f3ba Compare October 6, 2022 09:18
Copy link
Member

@dhruvkb dhruvkb left a comment

Choose a reason for hiding this comment

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

In terms of functionality, this is great. The cross button in the top-right is slightly a little more towards the left than the mockups but it's not something to block the PR over.

@obulat obulat merged commit 96ed423 into main Oct 6, 2022
@obulat obulat deleted the add/closable_tabs branch October 6, 2022 11:18
github-actions bot pushed a commit that referenced this pull request Oct 6, 2022
@obulat obulat added 🌟 goal: addition Addition of new feature and removed ✨ goal: improvement Improvement to an existing user-facing feature labels Oct 10, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
🕹 aspect: interface Concerns end-users' experience with the software 🌟 goal: addition Addition of new feature 🟧 priority: high Stalls work on the project or its dependents
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Component: Content settings modal
4 participants