Commit Graph

6936 Commits

Author SHA1 Message Date
Vladimir Reznichenko ed7d8c8505
[dev] CI: reduce number of wp-env startup crashes (take 2) (#52254)
To reduce wp-env startup crashes in CI, bump the ut's version to the latest and downgrade the MariaDB version used under the hood to 11.2. Related to https://github.com/WordPress/gutenberg/issues/62242, since it's addressed, we are good to remove the patch.
2024-10-23 11:13:20 +02:00
Manish Menaria 6ca412f1ec
Add "Manual (menu order)" sorting option to Product Collection block (#52221)
* Add "Manual (menu order)" sorting option to Product Collection block

This change allows store owners to use their custom product order
(set in the WooCommerce admin panel) within the Product Collection block,
providing more flexibility in product listing.

* Add changefile(s) from automation for the following project(s): woocommerce-blocks, woocommerce

* Change order from DESC to ASC

* Add test for menu_order sorting in ProductCollection

This commit adds a new test case to verify the functionality of menu_order
sorting in the ProductCollection block. The test ensures that when the
'orderBy' attribute is set to 'menu_order' and the 'order' is set to 'asc',
the resulting merged query correctly includes these sorting parameters.

---------

Co-authored-by: github-actions <github-actions@github.com>
2024-10-23 13:39:15 +05:30
Karol Manijak 2793669edf
Hide All Products from inserter (soft-deprecation) (#52207)
* Add 'all products' keyword to Product Collection

* Hide All Products from inserter

* Add changelog

* Update test

* Update E2E tests

* Update E2E

* Fix the test by replacing All products with Product Collection
2024-10-23 09:32:42 +02:00
Manish Menaria dc8fdcfb9a
Product Collection: Fix "Products to show" inspector control not showing as expected on Cart template (#52186)
* Fix: Upsells collection not showing correct products on frontend

This commit addresses an issue where the Upsells collection wasn't displaying the correct products on the frontend. The problem was caused by a variable name mismatch in the condition checking for empty product references.

* Add changefile(s) from automation for the following project(s): woocommerce

* Rename product_references variable for consistency

* Add support for linked products in cart context

This commit extends the LinkedProductControl component to support
linked products in the cart context. It introduces the following changes:
- Add a check for cart location alongside product location
- Introduce a dynamic label for the radio control option, which changes
  based on whether the context is a product or cart
- Refactor the logic to determine when to show the radio control and
  which option should be selected by default

* Add changefile(s) from automation for the following project(s): woocommerce-blocks

* Refactor LinkedProductControl for improved clarity and flexibility

- Extract getFromCurrentProductRadioLabel function for better reusability
- Improve conditional logic for showing linked product control
- Enhance readability by using more descriptive variable names
- Simplify showLinkedProductControl calculation

* Refactor: Add constants for reference types in LinkedProductControl

* Rename variables in LinkedProductControl for clarity

- 'isUsesReferenceIncludesProduct' to 'hasProductReference'
- 'isUsesReferenceIncludesCart' to 'hasCartReference'

* Remove unused import

* Revert changes in ProductCollection.php

---------

Co-authored-by: github-actions <github-actions@github.com>
2024-10-23 11:44:42 +05:30
Luigi Teschio 733f025414
Stock Filter: Update block to the new structure (#51714)
Co-authored-by: Tung Du <dinhtungdu@gmail.com>
Co-authored-by: github-actions <github-actions@github.com>
2024-10-23 10:13:17 +07:00
Luigi Teschio eea27c681d
Fix `Add To Cart form` layout in the post editor (#51662)
* fix Add To Cart form layout on post editor

* improve code

* fix conflict after merge

* Add changefile(s) from automation for the following project(s): woocommerce-blocks

---------

Co-authored-by: github-actions <github-actions@github.com>
2024-10-22 15:23:49 +02:00
Gabriel Manussakis bc446587aa
[Accessibility] Associate the shipping calculator button to its form in Cart page (#52126)
* Associate shipping calculator button to its form in classic Cart

* Associate shipping calculator button to its form in block Cart

* Add changelog file

* Bump shipping-calculator template version
2024-10-22 13:03:47 +01:00
Manish Menaria e28b0aa9ea
Product Collection: Support registering product collection that isn't displayed in Collection Chooser (#52057)
* Filter product collection variations by 'block' scope

This commit updates the product collection feature to only show variations
with the 'block' scope in the collection chooser. To achieve this:

1. Added 'block' to the scope array for various product collection variations
   (best-sellers, featured, hand-picked, new arrivals, on-sale, related,
   top-rated, and upsells).
2. Modified the collection chooser logic to filter variations based on the
   'block' scope.

* Product Collection: Hide collection chooser toolbar for non-block scoped collections

This commit modifies the ToolbarControls component in the Product Collection block to conditionally render the CollectionChooserToolbar. The toolbar is now only displayed for collections with a scope that includes 'block'.

* Add scope property to product collections in E2E tests

This commit adds the 'scope' property to all registered product collections
in the E2E test plugin. The 'scope' is set to ['block'] for each collection.

* Add changefile(s) from automation for the following project(s): woocommerce-blocks

* Rename isShowCollectionChooserToolbar to showCollectionChooserToolbar
for better readability.

* Add documentation and refactor for product collection scope

This commit introduces the following changes:

1. Update documentation to explain the `scope` argument for product collections
2. Refactor Collection Chooser and toolbar controls to handle default scope
3. Remove explicit `scope` from test collections to align with default behavior

* Add E2E tests for Product Collection scope argument

This commit adds E2E tests to verify the behavior of Product Collections
registered with different scopes. It includes:
- Tests for collections with 'inserter' and 'block' scopes
- Verification of visibility in Collection Chooser
- Checks for 'Choose collection' button visibility

* Generate manifest file

* Generate manifest file

* docs: Remove unsupported emojis from product collection documentation

---------

Co-authored-by: github-actions <github-actions@github.com>
2024-10-22 14:02:32 +05:30
Manish Menaria e6d0a906fb
Product Collection: Hide preview label when specific product is selected (#52150)
* Hide preview label when a specific product is selected

This commit modifies the Product Collection block to hide the preview
label when a specific product is selected by the user. It addresses the
issue where the preview label was still showing even when a product
reference was available.

* Add changefile(s) from automation for the following project(s): woocommerce-blocks

---------

Co-authored-by: github-actions <github-actions@github.com>
2024-10-22 12:54:16 +05:30
louwie17 cd3d957bec
Update/storybook commands to use wireit (#51701)
* Integrated wireit to storybook

* Attempt at integrating wireit

* Update wireit dependencies for storybook package

* Add changelog

* Remove unneeded --if-present and regex in pnpm command

* Remove unneeded dependency for storybook build command

* Add missing dependency in blocks storybook build script
2024-10-21 20:14:55 +00:00
Francesco aeade9d9ac
fix: dark theme support for "change address" cart button (#51878)
* fix: dark theme support for "change address" cart button

* Add changefile(s) from automation for the following project(s): woocommerce-blocks

---------

Co-authored-by: github-actions <github-actions@github.com>
2024-10-21 16:06:17 +01:00
Fernando Marichal 2a89e91b58
Product Collection: Add Cross-Sells collection (#52068)
* Add cross-sells

* Fix block title

* Rename product_reference

* Add unit tests

* Add changelog

* Fix lint
2024-10-21 11:25:27 -03:00
Francesco 1686b2c14b
fix: ValidatedTextInput attribute (#51971)
* fix: ValidatedTextInput  attribute

* lint in muh belly

* TDD

* Add changefile(s) from automation for the following project(s): woocommerce-blocks

* undo props change

* custom error message prop

---------

Co-authored-by: github-actions <github-actions@github.com>
2024-10-21 11:00:11 +01:00
Mike Jolley 3c830d6f3f
Add/cart link in checkout header 44837 (#51948)
* Cart Link Block WIP

* Add pattern for header

* changelog

* We added a header so update test

* Add wc-blocks-header-pattern class

* render_woocommerce_template_part was missing wrappers

* Add missing class

* Update plugins/woocommerce/src/Blocks/BlockTypes/CartLink.php

Co-authored-by: Paulo Arromba <17236129+wavvves@users.noreply.github.com>

* Update plugins/woocommerce/src/Blocks/BlockTypes/CartLink.php

Co-authored-by: Paulo Arromba <17236129+wavvves@users.noreply.github.com>

* Update plugins/woocommerce/src/Blocks/BlockTypes/CartLink.php

Co-authored-by: Paulo Arromba <17236129+wavvves@users.noreply.github.com>

* Further SVG compression

* Remove unnecessary area handling

* Shared icon with mini cart

* Global style support

---------

Co-authored-by: Paulo Arromba <17236129+wavvves@users.noreply.github.com>
2024-10-17 16:50:12 +01:00
Roy Ho bd838d824a
[Experimental] Product filters/remove template parts (#52041)
* Remove product filters template part

* Remove product filters overlay template part

* Update e2e tests

* Add changefile(s) from automation for the following project(s): woocommerce-blocks, woocommerce

* Fix linting

* Remove unused template part class and remove overlay navigation

---------

Co-authored-by: github-actions <github-actions@github.com>
2024-10-16 14:02:25 -07:00
Vladimir Reznichenko e148229edb
[dev] Monorepo: consolidate syncpack config, regroup react and testing deps around react version (#52022) 2024-10-16 09:55:36 +02:00
Sam Seay be85cd3dcb
Improve Twenty Twenty-Five theme compatibility for cart and checkout (#51725) 2024-10-15 16:47:20 +13:00
Daniel Mallory 6f73f67630
Update broken docs links (#51967)
* Update broken docs links.

* Add changelog
2024-10-10 17:37:27 +01:00
Ricardo Metring 0107d1edad
Add to Cart with Options: Add Stepper option (#48876)
* Add To Cart Form: Improve the default style and add the Stepper style

* fix height button when no variation is selected

* not allow the user to set 0 as value of the input

* format css

* fix padding

* format css

* fix CSS

* unset margin to align with the button

* Fix quantity stepper layout

* Add changefile(s) from automation for the following project(s): woocommerce-blocks, woocommerce

* improve layout editor side

* remove not necessary changelog

* improve escaping

* fix webpack configuration

* add E2E tests

---------

Co-authored-by: Luigi Teschio <gigitux@gmail.com>
Co-authored-by: github-actions <github-actions@github.com>
2024-10-10 16:36:49 +02:00
Mike Jolley 6604e6bad2
Delayed Account Creation Test Coverage (#51852)
* Sample test

* Jest tests

* Fix spinner

* Add e2e test to check registration works

* Classes were renamed

* wc-block-order-confirmation--create-account-button remove double hyphen

* Add changefile(s) from automation for the following project(s): woocommerce-blocks, woocommerce

* woocommerce-blocks-test-enable-experimental-features

---------

Co-authored-by: github-actions <github-actions@github.com>
2024-10-07 11:12:37 +01:00
Roy Ho 701d9341dd
Skip flaky tests for now (#51889)
* Skip flaky tests for now

* Add changefile(s) from automation for the following project(s): woocommerce-blocks

---------

Co-authored-by: github-actions <github-actions@github.com>
2024-10-06 11:56:23 -05:00
Roy Ho 7542487156
Product Collection: Remove best selling filter option (#51865)
* Remove best selling filter option

* Add changefile(s) from automation for the following project(s): woocommerce-blocks, woocommerce

* Add tiebreak fallback in case total_sales is 0 which prevents random order

* Remove test_merging_order_by_popularity_queries as it is not needed

---------

Co-authored-by: github-actions <github-actions@github.com>
2024-10-06 11:53:27 -05:00
Roy Ho 31c675f93d
Add order by sales filter option to product collection (#51790)
* Add order by sales filter option to product collection

* Add changefile(s) from automation for the following project(s): woocommerce-blocks, woocommerce

---------

Co-authored-by: github-actions <github-actions@github.com>
2024-10-02 06:16:16 -07:00
Tung Du f50620039e
Fix: React error in filter blocks due to duplicated renders (#51840) 2024-10-02 19:20:10 +07:00
Roy Ho 64df8a22c5
Replace __experimentalGetGlobalBlocksByName with stable getBlocksByName (#51773)
* Replace __experimentalGetGlobalBlocksByName with stable getBlocksByName

* Add changefile(s) from automation for the following project(s): woocommerce-blocks

---------

Co-authored-by: github-actions <github-actions@github.com>
2024-10-02 05:19:42 -07:00
Arthur Normand 73e7d571ed
Fix: show correct attribute and price filter data on the category/tag template (#50341) 2024-10-02 08:16:50 +00:00
Tung Du 7bef8af7f2
[Experimental] Reliability fixes for new filter blocks (#51642) 2024-10-02 14:56:50 +07:00
Tung Du 5b0d44b906
Product Collection: fix price range posts clauses (#51676) 2024-10-02 05:30:26 +00:00
Roy Ho 516b55b734
Ensure Product Collection filter names are consistently capitalized (#51779)
* Ensure Product Collection filter names are consistently capitalized

* Add changefile(s) from automation for the following project(s): woocommerce-blocks

* Update e2e tests

* Add additional types and return empty string

---------

Co-authored-by: github-actions <github-actions@github.com>
2024-10-01 06:56:59 -07:00
Bart Kalisz 52d0b8c17d
Blocks E2E: Make test plugin namespace consistent (#51771) 2024-09-30 15:04:08 +02:00
Bart Kalisz bdaebbb69a
Blocks E2E: Fix db connection issues (#51658) 2024-09-30 09:54:46 +02:00
Sam Seay 19438505cf
#50557 - Order summary Shipping updates (#51608) 2024-09-30 17:53:01 +13:00
Mike Jolley c0c162ee61
Delayed account creation: Use Block Hooks to inject block into the Order Confirmation template (#51582)
* Force block to be inserted after account summary

* Clean up block hooks

* Changelog

* Escape strings in default content

* Init $notice to prevent PHP notice
2024-09-27 15:13:26 +01:00
Tung Du 870111d8af
Product Collection: add price sorting options (#51670)
Co-authored-by: Manish Menaria <the.manish.menaria@gmail.com>
2024-09-27 05:22:37 +00:00
Fernando Marichal 98053269ac
Add Dimensions controls to Product Collection block (#51420)
* Add dimensions to product collection

* Refactor width-options-control

* Add product-template changes

* Fix dimensions

* Add changelog

* Remove minHeight

* Remove className addition

* Small refactor in ProductTemplate

* Remove variable

* Fix lint

* undo product-template changes

* Add ProductCollection fixed width

* Fix set_fixed_width_style param comment

* Deconstruct WidthOptionsControl props

* Add line deleted by mistake

* Fix editor alignment

* Fix styles

* Add dimensions to templates and patterns

* Make styles setting more defensive

* Update plugins/woocommerce-blocks/assets/js/blocks/product-collection/edit/inspector-controls/width-options-control.tsx

Co-authored-by: Karol Manijak <20098064+kmanijak@users.noreply.github.com>

---------

Co-authored-by: Karol Manijak <20098064+kmanijak@users.noreply.github.com>
2024-09-27 05:04:16 +02:00
louwie17 4601416da2
Fix/51435 product collection flaky e2e test (#51663)
* Add a couple checks so the test doesn't move ahead to quickly

* Add changelog

* Remove visible condition
2024-09-26 12:03:06 -03:00
louwie17 97620e2743
Add WooCommerce blocks to live storybook (#51679)
* Fix WooCommerce Blocks storybook

* Add blocks storybook to main storybook

* Add post build for iframe.html

* Only add WooCommerce Blocks when building storybook

* Use manager file again and add blocks build for storybook build

* Add changelog
2024-09-26 04:10:37 -03:00
Gabriel Manussakis b017579815
[Accessibility] Fix typos in woocommerce-blocks e2e tests (#50738)
Co-authored-by: Tung Du <dinhtungdu@gmail.com>
2024-09-26 06:39:49 +00:00
Sam Seay 663a32f57a
50555 - Update button copy and change to outline button (#51609) 2024-09-26 13:17:38 +12:00
Sam Seay 018b73cd58
Add an option to mini cart block to navigate directly to checkout. (#51283) 2024-09-26 13:16:21 +12:00
louwie17 a979d95130
Replace setTimeout with callback function for more reliable E2E tests (#51653)
* Replace setTimeout with callback function for more reliable E2E tests

* Add changelog

* Remove removePreview logic from product collection page
2024-09-24 12:24:43 -03:00
Manish Menaria a55812eba2
Product Collection: Update heading for Hand-Picked collection (#51643)
* Update heading for Hand-Picked collection

- Added 'recommend' to the keywords array.
- Changed heading content from 'Hand-Picked' to 'Recommended products'.

* Add changefile(s) from automation for the following project(s): woocommerce-blocks

---------

Co-authored-by: github-actions <github-actions@github.com>
2024-09-24 16:14:07 +05:30
Joshua T Flowers 10b85cefb8
Only register block assets on the frontend during block render (#51517)
* Only register block assets on the frontend during block render

* Add changelog entry

* Add wc-blocks-registry as a dependency to product collection tester script

* Update docs manifest
2024-09-23 11:39:33 -04:00
Seghir Nadir 07a0b8477b
Fix visual inconsisties in Cart/Checkout between elements and between Light/Dark modes (#51585)
* darker outline and double outline on focus

* flip outlines for shipping selector

* fix select outline in dark mode

* Fix input labels being cut off due to line height

* adjust outline colors

* fix rest of problems in dark mode

* fix express payment on checkout

* Fix broken styles for shipping cart in medium

* Always center input label

* Fix order note background in dark mode

* remove empty space in payment methods when there's no content inside

* Add changefile(s) from automation for the following project(s): woocommerce-blocks

* fix linter issues

---------

Co-authored-by: github-actions <github-actions@github.com>
2024-09-23 14:11:43 +02:00
Karol Manijak 03749a0a40
Product Collection: Add option for current product as a reference (#51359)
* Introduce RadioControl

* Provide better copy and improve styling of radio button

* Implement the logic of choosing current product as a reference

* Add placeholder state in product chooser

* Add placeholder image to product chooser

* Add changelog

* Refactor file

* Improve the condition choosing the default radio value

* Update E2E tests

* Format SVG icon and optimize it

* Increase a gap in radio control

* Make the labels less spcific to related products

* Rename some variables to more meaningful names

* Show placeholder img if product doesnt have one

* Fix type

---------

Co-authored-by: Manish Menaria <the.manish.menaria@gmail.com>
2024-09-22 15:30:29 +05:30
Bart Kalisz 35ba49a1f2
Product Collection: Implement the Hand-Picked collection (#51141)
* Fixed PHP 7.4 Compatibility

The splat operator does not support associative arrays until PHP 8.1.

* Added Related Products Collection Boilerplate

* Added `woocommerceRelatedTo` Collection Parameter

This parameter allows the block to query for products that are related
to the given product IDs.

* Added Collection Related Product Filter

Using `woocommerceRelatedTo`, queries may restrict the products returned
to those that are related to the given product ID(s).

* Removed Unnecessary Tracking

* Add changefile(s) from automation for the following project(s): woocommerce-blocks, woocommerce

* Removing Misunderstood Option

* Linting Fix

* Fixed Test

* Initialize the Hand-Picked collection

* Removed Unnecessary Keyword

* Render the collection-specific control

* try removing for fixing gh syntax hl

* add back

* tweak icon render

* combine conditions for early return

* Remove timeFrame from the query

* Set control label per context

* Use primitives for the icon

* Hide 'order by' control for the Hand-Picked collection

* Support Unlimited `wc_get_related_products()`

This changes related product fetching so that `-1` will return all
related products. I also removed a second +10 offset that seems
to have been accidentally added eight years ago.

* Revert "Set control label per context"

This reverts commit cd537befbe.

* Update titles and description

* Enable sorting by entered order

* Removed `woocommerceRelatedTo` Param

Since we're going to use the collection name, we don't need
this functionality any longer.

* Simplified `post__in` Filtering

Since `merge_queries` was already using an intersection merge for
`post__in`, this second function is unnecessary. I've removed it
as well as refactored the merging logic.

* Pass Collection Name To Final Query

* Improve the query merging logic

* Added Custom Collection Handlers

Developers can register collections along with handlers that implement
the custom behavior.

* Removed Second Test Query Construction

As it was, `build_query_vars_from_query_block()` was triggering the
ProductCollection instance hooked into WordPress. After that, we
called `build_frontend_query()` on our test instance. This caused some
weird behavior in tests. As a result, however, the tax_query merge
test couldn't rely on the tax_query transformation done by WordPress.

* Added Related Product Collection Handlers

* Revert "Support Unlimited `wc_get_related_products()`"

This reverts commit 41c837202e.

* Fixed Preview Mode Query

It looks like we were checking the wrong place for the preview
state.

* Improve the query merging logic

* Fixed Test

* Updated Collection Heading

* Handle collection context / no results state

* Small cleanup

* Better Collection Test Teardown

Passing a callable back means that we can use variables in the
setUp and then the tearDown without any confusion.

* Removed Unnecessary Test Provider

* Fixed `$post__in` Merging

When the intersection is empty it was returning all products. This
makes it so that it returns nothing when there's no results.

* Set perPage to 0 and add Pagination block for better discoverability

* Improve empty state in Editor by providing meaningful instruction

* Make code more defensive

* Hide more filters in scope of handpicked through hideFilters API

* Fixed PHPDoc

Co-authored-by: Manish Menaria <the.manish.menaria@gmail.com>

* Hide Empty Related Product Collections

* Removed Duplicate Query Function

* Added Hand-Picked Collection Handler

* Revert changes to pnpm

* Improve comment for empty Hand-Picked collection

* Add changefile(s) from automation for the following project(s): woocommerce-blocks, woocommerce

* Fix: Pagination not working on Frontend

Remove perPage and pages attributes from hand-picked collection

* Remove unused code

* Revert "Improve empty state in Editor by providing meaningful instruction"

This reverts commit 9ac5c20d5e.

* Do not apply layout styles for empty results

* Improve the wording on the empty results message

---------

Co-authored-by: Christopher Allford <6451942+ObliviousHarmony@users.noreply.github.com>
Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Manish Menaria <the.manish.menaria@gmail.com>
Co-authored-by: Karol Manijak <20098064+kmanijak@users.noreply.github.com>
2024-09-21 20:10:10 +05:30
Karol Manijak 6222124793
Add Upsells collection (#51374)
* Fixed PHP 7.4 Compatibility

The splat operator does not support associative arrays until PHP 8.1.

* Added Related Products Collection Boilerplate

* Added `woocommerceRelatedTo` Collection Parameter

This parameter allows the block to query for products that are related
to the given product IDs.

* Added Collection Related Product Filter

Using `woocommerceRelatedTo`, queries may restrict the products returned
to those that are related to the given product ID(s).

* Removed Unnecessary Tracking

* Add changefile(s) from automation for the following project(s): woocommerce-blocks, woocommerce

* Removing Misunderstood Option

* Linting Fix

* Fixed Test

* Removed Unnecessary Keyword

* Support Unlimited `wc_get_related_products()`

This changes related product fetching so that `-1` will return all
related products. I also removed a second +10 offset that seems
to have been accidentally added eight years ago.

* Removed `woocommerceRelatedTo` Param

Since we're going to use the collection name, we don't need
this functionality any longer.

* Simplified `post__in` Filtering

Since `merge_queries` was already using an intersection merge for
`post__in`, this second function is unnecessary. I've removed it
as well as refactored the merging logic.

* Pass Collection Name To Final Query

* Added Custom Collection Handlers

Developers can register collections along with handlers that implement
the custom behavior.

* Removed Second Test Query Construction

As it was, `build_query_vars_from_query_block()` was triggering the
ProductCollection instance hooked into WordPress. After that, we
called `build_frontend_query()` on our test instance. This caused some
weird behavior in tests. As a result, however, the tax_query merge
test couldn't rely on the tax_query transformation done by WordPress.

* Added Related Product Collection Handlers

* Revert "Support Unlimited `wc_get_related_products()`"

This reverts commit 41c837202e.

* Fixed Preview Mode Query

It looks like we were checking the wrong place for the preview
state.

* Fixed Test

* Updated Collection Heading

* Add Upsells collection definition

* Register Upsells

* Add collection handlers for Upsells

* Add changelog

* Remove on sale query param

* Better Collection Test Teardown

Passing a callable back means that we can use variables in the
setUp and then the tearDown without any confusion.

* Removed Unnecessary Test Provider

* Added Upsell Collection Unit Test

* Product ID Confidence Check

* Added Collection Product Reference

* Don't display Upsells collection if there's no upsells

* Change the Upsells collection heading

* Add Upsells supporting cart context

* Consume the cart productIds and display Upsells in there

* Fixed `$post__in` Merging

When the intersection is empty it was returning all products. This
makes it so that it returns nothing when there's no results.

* Fix lint

* Extract the variable

* Fix lint

---------

Co-authored-by: Christopher Allford <6451942+ObliviousHarmony@users.noreply.github.com>
Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Manish Menaria <the.manish.menaria@gmail.com>
2024-09-21 19:28:47 +05:30
Christopher Allford 7a7b94025a
Product Collection: Introduce "Related Products" Collection (#51076)
* Fixed PHP 7.4 Compatibility

The splat operator does not support associative arrays until PHP 8.1.

* Added Related Products Collection Boilerplate

* Added `woocommerceRelatedTo` Collection Parameter

This parameter allows the block to query for products that are related
to the given product IDs.

* Added Collection Related Product Filter

Using `woocommerceRelatedTo`, queries may restrict the products returned
to those that are related to the given product ID(s).

* Removed Unnecessary Tracking

* Add changefile(s) from automation for the following project(s): woocommerce-blocks, woocommerce

* Removing Misunderstood Option

* Linting Fix

* Fixed Test

* Removed Unnecessary Keyword

* Support Unlimited `wc_get_related_products()`

This changes related product fetching so that `-1` will return all
related products. I also removed a second +10 offset that seems
to have been accidentally added eight years ago.

* Removed `woocommerceRelatedTo` Param

Since we're going to use the collection name, we don't need
this functionality any longer.

* Simplified `post__in` Filtering

Since `merge_queries` was already using an intersection merge for
`post__in`, this second function is unnecessary. I've removed it
as well as refactored the merging logic.

* Pass Collection Name To Final Query

* Added Custom Collection Handlers

Developers can register collections along with handlers that implement
the custom behavior.

* Removed Second Test Query Construction

As it was, `build_query_vars_from_query_block()` was triggering the
ProductCollection instance hooked into WordPress. After that, we
called `build_frontend_query()` on our test instance. This caused some
weird behavior in tests. As a result, however, the tax_query merge
test couldn't rely on the tax_query transformation done by WordPress.

* Added Related Product Collection Handlers

* Revert "Support Unlimited `wc_get_related_products()`"

This reverts commit 41c837202e.

* Fixed Preview Mode Query

It looks like we were checking the wrong place for the preview
state.

* Fixed Test

* Updated Collection Heading

* Better Collection Test Teardown

Passing a callable back means that we can use variables in the
setUp and then the tearDown without any confusion.

* Removed Unnecessary Test Provider

* Fixed `$post__in` Merging

When the intersection is empty it was returning all products. This
makes it so that it returns nothing when there's no results.

* Fixed PHPDoc

Co-authored-by: Manish Menaria <the.manish.menaria@gmail.com>

* Hide Empty Related Product Collections

* Fix lint issue

---------

Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Manish Menaria <the.manish.menaria@gmail.com>
2024-09-21 16:12:58 +05:30
Thomas Roberts fa977c2da1
Replace flaky Local Pickup e2e test with PHP and JS unit test (#51554) 2024-09-20 17:25:19 +01:00
Mike Jolley aacae66eb0
Delayed account creation: Admin settings (#51236)
* Settings first pass

* New Settings UI

* Respect woocommerce_enable_delayed_account_creation at block level

* Add changefile(s) from automation for the following project(s): woocommerce-blocks, woocommerce

* Check input exists

* Add new setting to tests

---------

Co-authored-by: github-actions <github-actions@github.com>
2024-09-20 16:20:09 +01:00