* Rename Active Product Filters block to Active Filters
* Rename wc-block-active-product-filters__placeholder to wc-block-active-filters__placeholder
* Rename active filters fixture
* Add archive-product to the hierarchy
* Fallback to archive-product and get titles from blocks if the templates from theme don't have one
* Rename function
* Fix comment
* Add fallbacks to the db and blocks versions
* Add missing product attribute blockified template
* Update docs
* Add comment and fix comment type on wp_template
* Replate template name if we know the template in blocks
* Add comment and fix linting error
* Fix archive-product template
* Clone the fallback template from db to show them in the template lsit
* Return the fallback template when querying for a single template
* Remove unneeded condition
* Use wp function instead of gutenberg one
* Fix tests
* Fix tests on Product Catalog templates
It was checking a single product for the customization, but it should check the /shop page
* Disable tests related with deleteAllTemplates function
* Product Query: Fix pagination issue
* Product Query - Add support for the Filter By Price Block woocommerce/woocommerce-blocks#6790
Product Query - Add support for the Filter By Price Block
* fix query relation
* fix on sale query
* Product Query - Add support for the Filter By Attributes block woocommerce/woocommerce-blocks#6790
Product Query - Add support for the Filter By Attributes block
* fix bugged pagination and on-sale filter after refactor
* address feedback
* Product Query - Add e2e tests for the Filter By Price block
* Product Query - Add e2e tests for the Filter By Attribute block
* fix comment
* fix comment
* remove not used import
* remove not used import
* address feedback
Co-authored-by: Albert Juhé Lluveras <contact@albertjuhe.com>
* Add product query support for Sale badge block
On the client side, when the Sale badge block is used within the product query block, the markup will be rendered on the server side - No javascript related to Sale badge block will be rendered.
* Add support for additional CSS class(es)
ADDITIONAL CSS CLASS(ES)(available in advanced toggle in sidebar) should be added to the container div
* Convert preset to css variable for padding
We are getting padding value in preset format like this:
"var:preset|spacing|50"
Therefore I added a function to convert it to CSS variable like this:
"var(--wp--preset--spacing--50)"
i.e. "var:preset|spacing|50" -> "var(--wp--preset--spacing--50)"
* Add reference for preset to css variable conversion logic
* Empty commit for release pull request
* Update compatibility sections and add release 9.0.0 changelog
* Add testing instructions for the 9.0.0 release
* Update testing instructions for the 9.0.0 release
* Remove testing instructions for an unmerged PR
* Bumping version strings to new version.
Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Daniel Dudzic <daniel.dudzic@automattic.com>
* Add support for “Popular Presets” for PQ block
This commits achieves the following:
* Adds a section in the inspector control called “Popular Presets”,
which contains a dropdown with popular presets.
* Adds support for the first preset: “Best selling products”.
By selecting this, users can sort products by total sales.
* Switches the order of the custom inspector controls and the default
Query Loop inspector controls: our controls will be now on top
as per the latest design spec (see pdnLyh-2By-p2).
* Restricts the allowed Query parameters to the sort orders we want to
allow according to the latest design spec (disabling title and date).
* Removes the core “Order By” dropdown.
* Refactor `setCustomQueryAttribute` to `setQueryAttribute` because
since a few iterations, our custom query attributes are not deeply nested
anymore, and this function can be used for the normal query too.
* Add back-end support for sorting by Best Selling via the Product Query block
* Adds the `popularity` value as an allowed value for `orderby` on
`product` REST API calls.
* Handles the query differently if the `orderby` value is one among the
custom ones.
* Update cart.md
Add information on how to add extra data to the /add-item request
* Update src/StoreApi/docs/cart.md
Co-authored-by: Niels Lange <info@nielslange.de>
* Update src/StoreApi/docs/cart.md
Co-authored-by: Niels Lange <info@nielslange.de>
* Add clearValidationErrors to validation data store actions
* Add reducer case for CLEAR_VALIDATION_ERRORS
* Add tests for CLEAR_VALIDATION_ERRORS
* Add documentation for clearValidationErrors
* Deprecate clearAllValidationErrors in actions.ts
* Remove CLEAR_VALIDATION_ERRORS action and reducer case
* Update reducer test for clearAllValidationErrors
* Make error message in test describe the test better
* Update reducer to handle CLEAR_VALIDATION_ERRORS with no error passed
* Update documentation for validation data store
* Remove unnecessary linebreaks in documentation
* Moved all payment utils functions in a utils folder
* Delete as it's not being used
* bot: update checkstyle.xml
* bot: update checkstyle.xml
* Fix TS error
* bot: update checkstyle.xml
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Fix typo in HTML markup of ProductImage block placeholder
Typo caused rendering of incorrect HTML attributes: width and height of Product Image placeholder that were anyway ignored by the browser
* Remove inline styles (width and height) from ImagePlaceholder in ProductElements > Image block
Inline height took precedence over the inherited styles which made the placeholder image skewed (in loading and loaded state). Removal of those styles allows the ImagePlaceholder to adapt the height to the available space keeping the ratio or inherit the styles from the parent
* Remove inline styles (width and height) from placeholder image in ProductImage.php block
Inline styles applied to the placeholder image of ProductImage block were overriden by other styles with higher specificity, which made them redundant. Additionally, corresponding styles were removed from the placeholder image from Editor code as they caused UI glitches. Additional proof that it's safe to remove them is in the first commit in this branch, the purpose of which was to fix those styles as there was a typo which corrupted them and eventually inline width and height were ignored by the browser and not applied to the element
* Add test to check placeholder image renders without width and height inline attributes
This is to prevent adding inline width and height attributes so the sizing of the placeholder image is controlled by the inherited styles or element styles, in the same way as a regular product image
* Fix TypeScript errors in the block test file of Product Image
* Add generic alt text to placeholder image
Alt text added in this commit is a generic text, not description of the actual image. That's because the image itself is set externally through the settings and may change over time
* Revert adding placeholder image alt text and add comments to make the empty alt explicit
After a Github discussion: https://github.com/woocommerce/woocommerce-blocks/pull/7651\#discussion_r1019560494 it was decided the placeholder should NOT have alt text as it serves the purpose of decorative image. According to the guidelines decorative images should not have alt text: https://www.w3.org/WAI/tutorials/images/decorative/. Comments were added also to other places where it happens
* bot: update checkstyle.xml
Co-authored-by: Karol Manijak <karolm@Karols-MacBook-Pro.local>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Make loading placeholder colors match the current font color
Currently, the loading placeholder effect has a default gray color. However, since users can modify their themes with the Site Editor and choose a different set of colors for their websites, it would be interesting to make those placeholders match the color palette.
In this commit, the idea was to modify the `placeholder` mixin to replace the transparent font color with the current color and also modify the background-color and the linear-gradient to match the current font color. Furthermore, transparency was added to the middle color of the linear-gradient so we can keep the loading animation close to what it currently is.
* Add opacity to placeholder mixin
Before our changes, when the font color was dark, we had a lighter placeholder background color. After the changes the color is currently darker than before so the idea for this commit is to change the opacity of the placeholder in a way that the current color blends with the background color set for the theme.
* Change placeholder mixin opacity
After testing different combinations of colors, we decided to change the opacity to 0.15 so when the font color is darker the placeholder will have a lighter background color.
* bot: update checkstyle.xml
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Add actions and selectors for new paymemt status
* Remove set_complete from reducer
* Replace all usages of getCurrentStatus with specific sepectors
* Replace all `setCurrentStatus` with individual actions
* Update docs
* Removed currentStatus
* bot: update checkstyle.xml
* Update docs/third-party-developers/extensibility/data-store/payment.md
Co-authored-by: Thomas Roberts <5656702+opr@users.noreply.github.com>
* Address Thomas feedback
* Add link to deprecated message
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Thomas Roberts <5656702+opr@users.noreply.github.com>
* Bump version number of @types/wordpress__blocks
* bot: update checkstyle.xml
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Empty commit for release pull request
* Display correct block template when filtering by attribute (https://github.com/woocommerce/woocommerce-blocks/pull/7640)
* Fix error when trying to access the queried object when it's null (https://github.com/woocommerce/woocommerce-blocks/pull/7664)
* Fix error when trying to access the queried object when it's null.
* Check if the `slug` exists
* Use the taxonomy name instead of the slug, otherwise it returns false
* Update readme changelog
* Add testing notes
* Improve testing notes format
* Bumping version strings to new version.
Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Albert Juhé Lluveras <contact@albertjuhe.com>
Co-authored-by: Alba Rincón <albarin@users.noreply.github.com>
Co-authored-by: Alba Rincón <alba.rincon@automattic.com>
* Remove the experimental flag that's used to include thunks in wp.data
* bot: update checkstyle.xml
* Fix ts error from previous PR
* bot: update checkstyle.xml
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Fix error when trying to access the queried object when it's null.
* Check if the `slug` exists
* Use the taxonomy name instead of the slug, otherwise it returns false
* Add attributes, settings, and editor PQ settings.
- Adds isDescendentOfQueryLoop attribute and sets up usage in editor.
- Connects Context (via useContext) in editor.
- Sets up necessary hierarchy in block index file settings.
* Update parent inner blocks config.
Reassign parent array to ancestor array which allows for blocks to be
included with more flexibility - i.e., added within groups that are
children of the ancestor block.
* Add dynamic render function for PQ support.
* Update to use correct classnames on PHP side.
SSR markup was accidentally using rating classname instead of sku so it
was not applying the proper text transform seen in the editor.
* Rename BlockAttributes type to Attributes
This keeps things consistent with the type naming on the other blocks.
* Remove redundant spread of sharedConfig object.
We don't need to spread the `sharedConfig` object into the `blockConfig`
object when defining `blockConfig` since we spread/merge these two
objects when registering the block via `registerExperimentalBlockType`.
* bot: update checkstyle.xml
* bot: update checkstyle.xml
* Empty commit to trigger checks.
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Remove isExpressPaymentMethodActive and paymentStatus.isDoingExpressPayment from the payment store
* Remove uneccessary paymentStatuses key from the payments store
* Move ValidatedTextInput and ValidationInputError to checkout package
* Include checkout package in tsconfig file
* Remove unnecessary index file
We export these components from packages/checkout/index.js instead
* Import ValidatedTextInput & ValidationInput error from checkout package
* Only add validationError.message when validationError is an object
* Explicitly add undefined to optional props
* Import isObject to test validationError
* Extend the HTML Input element attributes
* Use more performant useDispatch instead of dispatch
* Export component without withInstanceId hoc for testing
* Add tests for ValidatedTextInput
* bot: update checkstyle.xml
* Rename export of unwrapped component to have __
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Add woocommerce_blocks_loaded hook information to actions doc
* add docs to woocommerce_blocks_loaded hook inline
* fix docs
* Switch to updated wp-hooks/generator package
* Prevent syntax error in doc script from storeapi.php
* Remove footer from internal docs and examples
* Doc footer script should ignore examples and internal developer docs
Co-authored-by: Nadir Seghir <nadir.seghir@gmail.com>
Co-authored-by: Mike Jolley <mike.jolley@me.com>
* fixed method sig
* Updated to @wordpress/env@5.5.0 and set default PHP 7.4 for wp-env.
* updated Coding Standards flow to use PHP 8.0
* Added comment to E2E flows explaining what PHP version is used
* Revert "Updated to @wordpress/env@5.5.0 and set default PHP 7.4 for wp-env."
This reverts commit 696cd7f42edc9d9726b777cf4f83a501a6d63936.
* Added comment to Unit test flows explaining what PHP version is used.
Specified PHP version on .wp-env.json
* Fixed composer-lock.json version.
* Updated tests to run on PHP Unit 9.2.6
* Updated tests to run on PHP 8
* Reverted test, mismatched results between local and pipeline
* Removed Todo
* Updated platform overrides
* Update Migrationb tests with Mockery for PHP8 compat
* try at PHP unit flow matrix
* Fix blocks.ini invalid config
* Temp disable E2E
* Downgraded woocommerce/woocommerce-sniffs as it introduced new sniffs we should be handling on a different PR
* re-enable E2E tests
* blocks.ini fix
* revert blocks.ini fix
* Update @wordpress/env
* remove .htaccess mapping
* Fix permissions for tests
* Debug permissions
* Attempt at perm fix
* Attempt at perm fix
* Downgraded @wordpress/env
* Another attempt at upgrade @wordpress/env
* Attempt at cleaning wp-env before run
* Attempt at destroying wp-env before run. Disabled E2E.
* Attempt at destroying wp-env before run.
* debug wp-env data
* attempt at deleting wp-env data (destroy won't work due to prompt)
* re-enable E2E
* Fix deprecation warnings
* Cleaned wp-env data for E2E
* Fix perms for E2E
* Updated RateLimitsTests
* debug
* Force 7.4 for wp-env
* Run sh outside of npm
* Reverted E2E flow
* reverted wp-env-config.sh debug test
* reverted .wp-env.json phpVersion force
* Update tests/php/StoreApi/Utilities/ProductQueryFilters.php
Co-authored-by: Mike Jolley <mike.jolley@me.com>
* Update tests/php/StoreApi/Routes/CartExtensions.php
Co-authored-by: Mike Jolley <mike.jolley@me.com>
* Update tests/php/StoreApi/Routes/CartItems.php
Co-authored-by: Mike Jolley <mike.jolley@me.com>
* Update tests/php/StoreApi/Routes/Products.php
Co-authored-by: Mike Jolley <mike.jolley@me.com>
* Update tests/php/StoreApi/Routes/ProductCollectionData.php
Co-authored-by: Mike Jolley <mike.jolley@me.com>
* Update tests/php/StoreApi/Routes/Batch.php
Co-authored-by: Mike Jolley <mike.jolley@me.com>
* Update tests/php/StoreApi/Routes/Checkout.php
Co-authored-by: Mike Jolley <mike.jolley@me.com>
* Update tests/php/StoreApi/Routes/CartCoupons.php
Co-authored-by: Mike Jolley <mike.jolley@me.com>
* Update tests/php/StoreApi/Routes/ProductAttributes.php
Co-authored-by: Mike Jolley <mike.jolley@me.com>
* Update tests/php/StoreApi/Routes/Cart.php
Co-authored-by: Mike Jolley <mike.jolley@me.com>
* downgraded @wordpress/env to v4
* Reverted back to reflection class for pivate attribs manipulation on tests
* reverted JS unit testing job name
* Update tests/php/StoreApi/Formatters/TestMoneyFormatter.php
Co-authored-by: Mike Jolley <mike.jolley@me.com>
* Typo fix
Co-authored-by: Mike Jolley <mike.jolley@me.com>
* Import Currency type from correct location
* Add type for productPriceValidation argument
* Default tabIndex to undefined
null is not an acceptable value for the tabIndex prop, but undefined is, so we should use that.
* Explicitly set type of CartLineItemRow to ForwardRefExoticComponent
* bot: update checkstyle.xml
* Change CartLineItemRow to extend React.RefAttributes
* bot: update checkstyle.xml
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Remove `parent` from block config.
By removing the `parent` property from the block config, we can have
more flexibility to where we can use the pricing block - i.e., it does
not need to be a direct descendent of a `core/group` block.
* Remove unused save function/file.
* bot: update checkstyle.xml
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Alba Rincón <albarin@users.noreply.github.com>
* Add non-debounced versions of updatePaymentMethods
* Call undebounced function until store is ready then call debounced
* Reset debounce timer to 1 second
* Add better comments
* Try setting the trail setting of the debounce function
* Revert "Try setting the trail setting of the debounce function"
This reverts commit 040fb63cb612c19ac396396d1949b6429f402616.
Co-authored-by: Alex Florisca <alex.florisca@automattic.com>
* Convert product-elements/summary to TypeScript
* bot: update checkstyle.xml
* Update assets/js/atomic/blocks/product-elements/summary/index.ts
Co-authored-by: Tung Du <dinhtungdu@gmail.com>
* Resolve introduced TS error
* bot: update checkstyle.xml
* Remove default subproperties
* Add TODO to refactor this part in the future
* Make attribute type more strict
* Add more context to the todo regarding removing the HOC
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Tung Du <dinhtungdu@gmail.com>
* Prevent padding from placeholder instructions to be overriden
Inside the AttributeFilter component we are using a component Placeholder from the @wordpress/components library. This component has its own styles applied to itself including the part related to the instructions that are displayed.
Currently there is no way to override the styles specifically for the instructions part so the only possible way is to force the style to be applied over the inner styles set by the Placeholder component.
* Add a wrapper to the instructions content and apply the styles to it
The initial idea was to force the style to be applied by using `!important` on the padding-bottom property. However, after discussing more about it, it was decided that a better alternative is to add the instructions content to the body of the Placeholder content instead of relying on the `instructions` prop of the component.
This way, instead of forcing the style to be applied which could cause some side effects in the future, we are wrapping the instructions content in an HTML element that we control and, thus, can modify the styles independently of the external library it's being used (@wordpress/components).
* Add rate limiting to cart endpoints based on session
* Handle nonce and rate checks in permission_callback
* Rate limit checkout only
* Debug
* Unused AbstractRoute
* Code standards
* Modify core rate limit table
* Add rate limit at rest api level, not route level
* Rate limit helper
* Remove rate limit from routes
* Usused dep
* Remove custom error logic no longer needed
* Remove dependency
* Remove custom permission_callback
* Hash IP and handle null
* Remove error response handler
* revert error_to_response changes
* Remove add_response_headers
* Remove IDENTIFIER
* Remove white space
* Increase limit
* Missing class comment
* Move rate limiting code within store api codebase
* white space
* Fix return type
* Check rate limit expiry greater than now
* Remove x- prefix
* reorder functions
* remove table
* pass request to add_nonce_headers
* return early and avoid elseif on AbstractCartRoute:get_response()
* Refactor get_ip_address() before implementing options for functionality
* Change rate limit to 5 requests
Co-authored-by: Seghir Nadir <nadir.seghir@gmail.com>
* Change rate limit window to 60 seconds
Co-authored-by: Seghir Nadir <nadir.seghir@gmail.com>
* Disable rate limiting by default
Co-authored-by: Seghir Nadir <nadir.seghir@gmail.com>
* Updated limits comment
* Example for Forwarded header
* Updated "woocommerce_store_api_enable_rate_limit_check" filter doc
* Added filter for the Store API rate limit check proxy support
* Add an action here that carries over the IP address being blocked.
* Added logic around setting the action_id, and returns an error when ip cannot be determined for users not logged in.
* Renamed action for limit exceeded.
* Common rate limiting header naming prefix, and fixed comment typos.
* Doc for Rate Limiting (wip)
* Example for Rate Limiting docs
* Remove private IP range block for rate limiting
* Refactored get_response() to add nonce headers to response instead of request
* Disable batching for Checkout calls to prevent bypassing Rate Limiting.
* Removed redundant arg.
* package-lock.json update
* Removed repeated func calls.
* Fix failing tests.
* Tests wip.
* Request limit and timeframe are now constants for RateLimits utility class.
* Tests for Rate Limit headers.
* Reverted PHPUnit config to enable all tests again.
* Update src/StoreApi/Authentication.php comment wording
Co-authored-by: Thomas Roberts <5656702+opr@users.noreply.github.com>
* Removed possibly unnecessary get_ip_address() call.
* Changed wording on comment for get_ip_address() method.
* Simplified validate_ip() method.
* Fixed wrong header entry for "Forwarded" check.
* Unit testing for Authentication::get_ip_address()
* Comment explaining the reason to use ReflectionClass for testing get_ip_address().
* Support for error output outside batch request.
* MD linting.
* Refactor to implement options through a single filter.
* fixed md lint error and config file
* reverted accidental default func arg value removal
* re-enabled batch support for checkout
* action for limit exceed now also triggered in case we can't resolve the IP.
* Doc tweak.
* Return unresolved IP address when REMOTE_ADDR isn't set with proxy support disabled.
* Group unresolved ips for rate limiting
* Fixed bug where current limit wasn't properly initialized.
Co-authored-by: Nadir Seghir <nadir.seghir@gmail.com>
Co-authored-by: Paulo Arromba <17236129+wavvves@users.noreply.github.com>
Co-authored-by: Thomas Roberts <5656702+opr@users.noreply.github.com>
* Active Filters: Fix active filter grouping for Ratings and Stock Status
* bot: update checkstyle.xml
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Set a the color as white for the dark header/footer patterns
That way we make sure they will be visible no matter which theme is active.
* Adapt light patterns to inherit colors from theme
* Remove light from pattern names and color from social icons
* Make links inherit color
* Remove background
* Remove wp:page-list
Co-authored-by: Albert Juhé Lluveras <contact@albertjuhe.com>
Co-authored-by: Albert Juhé Lluveras <contact@albertjuhe.com>
* Remove 'update documentation' step from patch release checklist
* Make 'update documentation' a parent step in the release checklist
* Update .github/release-initial-checklist.md
Co-authored-by: Raluca Stan <ralucastn@gmail.com>
Co-authored-by: Raluca Stan <ralucastn@gmail.com>
* Add type to imports that need it
* Add type to imports that need it
* Fix the sanitize lint error
* Include missing dep
* Remove check from deps
* bot: update checkstyle.xml
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Use backslashes to fix webpack build on windows
* Update regex to use square brackets, and update copywebpack path for Windows
Co-authored-by: Seghir Nadir <nadir.seghir@gmail.com>
* Product Query: Fix pagination issue
* Product Query - Add support for the Filter By Price Block woocommerce/woocommerce-blocks#6790
Product Query - Add support for the Filter By Price Block
* fix query relation
* fix on sale query
* Product Query - Add support for the Filter By Attributes block woocommerce/woocommerce-blocks#6790
Product Query - Add support for the Filter By Attributes block
* fix bugged pagination and on-sale filter after refactor
* address feedback
* Product Query - Add support for the Filter By Stock Block woocommerce/woocommerce-blocks#6790
Product Query - Add support for the Filter By Stock Block
* Fix filter blocks: the data (e.g: max price or stock-status) match the variation woocommerce/woocommerce-blocks#7245
fix filter blocks: the data (e.g: max price or stock-status) match the variation
* disable phcs rules on top of the file
* replace parameter name
* fix eslint error
* Product Query: Fix pagination issue
* Product Query - Add support for the Filter By Price Block woocommerce/woocommerce-blocks#6790
Product Query - Add support for the Filter By Price Block
* fix query relation
* fix on sale query
* Product Query - Add support for the Filter By Attributes block woocommerce/woocommerce-blocks#6790
Product Query - Add support for the Filter By Attributes block
* fix bugged pagination and on-sale filter after refactor
* address feedback
* Product Query - Add support for the Filter By Stock Block woocommerce/woocommerce-blocks#6790
Product Query - Add support for the Filter By Stock Block
* address feedback