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

Global Styles: update metadata and add support for padding #27099

Merged
merged 23 commits into from
Nov 20, 2020

Conversation

oandregal
Copy link
Member

@oandregal oandregal commented Nov 19, 2020

This PR does a couple of things:

  • Reduces the amount of metadata we send to the client. Before this PR we sent all the metadata for every context, now the client derives the contexts from existing data. Fixes Reduce the amount of data Global Styles sends to the client #26802

  • While we allowed padding to be set at the block level (block attributes) we didn't do the same for the global level (theme.json). This is a bug that happened due to the distributed nature of the metadata that we had. Note that this needs a follow-up PR to add the padding control to the global styles sidebar.

How to test

Test that it works as before:

  • Install and activate a theme that supports theme.json (ex: TwentyTwentyOne blocks).
  • Check that generated styles correspond to the theme's theme.json configuration (in front-end, edit-site, and edit-post).

Tests that it padding works properly:

  • Install and activate a theme that supports theme.json (ex: TwentyTwentyOne blocks).
  • Declare some padding value for the contexts that support it (cover or group).
  • Check that the generated styles have the padding property.

@oandregal oandregal self-assigned this Nov 19, 2020
@oandregal oandregal added [Type] Code Quality Issues or PRs that relate to code quality [Type] Performance Related to performance efforts Global Styles Anything related to the broader Global Styles efforts, including Styles Engine and theme.json labels Nov 19, 2020
@github-actions
Copy link

github-actions bot commented Nov 19, 2020

Size Change: +305 B (0%)

Total Size: 1.2 MB

Filename Size Change
build/autop/index.js 2.83 kB -1 B
build/block-directory/index.js 8.72 kB -3 B (0%)
build/block-editor/index.js 133 kB +15 B (0%)
build/block-library/index.js 148 kB -2 B (0%)
build/blocks/index.js 48.1 kB +75 B (0%)
build/components/index.js 172 kB -5 B (0%)
build/compose/index.js 9.93 kB -1 B
build/data/index.js 9.59 kB +5 B (0%)
build/edit-navigation/index.js 11.2 kB -6 B (0%)
build/edit-post/index.js 306 kB -7 B (0%)
build/edit-site/index.js 23.4 kB +248 B (1%)
build/edit-widgets/index.js 26.4 kB +1 B
build/editor/index.js 43.3 kB -6 B (0%)
build/element/index.js 4.62 kB -2 B (0%)
build/format-library/index.js 6.86 kB -2 B (0%)
build/list-reusable-blocks/index.js 3.1 kB +1 B
build/media-utils/index.js 5.31 kB -2 B (0%)
build/nux/index.js 3.42 kB +1 B
build/plugins/index.js 2.56 kB -1 B
build/server-side-render/index.js 2.77 kB -1 B
build/viewport/index.js 1.86 kB -2 B (0%)
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.14 kB 0 B
build/annotations/index.js 3.8 kB 0 B
build/api-fetch/index.js 3.42 kB 0 B
build/blob/index.js 665 B 0 B
build/block-directory/style-rtl.css 943 B 0 B
build/block-directory/style.css 942 B 0 B
build/block-editor/style-rtl.css 11.3 kB 0 B
build/block-editor/style.css 11.3 kB 0 B
build/block-library/editor-rtl.css 8.96 kB 0 B
build/block-library/editor.css 8.96 kB 0 B
build/block-library/style-rtl.css 8.23 kB 0 B
build/block-library/style.css 8.23 kB 0 B
build/block-library/theme-rtl.css 792 B 0 B
build/block-library/theme.css 793 B 0 B
build/block-serialization-default-parser/index.js 1.87 kB 0 B
build/block-serialization-spec-parser/index.js 3.06 kB 0 B
build/components/style-rtl.css 15.3 kB 0 B
build/components/style.css 15.3 kB 0 B
build/core-data/index.js 14.8 kB 0 B
build/data-controls/index.js 827 B 0 B
build/date/index.js 11.2 kB 0 B
build/deprecated/index.js 769 B 0 B
build/dom-ready/index.js 571 B 0 B
build/dom/index.js 4.92 kB 0 B
build/edit-navigation/style-rtl.css 881 B 0 B
build/edit-navigation/style.css 885 B 0 B
build/edit-post/style-rtl.css 6.45 kB 0 B
build/edit-post/style.css 6.44 kB 0 B
build/edit-site/style-rtl.css 3.86 kB 0 B
build/edit-site/style.css 3.86 kB 0 B
build/edit-widgets/style-rtl.css 3.13 kB 0 B
build/edit-widgets/style.css 3.13 kB 0 B
build/editor/editor-styles-rtl.css 476 B 0 B
build/editor/editor-styles.css 478 B 0 B
build/editor/style-rtl.css 3.85 kB 0 B
build/editor/style.css 3.85 kB 0 B
build/escape-html/index.js 735 B 0 B
build/format-library/style-rtl.css 547 B 0 B
build/format-library/style.css 548 B 0 B
build/hooks/index.js 2.16 kB 0 B
build/html-entities/index.js 623 B 0 B
build/i18n/index.js 3.57 kB 0 B
build/is-shallow-equal/index.js 698 B 0 B
build/keyboard-shortcuts/index.js 2.85 kB 0 B
build/keycodes/index.js 1.94 kB 0 B
build/list-reusable-blocks/style-rtl.css 476 B 0 B
build/list-reusable-blocks/style.css 476 B 0 B
build/notices/index.js 1.82 kB 0 B
build/nux/style-rtl.css 671 B 0 B
build/nux/style.css 668 B 0 B
build/primitives/index.js 1.43 kB 0 B
build/priority-queue/index.js 790 B 0 B
build/redux-routine/index.js 2.84 kB 0 B
build/reusable-blocks/index.js 3.07 kB 0 B
build/rich-text/index.js 13.4 kB 0 B
build/shortcode/index.js 1.69 kB 0 B
build/token-list/index.js 1.27 kB 0 B
build/url/index.js 4.05 kB 0 B
build/warning/index.js 1.14 kB 0 B
build/wordcount/index.js 1.22 kB 0 B

compressed-size-action

@oandregal oandregal changed the title Update global styles metadata Global Styles: update metadata and add support for padding Nov 19, 2020
@oandregal oandregal force-pushed the update/global-styles-metadata branch from 588f8fd to d2a3cf7 Compare November 19, 2020 17:03
Copy link
Member

@jorgefilipecosta jorgefilipecosta left a comment

Choose a reason for hiding this comment

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

Hi @nosolosw the changes work well on my tests 👍 I really like that the contexts for all blocks that previously we passed from the server are now computed on the client.
I'm not totally sure about passing STYLE_PROPERTIES from the server to the client.

@@ -14,7 +14,6 @@ import {
useMemo,
} from '@wordpress/element';
import { useEntityProp } from '@wordpress/core-data';
import { __EXPERIMENTAL_STYLE_PROPERTY as STYLE_PROPERTY } from '@wordpress/blocks';
Copy link
Member

Choose a reason for hiding this comment

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

If global styles does not use __EXPERIMENTAL_STYLE_PROPERTY from @wordpress/blocks I guess the need to have this data in '@wordpress/blocks' is not present anymore as we now don't reuse this data between block-editor and global styles?
We still have the need to have this metadata on the client and server. What's the advantage of passing it on the server to edit-site especially but continue to use the hardcoded client information on the block-editor?

Copy link
Member Author

Choose a reason for hiding this comment

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

I think we should remove that and use this setting! Didn't do it in this PR because it felt too much.

contexts={
settings.__experimentalGlobalStylesContexts
metadata={
settings.__experimentalGlobalStylesMetadata
Copy link
Member

Choose a reason for hiding this comment

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

Previously we discussed passing this type of metadata from the server to the client to promote reusability. @youknowriad referred he did not like the idea of having metadata (like presets structure or style properties) as a setting. I'm cc @youknowriad in case he has any thoughts on this change, specifically the passing of STYLE_PROPERTY as a setting from the server.

Copy link
Member Author

Choose a reason for hiding this comment

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

In the interest of agility, I've duplicated in the client the style property metadata. The conversation can continue, and if we want to pass down the metadata to the client we can address it in a follow-up PR.

Copy link
Contributor

Choose a reason for hiding this comment

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

I think what's important for me is that the settings of the BlockEditorProvider make sense in isolation, in contexts without global styles, without WordPress and someone passing config there to build his own editor should be able to understand and pass the right config depending on what he wants.

So just make sure, that assumption stands :P

@oandregal oandregal force-pushed the update/global-styles-metadata branch from d2a3cf7 to b43a2c2 Compare November 20, 2020 09:35
@oandregal
Copy link
Member Author

@jorgefilipecosta your suggestions are addressed!

Copy link
Member

@jorgefilipecosta jorgefilipecosta left a comment

Choose a reason for hiding this comment

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

LGTM 👍

@oandregal oandregal mentioned this pull request Nov 20, 2020
82 tasks
@oandregal
Copy link
Member Author

Follow-up that adds the padding control at #27154

@oandregal oandregal merged commit 0d59823 into master Nov 20, 2020
@oandregal oandregal deleted the update/global-styles-metadata branch November 20, 2020 16:56
@github-actions github-actions bot added this to the Gutenberg 9.5 milestone Nov 20, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Global Styles Anything related to the broader Global Styles efforts, including Styles Engine and theme.json [Type] Code Quality Issues or PRs that relate to code quality [Type] Performance Related to performance efforts
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Reduce the amount of data Global Styles sends to the client
3 participants