* Early implementation of getting the Product Collection location/context
* Solve the problem of async fetch in the hook
* Improve typing
* Import core data store instead of hardcoding store name
* Recognise Product Category and Product Tag
* Remove attr property from archive location data
* Unify states naming
* Add TODO entry
* Display the info about the location of Product Collection
* Improve the typing
* Recognise if Product Collection is nested in Single Product block
* Improve cases descriptions and add some defaults to potentially undefined values
* Change the taxonomies sourceData
* Recognise Mini Cart as Cart context
* Recognise attribute as archive contect but no taxonomy
* Refactor the function into single useEffect and clean it up
* Fix typo
* Remove unnecessary import
* Stop rendering the output in Editor (it was for demo purposes)
* Pass location data to Product Template query in Editor
* Replace templateSlugs literal strings with object reference
* Rename parseResponse function to more specific name getIdFromResponse
* Add dpeendency array to useEffect
* Refactor templates detection
* Use full taxonomy names instead of shortcuts
* Write down scenarios to test
* Working scenario
* Change the verification way for more robust
* Add more robust methods to include Single Product block
* Add test Product Collection in Single Product block in a Single Product Template
* Imprvoe the order of veryfing the requests
* Fix linter issues. Although that makes code less readable
* Improve the useGetLocation typing so it's more generic
* Rework the E2E tests regarding location of Product Collection and limit their number
* Bring back necessary eslint-disable
* Remove unused imports
* Uncomment line required for other tests
* Add changelog
* Rename constant from BLOCK_NAME to BLOCK_SLUG as it's a slug
* Add a BLOCK_NAME constant and replace the literal block name usages in E2E tests
* Fix post merge issues
* Fix test after merge
* Adjust the tests to kick off waiting for request before action that triggers them
* Fix for the DI container resolution by tag.
This fixes an issue that arises when using service providers inheriting
from AbstractInterfaceServiceProvider: if one of these providers
registers classes both by name and by tag, and one of its registered
classes is requested with 'get' by name before a list of classes is
requested by tag, then that service provider gets locked as the only one
providing that tag, and the others get ignored. This is due to the fact
that container definitions are created "on the fly" as needed and the
base 'get' method won't try to register additional providers if the
requested tag is already provided by at least one of the already
existing definitions.
* Add changelog file
* Add a unit test for the fix
* CYS - Core: Ensure that the bodoni font is loaded
* CYS-Core: install fonts via async job
* ensure that the font are installed only when the Font Library is installed
* improve documentation and validation
* add changelog
* remove unused class
* remove not necessary changes
* improve documentation
* improving naming
* improve documentation
* fix PHP linter
* fix phpdoc comment
* Make attributes available in rest_product_query hook
This commit introduces the 'includeInQueryContext' attribute to the 'woocommerce/product-collection' block and updates the 'woocommerce/product-template' block to consume this new attribute.
Key Changes:
1. `woocommerce/product-collection` Block:
- A new attribute 'includeInQueryContext' is added in `block.json`. This attribute is designed to hold a list of attribute names relevant for the query context.
- The 'includeInQueryContext' attribute is included in the `providesContext` field to ensure its availability to child blocks.
- In `constants.ts`, default values for 'includeInQueryContext' are defined, specifying 'collection' and 'id' as initial attributes.
- The `types.ts` file is updated with a comment explaining the purpose of 'includeInQueryContext'.
2. `woocommerce/product-template` Block:
- Modified `block.json` to utilize the 'includeInQueryContext' context provided by the parent `woocommerce/product-collection` block.
- The `edit.tsx` file is updated to handle the new context. It uses a newly added utility function `useProductCollectionBlockAttributes` from `utils.tsx` to access parent block attributes.
- The `utils.tsx` file is introduced, containing the `useProductCollectionBlockAttributes` hook. This hook is responsible for finding the parent 'woocommerce/product-collection' block and returning its attributes.
- Within `edit.tsx`, logic is added to create a query context object based on the attributes specified in 'includeInQueryContext', enhancing the block's ability to dynamically adapt to changes.
* Remove commented code
* Rename query context attribute and optimize parent block detection
This commit introduces two significant changes aimed at improving code readability and efficiency.
1. **Renaming of Query Context Attribute:**
- The attribute `includeInQueryContext` has been renamed to `queryContextIncludes` across various files, including block JSON configurations and TypeScript definitions. This change makes the attribute's purpose more intuitive, indicating it specifies which attributes to include in the query context.
2. **Optimized Parent Block Detection:**
- Replaced the use of `getBlockParents` with `getBlockParentsByBlockName` in utility functions to find the closest Product Collection block. This optimization allows for a more direct and efficient way to identify the relevant parent block by specifying the block name, reducing unnecessary iterations and improving code performance.
* Streamline query context construction in product template
Key Changes:
- **Introduction of `useProductCollectionQueryContext` Hook:** This new hook takes the `clientId` and `queryContextIncludes` as inputs and returns a query context object. It encapsulates the logic for fetching parent product collection block attributes and constructing the query context accordingly. This abstraction simplifies the edit component's logic, focusing on the essentials and improving code readability.
- **Optimization of Parent Block Detection:** The hook uses `getBlockParentsByBlockName` to accurately and efficiently find the closest parent `Product Collection` block, minimizing the overhead previously associated with traversing the block hierarchy.
* Always include `collection` and `id` in query context
* Minor refactor
* Enhance query context handling for more maintainable code
- Introduced `DEFAULT_QUERY_CONTEXT_ATTRIBUTES` in `edit.tsx` to maintain a clear list of default query context attributes.
- Modified `ProductTemplateEdit` to automatically include these default attributes in `queryContextIncludes`, ensuring they are always part of the query context without manual initialization.
- Simplified `useProductCollectionQueryContext` in `utils.tsx` by removing static initialization of 'collection' and 'id', relying instead on the dynamic addition of necessary attributes from `queryContextIncludes`.
This refactor enhances the maintainability and clarity of the code, ensuring a solid foundation for future enhancements and features.
* Add E2E tests for Product Collection query context
- Added a new test suite 'Query Context in Editor' to validate the correctness of query context parameters when the Product Collection block is used. This suite ensures that:
- For the 'Product Catalog', only the ID is sent in the query context, confirming that collection-specific parameters are excluded when not relevant.
- For collections such as 'On Sale', the collection name is correctly passed in the query context, validating that the block dynamically adjusts query parameters based on its settings.
- Introduced a new utility method `setupAndFetchQueryContextURL` in `product-collection.page.ts`. This method automates the setup of a post with the Product Collection block and fetches the URL with query context parameters, facilitating the validation of query context handling.
* Add changefile(s) from automation for the following project(s): woocommerce-blocks
* Fix edge case when `queryContextIncludes` is not defined
- Initializing `queryContextIncludes` with a default empty array directly in the destructuring assignment of the component's props. This approach ensures that `queryContextIncludes` is always an array, simplifying downstream logic.
- Creating a new constant `queryContextIncludesWithDefaults` to hold the combination of `queryContextIncludes` and `DEFAULT_QUERY_CONTEXT_ATTRIBUTES`. This step avoids directly mutating the `queryContextIncludes` prop, aligning with best practices for functional purity and making the code easier to understand and debug.
- Updating the `useProductCollectionQueryContext` hook call to use `queryContextIncludesWithDefaults`. This ensures that the default query context attributes are consistently included without altering the original prop.
These adjustments not only enhance the code's maintainability but also ensure more predictable behavior by avoiding side effects related to parameter mutation.
---------
Co-authored-by: github-actions <github-actions@github.com>
* Remove global pageObject action from Product Collection tests and add it as before all for specific tests
* Replace beforeAll with beforeEach
* Adjust the beforeEach usage
* Add changelog
* Refresh locators when adding Single Product block as it's not initialised in pageObject
* Change method dedicated to templates to one dedicated to posts
* Skip workflows when only .md files are updated
* Add paths-ignore for performance tests
* Add paths-ignore in the pr merge workflow
* Include docs/** in the ignore paths
* Update the list of paths to ignore
* Update the list of paths to ignore
* Remove 'get_block_template' backwards compatibility check
* Add back get_block_template as a deprecated function
* Deprecate BlockTemplateUtils::filter_block_templates_by_feature_flag()
* Replace 'default template' with 'fallback template'
* Only load BlockTemplatesController in block themes
* Add changefile(s) from automation for the following project(s): woocommerce-blocks, woocommerce
* Remove unnecessary WP version comparison
* Revert "Only load BlockTemplatesController in block themes"
This reverts commit 8e1ed347d61b7ae5e8b8b96fa73b410565570f01.
* Remove deprecated functions, as they are marked as internal
---------
Co-authored-by: github-actions <github-actions@github.com>
* Remove WooCommerce Blocks entry from the WooCommerce status page
* Add changefile(s) from automation for the following project(s): woocommerce
---------
Co-authored-by: github-actions <github-actions@github.com>
* Add logic to trap keyboard focus inside the Product Gallery Pop-Up
* Add changefile(s) from automation for the following project(s): woocommerce-blocks, woocommerce
* Remove unnecessary condition
* Fix issue with keyboard focus trap not working within the Pop-Up
---------
Co-authored-by: github-actions <github-actions@github.com>
* Update product-review
Add test to edit a product review and another test to delete it
* Add changefile(s) from automation for the following project(s): woocommerce
* Add changefile(s) from automation for the following project(s): woocommerce
* Added test data in fixture and changelog extra line
Change test data use from constants at the top to test data created in a fixture for each test. Also, added extra line to the changelog file.
* Add changefile(s) from automation for the following project(s): woocommerce
* Update changelog
Fixed mixed lines on previous commit.
* Add changefile(s) from automation for the following project(s): woocommerce
* Update plugins/woocommerce/tests/e2e-pw/tests/merchant/product-reviews.spec.js
Remove edited timestamp
Co-authored-by: Adrian Moldovan <3854374+adimoldovan@users.noreply.github.com>
* Update plugins/woocommerce/tests/e2e-pw/tests/merchant/product-reviews.spec.js
Update hover action to review id.
Co-authored-by: Adrian Moldovan <3854374+adimoldovan@users.noreply.github.com>
* Update plugins/woocommerce/tests/e2e-pw/tests/merchant/product-reviews.spec.js
Change Quick Edit button to reach review identifier
Co-authored-by: Adrian Moldovan <3854374+adimoldovan@users.noreply.github.com>
* Update plugins/woocommerce/tests/e2e-pw/tests/merchant/product-reviews.spec.js
Replace updated review check to single line assert
Co-authored-by: Adrian Moldovan <3854374+adimoldovan@users.noreply.github.com>
* Update plugins/woocommerce/tests/e2e-pw/tests/merchant/product-reviews.spec.js
Hover to edit on review identifier
Co-authored-by: Adrian Moldovan <3854374+adimoldovan@users.noreply.github.com>
* Update plugins/woocommerce/tests/e2e-pw/tests/merchant/product-reviews.spec.js
Point to trash a review to its identifier.
Co-authored-by: Adrian Moldovan <3854374+adimoldovan@users.noreply.github.com>
* Update plugins/woocommerce/tests/e2e-pw/tests/merchant/product-reviews.spec.js
Point to trash a review to its identifier.
Co-authored-by: Adrian Moldovan <3854374+adimoldovan@users.noreply.github.com>
* Added Review Edit test
Added Review Edit test apart from Quick Edit test. Included assertions to verify that the review has been edited and can be seen both in the reviews list and the shop's page.
---------
Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Adrian Moldovan <3854374+adimoldovan@users.noreply.github.com>
* Improve password-protected Single Product block template to verify correct template is displayed after correct password is introduced
* Add changelog entry
* Import editor.scss styles of Product Templayte and increase specificity
* Add changelog
* Add ts ignore
* Revert changing eslint-disable as it conficts with another rule creating more errors
* Added Missing LInting Changes
* Add changefile(s) from automation for the following project(s): woocommerce-blocks, woocommerce
---------
Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Jon Lane <jon.lane@automattic.com>
* Build path directly instead of directly loading REST API.
* Add changelog.
* Make shapes of routes array consistent with whats returned in API.
* Add doc comment.
* Fix missing slash typo
* Make linter happy.
* Add doc block for filter.
* Short hydration logic to use controller directly.
* Rename _get_path to get_path_regex for accuracy and lint.
* Restore nonce check bypass for internal hydration requests.
* Restore cache notice check to allow controllers to start from clean slate.
* Update since tag.
* CYS - Core: ensure that the default font and color are selected
* remove console.log
* Add changefile(s) from automation for the following project(s): woocommerce
* add comment
* add changelog
---------
Co-authored-by: github-actions <github-actions@github.com>
* Fix fonts affecting the size of each other
* Add changefile(s) from automation for the following project(s): woocommerce
* Remove log
* Removae old typography settings before applying new ones
---------
Co-authored-by: github-actions <github-actions@github.com>
* Add automated tests to verify specific product templates are rendered
* Add changefile(s) from automation for the following project(s): woocommerce-blocks
---------
Co-authored-by: github-actions <github-actions@github.com>
* Include collection attribute in the block context
* add 'collection' to useContext for Product Template
* Changelog
---------
Co-authored-by: Manish Menaria <the.manish.menaria@gmail.com>
* Add tests skeleton
* Add up-sell test
* Add changelog
* Add test for cross-sells
* Renamed spec file
* Add tests for remove up-sells and remove cross-sells
* Update the viewport
* Extract the update product action into a function
* Fix the expect for up-sells
* Add a poll mechanism when checking that up-sells were removed.
* * Use backspace to remove linked items
* Add a check for up-sells before removing them to prevent a false negative result
* Uncomment cleanup code
* Revert viewport height
* Return focus to trigger element when closing pop-up
* Add changefile(s) from automation for the following project(s): woocommerce-blocks, woocommerce
* Fix php cs error
---------
Co-authored-by: github-actions <github-actions@github.com>
* Add new test with a product name edit
* Add changelog
* Update price and description
* Check product summary update
* Remove unnecessary interpolation
Previously, a 'coupon_data' line item meta entru was being stored
when a coupon was applied to an order. Now a much shorter
'coupon_reapply_info' entry is stored instead, containing just
coupon id, code, discount type, amount, and whether the coupon
grants free shipping.