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

Duotone: add block controls on the inspector #49838

Merged
merged 10 commits into from
Apr 20, 2023

Conversation

MaggieCabrera
Copy link
Contributor

@MaggieCabrera MaggieCabrera commented Apr 14, 2023

What?

This PR aims to show the new StylesFiltersPanel in the inspector.

A follow up to this PR will simplify the contents of the toolbar controls and separate the duotone filters in the inspector by origin like the mockups in #39452.

To do:

  • By enabling custom colors via checking on the settings, now custom colors show on the GS panel, and that doesn't work at all (needs a separate PR to fix that, it never worked). Should we remove custom colors completely from this PR and tackle the GS issue first then? That means we can't remove the custom filters from the toolbar until we have it working on the inspector either.

Part of #39452

Why?

Right now the toolbar is the only place to edit the duotone filters on a block level. This PR brings the UI in line with other controls and paves the way for future simplification of the toolbar options.

How?

By leveraging the new panel StylesFiltersPanel and displaying it using a dropdown. This alters how the panel looks on Global Styles right now too

Testing Instructions

I'm using Skatepark because it applies duotone on all images, but testing on block theme that doesn't is also appropriate.

Check the new panel in the inspector while editing an image and that you can apply the filters in the same way as you would from the toolbar.

Test the same but on global styles, applied to all images on the site.

Screenshots or screencast

Screenshot 2023-04-14 at 18 00 21

/>
</InspectorControls>
<BlockControls group="block" __experimentalShareWithChildBlocks>
<DuotoneControl
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@youknowriad we tried to use the StylesFiltersPanel here too but it doesn't work outside of the inspector context, so we decided to leave it as it is right now.

Copy link
Contributor

Choose a reason for hiding this comment

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

yes, this is a new use case (block toolbar). Maybe there's a way to make these controllers agnostic here too by providing a specific Wrapper prop, did we try that?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

yes, we did that, and the ToolsPanelItem would not render, isShown is false in that context

Copy link
Contributor Author

Choose a reason for hiding this comment

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

/cc @ajlende

Copy link
Contributor

Choose a reason for hiding this comment

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

I guess it's because of a missing ToolsPanel container within the "wrapper", that component seems mandatory. We can probably include it in the block toolbar too though

@MaggieCabrera MaggieCabrera self-assigned this Apr 14, 2023
@MaggieCabrera MaggieCabrera added the [Feature] Design Tools Tools that impact the appearance of blocks both to expand the number of tools and improve the experi label Apr 14, 2023
@github-actions
Copy link

github-actions bot commented Apr 14, 2023

Size Change: +2.15 kB (0%)

Total Size: 1.37 MB

Filename Size Change
build/block-editor/content-rtl.css 4.17 kB +66 B (+2%)
build/block-editor/content.css 4.17 kB +66 B (+2%)
build/block-editor/index.min.js 203 kB +822 B (0%)
build/block-editor/style-rtl.css 15.1 kB +539 B (+4%)
build/block-editor/style.css 15.1 kB +530 B (+4%)
build/block-library/blocks/html/editor-rtl.css 340 B +8 B (+2%)
build/block-library/blocks/html/editor.css 341 B +8 B (+2%)
build/block-library/editor-rtl.css 11.6 kB -6 B (0%)
build/block-library/editor.css 11.6 kB -1 B (0%)
build/block-library/index.min.js 204 kB +164 B (0%)
build/commands/index.min.js 14.8 kB +64 B (0%)
build/commands/style-rtl.css 789 B -309 B (-28%) 🎉
build/commands/style.css 786 B -306 B (-28%) 🎉
build/components/index.min.js 208 kB +82 B (0%)
build/components/style-rtl.css 11.7 kB +7 B (0%)
build/components/style.css 11.7 kB +7 B (0%)
build/dom/index.min.js 4.76 kB +41 B (+1%)
build/edit-post/style-rtl.css 7.63 kB +43 B (+1%)
build/edit-post/style.css 7.63 kB +43 B (+1%)
build/edit-site/index.min.js 64.6 kB +262 B (0%)
build/edit-site/style-rtl.css 10.1 kB +13 B (0%)
build/edit-site/style.css 10.1 kB +12 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.2 kB
build/block-directory/style-rtl.css 1.04 kB
build/block-directory/style.css 1.04 kB
build/block-editor/default-editor-styles-rtl.css 403 B
build/block-editor/default-editor-styles.css 403 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 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 91 B
build/block-library/blocks/avatar/style.css 91 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 587 B
build/block-library/blocks/button/editor.css 587 B
build/block-library/blocks/button/style-rtl.css 628 B
build/block-library/blocks/button/style.css 627 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 113 B
build/block-library/blocks/categories/editor.css 112 B
build/block-library/blocks/categories/style-rtl.css 124 B
build/block-library/blocks/categories/style.css 124 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 409 B
build/block-library/blocks/columns/style.css 409 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 649 B
build/block-library/blocks/cover/editor.css 651 B
build/block-library/blocks/cover/style-rtl.css 1.61 kB
build/block-library/blocks/cover/style.css 1.6 kB
build/block-library/blocks/details-summary/editor-rtl.css 65 B
build/block-library/blocks/details-summary/editor.css 65 B
build/block-library/blocks/details-summary/style-rtl.css 61 B
build/block-library/blocks/details-summary/style.css 61 B
build/block-library/blocks/details/style-rtl.css 54 B
build/block-library/blocks/details/style.css 54 B
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 269 B
build/block-library/blocks/file/style.css 270 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/image/editor-rtl.css 830 B
build/block-library/blocks/image/editor.css 829 B
build/block-library/blocks/image/style-rtl.css 652 B
build/block-library/blocks/image/style.css 652 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 357 B
build/block-library/blocks/latest-comments/style.css 357 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.21 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 401 B
build/block-library/blocks/page-list/editor.css 401 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 71 B
build/block-library/blocks/post-excerpt/editor.css 71 B
build/block-library/blocks/post-excerpt/style-rtl.css 141 B
build/block-library/blocks/post-excerpt/style.css 141 B
build/block-library/blocks/post-featured-image/editor-rtl.css 588 B
build/block-library/blocks/post-featured-image/editor.css 586 B
build/block-library/blocks/post-featured-image/style-rtl.css 322 B
build/block-library/blocks/post-featured-image/style.css 322 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 281 B
build/block-library/blocks/post-template/style.css 281 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-time-to-read/style-rtl.css 69 B
build/block-library/blocks/post-time-to-read/style.css 69 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 335 B
build/block-library/blocks/pullquote/style.css 335 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 463 B
build/block-library/blocks/query/editor.css 463 B
build/block-library/blocks/quote/style-rtl.css 222 B
build/block-library/blocks/quote/style.css 222 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 408 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 329 B
build/block-library/blocks/shortcode/editor.css 329 B
build/block-library/blocks/site-logo/editor-rtl.css 489 B
build/block-library/blocks/site-logo/editor.css 489 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 359 B
build/block-library/blocks/spacer/editor.css 359 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 552 B
build/block-library/blocks/video/editor.css 555 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 179 B
build/block-library/classic.css 179 B
build/block-library/common-rtl.css 1.12 kB
build/block-library/common.css 1.12 kB
build/block-library/editor-elements-rtl.css 75 B
build/block-library/editor-elements.css 75 B
build/block-library/elements-rtl.css 54 B
build/block-library/elements.css 54 B
build/block-library/reset-rtl.css 478 B
build/block-library/reset.css 478 B
build/block-library/style-rtl.css 12.8 kB
build/block-library/style.css 12.8 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 51.1 kB
build/compose/index.min.js 12.4 kB
build/core-data/index.min.js 16.3 kB
build/customize-widgets/index.min.js 12.2 kB
build/customize-widgets/style-rtl.css 1.41 kB
build/customize-widgets/style.css 1.41 kB
build/data-controls/index.min.js 718 B
build/data/index.min.js 8.68 kB
build/date/index.min.js 40.4 kB
build/deprecated/index.min.js 518 B
build/dom-ready/index.min.js 336 B
build/edit-post/classic-rtl.css 571 B
build/edit-post/classic.css 571 B
build/edit-post/index.min.js 35 kB
build/edit-widgets/index.min.js 17.3 kB
build/edit-widgets/style-rtl.css 4.56 kB
build/edit-widgets/style.css 4.56 kB
build/editor/index.min.js 45.9 kB
build/editor/style-rtl.css 3.49 kB
build/editor/style.css 3.48 kB
build/element/index.min.js 4.95 kB
build/escape-html/index.min.js 548 B
build/format-library/index.min.js 7.26 kB
build/format-library/style-rtl.css 557 B
build/format-library/style.css 556 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.94 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.94 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.52 kB
build/private-apis/index.min.js 942 B
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.26 kB
build/reusable-blocks/style-rtl.css 265 B
build/reusable-blocks/style.css 265 B
build/rich-text/index.min.js 11.1 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.55 kB
build/token-list/index.min.js 650 B
build/url/index.min.js 3.74 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.3 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

@github-actions
Copy link

github-actions bot commented Apr 14, 2023

Flaky tests detected in 6e7e6ec.
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/4744963811
📝 Reported issues:

@@ -32,6 +32,7 @@ const StylesTab = ( { blockName, clientId, hasBlockStyles } ) => {
label={ __( 'Color' ) }
className="color-block-support-panel__inner-wrapper"
/>
<InspectorControls.Slot group="filter" />
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@jasmussen is this a proper order for the filters? I put it after color because it's what made sense to me

@jasmussen
Copy link
Contributor

This looks good, thank you, here's a screenshot of duotone in the inspector:

Screenshot 2023-04-17 at 10 40 25

To note, one of the reasons it's called "Filters" is that I expect additional filters to land in the future. That said, until we actually do have more filters, it might be best to call it still "Duotone", we can always rename.

One thing I'm missing from the mockups, though, is the ItemGroup+Flyout combo, this one:

Screenshot 2023-04-17 at 10 44 05

This is mainly to compress the space usage in the inspector. There are a lot of other valuable options there, including border and radius, and even if we could push "Duotone" down below, it wouldn't really help the overall glancability.

Would it be possible to move this into such an ItemGroup+Flyout combo? I know that the Box shadow component in Global Styles recently did the same, perhaps there's some code there that can be repurposed?

@MaggieCabrera
Copy link
Contributor Author

Would it be possible to move this into such an ItemGroup+Flyout combo? I know that the Box shadow component in Global Styles recently did the same, perhaps there's some code there that can be repurposed?

Yeah, I think we can do that

@MaggieCabrera
Copy link
Contributor Author

Would it be possible to move this into such an ItemGroup+Flyout combo? I know that the Box shadow component in Global Styles recently did the same, perhaps there's some code there that can be repurposed?

Should we have the ItemGroup+Flyout combo in Global Styles too @jasmussen ? As in, should I edit StylesFiltersPanel with the change instead of doing it on the hook, @youknowriad ?

@youknowriad
Copy link
Contributor

Should we have the ItemGroup+Flyout combo in Global Styles too @jasmussen ? As in, should I edit StylesFiltersPanel with the change instead of doing it on the hook, @youknowriad ?

Regardless of what we do, I think we should be consistent and just modify the same component for both IMO.

@MaggieCabrera
Copy link
Contributor Author

Should we have the ItemGroup+Flyout combo in Global Styles too @jasmussen ? As in, should I edit StylesFiltersPanel with the change instead of doing it on the hook, @youknowriad ?

Regardless of what we do, I think we should be consistent and just modify the same component for both IMO.

I think in this case we can mimic what the colors panel is doing. It will look a little bit lonely with just one kind of filter, I suppose

@jasmussen
Copy link
Contributor

I think in this case we can mimic what the colors panel is doing. It will look a little bit lonely with just one kind of filter, I suppose

I think that's fine for now, and can be a reason to call the panel "Duotone" for now. And yes, we can have it be the same in global styles an the inspector.

@MaggieCabrera
Copy link
Contributor Author

I think this can get the code reviewed already. I'm thinking we shouldn't change how the toolbar controls work on this PR, but in a follow up instead.

Post editor:

Screenshot 2023-04-19 at 11 49 48

Global Styles:

Screenshot 2023-04-19 at 11 49 57

@youknowriad what would be the best way to disable the custom duotone controls only for GS? that requires a more involved fix that is not relevant to this one. If you don't think we should do that, I'm happy to just remove the option from this panel until that is addressed.

@MaggieCabrera MaggieCabrera marked this pull request as ready for review April 19, 2023 09:53
@MaggieCabrera MaggieCabrera requested a review from ellatrix as a code owner April 19, 2023 09:53
@youknowriad
Copy link
Contributor

Personally, I'm often for "consistency". So if custom duotone is something that is supported already by theme.json (and user theme.json), I don't see why we should disable it for global styles UI.

@MaggieCabrera
Copy link
Contributor Author

Personally, I'm often for "consistency". So if custom duotone is something that is supported already by theme.json (and user theme.json), I don't see why we should disable it for global styles UI.

The thing is, it is not! right now it only works on a block level, on theme.json you can only assign presets to the specific blocks. That's a known bug, and needs addressing separately.

@MaggieCabrera
Copy link
Contributor Author

@MaggieCabrera Ok I guess in FiltersPanel the one in edit-site package, you can force color.customDuotone to be false in the settings prop?

that sounds good to me! I'll get to fix the custom duotone on gs/theme.json afterwards so this will be a temporary thing

@jasmussen
Copy link
Contributor

jasmussen commented Apr 19, 2023

Taking this for a spin, it feels great! Thanks so much for putting it in the itemgroup, this feels validating to me in practice. Here's Global Styles > All blocks > Images > Filters > Duotone:

gs

Note that when the flyout is invoked from the inspector, it should use the default popover style. Light gray border, small drop shadow underneath:

Screenshot 2023-04-19 at 12 00 27

The almost black border is meant to only be applied to popovers that open from the block toolbar:

Screenshot 2023-04-19 at 11 57 49

Last I worked on this, the prop was called isAlternate (showing the black borders), but I also think there was an intent or effort to have this prop be refactored away, and be automatically applied depending on where the popover was opened from. CC: @ciampo in case you recall what I'm referring to.

Post editor generally looks good, the compression in the inspector yet again validates the use of the itemgroup:

Screenshot 2023-04-19 at 11 57 39

Noting here that duotone can be applied to at least the image block, even in the setup state. This is intentional, and should make the gray placeholder look like this:

Screenshot 2023-04-19 at 12 02 50

However I noticed this filter is also applied in the selected state for this block, both i this PR and in trunk:

Screenshot 2023-04-19 at 11 57 30

This used to work, so it's a regression. It's not your burden to fix, as it's not the fault of this PR, just noting it as a result of testing.

Nice work!

@@ -27,7 +27,13 @@ export default function FiltersPanel( { name } ) {
inheritedValue={ inheritedStyle }
value={ style }
onChange={ setStyle }
settings={ settings }
settings={ {
Copy link
Contributor

Choose a reason for hiding this comment

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

I wonder if we should memoize this object (depends on how it's used internally)

@MaggieCabrera
Copy link
Contributor Author

The almost black border is meant to only be applied to popovers that open from the block toolbar:

Yes, it was a variant, I made it look like the rest.

Thanks for reporting the bug on the image placeholders!

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.

This is looking good to me, but I left some comments that are not necessarily to be addressed within this PR but just wanted to highlight some code quality potential improvements.

placement: 'left-start',
offset: 36,
shift: true,
className: 'block-editor-duotone-control__popover',
Copy link
Contributor

Choose a reason for hiding this comment

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

It's not great when we use "classnames" as reusable components. In the ideal scenario, the styles should be defined in the same place where the classname is used.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

yes! this I think can be refactored when we work on using the filter panel for the toolbar controls, I will make a note to do just that

{ indicators.map( ( indicator, index ) => (
<Flex key={ index } expanded={ false }>
{ indicator === 'unset' || ! indicator ? (
<ColorIndicator className="block-editor-duotone-control__unset-indicator" />
Copy link
Contributor

Choose a reason for hiding this comment

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

I saw this check and this class in a couple places, It seems to me that the DuotonePicker already understands the unset value, so it's not far fetched to say that the DuotoneSwatch should also understand the unset value and do the right thing internally instead of duplicating the styles and the classname every time.

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 will tackle this one when refactoring the DuotoneControl component too, good catch

@scruffian
Copy link
Contributor

When I look at a block that already has a Duotone set, the setting doesn't appear to be selected:
Screenshot 2023-04-20 at 14 56 53

Similarly for Global Styles, the default color from theme.json isn't populated:
Screenshot 2023-04-20 at 14 56 10

In trunk it looks like this:
Screenshot 2023-04-20 at 14 54 49

@youknowriad
Copy link
Contributor

youknowriad commented Apr 20, 2023

@scruffian for the global styles unset value is a known issue that was solved here #49806

Edit: you may be referring to something else though :)

Copy link
Contributor

@scruffian scruffian left a comment

Choose a reason for hiding this comment

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

A rebase fixed it. LGTM

@scruffian scruffian merged commit a1a8729 into trunk Apr 20, 2023
@scruffian scruffian deleted the filter-component-on-inspector branch April 20, 2023 14:49
@github-actions github-actions bot added this to the Gutenberg 15.7 milestone Apr 20, 2023
@bph bph added the [Type] Enhancement A suggestion for improvement. label Apr 26, 2023
@ciampo
Copy link
Contributor

ciampo commented Apr 27, 2023

Last I worked on this, the prop was called isAlternate (showing the black borders), but I also think there was an intent or effort to have this prop be refactored away, and be automatically applied depending on where the popover was opened from. CC: @ciampo in case you recall what I'm referring to.

@jasmussen I'm catching up with pings after some AFK — I can't actually recall the details of this conversation. Would you be able to create a new issue to track these requirements? Thank you!

@jasmussen
Copy link
Contributor

@ciampo thanks for catching up. Before I open a new issue, I found a little more context in #45137, where the "isAlternate" is refactored/deprecated in favor of a variant.

But it boils down to this, you can have two styles of popovers. This one:
Screenshot 2023-04-28 at 09 30 06

Notice how it opens from the block toolbar and has the same black borders as the block toolbar.

This one:

Screenshot 2023-04-28 at 09 30 15

Notice how it doesn't open from the block toolbar, and has the light gray borders, plus a drop shadow.

The thing is, a developer should not have to choose a variant if we can automate this for them. The gray with box shadow can be default, but if something opens from the block toolbar, it should always be the dark version. That way we avoid this issue where someone forgot the variant:

Screenshot 2023-04-28 at 09 30 21

Worth a ticket, I feel like there may have already been one?

@ciampo
Copy link
Contributor

ciampo commented Apr 28, 2023

Thank you for the great explanation around the context for this, @jasmussen !

I think this could be something that we could do via context APIs

  • set the default version to be the "light" one
  • change the default when the Dropdown / Popover is rendered within the Toolbar component

Worth a ticket, I feel like there may have already been one?

You're right, @mirka had already opened one: #45246

I'll go ahead and update it with the additional context from your comment above

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Feature] Design Tools Tools that impact the appearance of blocks both to expand the number of tools and improve the experi 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.

7 participants