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

Cover: add margin block support #33835

Closed
wants to merge 3 commits into from
Closed

Conversation

ramonjd
Copy link
Member

@ramonjd ramonjd commented Aug 3, 2021

❗ Hey! Since this change displays the dimensions panel, we should remove the duplicate dimensions panel first. That means adding min-height support. We are doing this in #33970, on which this PR, therefore, is dependent.

Description

This PR:

  • activates margin block support for the cover block at the block level in block.json for web.
  • activates margin block support in theme.json so that it's turned on in development by default.
  • Turns on padding by default in the ToolsPanel. Margin is available but hidden until activated.
  • removes <BoxControlVisualizer /> for padding to avoid incongruity, that is, that it's on for padding and not for margin.
cover-block-margin.mp4

On the topic of BoxControlVisualizer

To add a <BoxControlVisualizer /> for margin we would have to introduce a wrapper around the entire block in edit.js for it to display.

It appears the visualizer has been removed in other blocks for this reason.

Here's what it looks like when we do add it:

spacing-visualizer.mp4

How has this been tested?

Manually, in Chrome, Safari, Firefox and Edge browsers.

In a new post, create a cover block. Check that the dimensions panel is there and margin controls are disabled by default.

Select margin under the ToolsPanel and adjust the value.

Screen Shot 2021-08-11 at 11 01 52 am

Check that your changes are reflected on the published post.

Behold my ground-breaking results!

Screen Shot 2021-08-11 at 11 03 36 am

Rejoice!

Types of changes

Switching on margin block support, which is available since #30608

Checklist:

  • My code is tested.
  • My code follows the WordPress code style.
  • My code follows the accessibility standards.
  • I've tested my changes with keyboard and screen readers.
  • My code has proper inline documentation.
  • I've included developer documentation if appropriate.
  • I've updated all React Native files affected by any refactorings/renamings in this PR (please manually search all *.native.js files for terms that need renaming or removal).

@github-actions
Copy link

github-actions bot commented Aug 3, 2021

Size Change: -77 B (0%)

Total Size: 1.07 MB

Filename Size Change
build/block-library/index.min.js 148 kB -77 B (0%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 931 B
build/admin-manifest/index.min.js 1.09 kB
build/annotations/index.min.js 2.7 kB
build/api-fetch/index.min.js 2.21 kB
build/autop/index.min.js 2.08 kB
build/blob/index.min.js 459 B
build/block-directory/index.min.js 6.2 kB
build/block-directory/style-rtl.css 1.01 kB
build/block-directory/style.css 1.01 kB
build/block-editor/default-editor-styles-rtl.css 378 B
build/block-editor/default-editor-styles.css 378 B
build/block-editor/index.min.js 134 kB
build/block-editor/style-rtl.css 13.9 kB
build/block-editor/style.css 13.9 kB
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 58 B
build/block-library/blocks/audio/editor.css 58 B
build/block-library/blocks/audio/style-rtl.css 111 B
build/block-library/blocks/audio/style.css 111 B
build/block-library/blocks/audio/theme-rtl.css 125 B
build/block-library/blocks/audio/theme.css 125 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 470 B
build/block-library/blocks/button/editor.css 470 B
build/block-library/blocks/button/style-rtl.css 549 B
build/block-library/blocks/button/style.css 549 B
build/block-library/blocks/buttons/editor-rtl.css 309 B
build/block-library/blocks/buttons/editor.css 309 B
build/block-library/blocks/buttons/style-rtl.css 317 B
build/block-library/blocks/buttons/style.css 317 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 90 B
build/block-library/blocks/code/style.css 90 B
build/block-library/blocks/code/theme-rtl.css 131 B
build/block-library/blocks/code/theme.css 131 B
build/block-library/blocks/columns/editor-rtl.css 206 B
build/block-library/blocks/columns/editor.css 205 B
build/block-library/blocks/columns/style-rtl.css 497 B
build/block-library/blocks/columns/style.css 496 B
build/block-library/blocks/cover/editor-rtl.css 546 B
build/block-library/blocks/cover/editor.css 547 B
build/block-library/blocks/cover/style-rtl.css 1.17 kB
build/block-library/blocks/cover/style.css 1.17 kB
build/block-library/blocks/embed/editor-rtl.css 488 B
build/block-library/blocks/embed/editor.css 488 B
build/block-library/blocks/embed/style-rtl.css 417 B
build/block-library/blocks/embed/style.css 417 B
build/block-library/blocks/embed/theme-rtl.css 124 B
build/block-library/blocks/embed/theme.css 124 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 255 B
build/block-library/blocks/file/style.css 255 B
build/block-library/blocks/file/view.min.js 322 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 977 B
build/block-library/blocks/gallery/editor.css 982 B
build/block-library/blocks/gallery/style-rtl.css 1.6 kB
build/block-library/blocks/gallery/style.css 1.59 kB
build/block-library/blocks/gallery/theme-rtl.css 122 B
build/block-library/blocks/gallery/theme.css 122 B
build/block-library/blocks/group/editor-rtl.css 159 B
build/block-library/blocks/group/editor.css 159 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 114 B
build/block-library/blocks/heading/style.css 114 B
build/block-library/blocks/home-link/style-rtl.css 247 B
build/block-library/blocks/home-link/style.css 247 B
build/block-library/blocks/html/editor-rtl.css 332 B
build/block-library/blocks/html/editor.css 333 B
build/block-library/blocks/image/editor-rtl.css 731 B
build/block-library/blocks/image/editor.css 730 B
build/block-library/blocks/image/style-rtl.css 502 B
build/block-library/blocks/image/style.css 505 B
build/block-library/blocks/image/theme-rtl.css 124 B
build/block-library/blocks/image/theme.css 124 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 137 B
build/block-library/blocks/latest-posts/editor.css 137 B
build/block-library/blocks/latest-posts/style-rtl.css 528 B
build/block-library/blocks/latest-posts/style.css 527 B
build/block-library/blocks/list/style-rtl.css 94 B
build/block-library/blocks/list/style.css 94 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 568 B
build/block-library/blocks/navigation-link/editor.css 570 B
build/block-library/blocks/navigation-link/style-rtl.css 94 B
build/block-library/blocks/navigation-link/style.css 94 B
build/block-library/blocks/navigation-submenu/editor-rtl.css 299 B
build/block-library/blocks/navigation-submenu/editor.css 299 B
build/block-library/blocks/navigation-submenu/style-rtl.css 195 B
build/block-library/blocks/navigation-submenu/style.css 195 B
build/block-library/blocks/navigation-submenu/view.min.js 343 B
build/block-library/blocks/navigation/editor-rtl.css 1.71 kB
build/block-library/blocks/navigation/editor.css 1.71 kB
build/block-library/blocks/navigation/style-rtl.css 1.68 kB
build/block-library/blocks/navigation/style.css 1.67 kB
build/block-library/blocks/navigation/view.min.js 2.74 kB
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 377 B
build/block-library/blocks/page-list/editor.css 377 B
build/block-library/blocks/page-list/style-rtl.css 198 B
build/block-library/blocks/page-list/style.css 198 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 273 B
build/block-library/blocks/paragraph/style.css 273 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/style-rtl.css 140 B
build/block-library/blocks/post-comments-form/style.css 140 B
build/block-library/blocks/post-comments/style-rtl.css 360 B
build/block-library/blocks/post-comments/style.css 359 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 396 B
build/block-library/blocks/post-featured-image/editor.css 397 B
build/block-library/blocks/post-featured-image/style-rtl.css 156 B
build/block-library/blocks/post-featured-image/style.css 156 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 391 B
build/block-library/blocks/post-template/style.css 392 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 60 B
build/block-library/blocks/post-title/style.css 60 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 378 B
build/block-library/blocks/pullquote/style.css 378 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 262 B
build/block-library/blocks/query-pagination/editor.css 255 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 131 B
build/block-library/blocks/query/editor.css 132 B
build/block-library/blocks/quote/style-rtl.css 187 B
build/block-library/blocks/quote/style.css 187 B
build/block-library/blocks/quote/theme-rtl.css 223 B
build/block-library/blocks/quote/theme.css 226 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 374 B
build/block-library/blocks/search/style.css 375 B
build/block-library/blocks/search/theme-rtl.css 64 B
build/block-library/blocks/search/theme.css 64 B
build/block-library/blocks/separator/editor-rtl.css 99 B
build/block-library/blocks/separator/editor.css 99 B
build/block-library/blocks/separator/style-rtl.css 250 B
build/block-library/blocks/separator/style.css 250 B
build/block-library/blocks/separator/theme-rtl.css 172 B
build/block-library/blocks/separator/theme.css 172 B
build/block-library/blocks/shortcode/editor-rtl.css 474 B
build/block-library/blocks/shortcode/editor.css 474 B
build/block-library/blocks/site-logo/editor-rtl.css 770 B
build/block-library/blocks/site-logo/editor.css 770 B
build/block-library/blocks/site-logo/style-rtl.css 165 B
build/block-library/blocks/site-logo/style.css 165 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 824 B
build/block-library/blocks/social-links/editor.css 823 B
build/block-library/blocks/social-links/style-rtl.css 1.32 kB
build/block-library/blocks/social-links/style.css 1.32 kB
build/block-library/blocks/spacer/editor-rtl.css 307 B
build/block-library/blocks/spacer/editor.css 307 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 471 B
build/block-library/blocks/table/editor.css 472 B
build/block-library/blocks/table/style-rtl.css 481 B
build/block-library/blocks/table/style.css 481 B
build/block-library/blocks/table/theme-rtl.css 188 B
build/block-library/blocks/table/theme.css 188 B
build/block-library/blocks/tag-cloud/style-rtl.css 146 B
build/block-library/blocks/tag-cloud/style.css 146 B
build/block-library/blocks/template-part/editor-rtl.css 560 B
build/block-library/blocks/template-part/editor.css 559 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 571 B
build/block-library/blocks/video/editor.css 572 B
build/block-library/blocks/video/style-rtl.css 173 B
build/block-library/blocks/video/style.css 173 B
build/block-library/blocks/video/theme-rtl.css 124 B
build/block-library/blocks/video/theme.css 124 B
build/block-library/common-rtl.css 815 B
build/block-library/common.css 812 B
build/block-library/editor-rtl.css 9.65 kB
build/block-library/editor.css 9.65 kB
build/block-library/reset-rtl.css 474 B
build/block-library/reset.css 474 B
build/block-library/style-rtl.css 10.3 kB
build/block-library/style.css 10.3 kB
build/block-library/theme-rtl.css 668 B
build/block-library/theme.css 673 B
build/block-serialization-default-parser/index.min.js 1.09 kB
build/block-serialization-spec-parser/index.min.js 2.79 kB
build/blocks/index.min.js 46 kB
build/components/index.min.js 212 kB
build/components/style-rtl.css 15.3 kB
build/components/style.css 15.3 kB
build/compose/index.min.js 10.4 kB
build/core-data/index.min.js 12.4 kB
build/customize-widgets/index.min.js 11.2 kB
build/customize-widgets/style-rtl.css 1.5 kB
build/customize-widgets/style.css 1.49 kB
build/data-controls/index.min.js 614 B
build/data/index.min.js 7.1 kB
build/date/index.min.js 31.5 kB
build/deprecated/index.min.js 428 B
build/dom-ready/index.min.js 304 B
build/dom/index.min.js 4.46 kB
build/edit-navigation/index.min.js 15.8 kB
build/edit-navigation/style-rtl.css 3.76 kB
build/edit-navigation/style.css 3.76 kB
build/edit-post/classic-rtl.css 492 B
build/edit-post/classic.css 494 B
build/edit-post/index.min.js 29.4 kB
build/edit-post/style-rtl.css 7.12 kB
build/edit-post/style.css 7.12 kB
build/edit-site/index.min.js 30 kB
build/edit-site/style-rtl.css 5.56 kB
build/edit-site/style.css 5.56 kB
build/edit-widgets/index.min.js 15.8 kB
build/edit-widgets/style-rtl.css 4.12 kB
build/edit-widgets/style.css 4.13 kB
build/editor/index.min.js 37.6 kB
build/editor/style-rtl.css 3.78 kB
build/editor/style.css 3.77 kB
build/element/index.min.js 3.21 kB
build/escape-html/index.min.js 517 B
build/format-library/index.min.js 5.93 kB
build/format-library/style-rtl.css 571 B
build/format-library/style.css 571 B
build/hooks/index.min.js 1.55 kB
build/html-entities/index.min.js 424 B
build/i18n/index.min.js 3.6 kB
build/is-shallow-equal/index.min.js 501 B
build/keyboard-shortcuts/index.min.js 1.72 kB
build/keycodes/index.min.js 1.3 kB
build/list-reusable-blocks/index.min.js 1.85 kB
build/list-reusable-blocks/style-rtl.css 838 B
build/list-reusable-blocks/style.css 838 B
build/media-utils/index.min.js 2.92 kB
build/notices/index.min.js 845 B
build/nux/index.min.js 2.03 kB
build/nux/style-rtl.css 747 B
build/nux/style.css 743 B
build/plugins/index.min.js 1.83 kB
build/primitives/index.min.js 921 B
build/priority-queue/index.min.js 582 B
build/react-i18n/index.min.js 671 B
build/redux-routine/index.min.js 2.63 kB
build/reusable-blocks/index.min.js 2.19 kB
build/reusable-blocks/style-rtl.css 256 B
build/reusable-blocks/style.css 256 B
build/rich-text/index.min.js 10.6 kB
build/server-side-render/index.min.js 1.52 kB
build/shortcode/index.min.js 1.48 kB
build/token-list/index.min.js 562 B
build/url/index.min.js 1.74 kB
build/viewport/index.min.js 1.02 kB
build/warning/index.min.js 248 B
build/widgets/index.min.js 7.11 kB
build/widgets/style-rtl.css 1.16 kB
build/widgets/style.css 1.16 kB
build/wordcount/index.min.js 1.04 kB

compressed-size-action

@ramonjd
Copy link
Member Author

ramonjd commented Aug 3, 2021

Depending on the layout (and, presumably, the theme) margins may have no effect, or appear difference in the editor.

Here the cover block (with the red background) is center aligned with top and left padding.

Screen Shot 2021-08-03 at 2 50 35 pm

On the frontend however, right and left margin values are overwritten with margin-left: auto !important; in layout.php

Screen Shot 2021-08-03 at 2 50 40 pm

For me, the user experience takes experimentation before getting used to.

I've been trying to think of some ways to make things appear more consistent, and also wondering if having margin supports on cover blocks addresses any design needs.

When placed in columns, adjusting top/left margins on the cover block allows such tremendously stunning layouts like this 😆

Screen Shot 2021-08-06 at 11 54 54 am

Turning on margin supports and let the user work it out

It's not a difficult feat to work out what's possible given the limitations of theme and/or layout. After a short time of experimentation, I think the user should be able to work out what's going on.

It's where margin changes are expected to behave similar to padding changes, e.g., that the block increases its distance from surrounding HTML at a centre origin, where I think folks might be scratching their heads.

Specifying vertical margin only on the cover block

Vertical margins do behave consistently as far as I can tell in most themes and layouts. One option is to enable vertical axis margins. So, in the block.json:

"margin": [ "top", "bottom" ]

for the following effect.

cover-margin-top-bottom-only.mp4

Relying on parent blocks for layout

It's also possible to adjust padding spacing when the cover block is a child of a group block.

group-with-spacing-support-cover.mp4

#33909 introduces margin block support for the group block, which could achieve the same affect.

Or there might be a better solution waiting in gap support: #32571

Being able to work directly on the cover block, rather than the parent is more ideal however. It may not occur to everybody to nest blocks in order to achieve certain spacing configurations.

What do folks think about all this? I'm documenting what I'm finding, and probably over-analysing it! 🙇

@ramonjd ramonjd force-pushed the add/cover-block-margin-support branch from f7857ce to c0b422f Compare August 6, 2021 00:52
@ramonjd ramonjd added [Block] Cover Affects the Cover Block - used to display content laid over a background image [Type] Enhancement A suggestion for improvement. [Type] Feature New feature to highlight in changelogs. Needs Design Feedback Needs general design feedback. labels Aug 6, 2021
@ramonjd ramonjd force-pushed the add/cover-block-margin-support branch from c0b422f to 8e3c0bb Compare August 6, 2021 02:19
@ramonjd ramonjd marked this pull request as ready for review August 11, 2021 01:04
@ramonjd ramonjd force-pushed the add/cover-block-margin-support branch from 8e3c0bb to dedc0f5 Compare August 11, 2021 01:04
@ramonjd ramonjd requested a review from oandregal as a code owner August 11, 2021 01:04
@ramonjd ramonjd added the [Feature] Design Tools Tools that impact the appearance of blocks both to expand the number of tools and improve the experi label Aug 11, 2021
@ramonjd ramonjd force-pushed the add/cover-block-margin-support branch 2 times, most recently from 1940c86 to 347136d Compare August 29, 2021 23:12
@glendaviesnz
Copy link
Contributor

This tests as you have outlined for me. The basics are there, but as you note there are some complications with margins that may confuse users, just to help with your over thinking, even just top and bottom margins still has margin collapsing issues, ie a bottom margin of 20px on one block and top margin of 20px on another becomes a gap of 20px:

margins

I can see why there is some reluctance to make margin settings widely available, but I also wonder if isn't so complicated that users won't be able to tinker with it, and maybe get the effect they were looking for, and if not will just toggle it off again?

@ramonjd ramonjd force-pushed the add/cover-block-margin-support branch from 347136d to 59eb408 Compare September 13, 2021 04:46
@ramonjd
Copy link
Member Author

ramonjd commented Sep 13, 2021

Thanks for testing this @glendaviesnz !

I can see why there is some reluctance to make margin settings widely available, but I also wonder if isn't so complicated that users won't be able to tinker with it, and maybe get the effect they were looking for, and if not will just toggle it off again?

Yeah, that sounds reasonable. I think margin control would have some uses in certain designs, and we probably shouldn't make it default.

We could also start with axial padding if folks feel strongly about it.

While testing I think I found a bug however (unrelated to this PR) #34766

@ramonjd ramonjd force-pushed the add/cover-block-margin-support branch from c7eab9d to 334816b Compare September 24, 2021 02:13
@ramonjd ramonjd force-pushed the add/cover-block-margin-support branch from 334816b to e170ad3 Compare October 7, 2021 03:27
@stacimc
Copy link
Contributor

stacimc commented Oct 19, 2021

I think margin control would have some uses in certain designs, and we probably shouldn't make it default.

+1! This seems like a great example of a non-default control to me. It's maybe a little more niche of a use case, and it may require some user experimentation or trial and error -- but that feels acceptable for an 'advanced' control, and could enable some really interesting and creative layouts. Personally I think it's really exciting to have a way to add controls like this in without cluttering the default panel/giving unwarranted visual priority.

The issue you brought up with left and right margins overridden by the layout was the only thing that stood out to me while playing around with this. I'm inclined to think of that as a separate issue, since I believe it similarly affects the margin block support in many other blocks 🤔

…vel.

- Activating margin block support in experimental-default-theme.json so that it's turned on in development by default.
- Removing BoxControlVisualizer for padding to avoid incongruity, that is, that it's on for padding and not for margin
- To add a BoxControlVisualizer for margin we would have to introduce a wrapper around the entire block in edit.js for margin to display properly.
@ramonjd ramonjd force-pushed the add/cover-block-margin-support branch from e170ad3 to c16b888 Compare October 20, 2021 00:06
@ramonjd
Copy link
Member Author

ramonjd commented Oct 20, 2021

Thanks for testing @stacimc!

The issue you brought up with left and right margins overridden by the layout was the only thing that stood out to me while playing around with this. I'm inclined to think of that as a separate issue, since I believe it similarly affects the margin block support in many other blocks 🤔

I rebased this branch on top of master and I think it's been addressed now that #34725 has been merged. Ignore this. Bad copy/paste. :)

Yeah, sounds like we should constrain the effect to the vertical as mentioned and confirmed below.

👍

Copy link
Contributor

@aaronrobertshaw aaronrobertshaw 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 all the work on this @ramonjd 👍

I rebased this branch on top of master and I think it's been addressed now that #34725 has been merged.

Nothing in #34725 touched the layout support. It's in that block support, as you've linked in earlier comments, that the margin-left: auto !important and margin-right: auto !important styles are coming from.

The issue with left/right margins being overridden for top-level blocks persists for any theme that sets a "content size" or "wide size".

With that in mind, I've taken this for a test drive.

✅ Code changes look ok (further comment later)
✅ With exception of left/right margins for top-level blocks, this works in block editor and frontend
✅ Setting Cover block margins via theme.json worked as expected
✅ Margin controls display in site editor and for TT1 work with exception of left/right margin

I also had mixed results testing with other themes. TwentyTwentyTwo for example uses block gap support as well. So even though it wasn't overriding the left/right margins, when the cover block was within a Group block, its vertical margins were being overridden instead.

My vote would be that initially, the most we can opt into would be top and bottom margin support.

@ramonjd
Copy link
Member Author

ramonjd commented Oct 20, 2021

Thanks for testing @aaronrobertshaw

My vote would be that initially, the most we can opt into would be top and bottom margin support.

Thanks for confirming. Sounds like a reasonable way forward. I'll update.

Nothing in #34725 touched the layout support.

🤦 I meant to reply to myself in #33835 (comment) by saying that I can close the issue I created here: #34766 (comment)

I'll update the comment to avoid embarrassment confusion.

@ramonjd
Copy link
Member Author

ramonjd commented Oct 20, 2021

Updated margin support to "margin": [ "top", "bottom" ],

Screen Shot 2021-10-20 at 3 45 31 pm

🥂

@ramonjd
Copy link
Member Author

ramonjd commented Oct 20, 2021

To add a for margin we would have to introduce a wrapper around the entire block in edit.js for it to display.

It appears the visualizer has been removed in other blocks for this reason.

@youknowriad or @jasmussen Do you see any issues with removing the <BoxControlVisualizer /> for consistency (assuming we go ahead and add vertical margin support here)?

🙇

@jasmussen
Copy link
Contributor

One problem with having both margin and padding on the same block, as I also outlined on this other PR, is that their controls look virtually identical, as do their effect on the block cases like a block with a transparent background.

The blue visualization is one tool to help handle this, the toolspanel with good defaults is another. For blocks like Cover, padding feels more important than margin, whereas for something like Heading, margin feels more important than padding.

Is there an urgent need for margin on the Cover block? Not a strong opinion, but if we can, we might want to hold off on adding it for now, at least surfaced visually, and perhaps get a little farther on differentiating the controls and enhancing visualizations. #33221 alludes to a margin control potentially existing in the canvas. What do you think?

@ramonjd
Copy link
Member Author

ramonjd commented Oct 20, 2021

Thanks for the quick feedback!!!

Is there an urgent need for margin on the Cover block?

Not that I'm aware of.

Now that we're constraining the margin to top and bottom sides in this PR, there is also the option of keeping <BoxControlVisualizer /> for padding only.

Not a strong opinion, but if we can, we might want to hold off on adding it for now, at least surfaced visually, and perhaps get a little farther on differentiating the controls and enhancing visualizations.

I truly don't anticipate riots in the comments if we put this one on ice until the concepts around the canvas UI evolves. 😄

I'm drawn to the ideas in #33221, specifically, visually linking the canvas to the controls.

@ramonjd
Copy link
Member Author

ramonjd commented Nov 4, 2021

Closing this for now pending decisions on whether gap and other spacing supports are more appropriate.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Block] Cover Affects the Cover Block - used to display content laid over a background image [Feature] Design Tools Tools that impact the appearance of blocks both to expand the number of tools and improve the experi Needs Design Feedback Needs general design feedback. [Type] Enhancement A suggestion for improvement. [Type] Feature New feature to highlight in changelogs.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants