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

Navigation: Fix space-between #36441

Merged
merged 3 commits into from
Nov 18, 2021
Merged

Navigation: Fix space-between #36441

merged 3 commits into from
Nov 18, 2021

Conversation

jasmussen
Copy link
Contributor

@jasmussen jasmussen commented Nov 12, 2021

Description

Fixes #36440.

Restores a justificiation rule to the navigation block that was removed in a refactor. This fixes the justification:

Screenshot 2021-11-12 at 13 10 44

How has this been tested?

Insert a horizontal navigation block with 3 items then apply space-between on it. The stretching of the space between items should be visible in editor and frontend.

Checklist:

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

@jasmussen jasmussen added [Block] Navigation Affects the Navigation Block Backport to WP 6.7 Beta/RC Pull request that needs to be backported to the WordPress major release that's currently in beta labels Nov 12, 2021
@jasmussen jasmussen self-assigned this Nov 12, 2021
@github-actions
Copy link

github-actions bot commented Nov 12, 2021

Size Change: +70 B (0%)

Total Size: 1.1 MB

Filename Size Change
build/block-library/blocks/navigation/style-rtl.css 1.58 kB +17 B (+1%)
build/block-library/blocks/navigation/style.css 1.57 kB +18 B (+1%)
build/block-library/style-rtl.css 10.5 kB +17 B (0%)
build/block-library/style.css 10.5 kB +18 B (0%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 960 B
build/admin-manifest/index.min.js 1.1 kB
build/annotations/index.min.js 2.75 kB
build/api-fetch/index.min.js 2.21 kB
build/autop/index.min.js 2.12 kB
build/blob/index.min.js 459 B
build/block-directory/index.min.js 6.28 kB
build/block-directory/style-rtl.css 1.01 kB
build/block-directory/style.css 1.01 kB
build/block-editor/default-editor-styles-rtl.css 378 B
build/block-editor/default-editor-styles.css 378 B
build/block-editor/index.min.js 139 kB
build/block-editor/style-rtl.css 14.4 kB
build/block-editor/style.css 14.4 kB
build/block-library/blocks/archives/editor-rtl.css 61 B
build/block-library/blocks/archives/editor.css 60 B
build/block-library/blocks/archives/style-rtl.css 65 B
build/block-library/blocks/archives/style.css 65 B
build/block-library/blocks/audio/editor-rtl.css 58 B
build/block-library/blocks/audio/editor.css 58 B
build/block-library/blocks/audio/style-rtl.css 111 B
build/block-library/blocks/audio/style.css 111 B
build/block-library/blocks/audio/theme-rtl.css 125 B
build/block-library/blocks/audio/theme.css 125 B
build/block-library/blocks/block/editor-rtl.css 161 B
build/block-library/blocks/block/editor.css 161 B
build/block-library/blocks/button/editor-rtl.css 470 B
build/block-library/blocks/button/editor.css 470 B
build/block-library/blocks/button/style-rtl.css 560 B
build/block-library/blocks/button/style.css 560 B
build/block-library/blocks/buttons/editor-rtl.css 291 B
build/block-library/blocks/buttons/editor.css 291 B
build/block-library/blocks/buttons/style-rtl.css 275 B
build/block-library/blocks/buttons/style.css 275 B
build/block-library/blocks/calendar/style-rtl.css 207 B
build/block-library/blocks/calendar/style.css 207 B
build/block-library/blocks/categories/editor-rtl.css 84 B
build/block-library/blocks/categories/editor.css 83 B
build/block-library/blocks/categories/style-rtl.css 79 B
build/block-library/blocks/categories/style.css 79 B
build/block-library/blocks/code/style-rtl.css 90 B
build/block-library/blocks/code/style.css 90 B
build/block-library/blocks/code/theme-rtl.css 134 B
build/block-library/blocks/code/theme.css 134 B
build/block-library/blocks/columns/editor-rtl.css 206 B
build/block-library/blocks/columns/editor.css 205 B
build/block-library/blocks/columns/style-rtl.css 503 B
build/block-library/blocks/columns/style.css 502 B
build/block-library/blocks/cover/editor-rtl.css 546 B
build/block-library/blocks/cover/editor.css 547 B
build/block-library/blocks/cover/style-rtl.css 1.19 kB
build/block-library/blocks/cover/style.css 1.19 kB
build/block-library/blocks/embed/editor-rtl.css 488 B
build/block-library/blocks/embed/editor.css 488 B
build/block-library/blocks/embed/style-rtl.css 417 B
build/block-library/blocks/embed/style.css 417 B
build/block-library/blocks/embed/theme-rtl.css 124 B
build/block-library/blocks/embed/theme.css 124 B
build/block-library/blocks/file/editor-rtl.css 300 B
build/block-library/blocks/file/editor.css 300 B
build/block-library/blocks/file/style-rtl.css 255 B
build/block-library/blocks/file/style.css 255 B
build/block-library/blocks/file/view.min.js 322 B
build/block-library/blocks/freeform/editor-rtl.css 2.44 kB
build/block-library/blocks/freeform/editor.css 2.44 kB
build/block-library/blocks/gallery/editor-rtl.css 977 B
build/block-library/blocks/gallery/editor.css 982 B
build/block-library/blocks/gallery/style-rtl.css 1.62 kB
build/block-library/blocks/gallery/style.css 1.62 kB
build/block-library/blocks/gallery/theme-rtl.css 122 B
build/block-library/blocks/gallery/theme.css 122 B
build/block-library/blocks/group/editor-rtl.css 159 B
build/block-library/blocks/group/editor.css 159 B
build/block-library/blocks/group/style-rtl.css 57 B
build/block-library/blocks/group/style.css 57 B
build/block-library/blocks/group/theme-rtl.css 78 B
build/block-library/blocks/group/theme.css 78 B
build/block-library/blocks/heading/style-rtl.css 114 B
build/block-library/blocks/heading/style.css 114 B
build/block-library/blocks/home-link/style-rtl.css 247 B
build/block-library/blocks/home-link/style.css 247 B
build/block-library/blocks/html/editor-rtl.css 332 B
build/block-library/blocks/html/editor.css 333 B
build/block-library/blocks/image/editor-rtl.css 731 B
build/block-library/blocks/image/editor.css 730 B
build/block-library/blocks/image/style-rtl.css 507 B
build/block-library/blocks/image/style.css 511 B
build/block-library/blocks/image/theme-rtl.css 124 B
build/block-library/blocks/image/theme.css 124 B
build/block-library/blocks/latest-comments/style-rtl.css 284 B
build/block-library/blocks/latest-comments/style.css 284 B
build/block-library/blocks/latest-posts/editor-rtl.css 137 B
build/block-library/blocks/latest-posts/editor.css 137 B
build/block-library/blocks/latest-posts/style-rtl.css 528 B
build/block-library/blocks/latest-posts/style.css 527 B
build/block-library/blocks/list/style-rtl.css 94 B
build/block-library/blocks/list/style.css 94 B
build/block-library/blocks/media-text/editor-rtl.css 266 B
build/block-library/blocks/media-text/editor.css 263 B
build/block-library/blocks/media-text/style-rtl.css 493 B
build/block-library/blocks/media-text/style.css 490 B
build/block-library/blocks/more/editor-rtl.css 431 B
build/block-library/blocks/more/editor.css 431 B
build/block-library/blocks/navigation-link/editor-rtl.css 649 B
build/block-library/blocks/navigation-link/editor.css 650 B
build/block-library/blocks/navigation-link/style-rtl.css 94 B
build/block-library/blocks/navigation-link/style.css 94 B
build/block-library/blocks/navigation-submenu/editor-rtl.css 299 B
build/block-library/blocks/navigation-submenu/editor.css 299 B
build/block-library/blocks/navigation-submenu/style-rtl.css 213 B
build/block-library/blocks/navigation-submenu/style.css 213 B
build/block-library/blocks/navigation-submenu/view.min.js 343 B
build/block-library/blocks/navigation/editor-rtl.css 1.89 kB
build/block-library/blocks/navigation/editor.css 1.89 kB
build/block-library/blocks/navigation/view.min.js 2.74 kB
build/block-library/blocks/nextpage/editor-rtl.css 395 B
build/block-library/blocks/nextpage/editor.css 395 B
build/block-library/blocks/page-list/editor-rtl.css 377 B
build/block-library/blocks/page-list/editor.css 377 B
build/block-library/blocks/page-list/style-rtl.css 172 B
build/block-library/blocks/page-list/style.css 172 B
build/block-library/blocks/paragraph/editor-rtl.css 157 B
build/block-library/blocks/paragraph/editor.css 157 B
build/block-library/blocks/paragraph/style-rtl.css 273 B
build/block-library/blocks/paragraph/style.css 273 B
build/block-library/blocks/post-author/style-rtl.css 175 B
build/block-library/blocks/post-author/style.css 176 B
build/block-library/blocks/post-comments-form/style-rtl.css 444 B
build/block-library/blocks/post-comments-form/style.css 444 B
build/block-library/blocks/post-comments/style-rtl.css 492 B
build/block-library/blocks/post-comments/style.css 493 B
build/block-library/blocks/post-excerpt/editor-rtl.css 73 B
build/block-library/blocks/post-excerpt/editor.css 73 B
build/block-library/blocks/post-excerpt/style-rtl.css 69 B
build/block-library/blocks/post-excerpt/style.css 69 B
build/block-library/blocks/post-featured-image/editor-rtl.css 396 B
build/block-library/blocks/post-featured-image/editor.css 397 B
build/block-library/blocks/post-featured-image/style-rtl.css 153 B
build/block-library/blocks/post-featured-image/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 391 B
build/block-library/blocks/post-template/style.css 392 B
build/block-library/blocks/post-terms/style-rtl.css 73 B
build/block-library/blocks/post-terms/style.css 73 B
build/block-library/blocks/post-title/style-rtl.css 80 B
build/block-library/blocks/post-title/style.css 80 B
build/block-library/blocks/preformatted/style-rtl.css 103 B
build/block-library/blocks/preformatted/style.css 103 B
build/block-library/blocks/pullquote/editor-rtl.css 198 B
build/block-library/blocks/pullquote/editor.css 198 B
build/block-library/blocks/pullquote/style-rtl.css 378 B
build/block-library/blocks/pullquote/style.css 378 B
build/block-library/blocks/pullquote/theme-rtl.css 167 B
build/block-library/blocks/pullquote/theme.css 167 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 122 B
build/block-library/blocks/query-pagination-numbers/editor.css 121 B
build/block-library/blocks/query-pagination/editor-rtl.css 262 B
build/block-library/blocks/query-pagination/editor.css 255 B
build/block-library/blocks/query-pagination/style-rtl.css 234 B
build/block-library/blocks/query-pagination/style.css 231 B
build/block-library/blocks/query/editor-rtl.css 131 B
build/block-library/blocks/query/editor.css 132 B
build/block-library/blocks/quote/style-rtl.css 187 B
build/block-library/blocks/quote/style.css 187 B
build/block-library/blocks/quote/theme-rtl.css 223 B
build/block-library/blocks/quote/theme.css 226 B
build/block-library/blocks/rss/editor-rtl.css 202 B
build/block-library/blocks/rss/editor.css 204 B
build/block-library/blocks/rss/style-rtl.css 289 B
build/block-library/blocks/rss/style.css 288 B
build/block-library/blocks/search/editor-rtl.css 165 B
build/block-library/blocks/search/editor.css 165 B
build/block-library/blocks/search/style-rtl.css 397 B
build/block-library/blocks/search/style.css 398 B
build/block-library/blocks/search/theme-rtl.css 64 B
build/block-library/blocks/search/theme.css 64 B
build/block-library/blocks/separator/editor-rtl.css 99 B
build/block-library/blocks/separator/editor.css 99 B
build/block-library/blocks/separator/style-rtl.css 245 B
build/block-library/blocks/separator/style.css 245 B
build/block-library/blocks/separator/theme-rtl.css 172 B
build/block-library/blocks/separator/theme.css 172 B
build/block-library/blocks/shortcode/editor-rtl.css 474 B
build/block-library/blocks/shortcode/editor.css 474 B
build/block-library/blocks/site-logo/editor-rtl.css 770 B
build/block-library/blocks/site-logo/editor.css 770 B
build/block-library/blocks/site-logo/style-rtl.css 165 B
build/block-library/blocks/site-logo/style.css 165 B
build/block-library/blocks/site-tagline/editor-rtl.css 86 B
build/block-library/blocks/site-tagline/editor.css 86 B
build/block-library/blocks/site-title/editor-rtl.css 84 B
build/block-library/blocks/site-title/editor.css 84 B
build/block-library/blocks/social-link/editor-rtl.css 177 B
build/block-library/blocks/social-link/editor.css 177 B
build/block-library/blocks/social-links/editor-rtl.css 824 B
build/block-library/blocks/social-links/editor.css 823 B
build/block-library/blocks/social-links/style-rtl.css 1.32 kB
build/block-library/blocks/social-links/style.css 1.32 kB
build/block-library/blocks/spacer/editor-rtl.css 307 B
build/block-library/blocks/spacer/editor.css 307 B
build/block-library/blocks/spacer/style-rtl.css 48 B
build/block-library/blocks/spacer/style.css 48 B
build/block-library/blocks/table/editor-rtl.css 471 B
build/block-library/blocks/table/editor.css 472 B
build/block-library/blocks/table/style-rtl.css 481 B
build/block-library/blocks/table/style.css 481 B
build/block-library/blocks/table/theme-rtl.css 188 B
build/block-library/blocks/table/theme.css 188 B
build/block-library/blocks/tag-cloud/style-rtl.css 146 B
build/block-library/blocks/tag-cloud/style.css 146 B
build/block-library/blocks/template-part/editor-rtl.css 560 B
build/block-library/blocks/template-part/editor.css 559 B
build/block-library/blocks/template-part/theme-rtl.css 101 B
build/block-library/blocks/template-part/theme.css 101 B
build/block-library/blocks/text-columns/editor-rtl.css 95 B
build/block-library/blocks/text-columns/editor.css 95 B
build/block-library/blocks/text-columns/style-rtl.css 166 B
build/block-library/blocks/text-columns/style.css 166 B
build/block-library/blocks/verse/style-rtl.css 87 B
build/block-library/blocks/verse/style.css 87 B
build/block-library/blocks/video/editor-rtl.css 569 B
build/block-library/blocks/video/editor.css 570 B
build/block-library/blocks/video/style-rtl.css 173 B
build/block-library/blocks/video/style.css 173 B
build/block-library/blocks/video/theme-rtl.css 124 B
build/block-library/blocks/video/theme.css 124 B
build/block-library/common-rtl.css 815 B
build/block-library/common.css 812 B
build/block-library/editor-rtl.css 9.84 kB
build/block-library/editor.css 9.85 kB
build/block-library/index.min.js 162 kB
build/block-library/reset-rtl.css 474 B
build/block-library/reset.css 474 B
build/block-library/theme-rtl.css 672 B
build/block-library/theme.css 677 B
build/block-serialization-default-parser/index.min.js 1.09 kB
build/block-serialization-spec-parser/index.min.js 2.79 kB
build/blocks/index.min.js 46.3 kB
build/components/index.min.js 214 kB
build/components/style-rtl.css 15.3 kB
build/components/style.css 15.3 kB
build/compose/index.min.js 10.9 kB
build/core-data/index.min.js 13.2 kB
build/customize-widgets/index.min.js 11.4 kB
build/customize-widgets/style-rtl.css 1.5 kB
build/customize-widgets/style.css 1.49 kB
build/data-controls/index.min.js 631 B
build/data/index.min.js 7.42 kB
build/date/index.min.js 31.5 kB
build/deprecated/index.min.js 485 B
build/dom-ready/index.min.js 304 B
build/dom/index.min.js 4.5 kB
build/edit-navigation/index.min.js 16 kB
build/edit-navigation/style-rtl.css 3.76 kB
build/edit-navigation/style.css 3.76 kB
build/edit-post/classic-rtl.css 492 B
build/edit-post/classic.css 494 B
build/edit-post/index.min.js 29.6 kB
build/edit-post/style-rtl.css 7.1 kB
build/edit-post/style.css 7.09 kB
build/edit-site/index.min.js 33.2 kB
build/edit-site/style-rtl.css 6.1 kB
build/edit-site/style.css 6.1 kB
build/edit-widgets/index.min.js 16.5 kB
build/edit-widgets/style-rtl.css 4.18 kB
build/edit-widgets/style.css 4.18 kB
build/editor/index.min.js 37.8 kB
build/editor/style-rtl.css 3.78 kB
build/editor/style.css 3.77 kB
build/element/index.min.js 3.29 kB
build/escape-html/index.min.js 517 B
build/format-library/index.min.js 6.57 kB
build/format-library/style-rtl.css 571 B
build/format-library/style.css 571 B
build/hooks/index.min.js 1.63 kB
build/html-entities/index.min.js 424 B
build/i18n/index.min.js 3.71 kB
build/is-shallow-equal/index.min.js 501 B
build/keyboard-shortcuts/index.min.js 1.8 kB
build/keycodes/index.min.js 1.39 kB
build/list-reusable-blocks/index.min.js 1.86 kB
build/list-reusable-blocks/style-rtl.css 838 B
build/list-reusable-blocks/style.css 838 B
build/media-utils/index.min.js 2.92 kB
build/notices/index.min.js 925 B
build/nux/index.min.js 2.08 kB
build/nux/style-rtl.css 747 B
build/nux/style.css 743 B
build/plugins/index.min.js 1.84 kB
build/primitives/index.min.js 924 B
build/priority-queue/index.min.js 582 B
build/react-i18n/index.min.js 671 B
build/redux-routine/index.min.js 2.65 kB
build/reusable-blocks/index.min.js 2.22 kB
build/reusable-blocks/style-rtl.css 256 B
build/reusable-blocks/style.css 256 B
build/rich-text/index.min.js 11 kB
build/server-side-render/index.min.js 1.57 kB
build/shortcode/index.min.js 1.49 kB
build/token-list/index.min.js 639 B
build/url/index.min.js 1.9 kB
build/viewport/index.min.js 1.05 kB
build/warning/index.min.js 248 B
build/widgets/index.min.js 7.15 kB
build/widgets/style-rtl.css 1.16 kB
build/widgets/style.css 1.16 kB
build/wordcount/index.min.js 1.04 kB

compressed-size-action

Copy link
Contributor

@tellthemachines tellthemachines left a comment

Choose a reason for hiding this comment

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

It would be good to avoid using the legacy justification classes, because ideally they should be removed altogether once we've sorted out a smart solution for submenu alignment.

I can only reproduce this issue in the editor, not in the front end, and the culprit seems to be the extra div wrapper around the block contents.

In the front end, the content wrapper is wp-block-navigation__responsive-container-content, and wp-block-navigation__container is the navigation link wrapper. Both these classes have the flex layout styles attached. But in the editor, we have an extra nested wrapper with wp-block-navigation__container which is the only child of wp-block-navigation__responsive-container-content. Being a child of a flex container, it gets squeezed to its minimum width, so the space-between doesn't work.

I think the most harmless fix for this would be to set wp-block-navigation__responsive-container-content to display: block in the editor only, because in the editor it only ever has the one child, which is the inner block wrapper. What do you think?

@jasmussen
Copy link
Contributor Author

For me in trunk, space between is broken both in the editor, and on the frontend:
Screenshot 2021-11-15 at 08 13 54
Screenshot 2021-11-15 at 08 14 11

The idea of not using the alignment classes is a noble goal, I hope and generally do believe we can achieve it. But just to satisfy my curiosity, what is the main problem with having those is-justified-n utility classes even in the long term?

Note that the key bit to solve here is to allow the inner item to grow, flex grow to be specific:
flex grow

I'm fairly sure that we used to have flex-grow applied by default to that container, regardless of justification. But I'm also pretty sure we removed that again as it caused problems elsewhere. Just to revisit, it does appear to be working fine with letting everything flex-grow:
Screenshot 2021-11-15 at 08 19 37

There's a case inside the burger where it needs to be unset again:

Screenshot 2021-11-15 at 08 19 45

But that should be easy.

I'm just scratching my head why I scoped it to only apply to space between. I'll have to dig a bit, but that's probably the cleaner solution, just applying it to all.

@jasmussen
Copy link
Contributor Author

Yep, here's the issue: #35722

Editor:

Screenshot 2021-11-15 at 08 28 53

Frontend:
Screenshot 2021-11-15 at 08 29 04

This is because the navigation container is allowed to expand:
Screenshot 2021-11-15 at 08 29 13

Any thoughts?

@tellthemachines
Copy link
Contributor

For me in trunk, space between is broken both in the editor, and on the frontend

Oooh, I see it now. It's most noticeable in the front end whenever wp-block-navigation__container is the only child of its parent. I had a couple more blocks in there, so everything seemed fine.

The idea of not using the alignment classes is a noble goal, I hope and generally do believe we can achieve it. But just to satisfy my curiosity, what is the main problem with having those is-justified-n utility classes even in the long term?

The only problem is the longer they stay, the more likely it is that we'll hook custom behaviour onto them and thus be unable to remove them 😅

Layout removes the need for these classes in all other blocks where it's used, so ideally the same would happen here.

Having said that, Navigation presents a unique set of challenges due to its complex markup structure and the variety of blocks it can house, so it may be that we're just hitting the limitations of layout here. And if this is a problem unique to Navigation (which it seems to be, at least so far) we need a custom solution.

If we want to scope these styles to when space-between is applied, keeping those classes in place is our best bet. In that case, we should also apply flex-grow to wp-block-page-list, because the same thing happens if Page List is the only child of Nav. But with this solution, there will still be combinations of blocks that won't work too well:

Two links and Social:
Screen Shot 2021-11-16 at 2 31 43 pm

Two links and Search:
Screen Shot 2021-11-16 at 2 31 59 pm

Two links and a Page List with two items (assuming both link container and page list container have flex-grow: 1:

Screen Shot 2021-11-16 at 2 32 09 pm

The best overall visual solution for this would be display: contents but its current browser implementation has accessibility issues, so we can't use it 😢

Alternatively, what if we scoped the flex-grow: 1 to the link container and the page list container whenever they are the only child of their parent? As that's when the issue is really noticeable. In that scenario, the likes of this would work well:

Screen Shot 2021-11-16 at 2 37 41 pm

And this wouldn't look too bad (it won't look perfect either way 🤷 )

Screen Shot 2021-11-16 at 2 38 02 pm

And in that case we needn't use the classnames 😅

@jasmussen
Copy link
Contributor Author

The only problem is the longer they stay, the more likely it is that we'll hook custom behaviour onto them and thus be unable to remove them 😅
Layout removes the need for these classes in all other blocks where it's used, so ideally the same would happen here.

I suppose with no utility classes, the markup is slightly more minimal and clean — this is the primary benefit, correct?

Yes, as you dove in here, space-between is a bit of a tricky one to apply to a navigation container in order to meet user expectations. Social links mixed in is a good example, and yes, it'd be nice if we could use display: contents; 🌈 .

The thing is: even if this PR doesn't get it perfectly right at this point (we might need rules to target social links, etc) — if we keep the justification class around, we should be able to fix anything the markup can throw at us. Right?

I suppose we could always re-introduce or add back the classes if we encounter markup in the core blocks that won't work correctly with inheriting just a single property. But the thing is, these utility classes, just like align-right of yore, are useful both to plugins, themes, and third party blocks to do things we can't necessarily imagine right at this point.

That said, I do like the sound of this:

Alternatively, what if we scoped the flex-grow: 1 to the link container and the page list container whenever they are the only child of their parent? As that's when the issue is really noticeable. In that scenario, the likes of this would work well:

How would we do that in a way that worked in both editor and frontend, and was decently understandable CSS?

@jasmussen
Copy link
Contributor Author

In that case, we should also apply flex-grow to wp-block-page-list, because the same thing happens if Page List is the only child of Nav.

Good call, thank you. Fixed:
Screenshot 2021-11-16 at 10 25 40
Screenshot 2021-11-16 at 10 28 40

@tellthemachines
Copy link
Contributor

if we keep the justification class around, we should be able to fix anything the markup can throw at us.

The justification class won't help with the problem of having two containers side by side, both set to space-between, such as when we have two nav links followed by a page list with two items, or one space-between container followed by another block, such as two nav links followed by a search box. space-between only works seamlessly if all the elements are in the same container, and the only workaround I'm aware of is display: contents. Hopefully at some point browser support for display: contents will improve to the point it's no longer inaccessible 🤞 but then we'll be able to fix this without the class anyway.

How would we do that in a way that worked in both editor and frontend, and was decently understandable CSS?

I was thinking something like

.wp-block-navigation__container:only-child,
.wp-block-page-list:only-child {
	flex-grow: 1;
}

@jasmussen
Copy link
Contributor Author

Wild, I had forgotten about only-child. I like it, let's try it, thank you!

I still do think we might want to restore/embrace the classes at some point, I feel like there are some theme and block use cases that need them. But it's a noble goal to try and absorb that complexity, so let's definitely try without them for starters.

@tellthemachines
Copy link
Contributor

I still do think we might want to restore/embrace the classes at some point, I feel like there are some theme and block use cases that need them.

This is something we should definitely gather more data on! Echoing my comment on #36525, it would be good to look at use cases and see what we can solve with global styles vs what we need classes for.

@jasmussen jasmussen merged commit b8fd765 into trunk Nov 18, 2021
@jasmussen jasmussen deleted the try/fix-space-between branch November 18, 2021 08:40
@jasmussen
Copy link
Contributor Author

Thanks for your extensive help on this one 👌

@github-actions github-actions bot added this to the Gutenberg 12.1 milestone Nov 18, 2021
@noisysocks noisysocks removed the Backport to WP 6.7 Beta/RC Pull request that needs to be backported to the WordPress major release that's currently in beta label Nov 22, 2021
noisysocks pushed a commit that referenced this pull request Nov 22, 2021
* Navigation: Fix space-between

* Apply to page list.

* Try only child.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Block] Navigation Affects the Navigation Block
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Navigation: Space-between justification doesn't work
3 participants