Commit Graph

2585 Commits

Author SHA1 Message Date
Albert Juhé Lluveras 71cfe52731 Update changelog 2021-04-12 12:18:59 +02:00
Seghir Nadir 7c06674bbc Load translation file for JS files (https://github.com/woocommerce/woocommerce-blocks/pull/4050) 2021-04-12 12:05:26 +02:00
Mike Jolley 7556d47b5c Fix TwentyX styling issues for cart/checkout form fields (https://github.com/woocommerce/woocommerce-blocks/pull/4046)
* Fix checkbox styling in 2020 and 2017 themes by setting input font size

* 2017 button hover style fixes

* Fix editor dark inputs

* Restore dark color
2021-04-12 12:03:36 +02:00
renovate[bot] 4703f5b5fa Lock file maintenance (https://github.com/woocommerce/woocommerce-blocks/pull/4052)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-04-12 10:46:47 +01:00
Albert Juhé Lluveras 79f4fccbd5 Use font color in payment methods border (https://github.com/woocommerce/woocommerce-blocks/pull/4051) 2021-04-09 17:19:32 +02:00
Thomas Roberts 98687d48d0 Add word-break: break-word to components title (https://github.com/woocommerce/woocommerce-blocks/pull/4049) 2021-04-09 16:01:34 +01:00
Seghir Nadir e668fbf1b6 provide fallback for extensions when store didn't load yet (https://github.com/woocommerce/woocommerce-blocks/pull/4033) 2021-04-09 15:56:11 +01:00
renovate[bot] f1d0458b54 Update dependency @types/react to v16.14.5 (https://github.com/woocommerce/woocommerce-blocks/pull/4043)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-04-09 15:52:39 +01:00
renovate[bot] 3e2cc4c8da Lock file maintenance (https://github.com/woocommerce/woocommerce-blocks/pull/4035)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-04-09 15:39:33 +01:00
Darren Ethier 52a16542fb Add note about including changelog for WooCommerce Core package updates for patch releases. 2021-04-08 13:29:03 -04:00
Darren Ethier cc9f94908a Update release-initial-checklist.md
Add note about including changelog in package bump for WooCommerce Core updates.
2021-04-08 13:27:39 -04:00
Seghir Nadir cda0252d12 unqeueue scripts (https://github.com/woocommerce/woocommerce-blocks/pull/4034) 2021-04-08 13:44:17 +01:00
Mike Jolley 25544f3ce4 Remove deprecated shortcode save handling from SSR Blocks (https://github.com/woocommerce/woocommerce-blocks/pull/4010) 2021-04-08 13:42:03 +01:00
Mike Jolley 9bdcbe0b4d Fix Circular Dependencies During Builds (https://github.com/woocommerce/woocommerce-blocks/pull/4025)
* Fix circular dependencies in Icons package

* CircularDependencyPlugin

* Fix deriveSelectedShippingRates CD

* Move useStoreNotices to context/hooks

* Move useStoreCart to base/context/hooks

* Move useStoreEvents to base/context/hooks

* Move collection/product hooks

* Move useStoreAddToCart

* Move useCustomerData

* move shipping hooks

* Move checkout and payment hooks

* Context should import hooks with relative paths

* Prevent circular dependency in store notices container components

* Move address fields to settings so they are shared

* Import PaymentMethod components direct

* relative import

* Fix select CD

* Move ValidationInputError

* Move components consumed by context

* Fix up internal imports in context

* fix CD in checkout package

* Separate providers

* Fixing context exports

* Fix base context hook import

* fix mocks

* Pass hooks to Slot Fills as Fill Props to avoid imports from base-context

* Export components, not hooks

* Pass props to ExperimentalOrderMeta

* Run CD plugin when using `npm start` only

* Rename CIRCULAR_DEPS to CHECK_CIRCULAR_DEPS

* Remove duplicate key from rebase

* Move packages component back to main file

* Remove dashicon module replacement

* Restore SVG import from package not external

* Move core locale handling to avoid impact settings package size

* Remove deleted file from rebase
2021-04-08 13:31:12 +01:00
Michael P. Pfeiffer 4ea7a8d138 Cart: fix headline alignment in empty cart (https://github.com/woocommerce/woocommerce-blocks/pull/4044) 2021-04-08 08:48:59 +02:00
Albert Juhé Lluveras 24b01bb81e Remove useCheckoutRedirectUrl() (https://github.com/woocommerce/woocommerce-blocks/pull/4032) 2021-04-07 18:11:39 +02:00
renovate[bot] cb3b26def1 Update dependency @testing-library/jest-dom to v5.11.10 (https://github.com/woocommerce/woocommerce-blocks/pull/4042)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-04-07 02:55:45 +00:00
renovate[bot] 405a4ec1ee Update babel monorepo to v7.13.14 (https://github.com/woocommerce/woocommerce-blocks/pull/4041)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-04-07 00:56:42 +00:00
Albert Juhé Lluveras 7ac2fb3ec7 Add emitResponse prop to the Payment Method Nodes props docs (https://github.com/woocommerce/woocommerce-blocks/pull/3999)
* Typo

* Add emitResponse prop in the Payment Method Nodes props docs
2021-04-06 18:07:55 +02:00
Albert Juhé Lluveras 7744af9818 Update @woocommerce/components 2021-04-06 15:30:01 +02:00
Mike Jolley f67d25ffbd Add KSES before formatting content and for other HTML content (https://github.com/woocommerce/woocommerce-blocks/pull/2)
* Apply kses before wc_format_content

* Add kses to price HTML strings

* KSES in product grid

* kses in featured product

* Switch short description filter to wc_format_content in featured product block
2021-04-06 15:27:36 +02:00
Mike Jolley 8f78528245 Enable Google Analytics Integration (https://github.com/woocommerce/woocommerce-blocks/pull/4020)
* Remove experimental flag

* Add experimental docs
2021-04-06 12:59:31 +01:00
Thomas Roberts 6014a3d046 Update @automattic/data-stores and remove mapped-types.ts (https://github.com/woocommerce/woocommerce-blocks/pull/4024)
* Update @automattic/data-stores to 2.0.1 and remove mapped-types.ts

* Update exported types of CartAction
2021-04-06 12:15:14 +01:00
Albert Juhé Lluveras f22ab7f4f4 Fix Featured Product and Featured Category button alignment (https://github.com/woocommerce/woocommerce-blocks/pull/4028) 2021-04-06 08:16:55 +02:00
Raluca Stan 8d68dceacb Update to 4.9.0-dev version 2021-04-01 12:13:18 +01:00
github-actions[bot] 65fae9a44c Release: 4.8.0 (https://github.com/woocommerce/woocommerce-blocks/pull/4018)
Create testing instructions for 4.8.0 realease

Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Raluca Stan <ralucastn@gmail.com>
2021-04-01 11:55:08 +01:00
Albert Juhé Lluveras 9e5b5041b8 Update experimental flags documentation (https://github.com/woocommerce/woocommerce-blocks/pull/4017) 2021-04-01 11:34:09 +02:00
Mike Jolley 86e54c19a0 Add Google Analytics Product Block and Checkout Events (https://github.com/woocommerce/woocommerce-blocks/pull/3967)
* Move PHP GA code to service class

* product search tracking

* Improve inline script handling

* trackViewProduct

* Product link events

* Rename events

* Add checkout specific event hook

* Prevent useStoreCart response changing on rerender

* Move address step into form so progress can be more easily tracked

* Checkout progress events

* Checkout events

* Tidy up tracking code

* Track error exceptions

* add_payment_info event

* remove console log

* Track product grid block views Closes woocommerce/woocommerce-blocks#3959

* Checkout context was unused

* Add comments to checkout events

* correct step number

* Standardize prefixes for events

* Tracking requires GA extension

* Fix select content events

* adjust product list render tracking so it's inline

* Inline search event handling

* remove render callback hook

* revert render callback changes

* Update GA bootstrap code
2021-03-31 15:22:27 +01:00
renovate[bot] 40c569d9ef Update dependency @stripe/stripe-js to v1.13.2 (https://github.com/woocommerce/woocommerce-blocks/pull/3995)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-03-31 16:07:35 +02:00
Raluca Stan 853a05c77c Fix click on Proceed to checkout bug when Coupon error is visible. (https://github.com/woocommerce/woocommerce-blocks/pull/3996)
* Fix click on Proceed to checkout bug when Coupon error is visible.

The bug happened because of the layout shift produced by the error message disappearance.
2021-03-31 10:50:00 +01:00
Mike Jolley 5e997628b5 Avoid get_billing and get_shipping method when updating the order (https://github.com/woocommerce/woocommerce-blocks/pull/4013) 2021-03-31 11:26:59 +02:00
renovate[bot] 3373219b2a Update dependency @testing-library/user-event to v12.8.3 (https://github.com/woocommerce/woocommerce-blocks/pull/4016)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-03-31 11:12:56 +02:00
renovate[bot] a0512be2bd Pin dependencies (https://github.com/woocommerce/woocommerce-blocks/pull/4015)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-03-31 01:50:19 +00:00
renovate[bot] 51c188f059 Lock file maintenance (https://github.com/woocommerce/woocommerce-blocks/pull/4007)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-03-29 15:15:55 +02:00
Thomas Roberts 00b20bdac7 Strip tags from exceptions that are converted from notices (https://github.com/woocommerce/woocommerce-blocks/pull/4005)
* Strip tags that are added to notices

* Add test to ensure HTML is stripped by convert_notices_to_exceptions

* Test function directly, rather than through validate_cart_items

* Apply correct formatting to tests/php/StoreApi/Utilities/NoticeHandler.php

Co-authored-by: Albert Juhé Lluveras <contact@albertjuhe.com>

Co-authored-by: Albert Juhé Lluveras <contact@albertjuhe.com>
2021-03-29 10:51:12 +01:00
Darren Ethier 5db03aa52c Updating release pull request workflow
Trying a different way of adding a commit to allow for pr creation on release pull requests. This way reduces both the number of commits and requires no actual file changes.
2021-03-24 13:35:50 -04:00
Thomas Roberts 1a0b432669 Ensure cart changes remain after using back button to get back to the cart (https://github.com/woocommerce/woocommerce-blocks/pull/3960)
* Add cartUpdate middleware

* Include timestamp for when cart data was generated

* Add getCartFromApi action

* Check whether cart can be hydrated or needs to be fetched from API

* Add cartDataIsStale action and remove getCartFromApi action

* Add isCartDataStale selector

* Don't load cart until staleness check is complete

* Add comment to ease worry about locaStorage execution

* Correct doc block and fix typographical error

* Cater for lastCartUpdate or the timestamp being undefined

* Include @woocommerce/api and @woocommerce/e2e-utils

* Add getNormalPagePermalink test utility

This will allow us to get the permalink of a "normal" page, i.e. one that is not using the block editor.

* Add getBlockPagePermalink test utility

This will get the permalink for a page using the Block editor.

* Emit action to update cart staleness in all execution paths

* Add visitPostOfType function

This will allow us to visit the editor page for a post based on its name and post type.

* Add functions to get permalinks from editor pages

* Add front-end tests for cart

* Update package-lock.json

* Create local function to ensure the page permalink is visible

* Change functions for getting permalinks
They were often failing for unknown reasons, these _somehow_ make them more stable.

* Add logging for GitHub actions

* Add more logging for tests

* Add more logging for tests

* Add more logging for tests

* Wait for networkidle on back

* Remove logging except timestamp

* Wait for timestamp to be added to localStorage

* Split tests to make runs slightly shorter

* Wait for add to cart request before continuing test

* Fix formatting in cart.test.js

* Rename cartDataStale to setIsCartDataStale

* Create constant for localStorage timestamp name

* Rename cartDataIsStale to isCartDataStale

This is for consistency, the action to change this is called setIsCartDataStale - I think this reads better.

* Use cleaner logic when determining if the cart should render or fetch

* Change docblock for isCartDataStale selector

* Remove boolean cast from SET_IS_CART_DATA_STALE reducer

* Set longer timeouts for frontend cart tests

* Enclose cart staleness checks in condition/prevent unnecessary execution

* Remove unnecessary boolean cast from selector

* Use constant for local storage key in tests

* Use new localstorage key in tests. cant access constants in page context
2021-03-24 13:28:11 +00:00
renovate[bot] bded0d6a67 Update dependency @babel/preset-env to v7.13.12 (https://github.com/woocommerce/woocommerce-blocks/pull/3994)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-03-24 03:12:15 +00:00
Albert Juhé Lluveras c7bec5bcd2 Remove checks for WP 5.4 from e2e tests (https://github.com/woocommerce/woocommerce-blocks/pull/3993)
* Remove checks for WP 5.4 from e2e tests

* Update e2e local environment set up docs
2021-03-23 15:09:04 +01:00
Seghir Nadir ef03089245 Add scope to PluginArea (https://github.com/woocommerce/woocommerce-blocks/pull/3992) 2021-03-23 12:48:08 +00:00
Thomas Roberts 1c986ebbf8 Split unit tests up from e2e tests (https://github.com/woocommerce/woocommerce-blocks/pull/3989) 2021-03-23 12:31:42 +00:00
Darren Ethier c622dc653c Expose the shouldSavePayment method value to registered payment methods (https://github.com/woocommerce/woocommerce-blocks/pull/3990)
* Expose the shouldSavePayment method value to registered payment methods

* update docs for `shouldSavePayment`
2021-03-22 13:55:12 -04:00
Mike Jolley 5f42b2312c Update data-controls and expect console logs from deprecated select controls so tests pass (https://github.com/woocommerce/woocommerce-blocks/pull/3991) 2021-03-22 17:13:48 +00:00
Darren Ethier ae0b1d6b7d Refactor Payment Methods Integration API to fire `onPaymentProcessing` event with saved tokens. (https://github.com/woocommerce/woocommerce-blocks/pull/3982)
* Implement `started` action creator.

Also for TS typing I changed `paymentMethodData` to be optional for both the `success` and `started` action creators.

This is because the behaviour allows for paymentMethodData to be retained in the state if it is not explicitly provided on dispatch.

* Implement started action creator on the exposed payment status dispatcher.

The implementation now allows for receiving payment method data when the `start` status is dispatched.

* Don’t overwrite payment method data when `success` status is set.

It is intended that if paymentMethodData is undefined, that is simply passed through to the dispatched action. This signals the reducer to retain the existing paymentMethodData in state (when undefined).

The correct way to clear the paymentMethodData is to either explictly provide an empty object, or set the status to pristine.

* Fix types for incoming paymentMethodData

* Implement receiving paymentMethodData in reducer.

This changeset also configures the reducer to retain the existing paymentMethodData in state (and related correlated information0 when the provided paymentMethodData property is undefined.

The only time paymentMethodData should be reset in state is when it is explicitly provided or the status is set to PRISTINE.

* Fix types for started action dispatcher.

* Explicitly clear paymentMethodData state when express payment started.

Also restores previous paymentMethodData when express payment cancelled.

* Switch saved tokens to utilize the payment method status started dispatched action instead of success.

This change ensures that savedToken handlers registered by payment methods have access to the `onPaymentProcessing` checkout event.

* fix typedef

Really just need to ensure types are used anywhere, this is a temporary change due to the time sensitive needs for this PR.

* Update assets/js/base/context/cart-checkout/payment-methods/reducer.ts

Co-authored-by: Albert Juhé Lluveras <contact@albertjuhe.com>

Co-authored-by: Albert Juhé Lluveras <contact@albertjuhe.com>
2021-03-22 10:02:36 -04:00
renovate[bot] f4668f403e Lock file maintenance (https://github.com/woocommerce/woocommerce-blocks/pull/3987)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-03-22 13:40:57 +00:00
Albert Juhé Lluveras b6403bd66c Show compatibility notice when adding the Cart and Checkouts blocks in the editor (https://github.com/woocommerce/woocommerce-blocks/pull/3937)
* add guide

* Add missing translation strings

* Use localStorageState so dismissing the compatibility notice is persisted

* Add types

* Split notice text in two paragraphs

* Update notice texts

* Remove unnecessary empty line

* Cleanup

* Prevent Gutenberg stealing focus (and closing) guide modal

* Add tests

* Don't show compatibility notice in WP <= 5.4

* Don't have tests inside if clauses

* Fix test breaking in latest Gutenberg version

* Remove unnecessary openDocumentSettingsSidebar

* Rename CompatibilityNotice to CartCheckoutCompatibilityNotice

* Add try/catch blocks around JSON operations in useLocalStorageState

* Create useCompatibilityNotice hook

Co-authored-by: Seghir Nadir <nadir.seghir@gmail.com>
2021-03-19 11:05:42 +01:00
renovate[bot] 2aa3f49d47 Update dependency @testing-library/react-hooks to v5.1.0 (https://github.com/woocommerce/woocommerce-blocks/pull/3971)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-03-18 00:04:22 +00:00
renovate[bot] 5f508b4117 Update dependency @automattic/color-studio to v2.5.0 (https://github.com/woocommerce/woocommerce-blocks/pull/3970)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-03-17 21:51:28 +00:00
Darren Ethier eba9361cb8 Update the `wp-env` package to latest (https://github.com/woocommerce/woocommerce-blocks/pull/3972)
* update wp-env package

* bump versions in e2e workflows

* Fix job names

* explicitly set core WP version

without this, the `mappings` configuration option causes breakage due to what appears to be a bug in the package.

* Change how GB install job is setup

`wp-env` currently has an issue where if you define the explicit WP version to install (vs just what is included by default), permissions aren’t configured correctly for the WP folder in the containers. So the ability to install plugins via cli is not possible. This only surfaces in linux environments.

I tried a number of ways to work around this but in the end the only foolproof way is to configure the environment to be setup with the installed plugin.
2021-03-17 11:06:36 -04:00
Seghir Nadir 835da587f3 update version 2021-03-16 17:34:08 +01:00
github-actions[bot] 0d8c8567c1 Release: 4.7.0 (https://github.com/woocommerce/woocommerce-blocks/pull/3966)
* generating changeset for pull request

* generating changeset for pull request

* add changelog and update WP versions

* add testing notes

* Bumping version strings to new version.

Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Seghir Nadir <nadir.seghir@gmail.com>
2021-03-16 17:33:01 +01:00
Mike Jolley 06ccdbe331 Tests: Rename changeQuantity to setItemQuantity
This was broken in dc18112911
2021-03-16 12:23:33 +00:00
Mike Jolley dc18112911 Google Analytics Integration - Action Hooks and initial tracking events (https://github.com/woocommerce/woocommerce-blocks/pull/3953)
* Remove item and change quantity doAction hooks

* Cart event

* Event/Action system for cart events

* GA implementation

* Revert some unrelated commits

* revert change

* Listing impression config for all products

* Category support

* remove unrelated change

* Remove listype and block import

* wrap action in try catch

* Tidy

* Only load analytics scripts in experimental builds

* Made console log more specific

* Wrap script reg in experimental check
2021-03-16 11:40:22 +00:00
renovate[bot] 73e3bd9ace Lock file maintenance (https://github.com/woocommerce/woocommerce-blocks/pull/3964)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-03-16 10:11:19 +00:00
Raluca Stan 762634155b Fix cart preview when shipping calculator is false and core setting for require address is true (https://github.com/woocommerce/woocommerce-blocks/pull/3946)
* Fix cart preview when shipping calculator is false and core setting for require address is true

* Type base/components/cart-checkout/totals/shipping/index file

* Fix return statement for ShippingLocation component

* move logic to preivewCart

Co-authored-by: Seghir Nadir <nadir.seghir@gmail.com>
2021-03-16 10:57:04 +01:00
Raluca Stan 9a0a762057 Fix block elements that don't play well with dark backgrounds (https://github.com/woocommerce/woocommerce-blocks/pull/3887)
* Remove custom style for Product search block and  ProductByCategoryBlock

These buttons are overwriting the default button appearance used in other blocks,
making the UI inconsistent. They lack focus and are not visible on dark backgrounds

* Replace the remove filter icon with a svg using currentColor as fill

* Fix Price Slider range icons visual bug

* Adjust close active filter icon colors to work for white as currentColor
2021-03-16 10:43:04 +01:00
Seghir Nadir fae5a0d7fd Update extensions types and fix inconsistent type from server. (https://github.com/woocommerce/woocommerce-blocks/pull/3908)
* Update extensions types

* fix typo

* Update assets/js/type-defs/cart.ts

Co-authored-by: Mike Jolley <mike.jolley@me.com>

* rebase

Co-authored-by: Mike Jolley <mike.jolley@me.com>
2021-03-16 10:16:56 +01:00
Mike Jolley 38775590d5 Allow FormattedMonetaryAmount to deal with string based numbers (https://github.com/woocommerce/woocommerce-blocks/pull/3958) 2021-03-15 15:03:47 +00:00
Darren Ethier afc93035fd Add new config property for payment method registration that allows for additional saved customer token handling. (https://github.com/woocommerce/woocommerce-blocks/pull/3961)
* Add new config for saved token processing by payment methods.

* Implement new saved token handling config from registered payment methods.

* Implement new saved token handling config from registered payment met… … 2b42205 …hods.

* make sure saved token handler component is only loaded when a token payment method is selected
2021-03-15 04:50:49 -04:00
Mike Jolley edcd776a50 Always set value (https://github.com/woocommerce/woocommerce-blocks/pull/3957) 2021-03-12 11:44:34 -05:00
Albert Juhé Lluveras 56092fcdc4 Remove extra padding from payment methods with no description (https://github.com/woocommerce/woocommerce-blocks/pull/3952)
* Remove extra padding from payment methods with no description

* Fix typo in a code snippet in payment method docs

* Remove unnecessary div
2021-03-12 15:40:09 +01:00
Mike Jolley ab8011bb4b Only return a single handle for block styles (https://github.com/woocommerce/woocommerce-blocks/pull/3932) 2021-03-12 11:12:14 +00:00
Seghir Nadir a422dfd2e4 Fix save payment checkbox not showing (https://github.com/woocommerce/woocommerce-blocks/pull/3950) 2021-03-11 15:40:18 -05:00
Albert Juhé Lluveras 70887e442a Add docs on how to run e2e tests with a specific environment locally (https://github.com/woocommerce/woocommerce-blocks/pull/3945) 2021-03-11 16:57:48 +01:00
Seghir Nadir dff4772d82 Add types to hooks (https://github.com/woocommerce/woocommerce-blocks/pull/3913)
* type hooks

* type useStoreCart

* type the rest

* Remove old typedefs

* Specify that the return value from useDispatch is a Promise< void >

* Change return type of removeItem

* If ref.current is undefined then return value without checking shallowEq

* Revert "Specify that the return value from useDispatch is a Promise< void >"

This reverts commit 97863bd584d38024398913a79ce63fa6b964846a.

* Remove type parameter from removeItem and changeCartItemQuantity

* Change action return type to cater for generator functions

* Remove type parameter from addItemToCart

* Add mapped types file to help with actions that are generator functions

* Include addItemToCart in return types of cart actions

* Use custom DispatchFromMap

* Add todos for why we've redefined functionality that exists in Calypso

* update types

* remove fromEntries and use polyfill

* address review

* ignore ts no shadow

* fix test errors

Co-authored-by: Thomas Roberts <thomas.roberts@automattic.com>
2021-03-10 15:03:26 +00:00
renovate[bot] 1a010d70fa Update babel monorepo to v7.13.10 (https://github.com/woocommerce/woocommerce-blocks/pull/3939)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-03-10 13:34:32 +00:00
renovate[bot] 53b79e651e Update dependency @stripe/react-stripe-js to v1.4.0 (https://github.com/woocommerce/woocommerce-blocks/pull/3941)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-03-10 12:10:20 +00:00
renovate[bot] e0900d6b15 Update dependency @octokit/graphql to v4.6.1 (https://github.com/woocommerce/woocommerce-blocks/pull/3940)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-03-10 11:41:35 +00:00
renovate[bot] fe402f37cc Update dependency @stripe/stripe-js to v1.13.1 (https://github.com/woocommerce/woocommerce-blocks/pull/3942)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-03-10 11:40:59 +00:00
Albert Juhé Lluveras 85d450a00c Hide payment methods that have missing dependencies and display an error in the admin (https://github.com/woocommerce/woocommerce-blocks/pull/3920)
* Hide payment methods that have missing dependencies and display an error in the admin

* Clarify docs

* Use wp_scripts() instead of the global

* Don't localize logs and always show the docs link

* Add wards to ensure keys exist

* Show a console error instead of a notice in the admin
2021-03-09 11:15:18 +00:00
Raluca Stan e187b9ef88 Update/typescript checkout shipping (https://github.com/woocommerce/woocommerce-blocks/pull/3925)
* Type shipping related hooks and packages

* Move component interface from shared shipping types file

* Fix Typescript import errors

* Type FormattedMonetaryAmountProps

* Change FormattedMonetaryAmountProps's value prop type

Looks like TotalsItem was the only on sending '-' as a value and it looks like it’s no longer passed through.

* Move `displayType` as a prop on FormattedMonetaryAmount

* Spacing

* Spacing

Co-authored-by: Mike Jolley <mike.jolley@me.com>
2021-03-09 10:55:24 +00:00
Mike Jolley 86328758bb Add billing data to payment method registration, convert cart/checkout context provider to typescript (https://github.com/woocommerce/woocommerce-blocks/pull/3922)
* Add billingData within usePaymentMethodRegistration

* Add typescript config

* Rename to TS

* Typing in context

* FIxed TS warnings

* Typed event emitters

* subscribers > observers

* Renaming some types

* Remove duplicate definition in tsconfig

* removed undefined check
2021-03-09 10:50:51 +00:00
Albert Juhé Lluveras 29dd816e1d Fix storybook after TS changes (https://github.com/woocommerce/woocommerce-blocks/pull/3938) 2021-03-09 10:54:38 +01:00
renovate[bot] aa8e19b12e Lock file maintenance (https://github.com/woocommerce/woocommerce-blocks/pull/3930)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-03-09 09:19:30 +00:00
Darren Ethier ebf6752f84 Update payment-method-integration.md
Fix indentation on code example.
2021-03-08 08:35:56 -05:00
Mike Jolley 08e8e4dd59 Added docs for canMakePayment props 2021-03-08 11:22:04 +00:00
Raluca Stan 627f884880 Update @wordpress/is-shallow-equal to v3.0.1 (https://github.com/woocommerce/woocommerce-blocks/pull/3919)
This update is made in order to have the typed version of the package available.
2021-03-05 15:09:32 +00:00
Albert Juhé Lluveras 0e1b1e3579 Add types to packages directory (https://github.com/woocommerce/woocommerce-blocks/pull/3914)
* Add Typescript to Panel and Icon

* Fix Icon component import

* Convert packages/checkout/utils/validation/index to TypeScript

* Convert checkout registry to TypeScript

* Add return type to mustContain

* Add TypeScript to Totals components from @woocommerce/blocks-checkout

* Add TypeScript to @woocommerce/price-format

* Use types from @woocommerce/type-defs when possible

* Allow empty objects when loading

* Fix formatting in payment-method-data-context.js

* Add missing return types

* Fix up price warnings

* Fix more warnings in FormattedMonetaryAmount

Co-authored-by: Raluca Stan <ralucastn@gmail.com>
Co-authored-by: Thomas Roberts <thomas.roberts@automattic.com>
Co-authored-by: Mike Jolley <mike.jolley@me.com>
2021-03-05 14:03:48 +00:00
Thomas Roberts ba16cf9b74 Inherit line height in Cart item total (https://github.com/woocommerce/woocommerce-blocks/pull/3897) 2021-03-05 14:02:11 +00:00
Mike Jolley f856756ace Update Single Product Test (https://github.com/woocommerce/woocommerce-blocks/pull/3924)
* Update Single Product Test

* duplicate test

* Try adding npm install @wordpress/e2e-tests@1.9.1

* @wordpress/e2e-test-utils@4.5.0
2021-03-05 13:33:58 +00:00
Mike Jolley 8da192a73f Update Storybook and alias `wordpress-components` (https://github.com/woocommerce/woocommerce-blocks/pull/3878)
* Update storybook

* Add alias for wordpress-components

* update package lock
2021-03-04 16:58:10 +00:00
Albert Juhé Lluveras 0c698b25b2 Add OrderSummary test for woocommerce/woocommerce-blocks#3876 (https://github.com/woocommerce/woocommerce-blocks/pull/3909) 2021-03-04 16:07:57 +01:00
renovate[bot] e922ced292 Lock file maintenance (https://github.com/woocommerce/woocommerce-blocks/pull/3896)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-03-04 15:09:42 +01:00
Seghir Nadir 8a89bb0dc0 Sync cart item quantity if its Implicitly changed. (https://github.com/woocommerce/woocommerce-blocks/pull/3907)
* sync quantity when changed outside component

* fix sync hook
2021-03-04 14:56:56 +01:00
renovate[bot] 050189b373 Pin dependencies (https://github.com/woocommerce/woocommerce-blocks/pull/3910)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-03-03 05:11:39 +00:00
renovate[bot] 4f23dfeba7 Update babel monorepo (https://github.com/woocommerce/woocommerce-blocks/pull/3911)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-03-03 03:33:41 +00:00
Darren Ethier d70cffa580 bump version after release 2021-03-02 15:34:41 -05:00
github-actions[bot] 7c0ed1e414 Release: 4.6.0 (https://github.com/woocommerce/woocommerce-blocks/pull/3900)
* generating changeset for pull request

* generating changeset for pull request

* update changelog in readme.txt

* fix zip script to account for spaces in path

* fix deploy script to account for paths

* add testing notes

* Update docs/testing/releases/460.md

Fix incorrect version reference.

* Show cart item subtotal instead of total in Cart and Checkout blocks (https://github.com/woocommerce/woocommerce-blocks/pull/3905)

* Show cart item subtotal instead of total in Cart and Checkout blocks

* Update test that would have caught this error

* Update changelog and testing steps

* update docs index

* update testing zip file

* update changelog in readme.txt

* update github-deploy to account for spaces in local path

* Bumping version strings to new version.

* add tsconfig.base.json to excludes for release builds

Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Darren Ethier <darren@roughsmootheng.in>
Co-authored-by: Albert Juhé Lluveras <contact@albertjuhe.com>
2021-03-02 15:31:13 -05:00
Albert Juhé Lluveras fcca5bf948 Only set wp-edit-post style dependency if it has already been enqueued (https://github.com/woocommerce/woocommerce-blocks/pull/3898)
* Only set wp-edit-post style dependency if it has already been enqueued

* Update comment so it references to the new PR as well
2021-03-02 15:53:23 +01:00
Albert Juhé Lluveras 66d0e47427 Show cart item subtotal instead of total in Cart and Checkout blocks (https://github.com/woocommerce/woocommerce-blocks/pull/3905)
* Show cart item subtotal instead of total in Cart and Checkout blocks

* Update test that would have caught this error
2021-03-02 15:47:43 +01:00
Darren Ethier 53e4c40c56 Improvements to payment methods integration docs (https://github.com/woocommerce/woocommerce-blocks/pull/3890)
* Client side improvement to the payment method integration docs

* improvements to php docs

* Improvements to server side documentation of Payment Method Checkout blocks integration

* Update docs/extensibility/payment-method-integration.md

Co-authored-by: Allen Smith <loranallensmith@gmail.com>

* Update docs/extensibility/payment-method-integration.md

Co-authored-by: Allen Smith <loranallensmith@gmail.com>

* Update docs/extensibility/payment-method-integration.md

Co-authored-by: Allen Smith <loranallensmith@gmail.com>

* Update docs/extensibility/payment-method-integration.md

Co-authored-by: Allen Smith <loranallensmith@gmail.com>

* More edits addressing feedback.

* Update docs/extensibility/payment-method-integration.md

Co-authored-by: Allen Smith <loranallensmith@gmail.com>

Co-authored-by: Allen Smith <loranallensmith@gmail.com>
2021-03-01 12:52:35 -05:00
Darren Ethier 72d7c46472 Followups and improvements on TS implementation in the Cart data store. (https://github.com/woocommerce/woocommerce-blocks/pull/3893)
* Fix tslint warnings

* Install @automattic/data-stores to get access to some type generics for use with our data stores.

* improve ts typing of cart-data store.

* fix incorrect rebase conflict resolution.
2021-03-01 12:47:22 -05:00
Darren Ethier 253d29b9e1 Move `triggerFetch.setNonce` calls into separate function and add appropriate guards. (https://github.com/woocommerce/woocommerce-blocks/pull/3892) 2021-03-01 06:22:24 -05:00
renovate[bot] 65bf332397 Update dependency @stripe/react-stripe-js to v1.3.0 (https://github.com/woocommerce/woocommerce-blocks/pull/3885)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-26 14:54:13 +00:00
Thomas Roberts e49a7eaffd Update Label component to TSX (https://github.com/woocommerce/woocommerce-blocks/pull/3889)
* Add tsconfig to components directory and include it as project

* Add @types/classnames package

* Migrate Label component to TSX

* Remove unused imports from Label component

* fix package-lock.json

It was generated with npm 7 and we don’t support that yet (and that update should be done in a separate pull)

* Add interface for LabelProps and implement.

Also:
- import `Fragment` from @wordpress/element.
- import `HTMLAttributes` explicitly as a type from react (@types/wordpress__element doesn’t export this interface).

* fix jest configuration

Co-authored-by: Darren Ethier <darren@roughsmootheng.in>
2021-02-26 11:57:49 +00:00
renovate[bot] cb2dbb1591 Update babel monorepo (https://github.com/woocommerce/woocommerce-blocks/pull/3884)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-24 10:30:43 +00:00
renovate[bot] 42db41a06d Update Node.js to v12.21.0 (https://github.com/woocommerce/woocommerce-blocks/pull/3883)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-24 08:55:15 +00:00
renovate[bot] 5a5de268fe Pin dependencies (https://github.com/woocommerce/woocommerce-blocks/pull/3882)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-24 04:45:58 +00:00
Darren Ethier af99c16931 Add TypeScript support and convert cart data store to TypeScript (https://github.com/woocommerce/woocommerce-blocks/pull/3768)
* add typescript support

* Add type declarations for Cart and CartResponse interfaces

* make sure we’re resolving .ts files as well as .js files on imports

* add more types

* type the cart data store

* Apply suggestions from code review (implement .tsx in configs)

Co-authored-by: Jon Surrell <jon.surrell@automattic.com>

* remove global fetchMock declaration and directly import where used.

* rename type

* remove named action types and just infer by returning action creator values as const

* use interface instead of type

* rename

* renames

* create CartAction type as union of action creator returned types and implement in reducer

* remove unused imports

* refresh package-lock after rebase

* Add base TS config that projects will inherit from

* Add tsconfig for assets/js/data project

* Ignore TS error on cart store registration

We will address this in cooldown when we have time to investigate further

* Add tsc to build step to catch TypeScript errors

* add a separate command for tsc and tweak build command to use

* restore checkJs and allowJs values in config and remove ts check from build command

* Add ts:check-all command

* Add TypeScript checking workflows

* Change triggers for TypeScript workflow

* Use npm ci instead of npm install

* Remove ts:check-all from TypeScript workflow

* Remove TS Check GitHub workflow

* Remove type-defs dir from TS include, and remove ts:check-all script

We no longer need the ts:check-all script because ts:check will do this for us, the old ts:check did nothing and did not work.

* fix coupon loading issues

* include .ts files only from type-defs folder

Co-authored-by: Jon Surrell <jon.surrell@automattic.com>
Co-authored-by: Thomas Roberts <thomas.roberts@automattic.com>
2021-02-23 20:36:24 -05:00
Thomas Roberts 549afc1065 Merge branch 'release/4.5.1' into trunk 2021-02-23 11:38:52 +00:00
Thomas Roberts 583402a9d6 Bumping version strings to new version. 2021-02-23 11:19:09 +00:00
Thomas Roberts 7b1bd90f61 Update changelog to describe a bug fix more appropriately 2021-02-23 10:35:24 +00:00
Thomas Roberts 81fdd45f70 Update changelog in readme 2021-02-23 10:20:05 +00:00
Thomas Roberts 76d00db174 Update testing docs 2021-02-23 10:18:57 +00:00
Thomas Roberts 78a0680657 Show total sale badge in medium carts & make it display below price (https://github.com/woocommerce/woocommerce-blocks/pull/3879)
* Show total sale badge in medium carts

* Add markup to cart line item row to enable it to be displayed as flex

* Add styling to display price and sale badge as flex

* Revert product price being displayed as block

* Rename sale badge and price wrapper

* Hide line-total sale badge on mobile

* Change class name on total price and sale badge wrapper again
2021-02-23 10:14:48 +00:00
Thomas Roberts caaedfb386 Show total sale badge in medium carts & make it display below price (https://github.com/woocommerce/woocommerce-blocks/pull/3879)
* Show total sale badge in medium carts

* Add markup to cart line item row to enable it to be displayed as flex

* Add styling to display price and sale badge as flex

* Revert product price being displayed as block

* Rename sale badge and price wrapper

* Hide line-total sale badge on mobile

* Change class name on total price and sale badge wrapper again
2021-02-23 10:12:27 +00:00
Thomas Roberts 1e93a75104 Update zip file in testing notes 2021-02-22 14:19:12 +00:00
Thomas Roberts 8a73b5c870 Fix cart line subtotal display when currency has 0 decimals (https://github.com/woocommerce/woocommerce-blocks/pull/3876)
* Fix cart line subtotal display when currency has 0 decimals

* Fix wrong usages of getCurrency instead of getCurrencyFromPriceResponse

* Add tests

* Move comment in tests to relevant line
2021-02-22 14:16:23 +00:00
Thomas Roberts 366e0a1875 Add 4.5.2 testing notes 2021-02-22 13:46:57 +00:00
Thomas Roberts c7c8fbe4bf Update Readme with changelog 2021-02-22 13:33:04 +00:00
github-actions 68b0fad08b generating changeset for pull request 2021-02-22 13:17:40 +00:00
github-actions aa76de1385 generating changeset for pull request 2021-02-22 13:17:40 +00:00
Albert Juhé Lluveras 0ddf8587d1 Fix cart line subtotal display when currency has 0 decimals (https://github.com/woocommerce/woocommerce-blocks/pull/3876)
* Fix cart line subtotal display when currency has 0 decimals

* Fix wrong usages of getCurrency instead of getCurrencyFromPriceResponse

* Add tests

* Move comment in tests to relevant line
2021-02-22 13:16:45 +00:00
Mike Jolley 6c963c19e5 Fix button style (https://github.com/woocommerce/woocommerce-blocks/pull/3862) 2021-02-22 11:50:23 +00:00
Mike Jolley 4a6c5fc28f Use variation prices (https://github.com/woocommerce/woocommerce-blocks/pull/3854) 2021-02-22 11:50:11 +00:00
Mike Jolley 760ad3fa3b StoreAPI: Inject Order and Cart Controllers into Routes (https://github.com/woocommerce/woocommerce-blocks/pull/3871)
* Inject cart_controller into cart routes

* Inject order controller

* Remove todo

* Move reserve stock instance
2021-02-22 11:49:25 +00:00
Raluca Stan c4edcc2740 Move ProductSortSelect and ProductListItem under /product-list (https://github.com/woocommerce/woocommerce-blocks/pull/3870) 2021-02-22 12:04:29 +01:00
Thomas Roberts f923615949 Add information about hub authentication and GitHub releases (https://github.com/woocommerce/woocommerce-blocks/pull/3861) 2021-02-22 09:15:22 +00:00
Raluca Stan 76295fc972 Move payment-methods folder from base components to cart-checkout block (https://github.com/woocommerce/woocommerce-blocks/pull/3866) 2021-02-19 16:16:39 +01:00
Thomas Roberts b6650ab0bc Replace uppercase Translators with translators & make comment style consistent (https://github.com/woocommerce/woocommerce-blocks/pull/3869)
* Replace uppercase Translators with translators

* Change comment style for all // translators instances
2021-02-19 11:58:44 +00:00
Darren Ethier b0c7260d05 Update 410.md
Fix spacing
2021-02-18 09:26:02 -05:00
Darren Ethier 426b681157 Update 410.md
Add missing screenshots
2021-02-18 09:25:36 -05:00
Raluca Stan 7e54af999f Handle out of stock product visibility setting in All Products block. (https://github.com/woocommerce/woocommerce-blocks/pull/3859)
* Take stock status into account for All Products block.

A new `hideOutOfStockItems` setting flag has been added and it is used to hide the out of stock products
from the block. Products that are not out of stock can have 'instock', 'onbackorder' as stock status.

* Update StoreApi docs with new stock_status

* Fix the stock_status query param for collections of products
2021-02-18 10:53:48 +01:00
Mike Jolley 077aaf2be3 Only use SHOP_URL if set (https://github.com/woocommerce/woocommerce-blocks/pull/3845) 2021-02-17 15:17:54 +00:00
Albert Juhé Lluveras b2339bda5d Update Panel component class names to follow guidelines (https://github.com/woocommerce/woocommerce-blocks/pull/3860)
* Rename panel class names to follow correct guidelines

* Remove unused CSS

* Add docs page link
2021-02-17 14:48:53 +01:00
Mike Jolley 5f5bcd7c06 Refactor block types to include script registration and integration classes (https://github.com/woocommerce/woocommerce-blocks/pull/3829)
* Move bulk of payment registry/interface to more generic classes

* Implement registries for block types

* Split editor and frontend integration contexts

* Make abstract dynamic blocks extend the abstract block class

* Remove block type scripts from assets

* deprecate register_block_script

* Updates remaining blocks with new AbstactBlock which takes care of script enqueueing

* Add suffix to integration registry

* rename translator comment

* clarify method comment

* Wrong variable after rebase
2021-02-17 14:18:35 +01:00
Seghir Nadir 30c2079af4 Enhance checkout filter system. (https://github.com/woocommerce/woocommerce-blocks/pull/3835)
* Add filter to extend product price

* Remove code targeting WC Subscriptions

* Rename filter

* Use extendibility API instead of filters

* Remove __EXPERIMENTAL_CART_ITEM_PRICE_FILTER from docs

* throw errors on validation

* Don't catch filter errors for admins

* Add tests

* wrap filter calls in memo

* pass extensions as top level prop

* abstract errors

* add jsdoc

* update tests

* review

* turn __experimentalApplyCheckoutFilter into a hook and move useMemo inside it

* revert name

* wrap getCheckoutFilters in useMemo

* refactor filter function so memozation is done inside components

* unify true instance

* fix rebase

Co-authored-by: Albert Juhé Lluveras <contact@albertjuhe.com>
2021-02-17 14:01:20 +01:00
Albert Juhé Lluveras eac22ca2f7 Remove shadows from text buttons and gradient background from selects in some themes (https://github.com/woocommerce/woocommerce-blocks/pull/3846)
* Reset select background property instead of only background-color

* Set text-shadow to none in text-button mixin
2021-02-17 13:40:52 +01:00
Darren Ethier b79066b5a5 Update 410.md
improve testing notes section about WordPress 5.6
2021-02-17 07:26:48 -05:00
Darren Ethier 0675355cf7 Update 440.md
Fix testing note in wrong section.
2021-02-17 07:24:49 -05:00
Thomas Roberts 89e6708573 Remove line in incorrect version from readme.txt 2021-02-17 12:00:55 +00:00
Bartosz Budzanowski 37a590abed Fix typo.
enqueing -> enqueuing
2021-02-17 12:33:26 +01:00
Thomas Roberts 222499a9ff Update plugin version to 4.6.0-dev 2021-02-17 09:46:15 +00:00
Thomas Roberts 4cbfb85ff9 Merge branch 'release/4.5.1' into trunk 2021-02-17 09:41:45 +00:00
renovate[bot] 37bdb53493 Update babel monorepo to v7.12.16 (https://github.com/woocommerce/woocommerce-blocks/pull/3858)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-17 06:18:50 +00:00
renovate[bot] fae1fa0f4b Update Node.js to v12.20.2 (https://github.com/woocommerce/woocommerce-blocks/pull/3857)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-17 04:29:07 +00:00
Thomas Roberts 4e409e2fc5 Update changelog for 4.4.2 and 4.5.1 2021-02-16 19:31:01 +00:00
github-actions 82ccf5b159 generating changeset for pull request 2021-02-16 18:09:09 +00:00
github-actions e5441060ec generating changeset for pull request 2021-02-16 18:09:09 +00:00
Thomas Roberts 70262ab890 Bumping version strings to new version. 2021-02-16 18:08:49 +00:00
Thomas Roberts 3f79b42c14 Bumping version strings to new version. 2021-02-16 16:40:15 +00:00
Thomas Roberts 71cbc9cfa0 Update date of release in readme 2021-02-16 16:38:04 +00:00
Thomas Roberts 20a9d9ff22 Fix a typo in the word image 2021-02-16 14:27:11 +00:00
Thomas Roberts 3d1fc239d3 Remove documentation improvement from changelog 2021-02-16 14:02:56 +00:00
Thomas Roberts aaab546b39 Update zip file for testing 2021-02-16 13:47:57 +00:00
Thomas Roberts c9ade2c722 Update testing documentation and changelog with blocking changes 2021-02-16 12:32:32 +00:00
Thomas Roberts 4fe4060fec Fix product price not displaying properly when product is on sale (https://github.com/woocommerce/woocommerce-blocks/pull/3853)
* Use else if in ProductPrice

This is because the priceComponent variable should be set depending on some conditions, but multiple of them could be true, so by using else if we only handle the first true case

* Update snapshots for jest
2021-02-16 12:30:10 +00:00
Thomas Roberts f693fd50ee Fix product price not displaying properly when product is on sale (https://github.com/woocommerce/woocommerce-blocks/pull/3853)
* Use else if in ProductPrice

This is because the priceComponent variable should be set depending on some conditions, but multiple of them could be true, so by using else if we only handle the first true case

* Update snapshots for jest
2021-02-16 11:42:11 +00:00
Albert Juhé Lluveras f4f95eb26e Show cart item total price including taxes when DISPLAY_CART_PRICES_INCLUDING_TAX is true (https://github.com/woocommerce/woocommerce-blocks/pull/3851)
* Show cart item total price including taxes when DISPLAY_CART_PRICES_INCLUDING_TAX is true

* Show cart item total price including taxes in Checkout block too
2021-02-16 10:14:24 +00:00
Albert Juhé Lluveras 5ba68af58b Show cart item total price including taxes when DISPLAY_CART_PRICES_INCLUDING_TAX is true (https://github.com/woocommerce/woocommerce-blocks/pull/3851)
* Show cart item total price including taxes when DISPLAY_CART_PRICES_INCLUDING_TAX is true

* Show cart item total price including taxes in Checkout block too
2021-02-16 09:45:31 +00:00
Thomas Roberts 1fb61c1199 Update release testing documenatation 2021-02-15 20:01:32 +00:00
Thomas Roberts 6a2d8e331d Update readme.txt with 4.5.0 release changelog 2021-02-15 17:47:16 +00:00
github-actions 2aadfdc652 generating changeset for pull request 2021-02-15 17:29:46 +00:00
github-actions bd08f3988e generating changeset for pull request 2021-02-15 17:29:46 +00:00
Mike Jolley be4d32d705 Pages must be published to be valid (https://github.com/woocommerce/woocommerce-blocks/pull/3843) 2021-02-15 16:48:30 +00:00
Mike Jolley 51789e2105 Login via account page (https://github.com/woocommerce/woocommerce-blocks/pull/3844) 2021-02-15 16:46:02 +00:00
Thomas Roberts edf79c699a Catch errors during cart validation (https://github.com/woocommerce/woocommerce-blocks/pull/3703)
* Add new exceptions for out of stock scenarios

These are needed to differentiate between the different stock validation errors, and so we can create the correct error message.

* Catch new out of stock exceptions when checking the cart for errors

This is so we can get the cart sent back to the client, if we don't catch these, then the route will just return a 500 error and crash.

* Add ArrayUtils class

This will contain methods used to operate on arrays that don't fit anywhere else.

* Handle the case in Checkout where the error is already a WP_Error

This will happen when the cart fails validation.

* Handle StockAvailabilityException in AbstractRoute

This will happen when an item or number of items in the cart are out of stock/insufficient stock.

* Throw exceptions for each type of invalid stock in validate_cart_items

This will allow us to create an error message for each type of violation to display to the user.

* Display additional error notices returned by the API

* Fix wording when throwing exceptions relating to stock

* Handle TooManyInCartException in CartController

* Abstract the merging of cart, status, and additional data into new fn

This allows us to simplify the way errors are returned from the API. The reason we have to add all of the data at once is because of how WP_Error works with the additional data, if there is already existing data in a WP_Error object, it gets moved into additional_data. By adding all of the data in one place, we stop this from happening. Also since we're only adding status and/or cart explicitly, it makes sense to just do it in one place.

* Add get_route_error_response_from_object method

This is so we can differentiate between a string and WP_Error object.

* Remove unnecessary slashes from WP_Error instantiation

* Add option to enclose each item in quotes in natural_language_join

* Abstract adding error messages to error object into single function

A lot of code was repeated, so doing this cuts down on that and ensures any changes only need to be made in one place.

* Create new parent exception for each type of out of stock exception

This is so we don't have to repeat code inside each different exception and we can simply inherit StockAvailabilityException.

* Catch the generic StockAvailabilityException in get_cart_item_errors

* No longer recalculate totals in validate function

It is not needed, the totals are recalculated elsewhere. This call was superfluous.

* Reduce nesting, and only throw exception if error object has errors

* Improve comment on get_route_error_response_from_object method

* Fix nesting when throwing the InvalidStockLevelsInCartException

* Catch errors during cart validation

* Add get_error_message_for_stock_exception_type function

This will be used to get an error message depending on the type of extension, and whether the plural form, or singular form is needed. This abstraction is better because the code is used in more than one place in the API.

* Use error message generation function instead of creating errors individually

* Use specific error codes for each type of error & fix PHPDoc

Now the stock_exceptions_to_wp_errors function will return an array of WP_Errors this is better as the client needs a distinct error code to display and replace notices.

* No longer remove items from cart or modify quantity if there is an error

* Return the WP_Error from RouteException or all Stock WP_Errors

* Fix error in PHPDoc

* No longer necessary to add get_cart_item_errors into an array

This is because the method always returns an array now.

* Rename variables in get_cart_item_errors to be more descriptive

* Improve PHPDoc on get_cart_item_errors

* Replace underscores with hyphens in error code

* Only return WP_Errors that have an actual error in them

* Add unit test for ensure the cart errors relating to stock are handled

* Fix typo in comment

* Use optional chaining to add errors to cart
2021-02-15 14:03:04 +00:00
renovate[bot] c8adb17cd1 Lock file maintenance (https://github.com/woocommerce/woocommerce-blocks/pull/3842)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-15 12:23:43 +00:00
Albert Juhé Lluveras e5f6a1047c Allow extensions to extend cart item price (https://github.com/woocommerce/woocommerce-blocks/pull/3750)
* Add filter to extend product price

* Extend order summary product price too

* Make it so 'format' is applied to all product price types

* Order

* Pass lineItem to the filter

* Remove code targeting WC Subscriptions

* Rename filter

* Remove unnecessary CSS block that made prices be displayed as blocks

* Use line item totals instead of product price multiplied by quantity to show line item price

* Fix wrong currency usage

* Add comment to disable eslint

* Fix JS error when totals is undefined

* Align order summary item price to the right

* Use extendibility API instead of filters

* Remove __EXPERIMENTAL_CART_ITEM_PRICE_FILTER from docs

* fix rebase

Co-authored-by: Seghir Nadir <nadir.seghir@gmail.com>
2021-02-12 00:37:05 +01:00
Seghir Nadir f7894b3c7f remove unsed imports (https://github.com/woocommerce/woocommerce-blocks/pull/3811) 2021-02-11 15:29:43 -05:00
Mike Jolley e9cc965aea Update jetpack autoloader dependency to 2.9.1 (https://github.com/woocommerce/woocommerce-blocks/pull/3832)
* Update jetpack autoloader and make version dependency more permissive

* lock file
2021-02-11 17:53:54 +00:00
Mike Jolley 7772d41007 Extensibility for Block Checkout Address Fields (https://github.com/woocommerce/woocommerce-blocks/pull/3662)
* Pass get_country_locale via assets

* Create helper to prepare and merge address fields

* Use new helper in address form

* Only pass field overrides now that fields are merged

* Fixc configs and remove lodash usage

* Prevent formatting of empty postcodes to suppress api error

* prevent memo on rerender

* Conitonal enqueue of locale data

* define index in increments of 10

* remove address-form

* circ deps changes

* Workaround for core data issue

* fix test

* remove prepareAddressFields export

* Remove old comment

* object from.entries polyfil

* Revert "object from.entries polyfil"

This reverts commit ba343adcf5fd2f843b225aebe340cce9b664c851.

* replace fromentries

* fix final fromentries
2021-02-11 16:49:27 +00:00
Mike Jolley 66fbd9738b Moved Nonce Logic to Cart API Classes (https://github.com/woocommerce/woocommerce-blocks/pull/3812)
* Reduce repetition in SchemaController::initialize

* Ensure AbstractCartRoute has a cart schema when it returns errors

* Move nonce logic to cart

* typo
2021-02-11 16:26:52 +00:00
Seghir Nadir 39ab3070c8 fix double imports 2021-02-11 16:36:24 +01:00
Seghir Nadir d107dc89a9 Allow extensions to extend Cart Item Name in Cart and Checkout. (https://github.com/woocommerce/woocommerce-blocks/pull/3807)
* Add validation function

* Prefix validateElementOrString with __experimental

* Update experimental docs

* Typo

* Update JS docs

* Use an object for applyCheckoutFilter args

* Args doesn't need to be an object

* Wrap validation function execution in a try/catch block

* Only accept strings for the totalLabel filter

* Change applyCheckoutFilter signature

* Add validation function

* Add Product name filter

* rebase

* update second filter call

Co-authored-by: Albert Juhé Lluveras <contact@albertjuhe.com>
2021-02-11 13:40:55 +01:00
renovate[bot] 03551edae8 Update dependency @automattic/color-studio to v2.4.0 (https://github.com/woocommerce/woocommerce-blocks/pull/3819)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-11 10:57:17 +01:00
Thomas Roberts cb09248b07 Add subtotal and sale badge filters - PR to correct branch (https://github.com/woocommerce/woocommerce-blocks/pull/3826)
* Replace filters with an extendibility API to hook into Cart and Checkout blocks

* Update docs

* Add a validate argument

* Add docs comments

* Add tests

* Add validation function

* Prefix validateElementOrString with __experimental

* Update experimental docs

* Typo

* Update comment

* Update JS docs

* Use an object for applyCheckoutFilter args

* Args doesn't need to be an object

* Wrap validation function execution in a try/catch block

* Only accept strings for the totalLabel filter

* Change applyCheckoutFilter signature

* Apply filters for subtotal and sale badge in CartLineItemRow

* Append suffix to prices and SaleBadge if passed in as a prop

* Add subtotal filter to OrderSummaryItem

* Add tests for OrderSummaryItem and ProductPrice

* Rename test for ProductPrice

* Update checkout filter registration plugin name

* Remove obsolete snapshop

* Remove suffix and change to format

This is because we want to make the entire price string editable, not just the part after it.

* Change formatting on SaleBadge to use createInterpolateElement

* Remove tests that are no longer needed.

* Update ProductPrice tests to reflect changes to format prop

* Check that subtotalPriceFormat contains <price/> in OrderSummaryItem

* Fix cart block styling to stop badges overflowing the container

* Add <price/> placeholder in OrderSummaryItem price filter

Co-authored-by: Albert Juhé Lluveras <contact@albertjuhe.com>
2021-02-10 17:12:47 +00:00
renovate[bot] 2e90e95551 Update dependency @stripe/stripe-js to v1.12.1 (https://github.com/woocommerce/woocommerce-blocks/pull/3820)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-10 13:32:18 +00:00
Albert Juhé Lluveras 7b829b8a82 Use cart item key instead of name as the React key in Package (https://github.com/woocommerce/woocommerce-blocks/pull/3814) 2021-02-10 12:37:58 +01:00
renovate[bot] 7afdb11dc4 Update dependency @types/react to v16.14.3 (https://github.com/woocommerce/woocommerce-blocks/pull/3822)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-10 11:11:21 +00:00
renovate[bot] abb3323e00 Lock file maintenance (https://github.com/woocommerce/woocommerce-blocks/pull/3808)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-10 10:28:53 +01:00
renovate[bot] a9800f5ef7 Update dependency mini-css-extract-plugin to v1.3.6 (https://github.com/woocommerce/woocommerce-blocks/pull/3823)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-10 03:22:45 +00:00
renovate[bot] e70e3e6e40 Update dependency @testing-library/user-event to v12.6.3 (https://github.com/woocommerce/woocommerce-blocks/pull/3821)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-10 02:34:41 +00:00
renovate[bot] a9626c8d06 Update babel monorepo to v7.12.13 (https://github.com/woocommerce/woocommerce-blocks/pull/3818)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-10 01:11:36 +00:00
Albert Juhé Lluveras 1a97bf80b0 Replace filters with an extendibility API to hook into Cart and Checkout blocks (https://github.com/woocommerce/woocommerce-blocks/pull/3774)
* Replace filters with an extendibility API to hook into Cart and Checkout blocks

* Update docs

* Add a validate argument

* Add docs comments

* Add tests

* Add validation function

* Prefix validateElementOrString with __experimental

* Update experimental docs

* Typo

* Update comment

* Update JS docs

* Use an object for applyCheckoutFilter args

* Args doesn't need to be an object

* Wrap validation function execution in a try/catch block

* Only accept strings for the totalLabel filter

* Change applyCheckoutFilter signature
2021-02-09 17:54:38 +01:00
Mike Jolley d90e212f74 Validate order items on post, not on draft order creation (https://github.com/woocommerce/woocommerce-blocks/pull/3810) 2021-02-09 12:43:45 +00:00
Albert Juhé Lluveras 77119d9a7e Update Cart and Checkout sidebar design (https://github.com/woocommerce/woocommerce-blocks/pull/3797)
* Fix ShippingRatesControl not honoring renderOption prop

* Update order summary design

* Updates TotalsCoupon design

* Update Cart block sidebar title design

* Make values bold and labels regular in Cart and Checkout sidebar

* Update styles of shipping rates selector and radio control

* Remove unnecessary overflow rule in Panel content

* Fix shipping options in Checkout block

* Add some Twenty Twenty One fixes

* Fix saved payment methods display

* Remove top spacing no longer necessary in order summary quantity badge

* turn Totals title to bold

* Move right padding from product name to item description

* Take left margin off list items in product details

This is because in themes where a left margin is applied to li elements, the product detail/addon gets indented and it does not sit flush with the edge of the product details container. Adding this rule to the main wc-block-components-product-details  rule will stop other themes indenting <li>s

Co-authored-by: Seghir Nadir <nadir.seghir@gmail.com>
Co-authored-by: Thomas Roberts <thomas.roberts@automattic.com>
2021-02-09 09:10:45 +01:00
Albert Juhé Lluveras 2acdbc088b Align Place Order button to the right (https://github.com/woocommerce/woocommerce-blocks/pull/3803)
* Fix Place Order button alignment

* Change order of Place Order and Return to Cart buttons
2021-02-08 14:42:56 +01:00
Seghir Nadir 1bd65bd948 Add guards to useSlot and move shared code to a new file. (https://github.com/woocommerce/woocommerce-blocks/pull/3772)
* guard against __experimentalUseSlot

* move slot to its own file

* remove todo

* add docblocks

* add docs to errorBoundary

* add docs
2021-02-08 12:37:55 +01:00
Bartosz Budzanowski 116ec41c6a Use default "features" values for payment methods. (https://github.com/woocommerce/woocommerce-blocks/pull/3796)
* Use deafault features values for payment methods.

* Fix config check.

* Fix config check.

* Update documentation.
2021-02-05 15:31:34 +00:00
Bartosz Budzanowski 43a4d0b1cc Revert "Update CODEOWNERS (https://github.com/woocommerce/woocommerce-blocks/pull/3794)" (https://github.com/woocommerce/woocommerce-blocks/pull/3798)
This reverts commit 65d98cef7d.
2021-02-05 11:08:36 +01:00
Thomas Roberts 0f75325fd0 Add new links to experimental docs and update JS testing docs (https://github.com/woocommerce/woocommerce-blocks/pull/3785)
* Remove references to no-longer-existing isFeaturePluginBuild calls

This is because these were moved/removed in woocommerce/woocommerce-blocks#3065 but the docs were not updated fully.

* Update reference to travis to GitHub actions in docs

* Update JS testing doc to have info about Github Actions

* Add documentation for gateway_features_list hook

This was added in woocommerce/woocommerce-blocks#3719 but not documented.
2021-02-05 09:11:05 +00:00
Albert Juhé Lluveras 6ec197007f Decode fees name so special characters are rendered correctly (https://github.com/woocommerce/woocommerce-blocks/pull/3721)
* Decode fees name so special characters are rendered correctly

* Decode fees at hook level

* Fix several tests

* Remove unnecessary check
2021-02-04 18:05:47 +01:00
Bartosz Budzanowski 65d98cef7d Update CODEOWNERS (https://github.com/woocommerce/woocommerce-blocks/pull/3794)
* Update CODEOWNERS

* Add composer files.
2021-02-04 17:15:48 +01:00
Seghir Nadir 99b78a1c9a add price package (https://github.com/woocommerce/woocommerce-blocks/pull/3790) 2021-02-04 15:30:28 +00:00
Mike Jolley 8521264237 4.5.0-dev 2021-02-03 16:13:51 +00:00
github-actions[bot] a748a8ce83 Release: 4.4.0 (https://github.com/woocommerce/woocommerce-blocks/pull/3773)
* generating changeset for pull request

* generating changeset for pull request

* Changelog

* Testing docs

* Increase width of Cart's product column on <= medium screens

* move shipping-rates-control and shipping totals back into base/components/cart-checkout

* fix notice styling

* Move no rates logic to package

* Updating testing instructions

* Bumping version strings to new version.

Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Mike Jolley <mike.jolley@me.com>
Co-authored-by: Thomas Roberts <thomas.roberts@automattic.com>
Co-authored-by: Darren Ethier <darren@roughsmootheng.in>
Co-authored-by: Seghir Nadir <nadir.seghir@gmail.com>
2021-02-03 16:12:23 +00:00
renovate[bot] 54ab46cb43 Update dependency @octokit/graphql to v4.6.0 (https://github.com/woocommerce/woocommerce-blocks/pull/3780)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-03 13:53:12 +00:00
Darren Ethier b991486a84 Fix broken shipping Calculator (https://github.com/woocommerce/woocommerce-blocks/pull/3778)
* move shipping-rates-control and shipping totals back into base/components/cart-checkout

* fix notice styling

Co-authored-by: Seghir Nadir <nadir.seghir@gmail.com>
2021-02-03 12:35:17 +01:00
Mike Jolley 6c3fe9e820 Move no rates logic to package (https://github.com/woocommerce/woocommerce-blocks/pull/3767) 2021-02-03 11:19:09 +01:00
renovate[bot] af4b1f8cd9 Update dependency @testing-library/react to v11.2.5 (https://github.com/woocommerce/woocommerce-blocks/pull/3782)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-03 05:56:42 +00:00
renovate[bot] 82d61f771b Pin dependencies (https://github.com/woocommerce/woocommerce-blocks/pull/3779)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-03 04:55:20 +00:00
renovate[bot] 4106c0a895 Update dependency @stripe/react-stripe-js to v1.2.2 (https://github.com/woocommerce/woocommerce-blocks/pull/3781)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-03 03:45:25 +00:00
Thomas Roberts 3c516b8dd2 Increase width of Cart's product column on <= medium screens (https://github.com/woocommerce/woocommerce-blocks/pull/3775) 2021-02-02 15:09:57 +00:00
Bartosz Budzanowski 14297add88 Update checkout payment methods design. (https://github.com/woocommerce/woocommerce-blocks/pull/3439)
* Add left vertical bar to payments methods step.

* Remove horizontal borders around order notes.

* Add class to order notes component.

We need it to traget that element with CSS.

* Update padding on order notes checkbox to match desing.

* Remove full stop to match the design.

* Add label for not saved payment methods option.

* Remove use new payment radio.

* Always show new ayment methods selector

* Remove editor context for now.

* Add accordion component skeleton.

* Small component refactor.

* Use accordion for new payment options.

* Fix jsdoc.

* Add styling.

* Add input styling.

* Hide label if we don't have saved methods.

* Cleanup.

* Cleanup and styling.

* Add target class to aid with alignment.

* Update use new payments label styling.

* Update Place Order button location.

* add full stop to payment method copy

* ensure that there is always a (default) selected payment method:
- using `activePaymentMethod` from context
- this ensures there is a default selected on initial render
- and handles any dynamic changes to available payment methods
  - e.g. COD disappearing when change shipping option
- remove unused / redundant selectedMethod prop - context is best

* use tab-based payment UI for 2 or fewer payment methods:
- move saved payment state to payment context; it's shared state needed
  by both PaymentMethodOptions and SavedPaymentMethodOptions
- show previous tabs UI if:
  - customer has no saved payment methods (cards)
  - store has 2 or fewer payment methods available
- when initialising SavedPaymentMethodOptions, only select one if the
  user hasn't selected a real payment method - this ensures radio
  buttons switch correctly between saved card => `Use another`
- remove various props and local state that is no longer required (🤞🏻)

* experimental - styling tweaks for single payment tab (remove "tab" UI)

* Revert "experimental - styling tweaks for single payment tab (remove "tab" UI)"

This reverts commit e09dd4862b97d989d950a9d67672d83e7b8992e4.

* Add single payment method UI.

* Adjust single method styling.

* Add outline and margin to two methods  version.

* Fix gap for order notes on/off option.

* Update Order button spacing CSS.

* Reuse computed values.

* Remove tabs and single payment option.

* We no longer need this test as the UI was changed.

* Fix payment methods labels height.

* Simplify.

* Remove not needed import.

* Typecheck an option.

* Refactor code.

* Rename.

* Rename.

* Update typdefs.

* Remove border for add order notes.

* Correct spacing for radio-button and label.

* Add simple test. Switch to payment method.

* Update style.

Co-authored-by: Rua Haszard <rua.haszard@automattic.com>
Co-authored-by: Darren Ethier <darren@roughsmootheng.in>
2021-02-02 05:51:47 +01:00
Mike Jolley d9e2f62540 Improve nonce handling by rejecting stale values (https://github.com/woocommerce/woocommerce-blocks/pull/3770)
* Improve nonce handling by rejecting previous nonces from cache

* use timestamp instead of previous nonce

* Switch back to time()

* Seconds not ms

* Add comment about the date code
2021-02-01 17:09:18 +00:00
renovate[bot] 799e6f26fe Lock file maintenance (https://github.com/woocommerce/woocommerce-blocks/pull/3769)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
2021-02-01 14:36:46 +00:00
Raluca Stan a3003606a4 Hide categories with 0 products from the Product Categories block (https://github.com/woocommerce/woocommerce-blocks/pull/3765) 2021-01-29 15:46:38 +01:00
Bartosz Budzanowski a0eb52d32b Introduce payment gateway feature check for cart content. (https://github.com/woocommerce/woocommerce-blocks/pull/3719)
* Add supports data to payment methods abstractions. Implement in Stripe.

* Add capabilities to the payment gateway.

* Payment requirements in cart schema.

* Supported features format update.

* Formatting.

* Check required payment features.

* Refactor capabilieties check.

* No need for the cart parameter.

* Allow external modifiacation of features capability.

* Use ExtendRestApi to inject payment requirements into cart endpoint.

* Simplify the code.

* Enable more integrations.

* Enable Stripe payment request.

* Move  the filter to a more correc location.

* Add features check.

* Update typedefs and documentation.

* Update tests with new functionality.

* Style fixes.
2021-01-29 07:28:44 +01:00
Mike Jolley 7ae87ca367 Subscriptions Shipping Packages Integration Points (https://github.com/woocommerce/woocommerce-blocks/pull/3687)
* Expose schemas

* Accept strings for select shipping rate

* strings are allowed

* Refactor shipping package to hold it's own state

* Add extension data to cart hook

* Progress but state is broken

* Move state back to hook

* Progress but state is broken

* use shipping hook updates

* Fix re-render issue

* hide x1

* Shipping slot fill

* Working slot fills

* Do not export package

* Update extend usage in unit tests

* update mock test data

* Package per slotfill

* Resolved merge conflicts

* Update assets/js/blocks/cart-checkout/subscriptions-integration.js

Co-authored-by: Seghir Nadir <nadir.seghir@gmail.com>

* rename slot

* deriveSelectedRates return doc

* useCallback in throwError

* final class ExtendRestApi

* spacing

* Move shipping rate selection to package level

* remove const for counts

* Remove schemas from extend

* unused use

* move to a single fill for packages

* add todos

* move subs code

* fix extra extensions

Co-authored-by: Seghir Nadir <nadir.seghir@gmail.com>
2021-01-28 15:24:01 +01:00