woocommerce/plugins/woocommerce-blocks
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
..
.github Update the `wp-env` package to latest (https://github.com/woocommerce/woocommerce-blocks/pull/3972) 2021-03-17 11:06:36 -04:00
.sources Update previews and editor styles for cart and checkout blocks (https://github.com/woocommerce/woocommerce-blocks/pull/2160) 2020-04-08 16:03:39 +01:00
.wordpress-org Add WordPress.org assets folder and add latest assets. (https://github.com/woocommerce/woocommerce-blocks/pull/3377) 2020-11-09 08:07:15 -05:00
assets Refactor Payment Methods Integration API to fire `onPaymentProcessing` event with saved tokens. (https://github.com/woocommerce/woocommerce-blocks/pull/3982) 2021-03-22 10:02:36 -04:00
bin Google Analytics Integration - Action Hooks and initial tracking events (https://github.com/woocommerce/woocommerce-blocks/pull/3953) 2021-03-16 11:40:22 +00:00
docs Release: 4.7.0 (https://github.com/woocommerce/woocommerce-blocks/pull/3966) 2021-03-16 17:33:01 +01:00
packages Update/typescript checkout shipping (https://github.com/woocommerce/woocommerce-blocks/pull/3925) 2021-03-09 10:55:24 +00:00
src update version 2021-03-16 17:34:08 +01:00
storybook Fix storybook after TS changes (https://github.com/woocommerce/woocommerce-blocks/pull/3938) 2021-03-09 10:54:38 +01:00
templates/emails Support "create account" option in checkout block (https://github.com/woocommerce/woocommerce-blocks/pull/2851) 2020-10-01 15:07:16 +13:00
tests Show compatibility notice when adding the Cart and Checkouts blocks in the editor (https://github.com/woocommerce/woocommerce-blocks/pull/3937) 2021-03-19 11:05:42 +01:00
.distignore Release: 4.6.0 (https://github.com/woocommerce/woocommerce-blocks/pull/3900) 2021-03-02 15:31:13 -05:00
.editorconfig Introduce legacy build system and new aliases (https://github.com/woocommerce/woocommerce-blocks/pull/1018) 2019-10-06 08:36:15 -04:00
.env Switch to use `wp-env` as the development/test environment (https://github.com/woocommerce/woocommerce-blocks/pull/2730) 2020-06-17 16:28:11 -04:00
.eslintignore Add @woocommerce/eslint-plugin dependency (https://github.com/woocommerce/woocommerce-blocks/pull/3115) 2020-09-07 13:31:10 -04:00
.eslintrc.js Add types to hooks (https://github.com/woocommerce/woocommerce-blocks/pull/3913) 2021-03-10 15:03:26 +00:00
.gitattributes Release: 4.6.0 (https://github.com/woocommerce/woocommerce-blocks/pull/3900) 2021-03-02 15:31:13 -05:00
.gitignore change eslint workflow to use different method and action (https://github.com/woocommerce/woocommerce-blocks/pull/3693) 2021-01-17 14:06:24 -05:00
.nvmrc Adds continuous integration testing with travis (https://github.com/woocommerce/woocommerce-blocks/pull/156) 2018-11-27 12:12:48 -05:00
.prettierrc.js Update @wordpress/scripts and eslint and stylint configurations (https://github.com/woocommerce/woocommerce-blocks/pull/3749) 2021-01-27 11:49:33 -05:00
.stylelintrc.json Update @wordpress/scripts and eslint and stylint configurations (https://github.com/woocommerce/woocommerce-blocks/pull/3749) 2021-01-27 11:49:33 -05:00
.wp-env.json Update the `wp-env` package to latest (https://github.com/woocommerce/woocommerce-blocks/pull/3972) 2021-03-17 11:06:36 -04:00
README.md Revert test badge name back to Automated Tests (https://github.com/woocommerce/woocommerce-blocks/pull/3640) 2021-01-05 12:38:44 +00:00
babel.config.js Add TypeScript support and convert cart data store to TypeScript (https://github.com/woocommerce/woocommerce-blocks/pull/3768) 2021-02-23 20:36:24 -05:00
composer.json Update jetpack autoloader dependency to 2.9.1 (https://github.com/woocommerce/woocommerce-blocks/pull/3832) 2021-02-11 17:53:54 +00:00
composer.lock Update jetpack autoloader dependency to 2.9.1 (https://github.com/woocommerce/woocommerce-blocks/pull/3832) 2021-02-11 17:53:54 +00:00
docker-compose.yml Expand travis matrix (https://github.com/woocommerce/woocommerce-blocks/pull/2686) 2020-06-16 13:18:34 +01:00
package-lock.json Lock file maintenance (https://github.com/woocommerce/woocommerce-blocks/pull/3987) 2021-03-22 13:40:57 +00:00
package.json Update dependency @testing-library/react-hooks to v5.1.0 (https://github.com/woocommerce/woocommerce-blocks/pull/3971) 2021-03-18 00:04:22 +00:00
phpcs.xml Fix incorrect usage of static method in Stripe payment method integration (https://github.com/woocommerce/woocommerce-blocks/pull/3400) 2020-11-14 11:04:48 -05:00
phpunit.xml.dist Move main controllers from assets/php to src (https://github.com/woocommerce/woocommerce-blocks/pull/655) 2019-07-01 13:52:44 +01:00
postcss.config.js Create Reviews by Product block (https://github.com/woocommerce/woocommerce-blocks/pull/658) 2019-08-15 16:55:57 +02:00
readme.txt update version 2021-03-16 17:34:08 +01:00
renovate.json Add major for devDependencies. (https://github.com/woocommerce/woocommerce-blocks/pull/3653) 2021-01-07 12:41:55 +00:00
tsconfig.base.json Fix storybook after TS changes (https://github.com/woocommerce/woocommerce-blocks/pull/3938) 2021-03-09 10:54:38 +01:00
tsconfig.json Google Analytics Integration - Action Hooks and initial tracking events (https://github.com/woocommerce/woocommerce-blocks/pull/3953) 2021-03-16 11:40:22 +00:00
webpack.config.js Google Analytics Integration - Action Hooks and initial tracking events (https://github.com/woocommerce/woocommerce-blocks/pull/3953) 2021-03-16 11:40:22 +00:00
woocommerce-gutenberg-products-block.php update version 2021-03-16 17:34:08 +01:00

README.md

WooCommerce Blocks

Latest Tag View JavaScript and CSS Linting PHP Coding Standards Automated tests

This is the feature plugin for WooCommerce + Gutenberg. This plugin serves as a space to iterate and explore new Blocks and updates to existing blocks for WooCommerce, and how WooCommerce might work with the block editor.

Use this plugin if you want access to the bleeding edge of available blocks for WooCommerce. However, stable blocks are bundled into WooCommerce, and can be added from the "WooCommerce" section in the block inserter.

Table of Contents

Documentation

To find out more about the blocks and how to use them, check out the documentation on WooCommerce.com.

If you want to see what we're working on for future versions, or want to help out, read on.

Code Documentation

Installing the plugin version

We release a new version of WooCommerce Blocks onto WordPress.org every few weeks, which can be used as an easier way to preview the features.

Note: The plugin follows a policy of supporting the "L2" strategy for version support. What this means is that the plugin will support the most recent two minor versions of WordPress, and the most recent two minor versions of WooCommerce core at the time of a release.

That means if the latest version of WooCommerce is 4.3 at the time of a release, then our minimum version requirements for WooCommerce core would be 4.1+.

We recommend you always keep WordPress and WooCommerce core up to date in order to ensure your store is running with the most recent fixes and enhancements to help your store be successful.

  1. Make sure you have WordPress 5.4+ and WooCommerce 4.3+
  2. The plugin version is available on WordPress.org. Download the plugin version here.
  3. Activate the plugin.

Installing the development version

  1. Make sure you have WordPress 5.4+ and WooCommerce 4.3+
  2. Get a copy of this plugin using the green "Clone or download" button on the right.
  3. npm install to install the dependencies.
  4. composer install to install core dependencies.
  5. npm run build (build once) or npm start (keep watching for changes) to compile the code.
  6. Activate the plugin.

The source code is in the assets/ folder and the compiled code is built into build/.

Getting started with block development

Run through the "Writing Your First Block Type" tutorial for a quick course in block-building.

For deeper dive, try looking at the core blocks code, or see what components are available.

To begin contributing to the WooCommerce Blocks plugin, see our getting started guide and developer handbook.

Other useful docs to explore:

Long-term vision

WooCommerce Blocks are the easiest, most flexible way to build your store user interface and showcase your products.