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

Fix stylesheet generation #25293

Merged
merged 2 commits into from Sep 14, 2020
Merged

Fix stylesheet generation #25293

merged 2 commits into from Sep 14, 2020

Conversation

oandregal
Copy link
Member

@oandregal oandregal commented Sep 14, 2020

In #25185 we centralized and modified the support keys to use camelCase instead of kebab-case. By doing so, we introduced a bug by which the stylesheet generation won't be able to determine which properties to output and will only include color and background. This PR fixes it.

How to test

Screenshot from 2020-09-14 17-06-15

  • Load the front-end of the site and find the global-styles-inline-css inline stylesheet. Verify the CSS props color, font-size, line-height, background-color, and --wp--style--color--link are present. Previously, only color and background could be present.

@oandregal oandregal self-assigned this Sep 14, 2020
@oandregal oandregal added [Type] Bug An existing feature does not function as intended Global Styles Anything related to the broader Global Styles efforts, including Styles Engine and theme.json labels Sep 14, 2020
@aristath
Copy link
Member

aristath commented Sep 14, 2020

A slightly more abstract method is in PR #25250 and it will auto-convert all camelCase props to kebab-case.

@nosolosw should I close the other one and keep this? Or do we want the other PR instead?

EDIT: Ah I just saw your comment on the other PR... All good 👍

@github-actions
Copy link

github-actions bot commented Sep 14, 2020

Size Change: 0 B

Total Size: 1.2 MB

ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.14 kB 0 B
build/annotations/index.js 3.67 kB 0 B
build/api-fetch/index.js 3.41 kB 0 B
build/autop/index.js 2.82 kB 0 B
build/blob/index.js 620 B 0 B
build/block-directory/index.js 8.52 kB 0 B
build/block-directory/style-rtl.css 943 B 0 B
build/block-directory/style.css 942 B 0 B
build/block-editor/index.js 128 kB 0 B
build/block-editor/style-rtl.css 11 kB 0 B
build/block-editor/style.css 11 kB 0 B
build/block-library/editor-rtl.css 8.67 kB 0 B
build/block-library/editor.css 8.67 kB 0 B
build/block-library/index.js 139 kB 0 B
build/block-library/style-rtl.css 7.59 kB 0 B
build/block-library/style.css 7.59 kB 0 B
build/block-library/theme-rtl.css 741 B 0 B
build/block-library/theme.css 741 B 0 B
build/block-serialization-default-parser/index.js 1.88 kB 0 B
build/block-serialization-spec-parser/index.js 3.1 kB 0 B
build/blocks/index.js 47.8 kB 0 B
build/components/index.js 202 kB 0 B
build/components/style-rtl.css 15.5 kB 0 B
build/components/style.css 15.4 kB 0 B
build/compose/index.js 9.67 kB 0 B
build/core-data/index.js 12.2 kB 0 B
build/data-controls/index.js 1.29 kB 0 B
build/data/index.js 8.55 kB 0 B
build/date/index.js 31.9 kB 0 B
build/deprecated/index.js 772 B 0 B
build/dom-ready/index.js 568 B 0 B
build/dom/index.js 4.48 kB 0 B
build/edit-navigation/index.js 10.7 kB 0 B
build/edit-navigation/style-rtl.css 868 B 0 B
build/edit-navigation/style.css 871 B 0 B
build/edit-post/index.js 305 kB 0 B
build/edit-post/style-rtl.css 6.24 kB 0 B
build/edit-post/style.css 6.22 kB 0 B
build/edit-site/index.js 19.3 kB 0 B
build/edit-site/style-rtl.css 3.13 kB 0 B
build/edit-site/style.css 3.13 kB 0 B
build/edit-widgets/index.js 12.2 kB 0 B
build/edit-widgets/style-rtl.css 2.55 kB 0 B
build/edit-widgets/style.css 2.55 kB 0 B
build/editor/editor-styles-rtl.css 492 B 0 B
build/editor/editor-styles.css 493 B 0 B
build/editor/index.js 45.3 kB 0 B
build/editor/style-rtl.css 3.8 kB 0 B
build/editor/style.css 3.8 kB 0 B
build/element/index.js 4.65 kB 0 B
build/escape-html/index.js 733 B 0 B
build/format-library/index.js 7.71 kB 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.13 kB 0 B
build/html-entities/index.js 621 B 0 B
build/i18n/index.js 3.56 kB 0 B
build/is-shallow-equal/index.js 711 B 0 B
build/keyboard-shortcuts/index.js 2.52 kB 0 B
build/keycodes/index.js 1.94 kB 0 B
build/list-reusable-blocks/index.js 3.12 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/media-utils/index.js 5.31 kB 0 B
build/notices/index.js 1.79 kB 0 B
build/nux/index.js 3.4 kB 0 B
build/nux/style-rtl.css 671 B 0 B
build/nux/style.css 668 B 0 B
build/plugins/index.js 2.56 kB 0 B
build/primitives/index.js 1.41 kB 0 B
build/priority-queue/index.js 789 B 0 B
build/redux-routine/index.js 2.85 kB 0 B
build/rich-text/index.js 13.9 kB 0 B
build/server-side-render/index.js 2.77 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.06 kB 0 B
build/viewport/index.js 1.85 kB 0 B
build/warning/index.js 1.14 kB 0 B
build/wordcount/index.js 1.17 kB 0 B

compressed-size-action

@oandregal
Copy link
Member Author

I read that and I agree that we'd want to have a more general method. However, I'm a little worried about the performance costs of using a regexp in such a hot path to convert camel to kebab case. I'm a little torn about this, to be honest, and feel some urgency to have a path that can go in Gutenberg 9.0.

Would it work for you if we merge this PR as a hotfix and then keep talking about a general approach in yours? This way we already have a fix and don't need to rush #25250

Copy link
Member

@aristath aristath left a comment

Choose a reason for hiding this comment

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

Tested and confirmed.
Code looks good and makes sense 👍

Copy link
Member

@aristath aristath left a comment

Choose a reason for hiding this comment

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

Tested and confirmed.
Code looks good and makes sense 👍

@oandregal oandregal added this to the Gutenberg 9.0 milestone Sep 14, 2020
@aristath
Copy link
Member

Meh sorry about the double-approval... must have clicked the approve button twice.

I read that and I agree that we'd want to have a more general method. However, I'm a little worried about the performance costs of using a regexp in such a hot path to convert camel to kebab case. I'm a little torn about this, to be honest, and feel some urgency to have a path that can go in Gutenberg 9.0.

Agreed, I sat on this one for hours before submitting the other PR.
This will work perfectly fine and for a more abstract approach we can continue working on something 👍

@oandregal oandregal merged commit 7696745 into master Sep 14, 2020
@oandregal oandregal deleted the fix/css-property-names branch September 14, 2020 14:01
* @return string CSS property name.
*/
function gutenberg_experimental_global_styles_get_css_property( $style_property ) {
switch ( $style_property ) {

Choose a reason for hiding this comment

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

I guess instead of having a switch we may have an array with the mappings:
array(
'backgroundColor' => ''background-color',
'fontSize' => 'font-size',
...
)

tellthemachines pushed a commit that referenced this pull request Sep 16, 2020
* Fix stylesheet generation

* Make linter happy
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] Bug An existing feature does not function as intended
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants