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

Conversation

gigitux
Copy link
Contributor

@gigitux gigitux commented Jun 1, 2023

This PR addresses the feedback raised here.

I'm not sure that I followed the BEM convention correctly. Please, double-check it!

My concern is that the preview on the editor side is different from the frontend result. What do you think, @shaunandrews?

Editor Frontend
image image

Fixes #9666

Screenshots

Before After
image image

Testing

User Facing Testing

  1. Edit the Single Product Template (migrate to the blockified template if it isn't).
  2. Add the Product Rating block.
  3. Ensure that it looks like the image above.
  • Do not include in the Testing Notes

WooCommerce Visibility

  • WooCommerce Core
  • Feature plugin
  • Experimental

@gigitux gigitux added type: enhancement The issue is a request for an enhancement. skip-changelog PRs that you don't want to appear in the changelog. block: product rating Issues related to the Product Rating block labels Jun 1, 2023
@gigitux gigitux self-assigned this Jun 1, 2023
@woocommercebot woocommercebot requested review from a team and roykho and removed request for a team June 1, 2023 15:39
@github-actions
Copy link
Contributor

github-actions bot commented Jun 1, 2023

The release ZIP for this PR is accessible via:

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

Script Dependencies Report

There is no changed script dependency between this branch and trunk.

This comment was automatically generated by the ./github/compare-assets action.

TypeScript Errors Report

  • Files with errors: 469
  • Total errors: 2257

🎉 🎉 This PR does not introduce new TS errors.

comments-aggregator

@github-actions
Copy link
Contributor

github-actions bot commented Jun 1, 2023

Size Change: +625 B (0%)

Total Size: 1.1 MB

Filename Size Change
build/all-products-frontend.js 12 kB -1 B (0%)
build/all-products.js 40.1 kB +87 B (0%)
build/cart-blocks/cart-cross-sells-products-frontend.js 3.77 kB +62 B (+2%)
build/cart-frontend.js 29.9 kB +1 B (0%)
build/cart.js 45.1 kB +70 B (0%)
build/checkout-blocks/actions-frontend.js 1.88 kB +30 B (+2%)
build/checkout-frontend.js 32 kB +3 B (0%)
build/checkout.js 46.4 kB +22 B (0%)
build/mini-cart.js 4.44 kB +5 B (0%)
build/product-rating-frontend.js 2.33 kB +64 B (+3%)
build/product-rating.js 1.03 kB +60 B (+6%) 🔍
build/single-product.js 11.1 kB +1 B (0%)
build/wc-blocks-editor-style-rtl.css 6.04 kB +28 B (0%)
build/wc-blocks-editor-style.css 6.03 kB +28 B (0%)
build/wc-blocks-style-rtl.css 28 kB +82 B (0%)
build/wc-blocks-style.css 27.9 kB +83 B (0%)
ℹ️ View Unchanged
Filename Size
build/active-filters-frontend.js 8.65 kB
build/active-filters-wrapper-frontend.js 7.61 kB
build/active-filters.js 7.47 kB
build/all-reviews.js 7.85 kB
build/attribute-filter-wrapper--stock-filter-wrapper-frontend.js 4.04 kB
build/attribute-filter-wrapper-frontend.js 4.29 kB
build/attribute-filter.js 13.2 kB
build/blocks-checkout.js 35.1 kB
build/breadcrumbs.js 2.13 kB
build/cart-blocks/cart-accepted-payment-methods-frontend.js 1.39 kB
build/cart-blocks/cart-cross-sells-frontend.js 254 B
build/cart-blocks/cart-cross-sells-products--product-price-frontend.js 2.92 kB
build/cart-blocks/cart-express-payment--checkout-blocks/express-payment-frontend.js 5.17 kB
build/cart-blocks/cart-express-payment-frontend.js 720 B
build/cart-blocks/cart-items-frontend.js 301 B
build/cart-blocks/cart-line-items--mini-cart-contents-block/products-table-frontend.js 5.51 kB
build/cart-blocks/cart-line-items-frontend.js 1.06 kB
build/cart-blocks/cart-order-summary-frontend.js 1.27 kB
build/cart-blocks/cart-totals-frontend.js 308 B
build/cart-blocks/empty-cart-frontend.js 346 B
build/cart-blocks/filled-cart-frontend.js 656 B
build/cart-blocks/order-summary-coupon-form-frontend.js 1.63 kB
build/cart-blocks/order-summary-discount-frontend.js 2.13 kB
build/cart-blocks/order-summary-fee-frontend.js 273 B
build/cart-blocks/order-summary-heading-frontend.js 333 B
build/cart-blocks/order-summary-shipping-frontend.js 17.1 kB
build/cart-blocks/order-summary-subtotal-frontend.js 274 B
build/cart-blocks/order-summary-taxes-frontend.js 435 B
build/cart-blocks/proceed-to-checkout-frontend.js 1.38 kB
build/catalog-sorting.js 1.7 kB
build/checkout-blocks/billing-address--checkout-blocks/shipping-address-frontend.js 4.7 kB
build/checkout-blocks/billing-address-frontend.js 1.19 kB
build/checkout-blocks/contact-information-frontend.js 2.04 kB
build/checkout-blocks/express-payment-frontend.js 1.14 kB
build/checkout-blocks/fields-frontend.js 332 B
build/checkout-blocks/order-note-frontend.js 1.14 kB
build/checkout-blocks/order-summary-cart-items-frontend.js 3.68 kB
build/checkout-blocks/order-summary-coupon-form-frontend.js 1.79 kB
build/checkout-blocks/order-summary-discount-frontend.js 2.29 kB
build/checkout-blocks/order-summary-fee-frontend.js 277 B
build/checkout-blocks/order-summary-frontend.js 1.27 kB
build/checkout-blocks/order-summary-shipping-frontend.js 17 kB
build/checkout-blocks/order-summary-subtotal-frontend.js 274 B
build/checkout-blocks/order-summary-taxes-frontend.js 436 B
build/checkout-blocks/payment-frontend.js 8.28 kB
build/checkout-blocks/pickup-options-frontend.js 4.85 kB
build/checkout-blocks/shipping-address-frontend.js 1.17 kB
build/checkout-blocks/shipping-method-frontend.js 2.63 kB
build/checkout-blocks/shipping-methods-frontend.js 6.4 kB
build/checkout-blocks/terms-frontend.js 1.56 kB
build/checkout-blocks/totals-frontend.js 361 B
build/customer-account.js 3.18 kB
build/featured-category.js 15.1 kB
build/featured-product.js 15.3 kB
build/filter-wrapper-frontend.js 14.3 kB
build/filter-wrapper.js 2.39 kB
build/general-style-rtl.css 1.31 kB
build/general-style.css 1.31 kB
build/handpicked-products.js 8.04 kB
build/legacy-template.js 6.45 kB
build/mini-cart-component-frontend.js 28.5 kB
build/mini-cart-contents-block/cart-button-frontend.js 1.73 kB
build/mini-cart-contents-block/checkout-button-frontend.js 1.73 kB
build/mini-cart-contents-block/empty-cart-frontend.js 362 B
build/mini-cart-contents-block/filled-cart-frontend.js 267 B
build/mini-cart-contents-block/footer-frontend.js 4.09 kB
build/mini-cart-contents-block/items-frontend.js 237 B
build/mini-cart-contents-block/products-table-frontend.js 593 B
build/mini-cart-contents-block/shopping-button-frontend.js 526 B
build/mini-cart-contents-block/title-frontend.js 1.9 kB
build/mini-cart-contents-block/title-items-counter-frontend.js 1.59 kB
build/mini-cart-contents-block/title-label-frontend.js 1.53 kB
build/mini-cart-contents.js 18 kB
build/mini-cart-frontend.js 2.72 kB
build/price-filter-wrapper-frontend.js 6.75 kB
build/price-filter.js 8.55 kB
build/price-format.js 1.19 kB
build/product-add-to-cart--product-button--product-image--product-price--product-rating--product-sale-bad--49d3ecb2.js 250 B
build/product-add-to-cart--product-button--product-image--product-rating--product-title.js 151 B
build/product-add-to-cart-frontend.js 6.52 kB
build/product-add-to-cart.js 8.84 kB
build/product-best-sellers.js 8.35 kB
build/product-button--product-image--product-price--product-rating--product-sale-badge--product-sku--prod--5bce0384.js 954 B
build/product-button-frontend.js 2.65 kB
build/product-button.js 3.97 kB
build/product-categories.js 2.7 kB
build/product-category.js 9.37 kB
build/product-collection.js 11.2 kB
build/product-image-frontend.js 2.62 kB
build/product-image.js 4.14 kB
build/product-new.js 8.65 kB
build/product-on-sale.js 8.69 kB
build/product-price-frontend.js 203 B
build/product-price.js 1.68 kB
build/product-query.js 11.8 kB
build/product-results-count.js 1.66 kB
build/product-sale-badge-frontend.js 1.79 kB
build/product-sale-badge.js 665 B
build/product-search.js 2.63 kB
build/product-sku-frontend.js 1.84 kB
build/product-sku.js 535 B
build/product-stock-indicator-frontend.js 2.03 kB
build/product-stock-indicator.js 730 B
build/product-summary-frontend.js 2.19 kB
build/product-summary.js 905 B
build/product-tag.js 9.01 kB
build/product-template.js 3.34 kB
build/product-title-frontend.js 2.21 kB
build/product-title.js 3.66 kB
build/product-top-rated.js 8.91 kB
build/products-by-attribute.js 9.75 kB
build/rating-filter-frontend.js 21.4 kB
build/rating-filter-wrapper-frontend.js 6.2 kB
build/rating-filter.js 6.9 kB
build/reviews-by-category.js 12.1 kB
build/reviews-by-product.js 13.3 kB
build/reviews-frontend.js 7.18 kB
build/stock-filter-wrapper-frontend.js 2.98 kB
build/stock-filter.js 7.62 kB
build/store-notices.js 1.69 kB
build/vendors--attribute-filter-wrapper--cart-blocks/order-summary-coupon-form--cart-blocks/order-summary--48e1e4bb-frontend.js 6.82 kB
build/vendors--attribute-filter-wrapper--cart-blocks/order-summary-shipping--checkout-blocks/billing-addr--d9f38f9d-frontend.js 4.21 kB
build/vendors--attribute-filter-wrapper--stock-filter-wrapper-frontend.js 5.11 kB
build/vendors--cart-blocks/cart-cross-sells-products--cart-blocks/cart-line-items--cart-blocks/cart-order--3c5fe802-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.57 kB
build/vendors--cart-blocks/order-summary-shipping--checkout-blocks/billing-address--checkout-blocks/order--decc3dc6-frontend.js 19.4 kB
build/vendors--checkout-blocks/pickup-options--checkout-blocks/shipping-methods-frontend.js 8.25 kB
build/vendors--checkout-blocks/shipping-method-frontend.js 12.5 kB
build/vendors--price-filter-wrapper-frontend.js 2.2 kB
build/vendors--product-add-to-cart-frontend.js 7.26 kB
build/vendors--rating-filter-wrapper-frontend.js 5.11 kB
build/wc-blocks-data.js 22.4 kB
build/wc-blocks-google-analytics.js 1.56 kB
build/wc-blocks-middleware.js 933 B
build/wc-blocks-registry.js 3.15 kB
build/wc-blocks-shared-context.js 1.52 kB
build/wc-blocks-shared-hocs.js 1.75 kB
build/wc-blocks-vendors-style-rtl.css 1.96 kB
build/wc-blocks-vendors-style.css 1.96 kB
build/wc-blocks-vendors.js 65 kB
build/wc-blocks.js 3.69 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
build/wc-shipping-method-pickup-location.js 30.4 kB
build/woo-directives-runtime.js 2.73 kB
build/woo-directives-vendors.js 7.91 kB

compressed-size-action

@roykho
Copy link
Member

roykho commented Jun 1, 2023

On my end, I don't see the icon next to the No reviews text. file.png

@gigitux
Copy link
Contributor Author

gigitux commented Jun 2, 2023

I see it. Could you try to start with a clean build?

Copy link
Member

@roykho roykho left a comment

Choose a reason for hiding this comment

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

Left comment as to why I couldn't see the star. Also some suggestions.

left: 0;
right: 0;
position: absolute;
color: transparent;
Copy link
Member

Choose a reason for hiding this comment

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

So the star wasn't showing for me is because of this line. I think you probably want to use opacity?

Copy link
Contributor Author

@gigitux gigitux Jun 2, 2023

Choose a reason for hiding this comment

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

Which browser are you using? I guess that this issue is this line.

Copy link
Member

Choose a reason for hiding this comment

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

Chrome.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I tested with Firefox and Chrome and I'm not able to replicate it:

Firefox Chrome
image image

`${ parentClassName }__product-rating__norating-container`
) }
>
<div
Copy link
Member

Choose a reason for hiding this comment

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

Do we need to have divs within divs to achieve this? I feel like we can just have one div and have the two spans next to each other?

Copy link
Contributor Author

@gigitux gigitux Jun 5, 2023

Choose a reason for hiding this comment

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

I preferred this approach to put easily on the same line height.

Copy link
Member

Choose a reason for hiding this comment

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

You should still be able to achieve same line height with two spans within a div. Did you try using flex on the parent container?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

wc-block-components-product-rating__norating div, we applied the custom font to render the start. Adding flex to the parent container could influence the other cases. Keep in mind that this is just a temporary solution.

@gigitux gigitux added the status: blocker Used on issues or pulls that block work from being released. label Jun 5, 2023
@gigitux gigitux requested a review from roykho June 5, 2023 08:44
@tarunvijwani tarunvijwani added this to the 10.4.0 milestone Jun 5, 2023
Copy link
Contributor

@kmanijak kmanijak left a comment

Choose a reason for hiding this comment

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

This works as expected!

My concern is that the preview on the editor side is different from the frontend result.

I feel similar and TBH I think we could show the same content (⭐ No Reviews) in the frontend - it looks nice and makes the layout consistent, so the rating section keeps the same height.

I found one bug, but not related to this PR: all the rating in the reviews section shows the average rating (not reproducible in WC Core).

<div
className={ classnames(
'wc-block-components-product-rating__norating-container',
`${ parentClassName }__product-rating__norating-container`
Copy link
Contributor

Choose a reason for hiding this comment

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

I'm not sure that I followed the BEM convention correctly. Please, double-check it!

BEM convention allows only one element nesting, so according to it, this structure: block__element__element is not recommended (e.g. https://scalablecss.com/bem-nesting-grandchild-elements/).

I don't know the exact purpose of the class in here, but to my best knowledge it should be:

Suggested change
`${ parentClassName }__product-rating__norating-container`
`${ parentClassName }-product-rating__norating-container`

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 the suggestion!

gigitux added 2 commits June 5, 2023 14:24
…ocks into 9666-product-rating-block-show-no-reviews-label-rather-than-empty-starts-when-product-has-no-reviews
@gigitux
Copy link
Contributor Author

gigitux commented Jun 5, 2023

This works as expected!

@roykho, could you check again if you can't see it? My suggestion is to try in incognito mode. Maybe you have some extensions that create a conflict?

@roykho
Copy link
Member

roykho commented Jun 5, 2023

Ok I found out that is is theme related. If you try Tsubaki theme, you will see that the icon doesn't show. So we might need to account for this as other themes may produce similar issues. When I switched to TTT theme, I see it however it is partially cut off on the right side. See below (your screen shot also has it cut off):
xiV82r.png

@gigitux
Copy link
Contributor Author

gigitux commented Jun 5, 2023

Ok I found out that is is theme related. If you try Tsubaki theme, you will see that the icon doesn't show. So we might need to account for this as other themes may produce similar issues.

Oh, nice! I changed the variable. In this way, the border of the star will use the same color of the text 58350ae

When I switched to TTT theme, I see it however it is partially cut off on the right side. See below (your screen shot also has it cut off)

Nice catch! Fixed with d622b94

@roykho
Copy link
Member

roykho commented Jun 5, 2023

With the latest changes, now the icon is not showing in Twenty Twenty Three theme (shows in Tsubaki). Also I think I missed it earlier but the left side of the icon is cut off as well:
file.png

@gigitux
Copy link
Contributor Author

gigitux commented Jun 5, 2023

With the latest changes, now the icon is not showing in Twenty Twenty Three theme (shows in Tsubaki). Also I think I missed it earlier but the left side of the icon is cut off as well: file.png

Sorry, a lot for this back and forth 😞. Block themes use different CSS variables. Since this is just a temporary solution and will not be visible on the frontend I used the --wp--preset--color--black variable with a fallback to #000 if it is not available.

Also, I centered the star, so it should not be cut anymore.

Copy link
Member

@roykho roykho 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 addressing all the feedbacks. I tested in both TTT and Tsubaki theme and now the star appears in both themes and also it is no longer cut off. Good job!

@gigitux gigitux merged commit 030fb5a into trunk Jun 5, 2023
@gigitux gigitux deleted the 9666-product-rating-block-show-no-reviews-label-rather-than-empty-starts-when-product-has-no-reviews branch June 5, 2023 15:27
tarunvijwani pushed a commit that referenced this pull request Jun 7, 2023
…ating (#9684)

* product rating: improve preview style when no rating is visible

* fix class naming

* fix cutted star

* change variable

* fix cut border
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
block: product rating Issues related to the Product Rating block skip-changelog PRs that you don't want to appear in the changelog. status: blocker Used on issues or pulls that block work from being released. type: enhancement The issue is a request for an enhancement.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Product Rating block: Show "No reviews" label rather than empty starts when product has no reviews
4 participants