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

Product Collection: Add new flow for adding Product Collection block #10952

Closed
wants to merge 113 commits into from

Conversation

kmanijak
Copy link
Contributor

@kmanijak kmanijak commented Sep 14, 2023

What

In this pull request, we are introducing several important changes to the WooCommerce Product Collection block. The key modifications include:

  • Introducing 6 Collections:
    • New Arrivals
    • Top Rated
    • Best Selling
    • On Sale
    • Featured
    • Default Query
  • Add new flow of adding Product Collection:
    • User chooses if:
      • Insert Collection - user is presented with Modal to choose Collection
      • Insert Default Product Collection - "default" Product Collection is introduced
  • Adjusting existing E2E tests to the new flow and adding additional E2E tests

Placeholder State

A Placeholder State has been implemented for the Product Collection block. This new state provides users with a more user-friendly starting point when adding the block to a page. It offers options to either select an existing collection or add default one, streamlining the initial configuration process.
image

Collection Selection Overlay

Upon selecting "Choose Collection," an Overlay now appears. This overlay simplifies the process of selecting a collection by presenting users with a list of collections, including options like New Arrivals.
image

Each Collection has dedicated title, icon and description as per designs (ignore the bottom part of it):
image

Collections README:

We've added a README file for the collections of the Product Collection block. This README documents how to use collections, what attributes they support, and how to register new collections.

Collections

We've included a set of initial collections:
- New Arrivals
- Top Rated
- Best Selling
- On Sale
- Featured
- Default Query

Fixes woocommerce/woocommerce#42224
Fixes woocommerce/woocommerce#42166
Fixes woocommerce/woocommerce#42165
Fixes woocommerce/woocommerce#42164

Why

The primary motivation behind these changes is to significantly improve the user experience when adding a new Product Collection block. The existing implementation defaults to a 3-column grid with alphabetical ordering and random stock status filters, which might not be intuitive for users. We are introducing the following enhancements:

These changes are designed to make the Product Collection block more accessible and user-centric.

For more info, you may also check Github Discussion #10694.

Testing Instructions

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

Case 1: "Add default Product Collection" flow

  • Create a new post & add Product Collection (Beta) block to it.
  • Check that the block displays a placeholder state as shown in
image
  • Click the "Use default collection" button.
  • Verify that no errors occur and the block renders correctly in the editor.
  • Product Collection block is added with:
    • 9 products per page,
    • 3 columns
    • unlimited pages (pages set to 0)
    • there are "Pagination" and "No Results" blocks included
    • no heading
    • no custom filters enabled
  • Publish the post & verify that block looks similar to Editor on Frontend.
  • Make random changes to the block's filters and settings in the editor, save them, and ensure the changes are reflected correctly on the frontend.
  • Repeat the steps in Product Catalog template - after injecting, Product Collection should have "Inherit query from template" option enabled by default

Case 2: "Choose Collection" flow

  • Create a new post & add Product Collection (Beta) block to it.
  • In the placeholder state, click the "Choose Collection" button.
  • Confirm that a modal window appears with 6 Collections as on a screenshot:
image
  • Choose "New Arrivals" and click "Continue"
  • Verify that the selected collection displays correctly in the editor.
  • Expected settings
    • The same for each Collection:
      • 5 columns
      • 5 products per page
      • Single page
      • No "Pagination" nor "No Results" blocks
    • Per Collection:
Collection Order Other settings Heading
New Arrivals Newest to oldest - Newest products
Top Rated Top Rated - Top rated products
Best Selling Best Selling - Best selling products
On Sale A -> Z "Show only products on sale" enabled On sale products
Featured A -> Z "Show only featured products" enabled Featured products
  • Publish the post & Confirm that the selected pattern renders correctly on the frontend.

Case 3: "Choose Collection" flow with "All Products"

  • Create a new post & add Product Collection (Beta) block to it.
  • In the placeholder state, click the "Choose Collection" button.
  • Choose "All Products" and click "Continue"
  • Verify that no errors occur and the block renders correctly in the editor.
  • Product Collection block is added with 9 products per page, no heading and no custom filters enabled
  • Publish the post & verify that block looks similar to Editor on Frontend.
  • Make random changes to the block's filters and settings in the editor, save them, and ensure the changes are reflected correctly on the frontend.
  • Repeat the steps in Product Catalog template - after injecting, Product Collection should have "Inherit query from template" option enabled by default

Case 4: Verify Collections ARE NOT available in the inserter

  • In any place in editor, try to add the blocks:
    • New Arrivals
    • Top Rated
    • Best Selling
    • On Sale
    • Featured
  • Expected: they ARE NOT discoverable in the inserter.

Misc

  • Feel free to leave a comment if you encounter any issues or notice any other problems while testing this PR. Although we have thoroughly tested this PR, it's possible that we might have missed something.
  • Do not include in the Testing Notes
  • Should be tested by the development team exclusively

Screenshots or screencast

Before After

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

Product Collection: Added new flow to choose patterns/collections while adding the block

@github-actions
Copy link
Contributor

github-actions bot commented Sep 14, 2023

The release ZIP for this PR is accessible via:

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

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

assets/js/blocks/product-collection/edit/product-collection-content.tsx

assets/js/blocks/product-collection/edit/product-collection-placeholder.tsx

comments-aggregator

@github-actions
Copy link
Contributor

github-actions bot commented Sep 14, 2023

Size Change: +2.43 kB (0%)

Total Size: 1.61 MB

Filename Size Change
build/cart-frontend.js 29.1 kB +33 B (0%)
build/cart-rtl.css 9.3 kB +22 B (0%)
build/cart.css 9.28 kB +23 B (0%)
build/cart.js 39.8 kB +73 B (0%)
build/checkout-frontend.js 30.7 kB +32 B (0%)
build/checkout.js 42.6 kB +26 B (0%)
build/mini-cart-contents-rtl.css 3.24 kB +10 B (0%)
build/mini-cart-contents.css 3.23 kB +10 B (0%)
build/mini-cart-contents.js 16 kB -6 B (0%)
build/packages-style-rtl.css 5.19 kB -9 B (0%)
build/packages-style.css 5.18 kB -9 B (0%)
build/product-collection.js 15.3 kB +1.49 kB (+11%) ⚠️
build/wc-blocks-editor-style-rtl.css 7.6 kB +302 B (+4%)
build/wc-blocks-editor-style.css 7.59 kB +302 B (+4%)
build/wc-blocks-vendors.js 62 kB +136 B (0%)
ℹ️ View Unchanged
Filename Size
build/3810-frontend.js 18.3 kB
build/4124-frontend.js 23.9 kB
build/8280-frontend.js 8.47 kB
build/active-filters-frontend.js 6.71 kB
build/active-filters-rtl.css 1.68 kB
build/active-filters-wrapper-frontend.js 6.91 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.06 kB
build/add-to-cart-form-rtl.css 444 B
build/add-to-cart-form.css 444 B
build/all-products-frontend.js 9.67 kB
build/all-products-rtl.css 4.54 kB
build/all-products.css 4.54 kB
build/all-products.js 39.7 kB
build/all-reviews-rtl.css 1.75 kB
build/all-reviews.css 1.75 kB
build/all-reviews.js 7.8 kB
build/attribute-filter-frontend.js 19.9 kB
build/attribute-filter-rtl.css 4.03 kB
build/attribute-filter-wrapper-frontend.js 21.1 kB
build/attribute-filter-wrapper-rtl.css 3.89 kB
build/attribute-filter-wrapper.css 3.88 kB
build/attribute-filter.css 4.01 kB
build/attribute-filter.js 11.3 kB
build/blocks-checkout.js 33.7 kB
build/blocks-components.js 32.6 kB
build/breadcrumbs-rtl.css 234 B
build/breadcrumbs.css 234 B
build/breadcrumbs.js 2.13 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 267 B
build/cart-blocks/cart-cross-sells-products-frontend.js 5.56 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.38 kB
build/cart-blocks/cart-express-payment-style.js 155 B
build/cart-blocks/cart-items-frontend.js 281 B
build/cart-blocks/cart-items-style.js 240 B
build/cart-blocks/cart-line-items-frontend.js 9.24 kB
build/cart-blocks/cart-line-items-style.js 153 B
build/cart-blocks/cart-order-summary-frontend.js 20.6 kB
build/cart-blocks/cart-order-summary-style.js 339 B
build/cart-blocks/cart-totals-frontend.js 296 B
build/cart-blocks/cart-totals-style.js 253 B
build/cart-blocks/empty-cart-frontend.js 376 B
build/cart-blocks/empty-cart-style.js 375 B
build/cart-blocks/filled-cart-frontend.js 614 B
build/cart-blocks/filled-cart-style.js 332 B
build/cart-blocks/order-summary-coupon-form-frontend.js 21 kB
build/cart-blocks/order-summary-coupon-form-style.js 155 B
build/cart-blocks/order-summary-discount-frontend.js 21 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 347 B
build/cart-blocks/order-summary-heading-style.js 351 B
build/cart-blocks/order-summary-shipping-frontend.js 20.6 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 454 B
build/cart-blocks/order-summary-taxes-style.js 202 B
build/cart-blocks/proceed-to-checkout-frontend.js 7.64 kB
build/cart-blocks/proceed-to-checkout-style.js 1.09 kB
build/catalog-sorting-rtl.css 259 B
build/catalog-sorting.css 259 B
build/catalog-sorting.js 1.7 kB
build/checkout-blocks/actions-frontend.js 8.14 kB
build/checkout-blocks/actions-style.js 1.02 kB
build/checkout-blocks/billing-address-frontend.js 9.86 kB
build/checkout-blocks/billing-address-style.js 574 B
build/checkout-blocks/contact-information-frontend.js 1.66 kB
build/checkout-blocks/contact-information-style.js 653 B
build/checkout-blocks/express-payment-frontend.js 5.81 kB
build/checkout-blocks/fields-frontend.js 375 B
build/checkout-blocks/fields-style.js 342 B
build/checkout-blocks/order-note-frontend.js 673 B
build/checkout-blocks/order-summary-cart-items-frontend.js 6.49 kB
build/checkout-blocks/order-summary-cart-items-style.js 153 B
build/checkout-blocks/order-summary-coupon-form-frontend.js 21 kB
build/checkout-blocks/order-summary-coupon-form-style.js 155 B
build/checkout-blocks/order-summary-discount-frontend.js 21.1 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 20.6 kB
build/checkout-blocks/order-summary-shipping-frontend.js 20.6 kB
build/checkout-blocks/order-summary-shipping-style.js 154 B
build/checkout-blocks/order-summary-style.js 341 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 455 B
build/checkout-blocks/order-summary-taxes-style.js 201 B
build/checkout-blocks/payment-frontend.js 14.5 kB
build/checkout-blocks/payment-style.js 500 B
build/checkout-blocks/pickup-options-frontend.js 11.2 kB
build/checkout-blocks/pickup-options-style.js 481 B
build/checkout-blocks/shipping-address-frontend.js 9.79 kB
build/checkout-blocks/shipping-address-style.js 517 B
build/checkout-blocks/shipping-method-frontend.js 1.97 kB
build/checkout-blocks/shipping-method-style.js 1.44 kB
build/checkout-blocks/shipping-methods-frontend.js 19 kB
build/checkout-blocks/shipping-methods-style.js 456 B
build/checkout-blocks/terms-frontend.js 1.56 kB
build/checkout-blocks/terms-style.js 1.03 kB
build/checkout-blocks/totals-frontend.js 338 B
build/checkout-blocks/totals-style.js 301 B
build/checkout-rtl.css 8.4 kB
build/checkout.css 8.38 kB
build/classic-shortcode-rtl.css 242 B
build/classic-shortcode.css 241 B
build/classic-shortcode.js 4.66 kB
build/collection-attribute-filter-frontend.js 494 B
build/collection-attribute-filter-rtl.css 3.49 kB
build/collection-attribute-filter.css 3.48 kB
build/collection-attribute-filter.js 7.75 kB
build/collection-filters.js 1.98 kB
build/collection-price-filter-frontend.js 615 B
build/collection-price-filter-rtl.css 1.07 kB
build/collection-price-filter.css 1.07 kB
build/collection-price-filter.js 3.27 kB
build/collection-stock-filter-frontend.js 396 B
build/collection-stock-filter-rtl.css 4.03 kB
build/collection-stock-filter.css 4.03 kB
build/collection-stock-filter.js 4.17 kB
build/customer-account-rtl.css 410 B
build/customer-account.css 409 B
build/customer-account.js 3.19 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.9 kB
build/filter-wrapper-frontend.js 14.6 kB
build/filter-wrapper-rtl.css 378 B
build/filter-wrapper.css 378 B
build/filter-wrapper.js 2.38 kB
build/handpicked-products.js 7.34 kB
build/legacy-template-rtl.css 240 B
build/legacy-template.css 240 B
build/legacy-template.js 7.85 kB
build/mini-cart-component-frontend.js 30.8 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.44 kB
build/mini-cart-contents-block/empty-cart-frontend.js 383 B
build/mini-cart-contents-block/empty-cart-style.js 387 B
build/mini-cart-contents-block/filled-cart-frontend.js 284 B
build/mini-cart-contents-block/filled-cart-style.js 287 B
build/mini-cart-contents-block/footer-frontend.js 3.87 kB
build/mini-cart-contents-block/footer-style.js 1.96 kB
build/mini-cart-contents-block/items-frontend.js 246 B
build/mini-cart-contents-block/items-style.js 250 B
build/mini-cart-contents-block/products-table-frontend.js 8.59 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-frontend.js 2.35 kB
build/mini-cart-rtl.css 2.44 kB
build/mini-cart.css 2.44 kB
build/mini-cart.js 6.1 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.58 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.56 kB
build/order-confirmation-billing-wrapper.js 1.51 kB
build/order-confirmation-downloads-rtl.css 477 B
build/order-confirmation-downloads-wrapper.js 1.58 kB
build/order-confirmation-downloads.css 478 B
build/order-confirmation-downloads.js 1.91 kB
build/order-confirmation-shipping-address-rtl.css 453 B
build/order-confirmation-shipping-address.css 453 B
build/order-confirmation-shipping-address.js 1.56 kB
build/order-confirmation-shipping-wrapper.js 1.52 kB
build/order-confirmation-status-rtl.css 280 B
build/order-confirmation-status.css 280 B
build/order-confirmation-status.js 1.55 kB
build/order-confirmation-summary-rtl.css 460 B
build/order-confirmation-summary.css 460 B
build/order-confirmation-summary.js 1.76 kB
build/order-confirmation-totals-rtl.css 587 B
build/order-confirmation-totals-wrapper.js 1.8 kB
build/order-confirmation-totals.css 587 B
build/order-confirmation-totals.js 2.18 kB
build/page-content-wrapper.js 1.97 kB
build/price-filter-frontend.js 7.94 kB
build/price-filter-rtl.css 2.68 kB
build/price-filter-wrapper-frontend.js 8.11 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.12 kB
build/product-add-to-cart-rtl.css 1.37 kB
build/product-add-to-cart.css 1.38 kB
build/product-add-to-cart.js 8.36 kB
build/product-average-rating-frontend.js 1.88 kB
build/product-average-rating.js 1.4 kB
build/product-best-sellers.js 7.08 kB
build/product-button-frontend.js 4.94 kB
build/product-button-interactivity-frontend.js 8.29 kB
build/product-button-rtl.css 1.14 kB
build/product-button.css 1.14 kB
build/product-button.js 4.66 kB
build/product-categories-rtl.css 654 B
build/product-categories.css 654 B
build/product-categories.js 2.6 kB
build/product-category.js 8.01 kB
build/product-collection-no-results.js 1.66 kB
build/product-details-rtl.css 397 B
build/product-details.css 394 B
build/product-gallery-frontend.js 778 B
build/product-gallery-large-image-frontend.js 604 B
build/product-gallery-large-image-next-previous.js 4.27 kB
build/product-gallery-large-image.js 2.47 kB
build/product-gallery-pager.js 3.48 kB
build/product-gallery-rtl.css 1.65 kB
build/product-gallery-thumbnails.js 3.98 kB
build/product-gallery.css 1.65 kB
build/product-gallery.js 9.67 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.57 kB
build/product-new.js 7.95 kB
build/product-on-sale.js 7.33 kB
build/product-price-frontend.js 2.82 kB
build/product-price-rtl.css 644 B
build/product-price.css 643 B
build/product-price.js 2.34 kB
build/product-query-rtl.css 350 B
build/product-query.css 349 B
build/product-query.js 11.7 kB
build/product-rating-counter-frontend.js 2.19 kB
build/product-rating-counter.js 1.7 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.04 kB
build/product-results-count-rtl.css 230 B
build/product-results-count.css 230 B
build/product-results-count.js 1.66 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.52 kB
build/product-search-rtl.css 419 B
build/product-search.css 417 B
build/product-search.js 2.62 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.2 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.36 kB
build/product-summary-rtl.css 549 B
build/product-summary.css 549 B
build/product-summary.js 1.88 kB
build/product-tag.js 7.53 kB
build/product-template-rtl.css 548 B
build/product-template.css 547 B
build/product-template.js 2.81 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.05 kB
build/product-top-rated.js 7.61 kB
build/products-by-attribute.js 8.05 kB
build/rating-filter-frontend.js 18.8 kB
build/rating-filter-rtl.css 4.09 kB
build/rating-filter-wrapper-frontend.js 19.7 kB
build/rating-filter-wrapper-rtl.css 3.95 kB
build/rating-filter-wrapper.css 3.95 kB
build/rating-filter.css 4.08 kB
build/rating-filter.js 5.8 kB
build/reviews-by-category-rtl.css 1.75 kB
build/reviews-by-category.css 1.75 kB
build/reviews-by-category.js 11.4 kB
build/reviews-by-product-rtl.css 1.75 kB
build/reviews-by-product.css 1.75 kB
build/reviews-by-product.js 12.7 kB
build/reviews-frontend.js 6.44 kB
build/single-product-rtl.css 378 B
build/single-product.css 378 B
build/single-product.js 11.1 kB
build/stock-filter-frontend.js 19 kB
build/stock-filter-rtl.css 3.88 kB
build/stock-filter-wrapper-frontend.js 20 kB
build/stock-filter-wrapper-rtl.css 3.75 kB
build/stock-filter-wrapper.css 3.74 kB
build/stock-filter.css 3.87 kB
build/stock-filter.js 6.44 kB
build/store-notices-rtl.css 1.31 kB
build/store-notices.css 1.3 kB
build/store-notices.js 2.34 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.19 kB
build/wc-blocks-data.js 19.7 kB
build/wc-blocks-google-analytics.js 1.13 kB
build/wc-blocks-middleware.js 735 B
build/wc-blocks-registry.js 2.75 kB
build/wc-blocks-rtl.css 2.48 kB
build/wc-blocks-shared-context.js 860 B
build/wc-blocks-shared-hocs.js 1.41 kB
build/wc-blocks.css 2.48 kB
build/wc-blocks.js 9.19 kB
build/wc-interactivity-dropdown.js 493 B
build/wc-interactivity.js 12.7 kB
build/wc-payment-method-bacs.js 405 B
build/wc-payment-method-cheque.js 402 B
build/wc-payment-method-cod.js 508 B
build/wc-payment-method-paypal.js 439 B
build/wc-settings.js 2.42 kB
build/wc-shipping-method-pickup-location.js 29.4 kB

compressed-size-action

@kmanijak kmanijak changed the title Add/10822 new flow for product collection Add new flow for adding Product Collection Sep 15, 2023
@kmanijak kmanijak added type: enhancement The issue is a request for an enhancement. block: product collection Issues related to the Product Collection block labels Sep 15, 2023
kmanijak and others added 8 commits September 15, 2023 18:47
1. Corrected a typographical error in the `README.md` file, changing "registred" to "registered".
2. Updated the instruction text presented in the `product-collection-placeholder.tsx` file to offer clearer guidance for users.
- Updated the New Arrivals collection's default attributes to refine the block's appearance and content structure:
  - Reduced the default number of columns from 5 to 3
  - Set the default number of items per page to 9
  - Adjusted the collection attribute to reference the collection name dynamically
  - Replaced the hardcoded inner blocks template with a more dynamic structure, introducing a welcoming message and centralized product template usage
- Refactored constants.ts to create distinct inner block templates for product, pagination, and no-results scenarios, enhancing reusability across different collections and improving code readability with descriptive comments

Note:
The changes aim to streamline the New Arrivals collection setup and facilitate maintainability through a more dynamic and structured approach to inner block templates.
…onentProps and update props usage

- Renamed the `QueryEditComponentProps` type to `ProductCollectionEditComponentProps` to better match the Product Collection block context. Updated all occurrences in various files to maintain consistency.
- Changed `openPatternSelectionModalOpen` prop to `openPatternSelectionModal` to correct the typo and make the naming more intuitive. Updated its usage in different files accordingly.
…mments

- Renamed `QueryPlaceholder` component to `ProductCollectionPlaceholder` to better describe the component in the context of the Product Collection block.
- Adjusted the import statements to group WordPress dependencies together and highlighted a TypeScript expectation error regarding missing Gutenberg types with `@ts-expect-error`.
This commit introduces several improvements and refactors to the `product-collection` block:

- Utilized `block.json` for defining the block name in various files to centralize the block's configuration, making the codebase easier to maintain.
- Moved and renamed `PatternSelectionModal.tsx` file to streamline the file structure and reflect its usage accurately.
- Refactored the `PatternSelectionModal.tsx` file to:
   - Enhance type definitions and deal with missing TypeScript definitions using `@ts-expect-error`.
   - Update the import paths due to file relocations.
   - Streamline function names and parameters for better readability and understanding.
   - Change the modal title and category to reflect that users are choosing a "collection" rather than a "pattern".
- Improved `PatternSelectionModal` to use `block.json` name and category properties, promoting maintainability and adherence to DRY principle.
- Refactored `PatternSelectionModal` functions to construct the block query and apply it to patterns more robustly.
- Updated `product-collection-placeholder.tsx` to use block name from `block.json`.
- In `pattern-chooser-toolbar.tsx`, updated button label to indicate "Choose collection" instead of "Choose pattern" to maintain consistency with other changes.
- Removed redundant filter addition in `inspector-controls/index.tsx`.
@github-actions
Copy link
Contributor

This is temporary action that will be changed into "Add c...

This is temporary action that will be changed into "Add custom collection"


// TODO: This is temporary action that will be changed into
// "Add custom collection"
const addDefaultProductCollection = () => {
const defaultProductCollection = getDefaultProductCollection();
replaceBlock( clientId, defaultProductCollection );
};
return (
<div { ...blockProps }>
<Placeholder
icon={ Icon }
label={ __(
'Product Collection',

🚀 This comment was generated by the automations bot based on a todo comment in 8554ed6 in #10952. cc @kmanijak

@github-actions
Copy link
Contributor

This is temporary action that will be changed into "Add c...

This is temporary action that will be changed into "Add custom collection"


// TODO: This is temporary action that will be changed into
// "Add custom collection"
const addDefaultProductCollection = () => {
const defaultProductCollection = getDefaultProductCollection();
replaceBlock( clientId, defaultProductCollection );
};
return (
<div { ...blockProps }>
<Placeholder
icon={ Icon }
label={ __(
'Product Collection',

🚀 This comment was generated by the automations bot based on a todo comment in 1c97714 in #10952. cc @kmanijak

@imanish003 imanish003 self-assigned this Sep 21, 2023
@kmanijak kmanijak marked this pull request as draft November 24, 2023 08:27
@kmanijak
Copy link
Contributor Author

This work awaits a designer's review/input. For the time being it's paused.

@kmanijak
Copy link
Contributor Author

kmanijak commented Nov 28, 2023

Bug: All Products have "inherit query from template" hidden the same as existing collections.

Expected changes:

  • "Choose Collection" needs to be "Choose collection"
  • "Use default collection" can change to "Create custom"
  • Choose from pre-existing collections or add default one." becomes "Choose a product collection to display, or create your own."

EDIT: Done ✅

Copy link
Contributor

This PR has been marked as stale because it has not seen any activity within the past 7 days. Our team uses this tool to help surface pull requests that have slipped through review.

If deemed still relevant, the pr can be kept active by ensuring it's up to date with the main branch and removing the stale label.

@github-actions github-actions bot added the status: stale Stale issues and PRs have had no updates for 60 days. label Dec 15, 2023
@kmanijak
Copy link
Contributor Author

Closing. It's been moved to monorepo: woocommerce/woocommerce#42696

@kmanijak kmanijak closed this Dec 18, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
block: product collection Issues related to the Product Collection block focus: blocks Specific work involving or impacting how blocks behave. status: stale Stale issues and PRs have had no updates for 60 days. team: Kirigami & Origami type: enhancement The issue is a request for an enhancement.
Projects
None yet
4 participants