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

Add size settings to the Product Image block #10034

Merged
merged 11 commits into from
Jul 3, 2023
Merged

Conversation

albarin
Copy link
Contributor

@albarin albarin commented Jun 29, 2023

This PR adds size settings: width, height, and scale to the Product Image block.
This work is part of the block improvements needed in some blocks to make them more flexible to achieve the new pattern designs.

Also, in the Product Hero pattern, the Product Featured Image is replaced by the Product Image with the height setting set to 300px.

Fixes #10024

Screenshots

Screenshot 2023-06-29 at 15 47 41

Testing

User-Facing Testing

Product Image settings

  1. Create a new page or post.
  2. Insert the Single Product block.
  3. Click on the Product Image block and open the settings sidebar.
  4. Check the Image size settings are shown in the sidebar.
  5. Change the settings and check the changes are properly reflected on the editor and in the front end, after saving.

Product Hero pattern

  1. Insert the Product Hero pattern.
  2. Click the image and check the block used is the Product Image.
  3. Save and check in the front end that the patterns renders fine.
  • Do not include in the Testing Notes

WooCommerce Visibility

  • WooCommerce Core
  • Feature plugin
  • Experimental

Changelog

Product Image block: add size settings to change the width, height, and scale.

@albarin albarin added block: single product Issues related to the single product block. focus: patterns WooCommerce patterns labels Jun 29, 2023
@github-actions
Copy link
Contributor

github-actions bot commented Jun 29, 2023

The release ZIP for this PR is accessible via:

https://wcblocks.wpcomstaging.com/wp-content/uploads/woocommerce-gutenberg-products-block-10034.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: 462
  • Total errors: 2234

⚠️ ⚠️ This PR introduces new TS errors on 3 files:

assets/js/atomic/blocks/product-elements/image/block.tsx

assets/js/atomic/blocks/product-elements/image/test/block.test.tsx

assets/js/blocks/cart/cart-cross-sells-product-list/cart-cross-sells-product.tsx

comments-aggregator

@albarin albarin marked this pull request as ready for review June 29, 2023 13:55
@woocommercebot woocommercebot requested review from a team and kmanijak and removed request for a team June 29, 2023 13:55
@github-actions
Copy link
Contributor

github-actions bot commented Jun 29, 2023

Size Change: +756 B (0%)

Total Size: 1.18 MB

Filename Size Change
build/all-products-frontend.js 12.2 kB +1 B (0%)
build/all-products.js 40.8 kB +451 B (+1%)
build/cart-blocks/cart-cross-sells-products-frontend.js 3.83 kB +54 B (+1%)
build/cart.js 45.4 kB +59 B (0%)
build/product-image-frontend.js 2.7 kB +70 B (+3%)
build/product-image.js 4.21 kB +67 B (+2%)
build/single-product.js 11.1 kB +2 B (0%)
build/wc-blocks-style-rtl.css 28 kB +26 B (0%)
build/wc-blocks-style.css 28 kB +26 B (0%)
ℹ️ View Unchanged
Filename Size
build/active-filters-frontend.js 8.64 kB
build/active-filters-wrapper-frontend.js 7.58 kB
build/active-filters.js 7.48 kB
build/all-reviews.js 7.86 kB
build/attribute-filter-frontend.js 23 kB
build/attribute-filter-wrapper-frontend.js 7.73 kB
build/attribute-filter.js 13.3 kB
build/blocks-checkout.js 35.1 kB
build/breadcrumbs.js 2.13 kB
build/cart-blocks/cart-accepted-payment-methods-frontend.js 1.38 kB
build/cart-blocks/cart-cross-sells-frontend.js 253 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.16 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.48 kB
build/cart-blocks/cart-line-items-frontend.js 1.06 kB
build/cart-blocks/cart-order-summary-frontend.js 1.28 kB
build/cart-blocks/cart-totals-frontend.js 307 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.12 kB
build/cart-blocks/order-summary-fee-frontend.js 272 B
build/cart-blocks/order-summary-heading-frontend.js 334 B
build/cart-blocks/order-summary-shipping-frontend.js 17.1 kB
build/cart-blocks/order-summary-subtotal-frontend.js 273 B
build/cart-blocks/order-summary-taxes-frontend.js 436 B
build/cart-blocks/proceed-to-checkout-frontend.js 1.44 kB
build/cart-frontend.js 29.9 kB
build/catalog-sorting.js 1.7 kB
build/checkout-blocks/actions-frontend.js 1.88 kB
build/checkout-blocks/billing-address--checkout-blocks/shipping-address-frontend.js 4.69 kB
build/checkout-blocks/billing-address-frontend.js 1.18 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 331 B
build/checkout-blocks/order-note-frontend.js 1.14 kB
build/checkout-blocks/order-summary-cart-items-frontend.js 3.76 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 275 B
build/checkout-blocks/order-summary-frontend.js 1.28 kB
build/checkout-blocks/order-summary-shipping-frontend.js 17 kB
build/checkout-blocks/order-summary-subtotal-frontend.js 273 B
build/checkout-blocks/order-summary-taxes-frontend.js 435 B
build/checkout-blocks/payment-frontend.js 9.27 kB
build/checkout-blocks/pickup-options-frontend.js 4.84 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.41 kB
build/checkout-blocks/terms-frontend.js 1.56 kB
build/checkout-blocks/totals-frontend.js 361 B
build/checkout-frontend.js 31.8 kB
build/checkout.js 47.9 kB
build/customer-account.js 3.19 kB
build/featured-category.js 15.1 kB
build/featured-product.js 15.3 kB
build/filter-wrapper-frontend.js 14.2 kB
build/filter-wrapper.js 2.4 kB
build/general-style-rtl.css 1.31 kB
build/general-style.css 1.31 kB
build/handpicked-products.js 8.05 kB
build/legacy-template.js 8.92 kB
build/mini-cart-component-frontend.js 30.8 kB
build/mini-cart-contents-block/cart-button-frontend.js 1.73 kB
build/mini-cart-contents-block/checkout-button-frontend.js 1.81 kB
build/mini-cart-contents-block/empty-cart-frontend.js 360 B
build/mini-cart-contents-block/filled-cart-frontend.js 267 B
build/mini-cart-contents-block/footer-frontend.js 3.83 kB
build/mini-cart-contents-block/items-frontend.js 237 B
build/mini-cart-contents-block/products-table-frontend.js 587 B
build/mini-cart-contents-block/shopping-button-frontend.js 531 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.1 kB
build/mini-cart-frontend.js 2.84 kB
build/mini-cart.js 5.93 kB
build/price-filter-frontend.js 14.7 kB
build/price-filter-wrapper-frontend.js 6.79 kB
build/price-filter.js 8.57 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 272 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.83 kB
build/product-best-sellers.js 8.36 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.67 kB
build/product-button.js 3.97 kB
build/product-categories.js 2.72 kB
build/product-category.js 9.37 kB
build/product-collection.js 12.3 kB
build/product-new.js 8.65 kB
build/product-on-sale.js 8.65 kB
build/product-price-frontend.js 231 B
build/product-price.js 1.68 kB
build/product-query.js 12 kB
build/product-rating-frontend.js 2.35 kB
build/product-rating.js 1.04 kB
build/product-results-count.js 1.66 kB
build/product-sale-badge-frontend.js 1.8 kB
build/product-sale-badge.js 665 B
build/product-search.js 2.63 kB
build/product-sku-frontend.js 1.85 kB
build/product-sku.js 535 B
build/product-stock-indicator-frontend.js 2.04 kB
build/product-stock-indicator.js 731 B
build/product-summary-frontend.js 2.26 kB
build/product-summary.js 1.01 kB
build/product-tag.js 8.87 kB
build/product-template.js 3.34 kB
build/product-title-frontend.js 2.22 kB
build/product-title.js 3.65 kB
build/product-top-rated.js 8.91 kB
build/products-by-attribute.js 9.76 kB
build/rating-filter-frontend.js 21.4 kB
build/rating-filter-wrapper-frontend.js 6.23 kB
build/rating-filter.js 6.92 kB
build/reviews-by-category.js 12.1 kB
build/reviews-by-product.js 13.3 kB
build/reviews-frontend.js 7.17 kB
build/stock-filter-frontend.js 21.7 kB
build/stock-filter-wrapper-frontend.js 6.5 kB
build/stock-filter.js 7.67 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.83 kB
build/vendors--attribute-filter-wrapper--cart-blocks/order-summary-shipping--checkout-blocks/billing-addr--d9f38f9d-frontend.js 4.2 kB
build/vendors--attribute-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.4 kB
build/vendors--price-filter-wrapper-frontend.js 2.2 kB
build/vendors--product-add-to-cart-frontend.js 7.25 kB
build/vendors--rating-filter-wrapper-frontend.js 5.11 kB
build/vendors--stock-filter-wrapper-frontend.js 5.11 kB
build/wc-blocks-data.js 22.4 kB
build/wc-blocks-editor-style-rtl.css 6.35 kB
build/wc-blocks-editor-style.css 6.34 kB
build/wc-blocks-google-analytics.js 1.56 kB
build/wc-blocks-middleware.js 934 B
build/wc-blocks-registry.js 3.15 kB
build/wc-blocks-shared-context.js 1.1 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.1 kB
build/wc-blocks.js 3.74 kB
build/wc-interactivity.js 10.4 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

compressed-size-action

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.

Great work!

I found one difference between editor and frontend when image is set to wider than available space. In Editor image shows in full scale, while in frontend it's cropped and horizontally centered. That may be discouraging to use by merchants if they see the content overlapping in editor. But I'm actually not sure which version should be expected one 🤔

Editor Frontend
image image

},
] }
/>
{ height && (
Copy link
Contributor

Choose a reason for hiding this comment

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

I think the Scale option could be available if either height or width is provided. Is there a reason to use only height as a condition?

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 basically followed the same logic as in the Post Featured Image block in Gutenberg.

@albarin
Copy link
Contributor Author

albarin commented Jun 30, 2023

Great work!

I found one difference between editor and frontend when image is set to wider than available space. In Editor image shows in full scale, while in frontend it's cropped and horizontally centered. That may be discouraging to use by merchants if they see the content overlapping in editor. But I'm actually not sure which version should be expected one 🤔

@kmanijak Thanks for the review, good catch! Not sure either which should be the expected one. I pushed a fix following again the Post Feature Image which allows the image to be wider than the available space. WDYT?

@albarin albarin requested a review from kmanijak July 3, 2023 07:20
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.

I pushed a fix following again the Post Feature Image which allows the image to be wider than the available space. WDYT?

I found one thing a bit disturbing: the image is at the top of the content on the frontend, while it's below in the editor:

Editor Frontend
image image

But I checked and Post Featured Image behaves exactly the same, so I think that deserves an upstream fix. I'm approving then, but what do you think about creating an issue in Gutenberg?

@github-actions github-actions bot added this to the 10.6.0 milestone Jul 3, 2023
@albarin
Copy link
Contributor Author

albarin commented Jul 3, 2023

But I checked and Post Featured Image behaves exactly the same, so I think that deserves an upstream fix. I'm approving then, but what do you think about creating an issue in Gutenberg?

Thanks @kmanijak! I fixed the issue for the Product Image in this PR and I'll open a new issue in GB 👌

@albarin albarin merged commit 333c7f2 into trunk Jul 3, 2023
29 checks passed
@albarin albarin deleted the 10024/add-size-settings branch July 3, 2023 09:33
@opr opr added the type: enhancement The issue is a request for an enhancement. label Jul 4, 2023
@nielslange nielslange mentioned this pull request Jul 6, 2023
5 tasks
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
block: single product Issues related to the single product block. focus: patterns WooCommerce patterns type: enhancement The issue is a request for an enhancement.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add size settings to the Product Image block
3 participants