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

Preformatted: Add spacing support #45196

Merged
merged 17 commits into from
Jul 24, 2023
Merged

Preformatted: Add spacing support #45196

merged 17 commits into from
Jul 24, 2023

Conversation

carolinan
Copy link
Contributor

@carolinan carolinan commented Oct 21, 2022

What?

Adds margin and padding to the preformatted text block.

Why?

For consistency, to allow users to add padding to the block.

How?

Testing Instructions

Make sure that the active theme supports spacing, for example in theme.json.

Create a new posts or page.
Add a preformatted text block.
Confirm that there is a dimension panel, and that the padding and margin settings are available but not enabled by default.

Test the padding and margin settings in the block editor, Site Editor Styles sidebar (global styles) and front.
Adjust the padding and margin via theme.json and confirm that it is applied in the editors and front.

Screenshots or screencast

preformatted-padding-stylebook.mov
@github-actions
Copy link

github-actions bot commented Oct 21, 2022

Size Change: +65 B (0%)

Total Size: 1.43 MB

Filename Size Change
build/block-library/blocks/preformatted/style-rtl.css 125 B +22 B (+21%) 🚨
build/block-library/blocks/preformatted/style.css 125 B +22 B (+21%) 🚨
build/block-library/index.min.js 201 kB +8 B (0%)
build/block-library/style-rtl.css 13.7 kB +6 B (0%)
build/block-library/style.css 13.7 kB +7 B (0%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 955 B
build/annotations/index.min.js 2.69 kB
build/api-fetch/index.min.js 2.28 kB
build/autop/index.min.js 2.1 kB
build/blob/index.min.js 451 B
build/block-directory/index.min.js 6.99 kB
build/block-directory/style-rtl.css 1.02 kB
build/block-directory/style.css 1.02 kB
build/block-editor/content-rtl.css 4.26 kB
build/block-editor/content.css 4.25 kB
build/block-editor/default-editor-styles-rtl.css 381 B
build/block-editor/default-editor-styles.css 381 B
build/block-editor/index.min.js 209 kB
build/block-editor/style-rtl.css 14.8 kB
build/block-editor/style.css 14.8 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 90 B
build/block-library/blocks/archives/style.css 90 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 122 B
build/block-library/blocks/audio/style.css 122 B
build/block-library/blocks/audio/theme-rtl.css 126 B
build/block-library/blocks/audio/theme.css 126 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 104 B
build/block-library/blocks/avatar/style.css 104 B
build/block-library/blocks/block/editor-rtl.css 305 B
build/block-library/blocks/block/editor.css 305 B
build/block-library/blocks/button/editor-rtl.css 584 B
build/block-library/blocks/button/editor.css 582 B
build/block-library/blocks/button/style-rtl.css 624 B
build/block-library/blocks/button/style.css 623 B
build/block-library/blocks/buttons/editor-rtl.css 337 B
build/block-library/blocks/buttons/editor.css 337 B
build/block-library/blocks/buttons/style-rtl.css 332 B
build/block-library/blocks/buttons/style.css 332 B
build/block-library/blocks/calendar/style-rtl.css 239 B
build/block-library/blocks/calendar/style.css 239 B
build/block-library/blocks/categories/editor-rtl.css 113 B
build/block-library/blocks/categories/editor.css 112 B
build/block-library/blocks/categories/style-rtl.css 124 B
build/block-library/blocks/categories/style.css 124 B
build/block-library/blocks/code/editor-rtl.css 53 B
build/block-library/blocks/code/editor.css 53 B
build/block-library/blocks/code/style-rtl.css 121 B
build/block-library/blocks/code/style.css 121 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 409 B
build/block-library/blocks/columns/style.css 409 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 199 B
build/block-library/blocks/comment-template/style.css 198 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 840 B
build/block-library/blocks/comments/editor.css 839 B
build/block-library/blocks/comments/style-rtl.css 637 B
build/block-library/blocks/comments/style.css 636 B
build/block-library/blocks/cover/editor-rtl.css 647 B
build/block-library/blocks/cover/editor.css 650 B
build/block-library/blocks/cover/style-rtl.css 1.61 kB
build/block-library/blocks/cover/style.css 1.6 kB
build/block-library/blocks/details/editor-rtl.css 65 B
build/block-library/blocks/details/editor.css 65 B
build/block-library/blocks/details/style-rtl.css 178 B
build/block-library/blocks/details/style.css 178 B
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 126 B
build/block-library/blocks/embed/theme.css 126 B
build/block-library/blocks/file/editor-rtl.css 316 B
build/block-library/blocks/file/editor.css 316 B
build/block-library/blocks/file/style-rtl.css 269 B
build/block-library/blocks/file/style.css 270 B
build/block-library/blocks/file/view.min.js 312 B
build/block-library/blocks/footnotes/style-rtl.css 201 B
build/block-library/blocks/footnotes/style.css 199 B
build/block-library/blocks/freeform/editor-rtl.css 2.58 kB
build/block-library/blocks/freeform/editor.css 2.58 kB
build/block-library/blocks/gallery/editor-rtl.css 947 B
build/block-library/blocks/gallery/editor.css 952 B
build/block-library/blocks/gallery/style-rtl.css 1.53 kB
build/block-library/blocks/gallery/style.css 1.53 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 654 B
build/block-library/blocks/group/editor.css 654 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 336 B
build/block-library/blocks/html/editor.css 337 B
build/block-library/blocks/image/editor-rtl.css 834 B
build/block-library/blocks/image/editor.css 833 B
build/block-library/blocks/image/style-rtl.css 1.42 kB
build/block-library/blocks/image/style.css 1.42 kB
build/block-library/blocks/image/theme-rtl.css 126 B
build/block-library/blocks/image/theme.css 126 B
build/block-library/blocks/image/view-interactivity.min.js 1.46 kB
build/block-library/blocks/latest-comments/style-rtl.css 357 B
build/block-library/blocks/latest-comments/style.css 357 B
build/block-library/blocks/latest-posts/editor-rtl.css 213 B
build/block-library/blocks/latest-posts/editor.css 212 B
build/block-library/blocks/latest-posts/style-rtl.css 478 B
build/block-library/blocks/latest-posts/style.css 478 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 507 B
build/block-library/blocks/media-text/style.css 505 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 712 B
build/block-library/blocks/navigation-link/editor.css 711 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/editor-rtl.css 2.26 kB
build/block-library/blocks/navigation/editor.css 2.26 kB
build/block-library/blocks/navigation/style-rtl.css 2.21 kB
build/block-library/blocks/navigation/style.css 2.2 kB
build/block-library/blocks/navigation/view.min.js 984 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 401 B
build/block-library/blocks/page-list/editor.css 401 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 174 B
build/block-library/blocks/paragraph/editor.css 174 B
build/block-library/blocks/paragraph/style-rtl.css 279 B
build/block-library/blocks/paragraph/style.css 281 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 508 B
build/block-library/blocks/post-comments-form/style.css 508 B
build/block-library/blocks/post-date/style-rtl.css 61 B
build/block-library/blocks/post-date/style.css 61 B
build/block-library/blocks/post-excerpt/editor-rtl.css 71 B
build/block-library/blocks/post-excerpt/editor.css 71 B
build/block-library/blocks/post-excerpt/style-rtl.css 141 B
build/block-library/blocks/post-excerpt/style.css 141 B
build/block-library/blocks/post-featured-image/editor-rtl.css 588 B
build/block-library/blocks/post-featured-image/editor.css 586 B
build/block-library/blocks/post-featured-image/style-rtl.css 319 B
build/block-library/blocks/post-featured-image/style.css 319 B
build/block-library/blocks/post-navigation-link/style-rtl.css 153 B
build/block-library/blocks/post-navigation-link/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 314 B
build/block-library/blocks/post-template/style.css 314 B
build/block-library/blocks/post-terms/style-rtl.css 96 B
build/block-library/blocks/post-terms/style.css 96 B
build/block-library/blocks/post-time-to-read/style-rtl.css 69 B
build/block-library/blocks/post-time-to-read/style.css 69 B
build/block-library/blocks/post-title/style-rtl.css 100 B
build/block-library/blocks/post-title/style.css 100 B
build/block-library/blocks/pullquote/editor-rtl.css 135 B
build/block-library/blocks/pullquote/editor.css 135 B
build/block-library/blocks/pullquote/style-rtl.css 335 B
build/block-library/blocks/pullquote/style.css 335 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 302 B
build/block-library/blocks/query-pagination/style.css 299 B
build/block-library/blocks/query-title/style-rtl.css 63 B
build/block-library/blocks/query-title/style.css 63 B
build/block-library/blocks/query/editor-rtl.css 450 B
build/block-library/blocks/query/editor.css 449 B
build/block-library/blocks/quote/style-rtl.css 222 B
build/block-library/blocks/quote/style.css 222 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 149 B
build/block-library/blocks/rss/editor.css 149 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 178 B
build/block-library/blocks/search/editor.css 178 B
build/block-library/blocks/search/style-rtl.css 587 B
build/block-library/blocks/search/style.css 584 B
build/block-library/blocks/search/theme-rtl.css 114 B
build/block-library/blocks/search/theme.css 114 B
build/block-library/blocks/search/view.min.js 531 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 234 B
build/block-library/blocks/separator/style.css 234 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 323 B
build/block-library/blocks/shortcode/editor.css 323 B
build/block-library/blocks/site-logo/editor-rtl.css 754 B
build/block-library/blocks/site-logo/editor.css 754 B
build/block-library/blocks/site-logo/style-rtl.css 203 B
build/block-library/blocks/site-logo/style.css 203 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 116 B
build/block-library/blocks/site-title/editor.css 116 B
build/block-library/blocks/site-title/style-rtl.css 57 B
build/block-library/blocks/site-title/style.css 57 B
build/block-library/blocks/social-link/editor-rtl.css 184 B
build/block-library/blocks/social-link/editor.css 184 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.43 kB
build/block-library/blocks/social-links/style.css 1.42 kB
build/block-library/blocks/spacer/editor-rtl.css 348 B
build/block-library/blocks/spacer/editor.css 348 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 433 B
build/block-library/blocks/table/editor.css 433 B
build/block-library/blocks/table/style-rtl.css 645 B
build/block-library/blocks/table/style.css 644 B
build/block-library/blocks/table/theme-rtl.css 146 B
build/block-library/blocks/table/theme.css 146 B
build/block-library/blocks/tag-cloud/style-rtl.css 251 B
build/block-library/blocks/tag-cloud/style.css 253 B
build/block-library/blocks/template-part/editor-rtl.css 403 B
build/block-library/blocks/template-part/editor.css 403 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/term-description/style-rtl.css 111 B
build/block-library/blocks/term-description/style.css 111 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 99 B
build/block-library/blocks/verse/style.css 99 B
build/block-library/blocks/video/editor-rtl.css 552 B
build/block-library/blocks/video/editor.css 555 B
build/block-library/blocks/video/style-rtl.css 174 B
build/block-library/blocks/video/style.css 174 B
build/block-library/blocks/video/theme-rtl.css 126 B
build/block-library/blocks/video/theme.css 126 B
build/block-library/classic-rtl.css 179 B
build/block-library/classic.css 179 B
build/block-library/common-rtl.css 1.1 kB
build/block-library/common.css 1.1 kB
build/block-library/editor-elements-rtl.css 75 B
build/block-library/editor-elements.css 75 B
build/block-library/editor-rtl.css 12.1 kB
build/block-library/editor.css 12.1 kB
build/block-library/elements-rtl.css 54 B
build/block-library/elements.css 54 B
build/block-library/reset-rtl.css 478 B
build/block-library/reset.css 478 B
build/block-library/theme-rtl.css 686 B
build/block-library/theme.css 691 B
build/block-serialization-default-parser/index.min.js 1.12 kB
build/block-serialization-spec-parser/index.min.js 2.87 kB
build/blocks/index.min.js 51 kB
build/commands/index.min.js 14.9 kB
build/commands/style-rtl.css 827 B
build/commands/style.css 827 B
build/components/index.min.js 240 kB
build/components/style-rtl.css 11.7 kB
build/components/style.css 11.7 kB
build/compose/index.min.js 12 kB
build/core-commands/index.min.js 2.26 kB
build/core-data/index.min.js 16.4 kB
build/customize-widgets/index.min.js 12 kB
build/customize-widgets/style-rtl.css 1.46 kB
build/customize-widgets/style.css 1.45 kB
build/data-controls/index.min.js 640 B
build/data/index.min.js 8.28 kB
build/date/index.min.js 17.8 kB
build/deprecated/index.min.js 451 B
build/dom-ready/index.min.js 324 B
build/dom/index.min.js 4.63 kB
build/edit-post/classic-rtl.css 544 B
build/edit-post/classic.css 545 B
build/edit-post/index.min.js 35.3 kB
build/edit-post/style-rtl.css 7.58 kB
build/edit-post/style.css 7.57 kB
build/edit-site/index.min.js 87.5 kB
build/edit-site/style-rtl.css 13 kB
build/edit-site/style.css 13 kB
build/edit-widgets/index.min.js 16.9 kB
build/edit-widgets/style-rtl.css 4.52 kB
build/edit-widgets/style.css 4.52 kB
build/editor/index.min.js 45.2 kB
build/editor/style-rtl.css 3.58 kB
build/editor/style.css 3.58 kB
build/element/index.min.js 4.8 kB
build/escape-html/index.min.js 537 B
build/format-library/index.min.js 7.62 kB
build/format-library/style-rtl.css 554 B
build/format-library/style.css 553 B
build/hooks/index.min.js 1.55 kB
build/html-entities/index.min.js 448 B
build/i18n/index.min.js 3.58 kB
build/interactivity/index.min.js 10.2 kB
build/is-shallow-equal/index.min.js 527 B
build/keyboard-shortcuts/index.min.js 1.64 kB
build/keycodes/index.min.js 1.84 kB
build/list-reusable-blocks/index.min.js 2.18 kB
build/list-reusable-blocks/style-rtl.css 836 B
build/list-reusable-blocks/style.css 836 B
build/media-utils/index.min.js 2.9 kB
build/notices/index.min.js 948 B
build/plugins/index.min.js 1.77 kB
build/preferences-persistence/index.min.js 1.84 kB
build/preferences/index.min.js 1.24 kB
build/primitives/index.min.js 943 B
build/priority-queue/index.min.js 1.52 kB
build/private-apis/index.min.js 943 B
build/react-i18n/index.min.js 615 B
build/react-refresh-entry/index.min.js 9.47 kB
build/react-refresh-runtime/index.min.js 7.31 kB
build/redux-routine/index.min.js 2.7 kB
build/reusable-blocks/index.min.js 2.54 kB
build/reusable-blocks/style-rtl.css 243 B
build/reusable-blocks/style.css 243 B
build/rich-text/index.min.js 11 kB
build/router/index.min.js 1.77 kB
build/server-side-render/index.min.js 1.94 kB
build/shortcode/index.min.js 1.39 kB
build/style-engine/index.min.js 1.83 kB
build/token-list/index.min.js 582 B
build/url/index.min.js 3.57 kB
build/vendors/inert-polyfill.min.js 2.48 kB
build/vendors/react-dom.min.js 41.8 kB
build/vendors/react.min.js 4.02 kB
build/viewport/index.min.js 958 B
build/warning/index.min.js 268 B
build/widgets/index.min.js 7.16 kB
build/widgets/style-rtl.css 1.15 kB
build/widgets/style.css 1.16 kB
build/wordcount/index.min.js 1.02 kB

compressed-size-action

@carolinan carolinan added [Type] Enhancement A suggestion for improvement. [Block] Preformatted Affects the Preformatted Block - used for showing preformatted text labels Oct 27, 2022
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 continuing to adopt block supports @carolinan, appreciate it 👍

This is pretty close to working well for me. Unfortunately, I hit similar issues to #45107.

✅ Spacing supports are applied in the editor for individual blocks
✅ Margins for top-level individual blocks get applied on the frontend
❓ The box-sizing reset isn't applied on the frontend. Makes padding impact block width incorrectly.
✅ Theme.json/global styles set padding works (ignoring the box-sizing issue noted above)
❓ Theme.json/global styles set margins are only applied in the editor
❓ When nested in a Group block, horizontal margins restrict the available width for the Preformatted block, while vertical margins appear to push outside the block instead. This occurs on both the editor and frontend for me.

It feels like spacing supports alongside layout support are now a bit broken. It's very likely I'm just missing something obvious. @tellthemachines or @andrewserong can you point us in the right direction to making this all behave?

@andrewserong
Copy link
Contributor

@tellthemachines or @andrewserong can you point us in the right direction to making this all behave?

Not sure if it helps, but there's an open issue in #43404 for the problem with the specificity of layout margin rules and how they behave alongside margins set in theme.json/global styles. Unfortunately, it doesn't appear yet to have an obvious fix, as reducing the specificity of the base layout rules then causes issues with styles that are shipped with the core blocks.

Is the current behaviour any different to what was reported there?

In general, I think margin is a challenging block support to reason about since its rules are shared with layout, so it's good when we opt in to it, for it to be not-exposed-by-default, as in this PR.

@carolinan carolinan added the [Status] Blocked Used to indicate that a current effort isn't able to move forward label Nov 16, 2022
@aaronrobertshaw
Copy link
Contributor

Is it worth reducing the scope of this PR to just adding padding support, such that it can move forward while we wait for the fix for layout styles overriding margin?

@carolinan
Copy link
Contributor Author

Sure, it is a small code change.

@carolinan carolinan changed the title Preformatted: Add spacing support Mar 7, 2023
@github-actions
Copy link

github-actions bot commented Mar 24, 2023

Flaky tests detected in 73ff54b.
Some tests passed with failed attempts. The failures may not be related to this commit but are still reported for visibility. See the documentation for more information.

🔍 Workflow run URL: https://github.com/WordPress/gutenberg/actions/runs/5419684268
📝 Reported issues:

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 dusting this one off @carolinan 👍

While re-testing this PR I found a padding issue when the preformatted block has a background color. Global Styles and theme.json applied padding will work in the editor but the .wp-block-preformatted.has-background style overrides it on the frontend.

We might be able to get away here by wrapping the block's has-background style in :where to lower its specificity.

Also, given it's been a while, I believe the fix for the layout styles overriding margin supports was merged in #47858.

It might be worth re-adding that given we have to make changes here anyway. What do you think?

@carolinan
Copy link
Contributor Author

I did not double-check the margin on this block because I ran into issues with the margin on the comments pagination block #43905 (comment),

I will check it now.

@carolinan
Copy link
Contributor Author

carolinan commented May 12, 2023

I think that the default padding should only be enforced when a background color is added, if the theme
adds support for add_theme_support( 'wp-block-styles' ); ?

#30725

@carolinan
Copy link
Contributor Author

Related: #37356

@carolinan carolinan requested a review from ndiego as a code owner May 12, 2023 05:56
@carolinan
Copy link
Contributor Author

Using Twenty Twenty-Three.
When I enable the margin block support and adjust the blocks margin in the Styles sidebar, the following happens:

  • Block editor: Only top and bottom margin works. Left and right margins are overwritten by:
.editor-styles-wrapper .block-editor-block-list__layout.is-root-container > :where(:not(.alignleft):not(.alignright):not(.alignfull)) {
	max-width: 650px;
	margin-left: auto !important;
	margin-right: auto !important;
}
  • Front: None of the margins work:
body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)) {
	max-width: var(--wp--style--global--content-size);
	margin-left: auto !important;
	margin-right: auto !important;
}

body .is-layout-constrained > * {
	margin-block-start: 0;
	margin-block-end: 0;
}
.wp-block-preformatted {
	margin-top: var(--wp--preset--spacing--50); // This is overwritten
	margin-right: var(--wp--preset--spacing--50);  // This is overwritten
	margin-bottom: var(--wp--preset--spacing--50);  // This is overwritten
	margin-left: var(--wp--preset--spacing--50);  // This is overwritten
}
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.

Thank you @carolinan for your effort and patience in working through the kinks in adopting spacing supports to blocks.

I think that the default padding should only be enforced when a background color is added, if the theme adds support for add_theme_support( 'wp-block-styles' ); ?

That would be the ideal case. This is a breaking change as noted on the linked issue however, so I don't think we can relocate those styles in this PR. It needs a wider solution.

When I enable the margin block support and adjust the blocks margin in the Styles sidebar, the following happens:

  • Block editor: Only top and bottom margin works. Left and right margins are overwritten by:
  • Front: None of the margins work:

The interactions between layouts and margin styles get a bit confusing at times. To me, the current behaviour is mostly making sense. As a top-level block, I'd expect the left/right margins to be overridden as they are.

For an individual block's styles, which are applied via inline styles, I would also expect those top/bottom margins to get applied. They do, and are consistent between the editor and frontend for me.

Screenshot 2023-05-22 at 2 35 49 pm

When applying a global styles margin for the Preformatted block type, I'd expect those to respect the bounds of a layout. So for a top-level block, the layout overrides the top margin of the first block and overrides the bottom margin for the last block. This is the behaviour I get when testing as well in both the editor and frontend.

Screen.Recording.2023-05-22.at.2.19.24.pm.mp4

One scenario where I did find a discrepancy though was when nesting the block within a container using a flex layout e.g. Row or Stack blocks. In the editor, the margins are applied but overridden on the frontend.

Editor Frontend
Screenshot 2023-05-22 at 2 30 10 pm

body .is-layout-flex > *
vs
.editor-styles-wrapper .wp-block-preformatted

Screenshot 2023-05-22 at 2 30 30 pm

body .is-layout-flex > *
vs
.wp-block-preformatted

@tellthemachines or @andrewserong perhaps you could provide some insight on to what extent layouts should override margins?

@carolinan
Copy link
Contributor Author

We need to try set aside our own knowledge. As a user, all that is known is that "the setting isn't doing what it says". They don't know anything about boundaries of the layout.

@andrewserong
Copy link
Contributor

@tellthemachines or @andrewserong perhaps you could provide some insight on to what extent layouts should override margins?

Thanks for the ping! From a quick skim of the layout rules, I think it might be to do with the flex (and grid) layouts outputting the margin override in baseStyles instead of spacingStyles (spacingStyles output is the one that recently had specificity reduced in #47858). I can have a play swapping them over and see if that fixes it up.

@andrewserong
Copy link
Contributor

I can have a play swapping them over and see if that fixes it up.

I've opened a WIP PR over in #50825 — it appears to mostly work pretty well, but unfortunately has some conflicts styles that are included in classic.css. I'm not too sure what the best fix for that would be, but happy for any feedback on that if anyone has any ideas of what the desired approach should be 🤔

@tellthemachines
Copy link
Contributor

Front: None of the margins work:

With constrained layout this is no longer an issue since #47858. I notice your code snippet still shows the old rule (body .is-layout-constrained > *) so rebasing the branch should have solved that already, barring any caching issues.

The issue with flex rules and margins is a different one. It would be good to make sure what is the desired behaviour there; there's a bit more about it in #44736.

@carolinan
Copy link
Contributor Author

I have placed two preformatted blocks in the block editor.
Padding: works everywhere.
Margin:
The inline styles work everywhere.

Global styles:
In the editor and front:
The top margin of the first block does not work, but this is as planned.
The bottom margin of the second and last block does not work, but this is as planned. (The block appender can affect this test, so remove any trailing paragraphs)
Left and right margin does not work, it is always auto.

I think this is unblocked, or do we wait for the flex issue?

@carolinan carolinan changed the title Preformatted: Add padding support May 25, 2023
@tellthemachines
Copy link
Contributor

I think this is unblocked, or do we wait for the flex issue?

I don't think it's worth waiting for the flex issue, as it'll be fixed separately in #50825. In any case, it affects all blocks with margins, not specifically this one.

@carolinan carolinan removed the [Status] Blocked Used to indicate that a current effort isn't able to move forward label May 26, 2023
@carolinan
Copy link
Contributor Author

If this is unblocked, can someone approve it? 😸

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.

My apologies that this took so long to come back to, @carolinan 🙇

I believe the spacing supports for this block are behaving as expected and #50825 will take care of the remaining issues within flex containers.

As others have noted, I don't think the wait on #50825 needs to block this PR any further.

@carolinan carolinan merged commit 132c8e4 into trunk Jul 24, 2023
49 checks passed
@carolinan carolinan deleted the update/preformatted-spacing branch July 24, 2023 06:39
@github-actions github-actions bot added this to the Gutenberg 16.4 milestone Jul 24, 2023
@femkreations femkreations added the Needs User Documentation Needs new user documentation label Sep 28, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Block] Preformatted Affects the Preformatted Block - used for showing preformatted text Needs User Documentation Needs new user documentation [Type] Enhancement A suggestion for improvement.
5 participants