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

Update the modal design #40781

Merged
merged 23 commits into from Jul 6, 2022
Merged

Update the modal design #40781

merged 23 commits into from Jul 6, 2022

Conversation

jameskoster
Copy link
Contributor

Our modals look a little tired:

current.mp4

This PR tries a few adjustments:

  • Encourage focus on the modal contents by blurring the background
  • Header styling:
    • Reduce noise (underline)
    • Adjust hierarchy – larger heading and close icon
  • Softens the corners
new.mp4

Perhaps some of these changes are more successful than others. Or perhaps none of them are :) What do you think?

@jameskoster jameskoster added General Interface Parts of the UI which don't fall neatly under other labels. Needs Design Feedback Needs general design feedback. labels May 3, 2022
@@ -77,7 +82,7 @@
left: 0;

.components-modal__header-heading {
font-size: 1rem;
font-size: 1.2rem;
Copy link
Contributor Author

Choose a reason for hiding this comment

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

It would be nice for things like this to be systematised, I'm aware of the experimental Text component, but it's not widely used. Perhaps there's a better way?

Copy link
Contributor

Choose a reason for hiding this comment

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

I'd personally love to see the Text and Heading components user more often.

I'm not sure if we need to first assess the type scale (and the rest of the styles), but otherwise I think we should slowly try to adopt them in other components, find out if they match our needs and make any necessary changes, before then rolling them out more widely across Gutenberg

@github-actions
Copy link

github-actions bot commented May 3, 2022

Size Change: -116 B (0%)

Total Size: 1.25 MB

Filename Size Change
build/block-editor/index.min.js 152 kB +1 B (0%)
build/block-editor/style-rtl.css 14.5 kB -7 B (0%)
build/block-editor/style.css 14.5 kB -6 B (0%)
build/components/index.min.js 230 kB +76 B (0%)
build/components/style-rtl.css 14 kB +38 B (0%)
build/components/style.css 14 kB +39 B (0%)
build/edit-navigation/style-rtl.css 4.02 kB -9 B (0%)
build/edit-navigation/style.css 4.03 kB -9 B (0%)
build/edit-post/style-rtl.css 6.97 kB -58 B (-1%)
build/edit-post/style.css 6.97 kB -58 B (-1%)
build/edit-site/style-rtl.css 8.23 kB -51 B (-1%)
build/edit-site/style.css 8.21 kB -50 B (-1%)
build/edit-widgets/style-rtl.css 4.35 kB -11 B (0%)
build/edit-widgets/style.css 4.35 kB -11 B (0%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 982 B
build/annotations/index.min.js 2.76 kB
build/api-fetch/index.min.js 2.26 kB
build/autop/index.min.js 2.14 kB
build/blob/index.min.js 475 B
build/block-directory/index.min.js 6.58 kB
build/block-directory/style-rtl.css 990 B
build/block-directory/style.css 991 B
build/block-editor/default-editor-styles-rtl.css 378 B
build/block-editor/default-editor-styles.css 378 B
build/block-library/blocks/archives/editor-rtl.css 61 B
build/block-library/blocks/archives/editor.css 60 B
build/block-library/blocks/archives/style-rtl.css 65 B
build/block-library/blocks/archives/style.css 65 B
build/block-library/blocks/audio/editor-rtl.css 150 B
build/block-library/blocks/audio/editor.css 150 B
build/block-library/blocks/audio/style-rtl.css 103 B
build/block-library/blocks/audio/style.css 103 B
build/block-library/blocks/audio/theme-rtl.css 110 B
build/block-library/blocks/audio/theme.css 110 B
build/block-library/blocks/avatar/editor-rtl.css 116 B
build/block-library/blocks/avatar/editor.css 116 B
build/block-library/blocks/avatar/style-rtl.css 59 B
build/block-library/blocks/avatar/style.css 59 B
build/block-library/blocks/block/editor-rtl.css 161 B
build/block-library/blocks/block/editor.css 161 B
build/block-library/blocks/button/editor-rtl.css 441 B
build/block-library/blocks/button/editor.css 441 B
build/block-library/blocks/button/style-rtl.css 543 B
build/block-library/blocks/button/style.css 543 B
build/block-library/blocks/buttons/editor-rtl.css 292 B
build/block-library/blocks/buttons/editor.css 292 B
build/block-library/blocks/buttons/style-rtl.css 275 B
build/block-library/blocks/buttons/style.css 275 B
build/block-library/blocks/calendar/style-rtl.css 207 B
build/block-library/blocks/calendar/style.css 207 B
build/block-library/blocks/categories/editor-rtl.css 84 B
build/block-library/blocks/categories/editor.css 83 B
build/block-library/blocks/categories/style-rtl.css 79 B
build/block-library/blocks/categories/style.css 79 B
build/block-library/blocks/code/style-rtl.css 103 B
build/block-library/blocks/code/style.css 103 B
build/block-library/blocks/code/theme-rtl.css 124 B
build/block-library/blocks/code/theme.css 124 B
build/block-library/blocks/columns/editor-rtl.css 108 B
build/block-library/blocks/columns/editor.css 108 B
build/block-library/blocks/columns/style-rtl.css 406 B
build/block-library/blocks/columns/style.css 406 B
build/block-library/blocks/comment-author-avatar/editor-rtl.css 125 B
build/block-library/blocks/comment-author-avatar/editor.css 125 B
build/block-library/blocks/comment-content/style-rtl.css 92 B
build/block-library/blocks/comment-content/style.css 92 B
build/block-library/blocks/comment-template/style-rtl.css 187 B
build/block-library/blocks/comment-template/style.css 185 B
build/block-library/blocks/comments-pagination-numbers/editor-rtl.css 123 B
build/block-library/blocks/comments-pagination-numbers/editor.css 121 B
build/block-library/blocks/comments-pagination/editor-rtl.css 222 B
build/block-library/blocks/comments-pagination/editor.css 209 B
build/block-library/blocks/comments-pagination/style-rtl.css 235 B
build/block-library/blocks/comments-pagination/style.css 231 B
build/block-library/blocks/comments-title/editor-rtl.css 75 B
build/block-library/blocks/comments-title/editor.css 75 B
build/block-library/blocks/comments/editor-rtl.css 95 B
build/block-library/blocks/comments/editor.css 95 B
build/block-library/blocks/cover/editor-rtl.css 615 B
build/block-library/blocks/cover/editor.css 616 B
build/block-library/blocks/cover/style-rtl.css 1.55 kB
build/block-library/blocks/cover/style.css 1.55 kB
build/block-library/blocks/embed/editor-rtl.css 293 B
build/block-library/blocks/embed/editor.css 293 B
build/block-library/blocks/embed/style-rtl.css 410 B
build/block-library/blocks/embed/style.css 410 B
build/block-library/blocks/embed/theme-rtl.css 110 B
build/block-library/blocks/embed/theme.css 110 B
build/block-library/blocks/file/editor-rtl.css 300 B
build/block-library/blocks/file/editor.css 300 B
build/block-library/blocks/file/style-rtl.css 253 B
build/block-library/blocks/file/style.css 254 B
build/block-library/blocks/file/view.min.js 346 B
build/block-library/blocks/freeform/editor-rtl.css 2.44 kB
build/block-library/blocks/freeform/editor.css 2.44 kB
build/block-library/blocks/gallery/editor-rtl.css 948 B
build/block-library/blocks/gallery/editor.css 950 B
build/block-library/blocks/gallery/style-rtl.css 1.5 kB
build/block-library/blocks/gallery/style.css 1.49 kB
build/block-library/blocks/gallery/theme-rtl.css 108 B
build/block-library/blocks/gallery/theme.css 108 B
build/block-library/blocks/group/editor-rtl.css 333 B
build/block-library/blocks/group/editor.css 333 B
build/block-library/blocks/group/style-rtl.css 57 B
build/block-library/blocks/group/style.css 57 B
build/block-library/blocks/group/theme-rtl.css 78 B
build/block-library/blocks/group/theme.css 78 B
build/block-library/blocks/heading/style-rtl.css 76 B
build/block-library/blocks/heading/style.css 76 B
build/block-library/blocks/html/editor-rtl.css 327 B
build/block-library/blocks/html/editor.css 329 B
build/block-library/blocks/image/editor-rtl.css 738 B
build/block-library/blocks/image/editor.css 737 B
build/block-library/blocks/image/style-rtl.css 524 B
build/block-library/blocks/image/style.css 530 B
build/block-library/blocks/image/theme-rtl.css 110 B
build/block-library/blocks/image/theme.css 110 B
build/block-library/blocks/latest-comments/style-rtl.css 284 B
build/block-library/blocks/latest-comments/style.css 284 B
build/block-library/blocks/latest-posts/editor-rtl.css 199 B
build/block-library/blocks/latest-posts/editor.css 198 B
build/block-library/blocks/latest-posts/style-rtl.css 463 B
build/block-library/blocks/latest-posts/style.css 462 B
build/block-library/blocks/list/style-rtl.css 88 B
build/block-library/blocks/list/style.css 88 B
build/block-library/blocks/media-text/editor-rtl.css 266 B
build/block-library/blocks/media-text/editor.css 263 B
build/block-library/blocks/media-text/style-rtl.css 493 B
build/block-library/blocks/media-text/style.css 490 B
build/block-library/blocks/more/editor-rtl.css 431 B
build/block-library/blocks/more/editor.css 431 B
build/block-library/blocks/navigation-link/editor-rtl.css 705 B
build/block-library/blocks/navigation-link/editor.css 703 B
build/block-library/blocks/navigation-link/style-rtl.css 115 B
build/block-library/blocks/navigation-link/style.css 115 B
build/block-library/blocks/navigation-submenu/editor-rtl.css 296 B
build/block-library/blocks/navigation-submenu/editor.css 295 B
build/block-library/blocks/navigation-submenu/view.min.js 402 B
build/block-library/blocks/navigation/editor-rtl.css 2.03 kB
build/block-library/blocks/navigation/editor.css 2.04 kB
build/block-library/blocks/navigation/style-rtl.css 1.96 kB
build/block-library/blocks/navigation/style.css 1.95 kB
build/block-library/blocks/navigation/view-modal.min.js 2.78 kB
build/block-library/blocks/navigation/view.min.js 423 B
build/block-library/blocks/nextpage/editor-rtl.css 395 B
build/block-library/blocks/nextpage/editor.css 395 B
build/block-library/blocks/page-list/editor-rtl.css 363 B
build/block-library/blocks/page-list/editor.css 363 B
build/block-library/blocks/page-list/style-rtl.css 175 B
build/block-library/blocks/page-list/style.css 175 B
build/block-library/blocks/paragraph/editor-rtl.css 157 B
build/block-library/blocks/paragraph/editor.css 157 B
build/block-library/blocks/paragraph/style-rtl.css 260 B
build/block-library/blocks/paragraph/style.css 260 B
build/block-library/blocks/post-author/style-rtl.css 175 B
build/block-library/blocks/post-author/style.css 176 B
build/block-library/blocks/post-comments-form/editor-rtl.css 96 B
build/block-library/blocks/post-comments-form/editor.css 96 B
build/block-library/blocks/post-comments-form/style-rtl.css 495 B
build/block-library/blocks/post-comments-form/style.css 495 B
build/block-library/blocks/post-comments/editor-rtl.css 77 B
build/block-library/blocks/post-comments/editor.css 77 B
build/block-library/blocks/post-comments/style-rtl.css 632 B
build/block-library/blocks/post-comments/style.css 630 B
build/block-library/blocks/post-excerpt/editor-rtl.css 73 B
build/block-library/blocks/post-excerpt/editor.css 73 B
build/block-library/blocks/post-excerpt/style-rtl.css 69 B
build/block-library/blocks/post-excerpt/style.css 69 B
build/block-library/blocks/post-featured-image/editor-rtl.css 605 B
build/block-library/blocks/post-featured-image/editor.css 605 B
build/block-library/blocks/post-featured-image/style-rtl.css 153 B
build/block-library/blocks/post-featured-image/style.css 153 B
build/block-library/blocks/post-template/editor-rtl.css 99 B
build/block-library/blocks/post-template/editor.css 98 B
build/block-library/blocks/post-template/style-rtl.css 282 B
build/block-library/blocks/post-template/style.css 282 B
build/block-library/blocks/post-terms/style-rtl.css 73 B
build/block-library/blocks/post-terms/style.css 73 B
build/block-library/blocks/post-title/style-rtl.css 80 B
build/block-library/blocks/post-title/style.css 80 B
build/block-library/blocks/preformatted/style-rtl.css 103 B
build/block-library/blocks/preformatted/style.css 103 B
build/block-library/blocks/pullquote/editor-rtl.css 198 B
build/block-library/blocks/pullquote/editor.css 198 B
build/block-library/blocks/pullquote/style-rtl.css 370 B
build/block-library/blocks/pullquote/style.css 370 B
build/block-library/blocks/pullquote/theme-rtl.css 167 B
build/block-library/blocks/pullquote/theme.css 167 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 122 B
build/block-library/blocks/query-pagination-numbers/editor.css 121 B
build/block-library/blocks/query-pagination/editor-rtl.css 221 B
build/block-library/blocks/query-pagination/editor.css 211 B
build/block-library/blocks/query-pagination/style-rtl.css 234 B
build/block-library/blocks/query-pagination/style.css 231 B
build/block-library/blocks/query/editor-rtl.css 369 B
build/block-library/blocks/query/editor.css 369 B
build/block-library/blocks/quote/style-rtl.css 213 B
build/block-library/blocks/quote/style.css 213 B
build/block-library/blocks/quote/theme-rtl.css 223 B
build/block-library/blocks/quote/theme.css 226 B
build/block-library/blocks/read-more/style-rtl.css 132 B
build/block-library/blocks/read-more/style.css 132 B
build/block-library/blocks/rss/editor-rtl.css 202 B
build/block-library/blocks/rss/editor.css 204 B
build/block-library/blocks/rss/style-rtl.css 289 B
build/block-library/blocks/rss/style.css 288 B
build/block-library/blocks/search/editor-rtl.css 165 B
build/block-library/blocks/search/editor.css 165 B
build/block-library/blocks/search/style-rtl.css 385 B
build/block-library/blocks/search/style.css 386 B
build/block-library/blocks/search/theme-rtl.css 114 B
build/block-library/blocks/search/theme.css 114 B
build/block-library/blocks/separator/editor-rtl.css 146 B
build/block-library/blocks/separator/editor.css 146 B
build/block-library/blocks/separator/style-rtl.css 233 B
build/block-library/blocks/separator/style.css 233 B
build/block-library/blocks/separator/theme-rtl.css 194 B
build/block-library/blocks/separator/theme.css 194 B
build/block-library/blocks/shortcode/editor-rtl.css 464 B
build/block-library/blocks/shortcode/editor.css 464 B
build/block-library/blocks/site-logo/editor-rtl.css 708 B
build/block-library/blocks/site-logo/editor.css 708 B
build/block-library/blocks/site-logo/style-rtl.css 192 B
build/block-library/blocks/site-logo/style.css 192 B
build/block-library/blocks/site-tagline/editor-rtl.css 86 B
build/block-library/blocks/site-tagline/editor.css 86 B
build/block-library/blocks/site-title/editor-rtl.css 84 B
build/block-library/blocks/site-title/editor.css 84 B
build/block-library/blocks/social-link/editor-rtl.css 177 B
build/block-library/blocks/social-link/editor.css 177 B
build/block-library/blocks/social-links/editor-rtl.css 674 B
build/block-library/blocks/social-links/editor.css 673 B
build/block-library/blocks/social-links/style-rtl.css 1.37 kB
build/block-library/blocks/social-links/style.css 1.36 kB
build/block-library/blocks/spacer/editor-rtl.css 322 B
build/block-library/blocks/spacer/editor.css 322 B
build/block-library/blocks/spacer/style-rtl.css 48 B
build/block-library/blocks/spacer/style.css 48 B
build/block-library/blocks/table/editor-rtl.css 494 B
build/block-library/blocks/table/editor.css 494 B
build/block-library/blocks/table/style-rtl.css 611 B
build/block-library/blocks/table/style.css 609 B
build/block-library/blocks/table/theme-rtl.css 175 B
build/block-library/blocks/table/theme.css 175 B
build/block-library/blocks/tag-cloud/style-rtl.css 226 B
build/block-library/blocks/tag-cloud/style.css 227 B
build/block-library/blocks/template-part/editor-rtl.css 149 B
build/block-library/blocks/template-part/editor.css 149 B
build/block-library/blocks/template-part/theme-rtl.css 101 B
build/block-library/blocks/template-part/theme.css 101 B
build/block-library/blocks/text-columns/editor-rtl.css 95 B
build/block-library/blocks/text-columns/editor.css 95 B
build/block-library/blocks/text-columns/style-rtl.css 166 B
build/block-library/blocks/text-columns/style.css 166 B
build/block-library/blocks/verse/style-rtl.css 87 B
build/block-library/blocks/verse/style.css 87 B
build/block-library/blocks/video/editor-rtl.css 561 B
build/block-library/blocks/video/editor.css 563 B
build/block-library/blocks/video/style-rtl.css 159 B
build/block-library/blocks/video/style.css 159 B
build/block-library/blocks/video/theme-rtl.css 110 B
build/block-library/blocks/video/theme.css 110 B
build/block-library/common-rtl.css 987 B
build/block-library/common.css 984 B
build/block-library/editor-rtl.css 10.2 kB
build/block-library/editor.css 10.2 kB
build/block-library/elements-rtl.css 54 B
build/block-library/elements.css 54 B
build/block-library/index.min.js 183 kB
build/block-library/reset-rtl.css 478 B
build/block-library/reset.css 478 B
build/block-library/style-rtl.css 11.5 kB
build/block-library/style.css 11.5 kB
build/block-library/theme-rtl.css 695 B
build/block-library/theme.css 700 B
build/block-serialization-default-parser/index.min.js 1.11 kB
build/block-serialization-spec-parser/index.min.js 2.83 kB
build/blocks/index.min.js 47.1 kB
build/compose/index.min.js 11.7 kB
build/core-data/index.min.js 14.7 kB
build/customize-widgets/index.min.js 11.2 kB
build/customize-widgets/style-rtl.css 1.4 kB
build/customize-widgets/style.css 1.4 kB
build/data-controls/index.min.js 653 B
build/data/index.min.js 7.95 kB
build/date/index.min.js 32 kB
build/deprecated/index.min.js 507 B
build/dom-ready/index.min.js 324 B
build/dom/index.min.js 4.65 kB
build/edit-navigation/index.min.js 16 kB
build/edit-post/classic-rtl.css 546 B
build/edit-post/classic.css 547 B
build/edit-post/index.min.js 30.4 kB
build/edit-site/index.min.js 52 kB
build/edit-widgets/index.min.js 16.5 kB
build/editor/index.min.js 39.4 kB
build/editor/style-rtl.css 3.65 kB
build/editor/style.css 3.65 kB
build/element/index.min.js 4.27 kB
build/escape-html/index.min.js 537 B
build/format-library/index.min.js 6.75 kB
build/format-library/style-rtl.css 571 B
build/format-library/style.css 571 B
build/hooks/index.min.js 1.64 kB
build/html-entities/index.min.js 448 B
build/i18n/index.min.js 3.77 kB
build/is-shallow-equal/index.min.js 527 B
build/keyboard-shortcuts/index.min.js 1.78 kB
build/keycodes/index.min.js 1.38 kB
build/list-reusable-blocks/index.min.js 1.74 kB
build/list-reusable-blocks/style-rtl.css 835 B
build/list-reusable-blocks/style.css 835 B
build/media-utils/index.min.js 2.93 kB
build/notices/index.min.js 953 B
build/nux/index.min.js 2.05 kB
build/nux/style-rtl.css 732 B
build/nux/style.css 728 B
build/plugins/index.min.js 1.94 kB
build/preferences-persistence/index.min.js 2.22 kB
build/preferences/index.min.js 1.3 kB
build/primitives/index.min.js 933 B
build/priority-queue/index.min.js 612 B
build/react-i18n/index.min.js 696 B
build/react-refresh-entry/index.min.js 8.44 kB
build/react-refresh-runtime/index.min.js 7.31 kB
build/redux-routine/index.min.js 2.69 kB
build/reusable-blocks/index.min.js 2.22 kB
build/reusable-blocks/style-rtl.css 256 B
build/reusable-blocks/style.css 256 B
build/rich-text/index.min.js 11.1 kB
build/server-side-render/index.min.js 1.61 kB
build/shortcode/index.min.js 1.53 kB
build/token-list/index.min.js 644 B
build/url/index.min.js 3.61 kB
build/vendors/react-dom.min.js 38.5 kB
build/vendors/react.min.js 4.34 kB
build/viewport/index.min.js 1.08 kB
build/warning/index.min.js 268 B
build/widgets/index.min.js 7.19 kB
build/widgets/style-rtl.css 1.16 kB
build/widgets/style.css 1.16 kB
build/wordcount/index.min.js 1.06 kB

compressed-size-action

@stokesman
Copy link
Contributor

I tested this on Gutenberg.run. Here's the welcome modal:
image

While I'm sure the right decisions will be reached here regardless of my input, here are my opinions. I think the heading size change succeeds greatly. I'm not sure about removing the border. Though I like it at a glance, I don't love the lack of a defined edge to scrolling content:
image

I think the blur is a win. The extra roundness on the corners seems alien.

Great to see the work on this 👍

@apeatling apeatling self-requested a review May 3, 2022 21:03
Copy link
Contributor

@apeatling apeatling left a comment

Choose a reason for hiding this comment

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

A few thoughts:

  • I think the blurring of the background is a big improvement in terms of modal focus, this is assuming there's no impact on performance (window resize, scrolling).
  • I think the larger title is clearer.
  • The missing under title border makes scrolling less clear. If this could appear once scrolled I think that could be a good compromise.
  • The rounded corners -- are there any other examples of that size radius in Gutenberg? I like the look, but it seems like it departs from the current overall aesthetic.

@pablohoneyhoney
Copy link

The rounded corners -- are there any other examples of that size radius in Gutenberg? I like the look, but it seems like it departs from the current overall aesthetic.

I agree with this and ideally we could align the radii to the intent of the rest of the current, already refreshed system.

@jameskoster
Copy link
Contributor Author

Thanks for all the reviews :)

intent of the rest of the current, already refreshed system

Is this documented anywhere, or is it just a case of always using a 2px radius?

My rationale for updating it is to harmonise nested radii. I feel an awkward tension when there's no scale.

Tension Harmony
Screenshot 2022-05-04 at 11 33 46 Screenshot 2022-05-04 at 11 32 56

this is assuming there's no impact on performance

Yes this needs testing on a variety of setups. It feels fine on my 2019 MacBook Pro, but obviously that's a relatively capable machine.

If this could appear once scrolled I think that could be a good compromise.

Yeah that would be nice, would there be an impact on performance?

@pablohoneyhoney
Copy link

My rationale for updating it is to harmonise nested radii. I feel an awkward tension when there's no scale.

imo I'd argue the opposite is true based on the images above. It doesn't need to be 2 in all applications, but certainly less rounded, retaining a bit more uniqueness and less trendiness.

@jameskoster
Copy link
Contributor Author

Just to clarify, it is a suggestion motivated by maths rather than trends :D

radii

I'll revert for now though, this is probably something to look at more holistically.

@pablohoneyhoney
Copy link

:D

I think it's more to do with general design direction.
There's certainly room to look at this more holistically, agreed, even trying 2/4 in cases like this.

@ciampo ciampo self-requested a review May 9, 2022 09:01
@ciampo
Copy link
Contributor

ciampo commented May 9, 2022

Thank you @jameskoster for working on this! The modal definitely needs a bit of visual polish.

Since this component is probably used in a few places across Gutenberg, we should make sure that the modal still looks good in all of these occurrences.

I would also suggest using Storybook when working on a component, as it helps us to first make sure that a given component works well in isolation, before seeing how it integrated in the block editor.

I also agree with the comments above re.:

  • making sure we use the same border-radius as in other parts of the components library
  • doing more testing on lower-end devices re. the blur effect — the filter CSS prop can require a lot of computation to render, especially when applied to the full viewport.

Finally, could you add an entry to the package's CHANGELOG ?

@jameskoster
Copy link
Contributor Author

Here's the Modal updates in Storybook:

storybook.mp4

The background isn't blurred because I am targeting .modal-open #wpwrap, perhaps it would be better to simply target body.modal-open?

@mtias
Copy link
Member

mtias commented May 9, 2022

I don't think it makes sense to try to blur all the contents. Can it use backdrop-filter instead?

@jameskoster
Copy link
Contributor Author

It's an option, but browser support isn't as good.

@jameskoster
Copy link
Contributor Author

I suppose it doesn't hurt to consider the blur a progressive enhancement, the performance improvements are probably worth it.

Copy link
Contributor

@ciampo ciampo left a comment

Choose a reason for hiding this comment

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

Though I notice the border-on-scroll behaviour isn't being applied because the border is added to .components-modal__content which isn't present here. Maybe it would be better to add the border to .components-modal__header @ciampo?

Would be good to fix that as it's a regression compared to what's in trunk.

That regression is actually caused by the fact that, specifically for the Query pattern selector block, some custom styles are preventing the modal's content wrapper from scrolling (and therefore never triggers the logic to show/hide the border):

.block-editor-query-pattern__selection-modal .components-modal__content {
overflow: hidden;
padding: 0;
&::before {
margin-bottom: 0;
}
}

To fix the regression, that modal should be rewritten in a such a way that allows the .components-modal__content element to scroll.

Regarding whether the border should be applied to the "header" or the "content" wrapper, that's a matter of preference and, in my opinion, more of an implementation detail.

@@ -113,26 +118,12 @@
// Modal contents.
.components-modal__content {
flex: 1;
margin-top: $header-height;
margin-top: $header-height + $grid-unit-20;
Copy link
Contributor

@ciampo ciampo Jul 5, 2022

Choose a reason for hiding this comment

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

Just flagging that this change may have introduced other layout regressions in places where it was assumed that the Modal's header was $header-height px tall.

One such example is the block pattern inserter/explorer modal, where in my testing I spotted a regression caused by the fact that the sidebar was positioned at $header-height px from the top of its container

image

In general, consumers of the Modal component should not assume implementation details like the height of its header — when that happens, a small change like this PR is enough to cause a regression (which is also what I was trying to flag in this other comment of mine ).

While a short-term fix would be to update the line of code linked above to use the updated Modal's header height, I would argue that the best way to fix this specific regression in the block pattern inserter / explorer is to rewrite the modal's internal layout in a way that avoids absolute positioning and hardcoded margins/positions.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I would argue that the best way to fix this specific regression in the block pattern inserter / explorer is to rewrite the modal's internal layout avoiding absolute positioning and hardcoded distances.

I agree, the hardcoded height also causes issues where the modal title is long enough to wrap (uncommon but not impossible). Do you think we should do this as a part of this PR or elsewhere?

Copy link
Contributor

Choose a reason for hiding this comment

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

Probably the best course of action is to:

  • add a quick fix in this PR (should be as easy as changing from top: $header-height; to top: $header-height + $grid-unit-20;
  • open a few follow-up PRs to:
    • refactor the layout of the component as suggested before.
    • try to refactor away from the hardcoded height as discussed in this other comment

@apeatling
Copy link
Contributor

apeatling commented Jul 5, 2022

We're going in circles a little bit here, so if I may propose a next step: why don't we merge this PR, test it with a wider audience as a part of the plugin, and revert / refine if necessary? There are other improvements to the modal included here that would be nice to deploy. What do y'all think?

+1 on merging and refining after the above quick fix. I don't think we need to bike shed on the amount of blur and hold this up. 👍

@apeatling apeatling self-requested a review July 5, 2022 15:59
@annezazu
Copy link
Contributor

annezazu commented Jul 5, 2022

why don't we merge this PR, test it with a wider audience as a part of the plugin, and revert / refine if necessary?

This is on my list to have as part of a broader call for testing for the FSE Outreach program to hopefully get some feedback for what it's worth (been following this PR).

@jameskoster
Copy link
Contributor Author

Pushed an update to fix the issue above:

Screenshot 2022-07-06 at 10 19 17

Will merge once tests pass :)

@jameskoster jameskoster merged commit 1339b96 into trunk Jul 6, 2022
@jameskoster jameskoster deleted the update/modal-UI branch July 6, 2022 10:47
@github-actions github-actions bot added this to the Gutenberg 13.7 milestone Jul 6, 2022
@ciampo
Copy link
Contributor

ciampo commented Jul 6, 2022

Just to summarize the follow-up work that we agreed during this review:

  • Query pattern selector block modal: refactor the layout to allow the modal's content wrapper to scroll (more details) (this is the most urgent task, since the current PR may have introduced a regression)
  • Block pattern inserter/explorer's modal: refactor the layout of the component so that it doesn't rely on absolute positioning and hardcoded modal header height (more details)
  • Block pattern setup modal: refactor the layout of the component so that it doesn't rely on hardcoded modal header heights (more details)

@jameskoster
Copy link
Contributor Author

I opened #42194 to address the first issue, and #42195 to address the latter two.

@ciampo ciampo mentioned this pull request Jul 6, 2022
@andrewserong
Copy link
Contributor

andrewserong commented Jul 11, 2022

I really like the smooth look of the blurred background on the modal, but I just encountered a potential usability issue where there is an element outside of the modal that is contextually related to the content of the modal. For example, if you go to adjust an item in the List View to apply or remove a Lock, with the modal open, you can no longer see which (particular) block you have highlighted:

image

I'm curious if there are other cases where we have this sort of contextual issue — perhaps in the case of Lock, the use of a Modal isn't quite right, maybe it should be a Popover instead in order to better highlight the relationship to the currently selected item. (I'm happy to open up a separate issue if folks think the approach for the Lock modal should be adjusted rather than the styling of the Modal).

@jameskoster
Copy link
Contributor Author

As you alluded to, I think this could actually be a helpful guiding principle around when to (or not) use modals. I outlined in more detail here, but generally speaking if you need to observe both the modal contents and the rest of the UI together, then a modal is probably not going to be the best choice.

That said, I don't find this particular instance to be problematic since the modal title clearly indicates which block you're locking.

@andrewserong
Copy link
Contributor

Great, thanks for the explanation @jameskoster! Also, I suppose since modals are typically fullscreen on mobile, that's probably another reason to avoid a modal if it has to maintain a connection to information outside of the modal.

That said, I don't find this particular instance to be problematic since the modal title clearly indicates which block you're locking.

Okie-doke, I'm quite possibly over thinking this one because I've been looking at the List View closely, so noticed a difference once I rebased against trunk and saw that the modal looked different. I'm happy to leave this, then, given that the block title is in the modal title 👍

@bph bph added the Needs User Documentation Needs new user documentation label Jul 15, 2022
@paaljoachim
Copy link
Contributor

I have gone through the call for testing: https://make.wordpress.org/test/2022/07/11/fse-program-testing-call-15-category-customization/#comment-2608

I noticed the various modals that showed up and how blurred the background area around it is.
Here it would be good to take a closer look at OSX, Windows etc and see how modals and the area around it is used.

In general for a user interface the key is having subtile changes that give hints along the way to user. The current blur is too much of a change and makes it harder on the eyes working in Gutenberg. In general one does not want to bring too much contrast when working in any software. Think if OSX or Windows where to blur the background every time a modal is seen that one has to relate to before moving on. If one tries to do something else one is not able to and will need to find the modal that one does need to relate to before moving on.

I do look forward to hearing more view points from other folks about the blur effect seen in the screen of it seems any modal that is opened.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
General Interface Parts of the UI which don't fall neatly under other labels. Needs Design Feedback Needs general design feedback. Needs User Documentation Needs new user documentation
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet