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

Try fixing post editor layout for wide/full Post Content blocks #49565

Merged
merged 2 commits into from
Apr 11, 2023

Conversation

tellthemachines
Copy link
Contributor

What?

Fixes #49546.

This is not a perfect fix, because it assumes that Post Content is inside a constrained layout block with the default wide content value. If the parent block has custom content/wide width values set, it won't really work.

Currently the only way to make sure the post editor layout conforms exactly to the appearance of the Post Content block would be to look at the attributes of all its parent blocks, which would require a lot of complicated logic 😅 and, given the direction #41717 sets for the future of post editing, it is likely not worth the effort. (Once the editors are unified as per #41717, the problem will be solved because the post editing interface will reproduce its template structure exactly.)

The fix in this PR should cover a bunch of common cases though, so I think it can still be useful.

Testing Instructions

  1. In a block theme, edit the Single template so that Post Content is nested in a Group with "Inner blocks use content width" turned on, and is set to "wide" alignment. Post Content itself should have "Inner blocks use content width" turned off.
  2. Save changes and go to the post editor. Add a few blocks to the post and check that their maximum width is the theme wide alignment width.
  3. Back in the template view, try switching the Post Content alignment to "full" and save changes.
  4. Reload the post editor and check that the content now stretches to full width of the editor.

Testing Instructions for Keyboard

Screenshots or screencast

Editor with full width layout:

Screenshot 2023-04-04 at 1 55 25 pm

@tellthemachines tellthemachines self-assigned this Apr 4, 2023
@tellthemachines tellthemachines added [Type] Bug An existing feature does not function as intended [Package] Edit Post /packages/edit-post [Feature] Layout Layout block support, its UI controls, and style output. labels Apr 4, 2023
@github-actions
Copy link

github-actions bot commented Apr 4, 2023

Size Change: +2.12 kB (0%)

Total Size: 1.35 MB

Filename Size Change
build/block-editor/index.min.js 203 kB +1.86 kB (+1%)
build/block-editor/style-rtl.css 14.6 kB +109 B (+1%)
build/block-editor/style.css 14.6 kB +110 B (+1%)
build/block-library/blocks/spacer/editor-rtl.css 359 B +27 B (+8%) 🔍
build/block-library/blocks/spacer/editor.css 359 B +27 B (+8%) 🔍
build/block-library/editor-rtl.css 11.7 kB +19 B (0%)
build/block-library/editor.css 11.7 kB +22 B (0%)
build/block-library/index.min.js 203 kB +387 B (0%)
build/components/index.min.js 208 kB -13 B (0%)
build/components/style-rtl.css 11.7 kB +2 B (0%)
build/components/style.css 11.7 kB +2 B (0%)
build/customize-widgets/index.min.js 12.2 kB -5 B (0%)
build/edit-post/index.min.js 35 kB +146 B (0%)
build/edit-site/index.min.js 63.3 kB -445 B (-1%)
build/edit-site/style-rtl.css 10.1 kB -67 B (-1%)
build/edit-site/style.css 10.1 kB -65 B (-1%)
build/edit-widgets/index.min.js 17.3 kB -3 B (0%)
build/editor/index.min.js 45.9 kB +7 B (0%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 993 B
build/annotations/index.min.js 2.78 kB
build/api-fetch/index.min.js 2.27 kB
build/autop/index.min.js 2.15 kB
build/blob/index.min.js 483 B
build/block-directory/index.min.js 7.2 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.11 kB
build/block-editor/content.css 4.1 kB
build/block-editor/default-editor-styles-rtl.css 403 B
build/block-editor/default-editor-styles.css 403 B
build/block-library/blocks/archives/editor-rtl.css 61 B
build/block-library/blocks/archives/editor.css 60 B
build/block-library/blocks/archives/style-rtl.css 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 91 B
build/block-library/blocks/avatar/style.css 91 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 587 B
build/block-library/blocks/button/editor.css 587 B
build/block-library/blocks/button/style-rtl.css 628 B
build/block-library/blocks/button/style.css 627 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 649 B
build/block-library/blocks/cover/editor.css 651 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/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 300 B
build/block-library/blocks/file/editor.css 300 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 353 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 984 B
build/block-library/blocks/gallery/editor.css 988 B
build/block-library/blocks/gallery/style-rtl.css 1.55 kB
build/block-library/blocks/gallery/style.css 1.55 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 76 B
build/block-library/blocks/heading/style.css 76 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 830 B
build/block-library/blocks/image/editor.css 829 B
build/block-library/blocks/image/style-rtl.css 652 B
build/block-library/blocks/image/style.css 652 B
build/block-library/blocks/image/theme-rtl.css 137 B
build/block-library/blocks/image/theme.css 137 B
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 716 B
build/block-library/blocks/navigation-link/editor.css 715 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 299 B
build/block-library/blocks/navigation-submenu/editor.css 299 B
build/block-library/blocks/navigation/editor-rtl.css 2.13 kB
build/block-library/blocks/navigation/editor.css 2.14 kB
build/block-library/blocks/navigation/style-rtl.css 2.22 kB
build/block-library/blocks/navigation/style.css 2.21 kB
build/block-library/blocks/navigation/view-modal.min.js 2.81 kB
build/block-library/blocks/navigation/view.min.js 447 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 501 B
build/block-library/blocks/post-comments-form/style.css 501 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 322 B
build/block-library/blocks/post-featured-image/style.css 322 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 281 B
build/block-library/blocks/post-template/style.css 281 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 103 B
build/block-library/blocks/preformatted/style.css 103 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 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 463 B
build/block-library/blocks/query/editor.css 463 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 165 B
build/block-library/blocks/search/editor.css 165 B
build/block-library/blocks/search/style-rtl.css 408 B
build/block-library/blocks/search/style.css 406 B
build/block-library/blocks/search/theme-rtl.css 114 B
build/block-library/blocks/search/theme.css 114 B
build/block-library/blocks/separator/editor-rtl.css 146 B
build/block-library/blocks/separator/editor.css 146 B
build/block-library/blocks/separator/style-rtl.css 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 474 B
build/block-library/blocks/shortcode/editor.css 474 B
build/block-library/blocks/site-logo/editor-rtl.css 489 B
build/block-library/blocks/site-logo/editor.css 489 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.4 kB
build/block-library/blocks/social-links/style.css 1.39 kB
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 651 B
build/block-library/blocks/table/style.css 650 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 404 B
build/block-library/blocks/template-part/editor.css 404 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 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 179 B
build/block-library/blocks/video/style.css 179 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.12 kB
build/block-library/common.css 1.12 kB
build/block-library/editor-elements-rtl.css 75 B
build/block-library/editor-elements.css 75 B
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/style-rtl.css 12.8 kB
build/block-library/style.css 12.8 kB
build/block-library/theme-rtl.css 698 B
build/block-library/theme.css 703 B
build/block-serialization-default-parser/index.min.js 1.13 kB
build/block-serialization-spec-parser/index.min.js 2.83 kB
build/blocks/index.min.js 51.1 kB
build/compose/index.min.js 12.4 kB
build/core-data/index.min.js 16.3 kB
build/customize-widgets/style-rtl.css 1.41 kB
build/customize-widgets/style.css 1.41 kB
build/data-controls/index.min.js 663 B
build/data/index.min.js 8.68 kB
build/date/index.min.js 40.4 kB
build/deprecated/index.min.js 518 B
build/dom-ready/index.min.js 336 B
build/dom/index.min.js 4.72 kB
build/edit-post/classic-rtl.css 571 B
build/edit-post/classic.css 571 B
build/edit-post/style-rtl.css 7.6 kB
build/edit-post/style.css 7.59 kB
build/edit-widgets/style-rtl.css 4.56 kB
build/edit-widgets/style.css 4.56 kB
build/editor/style-rtl.css 3.49 kB
build/editor/style.css 3.48 kB
build/element/index.min.js 4.95 kB
build/escape-html/index.min.js 548 B
build/format-library/index.min.js 7.26 kB
build/format-library/style-rtl.css 557 B
build/format-library/style.css 556 B
build/hooks/index.min.js 1.66 kB
build/html-entities/index.min.js 454 B
build/i18n/index.min.js 3.79 kB
build/is-shallow-equal/index.min.js 535 B
build/keyboard-shortcuts/index.min.js 1.79 kB
build/keycodes/index.min.js 1.94 kB
build/list-reusable-blocks/index.min.js 2.14 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.99 kB
build/notices/index.min.js 977 B
build/plugins/index.min.js 1.94 kB
build/preferences-persistence/index.min.js 2.23 kB
build/preferences/index.min.js 1.35 kB
build/primitives/index.min.js 960 B
build/priority-queue/index.min.js 1.52 kB
build/private-apis/index.min.js 937 B
build/react-i18n/index.min.js 702 B
build/react-refresh-entry/index.min.js 8.44 kB
build/react-refresh-runtime/index.min.js 7.31 kB
build/redux-routine/index.min.js 2.75 kB
build/reusable-blocks/index.min.js 2.26 kB
build/reusable-blocks/style-rtl.css 265 B
build/reusable-blocks/style.css 265 B
build/rich-text/index.min.js 11.1 kB
build/server-side-render/index.min.js 2.09 kB
build/shortcode/index.min.js 1.52 kB
build/style-engine/index.min.js 1.55 kB
build/token-list/index.min.js 650 B
build/url/index.min.js 3.74 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 1.09 kB
build/warning/index.min.js 280 B
build/widgets/index.min.js 7.3 kB
build/widgets/style-rtl.css 1.18 kB
build/widgets/style.css 1.18 kB
build/wordcount/index.min.js 1.06 kB

compressed-size-action

Copy link
Contributor

@andrewserong andrewserong 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 together a fix so quickly! I think the direction here is a good pragmatic fix for the reported issue, and helps get the UI closer to what's expected. As you mention, so long as the post editor is separate from the template, it'll always be a little different to how the content will appear on the site frontend, but this gets it much closer for this case 👍

Just left a comment about post content blocks that have wide alignment as well as using constrained layout, and whether we should check that we're using the default layout type before outputting the align class and styles.

Another subtle issue, that could very well not be worth attempting to fix in this PR, is that the blocks within the editor canvas report the None alignment as Max 840x wide. However in this context, everything will be at either wide width or full width.

image

Aside from those two issues, this is otherwise testing great for me!

@@ -272,7 +272,8 @@ export default function VisualEditor( { styles } ) {
{
'is-layout-flow': ! themeSupportsLayout,
},
themeSupportsLayout && postContentLayoutClasses
themeSupportsLayout && postContentLayoutClasses,
align && `align${ align }`
Copy link
Contributor

Choose a reason for hiding this comment

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

I know this is likely pretty edge-casey, but what about the case where the wide post content block has the constrained layout type (or inherit: true)? In that case, in the site editor, the preview of the post content block will visually look like the content is constrained to the contentSize, but when opening up the page editor, the alignwide rules take precedence.

To avoid that, I was wondering if we could add a variable to use before outputting the classname and styles. E.g. something along the lines of:

const { layout = {}, align = '' } = newestPostContentAttributes || {};
const outputAlignmentStyles = !! ( align && ( ! layout.type || layout.type === 'default' ) );

And then use that in this line and before outputting <LayoutStyle... below?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Well spotted! I think we should still output the alignment styles though, because if the Post Content is alignwide none of its children will ever be wider than that, so it helps to have the content max width set.

Instead, I'm going to try scoping the rules affecting Post Content children to when Post Content itself is is-layout-flow.

Copy link
Contributor

Choose a reason for hiding this comment

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

Instead, I'm going to try scoping the rules affecting Post Content children to when Post Content itself is is-layout-flow.

Nice, that helps keep the code simpler, too 👍

@github-actions
Copy link

github-actions bot commented Apr 4, 2023

Flaky tests detected in d3b8b67.
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/4624343665
📝 Reported issues:

@ramonjd
Copy link
Member

ramonjd commented Apr 5, 2023

Testing this, it looks to me to address the issue of ensuring that the post content in the post editor reflects post content block alignment.

I've given then post content block in the singular post template an alignment value of "full". Here's what I see in the post editor:

Before

Screenshot 2023-04-05 at 11 52 29 am

After

Screenshot 2023-04-05 at 11 52 20 am

I have a question, and I'm not sure if this is a valid one.

I was fiddling with alignments on the post content block in the template editor. E.g., I gave the block a right alignment:

Screenshot 2023-04-05 at 12 02 13 pm

In trunk I'm seeing this in the post editor, which matches what I see on the frontend:

Screenshot 2023-04-05 at 12 02 19 pm

On this branch however, the alignment is being overridden, I think by this line of CSS

Screenshot 2023-04-05 at 12 02 29 pm

And the post editor no longer appears as it does on the frontend, that is, right-aligned.

@tellthemachines
Copy link
Contributor Author

Thanks for the feedback folks!

On this branch however, the alignment is being overridden, I think by this line of CSS

Ah yes, that should now be fixed too! It was a consequence of the issue Andy pointed out here.

Another subtle issue, that could very well not be worth attempting to fix in this PR, is that the blocks within the editor canvas report the None alignment as Max 840x wide. However in this context, everything will be at either wide width or full width.

I think that might be good to address separately because it's really an existing issue: children of blocks with flow layout still get that max [content width] wide label even though their width with no alignment will be the same as that of their parent, which could be anything. We should probably only output the label for children of constrained layouts, or when we know for sure what the width will be.

Copy link
Contributor

@andrewserong andrewserong 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 the updates, this is testing well for me now! Nice work coming up with an elegant CSS fix 👍

✅ The original issue of displaying flow layouts for a post content block set to wide is still working well
✅ When the post content block is set to a constrained layout type, the alignments are working now
✅ The alignwide and alignfull rules are being correctly applied, as you mention, this ensures that if a post content block is set to wide that the full size cannot be larger than the wide size:

image

I think that might be good to address separately because it's really an existing issue: children of blocks with flow layout still get that max [content width] wide label even though their width with no alignment will be the same as that of their parent, which could be anything.

I agree, a separate PR sounds good — it sounds like hiding the description of "none" for children of flow layouts is a good way to go 👍

LGTM! ✨

@andrewserong andrewserong added the Backport to WP Minor Release Pull request that needs to be backported to a WordPress minor release label Apr 6, 2023
@tellthemachines tellthemachines merged commit 748c517 into trunk Apr 11, 2023
@tellthemachines tellthemachines deleted the try/wide-post-editor branch April 11, 2023 00:03
@github-actions github-actions bot added this to the Gutenberg 15.6 milestone Apr 11, 2023
@Mamaduka
Copy link
Member

Mamaduka commented May 8, 2023

@tellthemachines, @andrewserong, I'm working on backports for WP 6.2.1, but can't cleanly cherry-pick this change. I believe the fix here depends on changes from #45299, which is still experimental.

How crucial is it that we ship this fix in the minor release? Can a similar fix be applied on the wp/6.2 branch?

The WP 6.2.1-RC is scheduled for tomorrow.

@tellthemachines
Copy link
Contributor Author

@Mamaduka that's right, this change was made on top of #45299 which is mostly a performance enhancement so it's not appropriate for a minor release. I think it's fine to leave this out of 6.2.1 though!

@Mamaduka
Copy link
Member

Mamaduka commented May 9, 2023

Thanks for the feedback, @tellthemachines! I will remove the backport label.

@Mamaduka Mamaduka removed the Backport to WP Minor Release Pull request that needs to be backported to a WordPress minor release label May 9, 2023
@@ -327,6 +328,12 @@ export default function VisualEditor( { styles } ) {
[ styles ]
);

// Add some styles for alignwide/alignfull Post Content and its children.
const alignCSS = `.is-root-container.alignwide { max-width: var(--wp--style--global--wide-size); margin-left: auto; margin-right: auto;}
Copy link
Contributor

Choose a reason for hiding this comment

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

This is so weird, I don't really understand why we need this code, any explanations?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

That was added to address this comment. Post Content layout in the front end is influenced by both its layout and alignment; this was an attempt make the post editor accurately reflect them.

Copy link
Contributor

Choose a reason for hiding this comment

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

So are you saying that we try to apply the "alignment" of the post content block in the post editor? For me that seems a bit random because we don't really know the layout of its parent block, maybe it's within a small sidebar, and wide there means something else. Anyway, I'm not touching that at the moment but I feel like it's just complexity for nothing.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

True, we're not looking at the complete nesting tree. It would be possible to grab any custom wide align value from the parent (which we're not doing) and that might make things a bit more accurate, but in terms of effort vs effect the current solution will work for the majority of cases. Many themes nest Post Content inside one or more Group blocks; even those that nest it inside Columns will most likely have it in a responsive column that takes up most of the page. Having Post Content display in a narrow column on the single post template is a very unlikely scenario.

With these layout problems there are always many variables at play: nesting structure, parent block styles, theme styles, root padding, alignments... and often no approach works for all cases; I think if there's no universal solution it's best to try for a solution that works for most cases 😅

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Feature] Layout Layout block support, its UI controls, and style output. [Package] Edit Post /packages/edit-post [Type] Bug An existing feature does not function as intended
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Layout / Post Editor: A post content block set to "wide" is not rendered as wide within the post editor
5 participants