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

Fix Pullquote text color after unsetting main color #24600

Merged
merged 2 commits into from
Aug 19, 2020

Conversation

ntsekouras
Copy link
Contributor

@ntsekouras ntsekouras commented Aug 17, 2020

Description

Fixes: #24440

Currently in a Solid color Pullquote if you change the main color and a text color is automatically computed ( for example main color black ), and then you unset the main color, the text color remains set and that can lead to invisible text (same color with background).

In this PR if we unset the main color and the text color was previously automatically computed, we unset the text color as well.

Checklist:

  • My code is tested.
  • My code follows the WordPress code style.
  • My code follows the accessibility standards.
  • 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.

@ntsekouras ntsekouras added [Type] Bug An existing feature does not function as intended [Block] Pullquote Affects the Pullquote Block labels Aug 17, 2020
@ntsekouras ntsekouras self-assigned this Aug 17, 2020
@github-actions
Copy link

github-actions bot commented Aug 17, 2020

Size Change: +45 B (0%)

Total Size: 1.16 MB

Filename Size Change
build/block-editor/index.js 126 kB +22 B (0%)
build/block-editor/style-rtl.css 10.7 kB +25 B (0%)
build/block-editor/style.css 10.7 kB +25 B (0%)
build/block-library/index.js 132 kB +11 B (0%)
build/edit-post/style-rtl.css 5.62 kB -19 B (0%)
build/edit-post/style.css 5.61 kB -19 B (0%)
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.14 kB 0 B
build/annotations/index.js 3.67 kB 0 B
build/api-fetch/index.js 3.44 kB 0 B
build/autop/index.js 2.82 kB 0 B
build/blob/index.js 620 B 0 B
build/block-directory/index.js 7.96 kB 0 B
build/block-directory/style-rtl.css 953 B 0 B
build/block-directory/style.css 952 B 0 B
build/block-library/editor-rtl.css 8.36 kB 0 B
build/block-library/editor.css 8.36 kB 0 B
build/block-library/style-rtl.css 7.47 kB 0 B
build/block-library/style.css 7.48 kB 0 B
build/block-library/theme-rtl.css 729 B 0 B
build/block-library/theme.css 730 B 0 B
build/block-serialization-default-parser/index.js 1.88 kB 0 B
build/block-serialization-spec-parser/index.js 3.1 kB 0 B
build/blocks/index.js 48.4 kB 0 B
build/components/index.js 200 kB 0 B
build/components/style-rtl.css 15.7 kB 0 B
build/components/style.css 15.7 kB 0 B
build/compose/index.js 9.68 kB 0 B
build/core-data/index.js 11.8 kB 0 B
build/data-controls/index.js 1.29 kB 0 B
build/data/index.js 8.56 kB 0 B
build/date/index.js 5.38 kB 0 B
build/deprecated/index.js 772 B 0 B
build/dom-ready/index.js 568 B 0 B
build/dom/index.js 3.23 kB 0 B
build/edit-navigation/index.js 10.9 kB 0 B
build/edit-navigation/style-rtl.css 1.08 kB 0 B
build/edit-navigation/style.css 1.08 kB 0 B
build/edit-post/index.js 304 kB 0 B
build/edit-site/index.js 17 kB 0 B
build/edit-site/style-rtl.css 3.06 kB 0 B
build/edit-site/style.css 3.06 kB 0 B
build/edit-widgets/index.js 11.7 kB 0 B
build/edit-widgets/style-rtl.css 2.45 kB 0 B
build/edit-widgets/style.css 2.45 kB 0 B
build/editor/editor-styles-rtl.css 537 B 0 B
build/editor/editor-styles.css 539 B 0 B
build/editor/index.js 45.3 kB 0 B
build/editor/style-rtl.css 3.8 kB 0 B
build/editor/style.css 3.79 kB 0 B
build/element/index.js 4.65 kB 0 B
build/escape-html/index.js 733 B 0 B
build/format-library/index.js 7.71 kB 0 B
build/format-library/style-rtl.css 547 B 0 B
build/format-library/style.css 548 B 0 B
build/hooks/index.js 2.13 kB 0 B
build/html-entities/index.js 621 B 0 B
build/i18n/index.js 3.56 kB 0 B
build/is-shallow-equal/index.js 711 B 0 B
build/keyboard-shortcuts/index.js 2.52 kB 0 B
build/keycodes/index.js 1.94 kB 0 B
build/list-reusable-blocks/index.js 3.11 kB 0 B
build/list-reusable-blocks/style-rtl.css 476 B 0 B
build/list-reusable-blocks/style.css 476 B 0 B
build/media-utils/index.js 5.33 kB 0 B
build/notices/index.js 1.79 kB 0 B
build/nux/index.js 3.4 kB 0 B
build/nux/style-rtl.css 671 B 0 B
build/nux/style.css 668 B 0 B
build/plugins/index.js 2.56 kB 0 B
build/primitives/index.js 1.41 kB 0 B
build/priority-queue/index.js 789 B 0 B
build/redux-routine/index.js 2.85 kB 0 B
build/rich-text/index.js 13.9 kB 0 B
build/server-side-render/index.js 2.77 kB 0 B
build/shortcode/index.js 1.7 kB 0 B
build/token-list/index.js 1.27 kB 0 B
build/url/index.js 4.06 kB 0 B
build/viewport/index.js 1.85 kB 0 B
build/warning/index.js 1.14 kB 0 B
build/wordcount/index.js 1.17 kB 0 B

compressed-size-action

@ntsekouras ntsekouras requested review from mcsf and jasmussen August 18, 2020 07:54
@jasmussen
Copy link
Contributor

Thanks for the PR!

I have a question regarding the best practice here, because I see a discrepancy in how 2020 and 2019 themes do this. 2020:

2020

Note how selecting the black background color also sets the cream foreground color, resulting in the bug as reported.

2019:

2019

Note how selecting the background color does not set the foreground color, meaning there is no issue.

I tend to think that when you choose one color, that one action should not also affect adjacent controls. Maybe I wanted black text on a black background (homemade spoiler block?) — and we'd also have a color contrast warning indicating that what you're doing is a bad idea. However by making a choice for the user, it feels both unnecessarily prescriptive, but also prone to adding a lot of complexity where none should be needed.

The 2019 approach seems much better: when a blue background is set, the theme defines the foreground color to be white. But the color remains unset in the editor, and a user can then explicitly choose a different than white foreground color if that's what they want.

The 2020 approach, to set an inline color style when the pullquote has a black background, feels like the bug to fix at the theme level, and if it's using block editor APIs, in the block editor as well.

What do you think, @kjellr?

@ntsekouras
Copy link
Contributor Author

ntsekouras commented Aug 18, 2020

Hey @jasmussen ! Thanks for looking at this!

The change of text color has to do with themes' colors. That's why you're not seeing it in the other theme. It happens to have more compatible colors. Although I noticed in your gif that color does change in white background. I'll check it now.

There is currently logic in there that if the user have NOT selected text color and changes background, tries to auto compute a better color (colorUtils.getMostReadableColor( colorValue ).

If the user has chosen a text color it remains as is. My change now is specific to the case that we (GB) had previously computed a text color and now we unset it. So it's like taking back our recommendation/change.

@ntsekouras
Copy link
Contributor Author

Although I noticed in your gif that color does change in white background. I'll check it now.

Actually the text color changes to black when selecting white background, but it isn't selected. If you unset the white background you'll see that the color remains to black.

@jasmussen
Copy link
Contributor

Thank you for the context.

There is currently logic in there that if the user have NOT selected text color and changes background, tries to auto compute a better color (colorUtils.getMostReadableColor( colorValue ).

I guess what I'm suggesting is that this may be undesirable behavior (prescriptive, unpredictable), and that better default theme behaviors (the theme providing white text if the background is set to blue) feels like the better overall practice, when combined with the contrast checker.

@ntsekouras ntsekouras added the Needs Design Feedback Needs general design feedback. label Aug 18, 2020
@kjellr
Copy link
Contributor

kjellr commented Aug 18, 2020

I guess what I'm suggesting is that this may be undesirable behavior (prescriptive, unpredictable), and that better default theme behaviors (the theme providing white text if the background is set to blue) feels like the better overall practice, when combined with the contrast checker.

I agree for now — if a user makes one color choice, and then clears it, they shouldn't have to clear a second setting.

That said, the practice of themes changing the text color css in circumstances like this has always felt a little bit of a hack though. I think there's a ticket somewhere for handling this via theme.json, and I hope that helps enforce a more shared process around this.

@jasmussen
Copy link
Contributor

Thanks for looking, good thoughts. I think I'll dare a ping to @nosolosw to see if he has any thoughts here.

@oandregal oandregal self-requested a review August 19, 2020 09:20
Copy link
Member

@oandregal oandregal left a comment

Choose a reason for hiding this comment

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

👋 I think this can go in, the code fixes the issue. 🚢

There are a few related layers to this that I'd like to comment on! Let me unbundle them:

  1. This behavior is exclusive of the pullquote block and is the same in every theme => we need to fix it, and this PR does ✔️

  2. The pullquote doesn't use the new implicit style attributes => we need to migrate it, see Consolidate the style attributes of blocks #22700 @ntsekouras is this something you're interested in helping with?

  3. Do we want this behavior (changing background also changes text)?

If we look at the different approaches that people have tried (pullquote code, but also in theme territory) this looks like something people want. There's this issue to look at this from the context of theme.json #24166 Perhaps a good first step and a follow-up to this PR would be to look into migrating the pullquote block to the implicit style attribute system.

I do have questions about the expectations about this, though: is the existing pullquote a good enough approach (selecting a text color whose lightness is opposite from the background's)? or should be the theme responsibility to provide some kind of color pairing, so to speak?

@ntsekouras
Copy link
Contributor Author

Thanks for looking @nosolosw!

The pullquote doesn't use the new implicit style attributes => we need to migrate it, see #22700 @ntsekouras is this something you're interested in helping with?

Yes for sure :) !

I do have questions about the expectations about this, though: is the existing pullquote a good enough approach (selecting a text color whose lightness is opposite from the background's)? or should be the theme responsibility to provide some kind of color pairing, so to speak?

Great questions! Maybe both are needed and color pairing/grouping ( not necessarily 1:1 ) by themes might be a nice option.
Another approach of course is just showing warning about this and do changes.

@ntsekouras ntsekouras merged commit 823e5d7 into master Aug 19, 2020
@ntsekouras ntsekouras deleted the fix/pullquote-unset-main-color branch August 19, 2020 10:55
@github-actions github-actions bot added this to the Gutenberg 8.9 milestone Aug 19, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Block] Pullquote Affects the Pullquote Block Needs Design Feedback Needs general design feedback. [Type] Bug An existing feature does not function as intended
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Pullquote: when we change the main colour then the text of Pullquote is not visible
4 participants