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

Dark Theme Support: Allow for theme modifications #28233

Merged
merged 6 commits into from
Jan 28, 2021

Conversation

scruffian
Copy link
Contributor

@scruffian scruffian commented Jan 15, 2021

Description

Dark Theme support assumes that at theme's background is always dark, but this may not always be the case. Users can modify the theme background, and some themes background will be different if the system is in dark mode.

If a theme opts in to dark editor support then we add the is-dark-theme class to the body. This PR checks the real background color of the theme, and if its not dark then it removes this class.

Fixes #28200

How has this been tested?

Using Spearhead, which is a theme with dark mode

Screenshots

Light mode
Screenshot 2021-01-15 at 12 48 37

Dark mode
Screenshot 2021-01-15 at 12 49 13

Types of changes

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.

@github-actions
Copy link

github-actions bot commented Jan 15, 2021

Size Change: +404 B (0%)

Total Size: 1.37 MB

Filename Size Change
build/block-editor/index.js 123 kB +108 B (0%)
build/block-library/index.js 144 kB +87 B (0%)
build/blocks/index.js 48.3 kB +1 B (0%)
build/components/index.js 275 kB +20 B (0%)
build/compose/index.js 11.2 kB +1 B (0%)
build/edit-navigation/index.js 11.1 kB +1 B (0%)
build/edit-post/index.js 306 kB +77 B (0%)
build/edit-site/index.js 24.1 kB +60 B (0%)
build/edit-widgets/index.js 20.1 kB +46 B (0%)
build/editor/index.js 41.8 kB +2 B (0%)
build/shortcode/index.js 1.7 kB +1 B (0%)
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.14 kB 0 B
build/annotations/index.js 3.77 kB 0 B
build/api-fetch/index.js 3.4 kB 0 B
build/autop/index.js 2.84 kB 0 B
build/blob/index.js 665 B 0 B
build/block-directory/index.js 9.07 kB 0 B
build/block-directory/style-rtl.css 1.01 kB 0 B
build/block-directory/style.css 1.01 kB 0 B
build/block-editor/style-rtl.css 12 kB 0 B
build/block-editor/style.css 12 kB 0 B
build/block-library/blocks/archives/editor-rtl.css 61 B 0 B
build/block-library/blocks/archives/editor.css 60 B 0 B
build/block-library/blocks/audio/editor-rtl.css 58 B 0 B
build/block-library/blocks/audio/editor.css 58 B 0 B
build/block-library/blocks/audio/style-rtl.css 103 B 0 B
build/block-library/blocks/audio/style.css 103 B 0 B
build/block-library/blocks/block/editor-rtl.css 161 B 0 B
build/block-library/blocks/block/editor.css 161 B 0 B
build/block-library/blocks/button/editor-rtl.css 475 B 0 B
build/block-library/blocks/button/editor.css 474 B 0 B
build/block-library/blocks/button/style-rtl.css 453 B 0 B
build/block-library/blocks/button/style.css 451 B 0 B
build/block-library/blocks/buttons/editor-rtl.css 227 B 0 B
build/block-library/blocks/buttons/editor.css 227 B 0 B
build/block-library/blocks/buttons/style-rtl.css 297 B 0 B
build/block-library/blocks/buttons/style.css 297 B 0 B
build/block-library/blocks/calendar/style-rtl.css 208 B 0 B
build/block-library/blocks/calendar/style.css 208 B 0 B
build/block-library/blocks/categories/editor-rtl.css 84 B 0 B
build/block-library/blocks/categories/editor.css 83 B 0 B
build/block-library/blocks/categories/style-rtl.css 79 B 0 B
build/block-library/blocks/categories/style.css 79 B 0 B
build/block-library/blocks/code/style-rtl.css 90 B 0 B
build/block-library/blocks/code/style.css 90 B 0 B
build/block-library/blocks/columns/editor-rtl.css 190 B 0 B
build/block-library/blocks/columns/editor.css 190 B 0 B
build/block-library/blocks/columns/style-rtl.css 421 B 0 B
build/block-library/blocks/columns/style.css 421 B 0 B
build/block-library/blocks/cover/editor-rtl.css 392 B 0 B
build/block-library/blocks/cover/editor.css 393 B 0 B
build/block-library/blocks/cover/style-rtl.css 1.25 kB 0 B
build/block-library/blocks/cover/style.css 1.25 kB 0 B
build/block-library/blocks/embed/editor-rtl.css 486 B 0 B
build/block-library/blocks/embed/editor.css 486 B 0 B
build/block-library/blocks/embed/style-rtl.css 375 B 0 B
build/block-library/blocks/embed/style.css 375 B 0 B
build/block-library/blocks/file/editor-rtl.css 199 B 0 B
build/block-library/blocks/file/editor.css 198 B 0 B
build/block-library/blocks/file/style-rtl.css 248 B 0 B
build/block-library/blocks/file/style.css 248 B 0 B
build/block-library/blocks/freeform/editor-rtl.css 2.45 kB 0 B
build/block-library/blocks/freeform/editor.css 2.45 kB 0 B
build/block-library/blocks/gallery/editor-rtl.css 679 B 0 B
build/block-library/blocks/gallery/editor.css 679 B 0 B
build/block-library/blocks/gallery/style-rtl.css 1.07 kB 0 B
build/block-library/blocks/gallery/style.css 1.06 kB 0 B
build/block-library/blocks/group/editor-rtl.css 318 B 0 B
build/block-library/blocks/group/editor.css 317 B 0 B
build/block-library/blocks/group/style-rtl.css 57 B 0 B
build/block-library/blocks/group/style.css 57 B 0 B
build/block-library/blocks/heading/editor-rtl.css 129 B 0 B
build/block-library/blocks/heading/editor.css 129 B 0 B
build/block-library/blocks/heading/style-rtl.css 76 B 0 B
build/block-library/blocks/heading/style.css 76 B 0 B
build/block-library/blocks/html/editor-rtl.css 281 B 0 B
build/block-library/blocks/html/editor.css 281 B 0 B
build/block-library/blocks/image/editor-rtl.css 717 B 0 B
build/block-library/blocks/image/editor.css 716 B 0 B
build/block-library/blocks/image/style-rtl.css 477 B 0 B
build/block-library/blocks/image/style.css 478 B 0 B
build/block-library/blocks/latest-comments/editor-rtl.css 159 B 0 B
build/block-library/blocks/latest-comments/editor.css 158 B 0 B
build/block-library/blocks/latest-comments/style-rtl.css 269 B 0 B
build/block-library/blocks/latest-comments/style.css 269 B 0 B
build/block-library/blocks/latest-posts/editor-rtl.css 137 B 0 B
build/block-library/blocks/latest-posts/editor.css 137 B 0 B
build/block-library/blocks/latest-posts/style-rtl.css 523 B 0 B
build/block-library/blocks/latest-posts/style.css 522 B 0 B
build/block-library/blocks/list/editor-rtl.css 65 B 0 B
build/block-library/blocks/list/editor.css 65 B 0 B
build/block-library/blocks/list/style-rtl.css 63 B 0 B
build/block-library/blocks/list/style.css 63 B 0 B
build/block-library/blocks/media-text/editor-rtl.css 191 B 0 B
build/block-library/blocks/media-text/editor.css 191 B 0 B
build/block-library/blocks/media-text/style-rtl.css 535 B 0 B
build/block-library/blocks/media-text/style.css 532 B 0 B
build/block-library/blocks/more/editor-rtl.css 434 B 0 B
build/block-library/blocks/more/editor.css 434 B 0 B
build/block-library/blocks/navigation-link/editor-rtl.css 392 B 0 B
build/block-library/blocks/navigation-link/editor.css 394 B 0 B
build/block-library/blocks/navigation-link/style-rtl.css 704 B 0 B
build/block-library/blocks/navigation-link/style.css 702 B 0 B
build/block-library/blocks/navigation/editor-rtl.css 1.38 kB 0 B
build/block-library/blocks/navigation/editor.css 1.37 kB 0 B
build/block-library/blocks/navigation/style-rtl.css 183 B 0 B
build/block-library/blocks/navigation/style.css 183 B 0 B
build/block-library/blocks/nextpage/editor-rtl.css 395 B 0 B
build/block-library/blocks/nextpage/editor.css 395 B 0 B
build/block-library/blocks/paragraph/editor-rtl.css 109 B 0 B
build/block-library/blocks/paragraph/editor.css 109 B 0 B
build/block-library/blocks/paragraph/style-rtl.css 273 B 0 B
build/block-library/blocks/paragraph/style.css 273 B 0 B
build/block-library/blocks/post-author/editor-rtl.css 209 B 0 B
build/block-library/blocks/post-author/editor.css 209 B 0 B
build/block-library/blocks/post-author/style-rtl.css 183 B 0 B
build/block-library/blocks/post-author/style.css 184 B 0 B
build/block-library/blocks/post-comments-form/style-rtl.css 249 B 0 B
build/block-library/blocks/post-comments-form/style.css 249 B 0 B
build/block-library/blocks/post-content/editor-rtl.css 139 B 0 B
build/block-library/blocks/post-content/editor.css 139 B 0 B
build/block-library/blocks/post-excerpt/editor-rtl.css 73 B 0 B
build/block-library/blocks/post-excerpt/editor.css 73 B 0 B
build/block-library/blocks/post-featured-image/editor-rtl.css 338 B 0 B
build/block-library/blocks/post-featured-image/editor.css 338 B 0 B
build/block-library/blocks/post-featured-image/style-rtl.css 100 B 0 B
build/block-library/blocks/post-featured-image/style.css 100 B 0 B
build/block-library/blocks/preformatted/style-rtl.css 63 B 0 B
build/block-library/blocks/preformatted/style.css 63 B 0 B
build/block-library/blocks/pullquote/editor-rtl.css 183 B 0 B
build/block-library/blocks/pullquote/editor.css 183 B 0 B
build/block-library/blocks/pullquote/style-rtl.css 316 B 0 B
build/block-library/blocks/pullquote/style.css 316 B 0 B
build/block-library/blocks/query-loop/editor-rtl.css 90 B 0 B
build/block-library/blocks/query-loop/editor.css 89 B 0 B
build/block-library/blocks/query-loop/style-rtl.css 315 B 0 B
build/block-library/blocks/query-loop/style.css 317 B 0 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 122 B 0 B
build/block-library/blocks/query-pagination-numbers/editor.css 121 B 0 B
build/block-library/blocks/query-pagination/editor-rtl.css 270 B 0 B
build/block-library/blocks/query-pagination/editor.css 262 B 0 B
build/block-library/blocks/query-pagination/style-rtl.css 168 B 0 B
build/block-library/blocks/query-pagination/style.css 168 B 0 B
build/block-library/blocks/query/editor-rtl.css 159 B 0 B
build/block-library/blocks/query/editor.css 160 B 0 B
build/block-library/blocks/quote/editor-rtl.css 61 B 0 B
build/block-library/blocks/quote/editor.css 61 B 0 B
build/block-library/blocks/quote/style-rtl.css 169 B 0 B
build/block-library/blocks/quote/style.css 169 B 0 B
build/block-library/blocks/rss/editor-rtl.css 201 B 0 B
build/block-library/blocks/rss/editor.css 202 B 0 B
build/block-library/blocks/rss/style-rtl.css 290 B 0 B
build/block-library/blocks/rss/style.css 290 B 0 B
build/block-library/blocks/search/editor-rtl.css 165 B 0 B
build/block-library/blocks/search/editor.css 165 B 0 B
build/block-library/blocks/search/style-rtl.css 342 B 0 B
build/block-library/blocks/search/style.css 344 B 0 B
build/block-library/blocks/separator/editor-rtl.css 99 B 0 B
build/block-library/blocks/separator/editor.css 99 B 0 B
build/block-library/blocks/separator/style-rtl.css 236 B 0 B
build/block-library/blocks/separator/style.css 236 B 0 B
build/block-library/blocks/shortcode/editor-rtl.css 504 B 0 B
build/block-library/blocks/shortcode/editor.css 504 B 0 B
build/block-library/blocks/site-logo/editor-rtl.css 201 B 0 B
build/block-library/blocks/site-logo/editor.css 201 B 0 B
build/block-library/blocks/site-logo/style-rtl.css 117 B 0 B
build/block-library/blocks/site-logo/style.css 117 B 0 B
build/block-library/blocks/social-link/editor-rtl.css 164 B 0 B
build/block-library/blocks/social-link/editor.css 165 B 0 B
build/block-library/blocks/social-links/editor-rtl.css 711 B 0 B
build/block-library/blocks/social-links/editor.css 712 B 0 B
build/block-library/blocks/social-links/style-rtl.css 1.37 kB 0 B
build/block-library/blocks/social-links/style.css 1.37 kB 0 B
build/block-library/blocks/spacer/editor-rtl.css 302 B 0 B
build/block-library/blocks/spacer/editor.css 302 B 0 B
build/block-library/blocks/spacer/style-rtl.css 48 B 0 B
build/block-library/blocks/spacer/style.css 48 B 0 B
build/block-library/blocks/subhead/editor-rtl.css 99 B 0 B
build/block-library/blocks/subhead/editor.css 99 B 0 B
build/block-library/blocks/subhead/style-rtl.css 80 B 0 B
build/block-library/blocks/subhead/style.css 80 B 0 B
build/block-library/blocks/table/editor-rtl.css 489 B 0 B
build/block-library/blocks/table/editor.css 489 B 0 B
build/block-library/blocks/table/style-rtl.css 386 B 0 B
build/block-library/blocks/table/style.css 386 B 0 B
build/block-library/blocks/tag-cloud/editor-rtl.css 118 B 0 B
build/block-library/blocks/tag-cloud/editor.css 118 B 0 B
build/block-library/blocks/tag-cloud/style-rtl.css 94 B 0 B
build/block-library/blocks/tag-cloud/style.css 94 B 0 B
build/block-library/blocks/template-part/editor-rtl.css 680 B 0 B
build/block-library/blocks/template-part/editor.css 679 B 0 B
build/block-library/blocks/text-columns/editor-rtl.css 95 B 0 B
build/block-library/blocks/text-columns/editor.css 95 B 0 B
build/block-library/blocks/text-columns/style-rtl.css 166 B 0 B
build/block-library/blocks/text-columns/style.css 166 B 0 B
build/block-library/blocks/verse/editor-rtl.css 62 B 0 B
build/block-library/blocks/verse/editor.css 62 B 0 B
build/block-library/blocks/verse/style-rtl.css 87 B 0 B
build/block-library/blocks/verse/style.css 87 B 0 B
build/block-library/blocks/video/editor-rtl.css 504 B 0 B
build/block-library/blocks/video/editor.css 503 B 0 B
build/block-library/blocks/video/style-rtl.css 193 B 0 B
build/block-library/blocks/video/style.css 193 B 0 B
build/block-library/common-rtl.css 1.01 kB 0 B
build/block-library/common.css 1.01 kB 0 B
build/block-library/editor-rtl.css 9.06 kB 0 B
build/block-library/editor.css 9.05 kB 0 B
build/block-library/style-rtl.css 8.62 kB 0 B
build/block-library/style.css 8.61 kB 0 B
build/block-library/theme-rtl.css 748 B 0 B
build/block-library/theme.css 748 B 0 B
build/block-serialization-default-parser/index.js 1.88 kB 0 B
build/block-serialization-spec-parser/index.js 3.06 kB 0 B
build/components/style-rtl.css 15.5 kB 0 B
build/components/style.css 15.5 kB 0 B
build/core-data/index.js 16.8 kB 0 B
build/data-controls/index.js 830 B 0 B
build/data/index.js 8.8 kB 0 B
build/date/index.js 31.8 kB 0 B
build/deprecated/index.js 768 B 0 B
build/dom-ready/index.js 571 B 0 B
build/dom/index.js 4.93 kB 0 B
build/edit-navigation/style-rtl.css 938 B 0 B
build/edit-navigation/style.css 944 B 0 B
build/edit-post/style-rtl.css 6.53 kB 0 B
build/edit-post/style.css 6.52 kB 0 B
build/edit-site/style-rtl.css 4.04 kB 0 B
build/edit-site/style.css 4.04 kB 0 B
build/edit-widgets/style-rtl.css 3.2 kB 0 B
build/edit-widgets/style.css 3.2 kB 0 B
build/editor/editor-styles-rtl.css 543 B 0 B
build/editor/editor-styles.css 545 B 0 B
build/editor/style-rtl.css 3.89 kB 0 B
build/editor/style.css 3.89 kB 0 B
build/element/index.js 4.62 kB 0 B
build/escape-html/index.js 735 B 0 B
build/format-library/index.js 6.76 kB 0 B
build/format-library/style-rtl.css 637 B 0 B
build/format-library/style.css 639 B 0 B
build/hooks/index.js 2.27 kB 0 B
build/html-entities/index.js 623 B 0 B
build/i18n/index.js 3.74 kB 0 B
build/is-shallow-equal/index.js 699 B 0 B
build/keyboard-shortcuts/index.js 2.54 kB 0 B
build/keycodes/index.js 1.93 kB 0 B
build/list-reusable-blocks/index.js 3.15 kB 0 B
build/list-reusable-blocks/style-rtl.css 629 B 0 B
build/list-reusable-blocks/style.css 628 B 0 B
build/media-utils/index.js 5.33 kB 0 B
build/notices/index.js 1.85 kB 0 B
build/nux/index.js 3.41 kB 0 B
build/nux/style-rtl.css 731 B 0 B
build/nux/style.css 727 B 0 B
build/plugins/index.js 2.54 kB 0 B
build/primitives/index.js 1.42 kB 0 B
build/priority-queue/index.js 790 B 0 B
build/redux-routine/index.js 2.84 kB 0 B
build/reusable-blocks/index.js 2.92 kB 0 B
build/rich-text/index.js 13.4 kB 0 B
build/server-side-render/index.js 2.77 kB 0 B
build/token-list/index.js 1.27 kB 0 B
build/url/index.js 3.02 kB 0 B
build/viewport/index.js 1.86 kB 0 B
build/warning/index.js 1.14 kB 0 B
build/wordcount/index.js 1.22 kB 0 B

compressed-size-action

if ( brightness > 100 ) {
// Is 100 the right number?
const body = ownerDocument.getElementsByTagName( 'body' )[ 0 ];
// If we only remove it rather than adding it, then if themes don't declare support this will have no impact
Copy link
Contributor

Choose a reason for hiding this comment

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

That’s the only part that doesn’t sit all the way. I guess it would be a surprise to change, but it handling a “non dark mode theme with a dark background” I thought would be handy, and then adding that support wouldn't be necessary anywhere and could be depreciated.

Copy link
Contributor

Choose a reason for hiding this comment

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

Thoughts outlined below suggesting delay of removal of the support make sense to me.

@jasmussen
Copy link
Contributor

Fast work, impressive, and great PR.

The editor needs to show dark UI (borders, focus styles, placeholder text) on light backgrounds, and light UI on dark backgrounds. The support you refer to is a boolean true/false choice, either your theme is one or the other. And specifically, the property, add_theme_support( 'dark-editor-style' );, simply outputs the CSS class is-dark-theme on the root element of the editing canvas, if opted into.

If I understand this PR correctly, this PR adds the is-dark-theme class dynamically, depending on the background-color set. Is that right?

If so, excellent! It does open a few questions:

  • Will it correctly read background colors set by global styles?
  • Does it obsolete / render legacy, the add_theme_support( 'dark-editor-style' ); opt in, or does it complement it?
  • What if the theme sets the background color on the html element instead of the body element?

3 is perhaps a bridge to cross when we get to it. This is, after all, a rabbit hole.

But in principle, I'm a big fan of this, excited to land this.

@scruffian
Copy link
Contributor Author

Will it correctly read background colors set by global styles?

I believe it will yes

What if the theme sets the background color on the html element instead of the body element?

This won't work. We could detect both potentially.

this PR adds the is-dark-theme class dynamically, depending on the background-color set. Is that right?

No not quite...

Does it obsolete / render legacy, the add_theme_support( 'dark-editor-style' ); opt in, or does it complement it?

They work together. Declaring support for dark theme will add the class, and this will remove the class if it's already present and the background is actually light. That means this will only work in themes that declare support.

In some ways it makes more sense to do what @pbking suggests and add/remove the class based on the background, which means we don't need to declare theme support at all. This would be better for most people but there's more risk of causing issues with edge cases we didn't consider...

@jasmussen
Copy link
Contributor

This won't work. We could detect both potentially.

We can cross that bridge when we get there.

They work together. Declaring support for dark theme will add the class, and this will remove the class if it's already present and the background is actually light. That means this will only work in themes that declare support.

In some ways it makes more sense to do what pbking suggests and add/remove the class based on the background, which means we don't need to declare theme support at all. This would be better for most people but there's more risk of causing issues with edge cases we didn't consider...

Excellent, excellent thoughts. Since the support flag is already there, it seems to make a lot of sense to keep it for now and behave as you outline, and then we can remove it once it's been out there, tested a bit. What do you think?

@scruffian
Copy link
Contributor Author

Excellent, excellent thoughts. Since the support flag is already there, it seems to make a lot of sense to keep it for now and behave as you outline, and then we can remove it once it's been out there, tested a bit. What do you think?

I agree

Copy link
Contributor

@pbking pbking left a comment

Choose a reason for hiding this comment

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

Plays Golf and works.
Looks good to me.

Copy link
Contributor

@jasmussen jasmussen left a comment

Choose a reason for hiding this comment

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

Awesome work. Gave this a quick spin in my own theme, which by default has a white background and black text.

Added add_theme_support( 'dark-editor-style' ); to my functions.php, and this support flag is now repurposed to say "be aware that the theme can have a black background".

The new color detection correctly detected that the background was light:

Screenshot 2021-01-22 at 14 43 08

And when I then changed the colors, it correctly detected the background is dark:

Screenshot 2021-01-22 at 14 43 40

Detecting this simply applies the is-dark-theme body class:

Screenshot 2021-01-22 at 14 43 53

I even tried to be evil and feed it a background color of exactly mid-gray: rgb(127, 127, 127) — and found it interesting (but correct) to treat that as a dark theme:

Screenshot 2021-01-22 at 14 49 18

Let's try this, and be mindful of any reports. And let's remember to potentially follow up with a PR that deprecates the add_theme_support( 'dark-editor-style' ); at some point in the future, if this continues to work as well as it seems to.

@jasmussen
Copy link
Contributor

There was a failing test. I restarted to see if fortune favors us this time.

Copy link
Member

@aristath aristath left a comment

Choose a reason for hiding this comment

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

Amazing... Thank you! PR looks good to me. Tested and can confirm it works as expected 👍

@@ -173,6 +174,7 @@ function Layout( { styles } ) {

useDrop( ref );
useEditorStyles( ref, styles );
DarkEditorStyle( ref );
Copy link
Contributor

Choose a reason for hiding this comment

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

Using it here means it only applies to edit-post. Should we do the same in all the other pages edit-widgets edit-navigation and edit-site?

Copy link
Contributor

Choose a reason for hiding this comment

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

Probably edit-site, good catch. The other two, good question. @shaunandrews ?

Copy link
Contributor

Choose a reason for hiding this comment

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

Both the widgets and navigation editors are more abstract representations of content, and I don't think they'll need to support this.

useEffect( () => {
const { ownerDocument } = ref.current;
const editorStylesWrapper = ownerDocument.getElementsByClassName(
'editor-styles-wrapper'
Copy link
Contributor

Choose a reason for hiding this comment

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

I don't like that it assumes the existence of a className. That said this className is indeed the one responsible for applying editor styles, so these things might be good together a EditorStylesWrapper component maybe?

Copy link
Contributor

Choose a reason for hiding this comment

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

By looking at the code of the VisualEditor component and the number of hooks applied there, it seems that there's a clear node for some kind of reusable component for the block editor wrapper. But it something we can implement separately.

@youknowriad
Copy link
Contributor

@scruffian pushed a small refactor to use a callback ref, I didn't test properly with dark themes but the logic is the same I think.

@@ -57,13 +63,18 @@ export default function VisualEditor() {
useClipboardHandler( ref );
useTypingObserver( ref );
useCanvasClickRedirect( ref );
const darkEditorRef = useDarkEditorStyle();
const mergedRefs = useCallback( mergeRefs( [ ref, darkEditorRef ] ), [
Copy link
Contributor

Choose a reason for hiding this comment

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

I believe we might have a hook in the works to replace this with useMergeRefs. Is this ready yet @ellatrix ?

@@ -57,13 +63,18 @@ export default function VisualEditor() {
useClipboardHandler( ref );
useTypingObserver( ref );
useCanvasClickRedirect( ref );
Copy link
Contributor

Choose a reason for hiding this comment

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

It seems like there's a number of hooks above that can be reworked as hooks that return "refs" instead of receiving refs (outside the scope of this PR)

@aristath
Copy link
Member

I believe this is now ready to be merged once the tests pass?

@scruffian
Copy link
Contributor Author

I keep rebasing but the tests keep failing. Any idea why?

@aristath
Copy link
Member

I keep rebasing but the tests keep failing. Any idea why?

It doesn't look like the failing tests are related to this PR... 🤔
I restarted the failing test, sometimes they just fail for no apparent reason 🤷

@scruffian
Copy link
Contributor Author

I restarted the failing test

How?

@youknowriad
Copy link
Contributor

I'm not sure the failing test is unrelated. At least, in master it seems to pass? and we did touch the edit-widgets package.

@aristath
Copy link
Member

I'm not sure the failing test is unrelated. At least, in master it seems to pass? and we did touch the edit-widgets package.

Yep, turns out it must be caused by the PR. re-running the tests fails at the same tests so it's not a fluke.

How?

Clicking "details" next to the failing test brings up the failing test's details, and there's a "Re-run jobs" button on the top. I don't know if it only shows if you have certain permissions or not, but it's there for me.

@youknowriad
Copy link
Contributor

I'm going to fix this.

@scruffian
Copy link
Contributor Author

Thanks for fixing.

@scruffian scruffian merged commit 6119ad9 into master Jan 28, 2021
@scruffian scruffian deleted the update/dark-editor-style branch January 28, 2021 14:40
@github-actions github-actions bot added this to the Gutenberg 9.9 milestone Jan 28, 2021
nylen pushed a commit to nylen/wordpress-develop-svn that referenced this pull request Feb 2, 2021
…eader.

With the changes to dark theme support in WordPress/gutenberg#28233 to check the real background color of the theme, this no longer serves any purpose.

Follow-up to [44133].

Props scruffian, sabernhardt.
Fixes #52385.

git-svn-id: https://develop.svn.wordpress.org/trunk@50142 602fd350-edb4-49c9-b593-d223f7449a82
pento pushed a commit to WordPress/wordpress-develop that referenced this pull request Feb 2, 2021
…eader.

With the changes to dark theme support in WordPress/gutenberg#28233 to check the real background color of the theme, this no longer serves any purpose.

Follow-up to [44133].

Props scruffian, sabernhardt.
Fixes #52385.

git-svn-id: https://develop.svn.wordpress.org/trunk@50142 602fd350-edb4-49c9-b593-d223f7449a82
markjaquith pushed a commit to markjaquith/WordPress that referenced this pull request Feb 2, 2021
…eader.

With the changes to dark theme support in WordPress/gutenberg#28233 to check the real background color of the theme, this no longer serves any purpose.

Follow-up to [44133].

Props scruffian, sabernhardt.
Fixes #52385.
Built from https://develop.svn.wordpress.org/trunk@50142


git-svn-id: http://core.svn.wordpress.org/trunk@49821 1a063a9b-81f0-0310-95a4-ce76da25c4cd
gMagicScott pushed a commit to gMagicScott/core.wordpress-mirror that referenced this pull request Feb 2, 2021
…eader.

With the changes to dark theme support in WordPress/gutenberg#28233 to check the real background color of the theme, this no longer serves any purpose.

Follow-up to [44133].

Props scruffian, sabernhardt.
Fixes #52385.
Built from https://develop.svn.wordpress.org/trunk@50142


git-svn-id: https://core.svn.wordpress.org/trunk@49821 1a063a9b-81f0-0310-95a4-ce76da25c4cd
const mergedRefs = useCallback( mergeRefs( [ ref, editorStylesRef ] ), [
ref,
editorStylesRef,
] );
Copy link
Member

Choose a reason for hiding this comment

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

When does styles change? How can I trigger a change?

@youknowriad We discussed this a few times that adding dependencies here will give problems when passing new functions as a callback ref.

Copy link
Member

Choose a reason for hiding this comment

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

Ah I see your comment now #28233 (comment)
I'll rebase #27768 in a bit and see what is missing there.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Type] Enhancement A suggestion for improvement.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Improve editor UI on dark backgrounds
7 participants