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

Add initial support for themes to control the editor #24275

Merged
merged 3 commits into from
Jul 30, 2020

Conversation

oandregal
Copy link
Member

@oandregal oandregal commented Jul 29, 2020

Fixes #22655
Follows-up #22291
Related #20588

This PR adds support for themes to control the editor via the global context.

It also merges the content of editor-features.php within global-styles.php, improving the performance as a result of having only one filesystem access to the same file by request.

How to test

  • Load this PR.
  • Load edit-site and verify that the value settings.__experimentalFeatures.typography.dropCap at the block-editor store is false.
  • Open the file lib/experimental-theme.json and set the dropcap value to true => verify the value is true in the store.
  • Install and enable a theme with support for global styles (for example, the demo theme). Set dropcap to false in the theme's experimental-theme.json file => verify the value is false in the store.

@oandregal oandregal self-assigned this Jul 29, 2020
@oandregal oandregal added [Feature] Themes Questions or issues with incorporating or styling blocks in a theme. [Package] Block editor /packages/block-editor labels Jul 29, 2020
@github-actions
Copy link

github-actions bot commented Jul 29, 2020

Size Change: -266 B (0%)

Total Size: 1.16 MB

Filename Size Change
build/block-editor/index.js 125 kB -54 B (0%)
build/block-library/index.js 132 kB -224 B (0%)
build/blocks/index.js 48.3 kB +28 B (0%)
build/core-data/index.js 11.8 kB +4 B (0%)
build/editor/index.js 45.3 kB -20 B (0%)
ℹ️ 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.44 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 7.93 kB 0 B
build/block-directory/style-rtl.css 953 B 0 B
build/block-directory/style.css 952 B 0 B
build/block-editor/style-rtl.css 10.8 kB 0 B
build/block-editor/style.css 10.8 kB 0 B
build/block-library/editor-rtl.css 7.58 kB 0 B
build/block-library/editor.css 7.58 kB 0 B
build/block-library/style-rtl.css 7.76 kB 0 B
build/block-library/style.css 7.77 kB 0 B
build/block-library/theme-rtl.css 728 B 0 B
build/block-library/theme.css 729 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/components/index.js 200 kB 0 B
build/components/style-rtl.css 15.7 kB 0 B
build/components/style.css 15.7 kB 0 B
build/compose/index.js 9.68 kB 0 B
build/data-controls/index.js 1.29 kB 0 B
build/data/index.js 8.45 kB 0 B
build/date/index.js 5.38 kB 0 B
build/deprecated/index.js 772 B 0 B
build/dom-ready/index.js 568 B 0 B
build/dom/index.js 3.23 kB 0 B
build/edit-navigation/index.js 10.9 kB 0 B
build/edit-navigation/style-rtl.css 1.08 kB 0 B
build/edit-navigation/style.css 1.08 kB 0 B
build/edit-post/index.js 304 kB 0 B
build/edit-post/style-rtl.css 5.61 kB 0 B
build/edit-post/style.css 5.61 kB 0 B
build/edit-site/index.js 17 kB 0 B
build/edit-site/style-rtl.css 3.06 kB 0 B
build/edit-site/style.css 3.06 kB 0 B
build/edit-widgets/index.js 9.38 kB 0 B
build/edit-widgets/style-rtl.css 2.45 kB 0 B
build/edit-widgets/style.css 2.45 kB 0 B
build/editor/editor-styles-rtl.css 537 B 0 B
build/editor/editor-styles.css 539 B 0 B
build/editor/style-rtl.css 3.8 kB 0 B
build/editor/style.css 3.79 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.72 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.11 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.33 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.71 kB 0 B
build/shortcode/index.js 1.7 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

return array();
}

return $config['global']['features'];
Copy link
Contributor

Choose a reason for hiding this comment

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

I don't really think we should pass just the "global" features to the editor, we should pass all the features config (per block as well) and handle it in useFeature properly.

Copy link
Member Author

Choose a reason for hiding this comment

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

Yup, that's my next step.

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.

LGTM 👍

@oandregal oandregal merged commit e4a41c8 into master Jul 30, 2020
@oandregal oandregal deleted the try/merge-editor-features-w-global-styles branch July 30, 2020 15:37
@github-actions github-actions bot added this to the Gutenberg 8.7 milestone Jul 30, 2020
@AdsonCicilioti
Copy link

Wow!! What a coincidence!

I was looking for a solution to pass the styles of the theme to the Editor in the best possible way. The strategy I have pursued is very rude, as it hurts an override in several classes of the native blocks, so that they come in harmony with the theme of the site and with the blocks themselves.

This is bad because many updates come out and I can't keep up with the changes very well. In addition Editor's UI element as the floating controls are affected by the theme style, leaving them buggy.

Congratulations @nosolosw for the initiative! If we can soon temify the styles of the blocks to conform to the themes and deliver a more faithful experience to the published content, it will be incredible!

Thank you very much in advance!

@AdsonCicilioti
Copy link

Ah! One more thing:

Currently, without this implementation, what would be the least rude strategy for overwriting block styles to conform to the theme's styles?

@oandregal
Copy link
Member Author

oandregal commented Aug 2, 2020

Currently, without this implementation, what would be the least rude strategy for overwriting block styles to conform to the theme's styles?

Hey @AdsonCicilioti We have a few options, depending on your needs. There's some theme supports, there's the ability to register new styles per block, there's block patterns, etc.

From a theme perspective, CSS specificity wars is one of the issues we hope this approach would fix, but it's also one that's quite difficult to talk about without a specific use case. Do you have one in mind? Is there an issue you're facing that you'd like to report?

@AdsonCicilioti
Copy link

AdsonCicilioti commented Aug 11, 2020

Hello @nosolosw .. Thanks for your reply ...
I am using the block editor of the standard WP installation. His the same editor from Gutenberg Plugin?
I want to replace some CSS properties. The Column Block, for example. The questions from the Breakpoists media are very opinionated and do not work in harmony with theme style.

I'm trying to be as deconstructive as possible. I'm enabled in the editor's style and and using the editor's blocks to compose the content of my pages and posts, when I need to give visual conformity / harmony between the block elements and the theme elements, I use the CSS of my theme, which is loaded after the Block Editor Style. That way I can overwrite what I need to give the harmony.

The things I'm using to harmonize with my theme are:

  • Customized Color Palette - I have them in Json objects that I share both via PHP, CSS and JS.
  • Font sizes - Same thing as the Color palettes
  • Theme styles in the editor - Basically the BADY background color, font-family, Block width and some auxiliary CSS classes.

The big problem as I see it is part of my css that takes care of overwriting some styles, it’s getting too big, not to mention that I’m carrying the common style of the blocks to the frontend plus the theme style with various properties that overwrite the styles of blocks.

I'm about to copy the common styles for my CSS files, modify them as needed, and disable it in the frontend.

The problem is that over time these common editor styles will change.

I do not want to resort to the creation of blocks, that are very similar to the Editor's and that already serve me in their structure. I will create new blocks, yes, but different blocks. It is inconsistent to recreate what already exists.

I really intend to fully explore the editor and its blocks, but it would be amazing if there was a better way to overwrite the styles.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Feature] Themes Questions or issues with incorporating or styling blocks in a theme. [Package] Block editor /packages/block-editor
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Block Editor: Allow a theme to override global defaults for editor features
3 participants