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

Gradients: Enable adding custom gradient when gradients are disabled #36900

Conversation

andrewserong
Copy link
Contributor

@andrewserong andrewserong commented Nov 26, 2021

Description

Fixes #36640

This PR adds the ability to set a custom gradient when no gradients are provided by the theme (and the defaultGradients setting is switched off). It turns out the bug was due to the MultipleOrigin component expecting there to be at least one gradient, so the fix is to check that at least one gradient exists before using that component, otherwise fallback to SingleOrigin.

Note: I noticed some outstanding issues with the gradient picker, raised in: #36899 — the console error thrown when clearing a gradient exists on trunk, and doesn't appear to affect the user experience. I figure we can look at fixing that separately.

How has this been tested?

With a blocks theme active, update the following settings in the theme.json:

  • settings.color.defaultGradients should be set to false.
  • settings.color.gradients should be set to an empty array.

Open up the post editor and add a Group block. Go to set the background color, and select Gradient — you should be able to add a custom gradient as in the screengrab below.

I've also added a Storybook example to make sure it's easy to quickly glance at the component without having to make the above changes to a theme.json file. To see the Storybook example:

  1. Run npm run storybook:dev
  2. Go to http://localhost:50240/?path=/story/components-gradientpicker--with-no-existing-gradients and check that the custom gradient is displayed and usable.

Screenshots

Kapture 2021-11-26 at 16 47 07

Types of changes

Bug fix (non-breaking change which fixes an issue)

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).

@andrewserong andrewserong added [Type] Bug An existing feature does not function as intended [Feature] Design Tools Tools that impact the appearance of blocks both to expand the number of tools and improve the experi labels Nov 26, 2021
@andrewserong andrewserong self-assigned this Nov 26, 2021
@andrewserong andrewserong added the [Status] In Progress Tracking issues with work in progress label Nov 26, 2021
@github-actions
Copy link

github-actions bot commented Nov 26, 2021

Size Change: +845 B (0%)

Total Size: 1.11 MB

Filename Size Change
build/block-editor/index.min.js 139 kB -11 B (0%)
build/block-editor/style-rtl.css 14.4 kB +22 B (0%)
build/block-editor/style.css 14.4 kB +23 B (0%)
build/block-library/blocks/gallery/style-rtl.css 1.63 kB +7 B (0%)
build/block-library/blocks/gallery/style.css 1.62 kB +7 B (0%)
build/block-library/blocks/navigation/style-rtl.css 1.68 kB +9 B (+1%)
build/block-library/blocks/navigation/style.css 1.67 kB +10 B (+1%)
build/block-library/blocks/query-pagination/style-rtl.css 273 B +39 B (+17%) ⚠️
build/block-library/blocks/query-pagination/style.css 269 B +38 B (+16%) ⚠️
build/block-library/editor-rtl.css 9.92 kB +117 B (+1%)
build/block-library/editor.css 9.92 kB +112 B (+1%)
build/block-library/index.min.js 162 kB +151 B (0%)
build/block-library/style-rtl.css 10.7 kB +207 B (+2%)
build/block-library/style.css 10.7 kB +209 B (+2%)
build/components/index.min.js 214 kB +118 B (0%)
build/components/style-rtl.css 15.4 kB +30 B (0%)
build/components/style.css 15.4 kB +30 B (0%)
build/core-data/index.min.js 13.2 kB -6 B (0%)
build/edit-post/index.min.js 29.6 kB -26 B (0%)
build/edit-site/index.min.js 34.2 kB +2 B (0%)
build/edit-site/style-rtl.css 6.58 kB -49 B (-1%)
build/edit-site/style.css 6.58 kB -48 B (-1%)
build/list-reusable-blocks/index.min.js 1.72 kB -146 B (-8%)
ℹ️ 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.21 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 58 B
build/block-library/blocks/audio/editor.css 58 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 291 B
build/block-library/blocks/buttons/editor.css 291 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 134 B
build/block-library/blocks/code/theme.css 134 B
build/block-library/blocks/columns/editor-rtl.css 206 B
build/block-library/blocks/columns/editor.css 205 B
build/block-library/blocks/columns/style-rtl.css 503 B
build/block-library/blocks/columns/style.css 502 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/cover/editor-rtl.css 546 B
build/block-library/blocks/cover/editor.css 547 B
build/block-library/blocks/cover/style-rtl.css 1.22 kB
build/block-library/blocks/cover/style.css 1.22 kB
build/block-library/blocks/embed/editor-rtl.css 488 B
build/block-library/blocks/embed/editor.css 488 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 976 B
build/block-library/blocks/gallery/editor.css 980 B
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 731 B
build/block-library/blocks/image/editor.css 730 B
build/block-library/blocks/image/style-rtl.css 507 B
build/block-library/blocks/image/style.css 511 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 137 B
build/block-library/blocks/latest-posts/editor.css 137 B
build/block-library/blocks/latest-posts/style-rtl.css 528 B
build/block-library/blocks/latest-posts/style.css 527 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.89 kB
build/block-library/blocks/navigation/editor.css 1.89 kB
build/block-library/blocks/navigation/view.min.js 2.74 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 377 B
build/block-library/blocks/page-list/editor.css 377 B
build/block-library/blocks/page-list/style-rtl.css 172 B
build/block-library/blocks/page-list/style.css 172 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 444 B
build/block-library/blocks/post-comments-form/style.css 444 B
build/block-library/blocks/post-comments/style-rtl.css 492 B
build/block-library/blocks/post-comments/style.css 493 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 391 B
build/block-library/blocks/post-template/style.css 392 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 378 B
build/block-library/blocks/pullquote/style.css 378 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/editor-rtl.css 131 B
build/block-library/blocks/query/editor.css 132 B
build/block-library/blocks/quote/style-rtl.css 187 B
build/block-library/blocks/quote/style.css 187 B
build/block-library/blocks/quote/theme-rtl.css 223 B
build/block-library/blocks/quote/theme.css 226 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 772 B
build/block-library/blocks/site-logo/editor.css 772 B
build/block-library/blocks/site-logo/style-rtl.css 165 B
build/block-library/blocks/site-logo/style.css 165 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 670 B
build/block-library/blocks/social-links/editor.css 669 B
build/block-library/blocks/social-links/style-rtl.css 1.32 kB
build/block-library/blocks/social-links/style.css 1.32 kB
build/block-library/blocks/spacer/editor-rtl.css 307 B
build/block-library/blocks/spacer/editor.css 307 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 146 B
build/block-library/blocks/tag-cloud/style.css 146 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 569 B
build/block-library/blocks/video/editor.css 570 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 857 B
build/block-library/common.css 856 B
build/block-library/reset-rtl.css 474 B
build/block-library/reset.css 474 B
build/block-library/theme-rtl.css 672 B
build/block-library/theme.css 677 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.3 kB
build/compose/index.min.js 10.9 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.47 kB
build/date/index.min.js 31.5 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 kB
build/edit-navigation/style-rtl.css 3.76 kB
build/edit-navigation/style.css 3.76 kB
build/edit-post/classic-rtl.css 492 B
build/edit-post/classic.css 494 B
build/edit-post/style-rtl.css 7.1 kB
build/edit-post/style.css 7.09 kB
build/edit-widgets/index.min.js 16.5 kB
build/edit-widgets/style-rtl.css 4.18 kB
build/edit-widgets/style.css 4.18 kB
build/editor/index.min.js 37.8 kB
build/editor/style-rtl.css 3.78 kB
build/editor/style.css 3.77 kB
build/element/index.min.js 3.29 kB
build/escape-html/index.min.js 517 B
build/format-library/index.min.js 6.57 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.71 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/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.08 kB
build/nux/style-rtl.css 747 B
build/nux/style.css 743 B
build/plugins/index.min.js 1.84 kB
build/primitives/index.min.js 924 B
build/priority-queue/index.min.js 582 B
build/react-i18n/index.min.js 671 B
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.57 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

@andrewserong andrewserong force-pushed the update/gradient-picker-to-support-custom-gradient-when-gradients-are-empty branch from 99cf1d9 to 3b24d17 Compare December 1, 2021 04:17
@andrewserong andrewserong removed the [Status] In Progress Tracking issues with work in progress label Dec 1, 2021
@andrewserong andrewserong added the Backport to WP 6.7 Beta/RC Pull request that needs to be backported to the WordPress major release that's currently in beta label Dec 1, 2021
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 @andrewserong, I'm not sure I'm following your instructions correctly when testing these changes.

In Storybook the gradient input disappears (leaving only the "clear" button) when toggling the "Disable Custom Gradients" to true — I couldn't understand if this behaviour is expected.

custom-gradient-storybook.mp4

I also wasn't able to follow your instructions in the block editor — I can't see the "Solid | Gradient" toggle, and therefore I can't continue with the testing.

custom-gradient.mp4

Apologies in advance in case I'm missing something on my end!

@andrewserong
Copy link
Contributor Author

Thanks for testing @ciampo! In my testing it turns out my settings were slightly different so I wound up not seeing the error. But from re-testing with my own test instructions (😅) I could replicate the issues. I believe I've fixed them up now:

Custom gradient not being available at all

It turns out that the setting for customGradient wasn't being loaded in the ColorEdit component in packages/block-editor/src/hooks/color.js. I think this was due to a change in #36841 that moved away from checking the color.custom and color.customGradient settings explicitly, and instead uses useSetting( 'color' ) — unfortunately useSetting has special handling for the custom and customGradient paths, so I think that introduced an error. I've restored getting these settings explicitly, but I'll just CC: @jorgefilipecosta in case reverting this introduces any issues.

Stray clear button being rendered in Storybook

The added Storybook example is mostly there to show that when the component is rendered with __experimentalHasMultipleOrigins and disableCustomGradients is set to false, that the component still renders (mimicking how the component is used in the color support). So, I don't think the stray Clear button would show up in real world usage, but to be safe, I've added an extra check to ensure it doesn't render.


Thanks again for testing, and let me know if you find any other issues! (The PHP Unit tests are currently failing, but that seems to be happening across a bunch of PRs right now, so most likely unrelated).

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.

Thank you for the eplxnation @andrewserong !

Code changes on the Gradient Picker side LGTM, and I can test those changes correctly following the instructions! 🚀

I'll let @jorgefilipecosta give a final seal of approval regarding the changes in the block editor to how color-settings are parsed.

text: isTextEnabled,
background: isBackgroundEnabled,
link: isLinkEnabled,
} = useSetting( 'color' ) || {};

// The following color settings need to be accessed explicitly due to
Copy link
Member

Choose a reason for hiding this comment

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

Oh, that's a good one. It sounds like a follow-up should be to cover for this case in useSetting (so the deprecated flags are still considered when accessing the top-level keys color, typography, spacing).

Copy link
Member

Choose a reason for hiding this comment

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

Copy link
Member

Choose a reason for hiding this comment

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

While it can be a bit more rare given that themes provide the settings via theme.json or we retrofit them, would be worth doing the same for color.palette and color.gradients (accessing them directly here) just to be sure?

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 deprecate useSetting with top level keys? color, typography, spacing. I feel this was never considered to be a valid usage.

If we want to keep them, we'd need to "normalize" the settings before running the useSetting logic.

Copy link
Member

@oandregal oandregal Dec 3, 2021

Choose a reason for hiding this comment

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

I've reverted accessing color directly for all the changes I've found 6a825e6

I know this wasn't directly related to custom gradients but it's the source of the bug, so it's best addressed together. It's also one less PR to backport.

(Andrew, I hope you don't mind I have pushed directly to this PR. I did it so timezones work in our favor, not against).

Copy link
Contributor Author

Choose a reason for hiding this comment

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

(Andrew, I hope you don't mind I have pushed directly to this PR. I did it so timezones work in our favor, not against).

@oandregal not at all! Thanks so much for picking up this PR, it's always good to get timezones to work in our favor, much appreciated 🙇

@oandregal
Copy link
Member

For the record, I see Block_Fixture_Test::test_kses_doesnt_change_fixtures is failing, but it's also failing in trunk and it's unrelated to this PR.

@oandregal
Copy link
Member

oandregal commented Dec 3, 2021

I'm going to merge this one, the failing test needs to be investigated independently.

@oandregal oandregal merged commit e87f4ad into trunk Dec 3, 2021
@oandregal oandregal deleted the update/gradient-picker-to-support-custom-gradient-when-gradients-are-empty branch December 3, 2021 12:45
@github-actions github-actions bot added this to the Gutenberg 12.2 milestone Dec 3, 2021
@youknowriad
Copy link
Contributor

The failing test was actually a valid failure from this PR, I'm trying to fix it now.

@jorgefilipecosta
Copy link
Member

Hi @andrewserong thank you for fixing the issue. On #36841. I missed the fact that we need the back-compatibility on some useSetting('color....') settings. And we can not do useSetting( 'color' ).

It turns out that the setting for customGradient wasn't being loaded in the ColorEdit component in packages/block-editor/src/hooks/color.js. I think this was due to a change in #36841 that moved away from checking the color.custom and color.customGradient settings explicitly, and instead uses useSetting( 'color' ) — unfortunately useSetting has special handling for the custom and customGradient paths, so I think that introduced an error. I've restored getting these settings explicitly, but I'll just CC: @jorgefilipecosta in case reverting this introduces any issues.

The change brings back the bug of colors only being applied by slug on the highest priority origin. But PR #37108 is fixing this.

@noisysocks noisysocks removed the Backport to WP 6.7 Beta/RC Pull request that needs to be backported to the WordPress major release that's currently in beta label Dec 6, 2021
noisysocks pushed a commit that referenced this pull request Dec 6, 2021
…ultGradients (#36900)

* Gradients: Enable adding custom gradient when gradients are disabled

* Simplify fix by moving check to where we determine multiple origins, add storybook and changelog entries

* Fix issue with custom and customGradient settings not being loaded in ColorEdit

* Hide clear button if there are no gradients and the custom gradient is disabled

* Revert to access color props specifically

Co-authored-by: André <[email protected]>
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 [Type] Bug An existing feature does not function as intended
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Users should be able to add a custom gradient when the default gradients are disabled
6 participants