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

[Block Library - Social Links]: Use the new flex layout #34493

Open
wants to merge 7 commits into
base: trunk
Choose a base branch
from

Conversation

@ntsekouras
Copy link
Contributor

@ntsekouras ntsekouras commented Sep 2, 2021

Description

Related to: #33359
Fixes: #34003

This PR explores the new flex layout to be used by Social Links block. The goal is to use flex layout in a declarative way and not rely on 'hackishcss custom solutions for blocks that aflex` layout is a good fit.

Notes

  1. I've found a bug in Social Icons block regarding itemsJustification attribute which was introduced in #28980 and wasn't declared in block.json. With this PR the issue will be resolved as we remove it's usage.
  1. I observed that also on trunk if you select the block, the alignment is different than the one applied at the end (it uses flex-start. This PR doesn't have this problem.
  2. The justify content control will need polishing in regards to labels etc..
  3. Tests will be updated and/or created..
  4. A small visual difference is that gap is applied now due to this previous change: https://github.com/WordPress/gutenberg/pull/34493/files#diff-324697e41855298e2f2c74b078f174e0cbc9075cef736ce9c1e2c169bf64652eR70.

Testing instructions

  1. Insert Social Links block and in Inspector controls play with the justify content control.
  2. Check that previously created Social Links blocks are displayed as before in both editor and front-end.

Tasks

  • Check native file
*/
if ( ! empty( $layout['justifyContent'] ) ) {
$style .= "justify-content: {$layout['justifyContent']};";
}

This comment has been minimized.

@ntsekouras

ntsekouras Sep 2, 2021
Author Contributor

@youknowriad 's comment:

I was expecting more changes here to retrieve the "default layout" from the block support config and apply it when the "layout" attribute is empty.

The passed layout has already checked the existence of default block layout.

[ clientId ]
);

const usedLayout = !! layout || getDefaultBlockLayout( name );

This comment has been minimized.

@ntsekouras

ntsekouras Sep 2, 2021
Author Contributor

@youknowriad 's comment:

All this logic is something that I wanted to do automatically in the hook for existing blocks using "layout", the problem is that we don't have a filter for InnerBlocks to do it. Maybe we should introduce an unstable filter to be able to inject the layout prop into InnerBlocks.

This comment has been minimized.

@ntsekouras

ntsekouras Sep 2, 2021
Author Contributor

I'll explore this..

This comment has been minimized.

@youknowriad

youknowriad Sep 2, 2021
Contributor

@ntsekouras this is separate from this PR, don't make it block you here.

@github-actions
Copy link

@github-actions github-actions bot commented Sep 2, 2021

Size Change: -2.31 kB (0%)

Total Size: 1.04 MB

Filename Size Change
build/block-editor/index.min.js 119 kB +146 B (0%)
build/block-library/blocks/social-links/style-rtl.css 1.3 kB -29 B (-2%)
build/block-library/blocks/social-links/style.css 1.3 kB -29 B (-2%)
build/block-library/common-rtl.css 853 B -437 B (-34%) 🎉
build/block-library/common.css 849 B -439 B (-34%) 🎉
build/block-library/editor-rtl.css 9.52 kB -457 B (-5%)
build/block-library/editor.css 9.51 kB -456 B (-5%)
build/block-library/index.min.js 151 kB +261 B (0%)
build/block-library/style-rtl.css 10.1 kB -454 B (-4%)
build/block-library/style.css 10.2 kB -454 B (-4%)
build/core-data/index.min.js 12.4 kB +38 B (0%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 931 B
build/admin-manifest/index.min.js 1.09 kB
build/annotations/index.min.js 2.7 kB
build/api-fetch/index.min.js 2.19 kB
build/autop/index.min.js 2.08 kB
build/blob/index.min.js 459 B
build/block-directory/index.min.js 6.2 kB
build/block-directory/style-rtl.css 1.01 kB
build/block-directory/style.css 1.01 kB
build/block-editor/default-editor-styles-rtl.css 378 B
build/block-editor/default-editor-styles.css 378 B
build/block-editor/style-rtl.css 13.8 kB
build/block-editor/style.css 13.8 kB
build/block-library/blocks/archives/editor-rtl.css 61 B
build/block-library/blocks/archives/editor.css 60 B
build/block-library/blocks/archives/style-rtl.css 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 474 B
build/block-library/blocks/button/editor.css 474 B
build/block-library/blocks/button/style-rtl.css 600 B
build/block-library/blocks/button/style.css 600 B
build/block-library/blocks/buttons/editor-rtl.css 315 B
build/block-library/blocks/buttons/editor.css 315 B
build/block-library/blocks/buttons/style-rtl.css 370 B
build/block-library/blocks/buttons/style.css 370 B
build/block-library/blocks/calendar/style-rtl.css 207 B
build/block-library/blocks/calendar/style.css 207 B
build/block-library/blocks/categories/editor-rtl.css 84 B
build/block-library/blocks/categories/editor.css 83 B
build/block-library/blocks/categories/style-rtl.css 79 B
build/block-library/blocks/categories/style.css 79 B
build/block-library/blocks/code/style-rtl.css 90 B
build/block-library/blocks/code/style.css 90 B
build/block-library/blocks/code/theme-rtl.css 131 B
build/block-library/blocks/code/theme.css 131 B
build/block-library/blocks/columns/editor-rtl.css 194 B
build/block-library/blocks/columns/editor.css 193 B
build/block-library/blocks/columns/style-rtl.css 474 B
build/block-library/blocks/columns/style.css 475 B
build/block-library/blocks/cover/editor-rtl.css 666 B
build/block-library/blocks/cover/editor.css 670 B
build/block-library/blocks/cover/style-rtl.css 1.23 kB
build/block-library/blocks/cover/style.css 1.23 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 925 B
build/block-library/blocks/gallery/editor.css 929 B
build/block-library/blocks/gallery/style-rtl.css 1.61 kB
build/block-library/blocks/gallery/style.css 1.61 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 70 B
build/block-library/blocks/group/theme.css 70 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 283 B
build/block-library/blocks/html/editor.css 284 B
build/block-library/blocks/image/editor-rtl.css 728 B
build/block-library/blocks/image/editor.css 728 B
build/block-library/blocks/image/style-rtl.css 482 B
build/block-library/blocks/image/style.css 487 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 488 B
build/block-library/blocks/media-text/style.css 485 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 489 B
build/block-library/blocks/navigation-link/editor.css 488 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/editor-rtl.css 1.72 kB
build/block-library/blocks/navigation/editor.css 1.72 kB
build/block-library/blocks/navigation/style-rtl.css 1.42 kB
build/block-library/blocks/navigation/style.css 1.41 kB
build/block-library/blocks/navigation/view.min.js 2.52 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 310 B
build/block-library/blocks/page-list/editor.css 310 B
build/block-library/blocks/page-list/style-rtl.css 241 B
build/block-library/blocks/page-list/style.css 241 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 261 B
build/block-library/blocks/paragraph/style.css 261 B
build/block-library/blocks/post-author/editor-rtl.css 210 B
build/block-library/blocks/post-author/editor.css 210 B
build/block-library/blocks/post-author/style-rtl.css 182 B
build/block-library/blocks/post-author/style.css 181 B
build/block-library/blocks/post-comments-form/style-rtl.css 140 B
build/block-library/blocks/post-comments-form/style.css 140 B
build/block-library/blocks/post-comments/style-rtl.css 360 B
build/block-library/blocks/post-comments/style.css 359 B
build/block-library/blocks/post-content/editor-rtl.css 138 B
build/block-library/blocks/post-content/editor.css 138 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 398 B
build/block-library/blocks/post-featured-image/editor.css 398 B
build/block-library/blocks/post-featured-image/style-rtl.css 143 B
build/block-library/blocks/post-featured-image/style.css 143 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 378 B
build/block-library/blocks/post-template/style.css 379 B
build/block-library/blocks/post-terms/style-rtl.css 73 B
build/block-library/blocks/post-terms/style.css 73 B
build/block-library/blocks/post-title/style-rtl.css 60 B
build/block-library/blocks/post-title/style.css 60 B
build/block-library/blocks/preformatted/style-rtl.css 103 B
build/block-library/blocks/preformatted/style.css 103 B
build/block-library/blocks/pullquote/editor-rtl.css 198 B
build/block-library/blocks/pullquote/editor.css 198 B
build/block-library/blocks/pullquote/style-rtl.css 378 B
build/block-library/blocks/pullquote/style.css 378 B
build/block-library/blocks/pullquote/theme-rtl.css 167 B
build/block-library/blocks/pullquote/theme.css 167 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 122 B
build/block-library/blocks/query-pagination-numbers/editor.css 121 B
build/block-library/blocks/query-pagination/editor-rtl.css 270 B
build/block-library/blocks/query-pagination/editor.css 262 B
build/block-library/blocks/query-pagination/style-rtl.css 168 B
build/block-library/blocks/query-pagination/style.css 168 B
build/block-library/blocks/query-title/editor-rtl.css 85 B
build/block-library/blocks/query-title/editor.css 85 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 220 B
build/block-library/blocks/quote/theme.css 222 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 374 B
build/block-library/blocks/search/style.css 375 B
build/block-library/blocks/search/theme-rtl.css 64 B
build/block-library/blocks/search/theme.css 64 B
build/block-library/blocks/separator/editor-rtl.css 99 B
build/block-library/blocks/separator/editor.css 99 B
build/block-library/blocks/separator/style-rtl.css 250 B
build/block-library/blocks/separator/style.css 250 B
build/block-library/blocks/separator/theme-rtl.css 172 B
build/block-library/blocks/separator/theme.css 172 B
build/block-library/blocks/shortcode/editor-rtl.css 474 B
build/block-library/blocks/shortcode/editor.css 474 B
build/block-library/blocks/site-logo/editor-rtl.css 462 B
build/block-library/blocks/site-logo/editor.css 464 B
build/block-library/blocks/site-logo/style-rtl.css 153 B
build/block-library/blocks/site-logo/style.css 153 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 165 B
build/block-library/blocks/social-link/editor.css 165 B
build/block-library/blocks/social-links/editor-rtl.css 812 B
build/block-library/blocks/social-links/editor.css 811 B
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 636 B
build/block-library/blocks/template-part/editor.css 635 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/editor-rtl.css 90 B
build/block-library/blocks/term-description/editor.css 90 B
build/block-library/blocks/text-columns/editor-rtl.css 95 B
build/block-library/blocks/text-columns/editor.css 95 B
build/block-library/blocks/text-columns/style-rtl.css 166 B
build/block-library/blocks/text-columns/style.css 166 B
build/block-library/blocks/verse/style-rtl.css 87 B
build/block-library/blocks/verse/style.css 87 B
build/block-library/blocks/video/editor-rtl.css 571 B
build/block-library/blocks/video/editor.css 572 B
build/block-library/blocks/video/style-rtl.css 173 B
build/block-library/blocks/video/style.css 173 B
build/block-library/blocks/video/theme-rtl.css 124 B
build/block-library/blocks/video/theme.css 124 B
build/block-library/reset-rtl.css 527 B
build/block-library/reset.css 527 B
build/block-library/theme-rtl.css 658 B
build/block-library/theme.css 663 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.9 kB
build/components/index.min.js 209 kB
build/components/style-rtl.css 15.8 kB
build/components/style.css 15.8 kB
build/compose/index.min.js 10.2 kB
build/customize-widgets/index.min.js 11.1 kB
build/customize-widgets/style-rtl.css 1.5 kB
build/customize-widgets/style.css 1.49 kB
build/data-controls/index.min.js 614 B
build/data/index.min.js 7.1 kB
build/date/index.min.js 31.5 kB
build/deprecated/index.min.js 428 B
build/dom-ready/index.min.js 304 B
build/dom/index.min.js 4.53 kB
build/edit-navigation/index.min.js 13.6 kB
build/edit-navigation/style-rtl.css 3.14 kB
build/edit-navigation/style.css 3.14 kB
build/edit-post/classic-rtl.css 492 B
build/edit-post/classic.css 494 B
build/edit-post/index.min.js 29 kB
build/edit-post/style-rtl.css 7.2 kB
build/edit-post/style.css 7.19 kB
build/edit-site/index.min.js 26.3 kB
build/edit-site/style-rtl.css 5.07 kB
build/edit-site/style.css 5.07 kB
build/edit-widgets/index.min.js 16 kB
build/edit-widgets/style-rtl.css 4.06 kB
build/edit-widgets/style.css 4.06 kB
build/editor/index.min.js 37.6 kB
build/editor/style-rtl.css 3.74 kB
build/editor/style.css 3.73 kB
build/element/index.min.js 3.17 kB
build/escape-html/index.min.js 517 B
build/format-library/index.min.js 5.36 kB
build/format-library/style-rtl.css 668 B
build/format-library/style.css 669 B
build/hooks/index.min.js 1.55 kB
build/html-entities/index.min.js 424 B
build/i18n/index.min.js 3.6 kB
build/is-shallow-equal/index.min.js 501 B
build/keyboard-shortcuts/index.min.js 1.49 kB
build/keycodes/index.min.js 1.25 kB
build/list-reusable-blocks/index.min.js 1.85 kB
build/list-reusable-blocks/style-rtl.css 838 B
build/list-reusable-blocks/style.css 838 B
build/media-utils/index.min.js 2.88 kB
build/notices/index.min.js 845 B
build/nux/index.min.js 2.03 kB
build/nux/style-rtl.css 747 B
build/nux/style.css 743 B
build/plugins/index.min.js 1.83 kB
build/primitives/index.min.js 921 B
build/priority-queue/index.min.js 582 B
build/react-i18n/index.min.js 671 B
build/redux-routine/index.min.js 2.63 kB
build/reusable-blocks/index.min.js 2.28 kB
build/reusable-blocks/style-rtl.css 256 B
build/reusable-blocks/style.css 256 B
build/rich-text/index.min.js 10.6 kB
build/server-side-render/index.min.js 1.32 kB
build/shortcode/index.min.js 1.48 kB
build/token-list/index.min.js 562 B
build/url/index.min.js 1.74 kB
build/viewport/index.min.js 1.02 kB
build/warning/index.min.js 248 B
build/widgets/index.min.js 6.37 kB
build/widgets/style-rtl.css 1.05 kB
build/widgets/style.css 1.05 kB
build/wordcount/index.min.js 1.04 kB

compressed-size-action

@jasmussen
Copy link
Contributor

@jasmussen jasmussen commented Sep 2, 2021

This is excellent:

Screenshot 2021-09-02 at 13 43 06

Note the above has a pretty spacious (intentionally so to test) margin, but it's applied correctly:

Screenshot 2021-09-02 at 13 44 56

Here's the gap highlighted by the inspector:

Screenshot 2021-09-02 at 13 43 18

Since we are employing gap now, I think we can remove the margin that sits around each item, which was previously there just to space things out:

Screenshot 2021-09-02 at 13 43 28

I did notice in the resting state, this "click plus" prompt is subject to the issue as well:

Screenshot 2021-09-02 at 13 54 31

I never really loved that help text in the first place, I think we'll want to do something different. But a small interim fix we can push in the mean time might just be to set the gap to zero when in that setup state.

Another thing I noticed, which we also don't have to address here, is that the Button component which is intended only for use inside editor UI is used for the markup, when an actual button should be used instead. By replacing the button component with the HTML element, we won't have to unstyle all the editor styles attached to the components-button style:

Screenshot 2021-09-02 at 13 41 54

I also tried customizing the gap for this block in particular, so that it has its own rules and not those inherited from the block gap defined in settings. This:

			"core/social-links": {
				"spacing": {
					"blockGap": "0"
				}
			}

works as intended:

Screenshot 2021-09-02 at 13 50 24

— though it does show we still have to remove the margins from the individual items still. It also opens another question: should we provide a block gap rule just for this block, or do we want it to be inherited from the default 24px styles rule? I don't have a strong opinion, but my instinct is that people would want large-ish block gaps for the main content, and a somewhat smaller gap inside social links.

@youknowriad
Copy link
Contributor

@youknowriad youknowriad commented Sep 2, 2021

I never really loved that help text in the first place, I think we'll want to do something different. But a small interim fix we can push in the mean time might just be to set the gap to zero when in that setup state.

Can't we wrap the plus and the text in a single element?

@youknowriad
Copy link
Contributor

@youknowriad youknowriad commented Sep 2, 2021

Another thing I noticed, which we also don't have to address here, is that the Button component which is intended only for use inside editor UI is used for the markup, when an actual button should be used instead. By replacing the button component with the HTML element, we won't have to unstyle all the editor styles attached to the components-button style:

I agree with this but it means we might need a button primitive to share with mobile, I wonder if that one is there for this reason.

@youknowriad
Copy link
Contributor

@youknowriad youknowriad commented Sep 2, 2021

I don't have a strong opinion, but my instinct is that people would want large-ish block gaps for the main content, and a somewhat smaller gap inside social links.

That is a good though but also one that relates more to how block gap works and not specific to this PR. It seems like you're suggesting one of the two

1- blockGap for horizontal blocks should have its own CSS variable different from the global one.
2- blockGap is not inherited at all and should be defined on each container.

For simplicity, I personally prefer the current behavior (consistent blockGap) but if we do want to make the distinction, maybe the first option is better.

It also related to a previous feedback by @andrewserong : Do we need both "column gap" and "row gap" which also raises the question about whether "row gap" in a "flow" container is equivalent to a "row gap" in a "flex" container

@jasmussen
Copy link
Contributor

@jasmussen jasmussen commented Sep 2, 2021

I agree with this but it means we might need a button primitive to share with mobile, I wonder if that one is there for this reason.

The search block was recently refactored along the same lines: #33961 — if mobile is an issue, we need to look back to that one as well.

1- blockGap for horizontal blocks should have its own CSS variable different from the global one.
2- blockGap is not inherited at all and should be defined on each container.

I think maybe I'm suggesting a 3rd option, one where there's a global CSS variable that is inherited, and then a default definition in the bundled lib/theme.json that overrides it. Someting like:

		"blocks": {
			"core/social-links": {
				"spacing": {
					"blockGap": "1em"
				}
			},

It's not a fully formed thought — mostly just sharing the thought process at this point.

@youknowriad
Copy link
Contributor

@youknowriad youknowriad commented Sep 2, 2021

The search block was recently refactored along the same lines: #33961 — if mobile is an issue, we need to look back to that one as well.

👍 we need to check with mobile folks here @geriux @fluiddot @hypest if this doesn't produce regressions there. (I'm sure it does if the code is shared)

@youknowriad
Copy link
Contributor

@youknowriad youknowriad commented Sep 2, 2021

I think maybe I'm suggesting a 3rd option, one where there's a global CSS variable that is inherited, and then a default definition in the bundled lib/theme.json that overrides it.

That works for me 👍

@talldan
Copy link
Contributor

@talldan talldan commented Sep 3, 2021

  1. Insert Social Links block and in Inspector controls play with the justify content control.
  2. Check that previously created Social Links blocks are displayed as before in both editor and front-end.

This seems to only work in block-based themes. I'm generally using non-block based themes for working on the widgets screen, and noticed justification options are no longer available.

It might be on your radar, but thought I'd mention it.

@andrewserong
Copy link
Contributor

@andrewserong andrewserong commented Sep 3, 2021

Thanks for the ping!

I think maybe I'm suggesting a 3rd option, one where there's a global CSS variable that is inherited, and then a default definition in the bundled lib/theme.json that overrides it.

That should now work now that #33991 has landed. Adding the block gap value for a specific block in the theme.json will render the CSS variable value for that block in the stylesheet. Or, inline to the rendered block markup if it's set within a block's style attribute, so you can have a separate value for the particular social links block (either via theme.json for the block in general, or once we've opted into the block support, via the individual block's attribute).

@ntsekouras ntsekouras force-pushed the add/flex-justify-content-control branch from 91e594b to 72a05ee Sep 3, 2021
@ntsekouras
Copy link
Contributor Author

@ntsekouras ntsekouras commented Sep 3, 2021

This seems to only work in block-based themes. I'm generally using non-block based themes for working on the widgets screen, and noticed justification options are no longer available.

Thanks for testing @talldan! I've made some changes to work on all themes. Also justification options are related to the flex layout, so they now live under the layout panel in Inspector Controls. So any block with flex layout will have this out of the box.

@jasmussen
Copy link
Contributor

@jasmussen jasmussen commented Sep 3, 2021

I pushed a small fix to remove the margin on link items, since they are now spaced apart wiht gap. The gap in the following is intentionally crazy to show that it works, but we'd want a sane default, like 1em, as suggested previously:

Screenshot 2021-09-03 at 14 45 29

The gap looks equally crazy in this case, as noted:

Screenshot 2021-09-03 at 14 41 08

However I wasn't able to immediately figure out how to move that prompt next to the appender only in the empty state. The CSS is a bit gnarly there. Since the gap will make sense in most cases, this might not be worth fixing since we are thinking of other options.

I noted the comments about justification changes, but I'm not sure if they have UI consequences. In this branch I'm seeing justification tools moved to the inspector, like so:

Screenshot 2021-09-03 at 14 41 03

The justification tools as part of the toolbar work better, in my opinion. Can we move them back to how they are in trunk?

Screenshot 2021-09-03 at 14 48 20

@ntsekouras
Copy link
Contributor Author

@ntsekouras ntsekouras commented Sep 3, 2021

I noted the comments about justification changes, but I'm not sure if they have UI consequences. In this branch I'm seeing justification tools moved to the inspector, like so:

I don't have strong opinion here but I'm more inclined to the approach of having the controls related to each layout grouped together in one place. This way I think it's clearer for users what controls are coupled with each layout. Also with more use cases/additions to come, the change of layouts through the layout switcher will not cause toolbar items to appear/disappear.

In the near future as we augment layout features, we could explore more things with controls. What do you think?

@jasmussen
Copy link
Contributor

@jasmussen jasmussen commented Sep 3, 2021

I don't think that there needs to be any conceptual connection between our more advanced layout tools and justifications, I'd group those with alignments and text alignments.

@youknowriad
Copy link
Contributor

@youknowriad youknowriad commented Sep 3, 2021

I agree with Nik for this one here, there's definitely a conceptual link between layout type and these justification controls.

Think of the group block for instance, imagine we enable the control to switch layout type (switch between flow and row) (we already have that it's just hidden), the justification controls will appear when you select "row" but disappear when you select "flow", it's not a great experience for group block to have toolbar buttons appear and disappear when you toggle something on the inspector IMO.

That said, there are blocks that are intrinsically "flex" layouts (or flow layouts) for instance Social Links, Columns, Buttons. For these, it makes sense to have controls for justification in the toolbar for instance (like today).

The problem is in the code architecture, we don't make any difference between these two type of blocks (both use layout). Potentially we could offer two different UIs depending on whether wether the block allow switching layout types. It's not that easy to do and if we can go with the inspector UI while we iterate on these things, I'd be game for it.

@jasmussen
Copy link
Contributor

@jasmussen jasmussen commented Sep 3, 2021

Think of the group block for instance, imagine we enable the control to switch layout type (switch between flow and row) (we already have that it's just hidden), the justification controls will appear when you select "row" but disappear when you select "flow", it's not a great experience for group block to have toolbar buttons appear and disappear when you toggle something on the inspector IMO.

Good point, it does make sense for things like group, and I can imagine other containers where justification is important but not a primary interaction. In those cases we might be able to show a dropdown like this, rather than the segmented control, as I imagine something similar could be useful for some alignment properties:

Frame 251

It's not that easy to do and if we can go with the inspector UI while we iterate on these things, I'd be game for it.

I feel somewhat strongly about keeping justification controls in the block toolbar. We could potentially have it sidebar-only for a few plugin releases, but I don't think we'd want to ship 5.9 with justification tools moved away from the block toolbar.

@youknowriad
Copy link
Contributor

@youknowriad youknowriad commented Sep 3, 2021

I feel somewhat strongly about keeping justification controls in the block toolbar. We could potentially have it sidebar-only for a few plugin releases, but I don't think we'd want to ship 5.9 with justification tools moved away from the block toolbar.

Makes sense

@ntsekouras I guess we should try to rearchitecture the edit function of layouts a bit. Maybe the responsibility to render the slots (InspectorControl and GroupControl) should be moved to that function instead of leaving it to the wrapper. And the layout itself could receive some options (like allowSwitching: true/false) to switch between toolbar or inspector depending on the block

@ntsekouras
Copy link
Contributor Author

@ntsekouras ntsekouras commented Sep 3, 2021

@ntsekouras I guess we should try to rearchitecture the edit function of layouts a bit.

I'll see to it 😄

@jasmussen
Copy link
Contributor

@jasmussen jasmussen commented Sep 3, 2021

In case it's useful, I wouldn't personally mind if justification tools were both in the inspector and block toolbar for something like social links and buttons, but inspector only for something like group.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

5 participants