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

Add global style for Active Filters block #5465

Merged
merged 5 commits into from
Jan 3, 2022
Merged

Conversation

gigitux
Copy link
Contributor

@gigitux gigitux commented Dec 28, 2021

This is a part of #4965.

This PR:

  • Adds text color support

image
editor side

image
frontend side

Testing

Manual Testing

How to test the changes in this PR:

Check out this branch:

  1. Install and enable the Gutenberg plugin.
  2. Install and enable the TT1 Blocks theme.
  3. Add the Active Product Filters block block to a post. (you need to add a block like Filters Product By Attribute)
  4. Go to Color section & verify you can change the text color.
  5. Save your changes.
  6. Go on the page and check if there are changes.
  7. Reset to default using the Clear button from Styles > Text color window.
  8. Go to Dashboard and select Appearance > Editor (beta).
  9. On the Editor page click on the Styles icon on the right-top corner.
  10. Verify that the Active Product Filters block is shown Under the Blocks section .
  11. Save your changes.
  12. Go on the page created earlier and check if all styles are applied correctly.
  13. Edit your previous post/page again.
  14. Change again the text color.
  15. Save your changes.
  16. Check if these styles have priority over the styles from the Site Editor.

Changelog

Added global styles (text color) to the Active Filters block.

@gigitux gigitux added block: active filters Issues related to the Active Filters block. focus: global styles Issues that involve styles/css/layout structure. focus: FSE Work related to prepare WooCommerce for FSE. labels Dec 28, 2021
@gigitux gigitux self-assigned this Dec 28, 2021
@rubikuserbot rubikuserbot requested review from a team and Aljullu and removed request for a team December 28, 2021 16:35
@gigitux gigitux mentioned this pull request Dec 28, 2021
18 tasks
@github-actions
Copy link
Contributor

github-actions bot commented Dec 28, 2021

Size Change: +50 B (0%)

Total Size: 819 kB

Filename Size Change
build/active-filters.js 7.1 kB +50 B (+1%)
ℹ️ View Unchanged
Filename Size
build/active-filters-frontend.js 6.21 kB
build/all-products-frontend.js 18.6 kB
build/all-products.js 34.4 kB
build/all-reviews.js 8.35 kB
build/atomic-block-components/add-to-cart--atomic-block-components/button--atomic-block-components/image---a7e2bb9b.js 2.76 kB
build/atomic-block-components/add-to-cart--atomic-block-components/button.js 1.48 kB
build/atomic-block-components/add-to-cart-frontend.js 6.87 kB
build/atomic-block-components/add-to-cart.js 6.43 kB
build/atomic-block-components/button-frontend.js 1.48 kB
build/atomic-block-components/button.js 851 B
build/atomic-block-components/category-list-frontend.js 458 B
build/atomic-block-components/category-list.js 458 B
build/atomic-block-components/image-frontend.js 1.37 kB
build/atomic-block-components/image.js 1.05 kB
build/atomic-block-components/price-frontend.js 1.74 kB
build/atomic-block-components/price.js 1.7 kB
build/atomic-block-components/rating-frontend.js 553 B
build/atomic-block-components/rating.js 554 B
build/atomic-block-components/sale-badge-frontend.js 625 B
build/atomic-block-components/sale-badge.js 622 B
build/atomic-block-components/sku-frontend.js 386 B
build/atomic-block-components/sku.js 385 B
build/atomic-block-components/stock-indicator-frontend.js 585 B
build/atomic-block-components/stock-indicator.js 585 B
build/atomic-block-components/summary-frontend.js 874 B
build/atomic-block-components/summary.js 871 B
build/atomic-block-components/tag-list-frontend.js 460 B
build/atomic-block-components/tag-list.js 458 B
build/atomic-block-components/title-frontend.js 1.11 kB
build/atomic-block-components/title.js 1.1 kB
build/attribute-filter-frontend.js 16.3 kB
build/attribute-filter.js 12.7 kB
build/blocks-checkout.js 17.6 kB
build/cart-blocks/accepted-payment-methods-frontend.js 1.15 kB
build/cart-blocks/checkout-button-frontend.js 1.14 kB
build/cart-blocks/empty-cart-frontend.js 345 B
build/cart-blocks/express-payment-frontend.js 4.86 kB
build/cart-blocks/filled-cart-frontend.js 766 B
build/cart-blocks/items-frontend.js 298 B
build/cart-blocks/line-items-frontend.js 5.32 kB
build/cart-blocks/order-summary-frontend.js 8.98 kB
build/cart-blocks/totals-frontend.js 320 B
build/cart-frontend.js 45.4 kB
build/cart.js 44.3 kB
build/checkout-blocks/actions-frontend.js 1.44 kB
build/checkout-blocks/billing-address--checkout-blocks/shipping-address-frontend.js 4.22 kB
build/checkout-blocks/billing-address-frontend.js 884 B
build/checkout-blocks/contact-information-frontend.js 2.94 kB
build/checkout-blocks/express-payment-frontend.js 5.15 kB
build/checkout-blocks/fields-frontend.js 343 B
build/checkout-blocks/order-note-frontend.js 1.13 kB
build/checkout-blocks/order-summary-frontend.js 11.4 kB
build/checkout-blocks/payment-frontend.js 7.41 kB
build/checkout-blocks/shipping-address-frontend.js 971 B
build/checkout-blocks/shipping-methods-frontend.js 4.82 kB
build/checkout-blocks/terms-frontend.js 1.21 kB
build/checkout-blocks/totals-frontend.js 324 B
build/checkout-frontend.js 47.5 kB
build/checkout.js 47.1 kB
build/featured-category.js 8.55 kB
build/featured-product.js 9.91 kB
build/handpicked-products.js 7.33 kB
build/legacy-template.js 2.08 kB
build/mini-cart-component-frontend.js 14.2 kB
build/mini-cart-contents.js 3.6 kB
build/mini-cart-frontend.js 1.76 kB
build/mini-cart.js 6.46 kB
build/price-filter-frontend.js 12.4 kB
build/price-filter.js 8.62 kB
build/price-format.js 1.18 kB
build/product-best-sellers.js 7.51 kB
build/product-categories.js 3.47 kB
build/product-category.js 8.36 kB
build/product-new.js 7.66 kB
build/product-on-sale.js 8.05 kB
build/product-search.js 2.47 kB
build/product-tag.js 7.76 kB
build/product-top-rated.js 7.63 kB
build/products-by-attribute.js 8.48 kB
build/reviews-by-category.js 11.8 kB
build/reviews-by-product.js 12.9 kB
build/reviews-frontend.js 7.24 kB
build/single-product-frontend.js 22.1 kB
build/single-product.js 10.4 kB
build/stock-filter-frontend.js 6.81 kB
build/stock-filter.js 6.82 kB
build/vendors--atomic-block-components/add-to-cart--cart-blocks/order-summary--checkout-blocks/billing-ad--c5eb4dcd-frontend.js 19 kB
build/vendors--atomic-block-components/add-to-cart-frontend.js 6.82 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/vendors--cart-blocks/order-summary--checkout-blocks/billing-address--checkout-blocks/order-summary---eb4d2cec-frontend.js 4.75 kB
build/wc-blocks-data.js 8.84 kB
build/wc-blocks-editor-style-rtl.css 4.46 kB
build/wc-blocks-editor-style.css 4.46 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.51 kB
build/wc-blocks-shared-hocs.js 1.14 kB
build/wc-blocks-style-rtl.css 21.6 kB
build/wc-blocks-style.css 21.6 kB
build/wc-blocks-vendors-style-rtl.css 1.28 kB
build/wc-blocks-vendors-style.css 1.28 kB
build/wc-blocks-vendors.js 65.5 kB
build/wc-blocks.js 2.96 kB
build/wc-payment-method-bacs.js 820 B
build/wc-payment-method-cheque.js 816 B
build/wc-payment-method-cod.js 912 B
build/wc-payment-method-paypal.js 838 B
build/wc-payment-method-stripe.js 11.1 kB
build/wc-settings.js 2.61 kB

compressed-size-action

@gigitux gigitux force-pushed the add/4965-active-filters branch from af20a74 to 833144f Compare December 29, 2021 11:31
Copy link
Contributor

@Aljullu Aljullu left a comment

Choose a reason for hiding this comment

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

This is working great! However, I think we can simplify the code. In blocks that save some elements in the save function, like this case, I think using useBlockProps() is enough, and then there is no need to parse the attributes to generate class names and styles.

'wc-block-active-filters__title',
textColorClass
) }
style={ textColorStyle }
Copy link
Contributor

Choose a reason for hiding this comment

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

Is it necessary to pass the style and the textColorClass? I would expect the heading element to simply inherit the color of the parent without us needing to do anything special.

<div
className={ classnames(
'wc-block-active-filters',
textColorClass
Copy link
Contributor

Choose a reason for hiding this comment

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

Same here, if we remove this class, would it just work? Color will be inherited from the parent div wrapper.

Comment on lines 200 to 201
className={ textColorClass }
style={ textColorStyle }
Copy link
Contributor

Choose a reason for hiding this comment

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

And the same here. 🙂

Comment on lines 21 to 27
const blockProps = useBlockProps( {
className,
} );

const textColorClassAndStyle = getTextColorClassAndStyleFromAttributeObject(
attributes
);
Copy link
Contributor

Choose a reason for hiding this comment

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

Same here, I think we can remove those two variables and all styles will be applied by default.

@gigitux
Copy link
Contributor Author

gigitux commented Dec 29, 2021

This is working great! However, I think we can simplify the code. In blocks that save some elements in the save function, like this case, I think using useBlockProps() is enough, and then there is no need to parse the attributes to generate class names and styles.

From your comments, I understand that you prefer that the child components inherit the style from the parent component and not that we pass the class or style to each child?

@gigitux gigitux force-pushed the add/4965-active-filters branch 2 times, most recently from 0a5fe54 to 4de894e Compare December 29, 2021 18:15
@gigitux
Copy link
Contributor Author

gigitux commented Dec 29, 2021

Thanks for letting me know.
I added useBlockProps this morning to fix the tests. Now I understand even better what they are for! 👍

@gigitux gigitux requested a review from Aljullu December 29, 2021 18:16
@gigitux gigitux force-pushed the add/4965-active-filters branch from 4de894e to 613d755 Compare December 29, 2021 18:25
Copy link
Contributor

@Aljullu Aljullu 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 updating this PR @gigitux!

From your comments, I understand that you prefer that the child components inherit the style from the parent component and not that we pass the class or style to each child?

Right, from my understanding that's how global styles are expected to be used in most cases. The code becomes much simpler because we don't need to apply any 'custom solutions', all the magic is handled by Gutenberg. 🙂

I left a couple of comments but I'm pre-approving this PR because everything else is looking good.

} ) => {
const TagName = `h${ headingLevel }`;
return (
<TagName className={ className }>
<TagName style={ style } className={ className }>
Copy link
Contributor

Choose a reason for hiding this comment

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

Nit: given that this prop is no longer used, I think we should remove it?

@@ -191,7 +191,7 @@ protected function get_block_types() {
/**
* This disables specific blocks in Widget Areas by not registering them.
*/
if ( in_array( $pagenow, [ 'widgets.php', 'themes.php', 'customize.php' ], true ) ) {
if ( in_array( $pagenow, [ 'widgets.php', 'themes.php', 'customize.php' ], true ) && ! empty( 'gutenberg-edit-site' !== $_GET['page'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification
Copy link
Contributor

Choose a reason for hiding this comment

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

Just to clarify, is this empty() to account for the case that $_GET['page'] is not defined? In that case, I think you should check first that $_GET['page'] is defined and then do the comparison. Something like this:

&& ( empty( $_GET['page'] ) || 'gutenberg-edit-site' !== $_GET['page'] )

@github-actions github-actions bot added this to the 6.7.0 milestone Dec 30, 2021
@gigitux gigitux force-pushed the add/4965-active-filters branch from 2269c01 to f308d9f Compare January 3, 2022 09:12
@gigitux gigitux merged commit ea9e852 into trunk Jan 3, 2022
@gigitux gigitux deleted the add/4965-active-filters branch January 3, 2022 09:41
@ralucaStan ralucaStan added the type: enhancement The issue is a request for an enhancement. label Jan 3, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
block: active filters Issues related to the Active Filters 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.

3 participants