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

Conversation

@danielwrobert
Copy link
Contributor

@danielwrobert danielwrobert commented Aug 27, 2022

The __experimentalDuotone property in the block's Supports attribute (block.json) was preventing the Global Styles from being applied in the Editor. Removing the property remedies the issue.

This also adds a Schema property to improve development in supported editors. See this support doc for additional details.

Fixes #6988

Screenshots

Before After
CleanShot 2022-08-26 at 21 44 23 CleanShot 2022-08-26 at 21 36 42

Testing

  1. Install a block theme (e.g., Twenty Twenty Two).
  2. Open Appearance > Editor (beta).
  3. Add a Featured Product and a Featured Category block.
  4. Customize the global styles for those blocks (click on the Styles button on the top toolbar and then the Blocks section towards the bottom - see screenshots below).
  5. Add some style adjustments and confirm they are reflected in the editor.
  6. Save your changes and view a page driven by the modified Template on the front-end.
  7. Confirm the adjusted styles are rendered to the front-end, as expected.
Global Styles Panel Blocks Settings
CleanShot 2022-08-26 at 22 05 58 CleanShot 2022-08-26 at 22 03 00

Note: the text color settings for this block are driven by inline styles that are added based on the Overlay and Color setting defaults. I imagine we want to keep those defaults in place so. To adjust this in the Editor, edit/remove those default settings on the block directly.

  • Do not include in the Testing Notes

WooCommerce Visibility

  • WooCommerce Core
  • Feature plugin
  • Experimental

Changelog

Update - remove __experimentalDuotone from Featured Product and Featured Category blocks.

@danielwrobert danielwrobert added block: featured category Issues related to the Featured Category block, block: featured product Issues related to the Featured Product block. labels Aug 27, 2022
@danielwrobert danielwrobert self-assigned this Aug 27, 2022
@danielwrobert danielwrobert force-pushed the fix/global-styles-featured-product-category-blocks branch from ba3d470 to 30e2933 Compare August 27, 2022 02:11
@github-actions
Copy link
Contributor

The release ZIP for this PR is accessible via:

https://wcblocks.wpcomstaging.com/wp-content/uploads/woocommerce-gutenberg-products-block-7000.zip

@github-actions
Copy link
Contributor

github-actions bot commented Aug 27, 2022

Size Change: +26 B (0%)

Total Size: 871 kB

Filename Size Change
build/featured-category.js 13.2 kB +13 B (0%)
build/featured-product.js 13.5 kB +13 B (0%)
ℹ️ View Unchanged
Filename Size
build/active-filters-frontend.js 7.34 kB
build/active-filters.js 8.01 kB
build/all-products-frontend.js 18.1 kB
build/all-products.js 33.7 kB
build/all-reviews.js 7.79 kB
build/attribute-filter-frontend.js 22.1 kB
build/attribute-filter.js 13.1 kB
build/blocks-checkout.js 17.4 kB
build/cart-blocks/cart-accepted-payment-methods-frontend.js 1.16 kB
build/cart-blocks/cart-express-payment-frontend.js 5.09 kB
build/cart-blocks/cart-items-frontend.js 299 B
build/cart-blocks/cart-line-items--mini-cart-contents-block/products-table-frontend.js 5.25 kB
build/cart-blocks/cart-line-items-frontend.js 429 B
build/cart-blocks/cart-order-summary-frontend.js 1.1 kB
build/cart-blocks/cart-totals-frontend.js 321 B
build/cart-blocks/empty-cart-frontend.js 346 B
build/cart-blocks/filled-cart-frontend.js 781 B
build/cart-blocks/order-summary-coupon-form-frontend.js 2.65 kB
build/cart-blocks/order-summary-discount-frontend.js 2.15 kB
build/cart-blocks/order-summary-fee-frontend.js 274 B
build/cart-blocks/order-summary-heading-frontend.js 454 B
build/cart-blocks/order-summary-shipping--checkout-blocks/order-summary-shipping-frontend.js 6.37 kB
build/cart-blocks/order-summary-shipping-frontend.js 426 B
build/cart-blocks/order-summary-subtotal-frontend.js 274 B
build/cart-blocks/order-summary-taxes-frontend.js 434 B
build/cart-blocks/proceed-to-checkout-frontend.js 1.15 kB
build/cart-frontend.js 47.1 kB
build/cart.js 41.8 kB
build/checkout-blocks/actions-frontend.js 1.42 kB
build/checkout-blocks/billing-address--checkout-blocks/shipping-address-frontend.js 4.12 kB
build/checkout-blocks/billing-address-frontend.js 891 B
build/checkout-blocks/contact-information-frontend.js 2.83 kB
build/checkout-blocks/express-payment-frontend.js 5.38 kB
build/checkout-blocks/fields-frontend.js 345 B
build/checkout-blocks/order-note-frontend.js 1.07 kB
build/checkout-blocks/order-summary-cart-items-frontend.js 3.64 kB
build/checkout-blocks/order-summary-coupon-form-frontend.js 2.8 kB
build/checkout-blocks/order-summary-discount-frontend.js 2.26 kB
build/checkout-blocks/order-summary-fee-frontend.js 276 B
build/checkout-blocks/order-summary-frontend.js 1.11 kB
build/checkout-blocks/order-summary-shipping-frontend.js 604 B
build/checkout-blocks/order-summary-subtotal-frontend.js 274 B
build/checkout-blocks/order-summary-taxes-frontend.js 434 B
build/checkout-blocks/payment-frontend.js 7.7 kB
build/checkout-blocks/shipping-address-frontend.js 1.03 kB
build/checkout-blocks/shipping-methods-frontend.js 4.75 kB
build/checkout-blocks/terms-frontend.js 1.23 kB
build/checkout-blocks/totals-frontend.js 325 B
build/checkout-frontend.js 49.3 kB
build/checkout.js 43.2 kB
build/general-style-rtl.css 1.29 kB
build/general-style.css 1.29 kB
build/handpicked-products.js 7.37 kB
build/legacy-template.js 2.79 kB
build/mini-cart-component-frontend.js 16.8 kB
build/mini-cart-contents-block/empty-cart-frontend.js 365 B
build/mini-cart-contents-block/filled-cart-frontend.js 229 B
build/mini-cart-contents-block/footer--mini-cart-contents-block/products-table-frontend.js 4.69 kB
build/mini-cart-contents-block/footer-frontend.js 6.98 kB
build/mini-cart-contents-block/items-frontend.js 237 B
build/mini-cart-contents-block/products-table-frontend.js 289 B
build/mini-cart-contents-block/shopping-button-frontend.js 288 B
build/mini-cart-contents-block/title-frontend.js 367 B
build/mini-cart-contents.js 22.9 kB
build/mini-cart-frontend.js 1.71 kB
build/mini-cart.js 4.58 kB
build/price-filter-frontend.js 13.3 kB
build/price-filter.js 9.17 kB
build/price-format.js 1.19 kB
build/product-add-to-cart--product-button--product-category-list--product-image--product-price--product-r--a0326d00.js 223 B
build/product-add-to-cart--product-button--product-image--product-title.js 2.65 kB
build/product-add-to-cart-frontend.js 6.95 kB
build/product-add-to-cart.js 6.88 kB
build/product-best-sellers.js 7.71 kB
build/product-button--product-category-list--product-image--product-price--product-rating--product-sale-b--e17c7c01.js 436 B
build/product-button--product-image--product-rating--product-sale-badge--product-title.js 300 B
build/product-button-frontend.js 1.88 kB
build/product-button.js 1.57 kB
build/product-categories.js 2.41 kB
build/product-category-list-frontend.js 879 B
build/product-category-list.js 504 B
build/product-category.js 8.69 kB
build/product-image-frontend.js 1.89 kB
build/product-image.js 1.59 kB
build/product-new.js 7.72 kB
build/product-on-sale.js 8.03 kB
build/product-price-frontend.js 1.9 kB
build/product-price.js 1.51 kB
build/product-query.js 648 B
build/product-rating-frontend.js 1.16 kB
build/product-rating.js 742 B
build/product-sale-badge-frontend.js 1.13 kB
build/product-sale-badge.js 802 B
build/product-search.js 2.65 kB
build/product-sku-frontend.js 381 B
build/product-sku.js 379 B
build/product-stock-indicator-frontend.js 993 B
build/product-stock-indicator.js 624 B
build/product-summary-frontend.js 1.29 kB
build/product-summary.js 918 B
build/product-tag-list-frontend.js 872 B
build/product-tag-list.js 498 B
build/product-tag.js 8.09 kB
build/product-title-frontend.js 1.31 kB
build/product-title.js 923 B
build/product-top-rated.js 7.95 kB
build/products-by-attribute.js 8.63 kB
build/reviews-by-category.js 11.2 kB
build/reviews-by-product.js 12.3 kB
build/reviews-frontend.js 7.01 kB
build/single-product-frontend.js 21.4 kB
build/single-product.js 10.1 kB
build/stock-filter-frontend.js 7.5 kB
build/stock-filter.js 7.45 kB
build/vendors--cart-blocks/cart-line-items--cart-blocks/cart-order-summary--cart-blocks/order-summary-shi--c02aad66-frontend.js 5.26 kB
build/vendors--cart-blocks/cart-line-items--checkout-blocks/order-summary-cart-items--mini-cart-contents---233ab542-frontend.js 3.14 kB
build/vendors--cart-blocks/order-summary-shipping--checkout-blocks/billing-address--checkout-blocks/order--5b8feb0b-frontend.js 4.85 kB
build/vendors--cart-blocks/order-summary-shipping--checkout-blocks/billing-address--checkout-blocks/order--decc3dc6-frontend.js 19.1 kB
build/vendors--mini-cart-contents-block/footer-frontend.js 6.86 kB
build/vendors--product-add-to-cart-frontend.js 7.53 kB
build/wc-blocks-data.js 9.87 kB
build/wc-blocks-editor-style-rtl.css 5.1 kB
build/wc-blocks-editor-style.css 5.1 kB
build/wc-blocks-google-analytics.js 1.56 kB
build/wc-blocks-middleware.js 930 B
build/wc-blocks-registry.js 2.7 kB
build/wc-blocks-shared-context.js 1.52 kB
build/wc-blocks-shared-hocs.js 1.14 kB
build/wc-blocks-style-rtl.css 22.9 kB
build/wc-blocks-style.css 22.8 kB
build/wc-blocks-vendors-style-rtl.css 1.95 kB
build/wc-blocks-vendors-style.css 1.95 kB
build/wc-blocks-vendors.js 54.5 kB
build/wc-blocks.js 2.63 kB
build/wc-payment-method-bacs.js 816 B
build/wc-payment-method-cheque.js 811 B
build/wc-payment-method-cod.js 909 B
build/wc-payment-method-paypal.js 837 B
build/wc-settings.js 2.6 kB

compressed-size-action

@danielwrobert danielwrobert marked this pull request as ready for review August 27, 2022 03:33
@rubikuserbot rubikuserbot requested review from a team and dinhtungdu and removed request for a team August 27, 2022 03:33
The __experimentalDuotone Supports property in the block.json files were
preventing the Global Styles from being applied in the Editor.

Removing them remedies the issue.

This also adds a Schema property to improve development in supported
editors. See
https://developer.wordpress.org/block-editor/reference-guides/block-api/block-metadata/#benefits-using-the-metadata-file.
@danielwrobert danielwrobert force-pushed the fix/global-styles-featured-product-category-blocks branch from 30e2933 to e45fe32 Compare August 29, 2022 21:51
Copy link
Member

@dinhtungdu dinhtungdu left a comment

Choose a reason for hiding this comment

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

Follow the testing steps and I can confirm the Global style work. Just want to note that the Global style for the Featured Category block works with trunk if Gutenberg is activated, so I have to test without Gutenberg.

Note: the text color settings for this block are driven by inline styles that are added based on the Overlay and Color setting defaults. I imagine we want to keep those defaults in place so. To adjust this in the Editor, edit/remove those default settings on the block directly.

I'm wondering if we can use inherit for text so we don't need to use the inline style?

We're removing duotone entirely. Is that expected? If not, we can conditionally add duotone support in the index.tsx file to keep the duotone for beta users (sites with WP Core beta or Gutenberg plugin activated).

@danielwrobert
Copy link
Contributor Author

danielwrobert commented Aug 30, 2022

I’m wondering if we can use inherit for text so we don’t need to use the inline style?

@dinhtungdu I think setting it to inherit would give it a dark text in most cases, which would not be readable against the default background overlay.

That seems to be the reason the inline style was implemented here to begin with - to ensure the white text over the overlay, as some theme styles (i.e., Storefront) were potentially interfering.

Those defaults are taking precedence over the styles from the Site Editor - if we removed the defaults (either in the settings or on the block in the admin) the site Editor styles would be applied.

There’s a bit of a tradeoff here - we either ensure that the active theme doesn’t override the default block styles or we have closer to the behavior we’d expect in the Site Editor.

I would maybe lean towards reverting/removing the inline style and leaving it up to the theme to make sure it’s not overriding the blocks. In the case of Storefront, this only occurs in the editor but renders properly on the frontend.

We could also add a style in the editor stylesheet for these blocks to slightly increase specificity there (.editor-styles-wrapper .wp-block-woocommerce-featured-product, for example). But that can only go so far until you end up with selectors that are more specific than the Site Editor and in the same position we’re in with the inline styles.

In either case, I would expect the settings on the block to override the settings coming from the Site Editor or any defaults, which is what happens.

cc @sunyatasattva

@danielwrobert
Copy link
Contributor Author

danielwrobert commented Aug 30, 2022

We’re removing duotone entirely. Is that expected?

@dinhtungdu yes, that was the idea. I do think some additional discussion is needed here before concluding/merging, however.

I noted this on the corresponding issue but I should have reflected more clearly here as well.

Just want to note that the Global style for the Featured Category block works with trunk if Gutenberg is activated, so I have to test without Gutenberg.

Great point! If I’m understanding properly, however, I’m seeing the opposite. I get the following:

  • The Global Styles do not work at all for the Featured Items blocks (in the Editor or the frontend) on trunk with the latest version of the Gutenberg feature plugin activated.
  • On this branch, with the latest version of Gutenberg active, the Global Styles are working in the admin but not rendering to the frontend. This is also the same behavior on our other blocks, as reported here (see screenshots below).

Mini Cart:

Editor Frontend
CleanShot 2022-08-30 at 15 36 47 CleanShot 2022-08-30 at 15 37 07

Filter Blocks:

Editor Frontend
CleanShot 2022-08-30 at 15 38 36 CleanShot 2022-08-30 at 15 38 46

So that all being said, I still lean towards removing duotone entirely.

These are the only blocks currently using the feature and, since duotone is experimental and not present in WC Core, removing it won’t have an impact on anything that’s been released and it will resolve the issue with the WC Blocks feature plugin.

This brings us back to the original Issue reported by @gigitux. With the latest version of Gutenberg active, the problem still seems to be present. We may want to reopen this.

As noted in my findings here, it does not seem to be related to the block class name. Adjusting the target classname via __experimentalSelector does not appear to solve the issue.

I’d love to hear your thoughts on the above!

Cc @Aljullu

@dinhtungdu
Copy link
Member

Tested trunk one more time and I found very strange behavior:

  • Without Gutenberg, the global style doesn't work in the Site Editor but works on the front end.
  • With Gutenberg, the global style works in the Site Editor but doesn't work on the front end.

Also, it's not very clear to me why __experimentalDuotone cause the issue, can you show me the logic/lines of code that causes the issue?

@dinhtungdu
Copy link
Member

Also, it's not very clear to me why __experimentalDuotone cause the issue

@danielwrobert, as you already mentioned in #6988 (comment), __experimentalDuotone change the HTML structure for the block in the editor. So I think the best take here is to remove the duotone support, but we should create an issue to explore why it affect the block markup structure and how to make it work with our block. The wc-block-featured-category class should always be in the same div with wp-block-woocommerce-featured-category IMO, both in the editor and on the front end.

Copy link
Member

@dinhtungdu dinhtungdu left a comment

Choose a reason for hiding this comment

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

As discussed on the call. I approve this PR for now so we can have the global style working again. Let's address the issue pointed out in this PR and the connected issue in follow-up issues! Thank you so much @danielwrobert for working on this tricky issue!

@danielwrobert
Copy link
Contributor Author

Thanks, @dinhtungdu!

As discussed on our chat, the next steps from here are to investigate / report on the following things:

  1. Why isn't __experimentalDuotone working, as expected? We'll likely need to open an issue on the Gutenberg repo.
  2. Why aren’t styles being applied to our blocks on latest Gutenberg? We may want to reopen the original issue reported here. This also seems to be an issue on the GB side - for example, the issue is present with Jetpack blocks as well. See Slack thread for additional context/details (p1661951466771189-slack-C02SGH7JBGS).
  3. Normalize the way we apply class names to blocks, if possible / necessary.
  4. Address the color issues on Featured block that were mentioned above - i.e., should we be solve problems in Themes that should be handled in Themes?

Also see comments on #6988 for additional testing details.

@danielwrobert danielwrobert merged commit 5a9a253 into trunk Aug 31, 2022
@danielwrobert danielwrobert deleted the fix/global-styles-featured-product-category-blocks branch August 31, 2022 17:03
@gigitux gigitux added the type: bug The issue/PR concerns a confirmed bug. label Sep 12, 2022
senadir pushed a commit to senadir/woocommerce-blocks that referenced this pull request Nov 12, 2022
The __experimentalDuotone Supports property in the block.json files were
preventing the Global Styles from being applied in the Editor.

Removing them remedies the issue.

This also adds a Schema property to improve development in supported
editors. See
https://developer.wordpress.org/block-editor/reference-guides/block-api/block-metadata/#benefits-using-the-metadata-file.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

block: featured category Issues related to the Featured Category block, block: featured product Issues related to the Featured Product block. type: bug The issue/PR concerns a confirmed bug.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Global styles don't work in the Featured Product and Featured Category blocks

4 participants