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

Color Block Support: Switch to ToolsPanel for displaying UI #34027

Merged
merged 2 commits into from Feb 8, 2022

Conversation

aaronrobertshaw
Copy link
Contributor

@aaronrobertshaw aaronrobertshaw commented Aug 12, 2021

Depends on:

Related:

Description

This updates the UI for controlling colors provided by block supports to use the ToolsPanel component.

  • With the adoption of ToolsPanel for other block supports, this aims to improve consistency between the block support panels.
  • Introduces a new ToolsPanelColorDropdown component.
    • Prior to this switch of panel, color controls are rendered within an ItemGroup.
    • For us to allow ad hoc color controls to be injected into this panel by blocks, we cannot use the ItemGroup.
    • Controls are injected via slot fills and to maintain their visual order when not toggled on for display, hidden placeholder elements must be rendered which prevents appropriate ItemGroup styling.
    • In addition, if the panel itself were made an ItemGroup we could end up with non-color controls as children of the ItemGroup breaking its semantics (e.g. Contrast Checkers, help text, or anything else a 3rd party dev wishes to render into the slot)
    • Instead, this PR simply replicates the styling of the ItemGroup and leverages CSS ordering to force contrast checkers to the bottom of the panel.
  • The Global Styles sidebar uses different navigation and display of color options so this PR only updates the panel used in the inspector controls sidebar of the block editor.

Note: Which color controls display by default (even without any value) for any given block will be assessed and updated via a separate PR. This only focuses on switching the panel component the controls are within.

How has this been tested?

Manually.

Test Instructions

  1. Create a new post, add a group block, and select it
  2. In the inspector controls sidebar you should see the colors block support panel using the ToolsPanel. It will have a + icon for the "more" menu
  3. Explore toggling color controls and updating their values, making sure they still function appropriately
  4. Try saving color values, reloading the editor, and ensuring that selected colors expose those controls by default

Screenshots

Screen.Recording.2021-12-21.at.6.44.31.pm.mp4

Types of changes

Enhancement

Checklist:

  • My code is tested.
  • My code follows the WordPress code style.
  • My code follows the accessibility standards.
  • I've tested my changes with keyboard and screen readers.
  • My code has proper inline documentation.
  • I've included developer documentation if appropriate.
  • I've updated all React Native files affected by any refactorings/renamings in this PR (please manually search all *.native.js files for terms that need renaming or removal).

@aaronrobertshaw aaronrobertshaw added [Type] Enhancement A suggestion for improvement. [Feature] Design Tools Tools that impact the appearance of blocks both to expand the number of tools and improve the experi labels Aug 12, 2021
@aaronrobertshaw aaronrobertshaw self-assigned this Aug 12, 2021
@github-actions
Copy link

github-actions bot commented Aug 12, 2021

Size Change: +1.15 kB (0%)

Total Size: 1.14 MB

Filename Size Change
build/block-editor/index.min.js 142 kB +688 B (0%)
build/block-editor/style-rtl.css 14.8 kB +230 B (+2%)
build/block-editor/style.css 14.8 kB +231 B (+2%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 960 B
build/admin-manifest/index.min.js 1.1 kB
build/annotations/index.min.js 2.75 kB
build/api-fetch/index.min.js 2.22 kB
build/autop/index.min.js 2.12 kB
build/blob/index.min.js 459 B
build/block-directory/index.min.js 6.28 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-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 150 B
build/block-library/blocks/audio/editor.css 150 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 470 B
build/block-library/blocks/button/editor.css 470 B
build/block-library/blocks/button/style-rtl.css 560 B
build/block-library/blocks/button/style.css 560 B
build/block-library/blocks/buttons/editor-rtl.css 292 B
build/block-library/blocks/buttons/editor.css 292 B
build/block-library/blocks/buttons/style-rtl.css 275 B
build/block-library/blocks/buttons/style.css 275 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 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-template/style-rtl.css 127 B
build/block-library/blocks/comment-template/style.css 127 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-query-loop/editor-rtl.css 95 B
build/block-library/blocks/comments-query-loop/editor.css 95 B
build/block-library/blocks/cover/editor-rtl.css 546 B
build/block-library/blocks/cover/editor.css 547 B
build/block-library/blocks/cover/style-rtl.css 1.4 kB
build/block-library/blocks/cover/style.css 1.4 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 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 965 B
build/block-library/blocks/gallery/editor.css 967 B
build/block-library/blocks/gallery/style-rtl.css 1.61 kB
build/block-library/blocks/gallery/style.css 1.61 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 78 B
build/block-library/blocks/group/theme.css 78 B
build/block-library/blocks/heading/style-rtl.css 114 B
build/block-library/blocks/heading/style.css 114 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 810 B
build/block-library/blocks/image/editor.css 809 B
build/block-library/blocks/image/style-rtl.css 500 B
build/block-library/blocks/image/style.css 503 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 199 B
build/block-library/blocks/latest-posts/editor.css 198 B
build/block-library/blocks/latest-posts/style-rtl.css 447 B
build/block-library/blocks/latest-posts/style.css 446 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 493 B
build/block-library/blocks/media-text/style.css 490 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 649 B
build/block-library/blocks/navigation-link/editor.css 650 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-submenu/editor-rtl.css 299 B
build/block-library/blocks/navigation-submenu/editor.css 299 B
build/block-library/blocks/navigation-submenu/view.min.js 343 B
build/block-library/blocks/navigation/editor-rtl.css 1.98 kB
build/block-library/blocks/navigation/editor.css 1.99 kB
build/block-library/blocks/navigation/style-rtl.css 1.85 kB
build/block-library/blocks/navigation/style.css 1.84 kB
build/block-library/blocks/navigation/view.min.js 2.81 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 401 B
build/block-library/blocks/page-list/editor.css 402 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 157 B
build/block-library/blocks/paragraph/editor.css 157 B
build/block-library/blocks/paragraph/style-rtl.css 273 B
build/block-library/blocks/paragraph/style.css 273 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/style-rtl.css 446 B
build/block-library/blocks/post-comments-form/style.css 446 B
build/block-library/blocks/post-comments/style-rtl.css 521 B
build/block-library/blocks/post-comments/style.css 521 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 721 B
build/block-library/blocks/post-featured-image/editor.css 721 B
build/block-library/blocks/post-featured-image/style-rtl.css 153 B
build/block-library/blocks/post-featured-image/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 323 B
build/block-library/blocks/post-template/style.css 323 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 80 B
build/block-library/blocks/post-title/style.css 80 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 389 B
build/block-library/blocks/pullquote/style.css 388 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 234 B
build/block-library/blocks/query-pagination/style.css 231 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 201 B
build/block-library/blocks/quote/style.css 201 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 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 397 B
build/block-library/blocks/search/style.css 398 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 245 B
build/block-library/blocks/separator/style.css 245 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 744 B
build/block-library/blocks/site-logo/editor.css 744 B
build/block-library/blocks/site-logo/style-rtl.css 181 B
build/block-library/blocks/site-logo/style.css 181 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 177 B
build/block-library/blocks/social-link/editor.css 177 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.37 kB
build/block-library/blocks/social-links/style.css 1.36 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 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 214 B
build/block-library/blocks/tag-cloud/style.css 215 B
build/block-library/blocks/template-part/editor-rtl.css 560 B
build/block-library/blocks/template-part/editor.css 559 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 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 921 B
build/block-library/common.css 919 B
build/block-library/editor-rtl.css 10.1 kB
build/block-library/editor.css 10.1 kB
build/block-library/index.min.js 167 kB
build/block-library/reset-rtl.css 474 B
build/block-library/reset.css 474 B
build/block-library/style-rtl.css 11.1 kB
build/block-library/style.css 11.1 kB
build/block-library/theme-rtl.css 672 B
build/block-library/theme.css 676 B
build/block-serialization-default-parser/index.min.js 1.09 kB
build/block-serialization-spec-parser/index.min.js 2.79 kB
build/blocks/index.min.js 46.4 kB
build/components/index.min.js 215 kB
build/components/style-rtl.css 15.5 kB
build/components/style.css 15.5 kB
build/compose/index.min.js 11.2 kB
build/core-data/index.min.js 13.4 kB
build/customize-widgets/index.min.js 11.4 kB
build/customize-widgets/style-rtl.css 1.5 kB
build/customize-widgets/style.css 1.49 kB
build/data-controls/index.min.js 631 B
build/data/index.min.js 7.44 kB
build/date/index.min.js 31.9 kB
build/deprecated/index.min.js 485 B
build/dom-ready/index.min.js 304 B
build/dom/index.min.js 4.5 kB
build/edit-navigation/index.min.js 16.2 kB
build/edit-navigation/style-rtl.css 3.76 kB
build/edit-navigation/style.css 3.76 kB
build/edit-post/classic-rtl.css 546 B
build/edit-post/classic.css 547 B
build/edit-post/index.min.js 29.7 kB
build/edit-post/style-rtl.css 7.15 kB
build/edit-post/style.css 7.14 kB
build/edit-site/index.min.js 41.6 kB
build/edit-site/style-rtl.css 7.22 kB
build/edit-site/style.css 7.21 kB
build/edit-widgets/index.min.js 16.7 kB
build/edit-widgets/style-rtl.css 4.17 kB
build/edit-widgets/style.css 4.17 kB
build/editor/index.min.js 38.5 kB
build/editor/style-rtl.css 3.71 kB
build/editor/style.css 3.71 kB
build/element/index.min.js 3.29 kB
build/escape-html/index.min.js 517 B
build/format-library/index.min.js 6.58 kB
build/format-library/style-rtl.css 571 B
build/format-library/style.css 571 B
build/hooks/index.min.js 1.63 kB
build/html-entities/index.min.js 424 B
build/i18n/index.min.js 3.75 kB
build/is-shallow-equal/index.min.js 501 B
build/keyboard-shortcuts/index.min.js 1.8 kB
build/keycodes/index.min.js 1.39 kB
build/list-reusable-blocks/index.min.js 1.72 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.92 kB
build/notices/index.min.js 925 B
build/nux/index.min.js 2.09 kB
build/nux/style-rtl.css 747 B
build/nux/style.css 743 B
build/plugins/index.min.js 1.95 kB
build/primitives/index.min.js 917 B
build/priority-queue/index.min.js 582 B
build/react-i18n/index.min.js 671 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.65 kB
build/reusable-blocks/index.min.js 2.22 kB
build/reusable-blocks/style-rtl.css 256 B
build/reusable-blocks/style.css 256 B
build/rich-text/index.min.js 11 kB
build/server-side-render/index.min.js 1.58 kB
build/shortcode/index.min.js 1.49 kB
build/token-list/index.min.js 639 B
build/url/index.min.js 1.9 kB
build/viewport/index.min.js 1.05 kB
build/warning/index.min.js 248 B
build/widgets/index.min.js 7.15 kB
build/widgets/style-rtl.css 1.16 kB
build/widgets/style.css 1.16 kB
build/wordcount/index.min.js 1.04 kB

compressed-size-action

@aaronrobertshaw aaronrobertshaw added [Feature] Block API API that allows to express the block paradigm. Global Styles Anything related to the broader Global Styles efforts, including Styles Engine and theme.json labels Aug 12, 2021
@jasmussen
Copy link
Contributor

Thanks for all the tools menu efforts 👌

This is what I see:

color

So, ultimately I do think we need to make the color panel into a ToolsPanel, notably when we get a slew of color values such as link, link hover, link focus, and others which are important for global styles but should very rarely be customized on, for example, a single Paragraph block.

However specifically for the Paragraph block (and every other block with a color panel I can think of, including Button and Group), I would expect at least text and background color options to be shown by default.

The problem with color swatches being duplicated and taking up a lot of space still needs a solution such as this one from #27331:

— that, but updated to the design in #27473 (comment).

It seems okay in the mean time to convert to the ToolsPanel, but still showing at least text and background by default. Happy to note that all supported colors are already shown in Global Styles, as they should be 👌

Question: do you have a list of blocks that are affected by this PR? And can we customize the defaults per-block type yet?

@apeatling
Copy link
Contributor

We are holding off on this conversion until we have better color controls in place as talked about in #27331

129268741-bfa7b547-223e-49a7-9388-f4f35bafa2ce

@aaronrobertshaw
Copy link
Contributor Author

This PR has been rebased and updated with respect to the latest changes to the ToolsPanel. It also includes a new color group for the InspectorControls slots to inject controls into this panel.

Hopefully, when the new color controls are ready there is minimal extra work required to finish this switch off.

@aaronrobertshaw aaronrobertshaw changed the base branch from trunk to add/virtual-bubbling-for-block-support-slots September 16, 2021 05:32
@aaronrobertshaw aaronrobertshaw force-pushed the add/virtual-bubbling-for-block-support-slots branch 2 times, most recently from 7bc3639 to 84ba3b8 Compare September 24, 2021 04:52
@ciampo ciampo self-requested a review October 7, 2021 09:59
Base automatically changed from add/virtual-bubbling-for-block-support-slots to trunk October 8, 2021 04:36
@aaronrobertshaw aaronrobertshaw force-pushed the update/color-support-to-use-tools-panel branch from 3b1875d to 23b288b Compare October 21, 2021 07:50
@aaronrobertshaw aaronrobertshaw force-pushed the update/color-support-to-use-tools-panel branch from 23b288b to 34f273f Compare October 29, 2021 04:28
Copy link
Contributor

@ciampo ciampo left a comment

Choose a reason for hiding this comment

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

Hey @aaronrobertshaw , is this PR in need of a review? I can give it a deeper look after the required rebase, in case you need !

packages/block-editor/src/hooks/color.scss Show resolved Hide resolved
@aaronrobertshaw
Copy link
Contributor Author

After discussions on the PR adding first and last visible item classes within a ToolsPanel, it was raised that with the current method of adding color controls to the grouped inspector controls panel, we could have non-Item elements added and the panel's slot wrapper can't then be an ItemGroup.

The simplest option was to remove the use of ItemGroup for the color panel but still style the color options in the same manner.

If it is still desired that all color options appear within an ItemGroup with the corresponding role attributes, we might need to look at creating additional nested slots. Those are in turn rendered into the current color panel slot. This would make the color panel different from all the other grouped inspector control slots and we'd probably need to enforce only the new slots were rendered within the current one. I think this could be done as a separate follow up if desired.

@ciampo
Copy link
Contributor

ciampo commented Jan 20, 2022

The simplest option was to remove the use of ItemGroup for the color panel but still style the color options in the same manner.

Yep, this is the direction to follow (at least for now). We may just want to have @jasmussen to check the border styles (e.g. border color, radius..) to make sure it fits our design guidelines.

we might need to look at creating additional nested slots. Those are in turn rendered into the current color panel slot. This would make the color panel different from all the other grouped inspector control slots and we'd probably need to enforce only the new slots were rendered within the current one. I think this could be done as a separate follow up if desired.

In case that was related to using ItemGroup, it can be dropped for now (as we are not going to use ItemGroup, at least in the short term)

@aaronrobertshaw aaronrobertshaw force-pushed the add/tools-panel-items-first-and-last-classes branch from 966c29b to 5fe3da5 Compare January 21, 2022 04:44
@aaronrobertshaw
Copy link
Contributor Author

In case that was related to using ItemGroup, it can be dropped for now (as we are not going to use ItemGroup, at least in the short term)

Yes, I meant this possible course of action as an option only if we decided to enforce use of ItemGroup around just the color options. I think if that is decided it makes sense as a separate follow up.

I'll aim to merge the PR adding the necessary first/last visible item classes to the ToolsPanel today and rebase this to absorb those changes. At that point, I think we'll be ready to pull the trigger on landing this pending final approval.

Base automatically changed from add/tools-panel-items-first-and-last-classes to trunk January 21, 2022 05:30
@aaronrobertshaw aaronrobertshaw force-pushed the update/color-support-to-use-tools-panel branch from 0c2ca1d to 7dfe709 Compare January 21, 2022 07:10
@aaronrobertshaw aaronrobertshaw force-pushed the update/color-support-to-use-tools-panel branch from 7dfe709 to 30108e0 Compare February 4, 2022 04:55
@aaronrobertshaw aaronrobertshaw force-pushed the update/color-support-to-use-tools-panel branch from 92f53cd to e5da492 Compare February 4, 2022 08:09
@aaronrobertshaw aaronrobertshaw force-pushed the update/color-support-to-use-tools-panel branch from e5da492 to dae9fab Compare February 7, 2022 23:47
@ramonjd
Copy link
Member

ramonjd commented Feb 8, 2022

This is testing well for me

✅ In the inspector controls sidebar you should see the colors block support panel using the ToolsPanel. It will have a + icon for the "more" menu
✅ Explore toggling color controls and updating their values, making sure they still function appropriately
✅ Try saving color values, reloading the editor, and ensuring that selected colors expose those controls by default

I did notice that, on the frontend, a container's link color overrides the link color of its inner blocks, but it's happening on trunk as well. Just noting here. I'll create an issue later if none exists.

Screen Shot 2022-02-08 at 1 48 13 pm

Screen Shot 2022-02-08 at 1 49 04 pm

Copy link
Member

@ramonjd ramonjd left a comment

Choose a reason for hiding this comment

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

Nice work! Works as advertised for me. 🙇

@aaronrobertshaw
Copy link
Contributor Author

I did notice that, on the frontend, a container's link color overrides the link color of its inner blocks, but it's happening on trunk as well. Just noting here. I'll create an issue later if none exists.

Nice catch. I agree we should tackle that one separately as I don't believe it is directly related to this PR as you noted.

@aaronrobertshaw aaronrobertshaw merged commit 8675f86 into trunk Feb 8, 2022
@aaronrobertshaw aaronrobertshaw deleted the update/color-support-to-use-tools-panel branch February 8, 2022 04:55
@github-actions github-actions bot added this to the Gutenberg 12.6 milestone Feb 8, 2022
@Mamaduka
Copy link
Member

Mamaduka commented Feb 8, 2022

Great work! 🦸

>
<Dropdown
className="block-editor-tools-panel-color-dropdown"
contentClassName="block-editor-panel-color-gradient-settings__dropdown-content"
Copy link
Contributor

Choose a reason for hiding this comment

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

This is reusing a classname from another component potentially creating style conflicts.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Agreed. To maintain the visual consistency, are you okay with us duplicating all these styles?

onClick={ onToggle }
aria-expanded={ isOpen }
className={ classnames(
'block-editor-panel-color-gradient-settings__dropdown',
Copy link
Contributor

Choose a reason for hiding this comment

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

This is reusing a classname from another component potentially creating style conflicts.

<InspectorControls.Slot
__experimentalGroup="color"
label={ __( 'Color' ) }
className="color-block-support-panel__inner-wrapper"
Copy link
Contributor

Choose a reason for hiding this comment

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

This class doesn't seem to follow our naming guidelines. We should start with the package name followed by the component name and a modified, so something like block-editor-block-inspector__color-slot

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 can create a PR to tidy this up.

* must at least render a placeholder which would otherwise interfere
* with the `:last-child` styles.
*/
.block-editor-tools-panel-color-gradient-settings__item {
Copy link
Contributor

Choose a reason for hiding this comment

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

Should we move these styles to the component style itself (style.scss of the same folder of the component). Or are these styles specific to this particular usage of this component. If I'm not wrong this component is specific to hooks anyway.

Copy link
Contributor

Choose a reason for hiding this comment

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

(Similar question for the remaining styles here)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Currently, the component is only used in the color block supports hook but could be used to add a color control to any ToolsPanel. I can move these styles to live in the color-gradients/style.scss if that is better.

@@ -0,0 +1,85 @@
.color-block-support-panel {
Copy link
Contributor

Choose a reason for hiding this comment

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

Where does this style come from, it doesn't seem to follow our style guidelines.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

The classname comes from the BlockSupportsToolsPanel which wraps the grouped inspector controls slots for block supports in a ToolsPanel.

I can update the format of this class and the corresponding styles for the different block supports dimensions, border, typography etc.

@aaronrobertshaw
Copy link
Contributor Author

Thanks for raising these issues and concerns @youknowriad.

Are you ok with ToolsPanelColorDropdown and ColorGradientSettingsDropdown remaining separate components given their different usage and requirements? If so, I'll create a PR avoiding re-using the same classes and styles but keeping them visually the same.

I'll also create another PR updating the class name for the block support panels, the corresponding styles, and e2e tests.

Is there anything else you would like to see fixed up in this area?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Feature] Block API API that allows to express the block paradigm. [Feature] Design Tools Tools that impact the appearance of blocks both to expand the number of tools and improve the experi Global Styles Anything related to the broader Global Styles efforts, including Styles Engine and theme.json [Type] Enhancement A suggestion for improvement.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

7 participants