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

Pullquote Block: Add padding and margin support #45731

Merged
merged 7 commits into from
Jan 16, 2024

Conversation

t-hamano
Copy link
Contributor

What?

Add padding and margin support to the Pullquote block.
Fix #44129 at the same time.

Why?

To create consistency across blocks.

How?

Added the relevant block supports in block.json. Furthermore, now that the margins can be controlled, I think the default margins for a blockquote inside a figure should be reset.

Testing Instructions

AS for margin support, this can't be tested on Twenty Twenty Three. This is because the top / bottom margins are defined as important in theme.json. If this PR is merged, theme.json of Twenty Twenty Three might need to be updated.

Screenshots or screencast

4e75a98b376237bbee419ed3e8e060b7.mp4

@t-hamano t-hamano added [Block] Pullquote Affects the Pullquote Block [Feature] Design Tools Tools that impact the appearance of blocks both to expand the number of tools and improve the experi labels Nov 12, 2022
@t-hamano t-hamano self-assigned this Nov 12, 2022
@codesandbox
Copy link

codesandbox bot commented Nov 12, 2022

CodeSandbox logoCodeSandbox logo  Open in CodeSandbox Web Editor | VS Code | VS Code Insiders

@github-actions
Copy link

github-actions bot commented Nov 12, 2022

Size Change: +81 B (0%)

Total Size: 1.69 MB

Filename Size Change
build/block-library/blocks/pullquote/style-rtl.css 354 B +19 B (+6%) 🔍
build/block-library/blocks/pullquote/style.css 354 B +19 B (+6%) 🔍
build/block-library/index.min.js 215 kB +3 B (0%)
build/block-library/style-rtl.css 14.7 kB +18 B (0%)
build/block-library/style.css 14.7 kB +22 B (0%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 964 B
build/annotations/index.min.js 2.71 kB
build/api-fetch/index.min.js 2.33 kB
build/autop/index.min.js 2.11 kB
build/blob/index.min.js 590 B
build/block-directory/index.min.js 7.25 kB
build/block-directory/style-rtl.css 1.04 kB
build/block-directory/style.css 1.04 kB
build/block-editor/content-rtl.css 4.31 kB
build/block-editor/content.css 4.31 kB
build/block-editor/default-editor-styles-rtl.css 403 B
build/block-editor/default-editor-styles.css 403 B
build/block-editor/index.min.js 247 kB
build/block-editor/style-rtl.css 15.3 kB
build/block-editor/style.css 15.3 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 138 B
build/block-library/blocks/audio/theme.css 138 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 419 B
build/block-library/blocks/button/editor.css 417 B
build/block-library/blocks/button/style-rtl.css 632 B
build/block-library/blocks/button/style.css 631 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 421 B
build/block-library/blocks/columns/style.css 421 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.7 kB
build/block-library/blocks/cover/style.css 1.69 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 98 B
build/block-library/blocks/details/style.css 98 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 138 B
build/block-library/blocks/embed/theme.css 138 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 280 B
build/block-library/blocks/file/style.css 281 B
build/block-library/blocks/file/view.min.js 322 B
build/block-library/blocks/footnotes/style-rtl.css 201 B
build/block-library/blocks/footnotes/style.css 199 B
build/block-library/blocks/form-input/editor-rtl.css 229 B
build/block-library/blocks/form-input/editor.css 228 B
build/block-library/blocks/form-input/style-rtl.css 343 B
build/block-library/blocks/form-input/style.css 343 B
build/block-library/blocks/form-submission-notification/editor-rtl.css 343 B
build/block-library/blocks/form-submission-notification/editor.css 342 B
build/block-library/blocks/form-submit-button/style-rtl.css 69 B
build/block-library/blocks/form-submit-button/style.css 69 B
build/block-library/blocks/form/view.min.js 452 B
build/block-library/blocks/freeform/editor-rtl.css 2.61 kB
build/block-library/blocks/freeform/editor.css 2.61 kB
build/block-library/blocks/gallery/editor-rtl.css 957 B
build/block-library/blocks/gallery/editor.css 962 B
build/block-library/blocks/gallery/style-rtl.css 1.75 kB
build/block-library/blocks/gallery/style.css 1.75 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 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 189 B
build/block-library/blocks/heading/style.css 189 B
build/block-library/blocks/html/editor-rtl.css 340 B
build/block-library/blocks/html/editor.css 341 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.61 kB
build/block-library/blocks/image/style.css 1.6 kB
build/block-library/blocks/image/theme-rtl.css 137 B
build/block-library/blocks/image/theme.css 137 B
build/block-library/blocks/image/view.min.js 2.02 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 505 B
build/block-library/blocks/media-text/style.css 503 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 671 B
build/block-library/blocks/navigation-link/editor.css 672 B
build/block-library/blocks/navigation-link/style-rtl.css 103 B
build/block-library/blocks/navigation-link/style.css 103 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/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.25 kB
build/block-library/blocks/navigation/style.css 2.23 kB
build/block-library/blocks/navigation/view.min.js 1.1 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 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 235 B
build/block-library/blocks/paragraph/editor.css 235 B
build/block-library/blocks/paragraph/style-rtl.css 335 B
build/block-library/blocks/paragraph/style.css 335 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 666 B
build/block-library/blocks/post-featured-image/editor.css 662 B
build/block-library/blocks/post-featured-image/style-rtl.css 345 B
build/block-library/blocks/post-featured-image/style.css 345 B
build/block-library/blocks/post-navigation-link/style-rtl.css 215 B
build/block-library/blocks/post-navigation-link/style.css 214 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 409 B
build/block-library/blocks/post-template/style.css 408 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/preformatted/style-rtl.css 125 B
build/block-library/blocks/preformatted/style.css 125 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/theme-rtl.css 168 B
build/block-library/blocks/pullquote/theme.css 168 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 288 B
build/block-library/blocks/query-pagination/style.css 284 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 486 B
build/block-library/blocks/query/editor.css 486 B
build/block-library/blocks/query/style-rtl.css 312 B
build/block-library/blocks/query/style.css 308 B
build/block-library/blocks/query/view.min.js 647 B
build/block-library/blocks/quote/style-rtl.css 237 B
build/block-library/blocks/quote/style.css 237 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 140 B
build/block-library/blocks/read-more/style.css 140 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 184 B
build/block-library/blocks/search/editor.css 184 B
build/block-library/blocks/search/style-rtl.css 602 B
build/block-library/blocks/search/style.css 602 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 475 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 329 B
build/block-library/blocks/shortcode/editor.css 329 B
build/block-library/blocks/site-logo/editor-rtl.css 760 B
build/block-library/blocks/site-logo/editor.css 760 B
build/block-library/blocks/site-logo/style-rtl.css 204 B
build/block-library/blocks/site-logo/style.css 204 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 682 B
build/block-library/blocks/social-links/editor.css 681 B
build/block-library/blocks/social-links/style-rtl.css 1.49 kB
build/block-library/blocks/social-links/style.css 1.49 kB
build/block-library/blocks/spacer/editor-rtl.css 359 B
build/block-library/blocks/spacer/editor.css 359 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 395 B
build/block-library/blocks/table/editor.css 395 B
build/block-library/blocks/table/style-rtl.css 646 B
build/block-library/blocks/table/style.css 645 B
build/block-library/blocks/table/theme-rtl.css 157 B
build/block-library/blocks/table/theme.css 157 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 191 B
build/block-library/blocks/video/style.css 191 B
build/block-library/blocks/video/theme-rtl.css 139 B
build/block-library/blocks/video/theme.css 139 B
build/block-library/classic-rtl.css 179 B
build/block-library/classic.css 179 B
build/block-library/common-rtl.css 1.11 kB
build/block-library/common.css 1.11 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.3 kB
build/block-library/editor.css 12.3 kB
build/block-library/elements-rtl.css 54 B
build/block-library/elements.css 54 B
build/block-library/reset-rtl.css 472 B
build/block-library/reset.css 472 B
build/block-library/theme-rtl.css 700 B
build/block-library/theme.css 705 B
build/block-serialization-default-parser/index.min.js 1.13 kB
build/block-serialization-spec-parser/index.min.js 2.87 kB
build/blocks/index.min.js 51.6 kB
build/commands/index.min.js 15.5 kB
build/commands/style-rtl.css 947 B
build/commands/style.css 942 B
build/components/index.min.js 235 kB
build/components/style-rtl.css 12.1 kB
build/components/style.css 12.1 kB
build/compose/index.min.js 12.8 kB
build/core-commands/index.min.js 2.73 kB
build/core-data/index.min.js 72.7 kB
build/customize-widgets/index.min.js 12.1 kB
build/customize-widgets/style-rtl.css 1.36 kB
build/customize-widgets/style.css 1.36 kB
build/data-controls/index.min.js 651 B
build/data/index.min.js 8.94 kB
build/date/index.min.js 17.9 kB
build/deprecated/index.min.js 462 B
build/dom-ready/index.min.js 336 B
build/dom/index.min.js 4.68 kB
build/edit-post/classic-rtl.css 571 B
build/edit-post/classic.css 571 B
build/edit-post/index.min.js 24.9 kB
build/edit-post/style-rtl.css 5.68 kB
build/edit-post/style.css 5.68 kB
build/edit-site/index.min.js 195 kB
build/edit-site/style-rtl.css 15 kB
build/edit-site/style.css 15 kB
build/edit-widgets/index.min.js 17.3 kB
build/edit-widgets/style-rtl.css 4.44 kB
build/edit-widgets/style.css 4.43 kB
build/editor/index.min.js 61.8 kB
build/editor/style-rtl.css 5.48 kB
build/editor/style.css 5.48 kB
build/element/index.min.js 4.87 kB
build/escape-html/index.min.js 548 B
build/format-library/index.min.js 7.98 kB
build/format-library/style-rtl.css 500 B
build/format-library/style.css 500 B
build/hooks/index.min.js 1.57 kB
build/html-entities/index.min.js 454 B
build/i18n/index.min.js 3.61 kB
build/interactivity/file.min.js 442 B
build/interactivity/image.min.js 2.15 kB
build/interactivity/index.min.js 12.5 kB
build/interactivity/navigation.min.js 1.23 kB
build/interactivity/query.min.js 791 B
build/interactivity/search.min.js 610 B
build/is-shallow-equal/index.min.js 535 B
build/keyboard-shortcuts/index.min.js 1.76 kB
build/keycodes/index.min.js 1.49 kB
build/list-reusable-blocks/index.min.js 2.11 kB
build/list-reusable-blocks/style-rtl.css 865 B
build/list-reusable-blocks/style.css 865 B
build/media-utils/index.min.js 2.92 kB
build/modules/importmap-polyfill.min.js 12.2 kB
build/notices/index.min.js 964 B
build/nux/index.min.js 2.01 kB
build/nux/style-rtl.css 775 B
build/nux/style.css 771 B
build/patterns/index.min.js 5.37 kB
build/patterns/style-rtl.css 564 B
build/patterns/style.css 564 B
build/plugins/index.min.js 1.81 kB
build/preferences-persistence/index.min.js 2.08 kB
build/preferences/index.min.js 2.52 kB
build/preferences/style-rtl.css 725 B
build/preferences/style.css 728 B
build/primitives/index.min.js 994 B
build/priority-queue/index.min.js 1.52 kB
build/private-apis/index.min.js 1.02 kB
build/react-i18n/index.min.js 631 B
build/react-refresh-entry/index.min.js 9.46 kB
build/react-refresh-runtime/index.min.js 6.78 kB
build/redux-routine/index.min.js 2.71 kB
build/reusable-blocks/index.min.js 2.74 kB
build/reusable-blocks/style-rtl.css 265 B
build/reusable-blocks/style.css 265 B
build/rich-text/index.min.js 10.4 kB
build/router/index.min.js 1.79 kB
build/server-side-render/index.min.js 1.96 kB
build/shortcode/index.min.js 1.4 kB
build/style-engine/index.min.js 2.06 kB
build/token-list/index.min.js 587 B
build/url/index.min.js 3.83 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 967 B
build/warning/index.min.js 259 B
build/widgets/index.min.js 7.22 kB
build/widgets/style-rtl.css 1.18 kB
build/widgets/style.css 1.18 kB
build/wordcount/index.min.js 1.03 kB

compressed-size-action

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 putting this PR together @t-hamano 👍

It generally tests well for me. However, there are a few issues that we need to address.

✅ Padding support works
✅ Margin support works in non-TT3 themes tested
❓ Blockquote element margin reset

Resetting the blockquote margin looks like it would be a breaking change for existing pullquote blocks. It also doesn't remove the top margin for the blockquote element's immediate child p element.

See screenshot of top margin on `p` not being removed Screenshot 2022-11-14 at 11 13 09 am

Off the top of my head, I think our best option might just be to set a default padding on the pullquote block to replace the margin removed from the blockquote.

This should be easily overridden by the block support you've added, not break existing blocks' layout, and avoid the need for us to write a block deprecation or add to core's theme.json. It would still require fixing up the top margin of the blockquote's inner p element though.

What do you think?

@t-hamano
Copy link
Contributor Author

Thank you for the review, @aaronrobertshaw !

Off the top of my head, I think our best option might just be to set a default padding on the pullquote block to replace the margin removed from the blockquote.

Do you mean to add one padding as follows?

.wp-block-pullquote {
	// padding: 3em 0;
	padding: 4em 0;
}

It would still require fixing up the top margin of the blockquote's inner p element though.

This is a difficult problem. I have noticed that if I change the blockquote margins to zero, the content is no longer centered at the top and bottom of the block. This is because the p element has a default top margin.

Screenshot

quote

I have considered the following two approaches, what do you think?

Don't change blockquote margins to zero

The top margin of the p element overlaps the top margin of the blockquote, so it will be centered at the top and bottom.
However, even if the padding is set to zero in the block support, the space inside cannot be completely eliminated.

Screenshot

quote-margin-revert

Set the top margin of the p element to zero

The padding works perfectly, but would be a more breaking change.

Screenshot

quote-p-margin-top

@jameskoster
Copy link
Contributor

@t-hamano would it be possible to make the Pullquote block have a padding value in design tools as a default, IE:

Screenshot 2022-11-14 at 10 22 07

That would maintain backwards compatibility while giving users control to customise.

@aaronrobertshaw
Copy link
Contributor

Thanks for iterating on this PR @t-hamano 👍

Do you mean to add one padding as follows?

Yes, adjusting the padding to accommodate the margin that is removed in this PR allows us to keep the block visually the same.

Set the top margin of the p element to zero

I raised this in my review; however, I didn't get the chance to test it then. As you noted, it works fine.

The padding works perfectly, but would be a more breaking change.

Removing the top margin for the inner p keeps things positioned as they should be and are currently on trunk. I'm missing how this is more of a breaking change, sorry. 🤔

Here's a diff that works for me and keeps the block's spacing and dimensions the same as on trunk. With these changes, we avoid the clunky inner margins, allow padding overrides and have the ability to remove padding entirely if so desired etc.

Example diff fixing inner spacing
diff --git a/packages/block-library/src/pullquote/block.json b/packages/block-library/src/pullquote/block.json
index 2cad2d2c03..e669955a4a 100644
--- a/packages/block-library/src/pullquote/block.json
+++ b/packages/block-library/src/pullquote/block.json
@@ -70,6 +70,14 @@
 			"typography": {
 				"fontSize": "1.5em",
 				"lineHeight": "1.6"
+			},
+			"spacing": {
+				"padding": {
+					"top": "4em",
+					"right": "0",
+					"bottom": "4em",
+					"left": "0"
+				}
 			}
 		}
 	},
diff --git a/packages/block-library/src/pullquote/style.scss b/packages/block-library/src/pullquote/style.scss
index 3100f595bf..f64e831a68 100644
--- a/packages/block-library/src/pullquote/style.scss
+++ b/packages/block-library/src/pullquote/style.scss
@@ -1,6 +1,5 @@
 .wp-block-pullquote {
 	margin: 0 0 1em 0;
-	padding: 3em 0;
 	text-align: center; // Default text-alignment where the `textAlign` attribute value isn't specified.
 	overflow-wrap: break-word; // Break long strings of text without spaces so they don't overflow the block.
 	box-sizing: border-box;
@@ -15,6 +14,14 @@
 		margin: 0;
 	}
 
+	p {
+		margin-top: 0;
+
+		&:last-child {
+			margin-bottom: 0;
+		}
+	}
+
 	&.alignleft,
 	&.alignright {
 		max-width: $content-width * 0.5;
Before After
Screenshot 2022-11-15 at 7 23 17 pm Screenshot 2022-11-15 at 7 22 39 pm

If I've missed something, let me know.


would it be possible to make the Pullquote block have a padding value in design tools as a default

@jameskoster we can define the default block padding via the block.json's __experimentalStyle prop as per the diff above. This gets merged with theme.json and global styles, so will appear as the "default" in global styles if nothing has already been set to override it.

Screenshot of Global Styles > Blocks > Pullquote > Layout Screenshot 2022-11-15 at 7 31 29 pm

It is worth noting, though, that it will not show in the padding controls in the block editor. Unfortunately, we don't have access to the merged global styles there yet as we've discussed on other PRs. The PR to keep an eye on for that functionality is #34178.

@t-hamano
Copy link
Contributor Author

Thank you for your detailed suggestions, @aaronrobertshaw !

Removing the top margin for the inner p keeps things positioned as they should be and are currently on trunk. I'm missing how this is more of a breaking change, sorry. 🤔

This may have been my unnecessary concern 😅 I have applied your suggestion and it seems to work generally well with some default themes.

On the left is trunk and on the right is this PR.

Twenty Twenty Three

The default margins for block quotes have been reset, so the left and right spaces are no longer present.

tt3

Twenty Twenty Two

The default margins for block quotes have been reset, so the left and right spaces are no longer present.

tt2

Twenty Twenty One

No change because the theme's padding and margins take precedence.

tt1

Twenty Twenty

No change because the theme's padding and margins take precedence.

tt0

For the classic themes Twenty Twenty One and Twenty Twenty, this change would not affect them because the themes have padding and margins.

For the block themes Twenty Twenty Three and Twenty Twenty Two, the default margins on the left and right side of the blockquote will disappear, but since we have the freedom to change the padding of the block support, we do not see a problem.

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 iterating on this one @t-hamano and apologies for the slow reply.

The addition of padding and margin support is generally testing well for me.

For the block themes Twenty Twenty Three and Twenty Twenty Two, the default margins on the left and right side of the blockquote will disappear, but since we have the freedom to change the padding of the block support, we do not see a problem.

I'm not sure what the best option is here. As you describe, removing the default left/right margins on the blockquote will make that quote text etc go right up to the very edge of the block. This might be undesirable if the block has a background color.

The alternative might be to add a default left/right padding but depending on theme styles etc that might introduce a touch extra space.

Perhaps we should get some design feedback or themes team input here before proceeding?

There have also been some cases lately where we've put PRs adopting spacing supports on ice as layout support breaks margin support under some conditions, e.g. nesting within a Row block.

@t-hamano
Copy link
Contributor Author

t-hamano commented Dec 4, 2022

Thanks for the feedback, @aaronrobertshaw!

I'm not sure what the best option is here. As you describe, removing the default left/right margins on the blockquote will make that quote text etc go right up to the very edge of the block. This might be undesirable if the block has a background color.

The alternative might be to add a default left/right padding but depending on theme styles etc that might introduce a touch extra space.

Perhaps we should get some design feedback or themes team input here before proceeding?

Yes, I think you are right about this.

@WordPress/gutenberg-design

Could anyone give us their opinion on this issue? 🙏 The key points of this PR are as follows:

  • This PR adds padding/margin support to the pullquote block and at the same time changes the margin of the blockquote element inside to zero.
  • In order to maintain the default top and bottom margin (1em) of the blockquote element, the top and bottom padding of the block is instead increased by 1em.
  • The left and right margins of the blockquote are also reset, so the left and right spaces disappear in the block theme, as mentioned in this comment.
  • The focus is on whether to have default padding (perhaps 1em) on the left and right. What is the best approach to maintain compatibility across many themes?

@jasmussen
Copy link
Contributor

Great PR, thank you. Also a tricky one. Pullquote is a bit of an opinionated block, and in being out there, naturally has some back compat concerns to think about.

In general I don't personally have a strong opinion about the left/right padding by default. From what I can telll, the padding doesn't exist today, but this PR adds it? Weirdly I'm seeing what appears to be the opposite effect testing in TT3. Before:
before

After:

after

On a separate note, when migrating towards theme.json configurable values, in general it's nice to see fewer values in style.scss as a result, as those are always highly opinionated. In this case, the opposite happens, with more values. It may be fine since pullquote is by design an opinionated block, but nevertheless — a goal ideally is to make those rigid hardcoded values into user configurable ones.

So designwise, my opinion is this: the visual changes are fine, and the more we can make user configurable, the better. But ideally this comes at the reduction of hardcoded values.

But technically, I think the more tricky conversation here is on back compat. I'll refer to others on how to best handle that.

Can the above thoughts help inspire a way to thread the needle?

@t-hamano
Copy link
Contributor Author

@jasmussen
Thanks for your comment, and sorry for the delay in responding.

In general I don't personally have a strong opinion about the left/right padding by default. From what I can telll, the padding doesn't exist today, but this PR adds it? Weirdly I'm seeing what appears to be the opposite effect testing in TT3. Before:

The reason there is space on the left and right in trunk is that the blockquote inside has margins instead of padding on the left and right.

Blockquote has 1em margins on the left and right in the trunk post editor

post-editor

Blockquote has 40px margins on the left and right in the trunk site editor

site-editor

In this PR, the blockquote margins are all changed to zero, and as a result the left and right spaces disappear.

@t-hamano
Copy link
Contributor Author

@aaronrobertshaw

In my search for a solution, I discovered a problem in the classic theme.

If the theme doesn't apply any styles regarding spaces to the Pullquote block, this PR causes the top and bottom spaces to completely disappear.

Trunk

trunk_classic

This PR

pr_classic

I expect the reason for this problem is that __experimentalStyle isn't applied to classic themes without theme.json. Am I understanding correctly?

If so, what about updating the CSS as before, without using using __experimentalStyle, in order to maintain backward compatibility as much as possible?

Suggested diff
diff --git a/packages/block-library/src/pullquote/block.json b/packages/block-library/src/pullquote/block.json
index e669955a4a..2cad2d2c03 100644
--- a/packages/block-library/src/pullquote/block.json
+++ b/packages/block-library/src/pullquote/block.json
@@ -70,14 +70,6 @@
                        "typography": {
                                "fontSize": "1.5em",
                                "lineHeight": "1.6"
-                       },
-                       "spacing": {
-                               "padding": {
-                                       "top": "4em",
-                                       "right": "0",
-                                       "bottom": "4em",
-                                       "left": "0"
-                               }
                        }
                }
        },
diff --git a/packages/block-library/src/pullquote/style.scss b/packages/block-library/src/pullquote/style.scss
index f64e831a68..fa3c741bff 100644
--- a/packages/block-library/src/pullquote/style.scss
+++ b/packages/block-library/src/pullquote/style.scss
@@ -1,5 +1,6 @@
 .wp-block-pullquote {
        margin: 0 0 1em 0;
+       padding: 4em 1em;
        text-align: center; // Default text-alignment where the `textAlign` attribute value isn't specified.
        overflow-wrap: break-word; // Break long strings of text without spaces so they don't overflow the block.
        box-sizing: border-box;

@jasmussen
Copy link
Contributor

Blockquote has 1em margins on the left and right in the trunk post editor
Blockquote has 40px margins on the left and right in the trunk site editor
In this PR, the blockquote margins are all changed to zero, and as a result the left and right spaces disappear.

Oh that's useful, thank you! Looks like those 1em margins come from common.css, which means it's wp-admin CSS bleed, i.e. not something we should design for. What are the margins on the frontend? Whatever that is, should probably inform the new default. Nice!

@aaronrobertshaw
Copy link
Contributor

I expect the reason for this problem is that __experimentalStyle isn't applied to classic themes without theme.json. Am I understanding correctly?

That's my understanding as well although it looks like there is talk about making sure these block styles are loaded for classic themes like presets and CSS vars are.

There is also an open issue tracking the efforts to absorb block CSS into the global styles mechanism. However, looking at that issue it appears that in several cases, the __experimentalStyle additions in block.json ended up being removed.

I'm really not sure what direction we are supposed to be moving in here. Perhaps @oandregal and @scruffian might be able to share their wisdom?

@t-hamano
Copy link
Contributor Author

Sorry for the delay in replying.

I checked #43981 and the issue of __experimentalStyles in the pullquote block was mentioned in this comment.

This issue is wider than the button. Any block that uses __experimentalStyles won't have its styles shipped for classic themes. So far, they are the navigation and pullquote blocks. We need to make this API work for classic themes or revert it.

It might be better to hold off on the case of adding __experimentalStyles at the same time as padding/margin support, as is the case in this PR.

Or should we not use __experimentalStyles and add support first, leaving the styles in the CSS file once?

@jasmussen
Copy link
Contributor

It might be better to hold off on the case of adding __experimentalStyles at the same time as padding/margin support, as is the case in this PR.

Since the margins are coming from common.css and thus wp-admin, they were never intentional. Which means, sure, margin support can come to this block, but that it should not be part of a solution, because it means the margins were the bug in the first place. Whatever margins are on the frontend, should nform the new default.

@oandregal
Copy link
Member

I expect the reason for this problem is that __experimentalStyle isn't applied to classic themes without theme.json. Am I understanding correctly?

I tested this PR and this is what I see:

  • TwentyTwentyThree: the styles defined via __experimentalStyle are part of the wp-block-pullquote-inline-css stylesheet in the front.
  • TwentyTwenty: the styles defined via __experimentalStyle are part of the global-styles-inline-css styles in the front.

It sounds like everything is working as expected on that front?

@t-hamano
Copy link
Contributor Author

@oandregal
Thanks for the test.

__experimentalStyle is output as part of global-styles-inline-css on the front, but not in the post editor.

tt0

Many default themes have padding applied to this block on the editor. Therefore, it does not matter if __experimentalStyle is not output to the editor. But in themes that rely on the core style, there will be a difference between the front end and the editor in terms of whether padding is applied or not.

Is this the intended behavior?

@oandregal
Copy link
Member

@t-hamano Thanks for sharing. I've tested in the post editor and this also happens in trunk for the existing styles defined via __experimentalStyle. It needs to be looked at separately, and I've created an issue to track it #46818

@t-hamano
Copy link
Contributor Author

@oandregal
Thank you for submitting the issue. If that issue is resolved, I believe it will remove our concerns about this PR. If there is anything I can do to help, please ping me.

@t-hamano t-hamano added the [Type] Enhancement A suggestion for improvement. label Dec 30, 2023
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.

@t-hamano what's the plan for this PR?

I believe the issue with __experimentalStyle hasn't been resolved yet (#46818). Can we get away with removing the spacing changes to __experimentalStyle and adding the updated padding back to the block's stylesheet?

Giving that a quick test using emptytheme seemed ok. It still doesn't seem to be a perfect fit though.

@t-hamano
Copy link
Contributor Author

@aaronrobertshaw Sorry for replying so late.

Can we get away with removing the spacing changes to __experimentalStyle and adding the updated padding back to the block's stylesheet?

I think this approach makes sense. In the next few days, I'll be testing with different themes, including Emptytheme within several days, and will update this PR if necessary.

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 chipping away on this one @t-hamano 👍

I've given this another test and it's looking good.

🚢

@t-hamano
Copy link
Contributor Author

@aaronrobertshaw Thanks for the review!

I tested it again and it seems to be working as expected with the main themes, so I would like to merge it.

@t-hamano t-hamano merged commit d452cb4 into trunk Jan 16, 2024
57 checks passed
@t-hamano t-hamano deleted the add/padding-margin-support-to-pullquote branch January 16, 2024 10:09
@github-actions github-actions bot added this to the Gutenberg 17.6 milestone Jan 16, 2024
@carolinan
Copy link
Contributor

carolinan commented Feb 19, 2024

On a block theme with no custom spacing and no custom settings or styles on the pullquote block, the padding change is a visible change when the block is aligned.
Do we consider this acceptable or is the visual change too big?

6.4.3:
pullquote- in 6.4.3

6.5 / Gutenberg trunk
pullquote in 6.5

I know it looks a bit strange because the aligned blocks do not clear the alignment, but that is a separate issue.
Test content available at https://github.com/WordPress/theme-test-data/blob/master/64-block-test-data.xml

@t-hamano
Copy link
Contributor Author

The visual change is due to overriding the browser's default margin applied to the blockquote element inside the block with zero.

It is possible to add about 1em of padding to the left and right of the block in place of the disappeared margin, but I think it would be difficult to maintain the appearance of all themes whether we add it or not. This is because the theme may already add padding to the left and right sides of the block, or change the margin of the blockquote element.

If we add padding to the left and right:

  • ✅ If themes haven't applied any styles to this block: The visual changes will be reduced by the newly added left and right padding.
  • ⚠️ If themes were only changing the margin of the blockquote element: The visual changes will occur as new padding is added to the existing margin.
  • ⚠️ If themes applied only padding to the block: The visual changes will occur as the default margin of the blockquote element changes to zero.
  • ✅ If themes were changing the padding of the block and the margins of the blockquote element: there will be no visual changes.

If we don't add padding to the left and right:

  • ⚠️ If themes haven't applied any styles to this block: The visual changes will occur as the default margin of the blockquote element changes to zero.
  • ✅ If themes were only changing the margin of the blockquote element: there will be no visual change.
  • ⚠️ If themes applied only padding to the block: The visual changes will occur as the default margin of the blockquote element changes to zero.
  • ✅ If themes were changing the padding of the block and the margins of the blockquote element: there will be no visual changes.

I personally think the visual changes made by this PR are acceptable, what do you think?

@t-hamano
Copy link
Contributor Author

Regarding this PR, it might be better to have a Dev Note. I suggest notes like below as part of the miscellaneous dev note, what do you think?


Pullquote block now supports padding and margin. At the same time, the browser default margin applied to the blockquote element inside the block has been reset to zero to ensure that padding values are applied accurately inside the block. Depending on themes, this effect may result in visual changes and the need to adjust padding or margin.

@carolinan
Copy link
Contributor

Yeah I think that is the best alternative.

@carolinan carolinan added the has dev note when dev note is done (for upcoming WordPress release) label Feb 20, 2024
@t-hamano t-hamano mentioned this pull request Feb 20, 2024
32 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Block] Pullquote Affects the Pullquote Block [Feature] Design Tools Tools that impact the appearance of blocks both to expand the number of tools and improve the experi has dev note when dev note is done (for upcoming WordPress release) [Type] Enhancement A suggestion for improvement.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Unable to remove margin in Pullquote
6 participants