Skip to content
This repository has been archived by the owner on Feb 23, 2024. It is now read-only.

Fix select inputs when dark mode is enabled in Twenty Twenty-One #3554

Merged
merged 2 commits into from Dec 16, 2020

Conversation

opr
Copy link
Contributor

@opr opr commented Dec 15, 2020

Description

This PR adds a new rule to assets/js/base/components/select/style.scss for when the class is-dark-theme exists (it is put on the body by Twenty Twenty-One theme).

This PR is required because without it, when the theme is set to dark mode (irrespective of the browser/OS dark mode preference) the text in the select is barely visible.

Fixes #3518

Accessibility

Screenshots

Before

imatge

After when block has dark mode inputs enabled

Screenshot 2020-12-15 at 18 37 09

After when block doesn't have dark mode inputs enabled.

Screenshot 2020-12-15 at 18 37 09

How to test the changes in this Pull Request:

  1. Install and activate Twenty Twenty One.
  2. Go to Customize > Colors & Dark mode and check the Dark mode support checkbox.
  3. npm run build.
  4. Add a checkout block to a page, ensure items are in your basket.
  5. Visit the page, enable dark mode (bottom right of screen), and open the country dropdown.
  6. Ensure text is readable.
  7. Change checkout block settings to enable dark mode inputs.
  8. Check again and ensure the colour of the text has changed to white on black and that it is is still readable.

Changelog

Fixed text visibility in select inputs when using Twenty Twenty-One theme's dark mode.

This is required because the theme may be set to dark mode independently of the browser. The reason we need two rules for this is because the checkout block can be set to have dark mode inputs too, so this rule doesn't need to apply then.
@opr opr added status: needs review type: bug The issue/PR concerns a confirmed bug. focus: accessibility The issue/PR is related to accessibility. focus: components Work that introduces new or updates existing components. block: checkout Issues related to the checkout block. focus: global styles Issues that involve styles/css/layout structure. labels Dec 15, 2020
@opr opr added this to the 4.1.0 milestone Dec 15, 2020
@opr opr self-assigned this Dec 15, 2020
@opr opr requested a review from a team as a code owner December 15, 2020 18:43
@opr opr requested review from mikejolley and removed request for a team December 15, 2020 18:43
@github-actions
Copy link
Contributor

github-actions bot commented Dec 15, 2020

Size Change: +50 B (0%)

Total Size: 1.16 MB

Filename Size Change
build/style-rtl.css 18.5 kB +25 B (0%)
build/style.css 18.4 kB +25 B (0%)
ℹ️ View Unchanged
Filename Size Change
build/active-filters-frontend.js 8.74 kB 0 B
build/active-filters.js 8.94 kB 0 B
build/all-products-frontend.js 34.7 kB 0 B
build/all-products.js 36.2 kB 0 B
build/all-reviews.js 9.77 kB 0 B
build/atomic-block-components/add-to-cart--atomic-block-components/button.js 3.3 kB 0 B
build/atomic-block-components/add-to-cart--atomic-block-components/image--atomic-block-components/title.js 334 B 0 B
build/atomic-block-components/add-to-cart-frontend.js 9.02 kB 0 B
build/atomic-block-components/add-to-cart.js 7.53 kB 0 B
build/atomic-block-components/button-frontend.js 2.31 kB 0 B
build/atomic-block-components/button.js 839 B 0 B
build/atomic-block-components/category-list-frontend.js 471 B 0 B
build/atomic-block-components/category-list.js 475 B 0 B
build/atomic-block-components/image-frontend.js 1.68 kB 0 B
build/atomic-block-components/image.js 1.13 kB 0 B
build/atomic-block-components/price-frontend.js 2.29 kB 0 B
build/atomic-block-components/price.js 2.31 kB 0 B
build/atomic-block-components/rating-frontend.js 524 B 0 B
build/atomic-block-components/rating.js 530 B 0 B
build/atomic-block-components/sale-badge-frontend.js 859 B 0 B
build/atomic-block-components/sale-badge.js 863 B 0 B
build/atomic-block-components/sku-frontend.js 389 B 0 B
build/atomic-block-components/sku.js 394 B 0 B
build/atomic-block-components/stock-indicator-frontend.js 568 B 0 B
build/atomic-block-components/stock-indicator.js 572 B 0 B
build/atomic-block-components/summary-frontend.js 916 B 0 B
build/atomic-block-components/summary.js 925 B 0 B
build/atomic-block-components/tag-list-frontend.js 465 B 0 B
build/atomic-block-components/tag-list.js 471 B 0 B
build/atomic-block-components/title-frontend.js 1.21 kB 0 B
build/atomic-block-components/title.js 1.05 kB 0 B
build/attribute-filter-frontend.js 18.1 kB 0 B
build/attribute-filter.js 12.5 kB 0 B
build/blocks.js 3.49 kB 0 B
build/cart-frontend.js 77.1 kB 0 B
build/cart.js 40.7 kB 0 B
build/checkout-frontend.js 92.3 kB 0 B
build/checkout.js 43 kB 0 B
build/editor-rtl.css 14.6 kB 0 B
build/editor.css 14.6 kB 0 B
build/featured-category.js 7.76 kB 0 B
build/featured-product.js 9.98 kB 0 B
build/handpicked-products.js 7.38 kB 0 B
build/price-filter-frontend.js 14.9 kB 0 B
build/price-filter.js 10.4 kB 0 B
build/product-best-sellers.js 7.46 kB 0 B
build/product-categories.js 3.23 kB 0 B
build/product-category.js 8.4 kB 0 B
build/product-new.js 7.63 kB 0 B
build/product-on-sale.js 8.02 kB 0 B
build/product-search.js 3.55 kB 0 B
build/product-tag.js 6.57 kB 0 B
build/product-top-rated.js 7.6 kB 0 B
build/products-by-attribute.js 8.37 kB 0 B
build/reviews-by-category.js 11.8 kB 0 B
build/reviews-by-product.js 13.4 kB 0 B
build/reviews-frontend.js 9.38 kB 0 B
build/single-product-frontend.js 37.7 kB 0 B
build/single-product.js 10.1 kB 0 B
build/vendors--atomic-block-components/price-frontend.js 5.65 kB 0 B
build/vendors-style-rtl.css 1.05 kB 0 B
build/vendors-style.css 1.05 kB 0 B
build/vendors.js 434 kB 0 B
build/wc-blocks-data.js 6.89 kB 0 B
build/wc-blocks-middleware.js 931 B 0 B
build/wc-blocks-registry.js 2.39 kB 0 B
build/wc-payment-method-bacs.js 775 B 0 B
build/wc-payment-method-cheque.js 771 B 0 B
build/wc-payment-method-cod.js 866 B 0 B
build/wc-payment-method-paypal.js 813 B 0 B
build/wc-payment-method-stripe.js 12.1 kB 0 B
build/wc-settings.js 2.6 kB 0 B
build/wc-shared-context.js 1.53 kB 0 B
build/wc-shared-hocs.js 1.66 kB 0 B

compressed-size-action

@@ -118,3 +118,18 @@
display: none;
}
}

// This class is set on the body by Twenty Twenty-One when dark mode is active.
.is-dark-theme {
Copy link
Contributor

Choose a reason for hiding this comment

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

I didn't do a full-review, but just a quick note: when writing styles for a specific theme, we usually wrap them in a class, like so: .theme-twentytwentyone { ... }. You can take the CheckboxControl styles as a reference. 🙂

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Thanks for pointing that out, I've updated the pull with this change now.

Copy link
Member

@mikejolley mikejolley left a comment

Choose a reason for hiding this comment

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

Tests well, :shipit:

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
block: checkout Issues related to the checkout block. focus: accessibility The issue/PR is related to accessibility. focus: components Work that introduces new or updates existing components. focus: global styles Issues that involve styles/css/layout structure. type: bug The issue/PR concerns a confirmed bug.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Twenty Twenty One: selects are barely visible in dark mode
3 participants