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

Attribute Filter block: Enable global style #5557

Merged
merged 16 commits into from
Feb 2, 2022
Merged

Conversation

gigitux
Copy link
Contributor

@gigitux gigitux commented Jan 13, 2022

This PR is blocked by #5542

This PR adds support for global style for the Attribute Filter block.

Now, the user can edit the style for:

  • text-color
  • border (color and radius) on the input fields

Note

Unfortunately at the current stage, global style API doesn't support the customization of the inner element instead of block wrapper, so this PR contains a hacky CSS for accomplishing the goal

WordPress/gutenberg#33255
WordPress/gutenberg#32417

#4965

Screenshots

Mode: Display List

image
without global style

image
with global style

Mode: Dropdown List

image
without global style

image
with global style

Testing

Manual Testing

Check out this branch:

  1. Upgrade to WordPress 5.9.
  2. Install and enable the Twenty Twenty-Two theme.
  3. Add the Attribute Filter block to a post.
  4. On the right sidebar, personalize the styles of the block.
  5. Go on the page and check if there are changes.
  6. Reset to default using the Reset button from the different sections.
  7. Go to Dashboard and select Appearance > Editor (beta). On top of the screen, select Home > Browser all templates > Single Post. When the page is loaded, add the block to the page.
  8. On the Editor page click on the Styles icon on the right-top corner.
  9. Verify that the Attribute Filter block is shown under the Blocks section. Personalize again the block.
  10. Save your changes.
  11. Go on the page created earlier and check if all styles are applied correctly.
  12. Edit your previous post/page again.
  13. Change again the styles.
  14. Save your changes.
  15. Check if these styles have priority over the styles from the Site Editor.

Changelog

Add support for the global style for the Attribute Filter block.

@gigitux gigitux added type: enhancement The issue is a request for an enhancement. block: filter by attribute Issues related to the Filter by Attribute block. focus: global styles Issues that involve styles/css/layout structure. focus: FSE Work related to prepare WooCommerce for FSE. labels Jan 13, 2022
@gigitux gigitux self-assigned this Jan 13, 2022
@rubikuserbot rubikuserbot requested review from a team and sunyatasattva and removed request for a team January 13, 2022 09:28
@gigitux gigitux added the status: blocked The issue is blocked from progressing, waiting for another piece of work to be done. label Jan 13, 2022
@gigitux
Copy link
Contributor Author

gigitux commented Jan 13, 2022

Do you think it makes sense to add some comments about this hacky approach in the CSS? (maybe where I use !important)

@github-actions
Copy link
Contributor

github-actions bot commented Jan 13, 2022

Size Change: +1.45 kB (0%)

Total Size: 812 kB

Filename Size Change
build/active-filters-frontend.js 6.22 kB +9 B (0%)
build/active-filters.js 6.9 kB +2 B (0%)
build/all-products-frontend.js 18.6 kB -42 B (0%)
build/all-products.js 33.7 kB +7 B (0%)
build/all-reviews.js 8.08 kB +1 B (0%)
build/atomic-block-components/add-to-cart--atomic-block-components/button--atomic-block-components/image---a7e2bb9b.js 2.67 kB +1 B (0%)
build/atomic-block-components/add-to-cart--atomic-block-components/button.js 1.48 kB +1 B (0%)
build/atomic-block-components/add-to-cart-frontend.js 6.9 kB +5 B (0%)
build/atomic-block-components/add-to-cart.js 6.46 kB +2 B (0%)
build/atomic-block-components/button-frontend.js 1.48 kB -2 B (0%)
build/atomic-block-components/button.js 852 B -1 B (0%)
build/atomic-block-components/category-list.js 459 B +1 B (0%)
build/atomic-block-components/image.js 1.05 kB +2 B (0%)
build/atomic-block-components/price-frontend.js 1.74 kB -2 B (0%)
build/atomic-block-components/price.js 1.69 kB -3 B (0%)
build/atomic-block-components/sale-badge.js 622 B -1 B (0%)
build/atomic-block-components/sku.js 385 B -1 B (0%)
build/atomic-block-components/stock-indicator--atomic-block-components/summary--atomic-block-components/title.js 465 B +13 B (+3%)
build/atomic-block-components/stock-indicator-frontend.js 942 B +20 B (+2%)
build/atomic-block-components/stock-indicator.js 625 B +1 B (0%)
build/atomic-block-components/summary-frontend.js 1.24 kB +17 B (+1%)
build/atomic-block-components/summary.js 926 B +1 B (0%)
build/atomic-block-components/tag-list-frontend.js 458 B -1 B (0%)
build/atomic-block-components/title-frontend.js 1.21 kB +9 B (+1%)
build/atomic-block-components/title.js 934 B +2 B (0%)
build/attribute-filter-frontend.js 16.8 kB +433 B (+3%)
build/attribute-filter.js 13 kB +955 B (+8%) 🔍
build/cart-blocks/accepted-payment-methods-frontend.js 1.14 kB -1 B (0%)
build/cart-blocks/checkout-button-frontend.js 1.14 kB +1 B (0%)
build/cart-blocks/express-payment-frontend.js 5.18 kB -4 B (0%)
build/cart-blocks/filled-cart-frontend.js 767 B -1 B (0%)
build/cart-blocks/line-items-frontend.js 5.5 kB +3 B (0%)
build/cart-blocks/order-summary-frontend.js 8.95 kB +14 B (0%)
build/cart-frontend.js 45.5 kB -12 B (0%)
build/cart.js 43.7 kB -6 B (0%)
build/checkout-blocks/actions-frontend.js 1.39 kB +2 B (0%)
build/checkout-blocks/billing-address--checkout-blocks/shipping-address-frontend.js 4.23 kB +1 B (0%)
build/checkout-blocks/billing-address-frontend.js 887 B -1 B (0%)
build/checkout-blocks/contact-information-frontend.js 2.94 kB +3 B (0%)
build/checkout-blocks/express-payment-frontend.js 5.47 kB -3 B (0%)
build/checkout-blocks/order-note-frontend.js 1.13 kB +2 B (0%)
build/checkout-blocks/order-summary-frontend.js 11.4 kB +2 B (0%)
build/checkout-blocks/shipping-methods-frontend.js 4.93 kB -5 B (0%)
build/checkout-frontend.js 47.5 kB -12 B (0%)
build/checkout.js 45.2 kB -3 B (0%)
build/featured-category.js 8.51 kB -3 B (0%)
build/featured-product.js 9.62 kB -4 B (0%)
build/handpicked-products.js 7.09 kB -3 B (0%)
build/legacy-template.js 2.19 kB +1 B (0%)
build/mini-cart-component-frontend.js 14.2 kB -3 B (0%)
build/mini-cart-contents.js 3.82 kB -1 B (0%)
build/mini-cart-frontend.js 1.76 kB -1 B (0%)
build/mini-cart.js 6.39 kB -2 B (0%)
build/price-filter-frontend.js 12.6 kB -1 B (0%)
build/price-filter.js 8.48 kB +2 B (0%)
build/product-best-sellers.js 7.36 kB -4 B (0%)
build/product-categories.js 3.17 kB -4 B (0%)
build/product-category.js 8.49 kB -2 B (0%)
build/product-new.js 7.66 kB -3 B (0%)
build/product-on-sale.js 7.98 kB -3 B (0%)
build/product-search.js 2.18 kB -2 B (0%)
build/product-tag.js 7.81 kB -3 B (0%)
build/product-top-rated.js 7.9 kB -4 B (0%)
build/products-by-attribute.js 8.38 kB -2 B (0%)
build/reviews-by-product.js 12.6 kB +2 B (0%)
build/reviews-frontend.js 7.37 kB +9 B (0%)
build/single-product-frontend.js 22.1 kB +7 B (0%)
build/single-product.js 10 kB +3 B (0%)
build/stock-filter-frontend.js 6.83 kB +2 B (0%)
build/stock-filter.js 6.55 kB +2 B (0%)
build/vendors--atomic-block-components/add-to-cart--cart-blocks/order-summary--checkout-blocks/billing-ad--c5eb4dcd-frontend.js 19 kB -1 B (0%)
build/vendors--cart-blocks/order-summary--checkout-blocks/billing-address--checkout-blocks/order-summary---eb4d2cec-frontend.js 4.74 kB -1 B (0%)
build/wc-blocks-editor-style-rtl.css 4.79 kB +21 B (0%)
build/wc-blocks-editor-style.css 4.79 kB +22 B (0%)
build/wc-blocks-style-rtl.css 21.9 kB +11 B (0%)
build/wc-blocks-style.css 21.9 kB +11 B (0%)
build/wc-blocks-vendors.js 69.7 kB -3 B (0%)
build/wc-blocks.js 2.62 kB -1 B (0%)
ℹ️ View Unchanged
Filename Size
build/atomic-block-components/add-to-cart--atomic-block-components/button--atomic-block-components/image---8f355022.js 238 B
build/atomic-block-components/category-list-frontend.js 458 B
build/atomic-block-components/image-frontend.js 1.37 kB
build/atomic-block-components/rating-frontend.js 698 B
build/atomic-block-components/rating.js 700 B
build/atomic-block-components/sale-badge-frontend.js 624 B
build/atomic-block-components/sku-frontend.js 386 B
build/atomic-block-components/tag-list.js 459 B
build/blocks-checkout.js 17.6 kB
build/cart-blocks/empty-cart-frontend.js 345 B
build/cart-blocks/items-frontend.js 298 B
build/cart-blocks/totals-frontend.js 321 B
build/checkout-blocks/fields-frontend.js 343 B
build/checkout-blocks/payment-frontend.js 7.72 kB
build/checkout-blocks/shipping-address-frontend.js 974 B
build/checkout-blocks/terms-frontend.js 1.22 kB
build/checkout-blocks/totals-frontend.js 323 B
build/price-format.js 1.18 kB
build/reviews-by-category.js 11.5 kB
build/vendors--atomic-block-components/add-to-cart-frontend.js 7.51 kB
build/vendors--atomic-block-components/price--cart-blocks/line-items--cart-blocks/order-summary--checkout--8a3571de-frontend.js 5.71 kB
build/vendors--cart-blocks/line-items--checkout-blocks/order-summary-frontend.js 3.14 kB
build/wc-blocks-data.js 8.84 kB
build/wc-blocks-google-analytics.js 1.56 kB
build/wc-blocks-middleware.js 949 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-vendors-style-rtl.css 1.28 kB
build/wc-blocks-vendors-style.css 1.28 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.61 kB

compressed-size-action

@gigitux gigitux mentioned this pull request Jan 13, 2022
18 tasks
Copy link
Contributor

@sunyatasattva sunyatasattva left a comment

Choose a reason for hiding this comment

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

Yes please do leave some comments about the hacky solution. Every time I see an !important it'd be good to have the context on why it was added. 🙏

@@ -23,6 +23,7 @@ import './style.scss';
* @param {Object} props Incoming props for the component.
* @param {string} props.attributeLabel Label for the attributes.
* @param {string} props.className CSS class used.
* @param {Object} props.style CSS style object used.
Copy link
Contributor

Choose a reason for hiding this comment

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

What about using CSSProperties?

onChange: setOverlayColor,
label: __(
'Overlay Color',
{ !! url && (
Copy link
Contributor

Choose a reason for hiding this comment

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

I understand you want to cast this as a boolean, but I have to say I've always found the !! confusing and I'm not sure there is any clearer advantage to just having url &&. What are your thoughts?

Copy link
Contributor Author

@gigitux gigitux Jan 21, 2022

Choose a reason for hiding this comment

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

I just moved this code, I didn't edit it. I agree with you that it is not very clear this cast! I will change it!

*/
import Block from './block';

export const Edit = ( props: unknown ): JSX.Element => {
Copy link
Contributor

Choose a reason for hiding this comment

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

I haven't worked with blocks much, so forgive me for asking: isn't there a way to know this type at all?

Copy link
Contributor Author

@gigitux gigitux Jan 21, 2022

Choose a reason for hiding this comment

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

I haven't worked with blocks much, so forgive me for asking: isn't there a way to know this type at all?

Yes, we can try to type it, but without the right typeguards, there is the risk that the code will be less safe than now.


/**
* Block content is rendered in PHP, not via save function.
*/
save() {
save: () => {
Copy link
Contributor

Choose a reason for hiding this comment

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

Why was this changed? Was this automatically done by Prettier? I find 13 instances of save() { but only this one of save: () =>, so perhaps the former is more in line with the repo conventions?

@gigitux gigitux requested a review from sunyatasattva February 2, 2022 16:55
@gigitux gigitux removed the status: blocked The issue is blocked from progressing, waiting for another piece of work to be done. label Feb 2, 2022
Copy link
Contributor

@sunyatasattva sunyatasattva left a comment

Choose a reason for hiding this comment

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

Thanks for adding the comments!

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
block: filter by attribute Issues related to the Filter by Attribute block. focus: FSE Work related to prepare WooCommerce for FSE. focus: global styles Issues that involve styles/css/layout structure. type: enhancement The issue is a request for an enhancement.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants