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

Merged
merged 12 commits into from
Sep 7, 2021

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 Add Items Justification to Social Links #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

@ntsekouras ntsekouras added [Block] Social Affects the Social Block - used to display Social Media accounts [Type] Experimental Experimental feature or API. labels Sep 2, 2021
@ntsekouras ntsekouras self-assigned this Sep 2, 2021
*/
if ( ! empty( $layout['justifyContent'] ) ) {
$style .= "justify-content: {$layout['justifyContent']};";
}
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@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 );
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@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.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I'll explore this..

Copy link
Contributor

Choose a reason for hiding this comment

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

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

@github-actions
Copy link

github-actions bot commented Sep 2, 2021

Size Change: +2.41 kB (0%)

Total Size: 1.04 MB

Filename Size Change
build/block-editor/index.min.js 119 kB +276 B (0%)
build/block-library/blocks/query-pagination/style-rtl.css 239 B +71 B (+42%) 🚨
build/block-library/blocks/query-pagination/style.css 236 B +68 B (+40%) 🚨
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/index.min.js 151 kB +677 B (0%)
build/block-library/style-rtl.css 10.2 kB +39 B (0%)
build/block-library/style.css 10.2 kB +34 B (0%)
build/blocks/index.min.js 46.9 kB +48 B (0%)
build/components/index.min.js 209 kB +17 B (0%)
build/core-data/index.min.js 12.4 kB +7 B (0%)
build/dom/index.min.js 4.53 kB +3 B (0%)
build/edit-navigation/index.min.js 14.9 kB +943 B (+7%) 🔍
build/edit-navigation/style-rtl.css 3.38 kB +114 B (+3%)
build/edit-navigation/style.css 3.37 kB +114 B (+4%)
build/edit-site/index.min.js 26.4 kB +61 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.6 kB
build/block-library/blocks/gallery/style.css 1.59 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-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/common-rtl.css 853 B
build/block-library/common.css 849 B
build/block-library/editor-rtl.css 9.52 kB
build/block-library/editor.css 9.51 kB
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/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/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.2 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.1 kB
build/edit-widgets/style-rtl.css 4.06 kB
build/edit-widgets/style.css 4.06 kB
build/editor/index.min.js 37.7 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 7.27 kB
build/widgets/style-rtl.css 1.17 kB
build/widgets/style.css 1.18 kB
build/wordcount/index.min.js 1.04 kB

compressed-size-action

@jasmussen
Copy link
Contributor

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

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

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

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

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

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

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 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 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 Compare September 3, 2021 08:28
@ntsekouras
Copy link
Contributor Author

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

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 ntsekouras force-pushed the add/flex-justify-content-control branch from 7c7315c to df4f7b4 Compare September 7, 2021 07:10
}
return (
<ToggleGroupControl
label={ __( 'Justify content' ) }
Copy link
Contributor

Choose a reason for hiding this comment

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

The label seems too close to the buttons in this case,
Also clicking the label doesn't seem to focus the buttons like labels do in general in controls.

I believe these are probably independent of this PR but could use some improvements separately.

Copy link
Contributor

@youknowriad youknowriad left a comment

Choose a reason for hiding this comment

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

I don't like the duplication of controls we have right now but maybe it's fine for a start.

@ntsekouras ntsekouras merged commit dd5fd6b into trunk Sep 7, 2021
@ntsekouras ntsekouras deleted the add/flex-justify-content-control branch September 7, 2021 17:57
@github-actions github-actions bot added this to the Gutenberg 11.5 milestone Sep 7, 2021
@jasmussen
Copy link
Contributor

I didn't have time to test the latest version here before landing, but we'll want to follow up on the segmented control if that's still used — the "space between" wrapping on two lines means that widget shouldn't be used. We could potentially use an iconified version of the segmented control that uses the justification icons, and reads a bit like this one:

Screenshot 2021-09-07 at 20 02 34

@aaronrobertshaw
Copy link
Contributor

@aaronrobertshaw the migration removes only the justify content classes which contained the same styles applied by the flex layout. Such conflicts with align are still possible.

@ntsekouras I was under the impression that there was some additional handling of className attribute. Via the custom class name hooks or in the parser where custom class names are "fixed". My suggestion was that although the current code in the deprecation only stripped out the justification class it might have had this unintended side effect.

Can you share how your block without this PR and how it changed here?

Before this PR, alignment classes on existing blocks weren't treated as custom CSS classes. After a block is migrated via the new deprecations, the alignment class is saved as a custom CSS class.

I've tested this again by checking out the commit on trunk prior to the merging of this PR. I get the same behaviour consistently.

Steps to reproduce

  1. Checkout the commit on trunk prior to this PR's merge: 435119c
  2. Add a social links block and align it to the right, then save
  3. Reload the editor and note that the Advanced CSS field in the inspector controls is still empty
  4. Check out the latest on trunk or just this PR's commit: dd5fd6b
  5. Reload the editor
  6. Reselect the social links block and note that the Advanced CSS field now contains the alignright class
  7. Try and change the block's alignment to centered via the block's toolbar. It will still appear right aligned
  8. Clear the Advanced CSS field and the block's alignment will display correctly again

Demo of above steps

Screen.Recording.2021-09-08.at.11.34.34.am.mp4

@jasmussen
Copy link
Contributor

Thank you all for the excellent work on this. It's so nice to see the block toolbar affordance for justification still there. Nice work.

social

One thing we should follow up on soon is the segmented control where "Space between" wraps on to two lines:

Screenshot 2021-09-08 at 10 00 44

The segmented control should not be used when there isn't space for the text inside to fit on one line. Some alternatives is a dropdown, or perhaps as alluded to earlier, a small buttongroup with icons. It could look like this:

Frame 279

The above, if we like, could even be a segmented control under the hood since only one item at a time is selected. But the design it emulates is that of toolbar buttons. What do you think, @ntsekouras?

@ntsekouras
Copy link
Contributor Author

The segmented control should not be used when there isn't space for the text inside to fit on one line. Some alternatives is a dropdown, or perhaps as alluded to earlier, a small buttongroup with icons. It could look like this:

@jasmussen I'll open a follow up really soon.

@jasmussen
Copy link
Contributor

Awesome. Would be happy to pair on it 👌

fullofcaffeine added a commit that referenced this pull request Sep 9, 2021
* trunk: (214 commits)
  Fix snackbar overflow on nav editor (#34661)
  Mobile - Allow disabling text and background color via theme.json (#34633)
  Fix disabled blocks logical error on Widgets screen (#34634)
  [Mobile] - Global styles - Add support to render font sizes and line height (#34144)
  ESLint Plugin: Update eslint jsdoc dependency (#34338)
  Scripts: Add CHANGELOG entry for `jest-dev-server` upgrade (#34657)
  Bump jest-dev-server to v5 (#34560)
  Refactor the `core-data` store to thunks (#28389)
  Only capture toolbars on parent Nav block when not in vertical mode (#34615)
  Update Changelog for 11.5.0-rc.1
  Bump plugin version to 11.5.0-rc.1
  Gallery block: Fix media placeholder height in site editor (#34629)
  Border Controls: Display color indicator and check selected color (#34467)
  Remove horizontal and vertical navigation block variations from inserter (#34614)
  AlignmentMatrixControl : Fix/update docs (#34624)
  Gap block support: force gap change to cause the block to re-render (fix Safari issue) (#34567)
  [Block Library - Social Links]: Use the new `flex` layout (#34493)
  [Mobile] Update the bottom sheet header (#34309)
  Group block: Add a row variation (#34535)
  Migrate entities.js to thunks (#34582)
  ...
@@ -0,0 +1,7 @@
<!-- wp:social-links {"customIconColor":"#ffffff","iconColorValue":"#ffffff","customIconBackgroundColor":"#3962e3","iconBackgroundColorValue":"#3962e3","className":"has-icon-color"} -->
<ul class="wp-block-social-links has-icon-color has-icon-background-color items-justified-space-between">
Copy link
Contributor

Choose a reason for hiding this comment

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

How can this block have item-justified-* classname without having the itemsJustification attribute?

Copy link
Contributor

Choose a reason for hiding this comment

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

I guess that attribute has never been registered (was broken)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Exactly.

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 its usage.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Block] Social Affects the Social Block - used to display Social Media accounts [Type] Experimental Experimental feature or API.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Used attribute itemsJustification is not declared in block's schema
6 participants