Add outer padding support to the flow layout #35919
Conversation
This is the related issue for this PR: #35607 |
lib/block-supports/layout.php
Outdated
$style = "$selector > * {"; | ||
$style = "$selector {"; | ||
$style .= "--wp-style-layout-outer-padding: $outer_padding;"; | ||
$style .= 'padding: 0 var(--wp-style-layout-outer-padding);'; |
For simplicity, the outerPadding property is assumed to represent the left/right paddings of the container block. We could potentially update it to support any kind of value but it would require a bit more code.
Wildly fast and impressive as usual. Question: where in theme.json do I add the "outerPadding" value? (Edit: I tried adding it as settings.layout.outerPadding, but can't seem to get that to work) |
Size Change: +2.38 kB (0%) Total Size: 1.07 MB
|
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/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/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 |
488 B |
build/block-library/blocks/navigation-link/editor.css |
489 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/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 |
347 B |
build/block-library/blocks/post-comments-form/style.css |
347 B |
build/block-library/blocks/post-comments/style-rtl.css |
475 B |
build/block-library/blocks/post-comments/style.css |
475 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 |
397 B |
build/block-library/blocks/search/style.css |
398 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/reset-rtl.css |
474 B |
build/block-library/reset.css |
474 B |
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/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.44 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/style-rtl.css |
7.12 kB |
build/edit-post/style.css |
7.12 kB |
build/edit-site/index.min.js |
30.7 kB |
build/edit-widgets/index.min.js |
16.3 kB |
build/edit-widgets/style-rtl.css |
4.17 kB |
build/edit-widgets/style.css |
4.18 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.99 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.7 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 |
|
Yeah I'm not seeing the --wp-style-layout-outer-padding variable output. I'm probably doing something wrong, I'll keep digging. But just by glancing at the code, this was exactly what I had been hoping for. |
I'm testing this again with my alignments markup on emptytheme. The first thing I see is that this requires the group blocks to have inherit layout. In the case of emptytheme the template parts for example are defined simply with
and no other group blocks inside, and there's no padding being applied to it. I suppose that's fine and it's easy to circumvent, I just wasn't expecting that. Looking at the mobile version I see a little issue:
When I debug this I see that for example something like:
We've encountered this case before and solved it using |
Worked for me while testing with emptytheme. You need to look for the variable on the containers with inherit layout, it's not being applied to the root container. |
If the group block doesn't have any layout (inherit or a specific one), the inner blocks won't have full width options available anyway. |
For the "Cover" block, there's a "width: 100%" rule in the default styles there. I wonder why we have it and whether we can remove it or transform it to |
Yep, can confirm min-width would solve it for the cover block! I tested a bunch of other blocks that did fine on full width: |
I removed the width rule from the cover block. I didn't see any issue but yeah more testing would be good. |
Agree, I looked for the reason we have it there and I couldn't find it, it's been years and the code has changed a bit, with |
I like it.
It will need a bit of understanding of what the "inherit" toggle does, we might need to refine the help text a little bit, but I think this is a good thing overall. The one thing I'm still scratching my head over is the top and bottom paddings. By zeroing them out we enable the patterns where topmost (or last) blocks can go all the way to the top, which for instance is needed in TT2. I'd love to avoid difficult first-child rules that add negative top margin to handle this, but at the same time it feels like we need a simple and intuitive way to allow top padding. I'll think about this a bit more over lunch, but just as a quick option: can we allow axial controls in theme.json? I.e. TT2 can add:
that would enable the specific TT2 patterns to go all the way to the top, and handle any extra top padding inside its own header template part. But other themes could simply add this:
to have a uniform all the way around padding. This would allow them to have easy true fullwide images in their posts, but a simple padding all the way around. I'll come back to this. |
I think the |
This is cool! It generally seems to work well, and I like having access to this as a variable. A couple questions:
I'm also seeing one scenario that introduces some breakage: setting padding on a wide-width group block.
|
I updated the format of the outer padding to support any kind of padding (object with left, right, top, bottom keys like the padding attribute).
Maybe but this would require a number of things: update it for all blocks and not just "group", provide a fallback for classic themes, it might not be so simple.
This is the only thing that make me concerned about this PR and whether it's the right approach. These two things (outerPadding and padding) are completely different things and in fact one has the potentially to override the other (thus your bug). We can't use padding at the moment because there's no way to "inherit" padding from theme.json like we do for "layout", that's why "outerPadding" is a property of the layout object. Potential solution here is to introduce some kind of dependency between "layout" and "padding" block supports. Meaning if a block supports both padding and layout and the user chose to "inherit" layout, hide the "padding" control and ignore the value defined by the user there and inherit the one from theme.json instead. Maybe that's the right solution though I'd love more thoughts here, I'm not sure I feel confident making that decision on my one :) cc @mcsf @mtias @ntsekouras |
That means I can explicitly define a top padding if I want to, correct? (If yes, sounds good!) Edit: Welp, we posted at the same time. I consider my question answered then! |
youknowriad commentedOct 25, 2021
•
edited
closes #35607
While implementing the 2022 theme, it has been noticed that full width blocks should ignore the padding of the container block in order to expand to the whole window width.
A solution to this is to use negative margins for full aligned blocks, that said, the solution means that the layout should be aware of the applied padding. This PR solves this by adding a new "outerPadding" config to the "flow" layout.
Testing instructions
The text was updated successfully, but these errors were encountered: