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: Try per block custom CSS #46571

Merged
merged 18 commits into from
Jan 23, 2023
Merged

Conversation

carolinan
Copy link
Contributor

@carolinan carolinan commented Dec 15, 2022

What?

Adds the option to add custom CSS per block via the Styles sidebar in the Site Editor and via theme.json.
Continuation on #30142, #44412

Why?

To allow more customizations.

How?

This PR builds on the previous changes that adds the option to add custom CSS to the root via the Styles sidebar.

  • Updates the global styles context menu to display the button that opens the Custom CSS panel for each block.
  • Updates the CustomCSSControl to use the block specific CSS (styles.blocks.blockname.css) if a block name is defined.
  • Updates the screen, ScreenCSS to pass the block name to the CustomCSSCControl and to display a slightly different panel description, containing the block name (I added the block name for clarity and ease of use ).
  • Outputs the per block CSS in the editors and front.

Testing Instructions

  1. Apply the PR
  2. Activate the test theme, "empty theme"
  3. In theme.json, add CSS to styles.blocks.blockname.css,
    for example to the paragraph block:
"styles": {
		"blocks": {
			"core/paragraph": {
				"css": "color: orange;"
			}
		}
	}
  1. View the theme and confirm that the CSS you added in theme.json is applied in the site editor, block editor, and on the front.
  2. Open the Site Editor. Select "Edit" in the new navigation sidebar. Open the Styles sidebar, select Blocks.
    Open the Styles sidebar, select Blocks.
  3. Select the block that you added CSS to in the previous step.
  4. Below the typography, colors and layout settings you should find a new panel with the text "Add your own CSS to customize the block appearance."
  5. Select the button with the text "Additional block CSS" to open the CSS panel.
  6. Confirm that there is a description at the top of the panel, after the back button and Heading.
    Confirm that the description contains the name of the current block:
    "Add your own CSS to customize the appearance of the Paragraph block."
  7. Below that is an h2 heading that says "ADDITIONAL CSS" followed by
    a text area for inputting CSS.
  8. Confirm that the text area shows the CSS that you added to theme.json.
  9. Make a change to the existing CSS and make a new addition.
  10. Confirm that the changes are applied to the blocks in the site editor.
  11. Confirm that there is a help text below the text area with some instructions.
  12. Next, confirm that there is an additional panel below the help text.
  • The panel should be closed by default.
  • The panel has an H2 heading with a button with the text "Original Theme Custom CSS"
    Activate the button to open the panel.
    The panel should contain a <pre> element with the CSS that you added to theme.json.
  1. Save the style changes.
  2. Go back one step to the previous panel, the panel for the block.
  3. Confirm that the block preview has been updated with your styles.
  4. View the front of the website and confirm that your styles are applied.

Testing Instructions for Keyboard

The Styles sidebar in general has accessibility problems where the heading order is incorrect and where information
is not available to screen reader users.
These problems affect the sidebar as a whole and needs to be carefully tested and fixed in a separate PR.

Testing permissions

  1. Disable unfiltered HTML by adding the following constant to wp-config.php - define( 'DISALLOW_UNFILTERED_HTML', true );

  2. Refresh the Site Editor, open the Styles sidebar, select Blocks. Select a block, confirm that this panel does not have a custom CSS button.

  3. Apply the PR

  4. Activate the test theme, "empty theme"

  5. In theme.json, add CSS to styles.blocks.blockname.css,
    for example to the paragraph block:

"styles": {
		"blocks": {
			"core/paragraph": {
				"css": "color: orange;"
			}
		}
	}
  1. From the WordPress admin area, navigate to the Site Editor under Appearance, Editor.
  2. Once in the Site Editor, activate the button with the aria-label "Open the editor".
  3. Navigate backwards into the "Editor top toolbar". Navigate backwards past the Options and Navigation buttons, and activate the "Styles" button.
    7 - Note: The styles sidebar is now opened, but it is unclear to me how to best navigate to it because activating the button does not move focus to the sidebar content.
    Instead, I needed to tab forward past the navigation and option buttons, and past the editor content.
    The next focusable item is then a button labeled "open Style book". This button is inside the styles panel, but it is not the button we want to access.
    Instead, press the tab key to tab forwards past More styles, close, browse styles, typography, colors, layout, until you arrive at the button "Block Styles". Activate this button.
  4. Even though it is not announced that the block styles panel is opened, focus should now be inside the correct sidebar panel. Use tab to navigate through a list of buttons labeled with the block name. Select the button for the block that you edited in theme.json.
  5. Navigate past the block options for typography, color and layout until you reach the button with the aria-label "Additional block CSS". Activate the button.
  6. tab forwards to reach a text area. When the text area is in focus, a help text with instructions is also read out.
  7. Confirm that there is CSS in the text area that matches what you added to theme.json.
  8. Edit the CSS and make your own addition.
  9. Save.
  10. Reload/refresh the page and navigate back to the text area. Confirm that the updates you made have been saved.

Screenshots or screencast

The button that opens the custom CSS panel, in the Styles > blocks panel

The per block custom CSS panel in the site editor

@aristath aristath linked an issue Dec 15, 2022 that may be closed by this pull request
@github-actions
Copy link

github-actions bot commented Dec 15, 2022

Size Change: +236 B (0%)

Total Size: 1.33 MB

Filename Size Change
build/block-editor/index.min.js 190 kB +103 B (0%)
build/edit-site/index.min.js 61.7 kB +133 B (0%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 993 B
build/annotations/index.min.js 2.78 kB
build/api-fetch/index.min.js 2.27 kB
build/autop/index.min.js 2.15 kB
build/blob/index.min.js 483 B
build/block-directory/index.min.js 7.16 kB
build/block-directory/style-rtl.css 1.04 kB
build/block-directory/style.css 1.04 kB
build/block-editor/content-rtl.css 3.65 kB
build/block-editor/content.css 3.65 kB
build/block-editor/default-editor-styles-rtl.css 403 B
build/block-editor/default-editor-styles.css 403 B
build/block-editor/style-rtl.css 14.2 kB
build/block-editor/style.css 14.2 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 90 B
build/block-library/blocks/archives/style.css 90 B
build/block-library/blocks/audio/editor-rtl.css 150 B
build/block-library/blocks/audio/editor.css 150 B
build/block-library/blocks/audio/style-rtl.css 122 B
build/block-library/blocks/audio/style.css 122 B
build/block-library/blocks/audio/theme-rtl.css 138 B
build/block-library/blocks/audio/theme.css 138 B
build/block-library/blocks/avatar/editor-rtl.css 116 B
build/block-library/blocks/avatar/editor.css 116 B
build/block-library/blocks/avatar/style-rtl.css 84 B
build/block-library/blocks/avatar/style.css 84 B
build/block-library/blocks/block/editor-rtl.css 305 B
build/block-library/blocks/block/editor.css 305 B
build/block-library/blocks/button/editor-rtl.css 485 B
build/block-library/blocks/button/editor.css 485 B
build/block-library/blocks/button/style-rtl.css 532 B
build/block-library/blocks/button/style.css 532 B
build/block-library/blocks/buttons/editor-rtl.css 337 B
build/block-library/blocks/buttons/editor.css 337 B
build/block-library/blocks/buttons/style-rtl.css 332 B
build/block-library/blocks/buttons/style.css 332 B
build/block-library/blocks/calendar/style-rtl.css 239 B
build/block-library/blocks/calendar/style.css 239 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 100 B
build/block-library/blocks/categories/style.css 100 B
build/block-library/blocks/code/editor-rtl.css 53 B
build/block-library/blocks/code/editor.css 53 B
build/block-library/blocks/code/style-rtl.css 121 B
build/block-library/blocks/code/style.css 121 B
build/block-library/blocks/code/theme-rtl.css 124 B
build/block-library/blocks/code/theme.css 124 B
build/block-library/blocks/columns/editor-rtl.css 108 B
build/block-library/blocks/columns/editor.css 108 B
build/block-library/blocks/columns/style-rtl.css 406 B
build/block-library/blocks/columns/style.css 406 B
build/block-library/blocks/comment-author-avatar/editor-rtl.css 125 B
build/block-library/blocks/comment-author-avatar/editor.css 125 B
build/block-library/blocks/comment-content/style-rtl.css 92 B
build/block-library/blocks/comment-content/style.css 92 B
build/block-library/blocks/comment-template/style-rtl.css 199 B
build/block-library/blocks/comment-template/style.css 198 B
build/block-library/blocks/comments-pagination-numbers/editor-rtl.css 123 B
build/block-library/blocks/comments-pagination-numbers/editor.css 121 B
build/block-library/blocks/comments-pagination/editor-rtl.css 222 B
build/block-library/blocks/comments-pagination/editor.css 209 B
build/block-library/blocks/comments-pagination/style-rtl.css 235 B
build/block-library/blocks/comments-pagination/style.css 231 B
build/block-library/blocks/comments-title/editor-rtl.css 75 B
build/block-library/blocks/comments-title/editor.css 75 B
build/block-library/blocks/comments/editor-rtl.css 840 B
build/block-library/blocks/comments/editor.css 839 B
build/block-library/blocks/comments/style-rtl.css 637 B
build/block-library/blocks/comments/style.css 636 B
build/block-library/blocks/cover/editor-rtl.css 612 B
build/block-library/blocks/cover/editor.css 613 B
build/block-library/blocks/cover/style-rtl.css 1.57 kB
build/block-library/blocks/cover/style.css 1.56 kB
build/block-library/blocks/embed/editor-rtl.css 293 B
build/block-library/blocks/embed/editor.css 293 B
build/block-library/blocks/embed/style-rtl.css 410 B
build/block-library/blocks/embed/style.css 410 B
build/block-library/blocks/embed/theme-rtl.css 138 B
build/block-library/blocks/embed/theme.css 138 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 253 B
build/block-library/blocks/file/style.css 254 B
build/block-library/blocks/file/view.min.js 353 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 984 B
build/block-library/blocks/gallery/editor.css 988 B
build/block-library/blocks/gallery/style-rtl.css 1.55 kB
build/block-library/blocks/gallery/style.css 1.55 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 654 B
build/block-library/blocks/group/editor.css 654 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 78 B
build/block-library/blocks/group/theme.css 78 B
build/block-library/blocks/heading/style-rtl.css 76 B
build/block-library/blocks/heading/style.css 76 B
build/block-library/blocks/html/editor-rtl.css 332 B
build/block-library/blocks/html/editor.css 333 B
build/block-library/blocks/image/editor-rtl.css 829 B
build/block-library/blocks/image/editor.css 828 B
build/block-library/blocks/image/style-rtl.css 627 B
build/block-library/blocks/image/style.css 630 B
build/block-library/blocks/image/theme-rtl.css 137 B
build/block-library/blocks/image/theme.css 137 B
build/block-library/blocks/latest-comments/style-rtl.css 298 B
build/block-library/blocks/latest-comments/style.css 298 B
build/block-library/blocks/latest-posts/editor-rtl.css 213 B
build/block-library/blocks/latest-posts/editor.css 212 B
build/block-library/blocks/latest-posts/style-rtl.css 478 B
build/block-library/blocks/latest-posts/style.css 478 B
build/block-library/blocks/list/style-rtl.css 88 B
build/block-library/blocks/list/style.css 88 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 507 B
build/block-library/blocks/media-text/style.css 505 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 716 B
build/block-library/blocks/navigation-link/editor.css 715 B
build/block-library/blocks/navigation-link/style-rtl.css 115 B
build/block-library/blocks/navigation-link/style.css 115 B
build/block-library/blocks/navigation-submenu/editor-rtl.css 299 B
build/block-library/blocks/navigation-submenu/editor.css 299 B
build/block-library/blocks/navigation/editor-rtl.css 2.13 kB
build/block-library/blocks/navigation/editor.css 2.14 kB
build/block-library/blocks/navigation/style-rtl.css 2.22 kB
build/block-library/blocks/navigation/style.css 2.2 kB
build/block-library/blocks/navigation/view-modal.min.js 2.81 kB
build/block-library/blocks/navigation/view.min.js 447 B
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 376 B
build/block-library/blocks/page-list/editor.css 376 B
build/block-library/blocks/page-list/style-rtl.css 175 B
build/block-library/blocks/page-list/style.css 175 B
build/block-library/blocks/paragraph/editor-rtl.css 174 B
build/block-library/blocks/paragraph/editor.css 174 B
build/block-library/blocks/paragraph/style-rtl.css 279 B
build/block-library/blocks/paragraph/style.css 281 B
build/block-library/blocks/post-author/style-rtl.css 175 B
build/block-library/blocks/post-author/style.css 176 B
build/block-library/blocks/post-comments-form/editor-rtl.css 96 B
build/block-library/blocks/post-comments-form/editor.css 96 B
build/block-library/blocks/post-comments-form/style-rtl.css 501 B
build/block-library/blocks/post-comments-form/style.css 501 B
build/block-library/blocks/post-date/style-rtl.css 61 B
build/block-library/blocks/post-date/style.css 61 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 586 B
build/block-library/blocks/post-featured-image/editor.css 584 B
build/block-library/blocks/post-featured-image/style-rtl.css 318 B
build/block-library/blocks/post-featured-image/style.css 318 B
build/block-library/blocks/post-navigation-link/style-rtl.css 153 B
build/block-library/blocks/post-navigation-link/style.css 153 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 282 B
build/block-library/blocks/post-template/style.css 282 B
build/block-library/blocks/post-terms/style-rtl.css 96 B
build/block-library/blocks/post-terms/style.css 96 B
build/block-library/blocks/post-title/style-rtl.css 100 B
build/block-library/blocks/post-title/style.css 100 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 135 B
build/block-library/blocks/pullquote/editor.css 135 B
build/block-library/blocks/pullquote/style-rtl.css 326 B
build/block-library/blocks/pullquote/style.css 325 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 221 B
build/block-library/blocks/query-pagination/editor.css 211 B
build/block-library/blocks/query-pagination/style-rtl.css 288 B
build/block-library/blocks/query-pagination/style.css 284 B
build/block-library/blocks/query-title/style-rtl.css 63 B
build/block-library/blocks/query-title/style.css 63 B
build/block-library/blocks/query/editor-rtl.css 440 B
build/block-library/blocks/query/editor.css 440 B
build/block-library/blocks/quote/style-rtl.css 213 B
build/block-library/blocks/quote/style.css 213 B
build/block-library/blocks/quote/theme-rtl.css 223 B
build/block-library/blocks/quote/theme.css 226 B
build/block-library/blocks/read-more/style-rtl.css 132 B
build/block-library/blocks/read-more/style.css 132 B
build/block-library/blocks/rss/editor-rtl.css 149 B
build/block-library/blocks/rss/editor.css 149 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 409 B
build/block-library/blocks/search/style.css 406 B
build/block-library/blocks/search/theme-rtl.css 114 B
build/block-library/blocks/search/theme.css 114 B
build/block-library/blocks/separator/editor-rtl.css 146 B
build/block-library/blocks/separator/editor.css 146 B
build/block-library/blocks/separator/style-rtl.css 234 B
build/block-library/blocks/separator/style.css 234 B
build/block-library/blocks/separator/theme-rtl.css 194 B
build/block-library/blocks/separator/theme.css 194 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 490 B
build/block-library/blocks/site-logo/editor.css 490 B
build/block-library/blocks/site-logo/style-rtl.css 203 B
build/block-library/blocks/site-logo/style.css 203 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 116 B
build/block-library/blocks/site-title/editor.css 116 B
build/block-library/blocks/site-title/style-rtl.css 57 B
build/block-library/blocks/site-title/style.css 57 B
build/block-library/blocks/social-link/editor-rtl.css 184 B
build/block-library/blocks/social-link/editor.css 184 B
build/block-library/blocks/social-links/editor-rtl.css 674 B
build/block-library/blocks/social-links/editor.css 673 B
build/block-library/blocks/social-links/style-rtl.css 1.4 kB
build/block-library/blocks/social-links/style.css 1.39 kB
build/block-library/blocks/spacer/editor-rtl.css 332 B
build/block-library/blocks/spacer/editor.css 332 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 433 B
build/block-library/blocks/table/editor.css 433 B
build/block-library/blocks/table/style-rtl.css 651 B
build/block-library/blocks/table/style.css 650 B
build/block-library/blocks/table/theme-rtl.css 157 B
build/block-library/blocks/table/theme.css 157 B
build/block-library/blocks/tag-cloud/style-rtl.css 251 B
build/block-library/blocks/tag-cloud/style.css 253 B
build/block-library/blocks/template-part/editor-rtl.css 404 B
build/block-library/blocks/template-part/editor.css 404 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/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 99 B
build/block-library/blocks/verse/style.css 99 B
build/block-library/blocks/video/editor-rtl.css 691 B
build/block-library/blocks/video/editor.css 694 B
build/block-library/blocks/video/style-rtl.css 179 B
build/block-library/blocks/video/style.css 179 B
build/block-library/blocks/video/theme-rtl.css 139 B
build/block-library/blocks/video/theme.css 139 B
build/block-library/classic-rtl.css 162 B
build/block-library/classic.css 162 B
build/block-library/common-rtl.css 1.05 kB
build/block-library/common.css 1.05 kB
build/block-library/editor-elements-rtl.css 75 B
build/block-library/editor-elements.css 75 B
build/block-library/editor-rtl.css 11.7 kB
build/block-library/editor.css 11.6 kB
build/block-library/elements-rtl.css 54 B
build/block-library/elements.css 54 B
build/block-library/index.min.js 199 kB
build/block-library/reset-rtl.css 478 B
build/block-library/reset.css 478 B
build/block-library/style-rtl.css 12.4 kB
build/block-library/style.css 12.4 kB
build/block-library/theme-rtl.css 698 B
build/block-library/theme.css 703 B
build/block-serialization-default-parser/index.min.js 1.13 kB
build/block-serialization-spec-parser/index.min.js 2.83 kB
build/blocks/index.min.js 50.4 kB
build/components/index.min.js 203 kB
build/components/style-rtl.css 11.6 kB
build/components/style.css 11.7 kB
build/compose/index.min.js 12.3 kB
build/core-data/index.min.js 15.9 kB
build/customize-widgets/index.min.js 11.7 kB
build/customize-widgets/style-rtl.css 1.41 kB
build/customize-widgets/style.css 1.41 kB
build/data-controls/index.min.js 663 B
build/data/index.min.js 7.95 kB
build/date/index.min.js 32.1 kB
build/deprecated/index.min.js 518 B
build/dom-ready/index.min.js 336 B
build/dom/index.min.js 4.71 kB
build/edit-navigation/index.min.js 16.2 kB
build/edit-navigation/style-rtl.css 4.14 kB
build/edit-navigation/style.css 4.15 kB
build/edit-post/classic-rtl.css 571 B
build/edit-post/classic.css 571 B
build/edit-post/index.min.js 34.4 kB
build/edit-post/style-rtl.css 7.46 kB
build/edit-post/style.css 7.45 kB
build/edit-site/style-rtl.css 9.38 kB
build/edit-site/style.css 9.38 kB
build/edit-widgets/index.min.js 16.8 kB
build/edit-widgets/style-rtl.css 4.49 kB
build/edit-widgets/style.css 4.49 kB
build/editor/index.min.js 44.1 kB
build/editor/style-rtl.css 3.68 kB
build/editor/style.css 3.67 kB
build/element/index.min.js 4.93 kB
build/escape-html/index.min.js 548 B
build/experiments/index.min.js 870 B
build/format-library/index.min.js 7.2 kB
build/format-library/style-rtl.css 598 B
build/format-library/style.css 597 B
build/hooks/index.min.js 1.66 kB
build/html-entities/index.min.js 454 B
build/i18n/index.min.js 3.79 kB
build/is-shallow-equal/index.min.js 535 B
build/keyboard-shortcuts/index.min.js 1.79 kB
build/keycodes/index.min.js 1.88 kB
build/list-reusable-blocks/index.min.js 2.14 kB
build/list-reusable-blocks/style-rtl.css 865 B
build/list-reusable-blocks/style.css 865 B
build/media-utils/index.min.js 2.99 kB
build/notices/index.min.js 977 B
build/plugins/index.min.js 1.95 kB
build/preferences-persistence/index.min.js 2.23 kB
build/preferences/index.min.js 1.35 kB
build/primitives/index.min.js 960 B
build/priority-queue/index.min.js 1.59 kB
build/react-i18n/index.min.js 702 B
build/react-refresh-entry/index.min.js 8.44 kB
build/react-refresh-runtime/index.min.js 7.31 kB
build/redux-routine/index.min.js 2.75 kB
build/reusable-blocks/index.min.js 2.27 kB
build/reusable-blocks/style-rtl.css 265 B
build/reusable-blocks/style.css 265 B
build/rich-text/index.min.js 10.8 kB
build/server-side-render/index.min.js 2.09 kB
build/shortcode/index.min.js 1.52 kB
build/style-engine/index.min.js 1.53 kB
build/token-list/index.min.js 650 B
build/url/index.min.js 3.69 kB
build/vendors/inert-polyfill.min.js 2.48 kB
build/vendors/react-dom.min.js 41.8 kB
build/vendors/react.min.js 4.02 kB
build/viewport/index.min.js 1.09 kB
build/warning/index.min.js 280 B
build/widgets/index.min.js 7.31 kB
build/widgets/style-rtl.css 1.18 kB
build/widgets/style.css 1.18 kB
build/wordcount/index.min.js 1.06 kB

compressed-size-action

@glendaviesnz
Copy link
Contributor

🎉 This is looking good! I like the simple approach arrived at of not needing the :self style wrapper selector and the & nesting. Do you think we should add some help text above the input box about the use of & for pseudo and nested selectors?

@carolinan
Copy link
Contributor Author

I would like that, but how can we describe that so that users of all varied experiences can understand it?

@carolinan
Copy link
Contributor Author

The changes need to be moved from lib/compat/wordpress-6.2/class-wp-theme-json-6-2.php to class-wp-theme-json-gutenberg.php, but I am away for the holiday starting about now and I welcome anyone to pick it up.

@annezazu annezazu mentioned this pull request Dec 19, 2022
57 tasks
@glendaviesnz
Copy link
Contributor

Just adding a note that this will also be impacted by this issue - so will need to account for a user's unfiltered HTML capability somehow.

@aristath aristath force-pushed the try/per-block-custom-css branch from 8666b2d to 16a7720 Compare December 20, 2022 08:16
@aristath
Copy link
Member

The changes need to be moved from lib/compat/wordpress-6.2/class-wp-theme-json-6-2.php to class-wp-theme-json-gutenberg.php, but I am away for the holiday starting about now and I welcome anyone to pick it up.

Rebased the PR on trunk. Moved the code to class-wp-theme-json-gutenberg.php and tested the implementation, everything is still working as expected 👍

@Mamaduka
Copy link
Member

We can reuse logic from #46815 for the unfiltered HTML capability check.

@carolinan
Copy link
Contributor Author

The permission check should be added to context-menu.js, but the new action needs to be merged first.

carolinan and others added 2 commits January 17, 2023 06:35
Check for permission to edit CSS before displaying the panel.
Fix duplication after merge conflict.
@github-actions
Copy link

github-actions bot commented Jan 17, 2023

Flaky tests detected in d218090.
Some tests passed with failed attempts. The failures may not be related to this commit but are still reported for visibility. See the documentation for more information.

🔍 Workflow run URL: https://github.com/WordPress/gutenberg/actions/runs/3956175372
📝 Reported issues:

@Mamaduka
Copy link
Member

@carolinan, @aristath, do you have time to work on core backports for changes in the WP_Theme_JSON file? If you don't, just let me know, and happy to do it myself.

aristath added a commit to aristath/wordpress-develop that referenced this pull request Jan 27, 2023
aristath added a commit to aristath/wordpress-develop that referenced this pull request Jan 27, 2023
@juanmaguitar juanmaguitar added [Type] Enhancement A suggestion for improvement. [Feature] Site Editor Related to the overarching Site Editor (formerly "full site editing") labels Feb 1, 2023
aristath added a commit to aristath/wordpress-develop that referenced this pull request Feb 1, 2023
aristath added a commit to aristath/wordpress-develop that referenced this pull request Feb 2, 2023
aristath added a commit to aristath/wordpress-develop that referenced this pull request Feb 3, 2023
aristath added a commit to aristath/wordpress-develop that referenced this pull request Feb 3, 2023
@aristath
Copy link
Member

aristath commented Feb 3, 2023

Backporting to Core PR: WordPress/wordpress-develop#3977 for ticket https://core.trac.wordpress.org/ticket/57621

@carolinan
Copy link
Contributor Author

carolinan commented Feb 17, 2023

Dev note

When a theme that has support for the Site Editor is activated, users do not have easy access to adding additional CSS via the Customizer.
In WordPress 6.2, there are two new ways to add per-block custom CSS: Via the Styles interface in the Site Editor and theme.json.

To add CSS via the interface, open the Styles sidebar in the Site Editor.
Next, open the blocks panel and select a block. Click on Additional block CSS to open the block CSS panel.

per-block-custom-css.mov

CSS added in this panel applies to all occurrences of the block.
In this panel, you can also see if the active theme adds CSS using theme.json:
The per-block custom CSS panel displays the CSS added in theme.json.

You can add per-block custom CSS in theme.json as a string in styles.blocks.block.css.
Basic example:

"styles": {
	"blocks": {
		"core/button": {
			"css": "background: purple"
		}
	}
}

In addition, the use of & is supported for nested elements & pseudo-selectors, both in the theme.json file and the custom CSS input in global styles.

"styles": {
	"blocks": {
		"core/group": {
			"css": "background:var(--wp--preset--color--base); & .cta { background:#fafafa; padding:var(--wp--preset--spacing--40); } & .wp-element-button { background-color:purple; color: white; } & .wp-element-button:hover { opacity: 0.9; }"
		}
	}
}

Reviewed by @aristath

@mrleemon
Copy link
Contributor

mrleemon commented Jul 14, 2023

@carolinan Does styling via theme.json work for non-core custom blocks? I'm trying the css prop on a custom block in my custom theme and the styles only appear in the block editor, not the frontend.

@carolinan
Copy link
Contributor Author

Hi,
If you believe it is a bug please open a new issue with the full details. For example, is it a classic theme or block theme, is it a dynamic block, does the other theme.json styles work, and so on.
First, test with a different theme and block.

@mrleemon
Copy link
Contributor

mrleemon commented Jul 14, 2023

@carolinan I opened a bug report: #52644
It's happening with core blocks, too.
And block themes are not affected, just classic ones.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Feature] Site Editor Related to the overarching Site Editor (formerly "full site editing") has dev note when dev note is done (for upcoming WordPress release) Needs User Documentation Needs new user documentation [Type] Enhancement A suggestion for improvement.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Global styles – per-block custom css
8 participants