* Add syncWithFilters attribute to Product Collection
* Add SycnWithFilters Inspector Control to PC
* Minor import adjustments
* Move the controls to Inherit as they share the same labels
* Rename the attirbute to filterable
* Hide control for collections
* Consume the filterable
* Consume filterable attribute so it enables the filtering
* Bring back file format
* Bring back filterable
* Move filterable from attribute to query
* Improve checks
* Fix incorrent function name
* Add changelog
* Set the default filterable value on insert
* Update test selector
* Add E2E tests to #49627 (#49715)
* Remove unnecessary call to create new post
* Fix "Use page context" control tests
* Fix post ↔ template collection sync test
* Fix non-thenable linter errors
* Extend the "Use page context" default setting test
* Add test for filtering in non-archive context
* Add test for combining editor and front-end filters
* Fix lint
* Update plugins/woocommerce-blocks/assets/js/blocks/product-collection/edit/inspector-controls/inherit-query-control.tsx
Co-authored-by: Manish Menaria <the.manish.menaria@gmail.com>
* Improve query properties access
* Rename inherit-query-control to use-page-context-control to better depict its purpose
* Lint fix
---------
Co-authored-by: Bart Kalisz <bartlomiej.kalisz@gmail.com>
Co-authored-by: Manish Menaria <the.manish.menaria@gmail.com>
* Fix tip block syntax in register-product-collection.md
* Add changefile(s) from automation for the following project(s): woocommerce-blocks
* Add changefile(s) from automation for the following project(s): woocommerce-blocks
---------
Co-authored-by: github-actions <github-actions@github.com>
* Field height and label text size adjustments
* Add changefile(s) from automation for the following project(s): woocommerce-blocks
* Kepe initial height of child element
---------
Co-authored-by: github-actions <github-actions@github.com>
* Spacing adjustments for coupon code
* Add changefile(s) from automation for the following project(s): woocommerce-blocks
---------
Co-authored-by: github-actions <github-actions@github.com>
In this PR, we are consolidating babel-loader caching and adding Jest caching, improving build/testing times locally and in CI. The improvement comes from cache covering transpile steps in the mentioned processes.
* Inherit the color of the star
* Add changefile(s) from automation for the following project(s): woocommerce-blocks
---------
Co-authored-by: github-actions <github-actions@github.com>
* Move icons to @woocommerce/icons package
* Add changefile(s) from automation for the following project(s): woocommerce-blocks
---------
Co-authored-by: github-actions <github-actions@github.com>
* Add overlay settings
* Tweak icon size slider
* Add overlay template part link
* Add changefile(s) from automation for the following project(s): woocommerce-blocks, woocommerce
* Fix scss linting
* Fix php linting
* Remove preview
* Rename setting props to be more clear
* Remove unused import
* Update plugins/woocommerce-blocks/assets/js/blocks/product-filters/editor.scss
Co-authored-by: Tung Du <dinhtungdu@gmail.com>
* Update plugins/woocommerce-blocks/assets/js/blocks/product-filters/edit.tsx
Co-authored-by: Tung Du <dinhtungdu@gmail.com>
* Update plugins/woocommerce-blocks/assets/js/blocks/product-filters/types.ts
Co-authored-by: Tung Du <dinhtungdu@gmail.com>
* Update plugins/woocommerce-blocks/assets/js/blocks/product-filters/edit.tsx
Co-authored-by: Tung Du <dinhtungdu@gmail.com>
* Move experimental controls to last of list
* Improve typescript code
* Remove unneeded constructor code
* Extract icons into own component
* Moved overlay template part link to the bottom
* Add apply button
* Hide overlay settings when in always mode
* Remove overlay template part from list and put into general area
* Update api version to 3
* Update plugins/woocommerce-blocks/assets/js/icons/library/filter.tsx
Co-authored-by: Alexandre Lara <allexandrelara@gmail.com>
* Update plugins/woocommerce-blocks/assets/js/icons/library/filter-three-lines.tsx
Co-authored-by: Alexandre Lara <allexandrelara@gmail.com>
* Fix overlay button link style and clickable
* Remove edit overlay link from never mode
* Add e2e tests for the filters overlay settings
---------
Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Tung Du <dinhtungdu@gmail.com>
Co-authored-by: Alexandre Lara <allexandrelara@gmail.com>
* Replace the customer account line logo
* Add changefile(s) from automation for the following project(s): woocommerce-blocks, woocommerce
---------
Co-authored-by: github-actions <github-actions@github.com>
* Prevent individual filters from being able to drag outside of parent wrapper
* Add changefile(s) from automation for the following project(s): woocommerce-blocks
---------
Co-authored-by: github-actions <github-actions@github.com>
* Update edit address button style
* Add input prop to the ValidatedTextInputHandle type
* Add optional isEditing prop to the AddressFormProps
* Convert edit address link to button
* Focus first input after opening the address form
* Pass along the editing prop to children components in the shipping address block
* Add changelog file
* Clear timeout used to delay the focus on the first input
* Adjust checkout toggler buttons for dark themes
* Get first address field by id
* Fix regression of #48180
* Add changefile(s) from automation for the following project(s): woocommerce-blocks
* Fix one more bug in the dropdown styling (#49585)
---------
Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Sam Seay <samueljseay@gmail.com>
* Add validation message and fix rendering when account is required
* Adjust validation so we can change the label in messages with custom callback
* Add and style password meter
* Add validation feedback and zxcvbn support
* changelog
* Accessibility fixes
* Update lock file
* Fix initial state in safari
* Announce strength as you type
* Use React.ReactElement
* update lock file
* Update lock
* Downgrade local pnpm and recreate lock
* Feedback should only be shown when `showError` is true, not `hasError`
* Feedback should default to null
* Add site title to account checkbox
* Add customer_password support to Store API
* Hide password nag if defining own password
* Add woocommerce_registration_generate_password option to block assets
* Change login prompt to just "log in"
* Add default styling to password inputs
* Reset line height for checkbox inputs
* Add customer password to store
* Add password field to contact information block
* Handle customer password in checkout processor
* Styling for new elements
* Update tests so they match new create account label
* Update log in link in tests
* Add e2e tests for password field
* Add validation message and fix rendering when account is required
* Changelog
* Add missing api to tests
* Remove console log
* rerender checkout
* Update log in link in test
* Adjust validation so we can change the label in messages with custom callback
* Use queryByText in test
* Make sure password generation is on in tests
* Create password if provided password is empty
* Skip "Place order" button translation test
* Revert "Skip "Place order" button translation test"
This reverts commit 7aed6137e88cdb3577f74f6f0c05258b531ed534.
* Update plugins/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-contact-information-block/block.tsx
Co-authored-by: Thomas Roberts <5656702+opr@users.noreply.github.com>
* Update plugins/woocommerce-blocks/assets/js/data/checkout/reducers.ts
Co-authored-by: Thomas Roberts <5656702+opr@users.noreply.github.com>
* Comment empty condition
* Update CSS classnames
* Return null in CreateAccountUI if nothing to display
* Linting: Return return param
* Document $password param
---------
Co-authored-by: Thomas Roberts <thomas.roberts@automattic.com>
Co-authored-by: Thomas Roberts <5656702+opr@users.noreply.github.com>
* Update the customer icon for the line style
* Add changefile(s) from automation for the following project(s): woocommerce-blocks, woocommerce
* Import Circle and Path and fix attribute case
---------
Co-authored-by: github-actions <github-actions@github.com>
* Export pre-formatted SITE_CURRENCY object from settings
* Fallback to SITE_CURRENCY
* Changelog
* Fix typedef
* Update mocks
* Inject site currency into cart preview data
* Update test
* Add currency formatting to preview data
* Mock currency in tests
* More currency mocking
* move checkout docs with front matter to main folder
* add manifest
* add core changelog
* Remove emojis, unsupported links and table of contents
* pr comments
* update folder name and remove toc
* title fix
---------
Co-authored-by: Jacklyn Biggin <hi@jacklyn.dev>
* Render an aria-label for the initial mini cart html
* FIx mini-cart items not visible when zoomed in
* Add changelog
* Fix linting issues
* Add changefile(s) from automation for the following project(s): woocommerce-blocks, woocommerce
* Kick the GH actions
* Add changefile(s) from automation for the following project(s): woocommerce-blocks, woocommerce
* delete duplicate changelog file
* Add changefile(s) from automation for the following project(s): woocommerce-blocks, woocommerce
* Delete plugins/woocommerce/changelog/48384-fix-43639-zoom-mini-cart
---------
Co-authored-by: github-actions <github-actions@github.com>
* Updated Collection Selection Buttons
Rather than using normal buttons we're going to replace these with cards
that we want to use instead.
* Reworked Product Catalog Creation
* Added Dropdown Collection Option
* Changelog
* Added Collection Dashicon Support
* Fixed Collection Change Modal
This is going to get replaced soon but it may as well look nicer than it
does right now.
* Type Fix
* Fixed `:focus` Hover Border
* Simplified Click Handler
* Style Fixes
* Gutenberg Style Fixes
* E2E Fixes
* Fixed E2E Test
* Added Dropdown Inserter E2E Support
* Logging
* Fixed Default Insertion Options
* Prevent Premature Rendering
* E2E Fix Attempt
* Lint Fix
* E2E Fix
* Fix test chaking if custom registred collections are available in the collection chooser
* Improve logic of choosing collection to cover both dropdown and placeholder
---------
Co-authored-by: Karol Manijak <20098064+kmanijak@users.noreply.github.com>
* Remove `__experimentalLayout` from Product Template block
This commit removes `__experimentalLayout` from Product Template block. This is because we don't want to use `layout` from Gutenberg for now. This change fixes the alignment of the first item in Grid layout.
* Add changefile(s) from automation for the following project(s): woocommerce-blocks, woocommerce
* Fix linting errors in SCSS file
---------
Co-authored-by: github-actions <github-actions@github.com>
* Expose registerProductCollection in @woocommerce/blocks-registry Package
This commit exposes the `registerProductCollection` function as part of the `@woocommerce/blocks-registry` package. This enhancement facilitates the registration of new product collections by 3PDs, promoting better modularity and extensibility within the WooCommerce Blocks ecosystem.
Changes include:
- Migration of `register-product-collection.tsx` to `packages/checkout/blocks-registry`.
- Export `registerProductCollection` from `@woocommerce/blocks-registry/index.ts`.
- Updated related imports and references to the new path.
This update enables 3PDs to register product collections more seamlessly, enhancing the extensibility of Product Collection block.
* Replace @woocommerce/blocks-checkout with @woocommerce/blocks-registry
* Add __experimental prefix
* Add changefile(s) from automation for the following project(s): woocommerce-blocks
* Improve registerproductcollection for 3pds
* Set isDefault value to false
* Don't export all the types
* Update changelog
* Add changefile(s) from automation for the following project(s): woocommerce-blocks
* Add plugin to test __experimentalRegisterProductCollection
* Add E2E tests
* Fix Lint errors
* Improve E2E tests for __experimentalRegisterProductCollection
- Reduced preview timeout from 2000ms to 1000ms.
- Expanded E2E tests to cover new attributes and preview functionalities.
* Refactor code to improve readability and maintainability
- Added a warning comment to indicate that `__experimentalRegisterProductCollection` is an experimental API.
- Refactored variable names and imports in `register-product-collection.tsx` and `index.tsx` for clarity.
- Simplified and reorganized type definitions and imports in `types.ts` and `utils.tsx`.
- Renamed function in `register-product-collection-tester.php` for consistency.
* E2E: Also test the Frontend
* Use alias for import statement
* Don't pass isActive to registerProductCollection
Now it's handle by registerProductCollection itself.
* Update registerproductcollection API structure
Refactored the product collection block to enhance attribute management and ensure consistency in query defaults. This change includes:
- Importing `DEFAULT_QUERY` from constants and using it to set default query attributes.
- Removing `DEFAULT_ATTRIBUTES` from specific collections and directly defining required attributes.
- Ensuring `postType` and `isProductCollectionBlock` are set to default values in the query object.
- Setting `inherit` attribute to `false` by default in all collections.
* Hide inherit control in collections
Ensure the "inherit" control is always hidden, as collections should not be able to change this attribute. This includes:
- Adding `CoreFilterNames.INHERIT` to the `hideControls` set in `register-product-collection.tsx`.
- Adjusting the `hideControls` attribute in individual collection files to remove redundant hiding of the `INHERIT` control.
* Fix: Filters not showing in inspector controls
* Set inherit to false for all collections
* Add changefile(s) from automation for the following project(s): woocommerce-blocks
* Product Collection: Add validation for `__experimentalRegisterProductCollection` arguments (#48513)
* Add validation for `__experimentalRegisterProductCollection` arguments
Introduced comprehensive validation for the `ProductCollectionConfig` object in `__experimentalRegisterProductCollection` to ensure correct data types and values, enhancing error handling and robustness.
- Added a new function `isValidProductCollectionConfig` to perform various checks on the `ProductCollectionConfig` object.
- Validates properties such as `name`, `title`, `description`, `category`, `keywords`, `icon`, `isDefault`, `innerBlocks`, `example`, `scope`, `isActive`, `attributes`, and `preview`.
- Ensures correct data types and provides detailed console error messages for invalid configurations.
- Updated `__experimentalRegisterProductCollection` to use the validation function before proceeding with the registration process.
**Impact**
- Improves stability and prevents invalid configurations from causing runtime errors.
- Provides clearer error messages for developers, aiding in quicker debugging and development.
* Fix typo
* Refactor: Replace console.error with console.warn
Updated the error logging in the isValidProductCollectionConfig function to use console.warn instead of console.error for invalid configuration properties. This address the feedback from the PR review.
- Replaced console.error with console.warn for various validation checks in isValidProductCollectionConfig.
- Removed redundant return statements after console.warn calls.
- Improved logging messages to better inform about invalid configuration properties without treating them as critical errors.
- Simplified the logic in __experimentalRegisterProductCollection by combining query and attribute properties and ensuring defaults are set properly.
* Refactor: Rename isValidProductCollectionConfig to isValidCollectionConfig
Updated the function name from isValidProductCollectionConfig to isValidCollectionConfig for better clarity and consistency. Also, renamed related variables for improved readability.
* Add validation for name property
* Add changefile(s) from automation for the following project(s): woocommerce-blocks
* Title is required for new collection
* Update comments
* Fix E2E tests
* Address PR feedback
---------
Co-authored-by: github-actions <github-actions@github.com>
* Add README file for __experimentalRegisterProductCollection
* Add screenshots in README file
* Try to fix lint issue
* Docs: add example for collection with inner blocks
Enhanced the documentation for `__experimentalRegisterProductCollection` to include an example demonstrating how to define a collection with inner blocks. This example shows how to create a custom collection with nested blocks, including a heading and product elements, providing a clear guide for developers.
New content added:
- Example 4: Collection with inner blocks
- Sample code for defining a collection with inner blocks
- Tips and links to further resources on inner blocks and core collection definitions
* Fix Lint errors
* Address PR feedback
* Reduce number of JS files on /shop page
**Problem:** There was increase in number of JS files on /shop page after exposing `registerProductCollection` function in `@woocommerce/blocks-registry` package. This package is loaded on the frontend. For example, previously 45 JS files were loaded on /shop page but now 55 JS files are loaded on /shop page.
**Solution:**
1. After a bit of debugging I found out that constant file which we are importing i.e. `plugins/woocommerce-blocks/assets/js/blocks/product-collection/constants.ts` contain some heavy dependencies & it's not pure. Therefore, I decided to split this file into two files. I moved all the constants that are used in `registerProductCollection` function to a new file i.e. `plugins/woocommerce-blocks/assets/js/blocks/product-collection/constants-register-product-collection.ts`. This way, we don't need to load all the constants on the frontend i.e. /shop page.
- This reduced 4 JS files i.e. 51 JS files are loaded on /shop page.
2. After some more investigation, I found out that importing `registerBlockVariation` function is increasing number of JS files on Frontend. Therefore, I decided to use global `wp` object to call `registerBlockVariation` function. This way, we don't need to import it. This reduced last 6 files i.e. 45 JS files are loaded on /shop page.
This way, I was able to reduce number of JS files on /shop page from 55 to 45, which is same as before this PR.
* Refactor: product collection constants
- Moved constants from `constants-register-product-collection.ts` to `constants.ts`
- Deleted `constants-register-product-collection.ts`
- Updated import paths in relevant files to reflect the changes
- Moved utility functions to `utils.ts`
---------
Co-authored-by: github-actions <github-actions@github.com>