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

Product Gallery: Add animation when large image changes #11113

Merged
merged 24 commits into from
Oct 20, 2023

Conversation

gigitux
Copy link
Contributor

@gigitux gigitux commented Oct 3, 2023

Warning

This PR is blocked by #11111

Note

I created a follow-up issue to add E2E tests woocommerce/woocommerce#42192

What

Fixes #10870. Currently, there isn't any animation when the large image changes.

Why

This PR implements the animation when the user changes the large image with:

Testing Instructions

Please consider any edge cases this change may have, and also other areas of the product this may impact.

  1. Edit the Single Product Template.
  2. Add the Product Gallery block.
  3. Save the template.
  4. Visit a product that has multiple images.
  5. Change the large image by clicking on the thumbnails and with the slider.
  6. Ensure that the animation works correctly.
  • Do not include in the Testing Notes
  • Should be tested by the development team exclusively

Screenshots or screencast

Before After
Screen.Capture.Oct.5.2.mp4
Screen.Capture.Oct.5.3.mp4

WooCommerce Visibility

Required:

  • WooCommerce Core
  • Feature plugin
  • Experimental
  • N/A

Checklist

Required:

  • This PR has either a [type] label or a [skip-changelog] label.
  • This PR is assigned to a milestone.

Conditional:

  • This PR has a changelog description (if [skip-changelog] label is not present).
  • This PR adds/removes a feature flag & I've updated this doc.
  • This PR adds/removes an experimental interfaces, and I've updated this doc.
  • This PR has been accessibility tested.
  • This PR has had any necessary documentation added/updated.

Changelog

Add suggested changelog entry here.

@github-actions
Copy link
Contributor

github-actions bot commented Oct 3, 2023

The release ZIP for this PR is accessible via:

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

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

assets/js/blocks/product-gallery/inner-blocks/product-gallery-large-image/frontend.tsx

comments-aggregator

@github-actions
Copy link
Contributor

github-actions bot commented Oct 3, 2023

Size Change: +317 B (0%)

Total Size: 1.54 MB

Filename Size Change
build/product-gallery-large-image-frontend.js 585 B +169 B (+41%) 🚨
build/product-gallery-rtl.css 1.15 kB +74 B (+7%) 🔍
build/product-gallery.css 1.15 kB +74 B (+7%) 🔍
ℹ️ View Unchanged
Filename Size
build/3810-frontend.js 18.3 kB
build/4124-frontend.js 23.9 kB
build/8280-frontend.js 8.48 kB
build/active-filters-frontend.js 6.7 kB
build/active-filters-rtl.css 1.68 kB
build/active-filters-wrapper-frontend.js 7.04 kB
build/active-filters-wrapper-rtl.css 1.53 kB
build/active-filters-wrapper.css 1.53 kB
build/active-filters.css 1.68 kB
build/active-filters.js 6.16 kB
build/add-to-cart-form-rtl.css 375 B
build/add-to-cart-form.css 373 B
build/all-products-frontend.js 9.88 kB
build/all-products-rtl.css 4.53 kB
build/all-products.css 4.53 kB
build/all-products.js 39.8 kB
build/all-reviews-rtl.css 1.79 kB
build/all-reviews.css 1.79 kB
build/all-reviews.js 7.84 kB
build/attribute-filter-frontend.js 19.9 kB
build/attribute-filter-rtl.css 4.03 kB
build/attribute-filter-wrapper-frontend.js 21.2 kB
build/attribute-filter-wrapper-rtl.css 1.65 kB
build/attribute-filter-wrapper.css 1.65 kB
build/attribute-filter.css 4.01 kB
build/attribute-filter.js 11.3 kB
build/base-components-stock-filter-wrapper~attribute-filter-wrapper~rating-filter-wrapper-style.scss-rtl.css 2.97 kB
build/base-components-stock-filter-wrapper~attribute-filter-wrapper~rating-filter-wrapper-style.scss.css 2.97 kB
build/blocks-checkout.js 33.9 kB
build/blocks-components.js 7.32 kB
build/breadcrumbs-rtl.css 234 B
build/breadcrumbs.css 234 B
build/breadcrumbs.js 2.03 kB
build/cart-blocks/cart-accepted-payment-methods-frontend.js 1.4 kB
build/cart-blocks/cart-accepted-payment-methods-style.js 153 B
build/cart-blocks/cart-cross-sells-frontend.js 268 B
build/cart-blocks/cart-cross-sells-products-frontend.js 5.67 kB
build/cart-blocks/cart-cross-sells-products-style.js 153 B
build/cart-blocks/cart-cross-sells-style.js 269 B
build/cart-blocks/cart-express-payment-frontend.js 5.36 kB
build/cart-blocks/cart-express-payment-style.js 155 B
build/cart-blocks/cart-items-frontend.js 273 B
build/cart-blocks/cart-items-style.js 240 B
build/cart-blocks/cart-line-items-frontend.js 9.23 kB
build/cart-blocks/cart-line-items-style.js 153 B
build/cart-blocks/cart-order-summary-frontend.js 21.1 kB
build/cart-blocks/cart-order-summary-style.js 341 B
build/cart-blocks/cart-totals-frontend.js 290 B
build/cart-blocks/cart-totals-style.js 253 B
build/cart-blocks/empty-cart-frontend.js 367 B
build/cart-blocks/empty-cart-style.js 365 B
build/cart-blocks/filled-cart-frontend.js 605 B
build/cart-blocks/filled-cart-style.js 333 B
build/cart-blocks/order-summary-coupon-form-frontend.js 21.4 kB
build/cart-blocks/order-summary-coupon-form-style.js 155 B
build/cart-blocks/order-summary-discount-frontend.js 21.5 kB
build/cart-blocks/order-summary-discount-style.js 155 B
build/cart-blocks/order-summary-fee-frontend.js 288 B
build/cart-blocks/order-summary-fee-style.js 153 B
build/cart-blocks/order-summary-heading-frontend.js 346 B
build/cart-blocks/order-summary-heading-style.js 351 B
build/cart-blocks/order-summary-shipping-frontend.js 21.1 kB
build/cart-blocks/order-summary-shipping-style.js 154 B
build/cart-blocks/order-summary-subtotal-frontend.js 291 B
build/cart-blocks/order-summary-subtotal-style.js 154 B
build/cart-blocks/order-summary-taxes-frontend.js 456 B
build/cart-blocks/order-summary-taxes-style.js 202 B
build/cart-blocks/proceed-to-checkout-frontend.js 7.59 kB
build/cart-blocks/proceed-to-checkout-style.js 1.08 kB
build/cart-frontend.js 28.9 kB
build/cart-rtl.css 9.61 kB
build/cart.css 9.59 kB
build/cart.js 39.2 kB
build/catalog-sorting-rtl.css 259 B
build/catalog-sorting.css 259 B
build/catalog-sorting.js 1.69 kB
build/checkout-blocks/actions-frontend.js 8.11 kB
build/checkout-blocks/actions-style.js 1.01 kB
build/checkout-blocks/billing-address-frontend.js 10.2 kB
build/checkout-blocks/billing-address-style.js 626 B
build/checkout-blocks/contact-information-frontend.js 2.08 kB
build/checkout-blocks/contact-information-style.js 651 B
build/checkout-blocks/express-payment-frontend.js 5.89 kB
build/checkout-blocks/fields-frontend.js 297 B
build/checkout-blocks/fields-style.js 271 B
build/checkout-blocks/order-note-frontend.js 1.14 kB
build/checkout-blocks/order-summary-cart-items-frontend.js 6.6 kB
build/checkout-blocks/order-summary-cart-items-style.js 153 B
build/checkout-blocks/order-summary-coupon-form-frontend.js 21.5 kB
build/checkout-blocks/order-summary-coupon-form-style.js 155 B
build/checkout-blocks/order-summary-discount-frontend.js 21.5 kB
build/checkout-blocks/order-summary-discount-style.js 154 B
build/checkout-blocks/order-summary-fee-frontend.js 291 B
build/checkout-blocks/order-summary-fee-style.js 155 B
build/checkout-blocks/order-summary-frontend.js 21.1 kB
build/checkout-blocks/order-summary-shipping-frontend.js 21.1 kB
build/checkout-blocks/order-summary-shipping-style.js 154 B
build/checkout-blocks/order-summary-style.js 342 B
build/checkout-blocks/order-summary-subtotal-frontend.js 289 B
build/checkout-blocks/order-summary-subtotal-style.js 155 B
build/checkout-blocks/order-summary-taxes-frontend.js 456 B
build/checkout-blocks/order-summary-taxes-style.js 201 B
build/checkout-blocks/payment-frontend.js 15.6 kB
build/checkout-blocks/payment-style.js 504 B
build/checkout-blocks/pickup-options-frontend.js 12.2 kB
build/checkout-blocks/pickup-options-style.js 476 B
build/checkout-blocks/shipping-address-frontend.js 10.2 kB
build/checkout-blocks/shipping-address-style.js 515 B
build/checkout-blocks/shipping-method-frontend.js 2.34 kB
build/checkout-blocks/shipping-method-style.js 1.43 kB
build/checkout-blocks/shipping-methods-frontend.js 19.9 kB
build/checkout-blocks/shipping-methods-style.js 450 B
build/checkout-blocks/terms-frontend.js 1.55 kB
build/checkout-blocks/terms-style.js 1.02 kB
build/checkout-blocks/totals-frontend.js 334 B
build/checkout-blocks/totals-style.js 301 B
build/checkout-frontend.js 30.5 kB
build/checkout-rtl.css 9.31 kB
build/checkout.css 9.3 kB
build/checkout.js 42.6 kB
build/classic-shortcode-rtl.css 242 B
build/classic-shortcode.css 241 B
build/classic-shortcode.js 4.4 kB
build/collection-filters.js 1.63 kB
build/collection-price-filter-frontend.js 577 B
build/collection-price-filter-rtl.css 1.28 kB
build/collection-price-filter.css 1.28 kB
build/collection-price-filter.js 3.55 kB
build/customer-account-rtl.css 410 B
build/customer-account.css 409 B
build/customer-account.js 3.17 kB
build/featured-category-rtl.css 974 B
build/featured-category.css 973 B
build/featured-category.js 13.6 kB
build/featured-product-rtl.css 1.02 kB
build/featured-product.css 1.02 kB
build/featured-product.js 13.7 kB
build/filter-wrapper-frontend.js 14.5 kB
build/filter-wrapper-rtl.css 378 B
build/filter-wrapper.css 378 B
build/filter-wrapper.js 2.37 kB
build/handpicked-products.js 7.22 kB
build/legacy-template-rtl.css 240 B
build/legacy-template.css 240 B
build/legacy-template.js 7.72 kB
build/mini-cart-component-frontend.js 30.7 kB
build/mini-cart-contents-block/cart-button-frontend.js 1.86 kB
build/mini-cart-contents-block/cart-button-style.js 1.23 kB
build/mini-cart-contents-block/checkout-button-frontend.js 1.95 kB
build/mini-cart-contents-block/checkout-button-style.js 1.43 kB
build/mini-cart-contents-block/empty-cart-frontend.js 374 B
build/mini-cart-contents-block/empty-cart-style.js 378 B
build/mini-cart-contents-block/filled-cart-frontend.js 284 B
build/mini-cart-contents-block/filled-cart-style.js 288 B
build/mini-cart-contents-block/footer-frontend.js 3.87 kB
build/mini-cart-contents-block/footer-style.js 1.95 kB
build/mini-cart-contents-block/items-frontend.js 247 B
build/mini-cart-contents-block/items-style.js 251 B
build/mini-cart-contents-block/products-table-frontend.js 8.58 kB
build/mini-cart-contents-block/shopping-button-frontend.js 501 B
build/mini-cart-contents-block/shopping-button-style.js 361 B
build/mini-cart-contents-block/title-frontend.js 2.04 kB
build/mini-cart-contents-block/title-items-counter-frontend.js 1.74 kB
build/mini-cart-contents-block/title-items-counter-style.js 1.2 kB
build/mini-cart-contents-block/title-label-frontend.js 1.68 kB
build/mini-cart-contents-block/title-label-style.js 1.14 kB
build/mini-cart-contents-block/title-style.js 1.38 kB
build/mini-cart-contents-rtl.css 3.22 kB
build/mini-cart-contents.css 3.21 kB
build/mini-cart-contents.js 15.9 kB
build/mini-cart-frontend.js 2.35 kB
build/mini-cart-rtl.css 2.44 kB
build/mini-cart.css 2.45 kB
build/mini-cart.js 6 kB
build/order-confirmation-additional-information-rtl.css 367 B
build/order-confirmation-additional-information.css 367 B
build/order-confirmation-additional-information.js 1.57 kB
build/order-confirmation-billing-address-rtl.css 398 B
build/order-confirmation-billing-address.css 397 B
build/order-confirmation-billing-address.js 1.55 kB
build/order-confirmation-billing-wrapper.js 1.5 kB
build/order-confirmation-downloads-rtl.css 477 B
build/order-confirmation-downloads-wrapper.js 1.57 kB
build/order-confirmation-downloads.css 478 B
build/order-confirmation-downloads.js 1.9 kB
build/order-confirmation-shipping-address-rtl.css 399 B
build/order-confirmation-shipping-address.css 398 B
build/order-confirmation-shipping-address.js 1.55 kB
build/order-confirmation-shipping-wrapper.js 1.5 kB
build/order-confirmation-status-rtl.css 280 B
build/order-confirmation-status.css 280 B
build/order-confirmation-status.js 1.54 kB
build/order-confirmation-summary-rtl.css 460 B
build/order-confirmation-summary.css 460 B
build/order-confirmation-summary.js 1.75 kB
build/order-confirmation-totals-rtl.css 594 B
build/order-confirmation-totals-wrapper.js 1.79 kB
build/order-confirmation-totals.css 593 B
build/order-confirmation-totals.js 2.16 kB
build/packages-style-rtl.css 4.21 kB
build/packages-style.css 4.21 kB
build/page-content-wrapper.js 1.85 kB
build/price-filter-frontend.js 7.97 kB
build/price-filter-rtl.css 2.68 kB
build/price-filter-wrapper-frontend.js 8.23 kB
build/price-filter-wrapper-rtl.css 2.53 kB
build/price-filter-wrapper.css 2.53 kB
build/price-filter.css 2.67 kB
build/price-filter.js 7.53 kB
build/price-format.js 913 B
build/product-add-to-cart-frontend.js 8.11 kB
build/product-add-to-cart-rtl.css 1.38 kB
build/product-add-to-cart.css 1.38 kB
build/product-add-to-cart.js 8.35 kB
build/product-average-rating-frontend.js 1.88 kB
build/product-average-rating.js 1.4 kB
build/product-best-sellers.js 7.04 kB
build/product-button-frontend.js 4.93 kB
build/product-button-interactivity-frontend.js 8.48 kB
build/product-button-rtl.css 1.14 kB
build/product-button.css 1.14 kB
build/product-button.js 4.64 kB
build/product-categories-rtl.css 654 B
build/product-categories.css 654 B
build/product-categories.js 2.58 kB
build/product-category.js 7.97 kB
build/product-collection.js 13.6 kB
build/product-details-rtl.css 397 B
build/product-details.css 394 B
build/product-gallery-frontend.js 392 B
build/product-gallery-large-image-next-previous.js 4.15 kB
build/product-gallery-large-image.js 2.36 kB
build/product-gallery-pager.js 3.38 kB
build/product-gallery-thumbnails.js 3.8 kB
build/product-gallery.js 9.34 kB
build/product-image-frontend.js 2.89 kB
build/product-image-gallery-rtl.css 307 B
build/product-image-gallery.css 306 B
build/product-image-rtl.css 996 B
build/product-image.css 994 B
build/product-image.js 2.68 kB
build/product-new.js 7.3 kB
build/product-on-sale.js 7.29 kB
build/product-price-frontend.js 2.81 kB
build/product-price-rtl.css 644 B
build/product-price.css 643 B
build/product-price.js 2.33 kB
build/product-query-rtl.css 350 B
build/product-query.css 349 B
build/product-query.js 11.5 kB
build/product-rating-counter-frontend.js 2.19 kB
build/product-rating-counter.js 1.71 kB
build/product-rating-frontend.js 2.53 kB
build/product-rating-rtl.css 247 B
build/product-rating-stars-frontend.js 2.43 kB
build/product-rating-stars-rtl.css 899 B
build/product-rating-stars.css 900 B
build/product-rating-stars.js 1.95 kB
build/product-rating.css 246 B
build/product-rating.js 2.05 kB
build/product-results-count-rtl.css 230 B
build/product-results-count.css 230 B
build/product-results-count.js 1.65 kB
build/product-reviews-rtl.css 458 B
build/product-reviews.css 458 B
build/product-sale-badge-frontend.js 2.01 kB
build/product-sale-badge-rtl.css 437 B
build/product-sale-badge.css 437 B
build/product-sale-badge.js 1.69 kB
build/product-search-rtl.css 419 B
build/product-search.css 417 B
build/product-search.js 2.6 kB
build/product-sku-frontend.js 2.02 kB
build/product-sku-rtl.css 240 B
build/product-sku.css 239 B
build/product-sku.js 1.53 kB
build/product-stock-indicator-frontend.js 2.19 kB
build/product-stock-indicator-rtl.css 232 B
build/product-stock-indicator.css 232 B
build/product-stock-indicator.js 1.71 kB
build/product-summary-frontend.js 2.35 kB
build/product-summary-rtl.css 549 B
build/product-summary.css 549 B
build/product-summary.js 1.87 kB
build/product-tag.js 7.5 kB
build/product-template-rtl.css 423 B
build/product-template.css 422 B
build/product-template.js 2.76 kB
build/product-title-frontend.js 2.31 kB
build/product-title-rtl.css 693 B
build/product-title.css 694 B
build/product-title.js 2.04 kB
build/product-top-rated.js 7.57 kB
build/products-by-attribute.js 8.02 kB
build/rating-filter-frontend.js 18.8 kB
build/rating-filter-rtl.css 4.08 kB
build/rating-filter-wrapper-frontend.js 19.8 kB
build/rating-filter-wrapper-rtl.css 1.73 kB
build/rating-filter-wrapper.css 1.73 kB
build/rating-filter.css 4.07 kB
build/rating-filter.js 5.91 kB
build/reviews-by-category-rtl.css 1.79 kB
build/reviews-by-category.css 1.79 kB
build/reviews-by-category.js 11.4 kB
build/reviews-by-product-rtl.css 1.79 kB
build/reviews-by-product.css 1.79 kB
build/reviews-by-product.js 12.7 kB
build/reviews-frontend.js 6.52 kB
build/single-product-rtl.css 378 B
build/single-product.css 378 B
build/single-product.js 11 kB
build/stock-filter-frontend.js 19 kB
build/stock-filter-rtl.css 3.88 kB
build/stock-filter-wrapper-frontend.js 20.1 kB
build/stock-filter-wrapper-rtl.css 1.49 kB
build/stock-filter-wrapper.css 1.49 kB
build/stock-filter.css 3.87 kB
build/stock-filter.js 6.53 kB
build/store-notices.js 1.67 kB
build/wc-blocks-classic-template-revert-button-style-rtl.css 240 B
build/wc-blocks-classic-template-revert-button-style.css 239 B
build/wc-blocks-classic-template-revert-button.js 1.18 kB
build/wc-blocks-data.js 19.6 kB
build/wc-blocks-editor-style-rtl.css 7.08 kB
build/wc-blocks-editor-style.css 7.08 kB
build/wc-blocks-google-analytics.js 1.16 kB
build/wc-blocks-middleware.js 735 B
build/wc-blocks-registry.js 2.74 kB
build/wc-blocks-rtl.css 2.47 kB
build/wc-blocks-shared-context.js 850 B
build/wc-blocks-shared-hocs.js 1.4 kB
build/wc-blocks-vendors.js 59.2 kB
build/wc-blocks.css 2.48 kB
build/wc-blocks.js 2.61 kB
build/wc-interactivity.js 10.7 kB
build/wc-payment-method-bacs.js 406 B
build/wc-payment-method-cheque.js 401 B
build/wc-payment-method-cod.js 508 B
build/wc-payment-method-paypal.js 437 B
build/wc-settings.js 2.4 kB
build/wc-shipping-method-pickup-location.js 29.3 kB

compressed-size-action

@gigitux gigitux changed the title WIP: Product Gallery: add animation Product Gallery: Add animation Oct 5, 2023
@gigitux gigitux changed the title Product Gallery: Add animation Product Gallery: Add animation when large image changes Oct 5, 2023
@gigitux gigitux self-assigned this Oct 5, 2023
@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 gallery Issues related to the Product Gallery block. labels Oct 5, 2023
@gigitux gigitux added this to the 11.3.0 milestone Oct 5, 2023
@gigitux gigitux marked this pull request as ready for review October 5, 2023 12:42
@woocommercebot woocommercebot requested review from a team and nefeline and removed request for a team October 5, 2023 12:42
@gigitux gigitux marked this pull request as draft October 5, 2023 17:07
@gigitux gigitux force-pushed the fix/animation-dialog branch from 3cf02f0 to af4282f Compare October 6, 2023 08:55
gigitux and others added 3 commits October 6, 2023 10:58
* Add titles to patterns and set the aligment to Wide

* Replace product query patterns with product collection ones

* Remove pagination and no results query from product query patterns

* Add aspect ratio to the product image attributes

* Add portrait aspect ratio to product X column and product gallery patterns
@gigitux gigitux force-pushed the fix/animation-dialog branch from af4282f to ea0b1f5 Compare October 6, 2023 11:58
@gigitux gigitux marked this pull request as ready for review October 6, 2023 12:00
@woocommercebot woocommercebot requested a review from a team October 6, 2023 12:00
@roykho
Copy link
Member

roykho commented Oct 9, 2023

Bumping this PR to next release.

@danieldudzic danieldudzic self-requested a review October 10, 2023 08:10
@danieldudzic
Copy link
Contributor

Very impressive work @gigitux 🙇
I'm setting this as Request changes as the animation needs to be refined to make sure it always displays the Large Image correctly, and the CSS leak fix regression needs to be addressed as well.

Thanks for the review! Nice catch! With 69daeae, I tried to fix the CSS. Please double-check it and let me know if you think that it could introduce some regression.

This is the result:
Screen.Capture.Oct.11.mov

It seems to be working mostly fine with the "outside" button setting (the height of the Large Image is static though):

V-Neck_T-Shirt_–_newproductgallery-4

It is still broken with the "inside" button setting:
QQsMiULyLj

@gigitux
Copy link
Contributor Author

gigitux commented Oct 12, 2023

I don't think it is a regression. The current behavior in trunk is broken as well:

Screen.Capture.Oct.12.mp4

I think that it should be a separate discussion about how to handle different sizes of the images:
image

We should implement the "crop images to fit" setting. So, all the images will fit in the square (even if stretched). When it is disabled, I think that the behavior in the video that you shared is correct.

@danieldudzic
Copy link
Contributor

  1. There's a difference in the height of the Large Image:
trunk fix/animation-dialog
V-Neck_T-Shirt_–_newproductgallery-5 V-Neck_T-Shirt_–_newproductgallery-6
  1. I agree that image cropping is a separate concern, but the sliding should still handle correctly both scenarios (and not set a fixed height):
  • Images has the same height (square)
  • Images differ in height
  1. Regarding the issue with the sliding/image overflow:
    274435412-3845542d-af1f-4f05-b617-85f0f6a52bdd

I can't replicate it anymore. ✅

@gigitux
Copy link
Contributor Author

gigitux commented Oct 16, 2023

There's a difference in the height of the Large Image:

I agree that image cropping is a separate concern, but the sliding should still handle correctly both scenarios (and not set a fixed height):

Both potential issues are correlated. With the current implementation, the row of images is handled by Flexbox. The highest image sets the height. I think that this approach is the right one because the position of the arrow has to be fixed and not be dependent by the width/height of the image like currently happens on trunk:

Screen.Capture.Oct.12.mp4

I think that when "image cropping" is enabled, we can force all the images to have the maximum width and height available. When it is disabled, could we center the image? What do you think?

Screen.Capture.Oct.16.mov

@danieldudzic
Copy link
Contributor

Both potential issues are correlated. With the current implementation, the row of images is handled by Flexbox. The highest image sets the height. I think that this approach is the right one because the position of the arrow has to be fixed and not be dependent by the width/height of the image like currently happens on trunk:

  1. I believe the common pattern is that the "slider" elements generally adapt to the image size (height) when cropping is disabled. We should get some design input on this.

  2. I don't have clarity regarding how cropping exactly should work, but yes, perhaps cropping everything to fit nicely in a square similar to the original Product Gallery would probably make most sense.

@gigitux
Copy link
Contributor Author

gigitux commented Oct 17, 2023

Hey @jarekmorawski, could you give us feedback on this change, please? You can take a look to this comment.

Personally, I think that the behavior in the first video is wrong, and we should stick with the second behavior (maybe align the image to the center).

Instead, when the user enables the setting "Crop image to fit", all the images will have the gallery's height and width. Does it make sense?

@jarekmorawski
Copy link

I think that when "image cropping" is enabled, we can force all the images to have the maximum width and height available. When it is disabled, could we center the image? What do you think?

I agree. That's what the toggle does – if enabled, all images will be made into squares and aligned to the center (also during crop; most images have a central focal point, so we should always crop out the edges).

Personally, I think that the behavior in the first video is wrong, and we should stick with the second behavior (maybe align the image to the center).

Agreed. The behavior in the first video feels a bit odd, but the worst part is that it changes the position of the arrow buttons, which isn't great. I think it'd make the most sense to align the images in the center no matter their aspect ratio.

@gigitux
Copy link
Contributor Author

gigitux commented Oct 19, 2023

@jarekmorawski Thanks for the feedback!

@danieldudzic, according with the feedback, with 05a3eb6 I added the CSS to center the images. Also, I fixed an error when the zoom is disabled (18d416e) and fixed some E2E tests given that the structure of the DOM is changed with this PR (b6d0088).

@gigitux gigitux requested a review from danieldudzic October 19, 2023 08:42
Copy link
Contributor

@danieldudzic danieldudzic left a comment

Choose a reason for hiding this comment

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

Superb work, @gigitux!

Both the animation and zoom now work as expected!

@gigitux gigitux enabled auto-merge (squash) October 20, 2023 07:42
@gigitux gigitux disabled auto-merge October 20, 2023 07:42
@gigitux gigitux merged commit a8ce473 into trunk Oct 20, 2023
32 of 34 checks passed
@gigitux gigitux deleted the fix/animation-dialog branch October 20, 2023 07:42
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
block: product gallery Issues related to the Product Gallery block. skip-changelog PRs that you don't want to appear in the changelog. type: enhancement The issue is a request for an enhancement.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Product Gallery: Implement animation when the main image changes
5 participants