From b446a370ef5a50748b888f7246b24404a73e79bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alba=20Rinc=C3=B3n?= Date: Thu, 28 Jul 2022 12:49:13 +0200 Subject: [PATCH 001/164] Use the archive-product template to render product attributes pages (#6776) --- src/BlockTemplatesController.php | 5 +++ src/Domain/Bootstrap.php | 8 +++++ src/Templates/ProductAttributeTemplate.php | 39 ++++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 src/Templates/ProductAttributeTemplate.php diff --git a/src/BlockTemplatesController.php b/src/BlockTemplatesController.php index 38a10c96b..16a02208b 100644 --- a/src/BlockTemplatesController.php +++ b/src/BlockTemplatesController.php @@ -425,6 +425,11 @@ public function render_block_template() { $this->block_template_is_available( 'taxonomy-product_tag' ) ) { add_filter( 'woocommerce_has_block_template', '__return_true', 10, 0 ); + } elseif ( taxonomy_is_product_attribute( get_query_var( 'taxonomy' ) ) && + ! BlockTemplateUtils::theme_has_template( 'archive-product' ) && + $this->block_template_is_available( 'archive-product' ) + ) { + add_filter( 'woocommerce_has_block_template', '__return_true', 10, 0 ); } elseif ( ( is_post_type_archive( 'product' ) || is_page( wc_get_page_id( 'shop' ) ) ) && ! BlockTemplateUtils::theme_has_template( 'archive-product' ) && diff --git a/src/Domain/Bootstrap.php b/src/Domain/Bootstrap.php index 7dd7f3b80..186c18c52 100644 --- a/src/Domain/Bootstrap.php +++ b/src/Domain/Bootstrap.php @@ -22,6 +22,7 @@ use Automattic\WooCommerce\Blocks\Payments\Integrations\PayPal; use Automattic\WooCommerce\Blocks\Payments\PaymentMethodRegistry; use Automattic\WooCommerce\Blocks\Registry\Container; +use Automattic\WooCommerce\Blocks\Templates\ProductAttributeTemplate; use Automattic\WooCommerce\StoreApi\StoreApi; use Automattic\WooCommerce\StoreApi\RoutesController; use Automattic\WooCommerce\StoreApi\SchemaController; @@ -116,6 +117,7 @@ function() { $this->container->get( BlockTypesController::class ); $this->container->get( BlockTemplatesController::class ); $this->container->get( ProductSearchResultsTemplate::class ); + $this->container->get( ProductAttributeTemplate::class ); $this->container->get( ClassicTemplatesCompatibility::class ); if ( $this->package->feature()->is_feature_plugin_build() ) { $this->container->get( PaymentsApi::class ); @@ -249,6 +251,12 @@ function () { return new ProductSearchResultsTemplate(); } ); + $this->container->register( + ProductAttributeTemplate::class, + function () { + return new ProductAttributeTemplate(); + } + ); $this->container->register( ClassicTemplatesCompatibility::class, function ( Container $container ) { diff --git a/src/Templates/ProductAttributeTemplate.php b/src/Templates/ProductAttributeTemplate.php new file mode 100644 index 000000000..62dc2defb --- /dev/null +++ b/src/Templates/ProductAttributeTemplate.php @@ -0,0 +1,39 @@ +init(); + } + + /** + * Initialization method. + */ + protected function init() { + add_filter( 'taxonomy_template_hierarchy', array( $this, 'update_taxonomy_template_hierarchy' ), 10, 3 ); + } + + /** + * Render the Archive Product Template for product attributes. + * + * @param array $templates Templates that match the product attributes taxonomy. + */ + public function update_taxonomy_template_hierarchy( $templates ) { + if ( taxonomy_is_product_attribute( get_query_var( 'taxonomy' ) ) && wc_current_theme_is_fse_theme() ) { + array_unshift( $templates, self::SLUG ); + } + + return $templates; + } +} From 02ceb0d8240724c66780975d8265ab396e6f90b4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 28 Jul 2022 15:34:17 +0200 Subject: [PATCH 002/164] Bump mockery/mockery from 1.4.4 to 1.5.0 (#6703) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [mockery/mockery](https://github.com/mockery/mockery) from 1.4.4 to 1.5.0. - [Release notes](https://github.com/mockery/mockery/releases) - [Changelog](https://github.com/mockery/mockery/blob/master/CHANGELOG.md) - [Commits](https://github.com/mockery/mockery/compare/1.4.4...1.5.0) --- updated-dependencies: - dependency-name: mockery/mockery dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Alba Rincรณn --- composer.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/composer.lock b/composer.lock index f2b0d4098..1c032fc5f 100644 --- a/composer.lock +++ b/composer.lock @@ -556,16 +556,16 @@ }, { "name": "mockery/mockery", - "version": "1.4.4", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "e01123a0e847d52d186c5eb4b9bf58b0c6d00346" + "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/e01123a0e847d52d186c5eb4b9bf58b0c6d00346", - "reference": "e01123a0e847d52d186c5eb4b9bf58b0c6d00346", + "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", + "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", "shasum": "" }, "require": { @@ -622,9 +622,9 @@ ], "support": { "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.4.4" + "source": "https://github.com/mockery/mockery/tree/1.5.0" }, - "time": "2021-09-13T15:28:59+00:00" + "time": "2022-01-20T13:18:17+00:00" }, { "name": "myclabs/deep-copy", From 53f8fa45505893279fe308f9cbc1051894ade500 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 28 Jul 2022 15:51:44 +0200 Subject: [PATCH 003/164] Update dependency @types/jest to v27.5.2 (#6759) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index f87707592..4851d5c67 100644 --- a/package-lock.json +++ b/package-lock.json @@ -59,7 +59,7 @@ "@types/classnames": "2.3.0", "@types/dinero.js": "1.9.0", "@types/gtag.js": "0.0.10", - "@types/jest": "27.4.1", + "@types/jest": "27.5.2", "@types/jest-environment-puppeteer": "5.0.2", "@types/jquery": "3.5.14", "@types/lodash": "4.14.182", @@ -9822,9 +9822,9 @@ } }, "node_modules/@types/jest": { - "version": "27.4.1", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.4.1.tgz", - "integrity": "sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw==", + "version": "27.5.2", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz", + "integrity": "sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==", "dev": true, "dependencies": { "jest-matcher-utils": "^27.0.0", @@ -58974,9 +58974,9 @@ } }, "@types/jest": { - "version": "27.4.1", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.4.1.tgz", - "integrity": "sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw==", + "version": "27.5.2", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz", + "integrity": "sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==", "dev": true, "requires": { "jest-matcher-utils": "^27.0.0", diff --git a/package.json b/package.json index d82da57d0..4f241d286 100644 --- a/package.json +++ b/package.json @@ -105,7 +105,7 @@ "@types/classnames": "2.3.0", "@types/dinero.js": "1.9.0", "@types/gtag.js": "0.0.10", - "@types/jest": "27.4.1", + "@types/jest": "27.5.2", "@types/jest-environment-puppeteer": "5.0.2", "@types/jquery": "3.5.14", "@types/lodash": "4.14.182", From 08798bc4bb98f62667e1f5d126486a1f13b23be0 Mon Sep 17 00:00:00 2001 From: Thomas Roberts <5656702+opr@users.noreply.github.com> Date: Thu, 28 Jul 2022 07:38:29 -0700 Subject: [PATCH 004/164] Ensure addresses sync when loading the checkout shipping address block (#6773) --- .../checkout-shipping-address-block/block.tsx | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/assets/js/blocks/checkout/inner-blocks/checkout-shipping-address-block/block.tsx b/assets/js/blocks/checkout/inner-blocks/checkout-shipping-address-block/block.tsx index e27c479e6..eb7a5062b 100644 --- a/assets/js/blocks/checkout/inner-blocks/checkout-shipping-address-block/block.tsx +++ b/assets/js/blocks/checkout/inner-blocks/checkout-shipping-address-block/block.tsx @@ -2,7 +2,7 @@ * External dependencies */ import { __ } from '@wordpress/i18n'; -import { useMemo, useEffect, Fragment } from '@wordpress/element'; +import { useMemo, useEffect, Fragment, useState } from '@wordpress/element'; import { AddressForm } from '@woocommerce/base-components/cart-checkout'; import { useCheckoutAddress, @@ -48,6 +48,10 @@ const Block = ( { const { dispatchCheckoutEvent } = useStoreEvents(); const { isEditor } = useEditorContext(); + // This is used to track whether the "Use shipping as billing" checkbox was checked on first load and if we synced + // the shipping address to the billing address if it was. This is not used on further toggles of the checkbox. + const [ addressesSynced, setAddressesSynced ] = useState( false ); + // Clears data if fields are hidden. useEffect( () => { if ( ! showPhoneField ) { @@ -55,6 +59,18 @@ const Block = ( { } }, [ showPhoneField, setShippingPhone ] ); + // Run this on first render to ensure addresses sync if needed, there is no need to re-run this when toggling the + // checkbox. + useEffect( () => { + if ( addressesSynced ) { + return; + } + if ( useShippingAsBilling ) { + setBillingAddress( shippingAddress ); + } + setAddressesSynced( true ); + }, [ setBillingAddress, shippingAddress, useShippingAsBilling ] ); + const addressFieldsConfig = useMemo( () => { return { company: { From 87af389415ca601b0e2051ac393fe78552ab30a2 Mon Sep 17 00:00:00 2001 From: Niels Lange Date: Fri, 29 Jul 2022 13:47:57 +0200 Subject: [PATCH 005/164] Update pull_request_template.md --- .github/pull_request_template.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 9d4e2555e..ead38e7c3 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -18,8 +18,8 @@ Fixes # #### Other Checks -- [ ] This PR adds/removes a feature flag & I've updated [this doc](../docs/blocks/feature-flags-and-experimental-interfaces.md) . -- [ ] This PR adds/removes an experimental interfaces and I've updated [this doc](../docs/blocks/feature-flags-and-experimental-interfaces.md) +- [ ] This PR adds/removes a feature flag & I've updated [this doc](../docs/internal-developers/blocks/feature-flags-and-experimental-interfaces.md). +- [ ] This PR adds/removes an experimental interfaces and I've updated [this doc](../docs/internal-developers/blocks/feature-flags-and-experimental-interfaces.md) - [ ] I tagged two reviewers because this PR makes queries to the database or I think it might have some security impact. ### Screenshots From 03d909ced322aad371e0b5087f9e9e57255bb572 Mon Sep 17 00:00:00 2001 From: Thomas Roberts <5656702+opr@users.noreply.github.com> Date: Fri, 29 Jul 2022 04:54:52 -0700 Subject: [PATCH 006/164] Add comment to prevent linting error on commented out code (#6789) --- src/BlockTemplatesController.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/BlockTemplatesController.php b/src/BlockTemplatesController.php index 16a02208b..adc8af65c 100644 --- a/src/BlockTemplatesController.php +++ b/src/BlockTemplatesController.php @@ -300,6 +300,7 @@ public function get_block_templates_from_woocommerce( $slugs, $already_found_tem foreach ( $template_files as $template_file ) { // Skip the template if it's blockified, and we should only use classic ones. // Until the blockified Product Grid Block is implemented, we need to always skip the blockified templates. + // phpcs:ignore Squiz.PHP.CommentedOutCode if ( // $this->package->is_experimental_build() && // ! BlockTemplateUtils::should_use_blockified_product_grid_templates() && strpos( $template_file, 'blockified' ) !== false ) { From c4b443c13d260e431bf1447acaef787b09c6e1a3 Mon Sep 17 00:00:00 2001 From: Niels Lange Date: Fri, 29 Jul 2022 13:55:23 +0200 Subject: [PATCH 007/164] Update pull_request_template.md --- .github/pull_request_template.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index ead38e7c3..3ce0c5026 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -18,8 +18,8 @@ Fixes # #### Other Checks -- [ ] This PR adds/removes a feature flag & I've updated [this doc](../docs/internal-developers/blocks/feature-flags-and-experimental-interfaces.md). -- [ ] This PR adds/removes an experimental interfaces and I've updated [this doc](../docs/internal-developers/blocks/feature-flags-and-experimental-interfaces.md) +- [ ] This PR adds/removes a feature flag & I've updated [this doc](https://github.com/woocommerce/woocommerce-blocks/blob/trunk/docs/internal-developers/blocks/feature-flags-and-experimental-interfaces.md). +- [ ] This PR adds/removes an experimental interfaces and I've updated [this doc](https://github.com/woocommerce/woocommerce-blocks/blob/trunk/docs/internal-developers/blocks/feature-flags-and-experimental-interfaces.md). - [ ] I tagged two reviewers because this PR makes queries to the database or I think it might have some security impact. ### Screenshots From a49cf6330817a1ed03b6508f3802c91f04ae2174 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 29 Jul 2022 14:02:02 +0200 Subject: [PATCH 008/164] Update dependency @types/wordpress__blocks to v11.0.5 (#6758) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4851d5c67..55ed0b515 100644 --- a/package-lock.json +++ b/package-lock.json @@ -67,7 +67,7 @@ "@types/react": "17.0.47", "@types/react-dom": "17.0.17", "@types/wordpress__block-editor": "6.0.6", - "@types/wordpress__blocks": "11.0.3", + "@types/wordpress__blocks": "11.0.5", "@types/wordpress__compose": "4.0.1", "@types/wordpress__data": "4.6.11", "@types/wordpress__data-controls": "2.2.0", @@ -10247,9 +10247,9 @@ } }, "node_modules/@types/wordpress__blocks": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@types/wordpress__blocks/-/wordpress__blocks-11.0.3.tgz", - "integrity": "sha512-RdqPrwQB+m8noBAzhhMGadRLNwe1Z7DIhhQ4caoV2jshabAu5+vEMMz+vGNTmymc9GQv0QxxuuRjhe/l1iPx9g==", + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/@types/wordpress__blocks/-/wordpress__blocks-11.0.5.tgz", + "integrity": "sha512-DO5PMIM+zhuLtLzykYD1Z92aBo7hoEpXbi9Rg3LwDeVphBDIBdU7T9t0hwJPVRCtAUZdzHwpq3dNPbx2yw2r2g==", "dev": true, "dependencies": { "@types/react": "*", @@ -59395,9 +59395,9 @@ } }, "@types/wordpress__blocks": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@types/wordpress__blocks/-/wordpress__blocks-11.0.3.tgz", - "integrity": "sha512-RdqPrwQB+m8noBAzhhMGadRLNwe1Z7DIhhQ4caoV2jshabAu5+vEMMz+vGNTmymc9GQv0QxxuuRjhe/l1iPx9g==", + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/@types/wordpress__blocks/-/wordpress__blocks-11.0.5.tgz", + "integrity": "sha512-DO5PMIM+zhuLtLzykYD1Z92aBo7hoEpXbi9Rg3LwDeVphBDIBdU7T9t0hwJPVRCtAUZdzHwpq3dNPbx2yw2r2g==", "dev": true, "requires": { "@types/react": "*", diff --git a/package.json b/package.json index 4f241d286..709bf622f 100644 --- a/package.json +++ b/package.json @@ -113,7 +113,7 @@ "@types/react": "17.0.47", "@types/react-dom": "17.0.17", "@types/wordpress__block-editor": "6.0.6", - "@types/wordpress__blocks": "11.0.3", + "@types/wordpress__blocks": "11.0.5", "@types/wordpress__compose": "4.0.1", "@types/wordpress__data": "4.6.11", "@types/wordpress__data-controls": "2.2.0", From 4e4df6001b7dd0aef3e9ab2552206275ea245854 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 29 Jul 2022 14:46:31 +0200 Subject: [PATCH 009/164] Update babel monorepo to v7.18.9 (#6719) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package-lock.json | 56 +++++++++++++++++++++++------------------------ package.json | 4 ++-- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/package-lock.json b/package-lock.json index 55ed0b515..c7d43e75b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38,8 +38,8 @@ "@actions/core": "1.9.0", "@actions/github": "5.0.3", "@automattic/color-studio": "2.5.0", - "@babel/cli": "7.18.6", - "@babel/core": "7.18.6", + "@babel/cli": "7.18.9", + "@babel/core": "7.18.9", "@babel/plugin-proposal-class-properties": "7.18.6", "@babel/plugin-syntax-jsx": "7.18.6", "@babel/polyfill": "7.12.1", @@ -232,9 +232,9 @@ "dev": true }, "node_modules/@babel/cli": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.18.6.tgz", - "integrity": "sha512-jXNHoYCbxZ8rKy+2lyy0VjcaGxS4NPbN0qc95DjIiGZQL/mTNx3o2/yI0TG+X0VrrTuwmO7zH52T9NcNdbF9Uw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.18.9.tgz", + "integrity": "sha512-e7TOtHVrAXBJGNgoROVxqx0mathd01oJGXIDekRfxdrISnRqfM795APwkDtse9GdyPYivjg3iXiko3sF3W7f5Q==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.8", @@ -289,20 +289,20 @@ } }, "node_modules/@babel/core": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz", - "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.9.tgz", + "integrity": "sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g==", "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.6", - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helpers": "^7.18.6", - "@babel/parser": "^7.18.6", + "@babel/generator": "^7.18.9", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.9", "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -51707,9 +51707,9 @@ "dev": true }, "@babel/cli": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.18.6.tgz", - "integrity": "sha512-jXNHoYCbxZ8rKy+2lyy0VjcaGxS4NPbN0qc95DjIiGZQL/mTNx3o2/yI0TG+X0VrrTuwmO7zH52T9NcNdbF9Uw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.18.9.tgz", + "integrity": "sha512-e7TOtHVrAXBJGNgoROVxqx0mathd01oJGXIDekRfxdrISnRqfM795APwkDtse9GdyPYivjg3iXiko3sF3W7f5Q==", "dev": true, "requires": { "@jridgewell/trace-mapping": "^0.3.8", @@ -51745,20 +51745,20 @@ "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==" }, "@babel/core": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz", - "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.9.tgz", + "integrity": "sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g==", "requires": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.6", - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helpers": "^7.18.6", - "@babel/parser": "^7.18.6", + "@babel/generator": "^7.18.9", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.9", "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", diff --git a/package.json b/package.json index 709bf622f..037bf43e1 100644 --- a/package.json +++ b/package.json @@ -84,8 +84,8 @@ "@actions/core": "1.9.0", "@actions/github": "5.0.3", "@automattic/color-studio": "2.5.0", - "@babel/cli": "7.18.6", - "@babel/core": "7.18.6", + "@babel/cli": "7.18.9", + "@babel/core": "7.18.9", "@babel/plugin-proposal-class-properties": "7.18.6", "@babel/plugin-syntax-jsx": "7.18.6", "@babel/polyfill": "7.12.1", From 4eed41d846d48fae5c9912464494cd1f55663305 Mon Sep 17 00:00:00 2001 From: Seghir Nadir Date: Fri, 29 Jul 2022 16:20:48 +0100 Subject: [PATCH 010/164] Refactor external dispatch actions from being called inside useSelect (#6718) * refactor coupon functions outside of useSelect * fix test --- .../product-elements/image/test/block.test.js | 6 - .../hooks/cart/use-store-cart-coupons.ts | 171 +++++++++--------- 2 files changed, 87 insertions(+), 90 deletions(-) diff --git a/assets/js/atomic/blocks/product-elements/image/test/block.test.js b/assets/js/atomic/blocks/product-elements/image/test/block.test.js index 529fbe2b6..df397056a 100644 --- a/assets/js/atomic/blocks/product-elements/image/test/block.test.js +++ b/assets/js/atomic/blocks/product-elements/image/test/block.test.js @@ -9,12 +9,6 @@ import { ProductDataContextProvider } from '@woocommerce/shared-context'; */ import { Block } from '../block'; -jest.mock( '@woocommerce/block-settings', () => ( { - ...jest.requireActual( '@woocommerce/block-settings' ), - __esModule: true, - PLACEHOLDER_IMG_SRC: 'placeholder.jpg', -} ) ); - jest.mock( '../../../../../hooks/style-attributes', () => ( { __esModule: true, useBorderProps: jest.fn( () => ( { diff --git a/assets/js/base/context/hooks/cart/use-store-cart-coupons.ts b/assets/js/base/context/hooks/cart/use-store-cart-coupons.ts index 9b045d6e6..aa5cd0bf8 100644 --- a/assets/js/base/context/hooks/cart/use-store-cart-coupons.ts +++ b/assets/js/base/context/hooks/cart/use-store-cart-coupons.ts @@ -29,103 +29,106 @@ export const useStoreCartCoupons = ( context = '' ): StoreCartCoupon => { const { createNotice } = useDispatch( 'core/notices' ); const { setValidationErrors } = useValidationContext(); - const results: Pick< + const { + applyCoupon, + removeCoupon, + isApplyingCoupon, + isRemovingCoupon, + }: Pick< StoreCartCoupon, - 'applyCoupon' | 'removeCoupon' | 'isApplyingCoupon' | 'isRemovingCoupon' + | 'applyCoupon' + | 'removeCoupon' + | 'isApplyingCoupon' + | 'isRemovingCoupon' + | 'receiveApplyingCoupon' > = useSelect( ( select, { dispatch } ) => { const store = select( storeKey ); - const isApplyingCoupon = store.isApplyingCoupon(); - const isRemovingCoupon = store.isRemovingCoupon(); - const { - applyCoupon, - removeCoupon, - receiveApplyingCoupon, - }: { - applyCoupon: ( coupon: string ) => Promise< boolean >; - removeCoupon: ( coupon: string ) => Promise< boolean >; - receiveApplyingCoupon: ( coupon: string ) => void; - } = dispatch( storeKey ); - - const applyCouponWithNotices = ( couponCode: string ) => { - applyCoupon( couponCode ) - .then( ( result ) => { - if ( result === true ) { - createNotice( - 'info', - sprintf( - /* translators: %s coupon code. */ - __( - 'Coupon code "%s" has been applied to your cart.', - 'woo-gutenberg-products-block' - ), - couponCode - ), - { - id: 'coupon-form', - type: 'snackbar', - context, - } - ); - } - } ) - .catch( ( error ) => { - setValidationErrors( { - coupon: { - message: decodeEntities( error.message ), - hidden: false, - }, - } ); - // Finished handling the coupon. - receiveApplyingCoupon( '' ); - } ); - }; - - const removeCouponWithNotices = ( couponCode: string ) => { - removeCoupon( couponCode ) - .then( ( result ) => { - if ( result === true ) { - createNotice( - 'info', - sprintf( - /* translators: %s coupon code. */ - __( - 'Coupon code "%s" has been removed from your cart.', - 'woo-gutenberg-products-block' - ), - couponCode - ), - { - id: 'coupon-form', - type: 'snackbar', - context, - } - ); - } - } ) - .catch( ( error ) => { - createErrorNotice( error.message, { - id: 'coupon-form', - context, - } ); - // Finished handling the coupon. - receiveApplyingCoupon( '' ); - } ); - }; + const actions = dispatch( storeKey ); return { - applyCoupon: applyCouponWithNotices, - removeCoupon: removeCouponWithNotices, - isApplyingCoupon, - isRemovingCoupon, + applyCoupon: actions.applyCoupon, + removeCoupon: actions.removeCoupon, + isApplyingCoupon: store.isApplyingCoupon(), + isRemovingCoupon: store.isRemovingCoupon(), + receiveApplyingCoupon: actions.receiveApplyingCoupon, }; }, [ createErrorNotice, createNotice ] ); + const applyCouponWithNotices = ( couponCode: string ) => { + applyCoupon( couponCode ) + .then( ( result ) => { + if ( result === true ) { + createNotice( + 'info', + sprintf( + /* translators: %s coupon code. */ + __( + 'Coupon code "%s" has been applied to your cart.', + 'woo-gutenberg-products-block' + ), + couponCode + ), + { + id: 'coupon-form', + type: 'snackbar', + context, + } + ); + } + } ) + .catch( ( error ) => { + setValidationErrors( { + coupon: { + message: decodeEntities( error.message ), + hidden: false, + }, + } ); + // Finished handling the coupon. + receiveApplyingCoupon( '' ); + } ); + }; + + const removeCouponWithNotices = ( couponCode: string ) => { + removeCoupon( couponCode ) + .then( ( result ) => { + if ( result === true ) { + createNotice( + 'info', + sprintf( + /* translators: %s coupon code. */ + __( + 'Coupon code "%s" has been removed from your cart.', + 'woo-gutenberg-products-block' + ), + couponCode + ), + { + id: 'coupon-form', + type: 'snackbar', + context, + } + ); + } + } ) + .catch( ( error ) => { + createErrorNotice( error.message, { + id: 'coupon-form', + context, + } ); + // Finished handling the coupon. + receiveApplyingCoupon( '' ); + } ); + }; + return { appliedCoupons: cartCoupons, isLoading: cartIsLoading, - ...results, + applyCoupon: applyCouponWithNotices, + removeCoupon: removeCouponWithNotices, + isApplyingCoupon, + isRemovingCoupon, }; }; From e075767dfeb18b065bf5e863b64c1ec05de68e7c Mon Sep 17 00:00:00 2001 From: "Daniel W. Robert" Date: Fri, 29 Jul 2022 15:40:03 -0400 Subject: [PATCH 011/164] Add new icon for mini cart block (#6784) * Add new icon for mini cart block (inserter). See https://github.com/woocommerce/woocommerce-blocks/issues/6617. * Adjust size of SVG The new SVG was rendering a little bit smaller than the original icon. Potentially because of the mask and the artboard size. This commit adjusts the size to render at the same size as the original version of the icon in the inserter. --- assets/js/blocks/mini-cart/index.tsx | 4 +-- assets/js/icons/index.js | 1 + assets/js/icons/library/mini-cart-alt.tsx | 39 +++++++++++++++++++++++ 3 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 assets/js/icons/library/mini-cart-alt.tsx diff --git a/assets/js/blocks/mini-cart/index.tsx b/assets/js/blocks/mini-cart/index.tsx index 3c22edff4..be74cc659 100644 --- a/assets/js/blocks/mini-cart/index.tsx +++ b/assets/js/blocks/mini-cart/index.tsx @@ -2,7 +2,7 @@ * External dependencies */ import { __ } from '@wordpress/i18n'; -import { cart } from '@woocommerce/icons'; +import { miniCartAlt } from '@woocommerce/icons'; import { Icon } from '@wordpress/icons'; import { registerBlockType } from '@wordpress/blocks'; import type { BlockConfiguration } from '@wordpress/blocks'; @@ -19,7 +19,7 @@ const settings: BlockConfiguration = { icon: { src: ( ), diff --git a/assets/js/icons/index.js b/assets/js/icons/index.js index 112f573f5..1dcedb31a 100644 --- a/assets/js/icons/index.js +++ b/assets/js/icons/index.js @@ -11,3 +11,4 @@ export { default as toggle } from './library/toggle'; export { default as totals } from './library/totals'; export { default as woo } from './library/woo'; export { default as miniCart } from './library/mini-cart'; +export { default as miniCartAlt } from './library/mini-cart-alt'; diff --git a/assets/js/icons/library/mini-cart-alt.tsx b/assets/js/icons/library/mini-cart-alt.tsx new file mode 100644 index 000000000..2e57b357f --- /dev/null +++ b/assets/js/icons/library/mini-cart-alt.tsx @@ -0,0 +1,39 @@ +/** + * External dependencies + */ +import { SVG } from '@wordpress/primitives'; + +const miniCartAlt = ( + + + + + + + + + + + + + +); + +export default miniCartAlt; From 1db184daa15b348e281739d007ddfa3f74660f61 Mon Sep 17 00:00:00 2001 From: Seghir Nadir Date: Mon, 1 Aug 2022 09:56:28 +0100 Subject: [PATCH 012/164] add new action for customer updates (#6792) --- bin/add-doc-footer.sh | 2 +- bin/hook-docs/data/actions.json | 1521 +++++++------- bin/hook-docs/data/filters.json | 1863 +++++++++-------- docs/README.md | 1 + docs/contributors/README.md | 2 +- docs/contributors/components.md | 3 +- docs/contributors/contributing/README.md | 3 +- .../contributors/contributing/block-assets.md | 3 +- .../contributing/coding-guidelines.md | 3 +- .../contributing/css-build-system.md | 3 +- .../contributing/documentation-guidelines.md | 3 +- .../contributing/folder-structure.md | 3 +- .../contributing/getting-started.md | 3 +- .../contributing/javascript-build-system.md | 3 +- .../contributing/javascript-testing.md | 3 +- .../contributing/storybook-and-components.md | 3 +- docs/designers/theming/README.md | 3 +- .../theming/all-products-and-filters.md | 3 +- docs/designers/theming/cart-and-checkout.md | 3 +- .../theming/class-names-update-280.md | 3 +- .../theming/class-names-update-330.md | 3 +- .../theming/class-names-update-340.md | 3 +- .../theming/class-names-update-460.md | 3 +- docs/designers/theming/product-grid-270.md | 3 +- .../block-client-apis/README.md | 3 +- .../checkout/checkout-api.md | 3 +- .../checkout/checkout-flow-and-events.md | 3 +- .../block-client-apis/notices.md | 3 +- docs/internal-developers/blocks/README.md | 3 +- ...ature-flags-and-experimental-interfaces.md | 3 +- .../blocks/stock-reservation.md | 3 +- docs/internal-developers/templates/README.md | 3 +- .../templates/block-template-controller.md | 3 +- .../templates/classic-template.md | 3 +- docs/internal-developers/testing/README.md | 3 +- .../testing/cart-checkout/README.md | 3 +- .../testing/cart-checkout/compatibility.md | 3 +- .../testing/cart-checkout/coupons.md | 3 +- .../testing/cart-checkout/cross-browser.md | 2 +- .../testing/cart-checkout/editor.md | 3 +- .../testing/cart-checkout/general-flow.md | 3 +- .../testing/cart-checkout/items.md | 3 +- .../testing/cart-checkout/payment.md | 3 +- .../testing/cart-checkout/shipping.md | 3 +- .../testing/cart-checkout/taxes.md | 3 +- .../testing/releases/260.md | 3 +- .../testing/releases/261.md | 3 +- .../testing/releases/270.md | 3 +- .../testing/releases/271.md | 3 +- .../testing/releases/272.md | 3 +- .../testing/releases/280.md | 3 +- .../testing/releases/290.md | 3 +- .../testing/releases/300.md | 3 +- .../testing/releases/310.md | 3 +- .../testing/releases/320.md | 3 +- .../testing/releases/330.md | 3 +- .../testing/releases/340.md | 3 +- .../testing/releases/350.md | 3 +- .../testing/releases/360.md | 3 +- .../testing/releases/370.md | 3 +- .../testing/releases/371.md | 3 +- .../testing/releases/380.md | 3 +- .../testing/releases/390.md | 3 +- .../testing/releases/400.md | 3 +- .../testing/releases/410.md | 3 +- .../testing/releases/420.md | 3 +- .../testing/releases/430.md | 3 +- .../testing/releases/440.md | 3 +- .../testing/releases/450.md | 3 +- .../testing/releases/452.md | 3 +- .../testing/releases/460.md | 3 +- .../testing/releases/470.md | 3 +- .../testing/releases/480.md | 3 +- .../testing/releases/490.md | 3 +- .../testing/releases/491.md | 3 +- .../testing/releases/500.md | 3 +- .../testing/releases/510.md | 3 +- .../testing/releases/520.md | 3 +- .../testing/releases/530.md | 3 +- .../testing/releases/531.md | 3 +- .../testing/releases/532.md | 3 +- .../testing/releases/540.md | 3 +- .../testing/releases/550.md | 3 +- .../testing/releases/560.md | 3 +- .../testing/releases/570.md | 3 +- .../testing/releases/571.md | 3 +- .../testing/releases/572.md | 3 +- .../testing/releases/580.md | 3 +- .../testing/releases/590.md | 3 +- .../testing/releases/591.md | 3 +- .../testing/releases/600.md | 3 +- .../testing/releases/610.md | 3 +- .../testing/releases/620.md | 3 +- .../testing/releases/630.md | 3 +- .../testing/releases/631.md | 3 +- .../testing/releases/632.md | 3 +- .../testing/releases/633.md | 3 +- .../testing/releases/640.md | 3 +- .../testing/releases/650.md | 3 +- .../testing/releases/660.md | 3 +- .../testing/releases/670.md | 3 +- .../testing/releases/671.md | 3 +- .../testing/releases/672.md | 3 +- .../testing/releases/673.md | 3 +- .../testing/releases/680.md | 3 +- .../testing/releases/690.md | 3 +- .../testing/releases/700.md | 3 +- .../testing/releases/710.md | 3 +- .../testing/releases/720.md | 3 +- .../testing/releases/721.md | 3 +- .../testing/releases/722.md | 3 +- .../testing/releases/730.md | 3 +- .../testing/releases/740.md | 3 +- .../testing/releases/741.md | 3 +- .../testing/releases/742.md | 3 +- .../testing/releases/750.md | 3 +- .../testing/releases/760.md | 3 +- .../testing/releases/761.md | 3 +- .../testing/releases/762.md | 3 +- .../testing/releases/770.md | 3 +- .../testing/releases/780.md | 3 +- .../testing/releases/781.md | 3 +- .../testing/releases/782.md | 3 +- .../testing/releases/783.md | 3 +- .../testing/releases/790.md | 10 + .../testing/releases/800.md | 10 + .../testing/releases/810.md | 10 + .../testing/releases/README.md | 3 +- .../testing/smoke-testing.md | 3 +- .../testing/when-to-employ-e2e-testing.md | 3 +- .../translations/README.md | 3 +- .../translations/translation-basics.md | 3 +- .../translations/translation-loading.md | 3 +- .../translations/translation-management.md | 3 +- ...translations-for-lazy-loaded-components.md | 3 +- .../translations-in-FSE-templates.md | 3 +- .../translations-in-JS-TS-files.md | 3 +- .../translations/translations-in-PHP-files.md | 3 +- .../extensibility/README.md | 3 +- .../checkout-block/available-filters.md | 3 +- .../checkout-block/available-slot-fills.md | 3 +- .../checkout-block/dom-events.md | 3 +- .../checkout-block/integration-interface.md | 3 +- .../checkout-block/slot-fills.md | 3 +- .../checkout-flow-and-events.md | 3 +- .../filtering-payment-methods.md | 3 +- .../payment-method-integration.md | 3 +- .../extensibility/hooks/actions.md | 370 ++-- .../extensibility/hooks/filters.md | 452 ++-- .../rest-api/available-endpoints-to-extend.md | 3 +- .../rest-api/extend-rest-api-add-data.md | 3 +- .../rest-api/extend-rest-api-formatters.md | 3 +- .../rest-api/extend-rest-api-new-endpoint.md | 3 +- .../rest-api/extend-rest-api-update-cart.md | 3 +- packages/checkout/README.md | 3 +- packages/checkout/blocks-registry/README.md | 3 +- packages/checkout/components/README.md | 3 +- packages/checkout/filter-registry/README.md | 3 +- packages/checkout/slot/README.md | 3 +- packages/checkout/utils/README.md | 3 +- src/StoreApi/README.md | 3 +- src/StoreApi/Routes/V1/Checkout.php | 8 + src/StoreApi/docs/cart-coupons.md | 3 +- src/StoreApi/docs/cart-items.md | 3 +- src/StoreApi/docs/cart.md | 3 +- src/StoreApi/docs/checkout.md | 3 +- src/StoreApi/docs/guiding-principles.md | 5 +- src/StoreApi/docs/nonce-tokens.md | 3 +- src/StoreApi/docs/product-attribute-terms.md | 3 +- src/StoreApi/docs/product-attributes.md | 3 +- src/StoreApi/docs/product-collection-data.md | 3 +- src/StoreApi/docs/products.md | 3 +- 172 files changed, 2686 insertions(+), 2047 deletions(-) diff --git a/bin/add-doc-footer.sh b/bin/add-doc-footer.sh index 5266bfe2e..43d8d7ee5 100755 --- a/bin/add-doc-footer.sh +++ b/bin/add-doc-footer.sh @@ -6,7 +6,7 @@ function update_footer { [We'\''re hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20'$1') +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20'$1') ' diff --git a/bin/hook-docs/data/actions.json b/bin/hook-docs/data/actions.json index 8dd7578c4..6ec1005eb 100644 --- a/bin/hook-docs/data/actions.json +++ b/bin/hook-docs/data/actions.json @@ -1,718 +1,805 @@ { - "$schema": "https://raw.githubusercontent.com/johnbillion/wp-hooks-generator/0.7.3/schema.json", - "hooks": [ - { - "name": "woocommerce_add_to_cart", - "file": "StoreApi/Utilities/CartController.php", - "type": "action", - "doc": { - "description": "Fires when an item is added to the cart.", - "long_description": "This hook fires when an item is added to the cart. This is triggered from the Store API in this context, but WooCommerce core add to cart events trigger the same hook.", - "tags": [ - { - "name": "internal", - "content": "Matches action name in WooCommerce core." - }, - { - "name": "param", - "content": "ID of the item in the cart.", - "types": [ "string" ], - "variable": "$cart_id" - }, - { - "name": "param", - "content": "ID of the product added to the cart.", - "types": [ "integer" ], - "variable": "$product_id" - }, - { - "name": "param", - "content": "Quantity of the item added to the cart.", - "types": [ "integer" ], - "variable": "$request_quantity" - }, - { - "name": "param", - "content": "Variation ID of the product added to the cart.", - "types": [ "integer" ], - "variable": "$variation_id" - }, - { - "name": "param", - "content": "Array of variation data.", - "types": [ "array" ], - "variable": "$variation" - }, - { - "name": "param", - "content": "Array of other cart item data.", - "types": [ "array" ], - "variable": "$cart_item_data" - } - ], - "long_description_html": "

This hook fires when an item is added to the cart. This is triggered from the Store API in this context, but WooCommerce core add to cart events trigger the same hook.

" - }, - "args": 6 - }, - { - "name": "woocommerce_after_main_content", - "file": "BlockTypes/ClassicTemplate.php", - "type": "action", - "doc": { - "description": "Hook: woocommerce_after_main_content", - "long_description": "Called after rendering the main content for a product.", - "tags": [ - { - "name": "see", - "content": "Outputs closing DIV for the content (priority 10)", - "refers": "woocommerce_output_content_wrapper_end()" - } - ], - "long_description_html": "

Called after rendering the main content for a product.

" - }, - "args": 0 - }, - { - "name": "woocommerce_after_main_content", - "file": "BlockTypes/ClassicTemplate.php", - "type": "action", - "doc": { - "description": "Hook: woocommerce_after_main_content", - "long_description": "Called after rendering the main content for a product.", - "tags": [ - { - "name": "see", - "content": "Outputs closing DIV for the content (priority 10)", - "refers": "woocommerce_output_content_wrapper_end()" - } - ], - "long_description_html": "

Called after rendering the main content for a product.

" - }, - "args": 0 - }, - { - "name": "woocommerce_after_shop_loop", - "file": "BlockTypes/ClassicTemplate.php", - "type": "action", - "doc": { - "description": "Hook: woocommerce_after_shop_loop.", - "long_description": "", - "tags": [ - { - "name": "see", - "content": "Renders pagination (priority 10)", - "refers": "woocommerce_pagination()" - } - ], - "long_description_html": "" - }, - "args": 0 - }, - { - "name": "woocommerce_applied_coupon", - "file": "StoreApi/Utilities/CartController.php", - "type": "action", - "doc": { - "description": "Fires after a coupon has been applied to the cart.", - "long_description": "", - "tags": [ - { - "name": "internal", - "content": "Matches action name in WooCommerce core." - }, - { - "name": "param", - "content": "The coupon code that was applied.", - "types": [ "string" ], - "variable": "$coupon_code" - } - ], - "long_description_html": "" - }, - "args": 1 - }, - { - "name": "woocommerce_archive_description", - "file": "BlockTypes/ClassicTemplate.php", - "type": "action", - "doc": { - "description": "Hook: woocommerce_archive_description.", - "long_description": "", - "tags": [ - { - "name": "see", - "content": "Renders the taxonomy archive description (priority 10)", - "refers": "woocommerce_taxonomy_archive_description()" - }, - { - "name": "see", - "content": "Renders the product archive description (priority 10)", - "refers": "woocommerce_product_archive_description()" - } - ], - "long_description_html": "" - }, - "args": 0 - }, - { - "name": "woocommerce_before_main_content", - "file": "BlockTypes/ClassicTemplate.php", - "type": "action", - "doc": { - "description": "Hook: woocommerce_before_main_content", - "long_description": "Called before rendering the main content for a product.", - "tags": [ - { - "name": "see", - "content": "Outputs opening DIV for the content (priority 10)", - "refers": "woocommerce_output_content_wrapper()" - }, - { - "name": "see", - "content": "Outputs breadcrumb trail to the current product (priority 20)", - "refers": "woocommerce_breadcrumb()" - }, - { - "name": "see", - "content": "Outputs schema markup (priority 30)", - "refers": "WC_Structured_Data::generate_website_data()" - } - ], - "long_description_html": "

Called before rendering the main content for a product.

" - }, - "args": 0 - }, - { - "name": "woocommerce_before_main_content", - "file": "BlockTypes/ClassicTemplate.php", - "type": "action", - "doc": { - "description": "Hook: woocommerce_before_main_content", - "long_description": "Called before rendering the main content for a product.", - "tags": [ - { - "name": "see", - "content": "Outputs opening DIV for the content (priority 10)", - "refers": "woocommerce_output_content_wrapper()" - }, - { - "name": "see", - "content": "Outputs breadcrumb trail to the current product (priority 20)", - "refers": "woocommerce_breadcrumb()" - }, - { - "name": "see", - "content": "Outputs schema markup (priority 30)", - "refers": "WC_Structured_Data::generate_website_data()" - } - ], - "long_description_html": "

Called before rendering the main content for a product.

" - }, - "args": 0 - }, - { - "name": "woocommerce_before_shop_loop", - "file": "BlockTypes/ClassicTemplate.php", - "type": "action", - "doc": { - "description": "Hook: woocommerce_before_shop_loop.", - "long_description": "", - "tags": [ - { - "name": "see", - "content": "Render error notices (priority 10)", - "refers": "woocommerce_output_all_notices()" - }, - { - "name": "see", - "content": "Show number of results found (priority 20)", - "refers": "woocommerce_result_count()" - }, - { - "name": "see", - "content": "Show form to control sort order (priority 30)", - "refers": "woocommerce_catalog_ordering()" - } - ], - "long_description_html": "" - }, - "args": 0 - }, - { - "name": "woocommerce_blocks_cart_enqueue_data", - "file": "BlockTypes/MiniCart.php", - "type": "action", - "doc": { - "description": "Fires after cart block data is registered.", - "long_description": "", - "tags": [], - "long_description_html": "" - }, - "args": 0 - }, - { - "name": "woocommerce_blocks_cart_enqueue_data", - "file": "BlockTypes/Cart.php", - "type": "action", - "doc": { - "description": "Fires after cart block data is registered.", - "long_description": "", - "tags": [], - "long_description_html": "" - }, - "args": 0 - }, - { - "name": "woocommerce_blocks_checkout_enqueue_data", - "file": "BlockTypes/Checkout.php", - "type": "action", - "doc": { - "description": "Fires after checkout block data is registered.", - "long_description": "", - "tags": [], - "long_description_html": "" - }, - "args": 0 - }, - { - "name": "woocommerce_blocks_enqueue_cart_block_scripts_after", - "file": "BlockTypes/Cart.php", - "type": "action", - "doc": { - "description": "Fires after cart block scripts are enqueued.", - "long_description": "", - "tags": [], - "long_description_html": "" - }, - "args": 0 - }, - { - "name": "woocommerce_blocks_enqueue_cart_block_scripts_before", - "file": "BlockTypes/Cart.php", - "type": "action", - "doc": { - "description": "Fires before cart block scripts are enqueued.", - "long_description": "", - "tags": [], - "long_description_html": "" - }, - "args": 0 - }, - { - "name": "woocommerce_blocks_enqueue_checkout_block_scripts_after", - "file": "BlockTypes/Checkout.php", - "type": "action", - "doc": { - "description": "Fires after checkout block scripts are enqueued.", - "long_description": "", - "tags": [], - "long_description_html": "" - }, - "args": 0 - }, - { - "name": "woocommerce_blocks_enqueue_checkout_block_scripts_before", - "file": "BlockTypes/Checkout.php", - "type": "action", - "doc": { - "description": "Fires before checkout block scripts are enqueued.", - "long_description": "", - "tags": [], - "long_description_html": "" - }, - "args": 0 - }, - { - "name": "woocommerce_blocks_{$this->registry_identifier}_registration", - "file": "Integrations/IntegrationRegistry.php", - "type": "action", - "doc": { - "description": "Fires when the IntegrationRegistry is initialized.", - "long_description": "Runs before integrations are initialized allowing new integration to be registered for use. This should be used as the primary hook for integrations to include their scripts, styles, and other code extending the blocks.", - "tags": [ - { - "name": "param", - "content": "Instance of the IntegrationRegistry class which exposes the IntegrationRegistry::register() method.", - "types": [ - "\\Automattic\\WooCommerce\\Blocks\\Integrations\\IntegrationRegistry" - ], - "variable": "$this" - } - ], - "long_description_html": "

Runs before integrations are initialized allowing new integration to be registered for use. This should be used as the primary hook for integrations to include their scripts, styles, and other code extending the blocks.

" - }, - "args": 1 - }, - { - "name": "woocommerce_check_cart_items", - "file": "StoreApi/Utilities/CartController.php", - "type": "action", - "doc": { - "description": "Fires when cart items are being validated.", - "long_description": "Allow 3rd parties to validate cart items. This is a legacy hook from Woo core. This filter will be deprecated because it encourages usage of wc_add_notice. For the API we need to capture notices and convert to wp errors instead.", - "tags": [ - { - "name": "deprecated", - "content": "" - }, - { - "name": "internal", - "content": "Matches action name in WooCommerce core." - } - ], - "long_description_html": "

Allow 3rd parties to validate cart items. This is a legacy hook from Woo core. This filter will be deprecated because it encourages usage of wc_add_notice. For the API we need to capture notices and convert to wp errors instead.

" - }, - "args": 0 - }, - { - "name": "woocommerce_created_customer", - "file": "StoreApi/Routes/V1/Checkout.php", - "type": "action", - "doc": { - "description": "Fires after a customer account has been registered.", - "long_description": "This hook fires after customer accounts are created and passes the customer data.", - "tags": [ - { - "name": "internal", - "content": "Matches filter name in WooCommerce core." - }, - { - "name": "param", - "content": "New customer (user) ID.", - "types": [ "integer" ], - "variable": "$customer_id" - }, - { - "name": "param", - "content": "Array of customer (user) data.", - "types": [ "array" ], - "variable": "$new_customer_data" - }, - { - "name": "param", - "content": "The generated password for the account.", - "types": [ "string" ], - "variable": "$password_generated" - } - ], - "long_description_html": "

This hook fires after customer accounts are created and passes the customer data.

" - }, - "args": 3 - }, - { - "name": "woocommerce_no_products_found", - "file": "BlockTypes/ClassicTemplate.php", - "type": "action", - "doc": { - "description": "Hook: woocommerce_no_products_found.", - "long_description": "", - "tags": [ - { - "name": "see", - "content": "Default no products found content (priority 10)", - "refers": "wc_no_products_found()" - } - ], - "long_description_html": "" - }, - "args": 0 - }, - { - "name": "woocommerce_register_post", - "file": "StoreApi/Routes/V1/Checkout.php", - "type": "action", - "doc": { - "description": "Fires before a customer account is registered.", - "long_description": "This hook fires before customer accounts are created and passes the form data (username, email) and an array of errors.\n This could be used to add extra validation logic and append errors to the array.", - "tags": [ - { - "name": "internal", - "content": "Matches filter name in WooCommerce core." - }, - { - "name": "param", - "content": "Customer username.", - "types": [ "string" ], - "variable": "$username" - }, - { - "name": "param", - "content": "Customer email address.", - "types": [ "string" ], - "variable": "$user_email" - }, - { - "name": "param", - "content": "Error object.", - "types": [ "\\WP_Error" ], - "variable": "$errors" - } - ], - "long_description_html": "

This hook fires before customer accounts are created and passes the form data (username, email) and an array of errors.

This could be used to add extra validation logic and append errors to the array.

" - }, - "args": 3 - }, - { - "name": "woocommerce_rest_checkout_process_payment_with_context", - "file": "StoreApi/Routes/V1/Checkout.php", - "type": "action_reference", - "doc": { - "description": "Process payment with context.", - "long_description": "", - "tags": [ - { - "name": "hook", - "content": "woocommerce_rest_checkout_process_payment_with_context" - }, - { - "name": "throws", - "content": "If there is an error taking payment, an \\Exception object can be thrown with an error message.", - "types": [ "\\Exception" ] - }, - { - "name": "param", - "content": "Holds context for the payment, including order ID and payment method.", - "types": [ - "\\Automattic\\WooCommerce\\StoreApi\\Payments\\PaymentContext" - ], - "variable": "$context" - }, - { - "name": "param", - "content": "Result object for the transaction.", - "types": [ - "\\Automattic\\WooCommerce\\StoreApi\\Payments\\PaymentResult" - ], - "variable": "$payment_result" - } - ], - "long_description_html": "" - }, - "args": 1 - }, - { - "name": "woocommerce_shop_loop", - "file": "BlockTypes/ClassicTemplate.php", - "type": "action", - "doc": { - "description": "Hook: woocommerce_shop_loop.", - "long_description": "", - "tags": [], - "long_description_html": "" - }, - "args": 0 - }, - { - "name": "woocommerce_store_api_cart_errors", - "file": "StoreApi/Utilities/CartController.php", - "type": "action", - "doc": { - "description": "Fires an action to validate the cart.", - "long_description": "Functions hooking into this should add custom errors using the provided WP_Error instance.", - "tags": [ - { - "name": "example", - "content": "docs/examples/validate-cart.md" - }, - { - "name": "param", - "content": "WP_Error object.", - "types": [ "\\WP_Error" ], - "variable": "$errors" - }, - { - "name": "param", - "content": "Cart object.", - "types": [ "\\WC_Cart" ], - "variable": "$cart" - } - ], - "long_description_html": "

Functions hooking into this should add custom errors using the provided WP_Error instance.

" - }, - "args": 2 - }, - { - "name": "woocommerce_store_api_cart_update_customer_from_request", - "file": "StoreApi/Routes/V1/CartUpdateCustomer.php", - "type": "action", - "doc": { - "description": "Fires when the Checkout Block/Store API updates a customer from the API request data.", - "long_description": "", - "tags": [ - { - "name": "param", - "content": "Customer object.", - "types": [ "\\WC_Customer" ], - "variable": "$customer" - }, - { - "name": "param", - "content": "Full details about the request.", - "types": [ "\\WP_REST_Request" ], - "variable": "$request" - } - ], - "long_description_html": "" - }, - "args": 2 - }, - { - "name": "woocommerce_store_api_cart_update_order_from_request", - "file": "StoreApi/Routes/V1/AbstractCartRoute.php", - "type": "action", - "doc": { - "description": "Fires when the order is synced with cart data from a cart route.", - "long_description": "", - "tags": [ - { - "name": "param", - "content": "Order object.", - "types": [ "\\WC_Order" ], - "variable": "$draft_order" - }, - { - "name": "param", - "content": "Customer object.", - "types": [ "\\WC_Customer" ], - "variable": "$customer" - }, - { - "name": "param", - "content": "Full details about the request.", - "types": [ "\\WP_REST_Request" ], - "variable": "$request" - } - ], - "long_description_html": "" - }, - "args": 2 - }, - { - "name": "woocommerce_store_api_checkout_order_processed", - "file": "StoreApi/Routes/V1/Checkout.php", - "type": "action", - "doc": { - "description": "Fires before an order is processed by the Checkout Block/Store API.", - "long_description": "This hook informs extensions that $order has completed processing and is ready for payment.\n This is similar to existing core hook woocommerce_checkout_order_processed. We're using a new action: - To keep the interface focused (only pass $order, not passing request data). - This also explicitly indicates these orders are from checkout block/StoreAPI.", - "tags": [ - { - "name": "see", - "content": "", - "refers": "https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/3238" - }, - { - "name": "example", - "content": "docs/examples/checkout-order-processed.md" - }, - { - "name": "param", - "content": "Order object.", - "types": [ "\\WC_Order" ], - "variable": "$order" - } - ], - "long_description_html": "

This hook informs extensions that $order has completed processing and is ready for payment.

This is similar to existing core hook woocommerce_checkout_order_processed. We're using a new action:

  • To keep the interface focused (only pass $order, not passing request data).
  • This also explicitly indicates these orders are from checkout block/StoreAPI.
" - }, - "args": 1 - }, - { - "name": "woocommerce_store_api_checkout_update_order_from_request", - "file": "StoreApi/Routes/V1/Checkout.php", - "type": "action", - "doc": { - "description": "Fires when the Checkout Block/Store API updates an order's from the API request data.", - "long_description": "This hook gives extensions the chance to update orders based on the data in the request. This can be used in conjunction with the ExtendSchema class to post custom data and then process it.", - "tags": [ - { - "name": "param", - "content": "Order object.", - "types": [ "\\WC_Order" ], - "variable": "$order" - }, - { - "name": "param", - "content": "Full details about the request.", - "types": [ "\\WP_REST_Request" ], - "variable": "$request" - } - ], - "long_description_html": "

This hook gives extensions the chance to update orders based on the data in the request. This can be used in conjunction with the ExtendSchema class to post custom data and then process it.

" - }, - "args": 2 - }, - { - "name": "woocommerce_store_api_checkout_update_order_meta", - "file": "StoreApi/Routes/V1/Checkout.php", - "type": "action", - "doc": { - "description": "Fires when the Checkout Block/Store API updates an order's meta data.", - "long_description": "This hook gives extensions the chance to add or update meta data on the $order. Throwing an exception from a callback attached to this action will make the Checkout Block render in a warning state, effectively preventing checkout.\n This is similar to existing core hook woocommerce_checkout_update_order_meta. We're using a new action: - To keep the interface focused (only pass $order, not passing request data). - This also explicitly indicates these orders are from checkout block/StoreAPI.", - "tags": [ - { - "name": "see", - "content": "", - "refers": "https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/3686" - }, - { - "name": "param", - "content": "Order object.", - "types": [ "\\WC_Order" ], - "variable": "$order" - } - ], - "long_description_html": "

This hook gives extensions the chance to add or update meta data on the $order. Throwing an exception from a callback attached to this action will make the Checkout Block render in a warning state, effectively preventing checkout.

This is similar to existing core hook woocommerce_checkout_update_order_meta. We're using a new action:

  • To keep the interface focused (only pass $order, not passing request data).
  • This also explicitly indicates these orders are from checkout block/StoreAPI.
" - }, - "args": 1 - }, - { - "name": "woocommerce_store_api_validate_add_to_cart", - "file": "StoreApi/Utilities/CartController.php", - "type": "action", - "doc": { - "description": "Fires during validation when adding an item to the cart via the Store API.", - "long_description": "Fire action to validate add to cart. Functions hooking into this should throw an \\Exception to prevent add to cart from happening.", - "tags": [ - { - "name": "param", - "content": "Product object being added to the cart.", - "types": [ "\\WC_Product" ], - "variable": "$product" - }, - { - "name": "param", - "content": "Add to cart request params including id, quantity, and variation attributes.", - "types": [ "array" ], - "variable": "$request" - } - ], - "long_description_html": "

Fire action to validate add to cart. Functions hooking into this should throw an \\Exception to prevent add to cart from happening.

" - }, - "args": 2 - }, - { - "name": "woocommerce_store_api_validate_cart_item", - "file": "StoreApi/Utilities/CartController.php", - "type": "action", - "doc": { - "description": "Fire action to validate add to cart. Functions hooking into this should throw an \\Exception to prevent add to cart from occurring.", - "long_description": "", - "tags": [ - { - "name": "param", - "content": "Product object being added to the cart.", - "types": [ "\\WC_Product" ], - "variable": "$product" - }, - { - "name": "param", - "content": "Cart item array.", - "types": [ "array" ], - "variable": "$cart_item" - } - ], - "long_description_html": "" - }, - "args": 2 - } - ] -} + "$schema": "https://raw.githubusercontent.com/johnbillion/wp-hooks-generator/0.7.0/schema.json", + "hooks": [ + { + "name": "woocommerce_add_to_cart", + "file": "StoreApi/Utilities/CartController.php", + "type": "action", + "doc": { + "description": "Fires when an item is added to the cart.", + "long_description": "This hook fires when an item is added to the cart. This is triggered from the Store API in this context, but WooCommerce core add to cart events trigger the same hook.", + "tags": [ + { + "name": "internal", + "content": "Matches action name in WooCommerce core." + }, + { + "name": "param", + "content": "ID of the item in the cart.", + "types": [ + "string" + ], + "variable": "$cart_id" + }, + { + "name": "param", + "content": "ID of the product added to the cart.", + "types": [ + "integer" + ], + "variable": "$product_id" + }, + { + "name": "param", + "content": "Quantity of the item added to the cart.", + "types": [ + "integer" + ], + "variable": "$request_quantity" + }, + { + "name": "param", + "content": "Variation ID of the product added to the cart.", + "types": [ + "integer" + ], + "variable": "$variation_id" + }, + { + "name": "param", + "content": "Array of variation data.", + "types": [ + "array" + ], + "variable": "$variation" + }, + { + "name": "param", + "content": "Array of other cart item data.", + "types": [ + "array" + ], + "variable": "$cart_item_data" + } + ], + "long_description_html": "

This hook fires when an item is added to the cart. This is triggered from the Store API in this context, but WooCommerce core add to cart events trigger the same hook.

" + }, + "args": 6 + }, + { + "name": "woocommerce_after_main_content", + "file": "BlockTypes/ClassicTemplate.php", + "type": "action", + "doc": { + "description": "Hook: woocommerce_after_main_content", + "long_description": "Called after rendering the main content for a product.", + "tags": [ + { + "name": "see", + "content": "Outputs closing DIV for the content (priority 10)", + "refers": "woocommerce_output_content_wrapper_end()" + } + ], + "long_description_html": "

Called after rendering the main content for a product.

" + }, + "args": 0 + }, + { + "name": "woocommerce_after_main_content", + "file": "BlockTypes/ClassicTemplate.php", + "type": "action", + "doc": { + "description": "Hook: woocommerce_after_main_content", + "long_description": "Called after rendering the main content for a product.", + "tags": [ + { + "name": "see", + "content": "Outputs closing DIV for the content (priority 10)", + "refers": "woocommerce_output_content_wrapper_end()" + } + ], + "long_description_html": "

Called after rendering the main content for a product.

" + }, + "args": 0 + }, + { + "name": "woocommerce_after_shop_loop", + "file": "BlockTypes/ClassicTemplate.php", + "type": "action", + "doc": { + "description": "Hook: woocommerce_after_shop_loop.", + "long_description": "", + "tags": [ + { + "name": "see", + "content": "Renders pagination (priority 10)", + "refers": "woocommerce_pagination()" + } + ], + "long_description_html": "" + }, + "args": 0 + }, + { + "name": "woocommerce_applied_coupon", + "file": "StoreApi/Utilities/CartController.php", + "type": "action", + "doc": { + "description": "Fires after a coupon has been applied to the cart.", + "long_description": "", + "tags": [ + { + "name": "internal", + "content": "Matches action name in WooCommerce core." + }, + { + "name": "param", + "content": "The coupon code that was applied.", + "types": [ + "string" + ], + "variable": "$coupon_code" + } + ], + "long_description_html": "" + }, + "args": 1 + }, + { + "name": "woocommerce_archive_description", + "file": "BlockTypes/ClassicTemplate.php", + "type": "action", + "doc": { + "description": "Hook: woocommerce_archive_description.", + "long_description": "", + "tags": [ + { + "name": "see", + "content": "Renders the taxonomy archive description (priority 10)", + "refers": "woocommerce_taxonomy_archive_description()" + }, + { + "name": "see", + "content": "Renders the product archive description (priority 10)", + "refers": "woocommerce_product_archive_description()" + } + ], + "long_description_html": "" + }, + "args": 0 + }, + { + "name": "woocommerce_before_main_content", + "file": "BlockTypes/ClassicTemplate.php", + "type": "action", + "doc": { + "description": "Hook: woocommerce_before_main_content", + "long_description": "Called before rendering the main content for a product.", + "tags": [ + { + "name": "see", + "content": "Outputs opening DIV for the content (priority 10)", + "refers": "woocommerce_output_content_wrapper()" + }, + { + "name": "see", + "content": "Outputs breadcrumb trail to the current product (priority 20)", + "refers": "woocommerce_breadcrumb()" + }, + { + "name": "see", + "content": "Outputs schema markup (priority 30)", + "refers": "WC_Structured_Data::generate_website_data()" + } + ], + "long_description_html": "

Called before rendering the main content for a product.

" + }, + "args": 0 + }, + { + "name": "woocommerce_before_main_content", + "file": "BlockTypes/ClassicTemplate.php", + "type": "action", + "doc": { + "description": "Hook: woocommerce_before_main_content", + "long_description": "Called before rendering the main content for a product.", + "tags": [ + { + "name": "see", + "content": "Outputs opening DIV for the content (priority 10)", + "refers": "woocommerce_output_content_wrapper()" + }, + { + "name": "see", + "content": "Outputs breadcrumb trail to the current product (priority 20)", + "refers": "woocommerce_breadcrumb()" + }, + { + "name": "see", + "content": "Outputs schema markup (priority 30)", + "refers": "WC_Structured_Data::generate_website_data()" + } + ], + "long_description_html": "

Called before rendering the main content for a product.

" + }, + "args": 0 + }, + { + "name": "woocommerce_before_shop_loop", + "file": "BlockTypes/ClassicTemplate.php", + "type": "action", + "doc": { + "description": "Hook: woocommerce_before_shop_loop.", + "long_description": "", + "tags": [ + { + "name": "see", + "content": "Render error notices (priority 10)", + "refers": "woocommerce_output_all_notices()" + }, + { + "name": "see", + "content": "Show number of results found (priority 20)", + "refers": "woocommerce_result_count()" + }, + { + "name": "see", + "content": "Show form to control sort order (priority 30)", + "refers": "woocommerce_catalog_ordering()" + } + ], + "long_description_html": "" + }, + "args": 0 + }, + { + "name": "woocommerce_blocks_cart_enqueue_data", + "file": "BlockTypes/Cart.php", + "type": "action", + "doc": { + "description": "Fires after cart block data is registered.", + "long_description": "", + "tags": [], + "long_description_html": "" + }, + "args": 0 + }, + { + "name": "woocommerce_blocks_cart_enqueue_data", + "file": "BlockTypes/MiniCart.php", + "type": "action", + "doc": { + "description": "Fires after cart block data is registered.", + "long_description": "", + "tags": [], + "long_description_html": "" + }, + "args": 0 + }, + { + "name": "woocommerce_blocks_checkout_enqueue_data", + "file": "BlockTypes/Checkout.php", + "type": "action", + "doc": { + "description": "Fires after checkout block data is registered.", + "long_description": "", + "tags": [], + "long_description_html": "" + }, + "args": 0 + }, + { + "name": "woocommerce_blocks_enqueue_cart_block_scripts_after", + "file": "BlockTypes/Cart.php", + "type": "action", + "doc": { + "description": "Fires after cart block scripts are enqueued.", + "long_description": "", + "tags": [], + "long_description_html": "" + }, + "args": 0 + }, + { + "name": "woocommerce_blocks_enqueue_cart_block_scripts_before", + "file": "BlockTypes/Cart.php", + "type": "action", + "doc": { + "description": "Fires before cart block scripts are enqueued.", + "long_description": "", + "tags": [], + "long_description_html": "" + }, + "args": 0 + }, + { + "name": "woocommerce_blocks_enqueue_checkout_block_scripts_after", + "file": "BlockTypes/Checkout.php", + "type": "action", + "doc": { + "description": "Fires after checkout block scripts are enqueued.", + "long_description": "", + "tags": [], + "long_description_html": "" + }, + "args": 0 + }, + { + "name": "woocommerce_blocks_enqueue_checkout_block_scripts_before", + "file": "BlockTypes/Checkout.php", + "type": "action", + "doc": { + "description": "Fires before checkout block scripts are enqueued.", + "long_description": "", + "tags": [], + "long_description_html": "" + }, + "args": 0 + }, + { + "name": "woocommerce_blocks_{$this->registry_identifier}_registration", + "file": "Integrations/IntegrationRegistry.php", + "type": "action", + "doc": { + "description": "Fires when the IntegrationRegistry is initialized.", + "long_description": "Runs before integrations are initialized allowing new integration to be registered for use. This should be used as the primary hook for integrations to include their scripts, styles, and other code extending the blocks.", + "tags": [ + { + "name": "param", + "content": "Instance of the IntegrationRegistry class which exposes the IntegrationRegistry::register() method.", + "types": [ + "\\Automattic\\WooCommerce\\Blocks\\Integrations\\IntegrationRegistry" + ], + "variable": "$this" + } + ], + "long_description_html": "

Runs before integrations are initialized allowing new integration to be registered for use. This should be used as the primary hook for integrations to include their scripts, styles, and other code extending the blocks.

" + }, + "args": 1 + }, + { + "name": "woocommerce_check_cart_items", + "file": "StoreApi/Utilities/CartController.php", + "type": "action", + "doc": { + "description": "Fires when cart items are being validated.", + "long_description": "Allow 3rd parties to validate cart items. This is a legacy hook from Woo core. This filter will be deprecated because it encourages usage of wc_add_notice. For the API we need to capture notices and convert to wp errors instead.", + "tags": [ + { + "name": "deprecated", + "content": "" + }, + { + "name": "internal", + "content": "Matches action name in WooCommerce core." + } + ], + "long_description_html": "

Allow 3rd parties to validate cart items. This is a legacy hook from Woo core. This filter will be deprecated because it encourages usage of wc_add_notice. For the API we need to capture notices and convert to wp errors instead.

" + }, + "args": 0 + }, + { + "name": "woocommerce_created_customer", + "file": "StoreApi/Routes/V1/Checkout.php", + "type": "action", + "doc": { + "description": "Fires after a customer account has been registered.", + "long_description": "This hook fires after customer accounts are created and passes the customer data.", + "tags": [ + { + "name": "internal", + "content": "Matches filter name in WooCommerce core." + }, + { + "name": "param", + "content": "New customer (user) ID.", + "types": [ + "integer" + ], + "variable": "$customer_id" + }, + { + "name": "param", + "content": "Array of customer (user) data.", + "types": [ + "array" + ], + "variable": "$new_customer_data" + }, + { + "name": "param", + "content": "The generated password for the account.", + "types": [ + "string" + ], + "variable": "$password_generated" + } + ], + "long_description_html": "

This hook fires after customer accounts are created and passes the customer data.

" + }, + "args": 3 + }, + { + "name": "woocommerce_no_products_found", + "file": "BlockTypes/ClassicTemplate.php", + "type": "action", + "doc": { + "description": "Hook: woocommerce_no_products_found.", + "long_description": "", + "tags": [ + { + "name": "see", + "content": "Default no products found content (priority 10)", + "refers": "wc_no_products_found()" + } + ], + "long_description_html": "" + }, + "args": 0 + }, + { + "name": "woocommerce_register_post", + "file": "StoreApi/Routes/V1/Checkout.php", + "type": "action", + "doc": { + "description": "Fires before a customer account is registered.", + "long_description": "This hook fires before customer accounts are created and passes the form data (username, email) and an array of errors.\n This could be used to add extra validation logic and append errors to the array.", + "tags": [ + { + "name": "internal", + "content": "Matches filter name in WooCommerce core." + }, + { + "name": "param", + "content": "Customer username.", + "types": [ + "string" + ], + "variable": "$username" + }, + { + "name": "param", + "content": "Customer email address.", + "types": [ + "string" + ], + "variable": "$user_email" + }, + { + "name": "param", + "content": "Error object.", + "types": [ + "\\WP_Error" + ], + "variable": "$errors" + } + ], + "long_description_html": "

This hook fires before customer accounts are created and passes the form data (username, email) and an array of errors.

This could be used to add extra validation logic and append errors to the array.

" + }, + "args": 3 + }, + { + "name": "woocommerce_rest_checkout_process_payment_with_context", + "file": "StoreApi/Routes/V1/Checkout.php", + "type": "action_reference", + "doc": { + "description": "Process payment with context.", + "long_description": "", + "tags": [ + { + "name": "hook", + "content": "woocommerce_rest_checkout_process_payment_with_context" + }, + { + "name": "throws", + "content": "If there is an error taking payment, an \\Exception object can be thrown with an error message.", + "types": [ + "\\Exception" + ] + }, + { + "name": "param", + "content": "Holds context for the payment, including order ID and payment method.", + "types": [ + "\\Automattic\\WooCommerce\\StoreApi\\Payments\\PaymentContext" + ], + "variable": "$context" + }, + { + "name": "param", + "content": "Result object for the transaction.", + "types": [ + "\\Automattic\\WooCommerce\\StoreApi\\Payments\\PaymentResult" + ], + "variable": "$payment_result" + } + ], + "long_description_html": "" + }, + "args": 1 + }, + { + "name": "woocommerce_shop_loop", + "file": "BlockTypes/ClassicTemplate.php", + "type": "action", + "doc": { + "description": "Hook: woocommerce_shop_loop.", + "long_description": "", + "tags": [], + "long_description_html": "" + }, + "args": 0 + }, + { + "name": "woocommerce_store_api_cart_errors", + "file": "StoreApi/Utilities/CartController.php", + "type": "action", + "doc": { + "description": "Fires an action to validate the cart.", + "long_description": "Functions hooking into this should add custom errors using the provided WP_Error instance.", + "tags": [ + { + "name": "example", + "content": "docs/examples/validate-cart.md" + }, + { + "name": "param", + "content": "WP_Error object.", + "types": [ + "\\WP_Error" + ], + "variable": "$errors" + }, + { + "name": "param", + "content": "Cart object.", + "types": [ + "\\WC_Cart" + ], + "variable": "$cart" + } + ], + "long_description_html": "

Functions hooking into this should add custom errors using the provided WP_Error instance.

" + }, + "args": 2 + }, + { + "name": "woocommerce_store_api_cart_update_customer_from_request", + "file": "StoreApi/Routes/V1/CartUpdateCustomer.php", + "type": "action", + "doc": { + "description": "Fires when the Checkout Block/Store API updates a customer from the API request data.", + "long_description": "", + "tags": [ + { + "name": "param", + "content": "Customer object.", + "types": [ + "\\WC_Customer" + ], + "variable": "$customer" + }, + { + "name": "param", + "content": "Full details about the request.", + "types": [ + "\\WP_REST_Request" + ], + "variable": "$request" + } + ], + "long_description_html": "" + }, + "args": 2 + }, + { + "name": "woocommerce_store_api_cart_update_order_from_request", + "file": "StoreApi/Routes/V1/AbstractCartRoute.php", + "type": "action", + "doc": { + "description": "Fires when the order is synced with cart data from a cart route.", + "long_description": "", + "tags": [ + { + "name": "param", + "content": "Order object.", + "types": [ + "\\WC_Order" + ], + "variable": "$draft_order" + }, + { + "name": "param", + "content": "Customer object.", + "types": [ + "\\WC_Customer" + ], + "variable": "$customer" + }, + { + "name": "param", + "content": "Full details about the request.", + "types": [ + "\\WP_REST_Request" + ], + "variable": "$request" + } + ], + "long_description_html": "" + }, + "args": 2 + }, + { + "name": "woocommerce_store_api_checkout_order_processed", + "file": "StoreApi/Routes/V1/Checkout.php", + "type": "action", + "doc": { + "description": "Fires before an order is processed by the Checkout Block/Store API.", + "long_description": "This hook informs extensions that $order has completed processing and is ready for payment.\n This is similar to existing core hook woocommerce_checkout_order_processed. We're using a new action: - To keep the interface focused (only pass $order, not passing request data). - This also explicitly indicates these orders are from checkout block/StoreAPI.", + "tags": [ + { + "name": "see", + "content": "", + "refers": "https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/3238" + }, + { + "name": "example", + "content": "docs/examples/checkout-order-processed.md" + }, + { + "name": "param", + "content": "Order object.", + "types": [ + "\\WC_Order" + ], + "variable": "$order" + } + ], + "long_description_html": "

This hook informs extensions that $order has completed processing and is ready for payment.

This is similar to existing core hook woocommerce_checkout_order_processed. We're using a new action:

  • To keep the interface focused (only pass $order, not passing request data).
  • This also explicitly indicates these orders are from checkout block/StoreAPI.
" + }, + "args": 1 + }, + { + "name": "woocommerce_store_api_checkout_update_customer_from_request", + "file": "StoreApi/Routes/V1/Checkout.php", + "type": "action", + "doc": { + "description": "Fires when the Checkout Block/Store API updates a customer from the API request data.", + "long_description": "", + "tags": [ + { + "name": "param", + "content": "Customer object.", + "types": [ + "\\WC_Customer" + ], + "variable": "$customer" + }, + { + "name": "param", + "content": "Full details about the request.", + "types": [ + "\\WP_REST_Request" + ], + "variable": "$request" + } + ], + "long_description_html": "" + }, + "args": 2 + }, + { + "name": "woocommerce_store_api_checkout_update_order_from_request", + "file": "StoreApi/Routes/V1/Checkout.php", + "type": "action", + "doc": { + "description": "Fires when the Checkout Block/Store API updates an order's from the API request data.", + "long_description": "This hook gives extensions the chance to update orders based on the data in the request. This can be used in conjunction with the ExtendSchema class to post custom data and then process it.", + "tags": [ + { + "name": "param", + "content": "Order object.", + "types": [ + "\\WC_Order" + ], + "variable": "$order" + }, + { + "name": "param", + "content": "Full details about the request.", + "types": [ + "\\WP_REST_Request" + ], + "variable": "$request" + } + ], + "long_description_html": "

This hook gives extensions the chance to update orders based on the data in the request. This can be used in conjunction with the ExtendSchema class to post custom data and then process it.

" + }, + "args": 2 + }, + { + "name": "woocommerce_store_api_checkout_update_order_meta", + "file": "StoreApi/Routes/V1/Checkout.php", + "type": "action", + "doc": { + "description": "Fires when the Checkout Block/Store API updates an order's meta data.", + "long_description": "This hook gives extensions the chance to add or update meta data on the $order. Throwing an exception from a callback attached to this action will make the Checkout Block render in a warning state, effectively preventing checkout.\n This is similar to existing core hook woocommerce_checkout_update_order_meta. We're using a new action: - To keep the interface focused (only pass $order, not passing request data). - This also explicitly indicates these orders are from checkout block/StoreAPI.", + "tags": [ + { + "name": "see", + "content": "", + "refers": "https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/3686" + }, + { + "name": "param", + "content": "Order object.", + "types": [ + "\\WC_Order" + ], + "variable": "$order" + } + ], + "long_description_html": "

This hook gives extensions the chance to add or update meta data on the $order. Throwing an exception from a callback attached to this action will make the Checkout Block render in a warning state, effectively preventing checkout.

This is similar to existing core hook woocommerce_checkout_update_order_meta. We're using a new action:

  • To keep the interface focused (only pass $order, not passing request data).
  • This also explicitly indicates these orders are from checkout block/StoreAPI.
" + }, + "args": 1 + }, + { + "name": "woocommerce_store_api_validate_add_to_cart", + "file": "StoreApi/Utilities/CartController.php", + "type": "action", + "doc": { + "description": "Fires during validation when adding an item to the cart via the Store API.", + "long_description": "Fire action to validate add to cart. Functions hooking into this should throw an \\Exception to prevent add to cart from happening.", + "tags": [ + { + "name": "param", + "content": "Product object being added to the cart.", + "types": [ + "\\WC_Product" + ], + "variable": "$product" + }, + { + "name": "param", + "content": "Add to cart request params including id, quantity, and variation attributes.", + "types": [ + "array" + ], + "variable": "$request" + } + ], + "long_description_html": "

Fire action to validate add to cart. Functions hooking into this should throw an \\Exception to prevent add to cart from happening.

" + }, + "args": 2 + }, + { + "name": "woocommerce_store_api_validate_cart_item", + "file": "StoreApi/Utilities/CartController.php", + "type": "action", + "doc": { + "description": "Fire action to validate add to cart. Functions hooking into this should throw an \\Exception to prevent add to cart from occurring.", + "long_description": "", + "tags": [ + { + "name": "param", + "content": "Product object being added to the cart.", + "types": [ + "\\WC_Product" + ], + "variable": "$product" + }, + { + "name": "param", + "content": "Cart item array.", + "types": [ + "array" + ], + "variable": "$cart_item" + } + ], + "long_description_html": "" + }, + "args": 2 + } + ] +} \ No newline at end of file diff --git a/bin/hook-docs/data/filters.json b/bin/hook-docs/data/filters.json index e2efdd482..5b7991c02 100644 --- a/bin/hook-docs/data/filters.json +++ b/bin/hook-docs/data/filters.json @@ -1,854 +1,1011 @@ { - "$schema": "https://raw.githubusercontent.com/johnbillion/wp-hooks-generator/0.7.3/schema.json", - "hooks": [ - { - "name": "__experimental_woocommerce_blocks_add_data_attributes_to_block", - "file": "BlockTypesController.php", - "type": "filter", - "doc": { - "description": "Filters the list of allowed Block Names", - "long_description": "This hook defines which block names should have block name and attribute data- attributes appended on render.", - "tags": [ - { - "name": "param", - "content": "List of namespaces.", - "types": [ "array" ], - "variable": "$allowed_namespaces" - } - ], - "long_description_html": "

This hook defines which block names should have block name and attribute data- attributes appended on render.

" - }, - "args": 1 - }, - { - "name": "__experimental_woocommerce_blocks_add_data_attributes_to_namespace", - "file": "BlockTypesController.php", - "type": "filter", - "doc": { - "description": "Filters the list of allowed block namespaces.", - "long_description": "This hook defines which block namespaces should have block name and attribute `data-` attributes appended on render.", - "tags": [ - { - "name": "param", - "content": "List of namespaces.", - "types": [ "array" ], - "variable": "$allowed_namespaces" - } - ], - "long_description_html": "

This hook defines which block namespaces should have block name and attribute data- attributes appended on render.

" - }, - "args": 1 - }, - { - "name": "__experimental_woocommerce_blocks_payment_gateway_features_list", - "file": "Payments/Integrations/PayPal.php", - "type": "filter", - "doc": { - "description": "Filter to control what features are available for each payment gateway.", - "long_description": "", - "tags": [ - { - "name": "example", - "content": "docs/examples/payment-gateways-features-list.md" - }, - { - "name": "param", - "content": "List of supported features.", - "types": [ "array" ], - "variable": "$features" - }, - { - "name": "param", - "content": "Gateway name.", - "types": [ "string" ], - "variable": "$name" - }, - { - "name": "return", - "content": "Updated list of supported features.", - "types": [ "array" ] - } - ], - "long_description_html": "" - }, - "args": 2 - }, - { - "name": "woocommerce_add_cart_item", - "file": "StoreApi/Utilities/CartController.php", - "type": "filter", - "doc": { - "description": "Filters the item being added to the cart.", - "long_description": "", - "tags": [ - { - "name": "internal", - "content": "Matches filter name in WooCommerce core." - }, - { - "name": "param", - "content": "Array of cart item data being added to the cart.", - "types": [ "array" ], - "variable": "$cart_item_data" - }, - { - "name": "param", - "content": "Id of the item in the cart.", - "types": [ "string" ], - "variable": "$cart_id" - }, - { - "name": "return", - "content": "Updated cart item data.", - "types": [ "array" ] - } - ], - "long_description_html": "" - }, - "args": 2 - }, - { - "name": "woocommerce_add_cart_item_data", - "file": "StoreApi/Utilities/CartController.php", - "type": "filter", - "doc": { - "description": "Filter cart item data for add to cart requests.", - "long_description": "", - "tags": [ - { - "name": "internal", - "content": "Matches filter name in WooCommerce core." - }, - { - "name": "param", - "content": "Array of other cart item data.", - "types": [ "array" ], - "variable": "$cart_item_data" - }, - { - "name": "param", - "content": "ID of the product added to the cart.", - "types": [ "integer" ], - "variable": "$product_id" - }, - { - "name": "param", - "content": "Variation ID of the product added to the cart.", - "types": [ "integer" ], - "variable": "$variation_id" - }, - { - "name": "param", - "content": "Quantity of the item added to the cart.", - "types": [ "integer" ], - "variable": "$quantity" - }, - { - "name": "return", - "content": "", - "types": [ "array" ] - } - ], - "long_description_html": "" - }, - "args": 4 - }, - { - "name": "woocommerce_add_to_cart_sold_individually_quantity", - "file": "StoreApi/Utilities/CartController.php", - "type": "filter", - "doc": { - "description": "Filter sold individually quantity for add to cart requests.", - "long_description": "", - "tags": [ - { - "name": "internal", - "content": "Matches filter name in WooCommerce core." - }, - { - "name": "param", - "content": "Defaults to 1.", - "types": [ "integer" ], - "variable": "$sold_individually_quantity" - }, - { - "name": "param", - "content": "Quantity of the item added to the cart.", - "types": [ "integer" ], - "variable": "$quantity" - }, - { - "name": "param", - "content": "ID of the product added to the cart.", - "types": [ "integer" ], - "variable": "$product_id" - }, - { - "name": "param", - "content": "Variation ID of the product added to the cart.", - "types": [ "integer" ], - "variable": "$variation_id" - }, - { - "name": "param", - "content": "Array of other cart item data.", - "types": [ "array" ], - "variable": "$cart_item_data" - }, - { - "name": "return", - "content": "", - "types": [ "integer" ] - } - ], - "long_description_html": "" - }, - "args": 5 - }, - { - "name": "woocommerce_add_to_cart_validation", - "file": "StoreApi/Utilities/CartController.php", - "type": "filter", - "doc": { - "description": "Filters if an item being added to the cart passed validation checks.", - "long_description": "Allow 3rd parties to validate if an item can be added to the cart. This is a legacy hook from Woo core. This filter will be deprecated because it encourages usage of wc_add_notice. For the API we need to capture notices and convert to exceptions instead.", - "tags": [ - { - "name": "deprecated", - "content": "" - }, - { - "name": "param", - "content": "True if the item passed validation.", - "types": [ "boolean" ], - "variable": "$passed_validation" - }, - { - "name": "param", - "content": "Product ID being validated.", - "types": [ "integer" ], - "variable": "$product_id" - }, - { - "name": "param", - "content": "Quantity added to the cart.", - "types": [ "integer" ], - "variable": "$quantity" - }, - { - "name": "param", - "content": "Variation ID being added to the cart.", - "types": [ "integer" ], - "variable": "$variation_id" - }, - { - "name": "param", - "content": "Variation data.", - "types": [ "array" ], - "variable": "$variation" - }, - { - "name": "return", - "content": "", - "types": [ "boolean" ] - } - ], - "long_description_html": "

Allow 3rd parties to validate if an item can be added to the cart. This is a legacy hook from Woo core. This filter will be deprecated because it encourages usage of wc_add_notice. For the API we need to capture notices and convert to exceptions instead.

" - }, - "args": 5 - }, - { - "name": "woocommerce_adjust_non_base_location_prices", - "file": "StoreApi/Utilities/ProductQuery.php", - "type": "filter", - "doc": { - "description": "Filters if taxes should be removed from locations outside the store base location.", - "long_description": "The woocommerce_adjust_non_base_location_prices filter can stop base taxes being taken off when dealing with out of base locations. e.g. If a product costs 10 including tax, all users will pay 10 regardless of location and taxes.", - "tags": [ - { - "name": "internal", - "content": "Matches filter name in WooCommerce core." - }, - { - "name": "param", - "content": "True by default.", - "types": [ "boolean" ], - "variable": "$adjust_non_base_location_prices" - }, - { - "name": "return", - "content": "", - "types": [ "boolean" ] - } - ], - "long_description_html": "

The woocommerce_adjust_non_base_location_prices filter can stop base taxes being taken off when dealing with out of base locations. e.g. If a product costs 10 including tax, all users will pay 10 regardless of location and taxes.

" - }, - "args": 1 - }, - { - "name": "woocommerce_admin_disabled", - "file": "InboxNotifications.php", - "type": "filter", - "doc": { - "description": "", - "long_description": "", - "tags": [], - "long_description_html": "" - }, - "args": 1 - }, - { - "name": "woocommerce_apply_individual_use_coupon", - "file": "StoreApi/Utilities/CartController.php", - "type": "filter", - "doc": { - "description": "Filter coupons to remove when applying an individual use coupon.", - "long_description": "", - "tags": [ - { - "name": "internal", - "content": "Matches filter name in WooCommerce core." - }, - { - "name": "param", - "content": "Array of coupons to remove from the cart.", - "types": [ "array" ], - "variable": "$coupons" - }, - { - "name": "param", - "content": "Coupon object applied to the cart.", - "types": [ "\\WC_Coupon" ], - "variable": "$coupon" - }, - { - "name": "param", - "content": "Array of applied coupons already applied to the cart.", - "types": [ "array" ], - "variable": "$applied_coupons" - }, - { - "name": "return", - "content": "", - "types": [ "array" ] - } - ], - "long_description_html": "" - }, - "args": 3 - }, - { - "name": "woocommerce_apply_with_individual_use_coupon", - "file": "StoreApi/Utilities/CartController.php", - "type": "filter", - "doc": { - "description": "Filters if a coupon can be applied alongside other individual use coupons.", - "long_description": "", - "tags": [ - { - "name": "internal", - "content": "Matches filter name in WooCommerce core." - }, - { - "name": "param", - "content": "Defaults to false.", - "types": [ "boolean" ], - "variable": "$apply_with_individual_use_coupon" - }, - { - "name": "param", - "content": "Coupon object applied to the cart.", - "types": [ "\\WC_Coupon" ], - "variable": "$coupon" - }, - { - "name": "param", - "content": "Individual use coupon already applied to the cart.", - "types": [ "\\WC_Coupon" ], - "variable": "$individual_use_coupon" - }, - { - "name": "param", - "content": "Array of applied coupons already applied to the cart.", - "types": [ "array" ], - "variable": "$applied_coupons" - }, - { - "name": "return", - "content": "", - "types": [ "boolean" ] - } - ], - "long_description_html": "" - }, - "args": 4 - }, - { - "name": "woocommerce_blocks_product_grid_is_cacheable", - "file": "BlockTypes/AbstractProductGrid.php", - "type": "filter", - "doc": { - "description": "Filters whether or not the product grid is cacheable.", - "long_description": "", - "tags": [ - { - "name": "param", - "content": "The list of script dependencies.", - "types": [ "boolean" ], - "variable": "$is_cacheable" - }, - { - "name": "param", - "content": "Query args for the products query passed to BlocksWpQuery.", - "types": [ "array" ], - "variable": "$query_args" - }, - { - "name": "return", - "content": "True to enable cache, false to disable cache.", - "types": [ "array" ] - } - ], - "long_description_html": "" - }, - "args": 2 - }, - { - "name": "woocommerce_blocks_product_grid_item_html", - "file": "BlockTypes/AbstractProductGrid.php", - "type": "filter", - "doc": { - "description": "Filters the HTML for products in the grid.", - "long_description": "", - "tags": [ - { - "name": "param", - "content": "Product grid item HTML.", - "types": [ "string" ], - "variable": "$html" - }, - { - "name": "param", - "content": "Product data passed to the template.", - "types": [ "array" ], - "variable": "$data" - }, - { - "name": "param", - "content": "Product object.", - "types": [ "\\WC_Product" ], - "variable": "$product" - }, - { - "name": "return", - "content": "Updated product grid item HTML.", - "types": [ "string" ] - } - ], - "long_description_html": "" - }, - "args": 3 - }, - { - "name": "woocommerce_blocks_register_script_dependencies", - "file": "Assets/Api.php", - "type": "filter", - "doc": { - "description": "Filters the list of script dependencies.", - "long_description": "", - "tags": [ - { - "name": "param", - "content": "The list of script dependencies.", - "types": [ "array" ], - "variable": "$dependencies" - }, - { - "name": "param", - "content": "The script's handle.", - "types": [ "string" ], - "variable": "$handle" - }, - { - "name": "return", - "content": "", - "types": [ "array" ] - } - ], - "long_description_html": "" - }, - "args": 2 - }, - { - "name": "woocommerce_cart_contents_changed", - "file": "StoreApi/Utilities/CartController.php", - "type": "filter", - "doc": { - "description": "Filters the entire cart contents when the cart changes.", - "long_description": "", - "tags": [ - { - "name": "internal", - "content": "Matches filter name in WooCommerce core." - }, - { - "name": "param", - "content": "Array of all cart items.", - "types": [ "array" ], - "variable": "$cart_contents" - }, - { - "name": "return", - "content": "Updated array of all cart items.", - "types": [ "array" ] - } - ], - "long_description_html": "" - }, - "args": 1 - }, - { - "name": "woocommerce_ga_disable_tracking", - "file": "Domain/Services/GoogleAnalytics.php", - "type": "filter", - "doc": { - "description": "Filter to disable Google Analytics tracking.", - "long_description": "", - "tags": [ - { - "name": "internal", - "content": "Matches filter name in GA extension." - }, - { - "name": "param", - "content": "If true, tracking will be disabled.", - "types": [ "boolean" ], - "variable": "$disable_tracking" - } - ], - "long_description_html": "" - }, - "args": 1 - }, - { - "name": "woocommerce_get_item_data", - "file": "StoreApi/Schemas/V1/CartItemSchema.php", - "type": "filter", - "doc": { - "description": "Filters cart item data.", - "long_description": "Filters the variation option name for custom option slugs.", - "tags": [ - { - "name": "internal", - "content": "Matches filter name in WooCommerce core." - }, - { - "name": "param", - "content": "Cart item data. Empty by default.", - "types": [ "array" ], - "variable": "$item_data" - }, - { - "name": "param", - "content": "Cart item array.", - "types": [ "array" ], - "variable": "$cart_item" - }, - { - "name": "return", - "content": "", - "types": [ "array" ] - } - ], - "long_description_html": "

Filters the variation option name for custom option slugs.

" - }, - "args": 2 - }, - { - "name": "woocommerce_new_customer_data", - "file": "StoreApi/Routes/V1/Checkout.php", - "type": "filter", - "doc": { - "description": "Filters customer data before a customer account is registered.", - "long_description": "This hook filters customer data. It allows user data to be changed, for example, username, password, email, first name, last name, and role.", - "tags": [ - { - "name": "param", - "content": "An array of customer (user) data.", - "types": [ "array" ], - "variable": "$customer_data" - }, - { - "name": "return", - "content": "", - "types": [ "array" ] - } - ], - "long_description_html": "

This hook filters customer data. It allows user data to be changed, for example, username, password, email, first name, last name, and role.

" - }, - "args": 1 - }, - { - "name": "woocommerce_registration_errors", - "file": "StoreApi/Routes/V1/Checkout.php", - "type": "filter", - "doc": { - "description": "Filters registration errors before a customer account is registered.", - "long_description": "This hook filters registration errors. This can be used to manipulate the array of errors before they are displayed.", - "tags": [ - { - "name": "internal", - "content": "Matches filter name in WooCommerce core." - }, - { - "name": "param", - "content": "Error object.", - "types": [ "\\WP_Error" ], - "variable": "$errors" - }, - { - "name": "param", - "content": "Customer username.", - "types": [ "string" ], - "variable": "$username" - }, - { - "name": "param", - "content": "Customer email address.", - "types": [ "string" ], - "variable": "$user_email" - }, - { - "name": "return", - "content": "", - "types": [ "\\WP_Error" ] - } - ], - "long_description_html": "

This hook filters registration errors. This can be used to manipulate the array of errors before they are displayed.

" - }, - "args": 3 - }, - { - "name": "woocommerce_shared_settings", - "file": "Assets/AssetDataRegistry.php", - "type": "filter", - "doc": { - "description": "Filters the array of shared settings.", - "long_description": "Low level hook for registration of new data late in the cycle. This is deprecated. Instead, use the data api:\n ```php Automattic\\WooCommerce\\Blocks\\Package::container()->get( Automattic\\WooCommerce\\Blocks\\Assets\\AssetDataRegistry::class )->add( $key, $value ) ```", - "tags": [ - { - "name": "deprecated", - "content": "" - }, - { - "name": "param", - "content": "Settings data.", - "types": [ "array" ], - "variable": "$data" - }, - { - "name": "return", - "content": "", - "types": [ "array" ] - } - ], - "long_description_html": "

Low level hook for registration of new data late in the cycle. This is deprecated. Instead, use the data api:

Automattic\\WooCommerce\\Blocks\\Package::container()->get( Automattic\\WooCommerce\\Blocks\\Assets\\AssetDataRegistry::class )->add( $key, $value )
" - }, - "args": 1 - }, - { - "name": "woocommerce_shipping_package_name", - "file": "StoreApi/Utilities/CartController.php", - "type": "filter", - "doc": { - "description": "Filters the shipping package name.", - "long_description": "", - "tags": [ - { - "name": "internal", - "content": "Matches filter name in WooCommerce core." - }, - { - "name": "param", - "content": "Shipping package name.", - "types": [ "string" ], - "variable": "$shipping_package_name" - }, - { - "name": "param", - "content": "Shipping package ID.", - "types": [ "string" ], - "variable": "$package_id" - }, - { - "name": "param", - "content": "Shipping package from WooCommerce.", - "types": [ "array" ], - "variable": "$package" - }, - { - "name": "return", - "content": "Shipping package name.", - "types": [ "string" ] - } - ], - "long_description_html": "" - }, - "args": 3 - }, - { - "name": "woocommerce_show_page_title", - "file": "BlockTypes/ClassicTemplate.php", - "type": "filter", - "doc": { - "description": "We need to load the scripts here because when using block templates wp_head() gets run after the block template. As a result we are trying to enqueue required scripts before we have even registered them.", - "long_description": "", - "tags": [ - { - "name": "see", - "content": "", - "refers": "https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/5328#issuecomment-989013447" - } - ], - "long_description_html": "" - }, - "args": 1 - }, - { - "name": "woocommerce_store_api_disable_nonce_check", - "file": "StoreApi/Routes/V1/AbstractCartRoute.php", - "type": "filter", - "doc": { - "description": "Filters the Store API nonce check.", - "long_description": "This can be used to disable the nonce check when testing API endpoints via a REST API client.", - "tags": [ - { - "name": "param", - "content": "If true, nonce checks will be disabled.", - "types": [ "boolean" ], - "variable": "$disable_nonce_check" - }, - { - "name": "return", - "content": "", - "types": [ "boolean" ] - } - ], - "long_description_html": "

This can be used to disable the nonce check when testing API endpoints via a REST API client.

" - }, - "args": 1 - }, - { - "name": "woocommerce_store_api_product_quantity_limit", - "file": "StoreApi/Utilities/QuantityLimits.php", - "type": "filter", - "doc": { - "description": "Filters the quantity limit for a product being added to the cart via the Store API.", - "long_description": "Filters the variation option name for custom option slugs.", - "tags": [ - { - "name": "param", - "content": "Quantity limit which defaults to 9999 unless sold individually.", - "types": [ "integer" ], - "variable": "$quantity_limit" - }, - { - "name": "param", - "content": "Product instance.", - "types": [ "\\WC_Product" ], - "variable": "$product" - }, - { - "name": "return", - "content": "", - "types": [ "integer" ] - } - ], - "long_description_html": "

Filters the variation option name for custom option slugs.

" - }, - "args": 2 - }, - { - "name": "woocommerce_store_api_product_quantity_{$value_type}", - "file": "StoreApi/Utilities/QuantityLimits.php", - "type": "filter", - "doc": { - "description": "Filters the quantity minimum for a cart item in Store API. This allows extensions to control the minimum qty of items already within the cart.", - "long_description": "The suffix of the hook will vary depending on the value being filtered. For example, minimum, maximum, multiple_of, editable.", - "tags": [ - { - "name": "param", - "content": "The value being filtered.", - "types": [ "mixed" ], - "variable": "$value" - }, - { - "name": "param", - "content": "The product object.", - "types": [ "\\WC_Product" ], - "variable": "$product" - }, - { - "name": "param", - "content": "The cart item if the product exists in the cart, or null.", - "types": [ "array", "null" ], - "variable": "$cart_item" - }, - { - "name": "return", - "content": "", - "types": [ "mixed" ] - } - ], - "long_description_html": "

The suffix of the hook will vary depending on the value being filtered. For example, minimum, maximum, multiple_of, editable.

" - }, - "args": 3 - }, - { - "name": "woocommerce_variation_option_name", - "file": "StoreApi/Schemas/V1/CartItemSchema.php", - "type": "filter", - "doc": { - "description": "Filters the variation option name.", - "long_description": "Filters the variation option name for custom option slugs.", - "tags": [ - { - "name": "internal", - "content": "Matches filter name in WooCommerce core." - }, - { - "name": "param", - "content": "The name to display.", - "types": [ "string" ], - "variable": "$value" - }, - { - "name": "param", - "content": "Unused because this is not a variation taxonomy.", - "types": [ "null" ], - "variable": "$unused" - }, - { - "name": "param", - "content": "Taxonomy or product attribute name.", - "types": [ "string" ], - "variable": "$taxonomy" - }, - { - "name": "param", - "content": "Product data.", - "types": [ "\\WC_Product" ], - "variable": "$product" - }, - { - "name": "return", - "content": "", - "types": [ "string" ] - } - ], - "long_description_html": "

Filters the variation option name for custom option slugs.

" - }, - "args": 4 - } - ] -} + "$schema": "https://raw.githubusercontent.com/johnbillion/wp-hooks-generator/0.7.0/schema.json", + "hooks": [ + { + "name": "__experimental_woocommerce_blocks_add_data_attributes_to_block", + "file": "BlockTypesController.php", + "type": "filter", + "doc": { + "description": "Filters the list of allowed Block Names", + "long_description": "This hook defines which block names should have block name and attribute data- attributes appended on render.", + "tags": [ + { + "name": "param", + "content": "List of namespaces.", + "types": [ + "array" + ], + "variable": "$allowed_namespaces" + } + ], + "long_description_html": "

This hook defines which block names should have block name and attribute data- attributes appended on render.

" + }, + "args": 1 + }, + { + "name": "__experimental_woocommerce_blocks_add_data_attributes_to_namespace", + "file": "BlockTypesController.php", + "type": "filter", + "doc": { + "description": "Filters the list of allowed block namespaces.", + "long_description": "This hook defines which block namespaces should have block name and attribute `data-` attributes appended on render.", + "tags": [ + { + "name": "param", + "content": "List of namespaces.", + "types": [ + "array" + ], + "variable": "$allowed_namespaces" + } + ], + "long_description_html": "

This hook defines which block namespaces should have block name and attribute data- attributes appended on render.

" + }, + "args": 1 + }, + { + "name": "__experimental_woocommerce_blocks_payment_gateway_features_list", + "file": "Payments/Integrations/PayPal.php", + "type": "filter", + "doc": { + "description": "Filter to control what features are available for each payment gateway.", + "long_description": "", + "tags": [ + { + "name": "example", + "content": "docs/examples/payment-gateways-features-list.md" + }, + { + "name": "param", + "content": "List of supported features.", + "types": [ + "array" + ], + "variable": "$features" + }, + { + "name": "param", + "content": "Gateway name.", + "types": [ + "string" + ], + "variable": "$name" + }, + { + "name": "return", + "content": "Updated list of supported features.", + "types": [ + "array" + ] + } + ], + "long_description_html": "" + }, + "args": 2 + }, + { + "name": "woocommerce_add_cart_item", + "file": "StoreApi/Utilities/CartController.php", + "type": "filter", + "doc": { + "description": "Filters the item being added to the cart.", + "long_description": "", + "tags": [ + { + "name": "internal", + "content": "Matches filter name in WooCommerce core." + }, + { + "name": "param", + "content": "Array of cart item data being added to the cart.", + "types": [ + "array" + ], + "variable": "$cart_item_data" + }, + { + "name": "param", + "content": "Id of the item in the cart.", + "types": [ + "string" + ], + "variable": "$cart_id" + }, + { + "name": "return", + "content": "Updated cart item data.", + "types": [ + "array" + ] + } + ], + "long_description_html": "" + }, + "args": 2 + }, + { + "name": "woocommerce_add_cart_item_data", + "file": "StoreApi/Utilities/CartController.php", + "type": "filter", + "doc": { + "description": "Filter cart item data for add to cart requests.", + "long_description": "", + "tags": [ + { + "name": "internal", + "content": "Matches filter name in WooCommerce core." + }, + { + "name": "param", + "content": "Array of other cart item data.", + "types": [ + "array" + ], + "variable": "$cart_item_data" + }, + { + "name": "param", + "content": "ID of the product added to the cart.", + "types": [ + "integer" + ], + "variable": "$product_id" + }, + { + "name": "param", + "content": "Variation ID of the product added to the cart.", + "types": [ + "integer" + ], + "variable": "$variation_id" + }, + { + "name": "param", + "content": "Quantity of the item added to the cart.", + "types": [ + "integer" + ], + "variable": "$quantity" + }, + { + "name": "return", + "content": "", + "types": [ + "array" + ] + } + ], + "long_description_html": "" + }, + "args": 4 + }, + { + "name": "woocommerce_add_to_cart_sold_individually_quantity", + "file": "StoreApi/Utilities/CartController.php", + "type": "filter", + "doc": { + "description": "Filter sold individually quantity for add to cart requests.", + "long_description": "", + "tags": [ + { + "name": "internal", + "content": "Matches filter name in WooCommerce core." + }, + { + "name": "param", + "content": "Defaults to 1.", + "types": [ + "integer" + ], + "variable": "$sold_individually_quantity" + }, + { + "name": "param", + "content": "Quantity of the item added to the cart.", + "types": [ + "integer" + ], + "variable": "$quantity" + }, + { + "name": "param", + "content": "ID of the product added to the cart.", + "types": [ + "integer" + ], + "variable": "$product_id" + }, + { + "name": "param", + "content": "Variation ID of the product added to the cart.", + "types": [ + "integer" + ], + "variable": "$variation_id" + }, + { + "name": "param", + "content": "Array of other cart item data.", + "types": [ + "array" + ], + "variable": "$cart_item_data" + }, + { + "name": "return", + "content": "", + "types": [ + "integer" + ] + } + ], + "long_description_html": "" + }, + "args": 5 + }, + { + "name": "woocommerce_add_to_cart_validation", + "file": "StoreApi/Utilities/CartController.php", + "type": "filter", + "doc": { + "description": "Filters if an item being added to the cart passed validation checks.", + "long_description": "Allow 3rd parties to validate if an item can be added to the cart. This is a legacy hook from Woo core. This filter will be deprecated because it encourages usage of wc_add_notice. For the API we need to capture notices and convert to exceptions instead.", + "tags": [ + { + "name": "deprecated", + "content": "" + }, + { + "name": "param", + "content": "True if the item passed validation.", + "types": [ + "boolean" + ], + "variable": "$passed_validation" + }, + { + "name": "param", + "content": "Product ID being validated.", + "types": [ + "integer" + ], + "variable": "$product_id" + }, + { + "name": "param", + "content": "Quantity added to the cart.", + "types": [ + "integer" + ], + "variable": "$quantity" + }, + { + "name": "param", + "content": "Variation ID being added to the cart.", + "types": [ + "integer" + ], + "variable": "$variation_id" + }, + { + "name": "param", + "content": "Variation data.", + "types": [ + "array" + ], + "variable": "$variation" + }, + { + "name": "return", + "content": "", + "types": [ + "boolean" + ] + } + ], + "long_description_html": "

Allow 3rd parties to validate if an item can be added to the cart. This is a legacy hook from Woo core. This filter will be deprecated because it encourages usage of wc_add_notice. For the API we need to capture notices and convert to exceptions instead.

" + }, + "args": 5 + }, + { + "name": "woocommerce_adjust_non_base_location_prices", + "file": "StoreApi/Utilities/ProductQuery.php", + "type": "filter", + "doc": { + "description": "Filters if taxes should be removed from locations outside the store base location.", + "long_description": "The woocommerce_adjust_non_base_location_prices filter can stop base taxes being taken off when dealing with out of base locations. e.g. If a product costs 10 including tax, all users will pay 10 regardless of location and taxes.", + "tags": [ + { + "name": "internal", + "content": "Matches filter name in WooCommerce core." + }, + { + "name": "param", + "content": "True by default.", + "types": [ + "boolean" + ], + "variable": "$adjust_non_base_location_prices" + }, + { + "name": "return", + "content": "", + "types": [ + "boolean" + ] + } + ], + "long_description_html": "

The woocommerce_adjust_non_base_location_prices filter can stop base taxes being taken off when dealing with out of base locations. e.g. If a product costs 10 including tax, all users will pay 10 regardless of location and taxes.

" + }, + "args": 1 + }, + { + "name": "woocommerce_admin_disabled", + "file": "InboxNotifications.php", + "type": "filter", + "doc": { + "description": "", + "long_description": "", + "tags": [], + "long_description_html": "" + }, + "args": 1 + }, + { + "name": "woocommerce_apply_individual_use_coupon", + "file": "StoreApi/Utilities/CartController.php", + "type": "filter", + "doc": { + "description": "Filter coupons to remove when applying an individual use coupon.", + "long_description": "", + "tags": [ + { + "name": "internal", + "content": "Matches filter name in WooCommerce core." + }, + { + "name": "param", + "content": "Array of coupons to remove from the cart.", + "types": [ + "array" + ], + "variable": "$coupons" + }, + { + "name": "param", + "content": "Coupon object applied to the cart.", + "types": [ + "\\WC_Coupon" + ], + "variable": "$coupon" + }, + { + "name": "param", + "content": "Array of applied coupons already applied to the cart.", + "types": [ + "array" + ], + "variable": "$applied_coupons" + }, + { + "name": "return", + "content": "", + "types": [ + "array" + ] + } + ], + "long_description_html": "" + }, + "args": 3 + }, + { + "name": "woocommerce_apply_with_individual_use_coupon", + "file": "StoreApi/Utilities/CartController.php", + "type": "filter", + "doc": { + "description": "Filters if a coupon can be applied alongside other individual use coupons.", + "long_description": "", + "tags": [ + { + "name": "internal", + "content": "Matches filter name in WooCommerce core." + }, + { + "name": "param", + "content": "Defaults to false.", + "types": [ + "boolean" + ], + "variable": "$apply_with_individual_use_coupon" + }, + { + "name": "param", + "content": "Coupon object applied to the cart.", + "types": [ + "\\WC_Coupon" + ], + "variable": "$coupon" + }, + { + "name": "param", + "content": "Individual use coupon already applied to the cart.", + "types": [ + "\\WC_Coupon" + ], + "variable": "$individual_use_coupon" + }, + { + "name": "param", + "content": "Array of applied coupons already applied to the cart.", + "types": [ + "array" + ], + "variable": "$applied_coupons" + }, + { + "name": "return", + "content": "", + "types": [ + "boolean" + ] + } + ], + "long_description_html": "" + }, + "args": 4 + }, + { + "name": "woocommerce_blocks_product_grid_is_cacheable", + "file": "BlockTypes/AbstractProductGrid.php", + "type": "filter", + "doc": { + "description": "Filters whether or not the product grid is cacheable.", + "long_description": "", + "tags": [ + { + "name": "param", + "content": "The list of script dependencies.", + "types": [ + "boolean" + ], + "variable": "$is_cacheable" + }, + { + "name": "param", + "content": "Query args for the products query passed to BlocksWpQuery.", + "types": [ + "array" + ], + "variable": "$query_args" + }, + { + "name": "return", + "content": "True to enable cache, false to disable cache.", + "types": [ + "array" + ] + } + ], + "long_description_html": "" + }, + "args": 2 + }, + { + "name": "woocommerce_blocks_product_grid_item_html", + "file": "BlockTypes/AbstractProductGrid.php", + "type": "filter", + "doc": { + "description": "Filters the HTML for products in the grid.", + "long_description": "", + "tags": [ + { + "name": "param", + "content": "Product grid item HTML.", + "types": [ + "string" + ], + "variable": "$html" + }, + { + "name": "param", + "content": "Product data passed to the template.", + "types": [ + "array" + ], + "variable": "$data" + }, + { + "name": "param", + "content": "Product object.", + "types": [ + "\\WC_Product" + ], + "variable": "$product" + }, + { + "name": "return", + "content": "Updated product grid item HTML.", + "types": [ + "string" + ] + } + ], + "long_description_html": "" + }, + "args": 3 + }, + { + "name": "woocommerce_blocks_register_script_dependencies", + "file": "Assets/Api.php", + "type": "filter", + "doc": { + "description": "Filters the list of script dependencies.", + "long_description": "", + "tags": [ + { + "name": "param", + "content": "The list of script dependencies.", + "types": [ + "array" + ], + "variable": "$dependencies" + }, + { + "name": "param", + "content": "The script's handle.", + "types": [ + "string" + ], + "variable": "$handle" + }, + { + "name": "return", + "content": "", + "types": [ + "array" + ] + } + ], + "long_description_html": "" + }, + "args": 2 + }, + { + "name": "woocommerce_cart_contents_changed", + "file": "StoreApi/Utilities/CartController.php", + "type": "filter", + "doc": { + "description": "Filters the entire cart contents when the cart changes.", + "long_description": "", + "tags": [ + { + "name": "internal", + "content": "Matches filter name in WooCommerce core." + }, + { + "name": "param", + "content": "Array of all cart items.", + "types": [ + "array" + ], + "variable": "$cart_contents" + }, + { + "name": "return", + "content": "Updated array of all cart items.", + "types": [ + "array" + ] + } + ], + "long_description_html": "" + }, + "args": 1 + }, + { + "name": "woocommerce_ga_disable_tracking", + "file": "Domain/Services/GoogleAnalytics.php", + "type": "filter", + "doc": { + "description": "Filter to disable Google Analytics tracking.", + "long_description": "", + "tags": [ + { + "name": "internal", + "content": "Matches filter name in GA extension." + }, + { + "name": "param", + "content": "If true, tracking will be disabled.", + "types": [ + "boolean" + ], + "variable": "$disable_tracking" + } + ], + "long_description_html": "" + }, + "args": 1 + }, + { + "name": "woocommerce_get_item_data", + "file": "StoreApi/Schemas/V1/CartItemSchema.php", + "type": "filter", + "doc": { + "description": "Filters cart item data.", + "long_description": "Filters the variation option name for custom option slugs.", + "tags": [ + { + "name": "internal", + "content": "Matches filter name in WooCommerce core." + }, + { + "name": "param", + "content": "Cart item data. Empty by default.", + "types": [ + "array" + ], + "variable": "$item_data" + }, + { + "name": "param", + "content": "Cart item array.", + "types": [ + "array" + ], + "variable": "$cart_item" + }, + { + "name": "return", + "content": "", + "types": [ + "array" + ] + } + ], + "long_description_html": "

Filters the variation option name for custom option slugs.

" + }, + "args": 2 + }, + { + "name": "woocommerce_new_customer_data", + "file": "StoreApi/Routes/V1/Checkout.php", + "type": "filter", + "doc": { + "description": "Filters customer data before a customer account is registered.", + "long_description": "This hook filters customer data. It allows user data to be changed, for example, username, password, email, first name, last name, and role.", + "tags": [ + { + "name": "param", + "content": "An array of customer (user) data.", + "types": [ + "array" + ], + "variable": "$customer_data" + }, + { + "name": "return", + "content": "", + "types": [ + "array" + ] + } + ], + "long_description_html": "

This hook filters customer data. It allows user data to be changed, for example, username, password, email, first name, last name, and role.

" + }, + "args": 1 + }, + { + "name": "woocommerce_registration_errors", + "file": "StoreApi/Routes/V1/Checkout.php", + "type": "filter", + "doc": { + "description": "Filters registration errors before a customer account is registered.", + "long_description": "This hook filters registration errors. This can be used to manipulate the array of errors before they are displayed.", + "tags": [ + { + "name": "internal", + "content": "Matches filter name in WooCommerce core." + }, + { + "name": "param", + "content": "Error object.", + "types": [ + "\\WP_Error" + ], + "variable": "$errors" + }, + { + "name": "param", + "content": "Customer username.", + "types": [ + "string" + ], + "variable": "$username" + }, + { + "name": "param", + "content": "Customer email address.", + "types": [ + "string" + ], + "variable": "$user_email" + }, + { + "name": "return", + "content": "", + "types": [ + "\\WP_Error" + ] + } + ], + "long_description_html": "

This hook filters registration errors. This can be used to manipulate the array of errors before they are displayed.

" + }, + "args": 3 + }, + { + "name": "woocommerce_shared_settings", + "file": "Assets/AssetDataRegistry.php", + "type": "filter", + "doc": { + "description": "Filters the array of shared settings.", + "long_description": "Low level hook for registration of new data late in the cycle. This is deprecated. Instead, use the data api:\n ```php Automattic\\WooCommerce\\Blocks\\Package::container()->get( Automattic\\WooCommerce\\Blocks\\Assets\\AssetDataRegistry::class )->add( $key, $value ) ```", + "tags": [ + { + "name": "deprecated", + "content": "" + }, + { + "name": "param", + "content": "Settings data.", + "types": [ + "array" + ], + "variable": "$data" + }, + { + "name": "return", + "content": "", + "types": [ + "array" + ] + } + ], + "long_description_html": "

Low level hook for registration of new data late in the cycle. This is deprecated. Instead, use the data api:

Automattic\\WooCommerce\\Blocks\\Package::container()->get( Automattic\\WooCommerce\\Blocks\\Assets\\AssetDataRegistry::class )->add( $key, $value )
" + }, + "args": 1 + }, + { + "name": "woocommerce_shipping_package_name", + "file": "StoreApi/Utilities/CartController.php", + "type": "filter", + "doc": { + "description": "Filters the shipping package name.", + "long_description": "", + "tags": [ + { + "name": "internal", + "content": "Matches filter name in WooCommerce core." + }, + { + "name": "param", + "content": "Shipping package name.", + "types": [ + "string" + ], + "variable": "$shipping_package_name" + }, + { + "name": "param", + "content": "Shipping package ID.", + "types": [ + "string" + ], + "variable": "$package_id" + }, + { + "name": "param", + "content": "Shipping package from WooCommerce.", + "types": [ + "array" + ], + "variable": "$package" + }, + { + "name": "return", + "content": "Shipping package name.", + "types": [ + "string" + ] + } + ], + "long_description_html": "" + }, + "args": 3 + }, + { + "name": "woocommerce_show_page_title", + "file": "BlockTypes/ClassicTemplate.php", + "type": "filter", + "doc": { + "description": "We need to load the scripts here because when using block templates wp_head() gets run after the block template. As a result we are trying to enqueue required scripts before we have even registered them.", + "long_description": "", + "tags": [ + { + "name": "see", + "content": "", + "refers": "https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/5328#issuecomment-989013447" + } + ], + "long_description_html": "" + }, + "args": 1 + }, + { + "name": "woocommerce_store_api_disable_nonce_check", + "file": "StoreApi/Routes/V1/AbstractCartRoute.php", + "type": "filter", + "doc": { + "description": "Filters the Store API nonce check.", + "long_description": "This can be used to disable the nonce check when testing API endpoints via a REST API client.", + "tags": [ + { + "name": "param", + "content": "If true, nonce checks will be disabled.", + "types": [ + "boolean" + ], + "variable": "$disable_nonce_check" + }, + { + "name": "return", + "content": "", + "types": [ + "boolean" + ] + } + ], + "long_description_html": "

This can be used to disable the nonce check when testing API endpoints via a REST API client.

" + }, + "args": 1 + }, + { + "name": "woocommerce_store_api_product_quantity_limit", + "file": "StoreApi/Utilities/QuantityLimits.php", + "type": "filter", + "doc": { + "description": "Filters the quantity limit for a product being added to the cart via the Store API.", + "long_description": "Filters the variation option name for custom option slugs.", + "tags": [ + { + "name": "param", + "content": "Quantity limit which defaults to 9999 unless sold individually.", + "types": [ + "integer" + ], + "variable": "$quantity_limit" + }, + { + "name": "param", + "content": "Product instance.", + "types": [ + "\\WC_Product" + ], + "variable": "$product" + }, + { + "name": "return", + "content": "", + "types": [ + "integer" + ] + } + ], + "long_description_html": "

Filters the variation option name for custom option slugs.

" + }, + "args": 2 + }, + { + "name": "woocommerce_store_api_product_quantity_{$value_type}", + "file": "StoreApi/Utilities/QuantityLimits.php", + "type": "filter", + "doc": { + "description": "Filters the quantity minimum for a cart item in Store API. This allows extensions to control the minimum qty of items already within the cart.", + "long_description": "The suffix of the hook will vary depending on the value being filtered. For example, minimum, maximum, multiple_of, editable.", + "tags": [ + { + "name": "param", + "content": "The value being filtered.", + "types": [ + "mixed" + ], + "variable": "$value" + }, + { + "name": "param", + "content": "The product object.", + "types": [ + "\\WC_Product" + ], + "variable": "$product" + }, + { + "name": "param", + "content": "The cart item if the product exists in the cart, or null.", + "types": [ + "array", + "null" + ], + "variable": "$cart_item" + }, + { + "name": "return", + "content": "", + "types": [ + "mixed" + ] + } + ], + "long_description_html": "

The suffix of the hook will vary depending on the value being filtered. For example, minimum, maximum, multiple_of, editable.

" + }, + "args": 3 + }, + { + "name": "woocommerce_variation_option_name", + "file": "StoreApi/Schemas/V1/CartItemSchema.php", + "type": "filter", + "doc": { + "description": "Filters the variation option name.", + "long_description": "Filters the variation option name for custom option slugs.", + "tags": [ + { + "name": "internal", + "content": "Matches filter name in WooCommerce core." + }, + { + "name": "param", + "content": "The name to display.", + "types": [ + "string" + ], + "variable": "$value" + }, + { + "name": "param", + "content": "Unused because this is not a variation taxonomy.", + "types": [ + "null" + ], + "variable": "$unused" + }, + { + "name": "param", + "content": "Taxonomy or product attribute name.", + "types": [ + "string" + ], + "variable": "$taxonomy" + }, + { + "name": "param", + "content": "Product data.", + "types": [ + "\\WC_Product" + ], + "variable": "$product" + }, + { + "name": "return", + "content": "", + "types": [ + "string" + ] + } + ], + "long_description_html": "

Filters the variation option name for custom option slugs.

" + }, + "args": 4 + } + ] +} \ No newline at end of file diff --git a/docs/README.md b/docs/README.md index e14ac81e3..c9d8cdfc9 100644 --- a/docs/README.md +++ b/docs/README.md @@ -149,3 +149,4 @@ The following tutorials from [developer.woocommerce.com](https://developer.wooco ๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/readme.md) + diff --git a/docs/contributors/README.md b/docs/contributors/README.md index d256dc943..2991aa4bb 100644 --- a/docs/contributors/README.md +++ b/docs/contributors/README.md @@ -18,7 +18,7 @@ This folder contains documentation for developers and contributors looking to ge [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/contributors/README.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/contributors/README.md) diff --git a/docs/contributors/components.md b/docs/contributors/components.md index fa9abd58b..a24e19770 100644 --- a/docs/contributors/components.md +++ b/docs/contributors/components.md @@ -48,6 +48,7 @@ If you're stuck, copy source of an existing story to get started. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/contributors/components.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/contributors/components.md) + diff --git a/docs/contributors/contributing/README.md b/docs/contributors/contributing/README.md index 55d0b6245..62fb54c25 100644 --- a/docs/contributors/contributing/README.md +++ b/docs/contributors/contributing/README.md @@ -18,6 +18,7 @@ This folder contains documentation for developers and contributors looking to ge [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/contributors/README.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/contributors/contributing/README.md) + diff --git a/docs/contributors/contributing/block-assets.md b/docs/contributors/contributing/block-assets.md index cfddd4593..824748f01 100644 --- a/docs/contributors/contributing/block-assets.md +++ b/docs/contributors/contributing/block-assets.md @@ -95,6 +95,7 @@ wc.wcSettings.getSetting( 'key' ); [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/contributors/block-assets.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/contributors/contributing/block-assets.md) + diff --git a/docs/contributors/contributing/coding-guidelines.md b/docs/contributors/contributing/coding-guidelines.md index 2543712cb..f55f5c624 100644 --- a/docs/contributors/contributing/coding-guidelines.md +++ b/docs/contributors/contributing/coding-guidelines.md @@ -179,6 +179,7 @@ Notice in the worst case scenario we would have increased selector specificity b [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/contributors/coding-guidelines.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/contributors/contributing/coding-guidelines.md) + diff --git a/docs/contributors/contributing/css-build-system.md b/docs/contributors/contributing/css-build-system.md index 6db18524f..67fbf1a8f 100644 --- a/docs/contributors/contributing/css-build-system.md +++ b/docs/contributors/contributing/css-build-system.md @@ -42,6 +42,7 @@ Webpack config is split between several files, some relevant ones for the CSS bu [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/contributors/css-build-system.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/contributors/contributing/css-build-system.md) + diff --git a/docs/contributors/contributing/documentation-guidelines.md b/docs/contributors/contributing/documentation-guidelines.md index aef44785b..1daca2aa9 100644 --- a/docs/contributors/contributing/documentation-guidelines.md +++ b/docs/contributors/contributing/documentation-guidelines.md @@ -165,6 +165,7 @@ When referencing other documentations, the corresponding document should be link [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/contributors/documentation-guidelines.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/contributors/contributing/documentation-guidelines.md) + diff --git a/docs/contributors/contributing/folder-structure.md b/docs/contributors/contributing/folder-structure.md index deef9ce84..e3adfe01a 100644 --- a/docs/contributors/contributing/folder-structure.md +++ b/docs/contributors/contributing/folder-structure.md @@ -195,6 +195,7 @@ This file is inspired by the great work of @JustinyAhin and @gziolo in + diff --git a/docs/contributors/contributing/getting-started.md b/docs/contributors/contributing/getting-started.md index 46fe3c479..be57c1c43 100644 --- a/docs/contributors/contributing/getting-started.md +++ b/docs/contributors/contributing/getting-started.md @@ -156,6 +156,7 @@ To find out more about how to run automated JavaScript tests, check out the docu [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/contributors/getting-started.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/contributors/contributing/getting-started.md) + diff --git a/docs/contributors/contributing/javascript-build-system.md b/docs/contributors/contributing/javascript-build-system.md index 45e6bb6a2..caa7ace63 100644 --- a/docs/contributors/contributing/javascript-build-system.md +++ b/docs/contributors/contributing/javascript-build-system.md @@ -72,6 +72,7 @@ Webpack config is split between several files: [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/contributors/javascript-build-system.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/contributors/contributing/javascript-build-system.md) + diff --git a/docs/contributors/contributing/javascript-testing.md b/docs/contributors/contributing/javascript-testing.md index dd3930b4e..1db9410a3 100644 --- a/docs/contributors/contributing/javascript-testing.md +++ b/docs/contributors/contributing/javascript-testing.md @@ -140,6 +140,7 @@ In `./tests/e2e/specs`, verify for conditions like `if ( process.env.WP_VERSION [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/contributors/javascript-testing.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/contributors/contributing/javascript-testing.md) + diff --git a/docs/contributors/contributing/storybook-and-components.md b/docs/contributors/contributing/storybook-and-components.md index 19ebb692e..ba2721027 100644 --- a/docs/contributors/contributing/storybook-and-components.md +++ b/docs/contributors/contributing/storybook-and-components.md @@ -50,6 +50,7 @@ If you're stuck, copy source of an existing story to get started. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/contributors/storybook-and-components.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/contributors/contributing/storybook-and-components.md) + diff --git a/docs/designers/theming/README.md b/docs/designers/theming/README.md index a01eac6eb..a24fec9e9 100644 --- a/docs/designers/theming/README.md +++ b/docs/designers/theming/README.md @@ -86,6 +86,7 @@ WooCommerce Blocks avoids using legacy unprefixed classes as much as possible. H [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/theming/product-grid-270.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/designers/theming/README.md) + diff --git a/docs/designers/theming/all-products-and-filters.md b/docs/designers/theming/all-products-and-filters.md index feba156e7..c13f5efe6 100644 --- a/docs/designers/theming/all-products-and-filters.md +++ b/docs/designers/theming/all-products-and-filters.md @@ -34,6 +34,7 @@ Notice the code snippet above uses a CSS custom property, so the default color m [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/theming/product-grid-270.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/designers/theming/all-products-and-filters.md) + diff --git a/docs/designers/theming/cart-and-checkout.md b/docs/designers/theming/cart-and-checkout.md index 01c934f7c..a05fb0939 100644 --- a/docs/designers/theming/cart-and-checkout.md +++ b/docs/designers/theming/cart-and-checkout.md @@ -84,6 +84,7 @@ By default, it uses a combination of black and white borders and shadows so it h [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/theming/product-grid-270.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/designers/theming/cart-and-checkout.md) + diff --git a/docs/designers/theming/class-names-update-280.md b/docs/designers/theming/class-names-update-280.md index af18655f8..0d8a8eb9e 100644 --- a/docs/designers/theming/class-names-update-280.md +++ b/docs/designers/theming/class-names-update-280.md @@ -94,6 +94,7 @@ For example, given that `wc-block-error` changed to `wc-block-components-error` [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/theming/product-grid-270.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/designers/theming/class-names-update-280.md) + diff --git a/docs/designers/theming/class-names-update-330.md b/docs/designers/theming/class-names-update-330.md index d90cfd8ce..53d452411 100644 --- a/docs/designers/theming/class-names-update-330.md +++ b/docs/designers/theming/class-names-update-330.md @@ -23,6 +23,7 @@ In [WooCommerce Blocks 3.3.0](https://developer.woocommerce.com/2020/09/02/wooco [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/theming/product-grid-270.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/designers/theming/class-names-update-330.md) + diff --git a/docs/designers/theming/class-names-update-340.md b/docs/designers/theming/class-names-update-340.md index a0e3dfd21..e4b56b87d 100644 --- a/docs/designers/theming/class-names-update-340.md +++ b/docs/designers/theming/class-names-update-340.md @@ -14,6 +14,7 @@ In [WooCommerce Blocks 3.4.0](https://developer.woocommerce.com/2020/09/15/wooco [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/theming/product-grid-270.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/designers/theming/class-names-update-340.md) + diff --git a/docs/designers/theming/class-names-update-460.md b/docs/designers/theming/class-names-update-460.md index abc0634cd..5862a1a47 100644 --- a/docs/designers/theming/class-names-update-460.md +++ b/docs/designers/theming/class-names-update-460.md @@ -17,6 +17,7 @@ In [WooCommerce Blocks 4.6.0](https://developer.woocommerce.com/2021/03/02/wooco [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/theming/product-grid-270.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/designers/theming/class-names-update-460.md) + diff --git a/docs/designers/theming/product-grid-270.md b/docs/designers/theming/product-grid-270.md index e637943e1..7c838685a 100644 --- a/docs/designers/theming/product-grid-270.md +++ b/docs/designers/theming/product-grid-270.md @@ -49,6 +49,7 @@ _All Products_ block was updated so prices follow the same layout as the other p [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/theming/product-grid-270.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/designers/theming/product-grid-270.md) + diff --git a/docs/internal-developers/block-client-apis/README.md b/docs/internal-developers/block-client-apis/README.md index 2805d2016..e7f2d9a1a 100644 --- a/docs/internal-developers/block-client-apis/README.md +++ b/docs/internal-developers/block-client-apis/README.md @@ -16,6 +16,7 @@ For more details about extensibility points in the blocks, you can reference the [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/block-client-apis/README.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/block-client-apis/README.md) + diff --git a/docs/internal-developers/block-client-apis/checkout/checkout-api.md b/docs/internal-developers/block-client-apis/checkout/checkout-api.md index 8eab6de7e..3a91eab66 100644 --- a/docs/internal-developers/block-client-apis/checkout/checkout-api.md +++ b/docs/internal-developers/block-client-apis/checkout/checkout-api.md @@ -120,6 +120,7 @@ The contract is established through props fed to the payment method components v [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/block-client-apis/checkout/checkout-api.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/block-client-apis/checkout/checkout-api.md) + diff --git a/docs/internal-developers/block-client-apis/checkout/checkout-flow-and-events.md b/docs/internal-developers/block-client-apis/checkout/checkout-flow-and-events.md index f21cea835..90c1cd653 100644 --- a/docs/internal-developers/block-client-apis/checkout/checkout-flow-and-events.md +++ b/docs/internal-developers/block-client-apis/checkout/checkout-flow-and-events.md @@ -482,6 +482,7 @@ This event emitter doesn't care about any registered observer response and will [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/extensibility/checkout-flow-and-events.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/block-client-apis/checkout/checkout-flow-and-events.md) + diff --git a/docs/internal-developers/block-client-apis/notices.md b/docs/internal-developers/block-client-apis/notices.md index cab47ce6d..5467ddd4a 100644 --- a/docs/internal-developers/block-client-apis/notices.md +++ b/docs/internal-developers/block-client-apis/notices.md @@ -284,6 +284,7 @@ const CheckoutProcessor = () => { [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/block-client-apis/notices.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/block-client-apis/notices.md) + diff --git a/docs/internal-developers/blocks/README.md b/docs/internal-developers/blocks/README.md index 95f05c924..2600299a6 100644 --- a/docs/internal-developers/blocks/README.md +++ b/docs/internal-developers/blocks/README.md @@ -13,6 +13,7 @@ This folder contains documentation for specific Blocks and Blocks functionality. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/blocks/README.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/blocks/README.md) + diff --git a/docs/internal-developers/blocks/feature-flags-and-experimental-interfaces.md b/docs/internal-developers/blocks/feature-flags-and-experimental-interfaces.md index 4dc6d5453..7612c4bf8 100644 --- a/docs/internal-developers/blocks/feature-flags-and-experimental-interfaces.md +++ b/docs/internal-developers/blocks/feature-flags-and-experimental-interfaces.md @@ -154,6 +154,7 @@ Current list of events: [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/blocks/feature-flags-and-experimental-interfaces.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/blocks/feature-flags-and-experimental-interfaces.md) + diff --git a/docs/internal-developers/blocks/stock-reservation.md b/docs/internal-developers/blocks/stock-reservation.md index 62859f743..c049e97d8 100644 --- a/docs/internal-developers/blocks/stock-reservation.md +++ b/docs/internal-developers/blocks/stock-reservation.md @@ -107,6 +107,7 @@ You can see that in both Checkouts, if stock cannot be reserved for all items in [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/blocks/stock-reservation.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/blocks/stock-reservation.md) + diff --git a/docs/internal-developers/templates/README.md b/docs/internal-developers/templates/README.md index a7aa56a91..5ef2bdb8e 100644 --- a/docs/internal-developers/templates/README.md +++ b/docs/internal-developers/templates/README.md @@ -61,6 +61,7 @@ The BlockTemplateController.php is primarily responsible for hooking into both W [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/templates/README.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/templates/README.md) + diff --git a/docs/internal-developers/templates/block-template-controller.md b/docs/internal-developers/templates/block-template-controller.md index 9694f859c..ab191723f 100644 --- a/docs/internal-developers/templates/block-template-controller.md +++ b/docs/internal-developers/templates/block-template-controller.md @@ -91,6 +91,7 @@ Void. This method does not return a value but rather sets up hooks to render blo [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/templates/block-template-controller.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/templates/block-template-controller.md) + diff --git a/docs/internal-developers/templates/classic-template.md b/docs/internal-developers/templates/classic-template.md index 42c5bdc9a..dc4829f12 100644 --- a/docs/internal-developers/templates/classic-template.md +++ b/docs/internal-developers/templates/classic-template.md @@ -16,6 +16,7 @@ From the `render()` method we inspect the `$attributes` object for a `template` [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/templates/classic-template.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/templates/classic-template.md) + diff --git a/docs/internal-developers/testing/README.md b/docs/internal-developers/testing/README.md index c807703d2..8e981d5f4 100644 --- a/docs/internal-developers/testing/README.md +++ b/docs/internal-developers/testing/README.md @@ -15,6 +15,7 @@ This folder contains documentation around manual testing of WooCommerce Blocks. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/README.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/README.md) + diff --git a/docs/internal-developers/testing/cart-checkout/README.md b/docs/internal-developers/testing/cart-checkout/README.md index d96bac3ed..b262a1779 100644 --- a/docs/internal-developers/testing/cart-checkout/README.md +++ b/docs/internal-developers/testing/cart-checkout/README.md @@ -89,6 +89,7 @@ the Cart and Checkout shortcodes. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/cart-checkout/README.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/cart-checkout/README.md) + diff --git a/docs/internal-developers/testing/cart-checkout/compatibility.md b/docs/internal-developers/testing/cart-checkout/compatibility.md index 2c08ef1e4..cc4c9559d 100644 --- a/docs/internal-developers/testing/cart-checkout/compatibility.md +++ b/docs/internal-developers/testing/cart-checkout/compatibility.md @@ -24,6 +24,7 @@ Test the WooCommerce Blocks plugin against the versions as listed above. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/cart-checkout/cross-browser.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/cart-checkout/compatibility.md) + diff --git a/docs/internal-developers/testing/cart-checkout/coupons.md b/docs/internal-developers/testing/cart-checkout/coupons.md index 87b7d8ef8..8958a5384 100644 --- a/docs/internal-developers/testing/cart-checkout/coupons.md +++ b/docs/internal-developers/testing/cart-checkout/coupons.md @@ -47,6 +47,7 @@ You will need to setup some types of coupon in order to test this. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/cart-checkout/coupons.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/cart-checkout/coupons.md) + diff --git a/docs/internal-developers/testing/cart-checkout/cross-browser.md b/docs/internal-developers/testing/cart-checkout/cross-browser.md index 181947540..bcca5f9b8 100644 --- a/docs/internal-developers/testing/cart-checkout/cross-browser.md +++ b/docs/internal-developers/testing/cart-checkout/cross-browser.md @@ -15,7 +15,7 @@ The baseline for testing is: [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/cart-checkout/cross-browser.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/cart-checkout/cross-browser.md) diff --git a/docs/internal-developers/testing/cart-checkout/editor.md b/docs/internal-developers/testing/cart-checkout/editor.md index 7b18021e8..bbef7c0d7 100644 --- a/docs/internal-developers/testing/cart-checkout/editor.md +++ b/docs/internal-developers/testing/cart-checkout/editor.md @@ -17,6 +17,7 @@ [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/cart-checkout/editor.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/cart-checkout/editor.md) + diff --git a/docs/internal-developers/testing/cart-checkout/general-flow.md b/docs/internal-developers/testing/cart-checkout/general-flow.md index 2ced882d6..415c636b0 100644 --- a/docs/internal-developers/testing/cart-checkout/general-flow.md +++ b/docs/internal-developers/testing/cart-checkout/general-flow.md @@ -29,6 +29,7 @@ This is a general flow of the main functionality of the blocks without going too [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/cart-checkout/general-flow.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/cart-checkout/general-flow.md) + diff --git a/docs/internal-developers/testing/cart-checkout/items.md b/docs/internal-developers/testing/cart-checkout/items.md index a77d8f54f..144b69abc 100644 --- a/docs/internal-developers/testing/cart-checkout/items.md +++ b/docs/internal-developers/testing/cart-checkout/items.md @@ -34,6 +34,7 @@ [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/cart-checkout/items.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/cart-checkout/items.md) + diff --git a/docs/internal-developers/testing/cart-checkout/payment.md b/docs/internal-developers/testing/cart-checkout/payment.md index 498824f6e..1c376125d 100644 --- a/docs/internal-developers/testing/cart-checkout/payment.md +++ b/docs/internal-developers/testing/cart-checkout/payment.md @@ -53,6 +53,7 @@ If you have a payment method available: [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/cart-checkout/payment.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/cart-checkout/payment.md) + diff --git a/docs/internal-developers/testing/cart-checkout/shipping.md b/docs/internal-developers/testing/cart-checkout/shipping.md index 36c58b0f4..18be93aa8 100644 --- a/docs/internal-developers/testing/cart-checkout/shipping.md +++ b/docs/internal-developers/testing/cart-checkout/shipping.md @@ -49,6 +49,7 @@ [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/cart-checkout/shipping.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/cart-checkout/shipping.md) + diff --git a/docs/internal-developers/testing/cart-checkout/taxes.md b/docs/internal-developers/testing/cart-checkout/taxes.md index cfae614e6..e10c1e819 100644 --- a/docs/internal-developers/testing/cart-checkout/taxes.md +++ b/docs/internal-developers/testing/cart-checkout/taxes.md @@ -30,6 +30,7 @@ [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/cart-checkout/taxes.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/cart-checkout/taxes.md) + diff --git a/docs/internal-developers/testing/releases/260.md b/docs/internal-developers/testing/releases/260.md index 66fa8d4ea..b3bc55c65 100644 --- a/docs/internal-developers/testing/releases/260.md +++ b/docs/internal-developers/testing/releases/260.md @@ -128,6 +128,7 @@ Support was added for showing category images in the Product Categories block. T [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/260.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/260.md) + diff --git a/docs/internal-developers/testing/releases/261.md b/docs/internal-developers/testing/releases/261.md index 73eb45247..c895fbb85 100644 --- a/docs/internal-developers/testing/releases/261.md +++ b/docs/internal-developers/testing/releases/261.md @@ -24,6 +24,7 @@ _Note: assuming you are using a development site where you are okay with losing [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/261.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/261.md) + diff --git a/docs/internal-developers/testing/releases/270.md b/docs/internal-developers/testing/releases/270.md index 165e4443c..227778a23 100644 --- a/docs/internal-developers/testing/releases/270.md +++ b/docs/internal-developers/testing/releases/270.md @@ -106,6 +106,7 @@ You'll need to be logged in with a user that has saved payment methods. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/270.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/270.md) + diff --git a/docs/internal-developers/testing/releases/271.md b/docs/internal-developers/testing/releases/271.md index cccb8c658..2b5b27f9d 100644 --- a/docs/internal-developers/testing/releases/271.md +++ b/docs/internal-developers/testing/releases/271.md @@ -25,6 +25,7 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/271.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/271.md) + diff --git a/docs/internal-developers/testing/releases/272.md b/docs/internal-developers/testing/releases/272.md index b5140a47a..71c1d9e2e 100644 --- a/docs/internal-developers/testing/releases/272.md +++ b/docs/internal-developers/testing/releases/272.md @@ -43,6 +43,7 @@ There are PHPUnit tests covering behaviour as well (including catching errors). [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/272.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/272.md) + diff --git a/docs/internal-developers/testing/releases/280.md b/docs/internal-developers/testing/releases/280.md index 18ad58773..7efa54e80 100644 --- a/docs/internal-developers/testing/releases/280.md +++ b/docs/internal-developers/testing/releases/280.md @@ -88,6 +88,7 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/280.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/280.md) + diff --git a/docs/internal-developers/testing/releases/290.md b/docs/internal-developers/testing/releases/290.md index d5f420c5c..47be32422 100644 --- a/docs/internal-developers/testing/releases/290.md +++ b/docs/internal-developers/testing/releases/290.md @@ -21,6 +21,7 @@ In some languages, the `State` and `Country` drop-down menus in the checkout blo [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/290.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/290.md) + diff --git a/docs/internal-developers/testing/releases/300.md b/docs/internal-developers/testing/releases/300.md index da4f5c3ec..9bc346b7f 100644 --- a/docs/internal-developers/testing/releases/300.md +++ b/docs/internal-developers/testing/releases/300.md @@ -141,6 +141,7 @@ Confirm that other payment methods still work correctly. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/300.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/300.md) + diff --git a/docs/internal-developers/testing/releases/310.md b/docs/internal-developers/testing/releases/310.md index cd2ef8ac1..be85e0973 100644 --- a/docs/internal-developers/testing/releases/310.md +++ b/docs/internal-developers/testing/releases/310.md @@ -81,6 +81,7 @@ Note: The below blocks only need tested for the feature plugin [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/310.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/310.md) + diff --git a/docs/internal-developers/testing/releases/320.md b/docs/internal-developers/testing/releases/320.md index f0fbce88d..449d475b8 100644 --- a/docs/internal-developers/testing/releases/320.md +++ b/docs/internal-developers/testing/releases/320.md @@ -119,6 +119,7 @@ You will need Product Add-ons extension to test this. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/320.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/320.md) + diff --git a/docs/internal-developers/testing/releases/330.md b/docs/internal-developers/testing/releases/330.md index 8d033a121..0332c248a 100644 --- a/docs/internal-developers/testing/releases/330.md +++ b/docs/internal-developers/testing/releases/330.md @@ -64,6 +64,7 @@ The following enhancements shipped in WooCommerce Blocks 3.1.0 but were missed i [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/330.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/330.md) + diff --git a/docs/internal-developers/testing/releases/340.md b/docs/internal-developers/testing/releases/340.md index 7b3e70d05..b5d6d0964 100644 --- a/docs/internal-developers/testing/releases/340.md +++ b/docs/internal-developers/testing/releases/340.md @@ -93,6 +93,7 @@ Testing this change basically means verifying there are no regressions: [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/340.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/340.md) + diff --git a/docs/internal-developers/testing/releases/350.md b/docs/internal-developers/testing/releases/350.md index ab8ae5aea..f38e2eb99 100644 --- a/docs/internal-developers/testing/releases/350.md +++ b/docs/internal-developers/testing/releases/350.md @@ -71,6 +71,7 @@ In order to save a payment method with a user. Enable the WooCommerce Stripe plu [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/350.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/350.md) + diff --git a/docs/internal-developers/testing/releases/360.md b/docs/internal-developers/testing/releases/360.md index 30d9b9dd4..8112b21fd 100644 --- a/docs/internal-developers/testing/releases/360.md +++ b/docs/internal-developers/testing/releases/360.md @@ -64,6 +64,7 @@ _After:_ [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/360.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/360.md) + diff --git a/docs/internal-developers/testing/releases/370.md b/docs/internal-developers/testing/releases/370.md index bd8e84935..07ff175ca 100644 --- a/docs/internal-developers/testing/releases/370.md +++ b/docs/internal-developers/testing/releases/370.md @@ -84,6 +84,7 @@ Test all blocks in editor/frontend and verify there are no evident issues with i [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/370.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/370.md) + diff --git a/docs/internal-developers/testing/releases/371.md b/docs/internal-developers/testing/releases/371.md index f021a1be3..9a2aa9fdb 100644 --- a/docs/internal-developers/testing/releases/371.md +++ b/docs/internal-developers/testing/releases/371.md @@ -41,6 +41,7 @@ As an alternative to (1), could also hack the JS REST request to always send `sh [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/371.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/371.md) + diff --git a/docs/internal-developers/testing/releases/380.md b/docs/internal-developers/testing/releases/380.md index 0fa7ebbeb..1c617ffc1 100644 --- a/docs/internal-developers/testing/releases/380.md +++ b/docs/internal-developers/testing/releases/380.md @@ -26,6 +26,7 @@ Moves the rendering of address fields to a single file so that PhoneNumber (new [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/380.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/380.md) + diff --git a/docs/internal-developers/testing/releases/390.md b/docs/internal-developers/testing/releases/390.md index b189e3405..412e987c7 100644 --- a/docs/internal-developers/testing/releases/390.md +++ b/docs/internal-developers/testing/releases/390.md @@ -139,6 +139,7 @@ In a device compatible with express payment methods and a site with Stripe payme [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/390.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/390.md) + diff --git a/docs/internal-developers/testing/releases/400.md b/docs/internal-developers/testing/releases/400.md index c479d9eda..a4a834f62 100644 --- a/docs/internal-developers/testing/releases/400.md +++ b/docs/internal-developers/testing/releases/400.md @@ -111,6 +111,7 @@ Testing: [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/400.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/400.md) + diff --git a/docs/internal-developers/testing/releases/410.md b/docs/internal-developers/testing/releases/410.md index 174ca0221..f871f0440 100644 --- a/docs/internal-developers/testing/releases/410.md +++ b/docs/internal-developers/testing/releases/410.md @@ -189,6 +189,7 @@ Validation via Checkout [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/410.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/410.md) + diff --git a/docs/internal-developers/testing/releases/420.md b/docs/internal-developers/testing/releases/420.md index 9ca274775..1c9d0409c 100644 --- a/docs/internal-developers/testing/releases/420.md +++ b/docs/internal-developers/testing/releases/420.md @@ -26,6 +26,7 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/420.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/420.md) + diff --git a/docs/internal-developers/testing/releases/430.md b/docs/internal-developers/testing/releases/430.md index 193cfac99..802ece54d 100644 --- a/docs/internal-developers/testing/releases/430.md +++ b/docs/internal-developers/testing/releases/430.md @@ -66,6 +66,7 @@ WC Product Add-Ons: [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/430.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/430.md) + diff --git a/docs/internal-developers/testing/releases/440.md b/docs/internal-developers/testing/releases/440.md index 7d8e81e86..40bd3f87d 100644 --- a/docs/internal-developers/testing/releases/440.md +++ b/docs/internal-developers/testing/releases/440.md @@ -102,6 +102,7 @@ This is a regression test due to the changes made for Subscriptions Integration. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/440.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/440.md) + diff --git a/docs/internal-developers/testing/releases/450.md b/docs/internal-developers/testing/releases/450.md index 96321235c..27540d667 100644 --- a/docs/internal-developers/testing/releases/450.md +++ b/docs/internal-developers/testing/releases/450.md @@ -144,6 +144,7 @@ In the frontend: [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/450.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/450.md) + diff --git a/docs/internal-developers/testing/releases/452.md b/docs/internal-developers/testing/releases/452.md index d5460a08e..a9c569ea7 100644 --- a/docs/internal-developers/testing/releases/452.md +++ b/docs/internal-developers/testing/releases/452.md @@ -27,6 +27,7 @@ No changes. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/452.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/452.md) + diff --git a/docs/internal-developers/testing/releases/460.md b/docs/internal-developers/testing/releases/460.md index 2deb9dff6..ee7963cc0 100644 --- a/docs/internal-developers/testing/releases/460.md +++ b/docs/internal-developers/testing/releases/460.md @@ -80,6 +80,7 @@ The following are related to various changes impacting some existing flows so ju [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/460.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/460.md) + diff --git a/docs/internal-developers/testing/releases/470.md b/docs/internal-developers/testing/releases/470.md index d83d553b6..04068226b 100644 --- a/docs/internal-developers/testing/releases/470.md +++ b/docs/internal-developers/testing/releases/470.md @@ -131,6 +131,7 @@ The following are related to various changes impacting some existing flows so ju [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/470.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/470.md) + diff --git a/docs/internal-developers/testing/releases/480.md b/docs/internal-developers/testing/releases/480.md index 74673a3c4..9da974c72 100644 --- a/docs/internal-developers/testing/releases/480.md +++ b/docs/internal-developers/testing/releases/480.md @@ -70,6 +70,7 @@ The following are related to various changes impacting some existing flows so ju [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/480.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/480.md) + diff --git a/docs/internal-developers/testing/releases/490.md b/docs/internal-developers/testing/releases/490.md index e0e5a436c..fbac5f913 100644 --- a/docs/internal-developers/testing/releases/490.md +++ b/docs/internal-developers/testing/releases/490.md @@ -114,6 +114,7 @@ The following are related to various changes impacting some existing flows so ju [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/490.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/490.md) + diff --git a/docs/internal-developers/testing/releases/491.md b/docs/internal-developers/testing/releases/491.md index 76c4cec3d..5166a8895 100644 --- a/docs/internal-developers/testing/releases/491.md +++ b/docs/internal-developers/testing/releases/491.md @@ -20,6 +20,7 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/491.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/491.md) + diff --git a/docs/internal-developers/testing/releases/500.md b/docs/internal-developers/testing/releases/500.md index eac0b0f6b..c52794ff5 100644 --- a/docs/internal-developers/testing/releases/500.md +++ b/docs/internal-developers/testing/releases/500.md @@ -63,6 +63,7 @@ Optionally, because this is difficult to achieve, if you tab to an add to cart b [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/500.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/500.md) + diff --git a/docs/internal-developers/testing/releases/510.md b/docs/internal-developers/testing/releases/510.md index 4772cf9a8..e49ca1ba9 100644 --- a/docs/internal-developers/testing/releases/510.md +++ b/docs/internal-developers/testing/releases/510.md @@ -28,6 +28,7 @@ Test both guest and logged in scenarios for the following: [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/510.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/510.md) + diff --git a/docs/internal-developers/testing/releases/520.md b/docs/internal-developers/testing/releases/520.md index 6e5367153..e255cdf30 100644 --- a/docs/internal-developers/testing/releases/520.md +++ b/docs/internal-developers/testing/releases/520.md @@ -149,6 +149,7 @@ Do the testing steps for the following widgets: Product Search, Product Categori [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/520.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/520.md) + diff --git a/docs/internal-developers/testing/releases/530.md b/docs/internal-developers/testing/releases/530.md index 61398c16f..2dac02adf 100644 --- a/docs/internal-developers/testing/releases/530.md +++ b/docs/internal-developers/testing/releases/530.md @@ -57,6 +57,7 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/530.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/530.md) + diff --git a/docs/internal-developers/testing/releases/531.md b/docs/internal-developers/testing/releases/531.md index 01ad98e21..a5c1de569 100644 --- a/docs/internal-developers/testing/releases/531.md +++ b/docs/internal-developers/testing/releases/531.md @@ -47,6 +47,7 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/531.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/531.md) + diff --git a/docs/internal-developers/testing/releases/532.md b/docs/internal-developers/testing/releases/532.md index e850ff9b8..ba12a76b3 100644 --- a/docs/internal-developers/testing/releases/532.md +++ b/docs/internal-developers/testing/releases/532.md @@ -20,6 +20,7 @@ No changes. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/532.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/532.md) + diff --git a/docs/internal-developers/testing/releases/540.md b/docs/internal-developers/testing/releases/540.md index 19f2067ba..92f52cfb3 100644 --- a/docs/internal-developers/testing/releases/540.md +++ b/docs/internal-developers/testing/releases/540.md @@ -43,6 +43,7 @@ To test this properly you'll need Stripe setup locally in sandbox mode. You can [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/540.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/540.md) + diff --git a/docs/internal-developers/testing/releases/550.md b/docs/internal-developers/testing/releases/550.md index 20d894c64..f553cd272 100644 --- a/docs/internal-developers/testing/releases/550.md +++ b/docs/internal-developers/testing/releases/550.md @@ -57,6 +57,7 @@ Test in the widget editor: [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/550.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/550.md) + diff --git a/docs/internal-developers/testing/releases/560.md b/docs/internal-developers/testing/releases/560.md index f8f6b7878..f6bcd9868 100644 --- a/docs/internal-developers/testing/releases/560.md +++ b/docs/internal-developers/testing/releases/560.md @@ -81,6 +81,7 @@ View the pagination rendered on the all products block and confirm the symbol ma [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/560.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/560.md) + diff --git a/docs/internal-developers/testing/releases/570.md b/docs/internal-developers/testing/releases/570.md index d9d2aa1e8..43cdf53e3 100644 --- a/docs/internal-developers/testing/releases/570.md +++ b/docs/internal-developers/testing/releases/570.md @@ -100,6 +100,7 @@ Test with the Twenty Twenty-One theme active. You'll need a test product and a t [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/570.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/570.md) + diff --git a/docs/internal-developers/testing/releases/571.md b/docs/internal-developers/testing/releases/571.md index 9108e2eb6..d39c5cfae 100644 --- a/docs/internal-developers/testing/releases/571.md +++ b/docs/internal-developers/testing/releases/571.md @@ -18,6 +18,7 @@ With Storefront and WP 5.8: [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/571.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/571.md) + diff --git a/docs/internal-developers/testing/releases/572.md b/docs/internal-developers/testing/releases/572.md index cd6740c6c..1c4ccaab9 100644 --- a/docs/internal-developers/testing/releases/572.md +++ b/docs/internal-developers/testing/releases/572.md @@ -27,6 +27,7 @@ With Storefront active: [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/572.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/572.md) + diff --git a/docs/internal-developers/testing/releases/580.md b/docs/internal-developers/testing/releases/580.md index c51ffb23d..d876f133e 100644 --- a/docs/internal-developers/testing/releases/580.md +++ b/docs/internal-developers/testing/releases/580.md @@ -65,6 +65,7 @@ A new block was introduced for filtering products by stock: [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/580.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/580.md) + diff --git a/docs/internal-developers/testing/releases/590.md b/docs/internal-developers/testing/releases/590.md index af91d4f81..aff83917c 100644 --- a/docs/internal-developers/testing/releases/590.md +++ b/docs/internal-developers/testing/releases/590.md @@ -55,6 +55,7 @@ Because of experimental work done during this release, we need to ensure no regr [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/590.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/590.md) + diff --git a/docs/internal-developers/testing/releases/591.md b/docs/internal-developers/testing/releases/591.md index c256fe0c3..f043b68ad 100644 --- a/docs/internal-developers/testing/releases/591.md +++ b/docs/internal-developers/testing/releases/591.md @@ -18,6 +18,7 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/591.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/591.md) + diff --git a/docs/internal-developers/testing/releases/600.md b/docs/internal-developers/testing/releases/600.md index 86e5975a5..b11529fe3 100644 --- a/docs/internal-developers/testing/releases/600.md +++ b/docs/internal-developers/testing/releases/600.md @@ -200,6 +200,7 @@ In a block-based theme (ie: TT1 Blocks) with Gutenberg enabled: [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/600.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/600.md) + diff --git a/docs/internal-developers/testing/releases/610.md b/docs/internal-developers/testing/releases/610.md index 1affb1875..ca6942a0c 100644 --- a/docs/internal-developers/testing/releases/610.md +++ b/docs/internal-developers/testing/releases/610.md @@ -53,6 +53,7 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/610.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/610.md) + diff --git a/docs/internal-developers/testing/releases/620.md b/docs/internal-developers/testing/releases/620.md index 86871df62..17eda497a 100644 --- a/docs/internal-developers/testing/releases/620.md +++ b/docs/internal-developers/testing/releases/620.md @@ -64,6 +64,7 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/620.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/620.md) + diff --git a/docs/internal-developers/testing/releases/630.md b/docs/internal-developers/testing/releases/630.md index 9861f005b..11041cb00 100644 --- a/docs/internal-developers/testing/releases/630.md +++ b/docs/internal-developers/testing/releases/630.md @@ -117,6 +117,7 @@ Example of button text for the Hand-picked Products block: [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/630.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/630.md) + diff --git a/docs/internal-developers/testing/releases/631.md b/docs/internal-developers/testing/releases/631.md index 8f25526d5..4aa6669c6 100644 --- a/docs/internal-developers/testing/releases/631.md +++ b/docs/internal-developers/testing/releases/631.md @@ -20,6 +20,7 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/631.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/631.md) + diff --git a/docs/internal-developers/testing/releases/632.md b/docs/internal-developers/testing/releases/632.md index 1cf621ee6..4b5c888f6 100644 --- a/docs/internal-developers/testing/releases/632.md +++ b/docs/internal-developers/testing/releases/632.md @@ -19,6 +19,7 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/632.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/632.md) + diff --git a/docs/internal-developers/testing/releases/633.md b/docs/internal-developers/testing/releases/633.md index 7d22cfc90..0d2a8d9e6 100644 --- a/docs/internal-developers/testing/releases/633.md +++ b/docs/internal-developers/testing/releases/633.md @@ -19,6 +19,7 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/633.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/633.md) + diff --git a/docs/internal-developers/testing/releases/640.md b/docs/internal-developers/testing/releases/640.md index d3e479aca..c8c43d27a 100644 --- a/docs/internal-developers/testing/releases/640.md +++ b/docs/internal-developers/testing/releases/640.md @@ -73,6 +73,7 @@ wc.blocksCheckout.__experimentalRegisterCheckoutFilters( 'my-test-extension', { [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/640.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/640.md) + diff --git a/docs/internal-developers/testing/releases/650.md b/docs/internal-developers/testing/releases/650.md index 31498f1cb..7ca058cd8 100644 --- a/docs/internal-developers/testing/releases/650.md +++ b/docs/internal-developers/testing/releases/650.md @@ -38,6 +38,7 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/650.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/650.md) + diff --git a/docs/internal-developers/testing/releases/660.md b/docs/internal-developers/testing/releases/660.md index f96c52149..2b31edc2a 100644 --- a/docs/internal-developers/testing/releases/660.md +++ b/docs/internal-developers/testing/releases/660.md @@ -153,6 +153,7 @@ This requires Stripe and a saved payment method. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/660.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/660.md) + diff --git a/docs/internal-developers/testing/releases/670.md b/docs/internal-developers/testing/releases/670.md index 07afc4e45..354e9ff1e 100644 --- a/docs/internal-developers/testing/releases/670.md +++ b/docs/internal-developers/testing/releases/670.md @@ -92,6 +92,7 @@ On an store with no products add the Query Monitor extension, then: [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/670.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/670.md) + diff --git a/docs/internal-developers/testing/releases/671.md b/docs/internal-developers/testing/releases/671.md index 272f3e29f..0069c20cd 100644 --- a/docs/internal-developers/testing/releases/671.md +++ b/docs/internal-developers/testing/releases/671.md @@ -20,6 +20,7 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/671.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/671.md) + diff --git a/docs/internal-developers/testing/releases/672.md b/docs/internal-developers/testing/releases/672.md index 157eeb0f5..b49ef50ab 100644 --- a/docs/internal-developers/testing/releases/672.md +++ b/docs/internal-developers/testing/releases/672.md @@ -21,6 +21,7 @@ Note: This is mostly regression testing. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/672.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/672.md) + diff --git a/docs/internal-developers/testing/releases/673.md b/docs/internal-developers/testing/releases/673.md index e622b2f38..a53474c88 100644 --- a/docs/internal-developers/testing/releases/673.md +++ b/docs/internal-developers/testing/releases/673.md @@ -16,6 +16,7 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/673.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/673.md) + diff --git a/docs/internal-developers/testing/releases/680.md b/docs/internal-developers/testing/releases/680.md index a8eca77ff..4349ee457 100644 --- a/docs/internal-developers/testing/releases/680.md +++ b/docs/internal-developers/testing/releases/680.md @@ -185,6 +185,7 @@ Install the [Stripe Payment Method Extension](https://github.com/woocommerce/woo [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/680.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/680.md) + diff --git a/docs/internal-developers/testing/releases/690.md b/docs/internal-developers/testing/releases/690.md index 52dc966cf..b674edb61 100644 --- a/docs/internal-developers/testing/releases/690.md +++ b/docs/internal-developers/testing/releases/690.md @@ -71,6 +71,7 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/690.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/690.md) + diff --git a/docs/internal-developers/testing/releases/700.md b/docs/internal-developers/testing/releases/700.md index 9a4a72f69..8357524c2 100644 --- a/docs/internal-developers/testing/releases/700.md +++ b/docs/internal-developers/testing/releases/700.md @@ -127,6 +127,7 @@ The following components have been converted to TypeScript, hence they benefit f [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/700.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/700.md) + diff --git a/docs/internal-developers/testing/releases/710.md b/docs/internal-developers/testing/releases/710.md index f5d207f43..5129c8fba 100644 --- a/docs/internal-developers/testing/releases/710.md +++ b/docs/internal-developers/testing/releases/710.md @@ -77,6 +77,7 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/710.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/710.md) + diff --git a/docs/internal-developers/testing/releases/720.md b/docs/internal-developers/testing/releases/720.md index 6c0602789..dd9fba21b 100644 --- a/docs/internal-developers/testing/releases/720.md +++ b/docs/internal-developers/testing/releases/720.md @@ -51,6 +51,7 @@ These instructions use WooCommerce Subscriptions as this is known to use several [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/720.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/720.md) + diff --git a/docs/internal-developers/testing/releases/721.md b/docs/internal-developers/testing/releases/721.md index a90f87602..9efe03684 100644 --- a/docs/internal-developers/testing/releases/721.md +++ b/docs/internal-developers/testing/releases/721.md @@ -18,6 +18,7 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/721.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/721.md) + diff --git a/docs/internal-developers/testing/releases/722.md b/docs/internal-developers/testing/releases/722.md index cc8575559..e50159400 100644 --- a/docs/internal-developers/testing/releases/722.md +++ b/docs/internal-developers/testing/releases/722.md @@ -17,6 +17,7 @@ [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/722.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/722.md) + diff --git a/docs/internal-developers/testing/releases/730.md b/docs/internal-developers/testing/releases/730.md index 94499f05f..d8fefb6a3 100644 --- a/docs/internal-developers/testing/releases/730.md +++ b/docs/internal-developers/testing/releases/730.md @@ -73,6 +73,7 @@ With Twenty Twenty-Two: [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/730.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/730.md) + diff --git a/docs/internal-developers/testing/releases/740.md b/docs/internal-developers/testing/releases/740.md index 398d1653d..2c2022774 100644 --- a/docs/internal-developers/testing/releases/740.md +++ b/docs/internal-developers/testing/releases/740.md @@ -79,6 +79,7 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/740.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/740.md) + diff --git a/docs/internal-developers/testing/releases/741.md b/docs/internal-developers/testing/releases/741.md index d9c706f37..572e6b0bf 100644 --- a/docs/internal-developers/testing/releases/741.md +++ b/docs/internal-developers/testing/releases/741.md @@ -17,6 +17,7 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/741.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/741.md) + diff --git a/docs/internal-developers/testing/releases/742.md b/docs/internal-developers/testing/releases/742.md index a4c4fe6c9..ed6522ec7 100644 --- a/docs/internal-developers/testing/releases/742.md +++ b/docs/internal-developers/testing/releases/742.md @@ -26,6 +26,7 @@ [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/742.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/742.md) + diff --git a/docs/internal-developers/testing/releases/750.md b/docs/internal-developers/testing/releases/750.md index 980dffe58..bfa43bb4e 100644 --- a/docs/internal-developers/testing/releases/750.md +++ b/docs/internal-developers/testing/releases/750.md @@ -153,6 +153,7 @@ ln -s ~/Desktop/woocommerce wp-content/plugins/woocommerce [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/750.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/750.md) + diff --git a/docs/internal-developers/testing/releases/760.md b/docs/internal-developers/testing/releases/760.md index e1cda9031..bba9afb21 100644 --- a/docs/internal-developers/testing/releases/760.md +++ b/docs/internal-developers/testing/releases/760.md @@ -157,6 +157,7 @@ Prerequisites: [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/760.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/760.md) + diff --git a/docs/internal-developers/testing/releases/761.md b/docs/internal-developers/testing/releases/761.md index 17871b23d..ab9e69810 100644 --- a/docs/internal-developers/testing/releases/761.md +++ b/docs/internal-developers/testing/releases/761.md @@ -42,6 +42,7 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/760.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/761.md) + diff --git a/docs/internal-developers/testing/releases/762.md b/docs/internal-developers/testing/releases/762.md index b318780dc..ef147fb7c 100644 --- a/docs/internal-developers/testing/releases/762.md +++ b/docs/internal-developers/testing/releases/762.md @@ -21,6 +21,7 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/760.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/762.md) + diff --git a/docs/internal-developers/testing/releases/770.md b/docs/internal-developers/testing/releases/770.md index e3d1d2038..e647213bc 100644 --- a/docs/internal-developers/testing/releases/770.md +++ b/docs/internal-developers/testing/releases/770.md @@ -41,6 +41,7 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/760.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/770.md) + diff --git a/docs/internal-developers/testing/releases/780.md b/docs/internal-developers/testing/releases/780.md index ae2ee54ca..d4cdfb2b0 100644 --- a/docs/internal-developers/testing/releases/780.md +++ b/docs/internal-developers/testing/releases/780.md @@ -135,6 +135,7 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/760.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/780.md) + diff --git a/docs/internal-developers/testing/releases/781.md b/docs/internal-developers/testing/releases/781.md index cf73facd2..d740f99f4 100644 --- a/docs/internal-developers/testing/releases/781.md +++ b/docs/internal-developers/testing/releases/781.md @@ -21,6 +21,7 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/760.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/781.md) + diff --git a/docs/internal-developers/testing/releases/782.md b/docs/internal-developers/testing/releases/782.md index f3b6f6479..3baeb981f 100644 --- a/docs/internal-developers/testing/releases/782.md +++ b/docs/internal-developers/testing/releases/782.md @@ -31,6 +31,7 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/760.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/782.md) + diff --git a/docs/internal-developers/testing/releases/783.md b/docs/internal-developers/testing/releases/783.md index 7051303f1..628948da7 100644 --- a/docs/internal-developers/testing/releases/783.md +++ b/docs/internal-developers/testing/releases/783.md @@ -21,6 +21,7 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/760.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/783.md) + diff --git a/docs/internal-developers/testing/releases/790.md b/docs/internal-developers/testing/releases/790.md index 726007f74..fa3182f28 100644 --- a/docs/internal-developers/testing/releases/790.md +++ b/docs/internal-developers/testing/releases/790.md @@ -81,3 +81,13 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github. 4. Add multiple items to your cart. 5. Go to the Checkout/Cart Block. 6. Ensure you see no errors. + + +--- + +[We're hiring!](https://woocommerce.com/careers/) Come work with us! + +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/790.md) + + + diff --git a/docs/internal-developers/testing/releases/800.md b/docs/internal-developers/testing/releases/800.md index 2f8bfa49c..fcff35d3f 100644 --- a/docs/internal-developers/testing/releases/800.md +++ b/docs/internal-developers/testing/releases/800.md @@ -47,3 +47,13 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github. 10. Place your order. Check on the `Order received` page that the displayed **tax is actually added to the total**. 11. Go to `Edit Order`. Check that **taxes were applied correctly there as well**. 12. On the `Checkout` again, select `Flat rate`, using the same external address, and make sure **taxes are not applied**. + + +--- + +[We're hiring!](https://woocommerce.com/careers/) Come work with us! + +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/800.md) + + + diff --git a/docs/internal-developers/testing/releases/810.md b/docs/internal-developers/testing/releases/810.md index 0125c29c0..dd50f97e6 100644 --- a/docs/internal-developers/testing/releases/810.md +++ b/docs/internal-developers/testing/releases/810.md @@ -53,3 +53,13 @@ For each filter block (by Price, by Attribute, by Stock and Active filters) ensu 5. Add a product to the cart and go to the test page with the checkout block. 6. Clear all form fields, if they're pre-filled, and click on place order. 7. See the error messages with sufficient color contrast. + + +--- + +[We're hiring!](https://woocommerce.com/careers/) Come work with us! + +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/810.md) + + + diff --git a/docs/internal-developers/testing/releases/README.md b/docs/internal-developers/testing/releases/README.md index d63cff2c4..830e5e46b 100644 --- a/docs/internal-developers/testing/releases/README.md +++ b/docs/internal-developers/testing/releases/README.md @@ -90,6 +90,7 @@ Every release includes specific testing instructions for new features and bug fi [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/releases/README.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/README.md) + diff --git a/docs/internal-developers/testing/smoke-testing.md b/docs/internal-developers/testing/smoke-testing.md index 79882a908..78570e4e5 100644 --- a/docs/internal-developers/testing/smoke-testing.md +++ b/docs/internal-developers/testing/smoke-testing.md @@ -286,6 +286,7 @@ In the `wp:woocommerce/product-search` substitute the URL used for the `action` [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/smoke-testing.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/smoke-testing.md) + diff --git a/docs/internal-developers/testing/when-to-employ-e2e-testing.md b/docs/internal-developers/testing/when-to-employ-e2e-testing.md index d2350991f..7ca73db3f 100644 --- a/docs/internal-developers/testing/when-to-employ-e2e-testing.md +++ b/docs/internal-developers/testing/when-to-employ-e2e-testing.md @@ -20,6 +20,7 @@ An example of things that _should_ be tested with E2E tests: [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/when-to-employ-e2e-testing.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/when-to-employ-e2e-testing.md) + diff --git a/docs/internal-developers/translations/README.md b/docs/internal-developers/translations/README.md index 073bdc708..2a4f7e5c9 100644 --- a/docs/internal-developers/translations/README.md +++ b/docs/internal-developers/translations/README.md @@ -16,6 +16,7 @@ This folder contains documentation around translation handling of WooCommerce Bl [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/README.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/translations/README.md) + diff --git a/docs/internal-developers/translations/translation-basics.md b/docs/internal-developers/translations/translation-basics.md index 95c6182bd..6ad575ac7 100644 --- a/docs/internal-developers/translations/translation-basics.md +++ b/docs/internal-developers/translations/translation-basics.md @@ -54,6 +54,7 @@ See also + diff --git a/docs/internal-developers/translations/translation-loading.md b/docs/internal-developers/translations/translation-loading.md index ba75bbe4d..60812cafa 100644 --- a/docs/internal-developers/translations/translation-loading.md +++ b/docs/internal-developers/translations/translation-loading.md @@ -303,6 +303,7 @@ add_filter( 'load_script_translation_file', 'load_woocommerce_core_json_translat [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/README.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/translations/translation-loading.md) + diff --git a/docs/internal-developers/translations/translation-management.md b/docs/internal-developers/translations/translation-management.md index 63fea00df..e33a17d8f 100644 --- a/docs/internal-developers/translations/translation-management.md +++ b/docs/internal-developers/translations/translation-management.md @@ -69,6 +69,7 @@ See also + diff --git a/docs/internal-developers/translations/translations-for-lazy-loaded-components.md b/docs/internal-developers/translations/translations-for-lazy-loaded-components.md index 80b574ab9..d3ea9539c 100644 --- a/docs/internal-developers/translations/translations-for-lazy-loaded-components.md +++ b/docs/internal-developers/translations/translations-for-lazy-loaded-components.md @@ -145,6 +145,7 @@ Lazy-loading translations within the WooCommerce Blocks plugin changed over time [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/README.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/translations/translations-for-lazy-loaded-components.md) + diff --git a/docs/internal-developers/translations/translations-in-FSE-templates.md b/docs/internal-developers/translations/translations-in-FSE-templates.md index 25172100c..97c83f303 100644 --- a/docs/internal-developers/translations/translations-in-FSE-templates.md +++ b/docs/internal-developers/translations/translations-in-FSE-templates.md @@ -114,6 +114,7 @@ The PR for the implementation above can be found on + diff --git a/docs/internal-developers/translations/translations-in-JS-TS-files.md b/docs/internal-developers/translations/translations-in-JS-TS-files.md index 1205ee8e8..473f2f15a 100644 --- a/docs/internal-developers/translations/translations-in-JS-TS-files.md +++ b/docs/internal-developers/translations/translations-in-JS-TS-files.md @@ -105,6 +105,7 @@ See also + diff --git a/docs/internal-developers/translations/translations-in-PHP-files.md b/docs/internal-developers/translations/translations-in-PHP-files.md index 5087a96ca..9aa37bda5 100644 --- a/docs/internal-developers/translations/translations-in-PHP-files.md +++ b/docs/internal-developers/translations/translations-in-PHP-files.md @@ -197,6 +197,7 @@ See also . [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/testing/README.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/translations/translations-in-PHP-files.md) + diff --git a/docs/third-party-developers/extensibility/README.md b/docs/third-party-developers/extensibility/README.md index 475536176..c831ffecd 100644 --- a/docs/third-party-developers/extensibility/README.md +++ b/docs/third-party-developers/extensibility/README.md @@ -52,6 +52,7 @@ In addition to the reference material below, [please see the `block-checkout` pa [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/extensibility/README.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/third-party-developers/extensibility/README.md) + diff --git a/docs/third-party-developers/extensibility/checkout-block/available-filters.md b/docs/third-party-developers/extensibility/checkout-block/available-filters.md index 36b7a6bb0..bf60fc758 100644 --- a/docs/third-party-developers/extensibility/checkout-block/available-filters.md +++ b/docs/third-party-developers/extensibility/checkout-block/available-filters.md @@ -268,6 +268,7 @@ The error will also be shown in your console. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/extensibility/available-filters.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/third-party-developers/extensibility/checkout-block/available-filters.md) + diff --git a/docs/third-party-developers/extensibility/checkout-block/available-slot-fills.md b/docs/third-party-developers/extensibility/checkout-block/available-slot-fills.md index d3f197bfc..f0ce088a1 100644 --- a/docs/third-party-developers/extensibility/checkout-block/available-slot-fills.md +++ b/docs/third-party-developers/extensibility/checkout-block/available-slot-fills.md @@ -81,6 +81,7 @@ Checkout: [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/extensibility/available-slot-fills.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/third-party-developers/extensibility/checkout-block/available-slot-fills.md) + diff --git a/docs/third-party-developers/extensibility/checkout-block/dom-events.md b/docs/third-party-developers/extensibility/checkout-block/dom-events.md index c6f78c6c4..bdf2bf956 100644 --- a/docs/third-party-developers/extensibility/checkout-block/dom-events.md +++ b/docs/third-party-developers/extensibility/checkout-block/dom-events.md @@ -47,6 +47,7 @@ _Example usage in WC Blocks:_ Cart and Mini Cart blocks (via the `useStoreCart() [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/extensibility/dom-events.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/third-party-developers/extensibility/checkout-block/dom-events.md) + diff --git a/docs/third-party-developers/extensibility/checkout-block/integration-interface.md b/docs/third-party-developers/extensibility/checkout-block/integration-interface.md index 613a00721..7565d6b5a 100644 --- a/docs/third-party-developers/extensibility/checkout-block/integration-interface.md +++ b/docs/third-party-developers/extensibility/checkout-block/integration-interface.md @@ -210,6 +210,7 @@ The value returned here is a plain old JavaScript object, keyed by the keys of t [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/extensibility/integration-interface.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/third-party-developers/extensibility/checkout-block/integration-interface.md) + diff --git a/docs/third-party-developers/extensibility/checkout-block/slot-fills.md b/docs/third-party-developers/extensibility/checkout-block/slot-fills.md index 4a1ea0489..ca58b301a 100644 --- a/docs/third-party-developers/extensibility/checkout-block/slot-fills.md +++ b/docs/third-party-developers/extensibility/checkout-block/slot-fills.md @@ -69,6 +69,7 @@ For this to work, your script must be enqueued after Cart and Checkout. You can [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/extensibility/slot-fills.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/third-party-developers/extensibility/checkout-block/slot-fills.md) + diff --git a/docs/third-party-developers/extensibility/checkout-payment-methods/checkout-flow-and-events.md b/docs/third-party-developers/extensibility/checkout-payment-methods/checkout-flow-and-events.md index 73f5b9baf..3e772f4c5 100644 --- a/docs/third-party-developers/extensibility/checkout-payment-methods/checkout-flow-and-events.md +++ b/docs/third-party-developers/extensibility/checkout-payment-methods/checkout-flow-and-events.md @@ -12,6 +12,7 @@ [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/extensibility/checkout-flow-and-events.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/third-party-developers/extensibility/checkout-payment-methods/checkout-flow-and-events.md) + diff --git a/docs/third-party-developers/extensibility/checkout-payment-methods/filtering-payment-methods.md b/docs/third-party-developers/extensibility/checkout-payment-methods/filtering-payment-methods.md index e2d918ba9..a19e5fea0 100644 --- a/docs/third-party-developers/extensibility/checkout-payment-methods/filtering-payment-methods.md +++ b/docs/third-party-developers/extensibility/checkout-payment-methods/filtering-payment-methods.md @@ -171,6 +171,7 @@ If you've added your payment method correctly with the correct `supports` values [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/extensibility/filtering-payment-methods.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/third-party-developers/extensibility/checkout-payment-methods/filtering-payment-methods.md) + diff --git a/docs/third-party-developers/extensibility/checkout-payment-methods/payment-method-integration.md b/docs/third-party-developers/extensibility/checkout-payment-methods/payment-method-integration.md index 895375bc7..a031f7309 100644 --- a/docs/third-party-developers/extensibility/checkout-payment-methods/payment-method-integration.md +++ b/docs/third-party-developers/extensibility/checkout-payment-methods/payment-method-integration.md @@ -244,6 +244,7 @@ As an example, you can see how the Stripe extension adds it's integration in thi [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/extensibility/payment-method-integration.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/third-party-developers/extensibility/checkout-payment-methods/payment-method-integration.md) + diff --git a/docs/third-party-developers/extensibility/hooks/actions.md b/docs/third-party-developers/extensibility/hooks/actions.md index 48f436d6e..a5c684192 100644 --- a/docs/third-party-developers/extensibility/hooks/actions.md +++ b/docs/third-party-developers/extensibility/hooks/actions.md @@ -6,45 +6,49 @@ ## Table of Contents -- [woocommerce_add_to_cart](#woocommerce_add_to_cart) -- [woocommerce_after_main_content](#woocommerce_after_main_content) -- [woocommerce_after_shop_loop](#woocommerce_after_shop_loop) -- [woocommerce_applied_coupon](#woocommerce_applied_coupon) -- [woocommerce_archive_description](#woocommerce_archive_description) -- [woocommerce_before_main_content](#woocommerce_before_main_content) -- [woocommerce_before_shop_loop](#woocommerce_before_shop_loop) -- [woocommerce_blocks_cart_enqueue_data](#woocommerce_blocks_cart_enqueue_data) -- [woocommerce_blocks_checkout_enqueue_data](#woocommerce_blocks_checkout_enqueue_data) -- [woocommerce_blocks_enqueue_cart_block_scripts_after](#woocommerce_blocks_enqueue_cart_block_scripts_after) -- [woocommerce_blocks_enqueue_cart_block_scripts_before](#woocommerce_blocks_enqueue_cart_block_scripts_before) -- [woocommerce_blocks_enqueue_checkout_block_scripts_after](#woocommerce_blocks_enqueue_checkout_block_scripts_after) -- [woocommerce_blocks_enqueue_checkout_block_scripts_before](#woocommerce_blocks_enqueue_checkout_block_scripts_before) -- [woocommerce*blocks*{\$this->registry_identifier}\_registration](#woocommerce_blocks_-this--registry_identifier-_registration) -- [woocommerce_check_cart_items](#-woocommerce_check_cart_items) -- [woocommerce_created_customer](#woocommerce_created_customer) -- [woocommerce_no_products_found](#woocommerce_no_products_found) -- [woocommerce_register_post](#woocommerce_register_post) -- [woocommerce_rest_checkout_process_payment_with_context](#woocommerce_rest_checkout_process_payment_with_context) -- [woocommerce_shop_loop](#woocommerce_shop_loop) -- [woocommerce_store_api_cart_errors](#woocommerce_store_api_cart_errors) -- [woocommerce_store_api_cart_update_customer_from_request](#woocommerce_store_api_cart_update_customer_from_request) -- [woocommerce_store_api_cart_update_order_from_request](#woocommerce_store_api_cart_update_order_from_request) -- [woocommerce_store_api_checkout_order_processed](#woocommerce_store_api_checkout_order_processed) -- [woocommerce_store_api_checkout_update_order_from_request](#woocommerce_store_api_checkout_update_order_from_request) -- [woocommerce_store_api_checkout_update_order_meta](#woocommerce_store_api_checkout_update_order_meta) -- [woocommerce_store_api_validate_add_to_cart](#woocommerce_store_api_validate_add_to_cart) -- [woocommerce_store_api_validate_cart_item](#woocommerce_store_api_validate_cart_item) + + - [woocommerce_add_to_cart](#woocommerce_add_to_cart) + - [woocommerce_after_main_content](#woocommerce_after_main_content) + - [woocommerce_after_shop_loop](#woocommerce_after_shop_loop) + - [woocommerce_applied_coupon](#woocommerce_applied_coupon) + - [woocommerce_archive_description](#woocommerce_archive_description) + - [woocommerce_before_main_content](#woocommerce_before_main_content) + - [woocommerce_before_shop_loop](#woocommerce_before_shop_loop) + - [woocommerce_blocks_cart_enqueue_data](#woocommerce_blocks_cart_enqueue_data) + - [woocommerce_blocks_checkout_enqueue_data](#woocommerce_blocks_checkout_enqueue_data) + - [woocommerce_blocks_enqueue_cart_block_scripts_after](#woocommerce_blocks_enqueue_cart_block_scripts_after) + - [woocommerce_blocks_enqueue_cart_block_scripts_before](#woocommerce_blocks_enqueue_cart_block_scripts_before) + - [woocommerce_blocks_enqueue_checkout_block_scripts_after](#woocommerce_blocks_enqueue_checkout_block_scripts_after) + - [woocommerce_blocks_enqueue_checkout_block_scripts_before](#woocommerce_blocks_enqueue_checkout_block_scripts_before) + - [woocommerce_blocks_{$this->registry_identifier}_registration](#woocommerce_blocks_-this--registry_identifier-_registration) + - [woocommerce_check_cart_items](#-woocommerce_check_cart_items) + - [woocommerce_created_customer](#woocommerce_created_customer) + - [woocommerce_no_products_found](#woocommerce_no_products_found) + - [woocommerce_register_post](#woocommerce_register_post) + - [woocommerce_rest_checkout_process_payment_with_context](#woocommerce_rest_checkout_process_payment_with_context) + - [woocommerce_shop_loop](#woocommerce_shop_loop) + - [woocommerce_store_api_cart_errors](#woocommerce_store_api_cart_errors) + - [woocommerce_store_api_cart_update_customer_from_request](#woocommerce_store_api_cart_update_customer_from_request) + - [woocommerce_store_api_cart_update_order_from_request](#woocommerce_store_api_cart_update_order_from_request) + - [woocommerce_store_api_checkout_order_processed](#woocommerce_store_api_checkout_order_processed) + - [woocommerce_store_api_checkout_update_customer_from_request](#woocommerce_store_api_checkout_update_customer_from_request) + - [woocommerce_store_api_checkout_update_order_from_request](#woocommerce_store_api_checkout_update_order_from_request) + - [woocommerce_store_api_checkout_update_order_meta](#woocommerce_store_api_checkout_update_order_meta) + - [woocommerce_store_api_validate_add_to_cart](#woocommerce_store_api_validate_add_to_cart) + - [woocommerce_store_api_validate_cart_item](#woocommerce_store_api_validate_cart_item) --- ## woocommerce_add_to_cart + Fires when an item is added to the cart. ```php do_action( 'woocommerce_add_to_cart', string $cart_id, integer $product_id, integer $request_quantity, integer $variation_id, array $variation, array $cart_item_data ) ``` + **Note: Matches action name in WooCommerce core.** ### Description @@ -53,23 +57,25 @@ do_action( 'woocommerce_add_to_cart', string $cart_id, integer $product_id, inte ### Parameters -| Argument | Type | Description | -| ------------------ | ------- | ---------------------------------------------- | -| \$cart_id | string | ID of the item in the cart. | -| \$product_id | integer | ID of the product added to the cart. | -| \$request_quantity | integer | Quantity of the item added to the cart. | -| \$variation_id | integer | Variation ID of the product added to the cart. | -| \$variation | array | Array of variation data. | -| \$cart_item_data | array | Array of other cart item data. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $cart_id | string | ID of the item in the cart. | +| $product_id | integer | ID of the product added to the cart. | +| $request_quantity | integer | Quantity of the item added to the cart. | +| $variation_id | integer | Variation ID of the product added to the cart. | +| $variation | array | Array of variation data. | +| $cart_item_data | array | Array of other cart item data. | ### Source -- [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php) + + - [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php) --- ## woocommerce_after_main_content + Hook: woocommerce_after_main_content ```php @@ -82,17 +88,20 @@ do_action( 'woocommerce_after_main_content' ) ### See -- woocommerce_output_content_wrapper_end() - Outputs closing DIV for the content (priority 10) + + - woocommerce_output_content_wrapper_end() - Outputs closing DIV for the content (priority 10) ### Source -- [BlockTypes/ClassicTemplate.php](../../src/BlockTypes/ClassicTemplate.php) -- [BlockTypes/ClassicTemplate.php](../../src/BlockTypes/ClassicTemplate.php) + + - [BlockTypes/ClassicTemplate.php](../../src/BlockTypes/ClassicTemplate.php) + - [BlockTypes/ClassicTemplate.php](../../src/BlockTypes/ClassicTemplate.php) --- ## woocommerce_after_shop_loop + Hook: woocommerce_after_shop_loop. ```php @@ -101,38 +110,44 @@ do_action( 'woocommerce_after_shop_loop' ) ### See -- woocommerce_pagination() - Renders pagination (priority 10) + + - woocommerce_pagination() - Renders pagination (priority 10) ### Source -- [BlockTypes/ClassicTemplate.php](../../src/BlockTypes/ClassicTemplate.php) + + - [BlockTypes/ClassicTemplate.php](../../src/BlockTypes/ClassicTemplate.php) --- ## woocommerce_applied_coupon + Fires after a coupon has been applied to the cart. ```php do_action( 'woocommerce_applied_coupon', string $coupon_code ) ``` + **Note: Matches action name in WooCommerce core.** ### Parameters -| Argument | Type | Description | -| ------------- | ------ | --------------------------------- | -| \$coupon_code | string | The coupon code that was applied. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $coupon_code | string | The coupon code that was applied. | ### Source -- [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php) + + - [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php) --- ## woocommerce_archive_description + Hook: woocommerce_archive_description. ```php @@ -141,17 +156,20 @@ do_action( 'woocommerce_archive_description' ) ### See -- woocommerce_taxonomy_archive_description() - Renders the taxonomy archive description (priority 10) -- woocommerce_product_archive_description() - Renders the product archive description (priority 10) + + - woocommerce_taxonomy_archive_description() - Renders the taxonomy archive description (priority 10) + - woocommerce_product_archive_description() - Renders the product archive description (priority 10) ### Source -- [BlockTypes/ClassicTemplate.php](../../src/BlockTypes/ClassicTemplate.php) + + - [BlockTypes/ClassicTemplate.php](../../src/BlockTypes/ClassicTemplate.php) --- ## woocommerce_before_main_content + Hook: woocommerce_before_main_content ```php @@ -164,19 +182,22 @@ do_action( 'woocommerce_before_main_content' ) ### See -- woocommerce_output_content_wrapper() - Outputs opening DIV for the content (priority 10) -- woocommerce_breadcrumb() - Outputs breadcrumb trail to the current product (priority 20) -- WC_Structured_Data::generate_website_data() - Outputs schema markup (priority 30) + + - woocommerce_output_content_wrapper() - Outputs opening DIV for the content (priority 10) + - woocommerce_breadcrumb() - Outputs breadcrumb trail to the current product (priority 20) + - WC_Structured_Data::generate_website_data() - Outputs schema markup (priority 30) ### Source -- [BlockTypes/ClassicTemplate.php](../../src/BlockTypes/ClassicTemplate.php) -- [BlockTypes/ClassicTemplate.php](../../src/BlockTypes/ClassicTemplate.php) + + - [BlockTypes/ClassicTemplate.php](../../src/BlockTypes/ClassicTemplate.php) + - [BlockTypes/ClassicTemplate.php](../../src/BlockTypes/ClassicTemplate.php) --- ## woocommerce_before_shop_loop + Hook: woocommerce_before_shop_loop. ```php @@ -185,18 +206,21 @@ do_action( 'woocommerce_before_shop_loop' ) ### See -- woocommerce_output_all_notices() - Render error notices (priority 10) -- woocommerce_result_count() - Show number of results found (priority 20) -- woocommerce_catalog_ordering() - Show form to control sort order (priority 30) + + - woocommerce_output_all_notices() - Render error notices (priority 10) + - woocommerce_result_count() - Show number of results found (priority 20) + - woocommerce_catalog_ordering() - Show form to control sort order (priority 30) ### Source -- [BlockTypes/ClassicTemplate.php](../../src/BlockTypes/ClassicTemplate.php) + + - [BlockTypes/ClassicTemplate.php](../../src/BlockTypes/ClassicTemplate.php) --- ## woocommerce_blocks_cart_enqueue_data + Fires after cart block data is registered. ```php @@ -205,13 +229,15 @@ do_action( 'woocommerce_blocks_cart_enqueue_data' ) ### Source -- [BlockTypes/MiniCart.php](../../src/BlockTypes/MiniCart.php) -- [BlockTypes/Cart.php](../../src/BlockTypes/Cart.php) + + - [BlockTypes/Cart.php](../../src/BlockTypes/Cart.php) + - [BlockTypes/MiniCart.php](../../src/BlockTypes/MiniCart.php) --- ## woocommerce_blocks_checkout_enqueue_data + Fires after checkout block data is registered. ```php @@ -220,12 +246,14 @@ do_action( 'woocommerce_blocks_checkout_enqueue_data' ) ### Source -- [BlockTypes/Checkout.php](../../src/BlockTypes/Checkout.php) + + - [BlockTypes/Checkout.php](../../src/BlockTypes/Checkout.php) --- ## woocommerce_blocks_enqueue_cart_block_scripts_after + Fires after cart block scripts are enqueued. ```php @@ -234,12 +262,14 @@ do_action( 'woocommerce_blocks_enqueue_cart_block_scripts_after' ) ### Source -- [BlockTypes/Cart.php](../../src/BlockTypes/Cart.php) + + - [BlockTypes/Cart.php](../../src/BlockTypes/Cart.php) --- ## woocommerce_blocks_enqueue_cart_block_scripts_before + Fires before cart block scripts are enqueued. ```php @@ -248,12 +278,14 @@ do_action( 'woocommerce_blocks_enqueue_cart_block_scripts_before' ) ### Source -- [BlockTypes/Cart.php](../../src/BlockTypes/Cart.php) + + - [BlockTypes/Cart.php](../../src/BlockTypes/Cart.php) --- ## woocommerce_blocks_enqueue_checkout_block_scripts_after + Fires after checkout block scripts are enqueued. ```php @@ -262,12 +294,14 @@ do_action( 'woocommerce_blocks_enqueue_checkout_block_scripts_after' ) ### Source -- [BlockTypes/Checkout.php](../../src/BlockTypes/Checkout.php) + + - [BlockTypes/Checkout.php](../../src/BlockTypes/Checkout.php) --- ## woocommerce_blocks_enqueue_checkout_block_scripts_before + Fires before checkout block scripts are enqueued. ```php @@ -276,11 +310,13 @@ do_action( 'woocommerce_blocks_enqueue_checkout_block_scripts_before' ) ### Source -- [BlockTypes/Checkout.php](../../src/BlockTypes/Checkout.php) + + - [BlockTypes/Checkout.php](../../src/BlockTypes/Checkout.php) --- -## woocommerce*blocks*{\$this->registry_identifier}\_registration +## woocommerce_blocks_{$this->registry_identifier}_registration + Fires when the IntegrationRegistry is initialized. @@ -294,26 +330,30 @@ do_action( 'woocommerce_blocks_{$this->registry_identifier}_registration', \Auto ### Parameters -| Argument | Type | Description | -| -------- | --------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | -| \$this | \Automattic\WooCommerce\Blocks\Integrations\IntegrationRegistry | Instance of the IntegrationRegistry class which exposes the IntegrationRegistry::register() method. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $this | \Automattic\WooCommerce\Blocks\Integrations\IntegrationRegistry | Instance of the IntegrationRegistry class which exposes the IntegrationRegistry::register() method. | ### Source -- [Integrations/IntegrationRegistry.php](../../src/Integrations/IntegrationRegistry.php) + + - [Integrations/IntegrationRegistry.php](../../src/Integrations/IntegrationRegistry.php) --- ## ~~woocommerce_check_cart_items~~ + Fires when cart items are being validated. ```php do_action( 'woocommerce_check_cart_items' ) ``` + **Deprecated: This hook is deprecated and will be removed** + **Note: Matches action name in WooCommerce core.** ### Description @@ -322,18 +362,21 @@ do_action( 'woocommerce_check_cart_items' ) ### Source -- [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php) + + - [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php) --- ## woocommerce_created_customer + Fires after a customer account has been registered. ```php do_action( 'woocommerce_created_customer', integer $customer_id, array $new_customer_data, string $password_generated ) ``` + **Note: Matches filter name in WooCommerce core.** ### Description @@ -342,20 +385,22 @@ do_action( 'woocommerce_created_customer', integer $customer_id, array $new_cust ### Parameters -| Argument | Type | Description | -| -------------------- | ------- | --------------------------------------- | -| \$customer_id | integer | New customer (user) ID. | -| \$new_customer_data | array | Array of customer (user) data. | -| \$password_generated | string | The generated password for the account. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $customer_id | integer | New customer (user) ID. | +| $new_customer_data | array | Array of customer (user) data. | +| $password_generated | string | The generated password for the account. | ### Source -- [StoreApi/Routes/V1/Checkout.php](../../src/StoreApi/Routes/V1/Checkout.php) + + - [StoreApi/Routes/V1/Checkout.php](../../src/StoreApi/Routes/V1/Checkout.php) --- ## woocommerce_no_products_found + Hook: woocommerce_no_products_found. ```php @@ -364,22 +409,26 @@ do_action( 'woocommerce_no_products_found' ) ### See -- wc_no_products_found() - Default no products found content (priority 10) + + - wc_no_products_found() - Default no products found content (priority 10) ### Source -- [BlockTypes/ClassicTemplate.php](../../src/BlockTypes/ClassicTemplate.php) + + - [BlockTypes/ClassicTemplate.php](../../src/BlockTypes/ClassicTemplate.php) --- ## woocommerce_register_post + Fires before a customer account is registered. ```php do_action( 'woocommerce_register_post', string $username, string $user_email, \WP_Error $errors ) ``` + **Note: Matches filter name in WooCommerce core.** ### Description @@ -388,20 +437,22 @@ do_action( 'woocommerce_register_post', string $username, string $user_email, \W ### Parameters -| Argument | Type | Description | -| ------------ | --------- | ----------------------- | -| \$username | string | Customer username. | -| \$user_email | string | Customer email address. | -| \$errors | \WP_Error | Error object. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $username | string | Customer username. | +| $user_email | string | Customer email address. | +| $errors | \WP_Error | Error object. | ### Source -- [StoreApi/Routes/V1/Checkout.php](../../src/StoreApi/Routes/V1/Checkout.php) + + - [StoreApi/Routes/V1/Checkout.php](../../src/StoreApi/Routes/V1/Checkout.php) --- ## woocommerce_rest_checkout_process_payment_with_context + Process payment with context. ```php @@ -410,23 +461,26 @@ do_action_ref_array( 'woocommerce_rest_checkout_process_payment_with_context', [ ### Parameters -| Argument | Type | Description | -| ---------------- | -------------------------------------------------------- | --------------------------------------------------------------------- | -| \$context | \Automattic\WooCommerce\StoreApi\Payments\PaymentContext | Holds context for the payment, including order ID and payment method. | -| \$payment_result | \Automattic\WooCommerce\StoreApi\Payments\PaymentResult | Result object for the transaction. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $context | \Automattic\WooCommerce\StoreApi\Payments\PaymentContext | Holds context for the payment, including order ID and payment method. | +| $payment_result | \Automattic\WooCommerce\StoreApi\Payments\PaymentResult | Result object for the transaction. | ### Exceptions + `\Exception` If there is an error taking payment, an \Exception object can be thrown with an error message. ### Source -- [StoreApi/Routes/V1/Checkout.php](../../src/StoreApi/Routes/V1/Checkout.php) + + - [StoreApi/Routes/V1/Checkout.php](../../src/StoreApi/Routes/V1/Checkout.php) --- ## woocommerce_shop_loop + Hook: woocommerce_shop_loop. ```php @@ -435,12 +489,14 @@ do_action( 'woocommerce_shop_loop' ) ### Source -- [BlockTypes/ClassicTemplate.php](../../src/BlockTypes/ClassicTemplate.php) + + - [BlockTypes/ClassicTemplate.php](../../src/BlockTypes/ClassicTemplate.php) --- ## woocommerce_store_api_cart_errors + Fires an action to validate the cart. ```php @@ -453,13 +509,15 @@ do_action( 'woocommerce_store_api_cart_errors', \WP_Error $errors, \WC_Cart $car ### Parameters -| Argument | Type | Description | -| -------- | --------- | ---------------- | -| \$errors | \WP_Error | WP_Error object. | -| \$cart | \WC_Cart | Cart object. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $errors | \WP_Error | WP_Error object. | +| $cart | \WC_Cart | Cart object. | ### Example +# Validate Cart + ```php // The action callback function. function my_function_callback( $errors, $cart ) { @@ -473,14 +531,17 @@ function my_function_callback( $errors, $cart ) { add_action( 'woocommerce_store_api_cart_errors', 'my_function_callback', 10 ); ``` + ### Source -- [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php) + + - [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php) --- ## woocommerce_store_api_cart_update_customer_from_request + Fires when the Checkout Block/Store API updates a customer from the API request data. ```php @@ -489,19 +550,21 @@ do_action( 'woocommerce_store_api_cart_update_customer_from_request', \WC_Custom ### Parameters -| Argument | Type | Description | -| ---------- | ---------------- | ------------------------------- | -| \$customer | \WC_Customer | Customer object. | -| \$request | \WP_REST_Request | Full details about the request. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $customer | \WC_Customer | Customer object. | +| $request | \WP_REST_Request | Full details about the request. | ### Source -- [StoreApi/Routes/V1/CartUpdateCustomer.php](../../src/StoreApi/Routes/V1/CartUpdateCustomer.php) + + - [StoreApi/Routes/V1/CartUpdateCustomer.php](../../src/StoreApi/Routes/V1/CartUpdateCustomer.php) --- ## woocommerce_store_api_cart_update_order_from_request + Fires when the order is synced with cart data from a cart route. ```php @@ -510,20 +573,22 @@ do_action( 'woocommerce_store_api_cart_update_order_from_request', \WC_Order $dr ### Parameters -| Argument | Type | Description | -| ------------- | ---------------- | ------------------------------- | -| \$draft_order | \WC_Order | Order object. | -| \$customer | \WC_Customer | Customer object. | -| \$request | \WP_REST_Request | Full details about the request. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $draft_order | \WC_Order | Order object. | +| $customer | \WC_Customer | Customer object. | +| $request | \WP_REST_Request | Full details about the request. | ### Source -- [StoreApi/Routes/V1/AbstractCartRoute.php](../../src/StoreApi/Routes/V1/AbstractCartRoute.php) + + - [StoreApi/Routes/V1/AbstractCartRoute.php](../../src/StoreApi/Routes/V1/AbstractCartRoute.php) --- ## woocommerce_store_api_checkout_order_processed + Fires before an order is processed by the Checkout Block/Store API. ```php @@ -536,12 +601,14 @@ do_action( 'woocommerce_store_api_checkout_order_processed', \WC_Order $order ) ### Parameters -| Argument | Type | Description | -| -------- | --------- | ------------- | -| \$order | \WC_Order | Order object. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $order | \WC_Order | Order object. | ### Example +# Checkout Order Processed + ```php // The action callback function. function my_function_callback( $order ) { @@ -552,18 +619,45 @@ function my_function_callback( $order ) { add_action( 'woocommerce_blocks_checkout_order_processed', 'my_function_callback', 10 ); ``` + ### See -- https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/3238 + + - https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/3238 ### Source -- [StoreApi/Routes/V1/Checkout.php](../../src/StoreApi/Routes/V1/Checkout.php) + + - [StoreApi/Routes/V1/Checkout.php](../../src/StoreApi/Routes/V1/Checkout.php) + +--- + +## woocommerce_store_api_checkout_update_customer_from_request + + +Fires when the Checkout Block/Store API updates a customer from the API request data. + +```php +do_action( 'woocommerce_store_api_checkout_update_customer_from_request', \WC_Customer $customer, \WP_REST_Request $request ) +``` + +### Parameters + +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $customer | \WC_Customer | Customer object. | +| $request | \WP_REST_Request | Full details about the request. | + +### Source + + + - [StoreApi/Routes/V1/Checkout.php](../../src/StoreApi/Routes/V1/Checkout.php) --- ## woocommerce_store_api_checkout_update_order_from_request + Fires when the Checkout Block/Store API updates an order's from the API request data. ```php @@ -576,19 +670,21 @@ do_action( 'woocommerce_store_api_checkout_update_order_from_request', \WC_Order ### Parameters -| Argument | Type | Description | -| --------- | ---------------- | ------------------------------- | -| \$order | \WC_Order | Order object. | -| \$request | \WP_REST_Request | Full details about the request. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $order | \WC_Order | Order object. | +| $request | \WP_REST_Request | Full details about the request. | ### Source -- [StoreApi/Routes/V1/Checkout.php](../../src/StoreApi/Routes/V1/Checkout.php) + + - [StoreApi/Routes/V1/Checkout.php](../../src/StoreApi/Routes/V1/Checkout.php) --- ## woocommerce_store_api_checkout_update_order_meta + Fires when the Checkout Block/Store API updates an order's meta data. ```php @@ -601,22 +697,25 @@ do_action( 'woocommerce_store_api_checkout_update_order_meta', \WC_Order $order ### Parameters -| Argument | Type | Description | -| -------- | --------- | ------------- | -| \$order | \WC_Order | Order object. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $order | \WC_Order | Order object. | ### See -- https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/3686 + + - https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/3686 ### Source -- [StoreApi/Routes/V1/Checkout.php](../../src/StoreApi/Routes/V1/Checkout.php) + + - [StoreApi/Routes/V1/Checkout.php](../../src/StoreApi/Routes/V1/Checkout.php) --- ## woocommerce_store_api_validate_add_to_cart + Fires during validation when adding an item to the cart via the Store API. ```php @@ -629,19 +728,21 @@ do_action( 'woocommerce_store_api_validate_add_to_cart', \WC_Product $product, a ### Parameters -| Argument | Type | Description | -| --------- | ----------- | ---------------------------------------------------------------------------- | -| \$product | \WC_Product | Product object being added to the cart. | -| \$request | array | Add to cart request params including id, quantity, and variation attributes. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $product | \WC_Product | Product object being added to the cart. | +| $request | array | Add to cart request params including id, quantity, and variation attributes. | ### Source -- [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php) + + - [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php) --- ## woocommerce_store_api_validate_cart_item + Fire action to validate add to cart. Functions hooking into this should throw an \Exception to prevent add to cart from occurring. ```php @@ -650,23 +751,24 @@ do_action( 'woocommerce_store_api_validate_cart_item', \WC_Product $product, arr ### Parameters -| Argument | Type | Description | -| ----------- | ----------- | --------------------------------------- | -| \$product | \WC_Product | Product object being added to the cart. | -| \$cart_item | array | Cart item array. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $product | \WC_Product | Product object being added to the cart. | +| $cart_item | array | Cart item array. | ### Source -- [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php) ---- + - [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php) +--- --- [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/extensibility/actions.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/third-party-developers/extensibility/hooks/actions.md) + diff --git a/docs/third-party-developers/extensibility/hooks/filters.md b/docs/third-party-developers/extensibility/hooks/filters.md index 4bcf4033f..1c6546e12 100644 --- a/docs/third-party-developers/extensibility/hooks/filters.md +++ b/docs/third-party-developers/extensibility/hooks/filters.md @@ -6,36 +6,38 @@ ## Table of Contents -- [\_\_experimental_woocommerce_blocks_add_data_attributes_to_block](#__experimental_woocommerce_blocks_add_data_attributes_to_block) -- [\_\_experimental_woocommerce_blocks_add_data_attributes_to_namespace](#__experimental_woocommerce_blocks_add_data_attributes_to_namespace) -- [\_\_experimental_woocommerce_blocks_payment_gateway_features_list](#__experimental_woocommerce_blocks_payment_gateway_features_list) -- [woocommerce_add_cart_item](#woocommerce_add_cart_item) -- [woocommerce_add_cart_item_data](#woocommerce_add_cart_item_data) -- [woocommerce_add_to_cart_sold_individually_quantity](#woocommerce_add_to_cart_sold_individually_quantity) -- [woocommerce_add_to_cart_validation](#-woocommerce_add_to_cart_validation) -- [woocommerce_adjust_non_base_location_prices](#woocommerce_adjust_non_base_location_prices) -- [woocommerce_admin_disabled](#woocommerce_admin_disabled) -- [woocommerce_apply_individual_use_coupon](#woocommerce_apply_individual_use_coupon) -- [woocommerce_apply_with_individual_use_coupon](#woocommerce_apply_with_individual_use_coupon) -- [woocommerce_blocks_product_grid_is_cacheable](#woocommerce_blocks_product_grid_is_cacheable) -- [woocommerce_blocks_product_grid_item_html](#woocommerce_blocks_product_grid_item_html) -- [woocommerce_blocks_register_script_dependencies](#woocommerce_blocks_register_script_dependencies) -- [woocommerce_cart_contents_changed](#woocommerce_cart_contents_changed) -- [woocommerce_ga_disable_tracking](#woocommerce_ga_disable_tracking) -- [woocommerce_get_item_data](#woocommerce_get_item_data) -- [woocommerce_new_customer_data](#woocommerce_new_customer_data) -- [woocommerce_registration_errors](#woocommerce_registration_errors) -- [woocommerce_shared_settings](#-woocommerce_shared_settings) -- [woocommerce_shipping_package_name](#woocommerce_shipping_package_name) -- [woocommerce_show_page_title](#woocommerce_show_page_title) -- [woocommerce_store_api_disable_nonce_check](#woocommerce_store_api_disable_nonce_check) -- [woocommerce_store_api_product_quantity_limit](#woocommerce_store_api_product_quantity_limit) -- [woocommerce*store_api_product_quantity*{\$value_type}](#woocommerce_store_api_product_quantity_-value_type) -- [woocommerce_variation_option_name](#woocommerce_variation_option_name) + + - [__experimental_woocommerce_blocks_add_data_attributes_to_block](#__experimental_woocommerce_blocks_add_data_attributes_to_block) + - [__experimental_woocommerce_blocks_add_data_attributes_to_namespace](#__experimental_woocommerce_blocks_add_data_attributes_to_namespace) + - [__experimental_woocommerce_blocks_payment_gateway_features_list](#__experimental_woocommerce_blocks_payment_gateway_features_list) + - [woocommerce_add_cart_item](#woocommerce_add_cart_item) + - [woocommerce_add_cart_item_data](#woocommerce_add_cart_item_data) + - [woocommerce_add_to_cart_sold_individually_quantity](#woocommerce_add_to_cart_sold_individually_quantity) + - [woocommerce_add_to_cart_validation](#-woocommerce_add_to_cart_validation) + - [woocommerce_adjust_non_base_location_prices](#woocommerce_adjust_non_base_location_prices) + - [woocommerce_admin_disabled](#woocommerce_admin_disabled) + - [woocommerce_apply_individual_use_coupon](#woocommerce_apply_individual_use_coupon) + - [woocommerce_apply_with_individual_use_coupon](#woocommerce_apply_with_individual_use_coupon) + - [woocommerce_blocks_product_grid_is_cacheable](#woocommerce_blocks_product_grid_is_cacheable) + - [woocommerce_blocks_product_grid_item_html](#woocommerce_blocks_product_grid_item_html) + - [woocommerce_blocks_register_script_dependencies](#woocommerce_blocks_register_script_dependencies) + - [woocommerce_cart_contents_changed](#woocommerce_cart_contents_changed) + - [woocommerce_ga_disable_tracking](#woocommerce_ga_disable_tracking) + - [woocommerce_get_item_data](#woocommerce_get_item_data) + - [woocommerce_new_customer_data](#woocommerce_new_customer_data) + - [woocommerce_registration_errors](#woocommerce_registration_errors) + - [woocommerce_shared_settings](#-woocommerce_shared_settings) + - [woocommerce_shipping_package_name](#woocommerce_shipping_package_name) + - [woocommerce_show_page_title](#woocommerce_show_page_title) + - [woocommerce_store_api_disable_nonce_check](#woocommerce_store_api_disable_nonce_check) + - [woocommerce_store_api_product_quantity_limit](#woocommerce_store_api_product_quantity_limit) + - [woocommerce_store_api_product_quantity_{$value_type}](#woocommerce_store_api_product_quantity_-value_type) + - [woocommerce_variation_option_name](#woocommerce_variation_option_name) --- -## \_\_experimental_woocommerce_blocks_add_data_attributes_to_block +## __experimental_woocommerce_blocks_add_data_attributes_to_block + Filters the list of allowed Block Names @@ -49,17 +51,19 @@ apply_filters( '__experimental_woocommerce_blocks_add_data_attributes_to_block', ### Parameters -| Argument | Type | Description | -| -------------------- | ----- | ------------------- | -| \$allowed_namespaces | array | List of namespaces. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $allowed_namespaces | array | List of namespaces. | ### Source -- [BlockTypesController.php](../../src/BlockTypesController.php) + + - [BlockTypesController.php](../../src/BlockTypesController.php) --- -## \_\_experimental_woocommerce_blocks_add_data_attributes_to_namespace +## __experimental_woocommerce_blocks_add_data_attributes_to_namespace + Filters the list of allowed block namespaces. @@ -73,17 +77,19 @@ apply_filters( '__experimental_woocommerce_blocks_add_data_attributes_to_namespa ### Parameters -| Argument | Type | Description | -| -------------------- | ----- | ------------------- | -| \$allowed_namespaces | array | List of namespaces. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $allowed_namespaces | array | List of namespaces. | ### Source -- [BlockTypesController.php](../../src/BlockTypesController.php) + + - [BlockTypesController.php](../../src/BlockTypesController.php) --- -## \_\_experimental_woocommerce_blocks_payment_gateway_features_list +## __experimental_woocommerce_blocks_payment_gateway_features_list + Filter to control what features are available for each payment gateway. @@ -93,17 +99,20 @@ apply_filters( '__experimental_woocommerce_blocks_payment_gateway_features_list' ### Parameters -| Argument | Type | Description | -| ---------- | ------ | --------------------------- | -| \$features | array | List of supported features. | -| \$name | string | Gateway name. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $features | array | List of supported features. | +| $name | string | Gateway name. | ### Returns + `array` Updated list of supported features. ### Example +# Payment Gateway Featured List + ```php // The action callback function. function my_function_callback( $features, $gateway ) { @@ -117,106 +126,122 @@ function my_function_callback( $features, $gateway ) { add_filter( '__experimental_woocommerce_blocks_payment_gateway_features_list', 'my_function_callback', 10, 2 ); ``` + ### Source -- [Payments/Integrations/PayPal.php](../../src/Payments/Integrations/PayPal.php) + + - [Payments/Integrations/PayPal.php](../../src/Payments/Integrations/PayPal.php) --- ## woocommerce_add_cart_item + Filters the item being added to the cart. ```php apply_filters( 'woocommerce_add_cart_item', array $cart_item_data, string $cart_id ) ``` + **Note: Matches filter name in WooCommerce core.** ### Parameters -| Argument | Type | Description | -| ---------------- | ------ | ------------------------------------------------ | -| \$cart_item_data | array | Array of cart item data being added to the cart. | -| \$cart_id | string | Id of the item in the cart. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $cart_item_data | array | Array of cart item data being added to the cart. | +| $cart_id | string | Id of the item in the cart. | ### Returns + `array` Updated cart item data. ### Source -- [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php) + + - [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php) --- ## woocommerce_add_cart_item_data + Filter cart item data for add to cart requests. ```php apply_filters( 'woocommerce_add_cart_item_data', array $cart_item_data, integer $product_id, integer $variation_id, integer $quantity ) ``` + **Note: Matches filter name in WooCommerce core.** ### Parameters -| Argument | Type | Description | -| ---------------- | ------- | ---------------------------------------------- | -| \$cart_item_data | array | Array of other cart item data. | -| \$product_id | integer | ID of the product added to the cart. | -| \$variation_id | integer | Variation ID of the product added to the cart. | -| \$quantity | integer | Quantity of the item added to the cart. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $cart_item_data | array | Array of other cart item data. | +| $product_id | integer | ID of the product added to the cart. | +| $variation_id | integer | Variation ID of the product added to the cart. | +| $quantity | integer | Quantity of the item added to the cart. | ### Returns -`array` + +`array` ### Source -- [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php) + + - [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php) --- ## woocommerce_add_to_cart_sold_individually_quantity + Filter sold individually quantity for add to cart requests. ```php apply_filters( 'woocommerce_add_to_cart_sold_individually_quantity', integer $sold_individually_quantity, integer $quantity, integer $product_id, integer $variation_id, array $cart_item_data ) ``` + **Note: Matches filter name in WooCommerce core.** ### Parameters -| Argument | Type | Description | -| ---------------------------- | ------- | ---------------------------------------------- | -| \$sold_individually_quantity | integer | Defaults to 1. | -| \$quantity | integer | Quantity of the item added to the cart. | -| \$product_id | integer | ID of the product added to the cart. | -| \$variation_id | integer | Variation ID of the product added to the cart. | -| \$cart_item_data | array | Array of other cart item data. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $sold_individually_quantity | integer | Defaults to 1. | +| $quantity | integer | Quantity of the item added to the cart. | +| $product_id | integer | ID of the product added to the cart. | +| $variation_id | integer | Variation ID of the product added to the cart. | +| $cart_item_data | array | Array of other cart item data. | ### Returns -`integer` + +`integer` ### Source -- [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php) + + - [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php) --- ## ~~woocommerce_add_to_cart_validation~~ + Filters if an item being added to the cart passed validation checks. ```php apply_filters( 'woocommerce_add_to_cart_validation', boolean $passed_validation, integer $product_id, integer $quantity, integer $variation_id, array $variation ) ``` + **Deprecated: This hook is deprecated and will be removed** ### Description @@ -225,32 +250,36 @@ apply_filters( 'woocommerce_add_to_cart_validation', boolean $passed_validation, ### Parameters -| Argument | Type | Description | -| ------------------- | ------- | ------------------------------------- | -| \$passed_validation | boolean | True if the item passed validation. | -| \$product_id | integer | Product ID being validated. | -| \$quantity | integer | Quantity added to the cart. | -| \$variation_id | integer | Variation ID being added to the cart. | -| \$variation | array | Variation data. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $passed_validation | boolean | True if the item passed validation. | +| $product_id | integer | Product ID being validated. | +| $quantity | integer | Quantity added to the cart. | +| $variation_id | integer | Variation ID being added to the cart. | +| $variation | array | Variation data. | ### Returns -`boolean` + +`boolean` ### Source -- [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php) + + - [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php) --- ## woocommerce_adjust_non_base_location_prices + Filters if taxes should be removed from locations outside the store base location. ```php apply_filters( 'woocommerce_adjust_non_base_location_prices', boolean $adjust_non_base_location_prices ) ``` + **Note: Matches filter name in WooCommerce core.** ### Description @@ -259,91 +288,106 @@ apply_filters( 'woocommerce_adjust_non_base_location_prices', boolean $adjust_no ### Parameters -| Argument | Type | Description | -| --------------------------------- | ------- | ---------------- | -| \$adjust_non_base_location_prices | boolean | True by default. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $adjust_non_base_location_prices | boolean | True by default. | ### Returns -`boolean` + +`boolean` ### Source -- [StoreApi/Utilities/ProductQuery.php](../../src/StoreApi/Utilities/ProductQuery.php) + + - [StoreApi/Utilities/ProductQuery.php](../../src/StoreApi/Utilities/ProductQuery.php) --- ## woocommerce_admin_disabled + + + ```php apply_filters( 'woocommerce_admin_disabled' ) ``` ### Source -- [InboxNotifications.php](../../src/InboxNotifications.php) + + - [InboxNotifications.php](../../src/InboxNotifications.php) --- ## woocommerce_apply_individual_use_coupon + Filter coupons to remove when applying an individual use coupon. ```php apply_filters( 'woocommerce_apply_individual_use_coupon', array $coupons, \WC_Coupon $coupon, array $applied_coupons ) ``` + **Note: Matches filter name in WooCommerce core.** ### Parameters -| Argument | Type | Description | -| ----------------- | ---------- | ----------------------------------------------------- | -| \$coupons | array | Array of coupons to remove from the cart. | -| \$coupon | \WC_Coupon | Coupon object applied to the cart. | -| \$applied_coupons | array | Array of applied coupons already applied to the cart. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $coupons | array | Array of coupons to remove from the cart. | +| $coupon | \WC_Coupon | Coupon object applied to the cart. | +| $applied_coupons | array | Array of applied coupons already applied to the cart. | ### Returns -`array` + +`array` ### Source -- [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php) + + - [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php) --- ## woocommerce_apply_with_individual_use_coupon + Filters if a coupon can be applied alongside other individual use coupons. ```php apply_filters( 'woocommerce_apply_with_individual_use_coupon', boolean $apply_with_individual_use_coupon, \WC_Coupon $coupon, \WC_Coupon $individual_use_coupon, array $applied_coupons ) ``` + **Note: Matches filter name in WooCommerce core.** ### Parameters -| Argument | Type | Description | -| ---------------------------------- | ---------- | ----------------------------------------------------- | -| \$apply_with_individual_use_coupon | boolean | Defaults to false. | -| \$coupon | \WC_Coupon | Coupon object applied to the cart. | -| \$individual_use_coupon | \WC_Coupon | Individual use coupon already applied to the cart. | -| \$applied_coupons | array | Array of applied coupons already applied to the cart. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $apply_with_individual_use_coupon | boolean | Defaults to false. | +| $coupon | \WC_Coupon | Coupon object applied to the cart. | +| $individual_use_coupon | \WC_Coupon | Individual use coupon already applied to the cart. | +| $applied_coupons | array | Array of applied coupons already applied to the cart. | ### Returns -`boolean` + +`boolean` ### Source -- [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php) + + - [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php) --- ## woocommerce_blocks_product_grid_is_cacheable + Filters whether or not the product grid is cacheable. ```php @@ -352,23 +396,26 @@ apply_filters( 'woocommerce_blocks_product_grid_is_cacheable', boolean $is_cache ### Parameters -| Argument | Type | Description | -| -------------- | ------- | ---------------------------------------------------------- | -| \$is_cacheable | boolean | The list of script dependencies. | -| \$query_args | array | Query args for the products query passed to BlocksWpQuery. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $is_cacheable | boolean | The list of script dependencies. | +| $query_args | array | Query args for the products query passed to BlocksWpQuery. | ### Returns + `array` True to enable cache, false to disable cache. ### Source -- [BlockTypes/AbstractProductGrid.php](../../src/BlockTypes/AbstractProductGrid.php) + + - [BlockTypes/AbstractProductGrid.php](../../src/BlockTypes/AbstractProductGrid.php) --- ## woocommerce_blocks_product_grid_item_html + Filters the HTML for products in the grid. ```php @@ -377,24 +424,27 @@ apply_filters( 'woocommerce_blocks_product_grid_item_html', string $html, array ### Parameters -| Argument | Type | Description | -| --------- | ----------- | ------------------------------------ | -| \$html | string | Product grid item HTML. | -| \$data | array | Product data passed to the template. | -| \$product | \WC_Product | Product object. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $html | string | Product grid item HTML. | +| $data | array | Product data passed to the template. | +| $product | \WC_Product | Product object. | ### Returns + `string` Updated product grid item HTML. ### Source -- [BlockTypes/AbstractProductGrid.php](../../src/BlockTypes/AbstractProductGrid.php) + + - [BlockTypes/AbstractProductGrid.php](../../src/BlockTypes/AbstractProductGrid.php) --- ## woocommerce_blocks_register_script_dependencies + Filters the list of script dependencies. ```php @@ -403,77 +453,88 @@ apply_filters( 'woocommerce_blocks_register_script_dependencies', array $depende ### Parameters -| Argument | Type | Description | -| -------------- | ------ | -------------------------------- | -| \$dependencies | array | The list of script dependencies. | -| \$handle | string | The script's handle. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $dependencies | array | The list of script dependencies. | +| $handle | string | The script's handle. | ### Returns -`array` + +`array` ### Source -- [Assets/Api.php](../../src/Assets/Api.php) + + - [Assets/Api.php](../../src/Assets/Api.php) --- ## woocommerce_cart_contents_changed + Filters the entire cart contents when the cart changes. ```php apply_filters( 'woocommerce_cart_contents_changed', array $cart_contents ) ``` + **Note: Matches filter name in WooCommerce core.** ### Parameters -| Argument | Type | Description | -| --------------- | ----- | ------------------------ | -| \$cart_contents | array | Array of all cart items. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $cart_contents | array | Array of all cart items. | ### Returns + `array` Updated array of all cart items. ### Source -- [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php) + + - [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php) --- ## woocommerce_ga_disable_tracking + Filter to disable Google Analytics tracking. ```php apply_filters( 'woocommerce_ga_disable_tracking', boolean $disable_tracking ) ``` + **Note: Matches filter name in GA extension.** ### Parameters -| Argument | Type | Description | -| ------------------ | ------- | ----------------------------------- | -| \$disable_tracking | boolean | If true, tracking will be disabled. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $disable_tracking | boolean | If true, tracking will be disabled. | ### Source -- [Domain/Services/GoogleAnalytics.php](../../src/Domain/Services/GoogleAnalytics.php) + + - [Domain/Services/GoogleAnalytics.php](../../src/Domain/Services/GoogleAnalytics.php) --- ## woocommerce_get_item_data + Filters cart item data. ```php apply_filters( 'woocommerce_get_item_data', array $item_data, array $cart_item ) ``` + **Note: Matches filter name in WooCommerce core.** ### Description @@ -482,23 +543,26 @@ apply_filters( 'woocommerce_get_item_data', array $item_data, array $cart_item ) ### Parameters -| Argument | Type | Description | -| ----------- | ----- | --------------------------------- | -| \$item_data | array | Cart item data. Empty by default. | -| \$cart_item | array | Cart item array. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $item_data | array | Cart item data. Empty by default. | +| $cart_item | array | Cart item array. | ### Returns -`array` + +`array` ### Source -- [StoreApi/Schemas/V1/CartItemSchema.php](../../src/StoreApi/Schemas/V1/CartItemSchema.php) + + - [StoreApi/Schemas/V1/CartItemSchema.php](../../src/StoreApi/Schemas/V1/CartItemSchema.php) --- ## woocommerce_new_customer_data + Filters customer data before a customer account is registered. ```php @@ -511,28 +575,32 @@ apply_filters( 'woocommerce_new_customer_data', array $customer_data ) ### Parameters -| Argument | Type | Description | -| --------------- | ----- | --------------------------------- | -| \$customer_data | array | An array of customer (user) data. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $customer_data | array | An array of customer (user) data. | ### Returns -`array` + +`array` ### Source -- [StoreApi/Routes/V1/Checkout.php](../../src/StoreApi/Routes/V1/Checkout.php) + + - [StoreApi/Routes/V1/Checkout.php](../../src/StoreApi/Routes/V1/Checkout.php) --- ## woocommerce_registration_errors + Filters registration errors before a customer account is registered. ```php apply_filters( 'woocommerce_registration_errors', \WP_Error $errors, string $username, string $user_email ) ``` + **Note: Matches filter name in WooCommerce core.** ### Description @@ -541,30 +609,34 @@ apply_filters( 'woocommerce_registration_errors', \WP_Error $errors, string $use ### Parameters -| Argument | Type | Description | -| ------------ | --------- | ----------------------- | -| \$errors | \WP_Error | Error object. | -| \$username | string | Customer username. | -| \$user_email | string | Customer email address. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $errors | \WP_Error | Error object. | +| $username | string | Customer username. | +| $user_email | string | Customer email address. | ### Returns -`\WP_Error` + +`\WP_Error` ### Source -- [StoreApi/Routes/V1/Checkout.php](../../src/StoreApi/Routes/V1/Checkout.php) + + - [StoreApi/Routes/V1/Checkout.php](../../src/StoreApi/Routes/V1/Checkout.php) --- ## ~~woocommerce_shared_settings~~ + Filters the array of shared settings. ```php apply_filters( 'woocommerce_shared_settings', array $data ) ``` + **Deprecated: This hook is deprecated and will be removed** ### Description @@ -573,50 +645,57 @@ apply_filters( 'woocommerce_shared_settings', array $data ) ### Parameters -| Argument | Type | Description | -| -------- | ----- | -------------- | -| \$data | array | Settings data. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $data | array | Settings data. | ### Returns -`array` + +`array` ### Source -- [Assets/AssetDataRegistry.php](../../src/Assets/AssetDataRegistry.php) + + - [Assets/AssetDataRegistry.php](../../src/Assets/AssetDataRegistry.php) --- ## woocommerce_shipping_package_name + Filters the shipping package name. ```php apply_filters( 'woocommerce_shipping_package_name', string $shipping_package_name, string $package_id, array $package ) ``` + **Note: Matches filter name in WooCommerce core.** ### Parameters -| Argument | Type | Description | -| ----------------------- | ------ | ---------------------------------- | -| \$shipping_package_name | string | Shipping package name. | -| \$package_id | string | Shipping package ID. | -| \$package | array | Shipping package from WooCommerce. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $shipping_package_name | string | Shipping package name. | +| $package_id | string | Shipping package ID. | +| $package | array | Shipping package from WooCommerce. | ### Returns + `string` Shipping package name. ### Source -- [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php) + + - [StoreApi/Utilities/CartController.php](../../src/StoreApi/Utilities/CartController.php) --- ## woocommerce_show_page_title + We need to load the scripts here because when using block templates wp_head() gets run after the block template. As a result we are trying to enqueue required scripts before we have even registered them. ```php @@ -625,16 +704,19 @@ apply_filters( 'woocommerce_show_page_title' ) ### See -- + + - https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/5328#issuecomment-989013447 ### Source -- [BlockTypes/ClassicTemplate.php](../../src/BlockTypes/ClassicTemplate.php) + + - [BlockTypes/ClassicTemplate.php](../../src/BlockTypes/ClassicTemplate.php) --- ## woocommerce_store_api_disable_nonce_check + Filters the Store API nonce check. ```php @@ -647,22 +729,25 @@ apply_filters( 'woocommerce_store_api_disable_nonce_check', boolean $disable_non ### Parameters -| Argument | Type | Description | -| --------------------- | ------- | --------------------------------------- | -| \$disable_nonce_check | boolean | If true, nonce checks will be disabled. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $disable_nonce_check | boolean | If true, nonce checks will be disabled. | ### Returns -`boolean` + +`boolean` ### Source -- [StoreApi/Routes/V1/AbstractCartRoute.php](../../src/StoreApi/Routes/V1/AbstractCartRoute.php) + + - [StoreApi/Routes/V1/AbstractCartRoute.php](../../src/StoreApi/Routes/V1/AbstractCartRoute.php) --- ## woocommerce_store_api_product_quantity_limit + Filters the quantity limit for a product being added to the cart via the Store API. ```php @@ -675,22 +760,25 @@ apply_filters( 'woocommerce_store_api_product_quantity_limit', integer $quantity ### Parameters -| Argument | Type | Description | -| ---------------- | ----------- | ------------------------------------------------------------- | -| \$quantity_limit | integer | Quantity limit which defaults to 99 unless sold individually. | -| \$product | \WC_Product | Product instance. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $quantity_limit | integer | Quantity limit which defaults to 9999 unless sold individually. | +| $product | \WC_Product | Product instance. | ### Returns -`integer` + +`integer` ### Source -- [StoreApi/Utilities/QuantityLimits.php](../../src/StoreApi/Utilities/QuantityLimits.php) + + - [StoreApi/Utilities/QuantityLimits.php](../../src/StoreApi/Utilities/QuantityLimits.php) --- -## woocommerce*store_api_product_quantity*{\$value_type} +## woocommerce_store_api_product_quantity_{$value_type} + Filters the quantity minimum for a cart item in Store API. This allows extensions to control the minimum qty of items already within the cart. @@ -704,30 +792,34 @@ apply_filters( 'woocommerce_store_api_product_quantity_{$value_type}', mixed $va ### Parameters -| Argument | Type | Description | -| ----------- | ----------- | --------------------------------------------------------- | -| \$value | mixed | The value being filtered. | -| \$product | \WC_Product | The product object. | -| \$cart_item | array, null | The cart item if the product exists in the cart, or null. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $value | mixed | The value being filtered. | +| $product | \WC_Product | The product object. | +| $cart_item | array, null | The cart item if the product exists in the cart, or null. | ### Returns -`mixed` + +`mixed` ### Source -- [StoreApi/Utilities/QuantityLimits.php](../../src/StoreApi/Utilities/QuantityLimits.php) + + - [StoreApi/Utilities/QuantityLimits.php](../../src/StoreApi/Utilities/QuantityLimits.php) --- ## woocommerce_variation_option_name + Filters the variation option name. ```php apply_filters( 'woocommerce_variation_option_name', string $value, null $unused, string $taxonomy, \WC_Product $product ) ``` + **Note: Matches filter name in WooCommerce core.** ### Description @@ -736,29 +828,31 @@ apply_filters( 'woocommerce_variation_option_name', string $value, null $unused, ### Parameters -| Argument | Type | Description | -| ---------- | ----------- | ------------------------------------------------ | -| \$value | string | The name to display. | -| \$unused | null | Unused because this is not a variation taxonomy. | -| \$taxonomy | string | Taxonomy or product attribute name. | -| \$product | \WC_Product | Product data. | +| Argument | Type | Description | +| -------- | ---- | ----------- | +| $value | string | The name to display. | +| $unused | null | Unused because this is not a variation taxonomy. | +| $taxonomy | string | Taxonomy or product attribute name. | +| $product | \WC_Product | Product data. | ### Returns -`string` + +`string` ### Source -- [StoreApi/Schemas/V1/CartItemSchema.php](../../src/StoreApi/Schemas/V1/CartItemSchema.php) ---- + - [StoreApi/Schemas/V1/CartItemSchema.php](../../src/StoreApi/Schemas/V1/CartItemSchema.php) +--- --- [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/extensibility/filters.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/third-party-developers/extensibility/hooks/filters.md) + diff --git a/docs/third-party-developers/extensibility/rest-api/available-endpoints-to-extend.md b/docs/third-party-developers/extensibility/rest-api/available-endpoints-to-extend.md index 962526fd4..483e8b809 100644 --- a/docs/third-party-developers/extensibility/rest-api/available-endpoints-to-extend.md +++ b/docs/third-party-developers/extensibility/rest-api/available-endpoints-to-extend.md @@ -59,6 +59,7 @@ The main products endpoint is extensible via ExtendSchema. The data is available [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/extensibility/available-endpoints-to-extend.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/third-party-developers/extensibility/rest-api/available-endpoints-to-extend.md) + diff --git a/docs/third-party-developers/extensibility/rest-api/extend-rest-api-add-data.md b/docs/third-party-developers/extensibility/rest-api/extend-rest-api-add-data.md index 5bbc5cb77..94fdf02d5 100644 --- a/docs/third-party-developers/extensibility/rest-api/extend-rest-api-add-data.md +++ b/docs/third-party-developers/extensibility/rest-api/extend-rest-api-add-data.md @@ -334,6 +334,7 @@ You may wish to use our pre-existing Formatters to ensure your data is passed th [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/extensibility/extend-rest-api-add-data.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/third-party-developers/extensibility/rest-api/extend-rest-api-add-data.md) + diff --git a/docs/third-party-developers/extensibility/rest-api/extend-rest-api-formatters.md b/docs/third-party-developers/extensibility/rest-api/extend-rest-api-formatters.md index eaa117548..c3337397e 100644 --- a/docs/third-party-developers/extensibility/rest-api/extend-rest-api-formatters.md +++ b/docs/third-party-developers/extensibility/rest-api/extend-rest-api-formatters.md @@ -139,6 +139,7 @@ alert('bad script!') This “coffee” is very strong. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/extensibility/extend-rest-api-formatters.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/third-party-developers/extensibility/rest-api/extend-rest-api-formatters.md) + diff --git a/docs/third-party-developers/extensibility/rest-api/extend-rest-api-new-endpoint.md b/docs/third-party-developers/extensibility/rest-api/extend-rest-api-new-endpoint.md index 648114499..b715a1dda 100644 --- a/docs/third-party-developers/extensibility/rest-api/extend-rest-api-new-endpoint.md +++ b/docs/third-party-developers/extensibility/rest-api/extend-rest-api-new-endpoint.md @@ -46,6 +46,7 @@ Extending a new endpoint is usually half the work, you will need to receive this [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/extensibility/extend-rest-api-new-endpoint.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/third-party-developers/extensibility/rest-api/extend-rest-api-new-endpoint.md) + diff --git a/docs/third-party-developers/extensibility/rest-api/extend-rest-api-update-cart.md b/docs/third-party-developers/extensibility/rest-api/extend-rest-api-update-cart.md index 818aaaa02..0a87eb0e4 100644 --- a/docs/third-party-developers/extensibility/rest-api/extend-rest-api-update-cart.md +++ b/docs/third-party-developers/extensibility/rest-api/extend-rest-api-update-cart.md @@ -188,6 +188,7 @@ Now that this is registered, when the button is pressed, the `cart/extensions` e [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/extensibility/extend-rest-api-update-cart.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/third-party-developers/extensibility/rest-api/extend-rest-api-update-cart.md) + diff --git a/packages/checkout/README.md b/packages/checkout/README.md index d88518a2d..bac61f7aa 100644 --- a/packages/checkout/README.md +++ b/packages/checkout/README.md @@ -59,6 +59,7 @@ This package contains the following directories. Navigate to a directory for mor [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./packages/checkout/README.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./packages/checkout/README.md) + diff --git a/packages/checkout/blocks-registry/README.md b/packages/checkout/blocks-registry/README.md index bf0f89cfc..6dad7920e 100644 --- a/packages/checkout/blocks-registry/README.md +++ b/packages/checkout/blocks-registry/README.md @@ -209,6 +209,7 @@ const isValid = hasInnerBlocks( 'woocommerce/checkout-totals-block' ); // true [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./packages/checkout/blocks-registry/README.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./packages/checkout/blocks-registry/README.md) + diff --git a/packages/checkout/components/README.md b/packages/checkout/components/README.md index 1b22a69e0..305ebeb19 100644 --- a/packages/checkout/components/README.md +++ b/packages/checkout/components/README.md @@ -26,6 +26,7 @@ These components are here so they can be consumed by extensions. [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./packages/checkout/components/README.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./packages/checkout/components/README.md) + diff --git a/packages/checkout/filter-registry/README.md b/packages/checkout/filter-registry/README.md index 26e3b70b1..d03b0572d 100644 --- a/packages/checkout/filter-registry/README.md +++ b/packages/checkout/filter-registry/README.md @@ -129,6 +129,7 @@ Filters are implemented throughout the Mini Cart, Cart and Checkout Blocks, as w [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./packages/checkout/filter-registry/README.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./packages/checkout/filter-registry/README.md) + diff --git a/packages/checkout/slot/README.md b/packages/checkout/slot/README.md index 3b74fb8fe..4b3322648 100644 --- a/packages/checkout/slot/README.md +++ b/packages/checkout/slot/README.md @@ -189,6 +189,7 @@ Slot Fills are implemented throughout the Cart and Checkout Blocks, as well as s [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./packages/checkout/slot/README.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./packages/checkout/slot/README.md) + diff --git a/packages/checkout/utils/README.md b/packages/checkout/utils/README.md index 0d60ffbfe..a6bb6be57 100644 --- a/packages/checkout/utils/README.md +++ b/packages/checkout/utils/README.md @@ -78,6 +78,7 @@ What value must contain. If this is not found within `value`, and error will be [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./packages/checkout/utils/README.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./packages/checkout/utils/README.md) + diff --git a/src/StoreApi/README.md b/src/StoreApi/README.md index b4760294b..5fa712497 100644 --- a/src/StoreApi/README.md +++ b/src/StoreApi/README.md @@ -161,6 +161,7 @@ If the data is sensitive (for example, a core setting that should be private), o [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./src/StoreApi/README.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./src/StoreApi/README.md) + diff --git a/src/StoreApi/Routes/V1/Checkout.php b/src/StoreApi/Routes/V1/Checkout.php index 2fb34161c..c7dac9c02 100644 --- a/src/StoreApi/Routes/V1/Checkout.php +++ b/src/StoreApi/Routes/V1/Checkout.php @@ -411,6 +411,14 @@ private function update_customer_from_request( \WP_REST_Request $request ) { } } + /** + * Fires when the Checkout Block/Store API updates a customer from the API request data. + * + * @param \WC_Customer $customer Customer object. + * @param \WP_REST_Request $request Full details about the request. + */ + do_action( 'woocommerce_store_api_checkout_update_customer_from_request', $customer, $request ); + $customer->save(); } diff --git a/src/StoreApi/docs/cart-coupons.md b/src/StoreApi/docs/cart-coupons.md index 4605d5086..a8b1f8843 100644 --- a/src/StoreApi/docs/cart-coupons.md +++ b/src/StoreApi/docs/cart-coupons.md @@ -168,6 +168,7 @@ curl --request DELETE https://example-store.com/wp-json/wc/store/v1/cart/coupons [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./src/StoreApi/docs/cart-coupons.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./src/StoreApi/docs/cart-coupons.md) + diff --git a/src/StoreApi/docs/cart-items.md b/src/StoreApi/docs/cart-items.md index 3d54e4700..9d484d697 100644 --- a/src/StoreApi/docs/cart-items.md +++ b/src/StoreApi/docs/cart-items.md @@ -364,6 +364,7 @@ curl --request DELETE https://example-store.com/wp-json/wc/store/v1/cart/items [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./src/StoreApi/docs/cart-items.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./src/StoreApi/docs/cart-items.md) + diff --git a/src/StoreApi/docs/cart.md b/src/StoreApi/docs/cart.md index 9c077bab8..dc0eca053 100644 --- a/src/StoreApi/docs/cart.md +++ b/src/StoreApi/docs/cart.md @@ -475,6 +475,7 @@ Returns the full [Cart Response](#cart-response) on success, or an [Error Respon [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./src/StoreApi/docs/cart.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./src/StoreApi/docs/cart.md) + diff --git a/src/StoreApi/docs/checkout.md b/src/StoreApi/docs/checkout.md index 578a31463..db6bf78bb 100644 --- a/src/StoreApi/docs/checkout.md +++ b/src/StoreApi/docs/checkout.md @@ -141,6 +141,7 @@ curl --header "Nonce: 12345" --request POST https://example-store.com/wp-json/wc [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./src/StoreApi/docs/checkout.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./src/StoreApi/docs/checkout.md) + diff --git a/src/StoreApi/docs/guiding-principles.md b/src/StoreApi/docs/guiding-principles.md index ec301ac04..a523b67e5 100644 --- a/src/StoreApi/docs/guiding-principles.md +++ b/src/StoreApi/docs/guiding-principles.md @@ -133,10 +133,11 @@ The version will not increase for bug fixes unless the scope of the bug causes a --- +--- [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./src/StoreApi/docs/guiding-principles.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./src/StoreApi/docs/guiding-principles.md) + diff --git a/src/StoreApi/docs/nonce-tokens.md b/src/StoreApi/docs/nonce-tokens.md index 50fb0a0c8..8ef6c96e0 100644 --- a/src/StoreApi/docs/nonce-tokens.md +++ b/src/StoreApi/docs/nonce-tokens.md @@ -53,6 +53,7 @@ NOTE: This should only be done on development sites where security is not import [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./src/StoreApi/docs/nonce-tokens.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./src/StoreApi/docs/nonce-tokens.md) + diff --git a/src/StoreApi/docs/product-attribute-terms.md b/src/StoreApi/docs/product-attribute-terms.md index 87edd2984..efb4c0555 100644 --- a/src/StoreApi/docs/product-attribute-terms.md +++ b/src/StoreApi/docs/product-attribute-terms.md @@ -40,6 +40,7 @@ curl "https://example-store.com/wp-json/wc/store/v1/products/attributes/1/terms" [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./src/StoreApi/docs/product-attribute-terms.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./src/StoreApi/docs/product-attribute-terms.md) + diff --git a/src/StoreApi/docs/product-attributes.md b/src/StoreApi/docs/product-attributes.md index dadc83b27..04e3c36d9 100644 --- a/src/StoreApi/docs/product-attributes.md +++ b/src/StoreApi/docs/product-attributes.md @@ -75,6 +75,7 @@ curl "https://example-store.com/wp-json/wc/store/v1/products/attributes/1" [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./src/StoreApi/docs/product-attributes.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./src/StoreApi/docs/product-attributes.md) + diff --git a/src/StoreApi/docs/product-collection-data.md b/src/StoreApi/docs/product-collection-data.md index f59e59478..1f1c93e25 100644 --- a/src/StoreApi/docs/product-collection-data.md +++ b/src/StoreApi/docs/product-collection-data.md @@ -63,6 +63,7 @@ curl "https://example-store.com/wp-json/wc/store/v1/products/collection-data?cal [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./src/StoreApi/docs/product-collection-data.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./src/StoreApi/docs/product-collection-data.md) + diff --git a/src/StoreApi/docs/products.md b/src/StoreApi/docs/products.md index d91fff43f..6e5eeeee2 100644 --- a/src/StoreApi/docs/products.md +++ b/src/StoreApi/docs/products.md @@ -197,6 +197,7 @@ curl "https://example-store.com/wp-json/wc/store/v1/products/34" [We're hiring!](https://woocommerce.com/careers/) Come work with us! -๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./src/StoreApi/docs/products.md) +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./src/StoreApi/docs/products.md) + From 28c2a6829f7d726a820a88e87934dff12c2ce509 Mon Sep 17 00:00:00 2001 From: Tung Du Date: Mon, 1 Aug 2022 19:00:59 +0700 Subject: [PATCH 013/164] Fix: Replace DropdownSelector with FormTokenField from Gutenberg (#6647) --- .../components/dropdown-selector/index.js | 231 ------------------ .../dropdown-selector/input-wrapper.js | 13 - .../components/dropdown-selector/input.js | 36 --- .../base/components/dropdown-selector/menu.js | 59 ----- .../dropdown-selector/selected-chip.js | 26 -- .../dropdown-selector/selected-value.js | 57 ----- .../components/dropdown-selector/style.scss | 176 ------------- .../components/form-token-field/index.tsx | 66 +++++ .../form-token-field/stories/index.tsx | 41 ++++ .../components/form-token-field/style.scss | 91 +++++++ .../components/form-token-field/vendor.scss | 12 + assets/js/blocks/attribute-filter/block.tsx | 179 +++++++------- assets/js/blocks/attribute-filter/index.tsx | 2 +- assets/js/blocks/attribute-filter/preview.tsx | 6 + assets/js/blocks/attribute-filter/style.scss | 18 +- assets/js/blocks/attribute-filter/types.ts | 2 + assets/js/blocks/attribute-filter/utils.ts | 8 + bin/webpack-entries.js | 2 + 18 files changed, 334 insertions(+), 691 deletions(-) delete mode 100644 assets/js/base/components/dropdown-selector/index.js delete mode 100644 assets/js/base/components/dropdown-selector/input-wrapper.js delete mode 100644 assets/js/base/components/dropdown-selector/input.js delete mode 100644 assets/js/base/components/dropdown-selector/menu.js delete mode 100644 assets/js/base/components/dropdown-selector/selected-chip.js delete mode 100644 assets/js/base/components/dropdown-selector/selected-value.js delete mode 100644 assets/js/base/components/dropdown-selector/style.scss create mode 100644 assets/js/base/components/form-token-field/index.tsx create mode 100644 assets/js/base/components/form-token-field/stories/index.tsx create mode 100644 assets/js/base/components/form-token-field/style.scss create mode 100644 assets/js/base/components/form-token-field/vendor.scss diff --git a/assets/js/base/components/dropdown-selector/index.js b/assets/js/base/components/dropdown-selector/index.js deleted file mode 100644 index 1a6080106..000000000 --- a/assets/js/base/components/dropdown-selector/index.js +++ /dev/null @@ -1,231 +0,0 @@ -/** - * External dependencies - */ -import PropTypes from 'prop-types'; -import { useCallback, useRef } from '@wordpress/element'; -import classNames from 'classnames'; -import Downshift from 'downshift'; -import { __, sprintf } from '@wordpress/i18n'; - -/** - * Internal dependencies - */ -import DropdownSelectorInput from './input'; -import DropdownSelectorInputWrapper from './input-wrapper'; -import DropdownSelectorMenu from './menu'; -import DropdownSelectorSelectedChip from './selected-chip'; -import DropdownSelectorSelectedValue from './selected-value'; -import './style.scss'; - -/** - * Component used to show an input box with a dropdown with suggestions. - * - * @param {Object} props Incoming props for the component. - * @param {string} props.attributeLabel Label for the attributes. - * @param {string} props.className CSS class used. - * @param {import('react').CSSProperties} props.style CSS style object used. - * @param {Array} props.checked Which items are checked. - * @param {string} props.inputLabel Label used for the input. - * @param {boolean} props.isDisabled Whether the input is disabled or not. - * @param {boolean} props.isLoading Whether the input is loading. - * @param {boolean} props.multiple Whether multi-select is allowed. - * @param {function():any} props.onChange Function to be called when onChange event fires. - * @param {Array} props.options The option values to show in the select. - * @param {boolean} [props.isCaseSensitive=false] Whether the dropdown search should be case-sensitive. - */ -const DropdownSelector = ( { - attributeLabel = '', - className, - style = {}, - checked = [], - inputLabel = '', - isDisabled = false, - isLoading = false, - multiple = false, - onChange = () => {}, - options = [], - isCaseSensitive = false, -} ) => { - const inputRef = useRef( null ); - - const classes = classNames( - className, - 'wc-block-dropdown-selector', - 'wc-block-components-dropdown-selector', - { - 'is-disabled': isDisabled, - 'is-loading': isLoading, - } - ); - - /** - * State reducer for the downshift component. - * See: https://github.com/downshift-js/downshift#statereducer - */ - const stateReducer = useCallback( - ( state, changes ) => { - switch ( changes.type ) { - case Downshift.stateChangeTypes.keyDownEnter: - case Downshift.stateChangeTypes.clickItem: - return { - ...changes, - highlightedIndex: state.highlightedIndex, - isOpen: multiple, - inputValue: '', - }; - case Downshift.stateChangeTypes.blurInput: - case Downshift.stateChangeTypes.mouseUp: - return { - ...changes, - inputValue: state.inputValue, - }; - default: - return changes; - } - }, - [ multiple ] - ); - - return ( - - { ( { - getInputProps, - getItemProps, - getLabelProps, - getMenuProps, - highlightedIndex, - inputValue, - isOpen, - openMenu, - } ) => ( -
0, - 'is-open': isOpen, - } ) } - style={ style } - > - { /* eslint-disable-next-line jsx-a11y/label-has-for */ } - - inputRef.current.focus() } - > - { checked.map( ( value ) => { - const option = options.find( - ( o ) => o.value === value - ); - - if ( ! option ) { - return null; - } - - const onRemoveItem = ( val ) => { - onChange( val ); - inputRef.current.focus(); - }; - - return multiple ? ( - - ) : ( - inputRef.current.focus() } - onRemoveItem={ onRemoveItem } - option={ option } - /> - ); - } ) } - { - onChange( val ); - inputRef.current.focus(); - } } - placeholder={ - checked.length > 0 && multiple - ? null - : sprintf( - /* translators: %s attribute name. */ - __( - 'Any %s', - 'woo-gutenberg-products-block' - ), - attributeLabel - ) - } - tabIndex={ - // When it's a single selector and there is one element selected, - // we make the input non-focusable with the keyboard because it's - // visually hidden. The input is still rendered, though, because it - // must be possible to focus it when pressing the select value chip. - ! multiple && checked.length > 0 ? '-1' : '0' - } - value={ inputValue } - /> - - { isOpen && ! isDisabled && ( - { - let optionName = option.name; - let nameQuery = inputValue?.trim(); - if ( ! isCaseSensitive ) { - optionName = optionName.toLowerCase(); - nameQuery = nameQuery?.toLowerCase(); - } - return ( - ! nameQuery || - optionName.includes( nameQuery ) - ); - } ) } - /> - ) } -
- ) } -
- ); -}; - -DropdownSelector.propTypes = { - attributeLabel: PropTypes.string, - checked: PropTypes.array, - className: PropTypes.string, - inputLabel: PropTypes.string, - isDisabled: PropTypes.bool, - isLoading: PropTypes.bool, - limit: PropTypes.number, - onChange: PropTypes.func, - options: PropTypes.arrayOf( - PropTypes.shape( { - label: PropTypes.node.isRequired, - value: PropTypes.string.isRequired, - } ) - ), - isCaseSensitive: PropTypes.bool, -}; - -export default DropdownSelector; diff --git a/assets/js/base/components/dropdown-selector/input-wrapper.js b/assets/js/base/components/dropdown-selector/input-wrapper.js deleted file mode 100644 index 4391c1e9b..000000000 --- a/assets/js/base/components/dropdown-selector/input-wrapper.js +++ /dev/null @@ -1,13 +0,0 @@ -const DropdownSelectorInputWrapper = ( { children, onClick } ) => { - return ( - /* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */ -
- { children } -
- ); -}; - -export default DropdownSelectorInputWrapper; diff --git a/assets/js/base/components/dropdown-selector/input.js b/assets/js/base/components/dropdown-selector/input.js deleted file mode 100644 index abb3cd731..000000000 --- a/assets/js/base/components/dropdown-selector/input.js +++ /dev/null @@ -1,36 +0,0 @@ -const DropdownSelectorInput = ( { - checked, - getInputProps, - inputRef, - isDisabled, - onFocus, - onRemoveItem, - placeholder, - tabIndex, - value, -} ) => { - return ( - 0 - ) { - onRemoveItem( checked[ checked.length - 1 ] ); - } - }, - placeholder, - tabIndex, - } ) } - /> - ); -}; - -export default DropdownSelectorInput; diff --git a/assets/js/base/components/dropdown-selector/menu.js b/assets/js/base/components/dropdown-selector/menu.js deleted file mode 100644 index 43c4c25be..000000000 --- a/assets/js/base/components/dropdown-selector/menu.js +++ /dev/null @@ -1,59 +0,0 @@ -/** - * External dependencies - */ -import { __, sprintf } from '@wordpress/i18n'; -import classNames from 'classnames'; - -const DropdownSelectorMenu = ( { - checked, - getItemProps, - getMenuProps, - highlightedIndex, - options, -} ) => { - return ( -
    - { options.map( ( option, index ) => { - const selected = checked.includes( option.value ); - return ( - // eslint-disable-next-line react/jsx-key -
  • - { option.label } -
  • - ); - } ) } -
- ); -}; - -export default DropdownSelectorMenu; diff --git a/assets/js/base/components/dropdown-selector/selected-chip.js b/assets/js/base/components/dropdown-selector/selected-chip.js deleted file mode 100644 index 351045129..000000000 --- a/assets/js/base/components/dropdown-selector/selected-chip.js +++ /dev/null @@ -1,26 +0,0 @@ -/** - * External dependencies - */ -import { __, sprintf } from '@wordpress/i18n'; -import { RemovableChip } from '@woocommerce/base-components/chip'; - -const DropdownSelectorSelectedChip = ( { onRemoveItem, option } ) => { - return ( - { - onRemoveItem( option.value ); - } } - ariaLabel={ sprintf( - /* translators: %s is referring to the filter option being removed. */ - __( 'Remove %s filter', 'woo-gutenberg-products-block' ), - option.name - ) } - text={ option.label } - radius="large" - /> - ); -}; - -export default DropdownSelectorSelectedChip; diff --git a/assets/js/base/components/dropdown-selector/selected-value.js b/assets/js/base/components/dropdown-selector/selected-value.js deleted file mode 100644 index 35c341461..000000000 --- a/assets/js/base/components/dropdown-selector/selected-value.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * External dependencies - */ -import { __, sprintf } from '@wordpress/i18n'; -import { useEffect, useRef } from '@wordpress/element'; -import { Icon, closeSmall } from '@wordpress/icons'; - -const DropdownSelectorSelectedValue = ( { onClick, onRemoveItem, option } ) => { - const labelRef = useRef( null ); - - useEffect( () => { - labelRef.current.focus(); - }, [ labelRef ] ); - - return ( -
- - -
- ); -}; - -export default DropdownSelectorSelectedValue; diff --git a/assets/js/base/components/dropdown-selector/style.scss b/assets/js/base/components/dropdown-selector/style.scss deleted file mode 100644 index 8e314e348..000000000 --- a/assets/js/base/components/dropdown-selector/style.scss +++ /dev/null @@ -1,176 +0,0 @@ -// 18px is the minimum input field line-height and 14px is the font-size of -// the drop down selector elements. - -$dropdown-selector-line-height: math.div(18, 14); - -.wc-block-components-dropdown-selector { - max-width: 300px; - position: relative; - width: 100%; -} - -.wc-block-components-dropdown-selector__input-wrapper { - background: #fff; - border: 1px solid $input-border-gray; - color: $input-text-active; - align-items: center; - border-radius: 4px; - cursor: text; - display: flex; - flex-wrap: wrap; - padding: 2px $gap-smaller; - - .is-disabled & { - background-color: $gray-200; - } - - .is-multiple.has-checked > & { - padding: 2px $gap-smallest; - } - - .is-open > & { - border-radius: 4px 4px 0 0; - } -} - -.wc-block-components-dropdown-selector__input { - @include font-size(small); - line-height: $dropdown-selector-line-height; - margin: em($gap-small * 0.25) 0; - min-width: 0; - padding: em($gap-smallest * 0.75) 0 em($gap-smallest * 0.75); - - .is-single & { - width: 100%; - - &:hover, - &:focus, - &:active { - outline: 0; - } - } - - .is-single.has-checked.is-open & { - margin-bottom: 1.5px; - margin-top: 1.5px; - } - - .is-single.has-checked:not(.is-open) & { - @include visually-hidden(); - // Fixes an issue in Firefox that `flex: wrap` in the container was making - // this element to still occupy one line. - position: absolute; - } - - .is-multiple & { - flex: 1; - min-width: 0; - } -} - -// Visually hide the input -.is-single .wc-block-components-dropdown-selector__input:first-child, -.is-multiple .wc-block-components-dropdown-selector__input { - background: transparent; - border: 0; - - &:hover, - &:focus, - &:active { - outline: 0; - } -} - -.wc-block-components-dropdown-selector { - // Reset - ); }; diff --git a/assets/js/editor-components/compatibility-notices/cart-checkout-compatibility-notice.tsx b/assets/js/editor-components/compatibility-notices/cart-checkout-compatibility-notice.tsx index 69a0ffde2..9c71e98fb 100644 --- a/assets/js/editor-components/compatibility-notices/cart-checkout-compatibility-notice.tsx +++ b/assets/js/editor-components/compatibility-notices/cart-checkout-compatibility-notice.tsx @@ -14,7 +14,7 @@ import { useCompatibilityNotice } from './use-compatibility-notice'; import WooImage from './woo-image'; interface CartCheckoutCompatibilityNoticeProps { - blockName: 'cart' | 'checkout' | 'mini-cart'; + blockName: 'cart' | 'checkout'; } export function CartCheckoutCompatibilityNotice( { diff --git a/tests/e2e/specs/backend/mini-cart.test.js b/tests/e2e/specs/backend/mini-cart.test.js index 73bbe3729..1e496e2f2 100644 --- a/tests/e2e/specs/backend/mini-cart.test.js +++ b/tests/e2e/specs/backend/mini-cart.test.js @@ -19,7 +19,6 @@ import { goToSiteEditor, useTheme, waitForCanvas, - addBlockToFSEArea, } from '../../utils.js'; const block = { @@ -30,8 +29,6 @@ const block = { insertButton: "//button//span[text()='Mini Cart']", insertButtonDisabled: "//button[@aria-disabled]//span[text()='Mini Cart']", - compatibilityNoticeTitle: - "//h1[contains(text(), 'Compatibility notice')]", }, }; @@ -40,14 +37,6 @@ if ( process.env.WOOCOMMERCE_BLOCKS_PHASE < 3 ) { test.only( `skipping ${ block.name } tests`, () => {} ); } -const removeDismissedCompatibilityNoticesFromLocalStorage = async () => { - await page.evaluate( () => { - window.localStorage.removeItem( - 'wc-blocks_dismissed_compatibility_notices' - ); - } ); -}; - const addBlockToWidgetsArea = async () => { await closeModalIfExists(); await openWidgetsEditorBlockInserter(); @@ -58,10 +47,6 @@ const addBlockToWidgetsArea = async () => { describe( `${ block.name } Block`, () => { describe( 'in widget editor', () => { - beforeAll( async () => { - await removeDismissedCompatibilityNoticesFromLocalStorage(); - } ); - beforeEach( async () => { await openWidgetEditor(); } ); @@ -73,28 +58,6 @@ describe( `${ block.name } Block`, () => { ); } ); - it( 'the compatibility notice appears', async () => { - await addBlockToWidgetsArea(); - const compatibilityNoticeTitle = await page.$x( - block.selectors.compatibilityNoticeTitle - ); - expect( compatibilityNoticeTitle.length ).toBe( 1 ); - } ); - - it( "after the compatibility notice is dismissed, it doesn't appear again", async () => { - await page.evaluate( () => { - window.localStorage.setItem( - 'wc-blocks_dismissed_compatibility_notices', - '["mini-cart"]' - ); - } ); - await addBlockToWidgetsArea(); - const compatibilityNoticeTitle = await page.$x( - block.selectors.compatibilityNoticeTitle - ); - expect( compatibilityNoticeTitle.length ).toBe( 0 ); - } ); - it( 'can only be inserted once', async () => { await addBlockToWidgetsArea(); const miniCartButton = await page.$x( @@ -113,7 +76,6 @@ describe( `${ block.name } Block`, () => { await goToSiteEditor( process.env.GUTENBERG_EDITOR_CONTEXT || 'core' ); - await removeDismissedCompatibilityNoticesFromLocalStorage(); await waitForCanvas(); } ); @@ -122,28 +84,6 @@ describe( `${ block.name } Block`, () => { await expect( canvas() ).toMatchElement( block.class ); } ); - it( 'the compatibility notice appears', async () => { - await addBlockToFSEArea( block.name ); - const compatibilityNoticeTitle = await page.$x( - block.selectors.compatibilityNoticeTitle - ); - expect( compatibilityNoticeTitle.length ).toBe( 1 ); - } ); - - it( "after the compatibility notice is dismissed, it doesn't appear again", async () => { - await page.evaluate( () => { - window.localStorage.setItem( - 'wc-blocks_dismissed_compatibility_notices', - '["mini-cart"]' - ); - } ); - await addBlockToFSEArea( block.name ); - const compatibilityNoticeTitle = await page.$x( - block.selectors.compatibilityNoticeTitle - ); - expect( compatibilityNoticeTitle.length ).toBe( 0 ); - } ); - it( 'can only be inserted once', async () => { await insertBlock( block.name ); await searchForFSEBlock( block.name ); From fa30e5fe1cf9ff4e0a7c6074fec3521d6c17723c Mon Sep 17 00:00:00 2001 From: github-actions Date: Mon, 1 Aug 2022 16:04:11 +0000 Subject: [PATCH 017/164] Empty commit for release pull request From 218024b7a04b3c36c865f173936e0e0452ff81cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Albert=20Juh=C3=A9=20Lluveras?= Date: Mon, 1 Aug 2022 18:12:09 +0200 Subject: [PATCH 018/164] Update 8.2.0 changelog --- readme.txt | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/readme.txt b/readme.txt index a8438b3fc..e69e1a1ad 100644 --- a/readme.txt +++ b/readme.txt @@ -86,6 +86,30 @@ Release and roadmap notes available on the [WooCommerce Developers Blog](https:/ == Changelog == += 8.2.0 - 2022-08-02 = + +#### Enhancements + +- Add update_customer_from_request action to Checkout flow. ([6792](https://github.com/woocommerce/woocommerce-blocks/pull/6792)) +- Update: New block icon for the Mini Cart block. ([6784](https://github.com/woocommerce/woocommerce-blocks/pull/6784)) +- Introduce `productNameFormat` filter for cart items in Cart and Checkout blocks. ([4993](https://github.com/woocommerce/woocommerce-blocks/pull/4993)) + +#### Bug Fixes + +- Fix proceed to checkout button not working for custom links. ([6804](https://github.com/woocommerce/woocommerce-blocks/pull/6804)) +- Mini Cart block: Remove the compatibility notice. ([6803](https://github.com/woocommerce/woocommerce-blocks/pull/6803)) +- Fix: Render the product attribute archive page using the `archive-product` template. ([6776](https://github.com/woocommerce/woocommerce-blocks/pull/6776)) +- Ensure using the "Use shipping as billing" checkbox in the Checkout Block correctly syncs the addresses when making the order. ([6773](https://github.com/woocommerce/woocommerce-blocks/pull/6773)) +- Ensure shipping package names are shown correctly in the Checkout Block when a cart contains multiple packages. ([6753](https://github.com/woocommerce/woocommerce-blocks/pull/6753)) +- Select the correct inner button for the "Featured Item" button to update its URL. ([6741](https://github.com/woocommerce/woocommerce-blocks/pull/6741)) +- Fix the spacing between separate shipping packages in the Checkout Block. ([6740](https://github.com/woocommerce/woocommerce-blocks/pull/6740)) +- Fix missing translations in the inspector (editor mode). ([6737](https://github.com/woocommerce/woocommerce-blocks/pull/6737)) +- Fix: Navigate through Mini Cart contents with keyboard. ([6731](https://github.com/woocommerce/woocommerce-blocks/pull/6731)) +- Fix: Ensure add to cart notices are displayed on pages containing the Mini Cart block. ([6728](https://github.com/woocommerce/woocommerce-blocks/pull/6728)) +- Fix Cart an d Checkout blocks compatiblity issue with wordpress.com in which blocks wouldn't load in the editor. ([6718](https://github.com/woocommerce/woocommerce-blocks/pull/6718)) +- N/A. ([6716](https://github.com/woocommerce/woocommerce-blocks/pull/6716)) +- Fixes an issue where search lists would not preserve the case of the original item. ([6551](https://github.com/woocommerce/woocommerce-blocks/pull/6551)) + = 8.1.0 - 2022-07-18 = #### Enhancements From 85c42cc1056c0b4bead1eead9e840cf39e766191 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Albert=20Juh=C3=A9=20Lluveras?= Date: Mon, 1 Aug 2022 18:38:46 +0200 Subject: [PATCH 019/164] Add 8.2.0 testing steps --- .../testing/releases/820.md | 155 ++++++++++++++++++ .../testing/releases/README.md | 1 + 2 files changed, 156 insertions(+) create mode 100644 docs/internal-developers/testing/releases/820.md diff --git a/docs/internal-developers/testing/releases/820.md b/docs/internal-developers/testing/releases/820.md new file mode 100644 index 000000000..532f4639a --- /dev/null +++ b/docs/internal-developers/testing/releases/820.md @@ -0,0 +1,155 @@ +# Testing notes and ZIP for release 8.2.0 + +Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github.com/woocommerce/woocommerce-blocks/files/9235482/woocommerce-gutenberg-products-block.zip) + +## Feature plugin and package inclusion in WooCommerce + +### Remove compatibility notice for Mini Cart block ([6803](https://github.com/woocommerce/woocommerce-blocks/pull/6803)) + +0. Make sure you have a blocks theme active (like Twenty Twenty-Two). +1. Clear the local storage of your browser. +2. Add the Mini Cart block to the header template part. +3. Don't see compatibility notice. +4. Create a new page > Add the Cart block to that page. +5. See the compatibility notice as normal. + +### Add new icon for mini cart block ([6784](https://github.com/woocommerce/woocommerce-blocks/pull/6784)) + +1. Make sure you have a blocks theme active (like Twenty Twenty-Two). +2. Navigate to **Appearance > Editor (Beta)** and add a Mini Cart block somewhere in your site. +3. Select the Mini Cart block in the editor and confirm the icon in the inserter and toolbar reflect the changes. + +| Before | After | +| ------ | ----- | +| ![CleanShot 2022-07-28 at 14 57 58](https://user-images.githubusercontent.com/481776/181622493-d618649c-e9ee-4649-9e10-a2aed6737fc5.png) | ![CleanShot 2022-07-28 at 15 31 41](https://user-images.githubusercontent.com/481776/181622516-4bade22f-944a-488e-aacc-6094afa97efe.png) | + +### Fix: Replace DropdownSelector with FormTokenField from Gutenberg ([6647](https://github.com/woocommerce/woocommerce-blocks/pull/6647)) + +1. Add the Filter Products by Attribute block and the All Products block into a post or page. +2. Change the display type bof Filter Products by Attribute to `Dropdown`. +3. Ensure the block functions normally. +4. Enable the Filter button, and ensure the block functions normally. + +### Use the archive-product template to render product attributes pages ([6776](https://github.com/woocommerce/woocommerce-blocks/pull/6776)) + +1. Make sure you have a blocks theme active (like Twenty Twenty-Two). +2. Navigate to `Products` > `Attributes` and edit an existing one or create a new one. +3. Click the `Enable Archives` option and save, go back. +4. Click `Configure terms` next to your attribute. +5. Hover over one of the terms and click the `View` link of one of the attributes. +6. Check that the page is rendered with a header, a footer, and using a product grid. + +| Before | After | +| ------ | ----- | +| Screenshot 2022-07-27 at 16 38 51 | ![Screenshot 2022-07-27 at 16 38 41](https://user-images.githubusercontent.com/186112/181275933-3b712c54-1c6f-4578-8a25-659052cde175.png)| + +### All Products block: Migrate to block.json ([6754](https://github.com/woocommerce/woocommerce-blocks/pull/6754)) + +1. Add the All Products block to a post or page. +2. Verify it works as before in the editor and the frontend and there are no errors. + +### Start using block.json and convert to TS the Product by Category block ([6680](https://github.com/woocommerce/woocommerce-blocks/pull/6680)) + +Test that there are no regressions compared with the previous `Products by Category` block version. + +1. Create a page and add a `Products by Category` block. +2. Save the page and check it renders correctly the default config in the frontend. +3. Edit the page again and make some changes to the block (hiding some content, changing columns number, ordering, etc.). +4. Save the page and check it renders properly with the new config. + +### Start using block.json and convert to TS the Product Best Sellers block ([6683](https://github.com/woocommerce/woocommerce-blocks/pull/6683)) + +Test that there are no regressions compared with the previous `Product Best Sellers` block version. + +1. Create a page and add a `Product Best Sellers` block. +2. Save the page and check it renders correctly the default config in the frontend. +3. Edit the page again and make some changes to the block (hiding some content, changing columns number, ordering, etc.). +4. Save the page and check it renders properly with the new config. + +### Select the correct inner button for the "Featured Item" button to update its url ([6741](https://github.com/woocommerce/woocommerce-blocks/pull/6741)) + +1. Create a new page and add a `Featured Product` block. +2. Edit the block and select a different product. +3. Make sure the button URL on the block is updated to the new product link. +4. Duplicate the block and change the new block to a different product. +5. Make sure the button URL on the block is updated to the new product link. +6. Repeat 1-5 for the `Featured Category` block. + +### Fix: navigate through Mini Cart contents with keyboard ([6731](https://github.com/woocommerce/woocommerce-blocks/pull/6731)) + +1. In the site editor, add the Mini Cart block to your site header. +2. Edit the Mini Cart template part and add an image in the inner contents. +3. In the frontend, add some products to the Cart. +4. With the keyboard, open the Mini Cart. +5. With the Tab key try to navigate to the Mini Cart products. +6. Notice you can focus the Mini Cart products inner elements. + +### Fix: WooCommerce messages don't appear in block themes with Mini Cart block ([6728](https://github.com/woocommerce/woocommerce-blocks/pull/6728)) + +1. Switch to a block theme (ie: Twenty Twenty-Two), add the Mini Cart block to the header, and go to a product page. +2. Add the product to your cart. +3. Notice the add to cart success message is shown on the top of the page. + +### SearchListControl: Fix preserving case of original item ([6551](https://github.com/woocommerce/woocommerce-blocks/pull/6551)) + +1. Add a โ€œHand-picked Productsโ€ block to your page. +2. Type the name of one of your products with the incorrect case (e.g. if you have imported the sample data, type โ€œhOoDiEโ€. +3. Make sure all matching products appear on the list. +4. Make sure all items on the list preserve their original case. + + +| Before | After | +| ------ | ----- | +| 172268138-7445fbf1-ad25-4716-8b5a-ee4b463af54b | ![Screenshot 2022-06-11 at 21 16 42](https://user-images.githubusercontent.com/1847066/173202019-aa3659e5-0dd4-454b-95bd-f2ead03ee40d.png) | + +## Feature plugin + +### Fix proceed to checkout button on Cart ([6804](https://github.com/woocommerce/woocommerce-blocks/pull/6804)) + +1. In a new page, insert Cart block. +2. Select Proceed to Checkout block. +3. In the sidebar, change the link to something else. +4. On frontend, add an item to cart, go that newly created cart page, and click the proceed to checkout button. +5. It should take you to your new page. + +### Ensure addresses sync correctly when loading the Checkout Shipping Address Block ([6773](https://github.com/woocommerce/woocommerce-blocks/pull/6773)) + +1. Add items to your cart. +2. Go to the Checkout Block +3. Uncheck "use shipping as billing" and fill out different addresses for shipping and billing. +4. Place the order and verify on the order confirmation screen that the addresses were different. +5. Add another item to your cart then go to the Checkout Block. +6. Leave "use shipping as billing" checked. +7. Place order, check the thank you page, ensure the billing and shipping addresses match. + +### Ensure shipping rate names show when multiple packages are used ([6753](https://github.com/woocommerce/woocommerce-blocks/pull/6753)) + +1. Install the ["Multiple Packages for WooCommerce" plugin](https://wordpress.org/plugins/multiple-packages-for-woocommerce/) +2. Navigate to WooCommerce -> Settings -> Multiple Packages +3. Adjust the settings to work based on "Per Product" +4. Add two/three/four different products to the cart and typically need shipping. +5. Go the checkout page and look at the shipping options, ensure there is a title for each one. +6. Disable the plugin and reload the Checkout Block, ensure the shipping section still looks OK. + +| Before | After | +| ------ | ----- | +| | image | + +### Fix missing translations in inspector ([6737](https://github.com/woocommerce/woocommerce-blocks/pull/6737)) + +1. Change your site language (I tested using French & NL) +2. Go to the C&C Blocks (Editor mode) +3. Select each inner block and make sure the `title` & `description` are translated in the inspector. See image below: + +![image](https://user-images.githubusercontent.com/14235870/181719689-f9decbdd-5bc6-4192-8612-4b2696a8d7c4.png) + + + +--- + +[We're hiring!](https://woocommerce.com/careers/) Come work with us! + +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/810.md) + + + diff --git a/docs/internal-developers/testing/releases/README.md b/docs/internal-developers/testing/releases/README.md index 830e5e46b..47353aad6 100644 --- a/docs/internal-developers/testing/releases/README.md +++ b/docs/internal-developers/testing/releases/README.md @@ -83,6 +83,7 @@ Every release includes specific testing instructions for new features and bug fi - [7.9.0](./790.md) - [8.0.0](./800.md) - [8.1.0](./810.md) +- [8.2.0](./820.md) From d844a354fef4f6d04e96784716eab1080f883da4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Albert=20Juh=C3=A9=20Lluveras?= Date: Tue, 2 Aug 2022 11:15:54 +0200 Subject: [PATCH 020/164] Fix typo in 8.2.0 testing steps --- docs/internal-developers/testing/releases/820.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/internal-developers/testing/releases/820.md b/docs/internal-developers/testing/releases/820.md index 532f4639a..8ac4d7ff3 100644 --- a/docs/internal-developers/testing/releases/820.md +++ b/docs/internal-developers/testing/releases/820.md @@ -26,7 +26,7 @@ Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github. ### Fix: Replace DropdownSelector with FormTokenField from Gutenberg ([6647](https://github.com/woocommerce/woocommerce-blocks/pull/6647)) 1. Add the Filter Products by Attribute block and the All Products block into a post or page. -2. Change the display type bof Filter Products by Attribute to `Dropdown`. +2. Change the display type of Filter Products by Attribute to `Dropdown`. 3. Ensure the block functions normally. 4. Enable the Filter button, and ensure the block functions normally. From 84f107abaa46f159b0f6153618a7b9cc77ac9bba Mon Sep 17 00:00:00 2001 From: Thomas Roberts <5656702+opr@users.noreply.github.com> Date: Tue, 2 Aug 2022 04:51:21 -0700 Subject: [PATCH 021/164] Ensure package names display correctly if only one item is in package (#6815) * Check package length >= 1 to show package name * Check shipping rates length in order shipping packages slot * Fix TS error where boolean value could be undefined * Show items if there is more than one shipping rate --- .../cart-checkout/shipping-rates-control/index.tsx | 6 ++++-- .../checkout/components/order-shipping-packages/index.js | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/assets/js/base/components/cart-checkout/shipping-rates-control/index.tsx b/assets/js/base/components/cart-checkout/shipping-rates-control/index.tsx index 405f7b218..eea684b19 100644 --- a/assets/js/base/components/cart-checkout/shipping-rates-control/index.tsx +++ b/assets/js/base/components/cart-checkout/shipping-rates-control/index.tsx @@ -63,8 +63,8 @@ const Packages = ( { key={ packageId } packageId={ packageId } packageData={ packageData } - collapsible={ collapsible } - collapse={ collapse } + collapsible={ !! collapsible } + collapse={ !! collapse } showItems={ showItems || packageData?.shipping_rates?.length > 1 } @@ -167,6 +167,7 @@ const ShippingRatesControl = ( { ShippingRatesControlPackage, }, context, + shippingRates, }; const { isEditor } = useEditorContext(); @@ -192,6 +193,7 @@ const ShippingRatesControl = ( { /> 1 } packages={ shippingRates } noResultsMessage={ noResultsMessage } renderOption={ renderOption } diff --git a/packages/checkout/components/order-shipping-packages/index.js b/packages/checkout/components/order-shipping-packages/index.js index d07a6e958..220e15e11 100644 --- a/packages/checkout/components/order-shipping-packages/index.js +++ b/packages/checkout/components/order-shipping-packages/index.js @@ -23,9 +23,10 @@ const Slot = ( { cart, components, context, + shippingRates, } ) => { const { fills } = useSlot( slotName ); - const hasMultiplePackages = fills.length > 1; + const hasMultiplePackages = fills.length > 1 || shippingRates?.length > 1; return ( Date: Tue, 2 Aug 2022 04:51:21 -0700 Subject: [PATCH 022/164] Ensure package names display correctly if only one item is in package (#6815) * Check package length >= 1 to show package name * Check shipping rates length in order shipping packages slot * Fix TS error where boolean value could be undefined * Show items if there is more than one shipping rate --- .../cart-checkout/shipping-rates-control/index.tsx | 6 ++++-- .../checkout/components/order-shipping-packages/index.js | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/assets/js/base/components/cart-checkout/shipping-rates-control/index.tsx b/assets/js/base/components/cart-checkout/shipping-rates-control/index.tsx index 405f7b218..eea684b19 100644 --- a/assets/js/base/components/cart-checkout/shipping-rates-control/index.tsx +++ b/assets/js/base/components/cart-checkout/shipping-rates-control/index.tsx @@ -63,8 +63,8 @@ const Packages = ( { key={ packageId } packageId={ packageId } packageData={ packageData } - collapsible={ collapsible } - collapse={ collapse } + collapsible={ !! collapsible } + collapse={ !! collapse } showItems={ showItems || packageData?.shipping_rates?.length > 1 } @@ -167,6 +167,7 @@ const ShippingRatesControl = ( { ShippingRatesControlPackage, }, context, + shippingRates, }; const { isEditor } = useEditorContext(); @@ -192,6 +193,7 @@ const ShippingRatesControl = ( { /> 1 } packages={ shippingRates } noResultsMessage={ noResultsMessage } renderOption={ renderOption } diff --git a/packages/checkout/components/order-shipping-packages/index.js b/packages/checkout/components/order-shipping-packages/index.js index d07a6e958..220e15e11 100644 --- a/packages/checkout/components/order-shipping-packages/index.js +++ b/packages/checkout/components/order-shipping-packages/index.js @@ -23,9 +23,10 @@ const Slot = ( { cart, components, context, + shippingRates, } ) => { const { fills } = useSlot( slotName ); - const hasMultiplePackages = fills.length > 1; + const hasMultiplePackages = fills.length > 1 || shippingRates?.length > 1; return ( Date: Tue, 2 Aug 2022 15:53:46 +0200 Subject: [PATCH 023/164] Update 8.2.0 testing zip --- docs/internal-developers/testing/releases/820.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/internal-developers/testing/releases/820.md b/docs/internal-developers/testing/releases/820.md index 8ac4d7ff3..5df2aa206 100644 --- a/docs/internal-developers/testing/releases/820.md +++ b/docs/internal-developers/testing/releases/820.md @@ -1,6 +1,6 @@ # Testing notes and ZIP for release 8.2.0 -Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github.com/woocommerce/woocommerce-blocks/files/9235482/woocommerce-gutenberg-products-block.zip) +Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github.com/woocommerce/woocommerce-blocks/files/9242756/woocommerce-gutenberg-products-block.zip) ## Feature plugin and package inclusion in WooCommerce From 0bc0c7551dec8d7580ac563d5c4c8930c50c328b Mon Sep 17 00:00:00 2001 From: "Daniel W. Robert" Date: Tue, 2 Aug 2022 10:28:52 -0400 Subject: [PATCH 024/164] Add option to hide/show price in Mini Cart block (#6796) * Add toggle control to sidebar in editor. Adds a visibility toggle in the Mini Cart block's sidebar editor settings for the block price. * Update name of hasVisiblePrice attrubite. Adjusts the name of the hasVisiblePrice attribute to hasHiddenPrice. This seems a bit easier to reason about, where we can set the default state of the visibility toggle to 'off'. * Add conditional price rendering to server side. Since this is a dynamic block, need to add the condidional attribute state to the server-side render callback. * Add price visibility setting to block frontend. We need to prevent pricec from rendering when hidden setting is active after the JS kicks in on the frontend (i.e., when the Mini Cart is interacted with by the user). * Fix logic error in frontend rendering conditional. * Add unit tests for both show/hide price states. --- assets/js/blocks/mini-cart/block.tsx | 18 ++++++---- .../blocks/mini-cart/component-frontend.tsx | 1 + assets/js/blocks/mini-cart/edit.tsx | 34 ++++++++++++++++--- assets/js/blocks/mini-cart/index.tsx | 4 +++ assets/js/blocks/mini-cart/test/block.js | 23 +++++++++++++ src/BlockTypes/MiniCart.php | 23 +++++++++++-- 6 files changed, 89 insertions(+), 14 deletions(-) diff --git a/assets/js/blocks/mini-cart/block.tsx b/assets/js/blocks/mini-cart/block.tsx index 9c73f54ea..88773d4aa 100644 --- a/assets/js/blocks/mini-cart/block.tsx +++ b/assets/js/blocks/mini-cart/block.tsx @@ -41,6 +41,7 @@ interface Props { style?: Record< string, Record< string, string > >; contents: string; addToCartBehaviour: string; + hasHiddenPrice: boolean; } const MiniCartBlock = ( { @@ -49,6 +50,7 @@ const MiniCartBlock = ( { style, contents = '', addToCartBehaviour = 'none', + hasHiddenPrice = false, }: Props ): JSX.Element => { const { cartItemsCount: cartItemsCountFromApi, @@ -212,13 +214,15 @@ const MiniCartBlock = ( { } } aria-label={ ariaLabel } > - - { formatPrice( - subTotal, - getCurrencyFromPriceResponse( cartTotals ) - ) } - - { taxLabel !== '' && subTotal !== 0 && ( + { ! hasHiddenPrice && ( + + { formatPrice( + subTotal, + getCurrencyFromPriceResponse( cartTotals ) + ) } + + ) } + { taxLabel !== '' && subTotal !== 0 && ! hasHiddenPrice && ( { taxLabel } diff --git a/assets/js/blocks/mini-cart/component-frontend.tsx b/assets/js/blocks/mini-cart/component-frontend.tsx index c03a73dd0..efd2e9c2a 100644 --- a/assets/js/blocks/mini-cart/component-frontend.tsx +++ b/assets/js/blocks/mini-cart/component-frontend.tsx @@ -42,6 +42,7 @@ const renderMiniCartFrontend = () => { colorClassNames, style: el.dataset.style ? JSON.parse( el.dataset.style ) : {}, addToCartBehaviour: el.dataset.addToCartBehaviour || 'none', + hasHiddenPrice: el.dataset.hasHiddenPrice, contents: el.querySelector( '.wc-block-mini-cart__template-part' ) ?.innerHTML ?? '', diff --git a/assets/js/blocks/mini-cart/edit.tsx b/assets/js/blocks/mini-cart/edit.tsx index fe181210e..37982c193 100644 --- a/assets/js/blocks/mini-cart/edit.tsx +++ b/assets/js/blocks/mini-cart/edit.tsx @@ -4,7 +4,12 @@ import { InspectorControls, useBlockProps } from '@wordpress/block-editor'; import type { ReactElement } from 'react'; import { formatPrice } from '@woocommerce/price-format'; -import { PanelBody, ExternalLink, SelectControl } from '@wordpress/components'; +import { + PanelBody, + ExternalLink, + SelectControl, + ToggleControl, +} from '@wordpress/components'; import { getSetting } from '@woocommerce/settings'; import { __ } from '@wordpress/i18n'; import Noninteractive from '@woocommerce/base-components/noninteractive'; @@ -16,6 +21,7 @@ import QuantityBadge from './quantity-badge'; interface Attributes { addToCartBehaviour: string; + hasHiddenPrice: boolean; } interface Props { @@ -24,7 +30,7 @@ interface Props { } const Edit = ( { attributes, setAttributes }: Props ): ReactElement => { - const { addToCartBehaviour } = attributes; + const { addToCartBehaviour, hasHiddenPrice } = attributes; const blockProps = useBlockProps( { className: `wc-block-mini-cart`, } ); @@ -76,6 +82,22 @@ const Edit = ( { attributes, setAttributes }: Props ): ReactElement => { }, ] } /> + + setAttributes( { + hasHiddenPrice: ! hasHiddenPrice, + } ) + } + /> { templatePartEditUri && ( { diff --git a/assets/js/blocks/mini-cart/index.tsx b/assets/js/blocks/mini-cart/index.tsx index be74cc659..bac2487eb 100644 --- a/assets/js/blocks/mini-cart/index.tsx +++ b/assets/js/blocks/mini-cart/index.tsx @@ -56,6 +56,10 @@ const settings: BlockConfiguration = { type: 'string', default: 'none', }, + hasHiddenPrice: { + type: 'boolean', + default: false, + }, }, edit, diff --git a/assets/js/blocks/mini-cart/test/block.js b/assets/js/blocks/mini-cart/test/block.js index 08271a85b..54ff6096e 100644 --- a/assets/js/blocks/mini-cart/test/block.js +++ b/assets/js/blocks/mini-cart/test/block.js @@ -5,6 +5,7 @@ import { act, render, screen, + queryByText, waitFor, waitForElementToBeRemoved, } from '@testing-library/react'; @@ -124,4 +125,26 @@ describe( 'Testing Mini Cart', () => { ).toBeInTheDocument() ); } ); + + it( 'renders cart price if "Hide Cart Price" setting is not enabled', async () => { + mockEmptyCart(); + render( ); + await waitFor( () => expect( fetchMock ).toHaveBeenCalled() ); + + await waitFor( () => + expect( screen.getByText( '$0.00' ) ).toBeInTheDocument() + ); + } ); + + it( 'does not render cart price if "Hide Cart Price" setting is enabled', async () => { + mockEmptyCart(); + const { container } = render( + + ); + await waitFor( () => expect( fetchMock ).toHaveBeenCalled() ); + + await waitFor( () => + expect( queryByText( container, '$0.00' ) ).not.toBeInTheDocument() + ); + } ); } ); diff --git a/src/BlockTypes/MiniCart.php b/src/BlockTypes/MiniCart.php index d6b05a190..70d7a1834 100644 --- a/src/BlockTypes/MiniCart.php +++ b/src/BlockTypes/MiniCart.php @@ -288,6 +288,26 @@ protected function append_script_and_deps_src( $script ) { ); } + /** + * Returns the markup for the cart price. + * + * @param array $attributes Block attributes. + * + * @return string + */ + protected function get_cart_price_markup( $attributes ) { + if ( isset( $attributes['hasHiddenPrice'] ) && false !== $attributes['hasHiddenPrice'] ) { + return; + } + + $cart_controller = $this->get_cart_controller(); + $cart = $cart_controller->get_cart_instance(); + $cart_contents_total = $cart->get_subtotal(); + + return '' . esc_html( wp_strip_all_tags( wc_price( $cart_contents_total ) ) ) . ' + ' . $this->get_include_tax_label_markup(); + } + /** * Returns the markup for render the tax label. * @@ -360,8 +380,7 @@ protected function get_markup( $attributes ) { '; - $button_html = '' . esc_html( wp_strip_all_tags( wc_price( $cart_contents_total ) ) ) . ' - ' . $this->get_include_tax_label_markup() . ' + $button_html = $this->get_cart_price_markup( $attributes ) . ' ' . $icon . ' ' . $cart_contents_count . ' From ac90d3b4a9b0cf584ba15dc9b1f8c87e67a4761f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Albert=20Juh=C3=A9=20Lluveras?= Date: Tue, 2 Aug 2022 16:59:58 +0200 Subject: [PATCH 025/164] Bumping version strings to new version. --- package.json | 2 +- readme.txt | 2 +- src/Package.php | 2 +- woocommerce-gutenberg-products-block.php | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 037bf43e1..637f4aa91 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "@woocommerce/block-library", "title": "WooCommerce Blocks", "author": "Automattic", - "version": "8.2.0-dev", + "version": "8.2.0", "description": "WooCommerce blocks for the Gutenberg editor.", "homepage": "https://github.com/woocommerce/woocommerce-gutenberg-products-block/", "keywords": [ diff --git a/readme.txt b/readme.txt index e69e1a1ad..a8ad4377e 100644 --- a/readme.txt +++ b/readme.txt @@ -4,7 +4,7 @@ Tags: gutenberg, woocommerce, woo commerce, products, blocks, woocommerce blocks Requires at least: 6.0 Tested up to: 6.0 Requires PHP: 7.0 -Stable tag: 8.2.0-dev +Stable tag: 8.2.0 License: GPLv3 License URI: https://www.gnu.org/licenses/gpl-3.0.html diff --git a/src/Package.php b/src/Package.php index 2c539ce6c..0c49d629b 100644 --- a/src/Package.php +++ b/src/Package.php @@ -106,7 +106,7 @@ public static function container( $reset = false ) { NewPackage::class, function ( $container ) { // leave for automated version bumping. - $version = '8.2.0-dev'; + $version = '8.2.0'; return new NewPackage( $version, dirname( __DIR__ ), diff --git a/woocommerce-gutenberg-products-block.php b/woocommerce-gutenberg-products-block.php index bcbea62ea..4bb7fffd5 100644 --- a/woocommerce-gutenberg-products-block.php +++ b/woocommerce-gutenberg-products-block.php @@ -3,7 +3,7 @@ * Plugin Name: WooCommerce Blocks * Plugin URI: https://github.com/woocommerce/woocommerce-gutenberg-products-block * Description: WooCommerce blocks for the Gutenberg editor. - * Version: 8.2.0-dev + * Version: 8.2.0 * Author: Automattic * Author URI: https://woocommerce.com * Text Domain: woo-gutenberg-products-block From 477b9399b9eb81f64fea022564d9b6d3d2b8a1d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Albert=20Juh=C3=A9=20Lluveras?= Date: Tue, 2 Aug 2022 17:08:48 +0200 Subject: [PATCH 026/164] Remove empty element from changelog --- readme.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/readme.txt b/readme.txt index a8ad4377e..3fea74aa8 100644 --- a/readme.txt +++ b/readme.txt @@ -107,7 +107,6 @@ Release and roadmap notes available on the [WooCommerce Developers Blog](https:/ - Fix: Navigate through Mini Cart contents with keyboard. ([6731](https://github.com/woocommerce/woocommerce-blocks/pull/6731)) - Fix: Ensure add to cart notices are displayed on pages containing the Mini Cart block. ([6728](https://github.com/woocommerce/woocommerce-blocks/pull/6728)) - Fix Cart an d Checkout blocks compatiblity issue with wordpress.com in which blocks wouldn't load in the editor. ([6718](https://github.com/woocommerce/woocommerce-blocks/pull/6718)) -- N/A. ([6716](https://github.com/woocommerce/woocommerce-blocks/pull/6716)) - Fixes an issue where search lists would not preserve the case of the original item. ([6551](https://github.com/woocommerce/woocommerce-blocks/pull/6551)) = 8.1.0 - 2022-07-18 = From 747a6e4ebf5d4085d1ffc9f77ee1a329c8fcbd16 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 2 Aug 2022 17:22:37 +0200 Subject: [PATCH 027/164] Release: 8.2.0 (#6806) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Empty commit for release pull request * Update 8.2.0 changelog * Add 8.2.0 testing steps * Fix typo in 8.2.0 testing steps * Ensure package names display correctly if only one item is in package (#6815) * Check package length >= 1 to show package name * Check shipping rates length in order shipping packages slot * Fix TS error where boolean value could be undefined * Show items if there is more than one shipping rate * Update 8.2.0 testing zip * Bumping version strings to new version. * Remove empty element from changelog Co-authored-by: github-actions Co-authored-by: Albert Juhรฉ Lluveras Co-authored-by: Thomas Roberts <5656702+opr@users.noreply.github.com> --- .../testing/releases/820.md | 155 ++++++++++++++++++ .../testing/releases/README.md | 1 + package.json | 2 +- readme.txt | 25 ++- src/Package.php | 2 +- woocommerce-gutenberg-products-block.php | 2 +- 6 files changed, 183 insertions(+), 4 deletions(-) create mode 100644 docs/internal-developers/testing/releases/820.md diff --git a/docs/internal-developers/testing/releases/820.md b/docs/internal-developers/testing/releases/820.md new file mode 100644 index 000000000..5df2aa206 --- /dev/null +++ b/docs/internal-developers/testing/releases/820.md @@ -0,0 +1,155 @@ +# Testing notes and ZIP for release 8.2.0 + +Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github.com/woocommerce/woocommerce-blocks/files/9242756/woocommerce-gutenberg-products-block.zip) + +## Feature plugin and package inclusion in WooCommerce + +### Remove compatibility notice for Mini Cart block ([6803](https://github.com/woocommerce/woocommerce-blocks/pull/6803)) + +0. Make sure you have a blocks theme active (like Twenty Twenty-Two). +1. Clear the local storage of your browser. +2. Add the Mini Cart block to the header template part. +3. Don't see compatibility notice. +4. Create a new page > Add the Cart block to that page. +5. See the compatibility notice as normal. + +### Add new icon for mini cart block ([6784](https://github.com/woocommerce/woocommerce-blocks/pull/6784)) + +1. Make sure you have a blocks theme active (like Twenty Twenty-Two). +2. Navigate to **Appearance > Editor (Beta)** and add a Mini Cart block somewhere in your site. +3. Select the Mini Cart block in the editor and confirm the icon in the inserter and toolbar reflect the changes. + +| Before | After | +| ------ | ----- | +| ![CleanShot 2022-07-28 at 14 57 58](https://user-images.githubusercontent.com/481776/181622493-d618649c-e9ee-4649-9e10-a2aed6737fc5.png) | ![CleanShot 2022-07-28 at 15 31 41](https://user-images.githubusercontent.com/481776/181622516-4bade22f-944a-488e-aacc-6094afa97efe.png) | + +### Fix: Replace DropdownSelector with FormTokenField from Gutenberg ([6647](https://github.com/woocommerce/woocommerce-blocks/pull/6647)) + +1. Add the Filter Products by Attribute block and the All Products block into a post or page. +2. Change the display type of Filter Products by Attribute to `Dropdown`. +3. Ensure the block functions normally. +4. Enable the Filter button, and ensure the block functions normally. + +### Use the archive-product template to render product attributes pages ([6776](https://github.com/woocommerce/woocommerce-blocks/pull/6776)) + +1. Make sure you have a blocks theme active (like Twenty Twenty-Two). +2. Navigate to `Products` > `Attributes` and edit an existing one or create a new one. +3. Click the `Enable Archives` option and save, go back. +4. Click `Configure terms` next to your attribute. +5. Hover over one of the terms and click the `View` link of one of the attributes. +6. Check that the page is rendered with a header, a footer, and using a product grid. + +| Before | After | +| ------ | ----- | +| Screenshot 2022-07-27 at 16 38 51 | ![Screenshot 2022-07-27 at 16 38 41](https://user-images.githubusercontent.com/186112/181275933-3b712c54-1c6f-4578-8a25-659052cde175.png)| + +### All Products block: Migrate to block.json ([6754](https://github.com/woocommerce/woocommerce-blocks/pull/6754)) + +1. Add the All Products block to a post or page. +2. Verify it works as before in the editor and the frontend and there are no errors. + +### Start using block.json and convert to TS the Product by Category block ([6680](https://github.com/woocommerce/woocommerce-blocks/pull/6680)) + +Test that there are no regressions compared with the previous `Products by Category` block version. + +1. Create a page and add a `Products by Category` block. +2. Save the page and check it renders correctly the default config in the frontend. +3. Edit the page again and make some changes to the block (hiding some content, changing columns number, ordering, etc.). +4. Save the page and check it renders properly with the new config. + +### Start using block.json and convert to TS the Product Best Sellers block ([6683](https://github.com/woocommerce/woocommerce-blocks/pull/6683)) + +Test that there are no regressions compared with the previous `Product Best Sellers` block version. + +1. Create a page and add a `Product Best Sellers` block. +2. Save the page and check it renders correctly the default config in the frontend. +3. Edit the page again and make some changes to the block (hiding some content, changing columns number, ordering, etc.). +4. Save the page and check it renders properly with the new config. + +### Select the correct inner button for the "Featured Item" button to update its url ([6741](https://github.com/woocommerce/woocommerce-blocks/pull/6741)) + +1. Create a new page and add a `Featured Product` block. +2. Edit the block and select a different product. +3. Make sure the button URL on the block is updated to the new product link. +4. Duplicate the block and change the new block to a different product. +5. Make sure the button URL on the block is updated to the new product link. +6. Repeat 1-5 for the `Featured Category` block. + +### Fix: navigate through Mini Cart contents with keyboard ([6731](https://github.com/woocommerce/woocommerce-blocks/pull/6731)) + +1. In the site editor, add the Mini Cart block to your site header. +2. Edit the Mini Cart template part and add an image in the inner contents. +3. In the frontend, add some products to the Cart. +4. With the keyboard, open the Mini Cart. +5. With the Tab key try to navigate to the Mini Cart products. +6. Notice you can focus the Mini Cart products inner elements. + +### Fix: WooCommerce messages don't appear in block themes with Mini Cart block ([6728](https://github.com/woocommerce/woocommerce-blocks/pull/6728)) + +1. Switch to a block theme (ie: Twenty Twenty-Two), add the Mini Cart block to the header, and go to a product page. +2. Add the product to your cart. +3. Notice the add to cart success message is shown on the top of the page. + +### SearchListControl: Fix preserving case of original item ([6551](https://github.com/woocommerce/woocommerce-blocks/pull/6551)) + +1. Add a โ€œHand-picked Productsโ€ block to your page. +2. Type the name of one of your products with the incorrect case (e.g. if you have imported the sample data, type โ€œhOoDiEโ€. +3. Make sure all matching products appear on the list. +4. Make sure all items on the list preserve their original case. + + +| Before | After | +| ------ | ----- | +| 172268138-7445fbf1-ad25-4716-8b5a-ee4b463af54b | ![Screenshot 2022-06-11 at 21 16 42](https://user-images.githubusercontent.com/1847066/173202019-aa3659e5-0dd4-454b-95bd-f2ead03ee40d.png) | + +## Feature plugin + +### Fix proceed to checkout button on Cart ([6804](https://github.com/woocommerce/woocommerce-blocks/pull/6804)) + +1. In a new page, insert Cart block. +2. Select Proceed to Checkout block. +3. In the sidebar, change the link to something else. +4. On frontend, add an item to cart, go that newly created cart page, and click the proceed to checkout button. +5. It should take you to your new page. + +### Ensure addresses sync correctly when loading the Checkout Shipping Address Block ([6773](https://github.com/woocommerce/woocommerce-blocks/pull/6773)) + +1. Add items to your cart. +2. Go to the Checkout Block +3. Uncheck "use shipping as billing" and fill out different addresses for shipping and billing. +4. Place the order and verify on the order confirmation screen that the addresses were different. +5. Add another item to your cart then go to the Checkout Block. +6. Leave "use shipping as billing" checked. +7. Place order, check the thank you page, ensure the billing and shipping addresses match. + +### Ensure shipping rate names show when multiple packages are used ([6753](https://github.com/woocommerce/woocommerce-blocks/pull/6753)) + +1. Install the ["Multiple Packages for WooCommerce" plugin](https://wordpress.org/plugins/multiple-packages-for-woocommerce/) +2. Navigate to WooCommerce -> Settings -> Multiple Packages +3. Adjust the settings to work based on "Per Product" +4. Add two/three/four different products to the cart and typically need shipping. +5. Go the checkout page and look at the shipping options, ensure there is a title for each one. +6. Disable the plugin and reload the Checkout Block, ensure the shipping section still looks OK. + +| Before | After | +| ------ | ----- | +| | image | + +### Fix missing translations in inspector ([6737](https://github.com/woocommerce/woocommerce-blocks/pull/6737)) + +1. Change your site language (I tested using French & NL) +2. Go to the C&C Blocks (Editor mode) +3. Select each inner block and make sure the `title` & `description` are translated in the inspector. See image below: + +![image](https://user-images.githubusercontent.com/14235870/181719689-f9decbdd-5bc6-4192-8612-4b2696a8d7c4.png) + + + +--- + +[We're hiring!](https://woocommerce.com/careers/) Come work with us! + +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/810.md) + + + diff --git a/docs/internal-developers/testing/releases/README.md b/docs/internal-developers/testing/releases/README.md index 830e5e46b..47353aad6 100644 --- a/docs/internal-developers/testing/releases/README.md +++ b/docs/internal-developers/testing/releases/README.md @@ -83,6 +83,7 @@ Every release includes specific testing instructions for new features and bug fi - [7.9.0](./790.md) - [8.0.0](./800.md) - [8.1.0](./810.md) +- [8.2.0](./820.md) diff --git a/package.json b/package.json index 037bf43e1..637f4aa91 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "@woocommerce/block-library", "title": "WooCommerce Blocks", "author": "Automattic", - "version": "8.2.0-dev", + "version": "8.2.0", "description": "WooCommerce blocks for the Gutenberg editor.", "homepage": "https://github.com/woocommerce/woocommerce-gutenberg-products-block/", "keywords": [ diff --git a/readme.txt b/readme.txt index a8438b3fc..3fea74aa8 100644 --- a/readme.txt +++ b/readme.txt @@ -4,7 +4,7 @@ Tags: gutenberg, woocommerce, woo commerce, products, blocks, woocommerce blocks Requires at least: 6.0 Tested up to: 6.0 Requires PHP: 7.0 -Stable tag: 8.2.0-dev +Stable tag: 8.2.0 License: GPLv3 License URI: https://www.gnu.org/licenses/gpl-3.0.html @@ -86,6 +86,29 @@ Release and roadmap notes available on the [WooCommerce Developers Blog](https:/ == Changelog == += 8.2.0 - 2022-08-02 = + +#### Enhancements + +- Add update_customer_from_request action to Checkout flow. ([6792](https://github.com/woocommerce/woocommerce-blocks/pull/6792)) +- Update: New block icon for the Mini Cart block. ([6784](https://github.com/woocommerce/woocommerce-blocks/pull/6784)) +- Introduce `productNameFormat` filter for cart items in Cart and Checkout blocks. ([4993](https://github.com/woocommerce/woocommerce-blocks/pull/4993)) + +#### Bug Fixes + +- Fix proceed to checkout button not working for custom links. ([6804](https://github.com/woocommerce/woocommerce-blocks/pull/6804)) +- Mini Cart block: Remove the compatibility notice. ([6803](https://github.com/woocommerce/woocommerce-blocks/pull/6803)) +- Fix: Render the product attribute archive page using the `archive-product` template. ([6776](https://github.com/woocommerce/woocommerce-blocks/pull/6776)) +- Ensure using the "Use shipping as billing" checkbox in the Checkout Block correctly syncs the addresses when making the order. ([6773](https://github.com/woocommerce/woocommerce-blocks/pull/6773)) +- Ensure shipping package names are shown correctly in the Checkout Block when a cart contains multiple packages. ([6753](https://github.com/woocommerce/woocommerce-blocks/pull/6753)) +- Select the correct inner button for the "Featured Item" button to update its URL. ([6741](https://github.com/woocommerce/woocommerce-blocks/pull/6741)) +- Fix the spacing between separate shipping packages in the Checkout Block. ([6740](https://github.com/woocommerce/woocommerce-blocks/pull/6740)) +- Fix missing translations in the inspector (editor mode). ([6737](https://github.com/woocommerce/woocommerce-blocks/pull/6737)) +- Fix: Navigate through Mini Cart contents with keyboard. ([6731](https://github.com/woocommerce/woocommerce-blocks/pull/6731)) +- Fix: Ensure add to cart notices are displayed on pages containing the Mini Cart block. ([6728](https://github.com/woocommerce/woocommerce-blocks/pull/6728)) +- Fix Cart an d Checkout blocks compatiblity issue with wordpress.com in which blocks wouldn't load in the editor. ([6718](https://github.com/woocommerce/woocommerce-blocks/pull/6718)) +- Fixes an issue where search lists would not preserve the case of the original item. ([6551](https://github.com/woocommerce/woocommerce-blocks/pull/6551)) + = 8.1.0 - 2022-07-18 = #### Enhancements diff --git a/src/Package.php b/src/Package.php index 2c539ce6c..0c49d629b 100644 --- a/src/Package.php +++ b/src/Package.php @@ -106,7 +106,7 @@ public static function container( $reset = false ) { NewPackage::class, function ( $container ) { // leave for automated version bumping. - $version = '8.2.0-dev'; + $version = '8.2.0'; return new NewPackage( $version, dirname( __DIR__ ), diff --git a/woocommerce-gutenberg-products-block.php b/woocommerce-gutenberg-products-block.php index bcbea62ea..4bb7fffd5 100644 --- a/woocommerce-gutenberg-products-block.php +++ b/woocommerce-gutenberg-products-block.php @@ -3,7 +3,7 @@ * Plugin Name: WooCommerce Blocks * Plugin URI: https://github.com/woocommerce/woocommerce-gutenberg-products-block * Description: WooCommerce blocks for the Gutenberg editor. - * Version: 8.2.0-dev + * Version: 8.2.0 * Author: Automattic * Author URI: https://woocommerce.com * Text Domain: woo-gutenberg-products-block From 192ba589c175e7a2d644f460b30b32f98aa3e99d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Albert=20Juh=C3=A9=20Lluveras?= Date: Tue, 2 Aug 2022 17:24:34 +0200 Subject: [PATCH 028/164] Update version to 8.3.0-dev --- package-lock.json | 2 +- package.json | 2 +- readme.txt | 2 +- src/Package.php | 2 +- woocommerce-gutenberg-products-block.php | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index c7d43e75b..25458607a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@woocommerce/block-library", - "version": "8.2.0-dev", + "version": "8.3.0-dev", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index 637f4aa91..4cdfb4751 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "@woocommerce/block-library", "title": "WooCommerce Blocks", "author": "Automattic", - "version": "8.2.0", + "version": "8.3.0-dev", "description": "WooCommerce blocks for the Gutenberg editor.", "homepage": "https://github.com/woocommerce/woocommerce-gutenberg-products-block/", "keywords": [ diff --git a/readme.txt b/readme.txt index 3fea74aa8..569e98e3d 100644 --- a/readme.txt +++ b/readme.txt @@ -4,7 +4,7 @@ Tags: gutenberg, woocommerce, woo commerce, products, blocks, woocommerce blocks Requires at least: 6.0 Tested up to: 6.0 Requires PHP: 7.0 -Stable tag: 8.2.0 +Stable tag: 8.3.0-dev License: GPLv3 License URI: https://www.gnu.org/licenses/gpl-3.0.html diff --git a/src/Package.php b/src/Package.php index 0c49d629b..23e2a0481 100644 --- a/src/Package.php +++ b/src/Package.php @@ -106,7 +106,7 @@ public static function container( $reset = false ) { NewPackage::class, function ( $container ) { // leave for automated version bumping. - $version = '8.2.0'; + $version = '8.3.0-dev'; return new NewPackage( $version, dirname( __DIR__ ), diff --git a/woocommerce-gutenberg-products-block.php b/woocommerce-gutenberg-products-block.php index 4bb7fffd5..d45b7efb2 100644 --- a/woocommerce-gutenberg-products-block.php +++ b/woocommerce-gutenberg-products-block.php @@ -3,7 +3,7 @@ * Plugin Name: WooCommerce Blocks * Plugin URI: https://github.com/woocommerce/woocommerce-gutenberg-products-block * Description: WooCommerce blocks for the Gutenberg editor. - * Version: 8.2.0 + * Version: 8.3.0-dev * Author: Automattic * Author URI: https://woocommerce.com * Text Domain: woo-gutenberg-products-block From c5e03b27a331efb5de0565bafd1b01ea24019ac9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Aug 2022 17:46:17 +0200 Subject: [PATCH 029/164] Bump @wordpress/is-shallow-equal from 4.12.0 to 4.13.0 (#6710) Bumps [@wordpress/is-shallow-equal](https://github.com/WordPress/gutenberg/tree/HEAD/packages/is-shallow-equal) from 4.12.0 to 4.13.0. - [Release notes](https://github.com/WordPress/gutenberg/releases) - [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/is-shallow-equal/CHANGELOG.md) - [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/is-shallow-equal@4.13.0/packages/is-shallow-equal) --- updated-dependencies: - dependency-name: "@wordpress/is-shallow-equal" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Luigi Teschio --- package-lock.json | 118 +++++++++------------------------------------- package.json | 2 +- 2 files changed, 22 insertions(+), 98 deletions(-) diff --git a/package-lock.json b/package-lock.json index 25458607a..c6ec761b5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -93,7 +93,7 @@ "@wordpress/env": "4.9.0", "@wordpress/html-entities": "3.12.0", "@wordpress/i18n": "4.12.0", - "@wordpress/is-shallow-equal": "4.12.0", + "@wordpress/is-shallow-equal": "4.13.0", "@wordpress/prettier-config": "1.4.0", "@wordpress/scripts": "22.3.0", "autoprefixer": "10.4.7", @@ -11802,7 +11802,7 @@ "@wordpress/compose": "^5.11.0", "@wordpress/deprecated": "^3.13.0", "@wordpress/element": "^4.11.0", - "@wordpress/is-shallow-equal": "^4.13.0", + "@wordpress/is-shallow-equal": "4.13.0", "@wordpress/priority-queue": "^2.13.0", "@wordpress/redux-routine": "^4.13.0", "equivalent-key-map": "^0.2.2", @@ -11859,7 +11859,7 @@ "@wordpress/deprecated": "^3.13.0", "@wordpress/dom": "^3.13.0", "@wordpress/element": "^4.11.0", - "@wordpress/is-shallow-equal": "^4.13.0", + "@wordpress/is-shallow-equal": "4.13.0", "@wordpress/keycodes": "^3.13.0", "@wordpress/priority-queue": "^2.13.0", "clipboard": "^2.0.8", @@ -11916,17 +11916,6 @@ "node": ">=12" } }, - "node_modules/@wordpress/data/node_modules/@wordpress/is-shallow-equal": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-4.13.0.tgz", - "integrity": "sha512-oUoMbEZwnbd4nfEo6uxkvrNCc/LnqC9MIY6kK3iWtMhcykQNpbK3XY/i/NvJb+QpRf7U6XhXyw4//HcQv39iOA==", - "dependencies": { - "@babel/runtime": "^7.16.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@wordpress/date": { "version": "4.13.0", "resolved": "https://registry.npmjs.org/@wordpress/date/-/date-4.13.0.tgz", @@ -14021,9 +14010,9 @@ } }, "node_modules/@wordpress/is-shallow-equal": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-4.12.0.tgz", - "integrity": "sha512-jlpHXPLJw0mG13bcbZIJwOd1DQozJ5+fbkkKA2JeTO5d5PXs44Rw6EYdGMLUU97B44UxIwVbaui7tJGOvzF8Dw==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-4.13.0.tgz", + "integrity": "sha512-oUoMbEZwnbd4nfEo6uxkvrNCc/LnqC9MIY6kK3iWtMhcykQNpbK3XY/i/NvJb+QpRf7U6XhXyw4//HcQv39iOA==", "dependencies": { "@babel/runtime": "^7.16.0" }, @@ -14235,7 +14224,7 @@ "@wordpress/deprecated": "^3.13.0", "@wordpress/dom": "^3.13.0", "@wordpress/element": "^4.11.0", - "@wordpress/is-shallow-equal": "^4.13.0", + "@wordpress/is-shallow-equal": "4.13.0", "@wordpress/keycodes": "^3.13.0", "@wordpress/priority-queue": "^2.13.0", "clipboard": "^2.0.8", @@ -14305,17 +14294,6 @@ "node": ">=12" } }, - "node_modules/@wordpress/plugins/node_modules/@wordpress/is-shallow-equal": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-4.13.0.tgz", - "integrity": "sha512-oUoMbEZwnbd4nfEo6uxkvrNCc/LnqC9MIY6kK3iWtMhcykQNpbK3XY/i/NvJb+QpRf7U6XhXyw4//HcQv39iOA==", - "dependencies": { - "@babel/runtime": "^7.16.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@wordpress/plugins/node_modules/@wordpress/primitives": { "version": "3.11.0", "resolved": "https://registry.npmjs.org/@wordpress/primitives/-/primitives-3.11.0.tgz", @@ -14439,7 +14417,7 @@ "@wordpress/deprecated": "^3.13.0", "@wordpress/dom": "^3.13.0", "@wordpress/element": "^4.11.0", - "@wordpress/is-shallow-equal": "^4.13.0", + "@wordpress/is-shallow-equal": "4.13.0", "@wordpress/keycodes": "^3.13.0", "@wordpress/priority-queue": "^2.13.0", "clipboard": "^2.0.8", @@ -14516,17 +14494,6 @@ "node": ">=12" } }, - "node_modules/@wordpress/rich-text/node_modules/@wordpress/is-shallow-equal": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-4.13.0.tgz", - "integrity": "sha512-oUoMbEZwnbd4nfEo6uxkvrNCc/LnqC9MIY6kK3iWtMhcykQNpbK3XY/i/NvJb+QpRf7U6XhXyw4//HcQv39iOA==", - "dependencies": { - "@babel/runtime": "^7.16.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@wordpress/rich-text/node_modules/rememo": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/rememo/-/rememo-4.0.1.tgz", @@ -16157,7 +16124,7 @@ "@wordpress/hooks": "^3.13.0", "@wordpress/html-entities": "^3.13.0", "@wordpress/i18n": "^4.13.0", - "@wordpress/is-shallow-equal": "^4.13.0", + "@wordpress/is-shallow-equal": "4.13.0", "@wordpress/shortcode": "^3.13.0", "colord": "^2.7.0", "hpq": "^1.3.0", @@ -16199,7 +16166,7 @@ "@wordpress/hooks": "^3.13.0", "@wordpress/i18n": "^4.13.0", "@wordpress/icons": "^9.4.0", - "@wordpress/is-shallow-equal": "^4.13.0", + "@wordpress/is-shallow-equal": "4.13.0", "@wordpress/keycodes": "^3.13.0", "@wordpress/primitives": "^3.11.0", "@wordpress/rich-text": "^5.11.0", @@ -16240,7 +16207,7 @@ "@wordpress/deprecated": "^3.13.0", "@wordpress/dom": "^3.13.0", "@wordpress/element": "^4.11.0", - "@wordpress/is-shallow-equal": "^4.13.0", + "@wordpress/is-shallow-equal": "4.13.0", "@wordpress/keycodes": "^3.13.0", "@wordpress/priority-queue": "^2.13.0", "clipboard": "^2.0.8", @@ -16341,17 +16308,6 @@ "node": ">=12" } }, - "node_modules/@wordpress/server-side-render/node_modules/@wordpress/is-shallow-equal": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-4.13.0.tgz", - "integrity": "sha512-oUoMbEZwnbd4nfEo6uxkvrNCc/LnqC9MIY6kK3iWtMhcykQNpbK3XY/i/NvJb+QpRf7U6XhXyw4//HcQv39iOA==", - "dependencies": { - "@babel/runtime": "^7.16.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@wordpress/server-side-render/node_modules/@wordpress/primitives": { "version": "3.11.0", "resolved": "https://registry.npmjs.org/@wordpress/primitives/-/primitives-3.11.0.tgz", @@ -60676,7 +60632,7 @@ "@wordpress/compose": "^5.11.0", "@wordpress/deprecated": "^3.13.0", "@wordpress/element": "^4.11.0", - "@wordpress/is-shallow-equal": "^4.13.0", + "@wordpress/is-shallow-equal": "4.13.0", "@wordpress/priority-queue": "^2.13.0", "@wordpress/redux-routine": "^4.13.0", "equivalent-key-map": "^0.2.2", @@ -60698,7 +60654,7 @@ "@wordpress/deprecated": "^3.13.0", "@wordpress/dom": "^3.13.0", "@wordpress/element": "^4.11.0", - "@wordpress/is-shallow-equal": "^4.13.0", + "@wordpress/is-shallow-equal": "4.13.0", "@wordpress/keycodes": "^3.13.0", "@wordpress/priority-queue": "^2.13.0", "clipboard": "^2.0.8", @@ -60739,14 +60695,6 @@ "react": "^17.0.2", "react-dom": "^17.0.2" } - }, - "@wordpress/is-shallow-equal": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-4.13.0.tgz", - "integrity": "sha512-oUoMbEZwnbd4nfEo6uxkvrNCc/LnqC9MIY6kK3iWtMhcykQNpbK3XY/i/NvJb+QpRf7U6XhXyw4//HcQv39iOA==", - "requires": { - "@babel/runtime": "^7.16.0" - } } } }, @@ -62306,9 +62254,9 @@ } }, "@wordpress/is-shallow-equal": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-4.12.0.tgz", - "integrity": "sha512-jlpHXPLJw0mG13bcbZIJwOd1DQozJ5+fbkkKA2JeTO5d5PXs44Rw6EYdGMLUU97B44UxIwVbaui7tJGOvzF8Dw==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-4.13.0.tgz", + "integrity": "sha512-oUoMbEZwnbd4nfEo6uxkvrNCc/LnqC9MIY6kK3iWtMhcykQNpbK3XY/i/NvJb+QpRf7U6XhXyw4//HcQv39iOA==", "requires": { "@babel/runtime": "^7.16.0" } @@ -62455,7 +62403,7 @@ "@wordpress/deprecated": "^3.13.0", "@wordpress/dom": "^3.13.0", "@wordpress/element": "^4.11.0", - "@wordpress/is-shallow-equal": "^4.13.0", + "@wordpress/is-shallow-equal": "4.13.0", "@wordpress/keycodes": "^3.13.0", "@wordpress/priority-queue": "^2.13.0", "clipboard": "^2.0.8", @@ -62507,14 +62455,6 @@ "@wordpress/primitives": "^3.11.0" } }, - "@wordpress/is-shallow-equal": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-4.13.0.tgz", - "integrity": "sha512-oUoMbEZwnbd4nfEo6uxkvrNCc/LnqC9MIY6kK3iWtMhcykQNpbK3XY/i/NvJb+QpRf7U6XhXyw4//HcQv39iOA==", - "requires": { - "@babel/runtime": "^7.16.0" - } - }, "@wordpress/primitives": { "version": "3.11.0", "resolved": "https://registry.npmjs.org/@wordpress/primitives/-/primitives-3.11.0.tgz", @@ -62610,7 +62550,7 @@ "@wordpress/deprecated": "^3.13.0", "@wordpress/dom": "^3.13.0", "@wordpress/element": "^4.11.0", - "@wordpress/is-shallow-equal": "^4.13.0", + "@wordpress/is-shallow-equal": "4.13.0", "@wordpress/keycodes": "^3.13.0", "@wordpress/priority-queue": "^2.13.0", "clipboard": "^2.0.8", @@ -62666,14 +62606,6 @@ "tannin": "^1.2.0" } }, - "@wordpress/is-shallow-equal": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-4.13.0.tgz", - "integrity": "sha512-oUoMbEZwnbd4nfEo6uxkvrNCc/LnqC9MIY6kK3iWtMhcykQNpbK3XY/i/NvJb+QpRf7U6XhXyw4//HcQv39iOA==", - "requires": { - "@babel/runtime": "^7.16.0" - } - }, "rememo": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/rememo/-/rememo-4.0.1.tgz", @@ -63877,7 +63809,7 @@ "@wordpress/hooks": "^3.13.0", "@wordpress/html-entities": "^3.13.0", "@wordpress/i18n": "^4.13.0", - "@wordpress/is-shallow-equal": "^4.13.0", + "@wordpress/is-shallow-equal": "4.13.0", "@wordpress/shortcode": "^3.13.0", "colord": "^2.7.0", "hpq": "^1.3.0", @@ -63913,7 +63845,7 @@ "@wordpress/hooks": "^3.13.0", "@wordpress/i18n": "^4.13.0", "@wordpress/icons": "^9.4.0", - "@wordpress/is-shallow-equal": "^4.13.0", + "@wordpress/is-shallow-equal": "4.13.0", "@wordpress/keycodes": "^3.13.0", "@wordpress/primitives": "^3.11.0", "@wordpress/rich-text": "^5.11.0", @@ -63947,7 +63879,7 @@ "@wordpress/deprecated": "^3.13.0", "@wordpress/dom": "^3.13.0", "@wordpress/element": "^4.11.0", - "@wordpress/is-shallow-equal": "^4.13.0", + "@wordpress/is-shallow-equal": "4.13.0", "@wordpress/keycodes": "^3.13.0", "@wordpress/priority-queue": "^2.13.0", "clipboard": "^2.0.8", @@ -64021,14 +63953,6 @@ "@wordpress/primitives": "^3.11.0" } }, - "@wordpress/is-shallow-equal": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-4.13.0.tgz", - "integrity": "sha512-oUoMbEZwnbd4nfEo6uxkvrNCc/LnqC9MIY6kK3iWtMhcykQNpbK3XY/i/NvJb+QpRf7U6XhXyw4//HcQv39iOA==", - "requires": { - "@babel/runtime": "^7.16.0" - } - }, "@wordpress/primitives": { "version": "3.11.0", "resolved": "https://registry.npmjs.org/@wordpress/primitives/-/primitives-3.11.0.tgz", diff --git a/package.json b/package.json index 4cdfb4751..9d42b61ab 100644 --- a/package.json +++ b/package.json @@ -139,7 +139,7 @@ "@wordpress/env": "4.9.0", "@wordpress/html-entities": "3.12.0", "@wordpress/i18n": "4.12.0", - "@wordpress/is-shallow-equal": "4.12.0", + "@wordpress/is-shallow-equal": "4.13.0", "@wordpress/prettier-config": "1.4.0", "@wordpress/scripts": "22.3.0", "autoprefixer": "10.4.7", From b7445726bf3e20a1bfcc70a30475899038aa807d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Aug 2022 10:49:52 +0200 Subject: [PATCH 030/164] Bump AbleLincoln/push-to-sftp from 1.0 to 1.2 (#6808) Bumps [AbleLincoln/push-to-sftp](https://github.com/AbleLincoln/push-to-sftp) from 1.0 to 1.2. - [Release notes](https://github.com/AbleLincoln/push-to-sftp/releases) - [Commits](https://github.com/AbleLincoln/push-to-sftp/compare/v1.0...v1.2) --- updated-dependencies: - dependency-name: AbleLincoln/push-to-sftp dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Luigi Teschio --- .github/workflows/generate-zip.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/generate-zip.yml b/.github/workflows/generate-zip.yml index a9add0f59..7105ef1e1 100644 --- a/.github/workflows/generate-zip.yml +++ b/.github/workflows/generate-zip.yml @@ -38,7 +38,7 @@ jobs: run: mv woocommerce-gutenberg-products-block.zip wc-blocks-pr-release__temp/woocommerce-gutenberg-products-block-${{ github.event.pull_request.number }}.zip - name: Transfer ZIP file via SFTP - uses: AbleLincoln/push-to-sftp@v1.0 + uses: AbleLincoln/push-to-sftp@v1.2 with: host: ${{ secrets.FTP_HOST }} port: 22 From 34657e03cb049f092bbb917be3ccefafc75a3636 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Aug 2022 11:11:22 +0200 Subject: [PATCH 031/164] Bump @wordpress/i18n from 4.12.0 to 4.14.0 (#6817) Bumps [@wordpress/i18n](https://github.com/WordPress/gutenberg/tree/HEAD/packages/i18n) from 4.12.0 to 4.14.0. - [Release notes](https://github.com/WordPress/gutenberg/releases) - [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/i18n/CHANGELOG.md) - [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/i18n@4.14.0/packages/i18n) --- updated-dependencies: - dependency-name: "@wordpress/i18n" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Luigi Teschio --- package-lock.json | 172 +++++----------------------------------------- package.json | 2 +- 2 files changed, 17 insertions(+), 157 deletions(-) diff --git a/package-lock.json b/package-lock.json index c6ec761b5..4045841b0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,7 +6,7 @@ "packages": { "": { "name": "@woocommerce/block-library", - "version": "8.2.0-dev", + "version": "8.3.0-dev", "hasInstallScript": true, "license": "GPL-3.0+", "dependencies": { @@ -92,7 +92,7 @@ "@wordpress/element": "4.0.4", "@wordpress/env": "4.9.0", "@wordpress/html-entities": "3.12.0", - "@wordpress/i18n": "4.12.0", + "@wordpress/i18n": "4.14.0", "@wordpress/is-shallow-equal": "4.13.0", "@wordpress/prettier-config": "1.4.0", "@wordpress/scripts": "22.3.0", @@ -11253,26 +11253,6 @@ "node": ">=12" } }, - "node_modules/@wordpress/a11y/node_modules/@wordpress/i18n": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.13.0.tgz", - "integrity": "sha512-25x0ylQzXxbaw3oM8afoahiPzzZfzikBNzkzlEJ4MuI9u61zmFedbkIrsmhXtYNlcZ/52RxeUcswHdVs4Hln9Q==", - "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.13.0", - "gettext-parser": "^1.3.1", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "sprintf-js": "^1.1.1", - "tannin": "^1.2.0" - }, - "bin": { - "pot-to-php": "tools/pot-to-php.js" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@wordpress/api-fetch": { "version": "6.9.0", "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-6.9.0.tgz", @@ -13954,9 +13934,9 @@ } }, "node_modules/@wordpress/hooks": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-3.13.0.tgz", - "integrity": "sha512-N+82Dt3jsREtN0dCypehaWuwCjPOM3ljxyzVWULMDrIK9TaIvkunkHViIyoCkxWk3lolRRqh8XmD+ox/mF+n1A==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-3.14.0.tgz", + "integrity": "sha512-bcQXql4A1VI6gnTdNzMjdHLGTpnf8oWOQ1r8B8fcvtOF3dKictxJPobarWxFbtVTQoegizZT/lPCMoLsnVJpug==", "dependencies": { "@babel/runtime": "^7.16.0" }, @@ -13977,12 +13957,12 @@ } }, "node_modules/@wordpress/i18n": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.12.0.tgz", - "integrity": "sha512-UTccrAOZ03nszzlG74G+ZkMR/kK0PoS1fqFa8NRFAhHneYadJOnsgCCd5YgDAsN+tAKA6QM7RPmpQMwujvIbzA==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.14.0.tgz", + "integrity": "sha512-46ryvPbh139RkLXQt8oey4aCcWo6HRKb1NLVHU4a4kJ4HRD/HLhAeTHKAMiZFWTg+QC1HZC32vGdEikqrpnlzQ==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.12.0", + "@wordpress/hooks": "^3.14.0", "gettext-parser": "^1.3.1", "lodash": "^4.17.21", "memize": "^1.1.0", @@ -14146,26 +14126,6 @@ "node": ">=12" } }, - "node_modules/@wordpress/keycodes/node_modules/@wordpress/i18n": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.13.0.tgz", - "integrity": "sha512-25x0ylQzXxbaw3oM8afoahiPzzZfzikBNzkzlEJ4MuI9u61zmFedbkIrsmhXtYNlcZ/52RxeUcswHdVs4Hln9Q==", - "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.13.0", - "gettext-parser": "^1.3.1", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "sprintf-js": "^1.1.1", - "tannin": "^1.2.0" - }, - "bin": { - "pot-to-php": "tools/pot-to-php.js" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@wordpress/notices": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/@wordpress/notices/-/notices-3.12.0.tgz", @@ -14474,26 +14434,6 @@ "node": ">=12" } }, - "node_modules/@wordpress/rich-text/node_modules/@wordpress/i18n": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.13.0.tgz", - "integrity": "sha512-25x0ylQzXxbaw3oM8afoahiPzzZfzikBNzkzlEJ4MuI9u61zmFedbkIrsmhXtYNlcZ/52RxeUcswHdVs4Hln9Q==", - "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.13.0", - "gettext-parser": "^1.3.1", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "sprintf-js": "^1.1.1", - "tannin": "^1.2.0" - }, - "bin": { - "pot-to-php": "tools/pot-to-php.js" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@wordpress/rich-text/node_modules/rememo": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/rememo/-/rememo-4.0.1.tgz", @@ -16275,26 +16215,6 @@ "node": ">=12" } }, - "node_modules/@wordpress/server-side-render/node_modules/@wordpress/i18n": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.13.0.tgz", - "integrity": "sha512-25x0ylQzXxbaw3oM8afoahiPzzZfzikBNzkzlEJ4MuI9u61zmFedbkIrsmhXtYNlcZ/52RxeUcswHdVs4Hln9Q==", - "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.13.0", - "gettext-parser": "^1.3.1", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "sprintf-js": "^1.1.1", - "tannin": "^1.2.0" - }, - "bin": { - "pot-to-php": "tools/pot-to-php.js" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@wordpress/server-side-render/node_modules/@wordpress/icons": { "version": "9.4.0", "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-9.4.0.tgz", @@ -60165,22 +60085,6 @@ "@babel/runtime": "^7.16.0", "@wordpress/dom-ready": "^3.13.0", "@wordpress/i18n": "^4.13.0" - }, - "dependencies": { - "@wordpress/i18n": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.13.0.tgz", - "integrity": "sha512-25x0ylQzXxbaw3oM8afoahiPzzZfzikBNzkzlEJ4MuI9u61zmFedbkIrsmhXtYNlcZ/52RxeUcswHdVs4Hln9Q==", - "requires": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.13.0", - "gettext-parser": "^1.3.1", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "sprintf-js": "^1.1.1", - "tannin": "^1.2.0" - } - } } }, "@wordpress/api-fetch": { @@ -62213,9 +62117,9 @@ } }, "@wordpress/hooks": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-3.13.0.tgz", - "integrity": "sha512-N+82Dt3jsREtN0dCypehaWuwCjPOM3ljxyzVWULMDrIK9TaIvkunkHViIyoCkxWk3lolRRqh8XmD+ox/mF+n1A==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-3.14.0.tgz", + "integrity": "sha512-bcQXql4A1VI6gnTdNzMjdHLGTpnf8oWOQ1r8B8fcvtOF3dKictxJPobarWxFbtVTQoegizZT/lPCMoLsnVJpug==", "requires": { "@babel/runtime": "^7.16.0" } @@ -62230,12 +62134,12 @@ } }, "@wordpress/i18n": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.12.0.tgz", - "integrity": "sha512-UTccrAOZ03nszzlG74G+ZkMR/kK0PoS1fqFa8NRFAhHneYadJOnsgCCd5YgDAsN+tAKA6QM7RPmpQMwujvIbzA==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.14.0.tgz", + "integrity": "sha512-46ryvPbh139RkLXQt8oey4aCcWo6HRKb1NLVHU4a4kJ4HRD/HLhAeTHKAMiZFWTg+QC1HZC32vGdEikqrpnlzQ==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.12.0", + "@wordpress/hooks": "^3.14.0", "gettext-parser": "^1.3.1", "lodash": "^4.17.21", "memize": "^1.1.0", @@ -62344,22 +62248,6 @@ "@babel/runtime": "^7.16.0", "@wordpress/i18n": "^4.13.0", "lodash": "^4.17.21" - }, - "dependencies": { - "@wordpress/i18n": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.13.0.tgz", - "integrity": "sha512-25x0ylQzXxbaw3oM8afoahiPzzZfzikBNzkzlEJ4MuI9u61zmFedbkIrsmhXtYNlcZ/52RxeUcswHdVs4Hln9Q==", - "requires": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.13.0", - "gettext-parser": "^1.3.1", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "sprintf-js": "^1.1.1", - "tannin": "^1.2.0" - } - } } }, "@wordpress/notices": { @@ -62592,20 +62480,6 @@ "react-dom": "^17.0.2" } }, - "@wordpress/i18n": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.13.0.tgz", - "integrity": "sha512-25x0ylQzXxbaw3oM8afoahiPzzZfzikBNzkzlEJ4MuI9u61zmFedbkIrsmhXtYNlcZ/52RxeUcswHdVs4Hln9Q==", - "requires": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.13.0", - "gettext-parser": "^1.3.1", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "sprintf-js": "^1.1.1", - "tannin": "^1.2.0" - } - }, "rememo": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/rememo/-/rememo-4.0.1.tgz", @@ -63929,20 +63803,6 @@ "@babel/runtime": "^7.16.0" } }, - "@wordpress/i18n": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.13.0.tgz", - "integrity": "sha512-25x0ylQzXxbaw3oM8afoahiPzzZfzikBNzkzlEJ4MuI9u61zmFedbkIrsmhXtYNlcZ/52RxeUcswHdVs4Hln9Q==", - "requires": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.13.0", - "gettext-parser": "^1.3.1", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "sprintf-js": "^1.1.1", - "tannin": "^1.2.0" - } - }, "@wordpress/icons": { "version": "9.4.0", "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-9.4.0.tgz", diff --git a/package.json b/package.json index 9d42b61ab..3d7258794 100644 --- a/package.json +++ b/package.json @@ -138,7 +138,7 @@ "@wordpress/element": "4.0.4", "@wordpress/env": "4.9.0", "@wordpress/html-entities": "3.12.0", - "@wordpress/i18n": "4.12.0", + "@wordpress/i18n": "4.14.0", "@wordpress/is-shallow-equal": "4.13.0", "@wordpress/prettier-config": "1.4.0", "@wordpress/scripts": "22.3.0", From 0c77e02aa4acbf3df8ee176cf065e9010d9f9bee Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Aug 2022 11:12:38 +0200 Subject: [PATCH 032/164] Bump yoast/phpunit-polyfills from 1.0.2 to 1.0.3 (#6704) Bumps [yoast/phpunit-polyfills](https://github.com/Yoast/PHPUnit-Polyfills) from 1.0.2 to 1.0.3. - [Release notes](https://github.com/Yoast/PHPUnit-Polyfills/releases) - [Changelog](https://github.com/Yoast/PHPUnit-Polyfills/blob/develop/CHANGELOG.md) - [Commits](https://github.com/Yoast/PHPUnit-Polyfills/compare/1.0.2...1.0.3) --- updated-dependencies: - dependency-name: yoast/phpunit-polyfills dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.lock | 108 +++++++++++++++++++++++++------------------------- 1 file changed, 55 insertions(+), 53 deletions(-) diff --git a/composer.lock b/composer.lock index 1c032fc5f..f45af22f4 100644 --- a/composer.lock +++ b/composer.lock @@ -282,29 +282,30 @@ }, { "name": "doctrine/instantiator", - "version": "1.4.0", + "version": "1.4.1", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^8.0", + "doctrine/coding-standard": "^9", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "phpbench/phpbench": "^0.16 || ^1", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.22" }, "type": "library", "autoload": { @@ -331,7 +332,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.0" + "source": "https://github.com/doctrine/instantiator/tree/1.4.1" }, "funding": [ { @@ -347,7 +348,7 @@ "type": "tidelift" } ], - "time": "2020-11-10T18:47:58+00:00" + "time": "2022-03-03T08:28:38+00:00" }, { "name": "erusev/parsedown", @@ -628,37 +629,38 @@ }, { "name": "myclabs/deep-copy", - "version": "1.10.2", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, - "replace": { - "myclabs/deep-copy": "self.version" + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" }, "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, "files": [ "src/DeepCopy/deep_copy.php" - ] + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -674,7 +676,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" }, "funding": [ { @@ -682,7 +684,7 @@ "type": "tidelift" } ], - "time": "2020-11-13T09:40:50+00:00" + "time": "2022-03-03T13:19:32+00:00" }, { "name": "nikic/php-parser", @@ -1269,16 +1271,16 @@ }, { "name": "phpunit/php-file-iterator", - "version": "3.0.5", + "version": "3.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8" + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", "shasum": "" }, "require": { @@ -1317,7 +1319,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" }, "funding": [ { @@ -1325,7 +1327,7 @@ "type": "github" } ], - "time": "2020-09-28T05:57:25+00:00" + "time": "2021-12-02T12:48:52+00:00" }, { "name": "phpunit/php-invoker", @@ -1629,11 +1631,11 @@ } }, "autoload": { - "classmap": [ - "src/" - ], "files": [ "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1973,16 +1975,16 @@ }, { "name": "sebastian/environment", - "version": "5.1.3", + "version": "5.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7", "shasum": "" }, "require": { @@ -2024,7 +2026,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4" }, "funding": [ { @@ -2032,20 +2034,20 @@ "type": "github" } ], - "time": "2020-09-28T05:52:38+00:00" + "time": "2022-04-03T09:37:03+00:00" }, { "name": "sebastian/exporter", - "version": "4.0.3", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", "shasum": "" }, "require": { @@ -2094,14 +2096,14 @@ } ], "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", + "homepage": "https://www.github.com/sebastianbergmann/exporter", "keywords": [ "export", "exporter" ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" }, "funding": [ { @@ -2109,7 +2111,7 @@ "type": "github" } ], - "time": "2020-09-28T05:24:23+00:00" + "time": "2021-11-11T14:18:36+00:00" }, { "name": "sebastian/global-state", @@ -2759,16 +2761,16 @@ }, { "name": "yoast/phpunit-polyfills", - "version": "1.0.2", + "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/Yoast/PHPUnit-Polyfills.git", - "reference": "1a582ab1d91e86aa450340c4d35631a85314ff9f" + "reference": "5ea3536428944955f969bc764bbe09738e151ada" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Yoast/PHPUnit-Polyfills/zipball/1a582ab1d91e86aa450340c4d35631a85314ff9f", - "reference": "1a582ab1d91e86aa450340c4d35631a85314ff9f", + "url": "https://api.github.com/repos/Yoast/PHPUnit-Polyfills/zipball/5ea3536428944955f969bc764bbe09738e151ada", + "reference": "5ea3536428944955f969bc764bbe09738e151ada", "shasum": "" }, "require": { @@ -2816,7 +2818,7 @@ "issues": "https://github.com/Yoast/PHPUnit-Polyfills/issues", "source": "https://github.com/Yoast/PHPUnit-Polyfills" }, - "time": "2021-10-03T08:40:26+00:00" + "time": "2021-11-23T01:37:03+00:00" } ], "aliases": [], From f54dffb47fa37b0693d0526cc18d7736f6f2e9eb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Aug 2022 11:15:53 +0200 Subject: [PATCH 033/164] Bump github/codeql-action from 1 to 2 (#6700) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 1 to 2. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/v1...v2) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Luigi Teschio --- .github/workflows/codeql-analysis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index c7fa30310..3a28bd571 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -43,7 +43,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v1 + uses: github/codeql-action/init@v2 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -54,7 +54,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@v1 + uses: github/codeql-action/autobuild@v2 # โ„น๏ธ Command-line programs to run using the OS shell. # ๐Ÿ“š https://git.io/JvXDl @@ -68,4 +68,4 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 + uses: github/codeql-action/analyze@v2 From 4b641330f105d2a142fbc08447b6783cef640ff1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Aug 2022 12:00:04 +0200 Subject: [PATCH 034/164] Bump johnbillion/wp-hooks-generator from 0.7.0 to 0.9.0 (#6705) Bumps [johnbillion/wp-hooks-generator](https://github.com/johnbillion/wp-hooks-generator) from 0.7.0 to 0.9.0. - [Release notes](https://github.com/johnbillion/wp-hooks-generator/releases) - [Commits](https://github.com/johnbillion/wp-hooks-generator/compare/0.7.0...0.9.0) --- updated-dependencies: - dependency-name: johnbillion/wp-hooks-generator dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Luigi Teschio --- composer.json | 2 +- composer.lock | 42 ++++++++++++++++++++++-------------------- 2 files changed, 23 insertions(+), 21 deletions(-) diff --git a/composer.json b/composer.json index 0f8839383..56a423a8a 100644 --- a/composer.json +++ b/composer.json @@ -19,7 +19,7 @@ "wp-phpunit/wp-phpunit": "^6.0", "woocommerce/woocommerce-sniffs": "0.1.0", "yoast/phpunit-polyfills": "^1.0", - "johnbillion/wp-hooks-generator": "^0.7.0", + "johnbillion/wp-hooks-generator": "^0.9.0", "mockery/mockery": "^1.4" }, "autoload": { diff --git a/composer.lock b/composer.lock index f45af22f4..1a0acfea8 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "850407a57ac7e6ccbae75e7a37a6b3a6", + "content-hash": "938acec166de3572a0884e7e81a9ba52", "packages": [ { "name": "automattic/jetpack-autoloader", @@ -453,20 +453,21 @@ }, { "name": "johnbillion/wp-hooks-generator", - "version": "0.7.0", + "version": "0.9.0", "source": { "type": "git", - "url": "https://github.com/johnbillion/wp-hooks-generator.git", - "reference": "26027e46d5396afbeb5ed18b0cd6a75deb2f2996" + "url": "https://github.com/wp-hooks/generator.git", + "reference": "6c7f173d85452db52a59a3a6bb943cbe7d845cde" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/johnbillion/wp-hooks-generator/zipball/26027e46d5396afbeb5ed18b0cd6a75deb2f2996", - "reference": "26027e46d5396afbeb5ed18b0cd6a75deb2f2996", + "url": "https://api.github.com/repos/wp-hooks/generator/zipball/6c7f173d85452db52a59a3a6bb943cbe7d845cde", + "reference": "6c7f173d85452db52a59a3a6bb943cbe7d845cde", "shasum": "" }, "require": { - "johnbillion/wp-parser-lib": "^1", + "ext-libxml": "*", + "johnbillion/wp-parser-lib": "^1.3.0", "php": ">=7" }, "require-dev": { @@ -489,29 +490,30 @@ ], "description": "Generates a JSON representation of the WordPress actions and filters in your code", "support": { - "issues": "https://github.com/johnbillion/wp-hooks-generator/issues", - "source": "https://github.com/johnbillion/wp-hooks-generator/tree/0.7.0" + "issues": "https://github.com/wp-hooks/generator/issues", + "source": "https://github.com/wp-hooks/generator/tree/0.9.0" }, "funding": [ { - "url": "https://github.com/johnbillion", + "url": "https://github.com/sponsors/johnbillion", "type": "github" } ], - "time": "2021-11-10T17:22:21+00:00" + "abandoned": "wp-hooks/generator", + "time": "2022-07-03T12:35:07+00:00" }, { "name": "johnbillion/wp-parser-lib", - "version": "1.1.0", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/johnbillion/wp-parser-lib.git", - "reference": "4fd13bebd7fc7ac6e3ab9a1abc95afb6d6447647" + "reference": "46ed07365f8bd22f1edc828f9cfeed0c0f2c7d07" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/johnbillion/wp-parser-lib/zipball/4fd13bebd7fc7ac6e3ab9a1abc95afb6d6447647", - "reference": "4fd13bebd7fc7ac6e3ab9a1abc95afb6d6447647", + "url": "https://api.github.com/repos/johnbillion/wp-parser-lib/zipball/46ed07365f8bd22f1edc828f9cfeed0c0f2c7d07", + "reference": "46ed07365f8bd22f1edc828f9cfeed0c0f2c7d07", "shasum": "" }, "require": { @@ -522,11 +524,11 @@ }, "type": "library", "autoload": { - "classmap": [ - "lib" - ], "files": [ "lib/runner.php" + ], + "classmap": [ + "lib" ] }, "notification-url": "https://packagist.org/downloads/", @@ -551,9 +553,9 @@ ], "support": { "issues": "https://github.com/johnbillion/wp-parser-lib/issues", - "source": "https://github.com/johnbillion/wp-parser-lib/tree/1.1.0" + "source": "https://github.com/johnbillion/wp-parser-lib/tree/1.3.0" }, - "time": "2021-01-06T22:49:12+00:00" + "time": "2022-01-27T13:57:08+00:00" }, { "name": "mockery/mockery", From 56177f2a9f1d4e3f4779d4f80aef3fabe899dead Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Aug 2022 12:02:10 +0200 Subject: [PATCH 035/164] Bump @wordpress/wordcount from 3.12.0 to 3.13.0 (#6711) Bumps [@wordpress/wordcount](https://github.com/WordPress/gutenberg/tree/HEAD/packages/wordcount) from 3.12.0 to 3.13.0. - [Release notes](https://github.com/WordPress/gutenberg/releases) - [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/wordcount/CHANGELOG.md) - [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/wordcount@3.13.0/packages/wordcount) --- updated-dependencies: - dependency-name: "@wordpress/wordcount" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4045841b0..ee5aa1ddd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,7 @@ "@wordpress/primitives": "3.0.4", "@wordpress/server-side-render": "3.10.0", "@wordpress/url": "3.13.0", - "@wordpress/wordcount": "3.12.0", + "@wordpress/wordcount": "3.13.0", "classnames": "2.3.1", "compare-versions": "4.1.3", "config": "3.3.7", @@ -16548,9 +16548,9 @@ } }, "node_modules/@wordpress/wordcount": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/@wordpress/wordcount/-/wordcount-3.12.0.tgz", - "integrity": "sha512-noYFwkpzq7uCG85mYFSZueKF+eMXx9vGc6pgY6NX5tKiSsVrcea/SWWuwJcAA3XOtXcDxElf0kzYm7vPOGo1bg==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@wordpress/wordcount/-/wordcount-3.13.0.tgz", + "integrity": "sha512-P0HJZ70BIqAXW5kUccHfSAD6xH/geTOwp5RhZdtyUAqnlj9UR3FPY71XG7EEc1CkCD82+0Bc+iw0wm+oV6PKIQ==", "dependencies": { "@babel/runtime": "^7.16.0" }, @@ -64067,9 +64067,9 @@ "integrity": "sha512-4648iMotdeNMe3vLKWTx5C/X1+4hey00GrxAClTiAufGMR3slCjE8nQhnWtFfyqYZi0bSpuF+kYd6ofsKrtcQg==" }, "@wordpress/wordcount": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/@wordpress/wordcount/-/wordcount-3.12.0.tgz", - "integrity": "sha512-noYFwkpzq7uCG85mYFSZueKF+eMXx9vGc6pgY6NX5tKiSsVrcea/SWWuwJcAA3XOtXcDxElf0kzYm7vPOGo1bg==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@wordpress/wordcount/-/wordcount-3.13.0.tgz", + "integrity": "sha512-P0HJZ70BIqAXW5kUccHfSAD6xH/geTOwp5RhZdtyUAqnlj9UR3FPY71XG7EEc1CkCD82+0Bc+iw0wm+oV6PKIQ==", "requires": { "@babel/runtime": "^7.16.0" } diff --git a/package.json b/package.json index 3d7258794..54772770d 100644 --- a/package.json +++ b/package.json @@ -220,7 +220,7 @@ "@wordpress/primitives": "3.0.4", "@wordpress/server-side-render": "3.10.0", "@wordpress/url": "3.13.0", - "@wordpress/wordcount": "3.12.0", + "@wordpress/wordcount": "3.13.0", "classnames": "2.3.1", "compare-versions": "4.1.3", "config": "3.3.7", From 806bbccaab60986310f7778db57fca003bb82f7d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Aug 2022 12:03:16 +0200 Subject: [PATCH 036/164] Bump @typescript-eslint/parser from 5.30.5 to 5.31.0 (#6809) Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.30.5 to 5.31.0. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.31.0/packages/parser) --- updated-dependencies: - dependency-name: "@typescript-eslint/parser" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Luigi Teschio --- package-lock.json | 167 ++++++++++++++++++++++++++++++++++++++++++---- package.json | 2 +- 2 files changed, 155 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index ee5aa1ddd..ab2c849e5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -72,7 +72,7 @@ "@types/wordpress__data": "4.6.11", "@types/wordpress__data-controls": "2.2.0", "@typescript-eslint/eslint-plugin": "5.30.5", - "@typescript-eslint/parser": "5.30.5", + "@typescript-eslint/parser": "5.31.0", "@woocommerce/api": "0.2.0", "@woocommerce/e2e-utils": "0.2.0", "@woocommerce/eslint-plugin": "2.0.0", @@ -10616,14 +10616,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.30.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.30.5.tgz", - "integrity": "sha512-zj251pcPXI8GO9NDKWWmygP6+UjwWmrdf9qMW/L/uQJBM/0XbU2inxe5io/234y/RCvwpKEYjZ6c1YrXERkK4Q==", + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.31.0.tgz", + "integrity": "sha512-UStjQiZ9OFTFReTrN+iGrC6O/ko9LVDhreEK5S3edmXgR396JGq7CoX2TWIptqt/ESzU2iRKXAHfSF2WJFcWHw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.30.5", - "@typescript-eslint/types": "5.30.5", - "@typescript-eslint/typescript-estree": "5.30.5", + "@typescript-eslint/scope-manager": "5.31.0", + "@typescript-eslint/types": "5.31.0", + "@typescript-eslint/typescript-estree": "5.31.0", "debug": "^4.3.4" }, "engines": { @@ -10642,6 +10642,95 @@ } } }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.31.0.tgz", + "integrity": "sha512-8jfEzBYDBG88rcXFxajdVavGxb5/XKXyvWgvD8Qix3EEJLCFIdVloJw+r9ww0wbyNLOTYyBsR+4ALNGdlalLLg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.31.0", + "@typescript-eslint/visitor-keys": "5.31.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.31.0.tgz", + "integrity": "sha512-/f/rMaEseux+I4wmR6mfpM2wvtNZb1p9hAV77hWfuKc3pmaANp5dLAZSiE3/8oXTYTt3uV9KW5yZKJsMievp6g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.31.0.tgz", + "integrity": "sha512-3S625TMcARX71wBc2qubHaoUwMEn+l9TCsaIzYI/ET31Xm2c9YQ+zhGgpydjorwQO9pLfR/6peTzS/0G3J/hDw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.31.0", + "@typescript-eslint/visitor-keys": "5.31.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.31.0.tgz", + "integrity": "sha512-ZK0jVxSjS4gnPirpVjXHz7mgdOsZUHzNYSfTw2yPa3agfbt9YfqaBiBZFSSxeBWnpWkzCxTfUpnzA3Vily/CSg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.31.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@typescript-eslint/scope-manager": { "version": "5.30.5", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.30.5.tgz", @@ -59560,15 +59649,67 @@ } }, "@typescript-eslint/parser": { - "version": "5.30.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.30.5.tgz", - "integrity": "sha512-zj251pcPXI8GO9NDKWWmygP6+UjwWmrdf9qMW/L/uQJBM/0XbU2inxe5io/234y/RCvwpKEYjZ6c1YrXERkK4Q==", + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.31.0.tgz", + "integrity": "sha512-UStjQiZ9OFTFReTrN+iGrC6O/ko9LVDhreEK5S3edmXgR396JGq7CoX2TWIptqt/ESzU2iRKXAHfSF2WJFcWHw==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.30.5", - "@typescript-eslint/types": "5.30.5", - "@typescript-eslint/typescript-estree": "5.30.5", + "@typescript-eslint/scope-manager": "5.31.0", + "@typescript-eslint/types": "5.31.0", + "@typescript-eslint/typescript-estree": "5.31.0", "debug": "^4.3.4" + }, + "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.31.0.tgz", + "integrity": "sha512-8jfEzBYDBG88rcXFxajdVavGxb5/XKXyvWgvD8Qix3EEJLCFIdVloJw+r9ww0wbyNLOTYyBsR+4ALNGdlalLLg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.31.0", + "@typescript-eslint/visitor-keys": "5.31.0" + } + }, + "@typescript-eslint/types": { + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.31.0.tgz", + "integrity": "sha512-/f/rMaEseux+I4wmR6mfpM2wvtNZb1p9hAV77hWfuKc3pmaANp5dLAZSiE3/8oXTYTt3uV9KW5yZKJsMievp6g==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.31.0.tgz", + "integrity": "sha512-3S625TMcARX71wBc2qubHaoUwMEn+l9TCsaIzYI/ET31Xm2c9YQ+zhGgpydjorwQO9pLfR/6peTzS/0G3J/hDw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.31.0", + "@typescript-eslint/visitor-keys": "5.31.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.31.0.tgz", + "integrity": "sha512-ZK0jVxSjS4gnPirpVjXHz7mgdOsZUHzNYSfTw2yPa3agfbt9YfqaBiBZFSSxeBWnpWkzCxTfUpnzA3Vily/CSg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.31.0", + "eslint-visitor-keys": "^3.3.0" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, "@typescript-eslint/scope-manager": { diff --git a/package.json b/package.json index 54772770d..00be04d95 100644 --- a/package.json +++ b/package.json @@ -118,7 +118,7 @@ "@types/wordpress__data": "4.6.11", "@types/wordpress__data-controls": "2.2.0", "@typescript-eslint/eslint-plugin": "5.30.5", - "@typescript-eslint/parser": "5.30.5", + "@typescript-eslint/parser": "5.31.0", "@woocommerce/api": "0.2.0", "@woocommerce/e2e-utils": "0.2.0", "@woocommerce/eslint-plugin": "2.0.0", From dc3a3f01a44fd95329fee80643d0376d61c03480 Mon Sep 17 00:00:00 2001 From: github-actions Date: Wed, 3 Aug 2022 10:28:44 +0000 Subject: [PATCH 037/164] Empty commit for release pull request From 23c8e621faa5a13ed7a247e4b2ce065702cc1514 Mon Sep 17 00:00:00 2001 From: Thomas Roberts <5656702+opr@users.noreply.github.com> Date: Wed, 3 Aug 2022 03:51:56 -0700 Subject: [PATCH 038/164] Ensure onChange is set for radio buttons in SavedPaymentMethodOptions (#6825) Co-authored-by: Seghir Nadir --- .../payment-methods/saved-payment-method-options.js | 1 + 1 file changed, 1 insertion(+) diff --git a/assets/js/blocks/cart-checkout-shared/payment-methods/saved-payment-method-options.js b/assets/js/blocks/cart-checkout-shared/payment-methods/saved-payment-method-options.js index e2abed1cc..3db78c57a 100644 --- a/assets/js/blocks/cart-checkout-shared/payment-methods/saved-payment-method-options.js +++ b/assets/js/blocks/cart-checkout-shared/payment-methods/saved-payment-method-options.js @@ -136,6 +136,7 @@ const SavedPaymentMethodOptions = () => { id={ 'wc-payment-method-saved-tokens' } selected={ activeSavedToken } options={ options } + onChange={ () => void 0 } /> { savedPaymentMethodHandler } From 74a24d8dda96ecada08f819fc2d469468a98dbc1 Mon Sep 17 00:00:00 2001 From: Luigi Teschio Date: Wed, 3 Aug 2022 14:00:15 +0200 Subject: [PATCH 039/164] delete renovate bot (#6824) --- .github/dependabot.yml | 4 ++ .github/workflows/js-css-md-linting.yml | 2 + .../project-management-automations.yml | 3 ++ renovate.json | 37 ------------------- 4 files changed, 9 insertions(+), 37 deletions(-) delete mode 100644 renovate.json diff --git a/.github/dependabot.yml b/.github/dependabot.yml index acc64ee99..d55d34989 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -7,6 +7,8 @@ updates: schedule: interval: 'monthly' open-pull-requests-limit: 10 + labels: + - "skip-changelog" # Maintain dependencies for npm - package-ecosystem: 'npm' @@ -21,3 +23,5 @@ updates: schedule: interval: 'weekly' open-pull-requests-limit: 10 + labels: + - "skip-changelog" diff --git a/.github/workflows/js-css-md-linting.yml b/.github/workflows/js-css-md-linting.yml index 05c868843..c21ba4d0d 100644 --- a/.github/workflows/js-css-md-linting.yml +++ b/.github/workflows/js-css-md-linting.yml @@ -4,6 +4,8 @@ on: pull_request: push: branches: [trunk] +permissions: + actions: write jobs: # cache node and modules diff --git a/.github/workflows/project-management-automations.yml b/.github/workflows/project-management-automations.yml index 88a93f6cb..b76c2a96a 100644 --- a/.github/workflows/project-management-automations.yml +++ b/.github/workflows/project-management-automations.yml @@ -5,6 +5,9 @@ on: issues: types: [edited] name: Project management automations +permissions: + pull-requests: write + actions: write jobs: project-management-automation: runs-on: ubuntu-latest diff --git a/renovate.json b/renovate.json deleted file mode 100644 index c9759d494..000000000 --- a/renovate.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "extends": [ "config:base" ], - "lockFileMaintenance": { "enabled": true }, - "ignoreDeps": [ "husky" ], - "prConcurrentLimit": 5, - "schedule": [ "before 3am on wednesday" ], - "composer": { - "enabled": false - }, - "labels": [ "type: dependencies", "skip-changelog" ], - "packageRules": [ - { - "packageNames": [ - "automattic/jetpack-autoloader", - "composer/installers" - ], - "rangeStrategy": "bump" - }, - { - "matchUpdateTypes": [ "patch", "pin", "digest" ], - "depTypeList": [ "dev" ], - "automerge": true - }, - { - "matchUpdateTypes": [ "major", "minor" ], - "depTypeList": [ "dev" ], - "automerge": false - }, - { - "matchUpdateTypes": [ "major", "minor", "patch", "pin", "digest" ], - "depTypeList": [ "devDependencies" ], - "automerge": true, - "prPriority": 1 - } - ], - "rebaseWhen": "conflicted" -} From e27049954a3528fb20a32401f9f3be02120881e1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Aug 2022 18:16:04 +0200 Subject: [PATCH 040/164] Bump @wordpress/api-fetch from 6.9.0 to 6.11.0 (#6833) Bumps [@wordpress/api-fetch](https://github.com/WordPress/gutenberg/tree/HEAD/packages/api-fetch) from 6.9.0 to 6.11.0. - [Release notes](https://github.com/WordPress/gutenberg/releases) - [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/api-fetch/CHANGELOG.md) - [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/api-fetch@6.11.0/packages/api-fetch) --- updated-dependencies: - dependency-name: "@wordpress/api-fetch" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 45 ++++++++++++++++++++++++++++++++++----------- package.json | 2 +- 2 files changed, 35 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index ab2c849e5..e0a7ec308 100644 --- a/package-lock.json +++ b/package-lock.json @@ -77,7 +77,7 @@ "@woocommerce/e2e-utils": "0.2.0", "@woocommerce/eslint-plugin": "2.0.0", "@woocommerce/woocommerce-rest-api": "1.0.1", - "@wordpress/api-fetch": "6.9.0", + "@wordpress/api-fetch": "6.11.0", "@wordpress/babel-preset-default": "6.14.0", "@wordpress/base-styles": "4.0.4", "@wordpress/block-editor": "8.2.0", @@ -11343,13 +11343,25 @@ } }, "node_modules/@wordpress/api-fetch": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-6.9.0.tgz", - "integrity": "sha512-H0IvLlisBcfKFa4tlMgtqFy7s7Iz3SSe6cEzqAAesK1fg+j3NewDP4fcQz5Ooo6pL+Y2A8oUM5dawjJctmsnAA==", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-6.11.0.tgz", + "integrity": "sha512-C1HTWdJQ7ikhJ4mT+rONTODquJ/Xq5HteKak/VN+vf1VmLVfRX18wJ84kCAAZ83UNOIsE8EgjJrjJy//R+HWzg==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/i18n": "^4.12.0", - "@wordpress/url": "^3.13.0" + "@wordpress/i18n": "^4.14.0", + "@wordpress/url": "^3.15.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@wordpress/api-fetch/node_modules/@wordpress/url": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-3.15.0.tgz", + "integrity": "sha512-LLlgCMbherqqnxAuK6kb997MKkzfnvkyQQ5RazBQKBn//RBXrW/w6BMVglm4QjV7L65N/IfqFd36QLZDMuiYDA==", + "dependencies": { + "@babel/runtime": "^7.16.0", + "remove-accents": "^0.4.2" }, "engines": { "node": ">=12" @@ -60229,13 +60241,24 @@ } }, "@wordpress/api-fetch": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-6.9.0.tgz", - "integrity": "sha512-H0IvLlisBcfKFa4tlMgtqFy7s7Iz3SSe6cEzqAAesK1fg+j3NewDP4fcQz5Ooo6pL+Y2A8oUM5dawjJctmsnAA==", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-6.11.0.tgz", + "integrity": "sha512-C1HTWdJQ7ikhJ4mT+rONTODquJ/Xq5HteKak/VN+vf1VmLVfRX18wJ84kCAAZ83UNOIsE8EgjJrjJy//R+HWzg==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/i18n": "^4.12.0", - "@wordpress/url": "^3.13.0" + "@wordpress/i18n": "^4.14.0", + "@wordpress/url": "^3.15.0" + }, + "dependencies": { + "@wordpress/url": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-3.15.0.tgz", + "integrity": "sha512-LLlgCMbherqqnxAuK6kb997MKkzfnvkyQQ5RazBQKBn//RBXrW/w6BMVglm4QjV7L65N/IfqFd36QLZDMuiYDA==", + "requires": { + "@babel/runtime": "^7.16.0", + "remove-accents": "^0.4.2" + } + } } }, "@wordpress/autop": { diff --git a/package.json b/package.json index 00be04d95..3cbfefa00 100644 --- a/package.json +++ b/package.json @@ -123,7 +123,7 @@ "@woocommerce/e2e-utils": "0.2.0", "@woocommerce/eslint-plugin": "2.0.0", "@woocommerce/woocommerce-rest-api": "1.0.1", - "@wordpress/api-fetch": "6.9.0", + "@wordpress/api-fetch": "6.11.0", "@wordpress/babel-preset-default": "6.14.0", "@wordpress/base-styles": "4.0.4", "@wordpress/block-editor": "8.2.0", From c1cecbc2d8a450020193bc35b8071bff39265d20 Mon Sep 17 00:00:00 2001 From: Tung Du Date: Thu, 4 Aug 2022 03:22:37 +0700 Subject: [PATCH 041/164] E2E: Try improving product list loading state detection and fix Site Editor URL (#6811) * e2e:try: detect loading state for product list * fix: always use site-editor.php * wait for price filter to be applied before checking the result --- .../components/product-list/product-list.tsx | 6 ++- tests/e2e/specs/backend/mini-cart.test.js | 5 +-- .../shopper/filter-products-by-price.test.ts | 9 ++++- tests/e2e/utils.js | 38 +++++-------------- 4 files changed, 23 insertions(+), 35 deletions(-) diff --git a/assets/js/base/components/product-list/product-list.tsx b/assets/js/base/components/product-list/product-list.tsx index c2d0ca4b2..00133d8ed 100644 --- a/assets/js/base/components/product-list/product-list.tsx +++ b/assets/js/base/components/product-list/product-list.tsx @@ -238,7 +238,11 @@ const ProductList = ( { ) } { ! hasProducts && ! hasFilters && } { hasProducts && ( - + + + Apply filter + + + `; @@ -122,84 +243,144 @@ exports[`Testing stock filter renders the stock filter block with the product co class="wc-block-checkbox-list wc-block-components-checkbox-list wc-block-stock-filter-list" >
  • - - + +
  • - - + +
  • - - + +
  • +
    `; diff --git a/packages/checkout/components/checkbox-control/index.tsx b/packages/checkout/components/checkbox-control/index.tsx index 063dd2246..bbce84858 100644 --- a/packages/checkout/components/checkbox-control/index.tsx +++ b/packages/checkout/components/checkbox-control/index.tsx @@ -11,12 +11,13 @@ import './style.scss'; export type CheckboxControlProps = { className?: string; - label?: string; + label?: string | React.ReactNode; id?: string; onChange: ( value: boolean ) => void; children?: React.ReactChildren; hasError?: boolean; checked?: boolean; + disabled?: boolean; }; /** @@ -30,6 +31,7 @@ export const CheckboxControl = ( { children, hasError = false, checked = false, + disabled = false, ...rest }: CheckboxControlProps ): JSX.Element => { const instanceId = useInstanceId( CheckboxControl ); @@ -53,6 +55,7 @@ export const CheckboxControl = ( { onChange={ ( event ) => onChange( event.target.checked ) } aria-invalid={ hasError === true } checked={ checked } + disabled={ disabled } { ...rest } /> { } ); it( 'filter button can be toggled', async () => { - const toggleLabel = await findLabelWithText( 'Filter button' ); + const toggleLabel = await findLabelWithText( 'Apply filters' ); await expect( toggleLabel ).toToggleElement( `${ block.class } .wc-block-filter-submit-button` ); diff --git a/tests/e2e/specs/shopper/filter-products-by-stock.test.ts b/tests/e2e/specs/shopper/filter-products-by-stock.test.ts index a6c5726c0..9fd562de6 100644 --- a/tests/e2e/specs/shopper/filter-products-by-stock.test.ts +++ b/tests/e2e/specs/shopper/filter-products-by-stock.test.ts @@ -29,7 +29,8 @@ const block = { class: '.wc-block-stock-filter', selectors: { editor: { - filterButtonToggle: "//label[text()='Filter button']", + filterButtonToggle: + '//label[text()="Show \'Apply filters\' button"]', }, frontend: { productsList: '.wc-block-grid__products > li', From d8eba08ed53787caf00a071a08a4023b6c89b5cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Albert=20Juh=C3=A9=20Lluveras?= Date: Mon, 22 Aug 2022 14:29:29 +0200 Subject: [PATCH 086/164] When converting the Filter Products by Price widget into the Filter by Price block, don't use inline input (#6953) --- assets/js/blocks/price-filter/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/js/blocks/price-filter/index.tsx b/assets/js/blocks/price-filter/index.tsx index b8e5ded64..744d6f688 100644 --- a/assets/js/blocks/price-filter/index.tsx +++ b/assets/js/blocks/price-filter/index.tsx @@ -51,7 +51,7 @@ registerBlockType( metadata, { 'woo-gutenberg-products-block' ), headingLevel: 3, - inlineInput: true, + inlineInput: false, } ), }, ], From 71ce8849c96a1a8694a1ad62c1279d9739b55da1 Mon Sep 17 00:00:00 2001 From: Seghir Nadir Date: Mon, 22 Aug 2022 22:24:49 +0100 Subject: [PATCH 087/164] document add rest schema (#6960) --- .../rest-api/available-endpoints-to-extend.md | 34 ++++++++++++++----- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/docs/third-party-developers/extensibility/rest-api/available-endpoints-to-extend.md b/docs/third-party-developers/extensibility/rest-api/available-endpoints-to-extend.md index 483e8b809..25dda677b 100644 --- a/docs/third-party-developers/extensibility/rest-api/available-endpoints-to-extend.md +++ b/docs/third-party-developers/extensibility/rest-api/available-endpoints-to-extend.md @@ -2,18 +2,34 @@ ## Table of Contents -- [`wc/store/cart`](#wcstorecart) - - [Passed Parameters:](#passed-parameters) - - [Key:](#key) -- [`wc/store/cart/items`](#wcstorecartitems) - - [Passed Parameters:](#passed-parameters-1) - - [Key:](#key-1) -- [`wc/store/products`](#wcstoreproducts) - - [Passed Parameters:](#passed-parameters-2) - - [Key:](#key-2) +- [`wc/store/checkout`](#wcstorecheckout) + - [Passed Parameters](#passed-parameters) + - [Key](#key) +- [`wc/store/cart`](#wcstorecart) + - [Passed Parameters](#passed-parameters-1) + - [Key](#key-1) +- [`wc/store/cart/items`](#wcstorecartitems) + - [Passed Parameters](#passed-parameters-2) + - [Key](#key-2) +- [`wc/store/products`](#wcstoreproducts) + - [Passed Parameters](#passed-parameters-3) + - [Key](#key-3) To see how to add your data to Store API using ExtendSchema, [check this document](./extend-rest-api-add-data.md). This is a list of available endpoints that you can extend. If you want to add a new endpoint, [check this document](./extend-rest-api-new-endpoint.md). +## `wc/store/checkout` + +The cartcheckout endpoint is extensible via ExtendSchema. The data is available via the `extensions` key in the response. + +### Passed Parameters + +- `data_callback`: none. +- `schema_callback`: none. + +### Key + +- `CheckoutSchema::IDENTIFIER` + ## `wc/store/cart` The main cart endpoint is extensible via ExtendSchema. The data is available via the `extensions` key in the response. From 89175d2fdfde24b63e2e577c454f12a96fef7df7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alba=20Rinc=C3=B3n?= Date: Tue, 23 Aug 2022 12:10:46 +0200 Subject: [PATCH 088/164] Make the inlineInput default to false to avoid changing existing block behaviour (#6957) --- assets/js/blocks/price-filter/block.json | 2 +- assets/js/blocks/price-filter/frontend.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/js/blocks/price-filter/block.json b/assets/js/blocks/price-filter/block.json index d22b929c5..2bfd91e85 100644 --- a/assets/js/blocks/price-filter/block.json +++ b/assets/js/blocks/price-filter/block.json @@ -29,7 +29,7 @@ }, "inlineInput": { "type": "boolean", - "default": true + "default": false }, "showFilterButton": { "type": "boolean", diff --git a/assets/js/blocks/price-filter/frontend.ts b/assets/js/blocks/price-filter/frontend.ts index 6d38ed170..ef69736b0 100644 --- a/assets/js/blocks/price-filter/frontend.ts +++ b/assets/js/blocks/price-filter/frontend.ts @@ -14,7 +14,7 @@ const getProps = ( el: HTMLElement ) => { return { attributes: { showInputFields: el.dataset.showinputfields === 'true', - inlineInput: el.dataset.inlineInput !== 'false', + inlineInput: el.dataset.inlineInput === 'true', showFilterButton: el.dataset.showfilterbutton === 'true', heading: el.dataset.heading || blockAttributes.heading.default, headingLevel: el.dataset.headingLevel From 7d970041006d7b2472ff139e0d107f277023714b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alba=20Rinc=C3=B3n?= Date: Tue, 23 Aug 2022 12:38:39 +0200 Subject: [PATCH 089/164] Update filter button styles (#6958) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update filter button styles * Address feedback: use mixings * Improve the editor selector for stock apply button Co-authored-by: Albert Juhรฉ Lluveras * Reduce vertical margin and input width Co-authored-by: Albert Juhรฉ Lluveras --- assets/js/base/components/price-slider/style.scss | 4 ++-- assets/js/blocks/attribute-filter/style.scss | 6 ++++++ assets/js/blocks/price-filter/style.scss | 6 ++++++ assets/js/blocks/stock-filter/style.scss | 11 +++++++---- 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/assets/js/base/components/price-slider/style.scss b/assets/js/base/components/price-slider/style.scss index becb6dd49..b93622dd3 100644 --- a/assets/js/base/components/price-slider/style.scss +++ b/assets/js/base/components/price-slider/style.scss @@ -102,14 +102,14 @@ display: flex; gap: $gap-smaller; justify-content: space-between; - margin: $gap-large 0; + margin: $gap 0; .wc-block-components-price-slider__amount { margin: 0; border-radius: 4px; border-width: 1px; width: auto; - max-width: 100px; + max-width: 80px; min-width: 0; padding: $gap-smaller; } diff --git a/assets/js/blocks/attribute-filter/style.scss b/assets/js/blocks/attribute-filter/style.scss index 73375727e..fc6d53741 100644 --- a/assets/js/blocks/attribute-filter/style.scss +++ b/assets/js/blocks/attribute-filter/style.scss @@ -67,3 +67,9 @@ } } } + +.editor-styles-wrapper .wc-block-attribute-filter__button.wc-block-attribute-filter__button, +.wc-block-attribute-filter__button.wc-block-attribute-filter__button { + padding: em($gap-smaller) em($gap); + @include font-size(small); +} diff --git a/assets/js/blocks/price-filter/style.scss b/assets/js/blocks/price-filter/style.scss index 03784801a..4038c964e 100644 --- a/assets/js/blocks/price-filter/style.scss +++ b/assets/js/blocks/price-filter/style.scss @@ -26,3 +26,9 @@ border-style: solid; } } + +.editor-styles-wrapper .wc-block-price-filter__button.wc-block-components-price-slider__button, +.wc-block-price-filter__button.wc-block-components-price-slider__button { + padding: em($gap-smaller) em($gap); + @include font-size(small); +} diff --git a/assets/js/blocks/stock-filter/style.scss b/assets/js/blocks/stock-filter/style.scss index 705aad8eb..ac3d0ed12 100644 --- a/assets/js/blocks/stock-filter/style.scss +++ b/assets/js/blocks/stock-filter/style.scss @@ -21,10 +21,6 @@ opacity: 0.6; } - .wc-block-stock-filter__button { - margin-top: $gap-smaller; - } - .wc-block-stock-filter__actions { align-items: center; display: flex; @@ -39,3 +35,10 @@ } } } + +.editor-styles-wrapper .wc-block-stock-filter .wc-block-stock-filter__button, +.wc-block-stock-filter .wc-block-stock-filter__button { + margin-top: em($gap-smaller); + padding: em($gap-smaller) em($gap); + @include font-size(small); +} From 4ce5098c233962a31eeec2ec03e5ced3bde93c18 Mon Sep 17 00:00:00 2001 From: Tomasz Tunik Date: Tue, 23 Aug 2022 18:06:17 +0200 Subject: [PATCH 090/164] Product search block as core/search variation (#6191) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Albert Juhรฉ Lluveras Co-authored-by: Tung Du --- assets/js/blocks/product-search/editor.scss | 6 + assets/js/blocks/product-search/index.js | 108 --------- assets/js/blocks/product-search/index.tsx | 206 ++++++++++++++++++ src/BlockTypes/ProductSearch.php | 32 +++ .../e2e/specs/backend/product-search.test.js | 94 ++++---- tests/e2e/utils.js | 15 ++ 6 files changed, 310 insertions(+), 151 deletions(-) delete mode 100644 assets/js/blocks/product-search/index.js create mode 100644 assets/js/blocks/product-search/index.tsx diff --git a/assets/js/blocks/product-search/editor.scss b/assets/js/blocks/product-search/editor.scss index 224f0ce39..d47eb352c 100644 --- a/assets/js/blocks/product-search/editor.scss +++ b/assets/js/blocks/product-search/editor.scss @@ -14,3 +14,9 @@ } } } + +.wc-block-components-actions { + .block-editor-warning__actions { + margin-top: 0; + } +} diff --git a/assets/js/blocks/product-search/index.js b/assets/js/blocks/product-search/index.js deleted file mode 100644 index d230edccf..000000000 --- a/assets/js/blocks/product-search/index.js +++ /dev/null @@ -1,108 +0,0 @@ -/** - * External dependencies - */ -import { __ } from '@wordpress/i18n'; -import { createBlock, registerBlockType } from '@wordpress/blocks'; -import { Icon, search } from '@wordpress/icons'; -/** - * Internal dependencies - */ -import './style.scss'; -import './editor.scss'; -import Block from './block.js'; -import edit from './edit.js'; - -const attributes = { - /** - * Whether to show the field label. - */ - hasLabel: { - type: 'boolean', - default: true, - }, - - /** - * Search field label. - */ - label: { - type: 'string', - default: __( 'Search', 'woo-gutenberg-products-block' ), - }, - - /** - * Search field placeholder. - */ - placeholder: { - type: 'string', - default: __( 'Search productsโ€ฆ', 'woo-gutenberg-products-block' ), - }, - - /** - * Store the instance ID. - */ - formId: { - type: 'string', - default: '', - }, -}; - -registerBlockType( 'woocommerce/product-search', { - title: __( 'Product Search', 'woo-gutenberg-products-block' ), - icon: { - src: ( - - ), - }, - category: 'woocommerce', - keywords: [ __( 'WooCommerce', 'woo-gutenberg-products-block' ) ], - description: __( - 'A search box to allow customers to search for products by keyword.', - 'woo-gutenberg-products-block' - ), - supports: { - align: [ 'wide', 'full' ], - }, - example: { - attributes: { - hasLabel: true, - }, - }, - attributes, - transforms: { - from: [ - { - type: 'block', - blocks: [ 'core/legacy-widget' ], - // We can't transform if raw instance isn't shown in the REST API. - isMatch: ( { idBase, instance } ) => - idBase === 'woocommerce_product_search' && !! instance?.raw, - transform: ( { instance } ) => - createBlock( 'woocommerce/product-search', { - label: - instance.raw.title === '' - ? __( 'Search', 'woo-gutenberg-products-block' ) - : instance.raw.title, - } ), - }, - ], - }, - deprecated: [ - { - attributes, - save( props ) { - return ( -
    - -
    - ); - }, - }, - ], - edit, - save() { - return null; - }, -} ); diff --git a/assets/js/blocks/product-search/index.tsx b/assets/js/blocks/product-search/index.tsx new file mode 100644 index 000000000..04e5c64d1 --- /dev/null +++ b/assets/js/blocks/product-search/index.tsx @@ -0,0 +1,206 @@ +/* eslint-disable @typescript-eslint/ban-ts-comment */ +/** + * External dependencies + */ +import { store as blockEditorStore, Warning } from '@wordpress/block-editor'; +import { useDispatch, useSelect } from '@wordpress/data'; +import { __ } from '@wordpress/i18n'; +import { Icon, search } from '@wordpress/icons'; +import { getSettingWithCoercion } from '@woocommerce/settings'; +import { isBoolean } from '@woocommerce/types'; +import { Button } from '@wordpress/components'; +import { + // @ts-ignore waiting for @types/wordpress__blocks update + registerBlockVariation, + registerBlockType, + createBlock, +} from '@wordpress/blocks'; + +/** + * Internal dependencies + */ +import './style.scss'; +import './editor.scss'; +import Block from './block.js'; +import Edit from './edit.js'; + +const isBlockVariationAvailable = getSettingWithCoercion( + 'isBlockVariationAvailable', + false, + isBoolean +); + +const attributes = { + /** + * Whether to show the field label. + */ + hasLabel: { + type: 'boolean', + default: true, + }, + + /** + * Search field label. + */ + label: { + type: 'string', + default: __( 'Search', 'woo-gutenberg-products-block' ), + }, + + /** + * Search field placeholder. + */ + placeholder: { + type: 'string', + default: __( 'Search productsโ€ฆ', 'woo-gutenberg-products-block' ), + }, + + /** + * Store the instance ID. + */ + formId: { + type: 'string', + default: '', + }, +}; + +const PRODUCT_SEARCH_ATTRIBUTES = { + label: attributes.label.default, + buttonText: attributes.label.default, + placeholder: attributes.placeholder.default, + query: { + post_type: 'product', + }, +}; + +const DeprecatedBlockEdit = ( { clientId }: { clientId: string } ) => { + // @ts-ignore @wordpress/block-editor/store types not provided + const { replaceBlocks } = useDispatch( blockEditorStore ); + + const currentBlockAttributes = useSelect( + ( select ) => + select( 'core/block-editor' ).getBlockAttributes( clientId ), + [ clientId ] + ); + + const updateBlock = () => { + replaceBlocks( + clientId, + createBlock( 'core/search', { + label: + currentBlockAttributes?.label || + PRODUCT_SEARCH_ATTRIBUTES.label, + buttonText: PRODUCT_SEARCH_ATTRIBUTES.buttonText, + placeholder: + currentBlockAttributes?.placeholder || + PRODUCT_SEARCH_ATTRIBUTES.placeholder, + query: PRODUCT_SEARCH_ATTRIBUTES.query, + } ) + ); + }; + + const actions = [ + , + ]; + + return ( + + { __( + 'This version of the Product Search block is outdated. Upgrade to continue using.', + 'woo-gutenberg-products-block' + ) } + + ); +}; + +registerBlockType( 'woocommerce/product-search', { + title: __( 'Product Search', 'woo-gutenberg-products-block' ), + icon: { + src: ( + + ), + }, + category: 'woocommerce', + keywords: [ __( 'WooCommerce', 'woo-gutenberg-products-block' ) ], + description: __( + 'A search box to allow customers to search for products by keyword.', + 'woo-gutenberg-products-block' + ), + supports: { + align: [ 'wide', 'full' ], + inserter: ! isBlockVariationAvailable, + }, + example: { + attributes: { + hasLabel: true, + }, + }, + attributes, + transforms: { + from: [ + { + type: 'block', + blocks: [ 'core/legacy-widget' ], + // We can't transform if raw instance isn't shown in the REST API. + isMatch: ( { idBase, instance } ) => + idBase === 'woocommerce_product_search' && !! instance?.raw, + transform: ( { instance } ) => + createBlock( 'woocommerce/product-search', { + label: + instance.raw.title || + PRODUCT_SEARCH_ATTRIBUTES.label, + } ), + }, + ], + }, + deprecated: [ + { + attributes, + save( props ) { + return ( +
    + +
    + ); + }, + }, + ], + edit: isBlockVariationAvailable ? DeprecatedBlockEdit : Edit, + save() { + return null; + }, +} ); + +if ( isBlockVariationAvailable ) { + registerBlockVariation( 'core/search', { + name: 'woocommerce/product-search', + title: __( 'Product Search', 'woo-gutenberg-products-block' ), + icon: { + src: ( + + ), + }, + // @ts-ignore waiting for @types/wordpress__blocks update + isActive: ( blockAttributes, variationAttributes ) => { + return ( + blockAttributes.query?.post_type === + variationAttributes.query.post_type + ); + }, + category: 'woocommerce', + keywords: [ __( 'WooCommerce', 'woo-gutenberg-products-block' ) ], + description: __( + 'A search box to allow customers to search for products by keyword.', + 'woo-gutenberg-products-block' + ), + attributes: PRODUCT_SEARCH_ATTRIBUTES, + } ); +} diff --git a/src/BlockTypes/ProductSearch.php b/src/BlockTypes/ProductSearch.php index 613aa67d7..2afa20ac5 100644 --- a/src/BlockTypes/ProductSearch.php +++ b/src/BlockTypes/ProductSearch.php @@ -124,4 +124,36 @@ protected function render( $attributes, $content ) { $label_markup . $field_markup ); } + + /** + * Extra data passed through from server to client for block. + * + * @param array $attributes Any attributes that currently are available from the block. + * Note, this will be empty in the editor context when the block is + * not in the post content on editor load. + */ + protected function enqueue_data( array $attributes = [] ) { + parent::enqueue_data( $attributes ); + + $gutenberg_version = ''; + + if ( is_plugin_active( 'gutenberg/gutenberg.php' ) ) { + if ( defined( 'GUTENBERG_VERSION' ) ) { + $gutenberg_version = GUTENBERG_VERSION; + } + + if ( ! $gutenberg_version ) { + $gutenberg_data = get_file_data( + WP_PLUGIN_DIR . '/gutenberg/gutenberg.php', + array( 'Version' => 'Version' ) + ); + $gutenberg_version = $gutenberg_data['Version']; + } + } + + $this->asset_data_registry->add( + 'isBlockVariationAvailable', + version_compare( get_bloginfo( 'version' ), '6.1', '>=' ) || version_compare( $gutenberg_version, '13.4', '>=' ) + ); + } } diff --git a/tests/e2e/specs/backend/product-search.test.js b/tests/e2e/specs/backend/product-search.test.js index b4189ab18..d7f99c391 100644 --- a/tests/e2e/specs/backend/product-search.test.js +++ b/tests/e2e/specs/backend/product-search.test.js @@ -12,52 +12,60 @@ import { visitBlockPage, } from '@woocommerce/blocks-test-utils'; +/** + * Internal dependencies + */ +import { GUTENBERG_EDITOR_CONTEXT, describeOrSkip } from '../../utils'; + const block = { name: 'Product Search', slug: 'woocommerce/product-search', class: '.wc-block-product-search', }; -describe( `${ block.name } Block`, () => { - beforeAll( async () => { - await switchUserToAdmin(); - await visitBlockPage( `${ block.name } Block` ); - } ); - - it( 'renders without crashing', async () => { - await expect( page ).toRenderBlock( block ); - } ); - - it( 'can toggle field label', async () => { - await openDocumentSettingsSidebar(); - await page.click( block.class ); - const selector = `${ block.class } .wc-block-product-search__label`; - const toggleLabel = await findLabelWithText( - 'Show search field label' - ); - await expect( toggleLabel ).toToggleElement( selector ); - } ); - - it( 'can change field labels in editor', async () => { - await expect( page ).toFill( - 'textarea.wc-block-product-search__label', - 'I am a new label' - ); - - await expect( page ).toFill( - '.wc-block-product-search__field input', - 'I am a new placeholder' - ); - - await clearAndFillInput( - 'textarea.wc-block-product-search__label', - 'The Label' - ); - await clearAndFillInput( - '.wc-block-product-search__field input', - 'The Placeholder' - ); - - expect( await getEditedPostContent() ).toMatchSnapshot(); - } ); -} ); +describeOrSkip( GUTENBERG_EDITOR_CONTEXT !== 'gutenberg' )( + `${ block.name } Block`, + () => { + beforeAll( async () => { + await switchUserToAdmin(); + await visitBlockPage( `${ block.name } Block` ); + } ); + + it( 'renders without crashing', async () => { + await expect( page ).toRenderBlock( block ); + } ); + + it( 'can toggle field label', async () => { + await openDocumentSettingsSidebar(); + await page.click( block.class ); + const selector = `${ block.class } .wc-block-product-search__label`; + const toggleLabel = await findLabelWithText( + 'Show search field label' + ); + await expect( toggleLabel ).toToggleElement( selector ); + } ); + + it( 'can change field labels in editor', async () => { + await expect( page ).toFill( + 'textarea.wc-block-product-search__label', + 'I am a new label' + ); + + await expect( page ).toFill( + '.wc-block-product-search__field input', + 'I am a new placeholder' + ); + + await clearAndFillInput( + 'textarea.wc-block-product-search__label', + 'The Label' + ); + await clearAndFillInput( + '.wc-block-product-search__field input', + 'The Placeholder' + ); + + expect( await getEditedPostContent() ).toMatchSnapshot(); + } ); + } +); diff --git a/tests/e2e/utils.js b/tests/e2e/utils.js index 3a4f127c1..b9fe0e201 100644 --- a/tests/e2e/utils.js +++ b/tests/e2e/utils.js @@ -438,3 +438,18 @@ export const openBlockEditorSettings = async ( { isFSEEditor = false } ) => { export const waitForAllProductsBlockLoaded = async () => { await page.waitForSelector( SELECTORS.allProductsBlock.productsList ); }; + +/** + * Execute or skip the test suite base on the provided condition. + * + * @param {boolean} condition Condition to execute test suite. + */ +export const describeOrSkip = ( condition ) => + condition ? describe : describe.skip; + +/** + * Execute or skip the test base on the provided condition. + * + * @param {boolean} condition Condition to execute test. + */ +export const itOrSkip = ( condition ) => ( condition ? it : it.skip ); From 485598a7a0c04975591fbb057ed409b206ac996e Mon Sep 17 00:00:00 2001 From: Tung Du Date: Wed, 24 Aug 2022 16:10:21 +0700 Subject: [PATCH 091/164] Style the Filter by Price block based on the wrapper width (#6943) --- .../js/base/components/price-slider/index.tsx | 22 +++++++++++++++---- .../base/components/price-slider/style.scss | 4 ++++ .../shopper/filter-products-by-price.test.ts | 4 ++-- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/assets/js/base/components/price-slider/index.tsx b/assets/js/base/components/price-slider/index.tsx index 372d46927..d9f2faa07 100644 --- a/assets/js/base/components/price-slider/index.tsx +++ b/assets/js/base/components/price-slider/index.tsx @@ -8,6 +8,7 @@ import { useCallback, useMemo, useRef, + useLayoutEffect, } from '@wordpress/element'; import classnames from 'classnames'; import FormattedMonetaryAmount from '@woocommerce/base-components/formatted-monetary-amount'; @@ -97,6 +98,9 @@ const PriceSlider = ( { const [ minPriceInput, setMinPriceInput ] = useState( minPrice ); const [ maxPriceInput, setMaxPriceInput ] = useState( maxPrice ); + const wrapper = useRef< HTMLInputElement >( null ); + const [ wrapperWidth, setWrapperWidth ] = useState( 0 ); + useEffect( () => { setMinPriceInput( minPrice ); }, [ minPrice ] ); @@ -105,6 +109,12 @@ const PriceSlider = ( { setMaxPriceInput( maxPrice ); }, [ maxPrice ] ); + useLayoutEffect( () => { + if ( inlineInput && wrapper.current ) { + setWrapperWidth( wrapper.current?.offsetWidth ); + } + }, [ inlineInput, setWrapperWidth ] ); + /** * Checks if the min and max constraints are valid. */ @@ -292,7 +302,9 @@ const PriceSlider = ( { showFilterButton && 'wc-block-components-price-slider--has-filter-button', isLoading && 'is-loading', - ! hasValidConstraints && 'is-disabled' + ! hasValidConstraints && 'is-disabled', + ( inlineInput || wrapperWidth <= 300 ) && + 'wc-block-components-price-slider--is-input-inline' ); const activeElement = isObject( minRange.current ) @@ -310,6 +322,8 @@ const PriceSlider = ( { maxPriceInput / 10 ** currency.minorUnit ); + const inlineInputAvailable = inlineInput && wrapperWidth > 300; + const slider = (
    - { ( ! inlineInput || ! showInputFields ) && slider } +
    + { ( ! inlineInputAvailable || ! showInputFields ) && slider } { showInputFields && (
    - { inlineInput && slider } + { inlineInputAvailable && slider } { await page.keyboard.down( 'Shift' ); await page.keyboard.press( 'Home' ); await page.keyboard.up( 'Shift' ); - await page.keyboard.type( '1.99' ); + await page.keyboard.type( '2' ); await page.keyboard.press( 'Tab' ); }; From 23fd4df5340c3405aa3f1ecd4916dfae8eb2b180 Mon Sep 17 00:00:00 2001 From: Seghir Nadir Date: Wed, 24 Aug 2022 14:26:14 +0100 Subject: [PATCH 092/164] support mdlint in husky (#6968) --- .../rest-api/available-endpoints-to-extend.md | 16 ++++++++-------- package.json | 3 +++ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/docs/third-party-developers/extensibility/rest-api/available-endpoints-to-extend.md b/docs/third-party-developers/extensibility/rest-api/available-endpoints-to-extend.md index 25dda677b..87069fb56 100644 --- a/docs/third-party-developers/extensibility/rest-api/available-endpoints-to-extend.md +++ b/docs/third-party-developers/extensibility/rest-api/available-endpoints-to-extend.md @@ -3,17 +3,17 @@ ## Table of Contents - [`wc/store/checkout`](#wcstorecheckout) - - [Passed Parameters](#passed-parameters) - - [Key](#key) + - [Passed Parameters](#passed-parameters) + - [Key](#key) - [`wc/store/cart`](#wcstorecart) - - [Passed Parameters](#passed-parameters-1) - - [Key](#key-1) + - [Passed Parameters](#passed-parameters-1) + - [Key](#key-1) - [`wc/store/cart/items`](#wcstorecartitems) - - [Passed Parameters](#passed-parameters-2) - - [Key](#key-2) + - [Passed Parameters](#passed-parameters-2) + - [Key](#key-2) - [`wc/store/products`](#wcstoreproducts) - - [Passed Parameters](#passed-parameters-3) - - [Key](#key-3) + - [Passed Parameters](#passed-parameters-3) + - [Key](#key-3) To see how to add your data to Store API using ExtendSchema, [check this document](./extend-rest-api-add-data.md). This is a list of available endpoints that you can extend. If you want to add a new endpoint, [check this document](./extend-rest-api-new-endpoint.md). diff --git a/package.json b/package.json index 03e1bd85b..f305a6e08 100644 --- a/package.json +++ b/package.json @@ -262,6 +262,9 @@ "*.php": [ "php -d display_errors=1 -l", "composer run-script phpcs" + ], + "*.md": [ + "npm run lint:md:docs" ] }, "changelog": { From be8c00358d6b1e737662740b1beb436aca982bb3 Mon Sep 17 00:00:00 2001 From: Lucio Giannotta Date: Thu, 25 Aug 2022 02:48:36 +0200 Subject: [PATCH 093/164] Fix Product Query block hijacking all Query blocks queries (#6952) * Fix Product Query block hijacking all Query blocks queries The Product Query block was adding a filter to Gutenberg's core Query Loop block. When this filter was added once, it would from then on apply to all other Query Loop blocks (or variations thereof) on a page. This change makes sure that: 1. No filters are added in the first place if our custom `__woocommerceVariationProps` are not set. 2. The filter only gets run once. --- src/BlockTypes/ProductQuery.php | 39 ++++++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/src/BlockTypes/ProductQuery.php b/src/BlockTypes/ProductQuery.php index bb2b74351..cedc19993 100644 --- a/src/BlockTypes/ProductQuery.php +++ b/src/BlockTypes/ProductQuery.php @@ -12,6 +12,13 @@ class ProductQuery extends AbstractBlock { */ protected $block_name = 'product-query'; + /** + * The Block with its attributes before it gets rendered + * + * @var array + */ + protected $parsed_block; + /** * Initialize this block type. * @@ -30,6 +37,28 @@ protected function initialize() { } + /** + * Remove the query block filter and parse the custom query + * + * This function is supposed to be called by the `gutenberg_build_query_vars_from_query_block` + * filter. It de-registers the filter to make sure it runs only once and doesn't end + * up hi-jacking future Query Loop blocks. + * + * It needs unfortunately to be `public` or otherwise the filter can't call it. + * + * @param WP_Query $query The WordPress Query. + * @return array + */ + public function get_query_by_attributes_once( $query ) { + remove_filter( + 'gutenberg_build_query_vars_from_query_block', + array( $this, 'get_query_by_attributes_once' ), + 10 + ); + + return $this->get_query_by_attributes( $query, $this->parsed_block ); + } + /** * Update the query for the product query block. * @@ -37,17 +66,17 @@ protected function initialize() { * @param array $parsed_block The block being rendered. */ public function update_query( $pre_render, $parsed_block ) { - if ( 'core/query' !== $parsed_block['blockName'] ) { + if ( 'core/query' !== $parsed_block['blockName'] || ! isset( $parsed_block['attrs']['__woocommerceVariationProps'] ) ) { return; } + $this->parsed_block = $parsed_block; + add_filter( 'gutenberg_build_query_vars_from_query_block', - function( $query ) use ( $parsed_block ) { - return $this->get_query_by_attributes( $query, $parsed_block ); - }, + array( $this, 'get_query_by_attributes_once' ), 10, - 3 + 1 ); } From 21a7a10a97e6fc0d64d925fcb13d4e9731d301be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alba=20Rinc=C3=B3n?= Date: Thu, 25 Aug 2022 12:01:41 +0200 Subject: [PATCH 094/164] `Filter by Attribute` block design updates (#6920) * Add and style Reset and Apply buttons * Style the dropdown option * Fix class and label * Fix checkbox margin in editor * Fix alignment * Fix the reset button * Disable Apply button when no changes have been made to the filter to improve UX * Reduce vertical spacing between list items * Style chips * Don't reload on reset if filters have not been applied * Fix heading styles on the front end * Add chevron down to filter by attribute dropdown ui component * Force FormTokenField to remount on reset * Fix dropdown z-index * Reduce apply button margin * Fix styles for single token selection Co-authored-by: tjcafferkey --- assets/js/blocks/active-filters/style.scss | 11 + assets/js/blocks/attribute-filter/block.tsx | 209 +++++++++++-------- assets/js/blocks/attribute-filter/style.scss | 105 +++++++++- assets/js/blocks/attribute-filter/utils.ts | 4 + assets/js/blocks/price-filter/style.scss | 9 + assets/js/blocks/stock-filter/style.scss | 13 +- patterns/test.php | 51 +++++ 7 files changed, 315 insertions(+), 87 deletions(-) create mode 100644 patterns/test.php diff --git a/assets/js/blocks/active-filters/style.scss b/assets/js/blocks/active-filters/style.scss index 16e9ee3eb..4e06071d4 100644 --- a/assets/js/blocks/active-filters/style.scss +++ b/assets/js/blocks/active-filters/style.scss @@ -1,3 +1,14 @@ +.wp-block-woocommerce-active-filters { + h1, + h2, + h3, + h4, + h5, + h6 { + text-transform: inherit; + } +} + .wc-block-active-filters { margin-bottom: $gap-large; overflow: hidden; diff --git a/assets/js/blocks/attribute-filter/block.tsx b/assets/js/blocks/attribute-filter/block.tsx index 3e42739a1..5080ebf3c 100644 --- a/assets/js/blocks/attribute-filter/block.tsx +++ b/assets/js/blocks/attribute-filter/block.tsx @@ -16,6 +16,7 @@ import { import { useCallback, useEffect, useState, useMemo } from '@wordpress/element'; import CheckboxList from '@woocommerce/base-components/checkbox-list'; import Label from '@woocommerce/base-components/filter-element-label'; +import FilterResetButton from '@woocommerce/base-components/filter-reset-button'; import FilterSubmitButton from '@woocommerce/base-components/filter-submit-button'; import isShallowEqual from '@wordpress/is-shallow-equal'; import { decodeEntities } from '@wordpress/html-entities'; @@ -29,6 +30,7 @@ import { isString, objectHasProp, } from '@woocommerce/types'; +import { Icon, chevronDown } from '@wordpress/icons'; import { changeUrl, PREFIX_QUERY_ARG_FILTER_TYPE, @@ -52,6 +54,7 @@ import { isQueryArgsEqual, parseTaxonomyToGenerateURL, formatSlug, + generateUniqueId, } from './utils'; import { BlockAttributes, DisplayOption } from './types'; @@ -111,6 +114,13 @@ const AttributeFilterBlock = ( { const [ checked, setChecked ] = useState( initialFilters ); + /* + FormTokenField forces the dropdown to reopen on reset, so we create a unique ID to use as the components key. + This will force the component to remount on reset when we change this value. + More info: https://github.com/woocommerce/woocommerce-blocks/pull/6920#issuecomment-1222402482 + */ + const [ remountKey, setRemountKey ] = useState( generateUniqueId() ); + const [ displayedOptions, setDisplayedOptions ] = useState< DisplayOption[] >( @@ -431,7 +441,7 @@ const AttributeFilterBlock = ( { ] ); /** - * Try get the current attribute filter from the URl. + * Try to get the current attribute filter from the URl. */ useEffect( () => { if ( hasSetFilterDefaultsFromUrl || attributeTermsLoading ) { @@ -511,95 +521,109 @@ const AttributeFilterBlock = ( { className={ `wc-block-attribute-filter style-${ blockAttributes.displayStyle }` } > { blockAttributes.displayStyle === 'dropdown' ? ( - ! checked.includes( option.value ) - ) - .map( ( option ) => option.formattedValue ) } - disabled={ isDisabled } - placeholder={ sprintf( - /* translators: %s attribute name. */ - __( 'Any %s', 'woo-gutenberg-products-block' ), - attributeObject.label - ) } - onChange={ ( tokens: string[] ) => { - if ( ! multiple && tokens.length > 1 ) { - tokens = [ tokens[ tokens.length - 1 ] ]; - } - - tokens = tokens.map( ( token ) => { - const displayOption = displayedOptions.find( + <> + - option.formattedValue === token - ); - - return displayOption - ? displayOption.value - : token; - } ); - - const added = difference( tokens, checked ); - - if ( added.length === 1 ) { - return onChange( added[ 0 ] ); - } - - const removed = difference( checked, tokens ); - if ( removed.length === 1 ) { - onChange( removed[ 0 ] ); - } - } } - value={ checked } - displayTransform={ ( value: string ) => { - const result = displayedOptions.find( ( option ) => - [ - option.value, - option.formattedValue, - ].includes( value ) - ); - return result ? result.textLabel : value; - } } - saveTransform={ formatSlug } - messages={ { - added: sprintf( - /* translators: %s is the attribute label. */ + ! checked.includes( option.value ) + ) + .map( ( option ) => option.formattedValue ) } + disabled={ isDisabled } + placeholder={ sprintf( + /* translators: %s attribute name. */ __( - '%s filter added.', + 'Select %s', 'woo-gutenberg-products-block' ), attributeObject.label - ), - removed: sprintf( - /* translators: %s is the attribute label. */ - __( - '%s filter removed.', - 'woo-gutenberg-products-block' + ) } + onChange={ ( tokens: string[] ) => { + if ( ! multiple && tokens.length > 1 ) { + tokens = [ tokens[ tokens.length - 1 ] ]; + } + + tokens = tokens.map( ( token ) => { + const displayOption = displayedOptions.find( + ( option ) => + option.formattedValue === token + ); + + return displayOption + ? displayOption.value + : token; + } ); + + const added = difference( tokens, checked ); + + if ( added.length === 1 ) { + return onChange( added[ 0 ] ); + } + + const removed = difference( checked, tokens ); + if ( removed.length === 1 ) { + onChange( removed[ 0 ] ); + } + } } + value={ checked } + displayTransform={ ( value: string ) => { + const result = displayedOptions.find( + ( option ) => + [ + option.value, + option.formattedValue, + ].includes( value ) + ); + return result ? result.textLabel : value; + } } + saveTransform={ formatSlug } + messages={ { + added: sprintf( + /* translators: %s is the attribute label. */ + __( + '%s filter added.', + 'woo-gutenberg-products-block' + ), + attributeObject.label ), - attributeObject.label - ), - remove: sprintf( - /* translators: %s is the attribute label. */ - __( - 'Remove %s filter.', - 'woo-gutenberg-products-block' + removed: sprintf( + /* translators: %s is the attribute label. */ + __( + '%s filter removed.', + 'woo-gutenberg-products-block' + ), + attributeObject.label ), - attributeObject.label.toLocaleLowerCase() - ), - __experimentalInvalid: sprintf( - /* translators: %s is the attribute label. */ - __( - 'Invalid %s filter.', - 'woo-gutenberg-products-block' + remove: sprintf( + /* translators: %s is the attribute label. */ + __( + 'Remove %s filter.', + 'woo-gutenberg-products-block' + ), + attributeObject.label.toLocaleLowerCase() ), - attributeObject.label.toLocaleLowerCase() - ), - } } - /> + __experimentalInvalid: sprintf( + /* translators: %s is the attribute label. */ + __( + 'Invalid %s filter.', + 'woo-gutenberg-products-block' + ), + attributeObject.label.toLocaleLowerCase() + ), + } } + /> + { multiple && ( + + ) } + ) : ( ) } +
    +
    + { checked.length > 0 && ( + { + setChecked( [] ); + setRemountKey( generateUniqueId() ); + if ( hasSetFilterDefaultsFromUrl ) { + onSubmit( [] ); + } + } } + screenReaderLabel={ __( + 'Reset attribute filter', + 'woo-gutenberg-products-block' + ) } + /> + ) } { blockAttributes.showFilterButton && ( onSubmit( checked ) } /> ) } diff --git a/assets/js/blocks/attribute-filter/style.scss b/assets/js/blocks/attribute-filter/style.scss index fc6d53741..cfb9584bb 100644 --- a/assets/js/blocks/attribute-filter/style.scss +++ b/assets/js/blocks/attribute-filter/style.scss @@ -2,14 +2,25 @@ // We need to override it because by default the global styles applied the border-style: solid; // Our goal is not to have a border on main wrapper DOM element border-style: none !important; + + h1, + h2, + h3, + h4, + h5, + h6 { + text-transform: inherit; + } } .wc-block-attribute-filter { - margin-bottom: $gap-large; + margin-bottom: $gap; border-radius: inherit; border-color: inherit; + z-index: 30; &.style-dropdown { + position: relative; display: flex; gap: $gap; border-radius: inherit; @@ -20,6 +31,19 @@ height: 36px; line-height: 1; } + + > .wc-blocks-components-form-token-field-wrapper { + position: relative; + z-index: 2; + } + + > svg { + position: absolute; + right: 20px; + top: 50%; + transform: translateY(-50%); + z-index: 1; + } } .wc-block-attribute-filter-list { @@ -44,12 +68,35 @@ width: 0; } - .is-single .wc-block-attribute-filter-list-count, .wc-blocks-components-form-token-field-wrapper .wc-block-attribute-filter-list-count { opacity: 0.6; } + .wc-blocks-components-form-token-field-wrapper .components-form-token-field__input-container { + border: 1px solid $gray-700; + border-radius: 4px; + padding: $gap-smaller; + + .components-form-token-field__input::placeholder { + color: $black; + } + + .components-form-token-field__suggestions-list { + border: 1px solid $gray-700; + border-radius: 4px; + margin-top: $gap-smaller; + max-height: 21em; + + .components-form-token-field__suggestion { + color: $black; + border: 1px solid $gray-400; + border-radius: 4px; + margin: $gap-small; + padding: $gap-small; + } + } + } } .wc-block-attribute-filter__multiple-toggle, @@ -68,7 +115,59 @@ } } -.editor-styles-wrapper .wc-block-attribute-filter__button.wc-block-attribute-filter__button, +.wc-block-attribute-filter__actions { + align-items: center; + display: flex; + gap: $gap; + justify-content: flex-end; + + .wc-block-components-filter-submit-button { + margin-left: 0; + + &:disabled { + opacity: 0.6; + cursor: auto; + } + } + + .wc-block-filter-submit-button.wc-block-components-filter-submit-button.wc-block-attribute-filter__button { + margin-top: 0; + } +} + +.editor-styles-wrapper .wc-block-components-checkbox { + margin-top: em($gap); +} + +.wc-block-components-checkbox { + margin-top: em($gap); +} + +.wc-blocks-components-form-token-field-wrapper:not(.single-selection) .components-form-token-field__input-container { + .components-form-token-field__token-text { + background-color: $white; + border: 1px solid; + border-right: 0; + border-radius: 25px 0 0 25px; + padding: em($gap-smallest); + padding-left: em($gap-small); + } + + .components-button.components-form-token-field__remove-token { + background-color: $white; + border: 1px solid; + border-left: 0; + border-radius: 0 25px 25px 0; + padding: 0 em($gap-smaller) 0 0; + + &.has-icon svg { + background-color: $gray-200; + border-radius: 25px; + } + } +} + +.editor-styles-wrapper .wc-block-attribute-filter__button.wc-block-attribute-filter__button, .wc-block-attribute-filter__button.wc-block-attribute-filter__button { padding: em($gap-smaller) em($gap); @include font-size(small); diff --git a/assets/js/blocks/attribute-filter/utils.ts b/assets/js/blocks/attribute-filter/utils.ts index 78d7363d9..754ce1bf4 100644 --- a/assets/js/blocks/attribute-filter/utils.ts +++ b/assets/js/blocks/attribute-filter/utils.ts @@ -16,6 +16,10 @@ interface Param { slug: Array< string >; } +export function generateUniqueId() { + return Math.floor( Math.random() * Date.now() ); +} + export const parseTaxonomyToGenerateURL = ( taxonomy: string ) => taxonomy.replace( 'pa_', '' ); diff --git a/assets/js/blocks/price-filter/style.scss b/assets/js/blocks/price-filter/style.scss index 4038c964e..c67de6065 100644 --- a/assets/js/blocks/price-filter/style.scss +++ b/assets/js/blocks/price-filter/style.scss @@ -2,6 +2,15 @@ border-color: $gray-700; border-radius: 4px; border-style: none !important; + + h1, + h2, + h3, + h4, + h5, + h6 { + text-transform: inherit; + } } .wc-block-price-slider { diff --git a/assets/js/blocks/stock-filter/style.scss b/assets/js/blocks/stock-filter/style.scss index ac3d0ed12..c90f1f48d 100644 --- a/assets/js/blocks/stock-filter/style.scss +++ b/assets/js/blocks/stock-filter/style.scss @@ -1,3 +1,14 @@ +.wp-block-woocommerce-stock-filter { + h1, + h2, + h3, + h4, + h5, + h6 { + text-transform: inherit; + } +} + .wc-block-stock-filter { margin-bottom: $gap-large; @@ -26,7 +37,7 @@ display: flex; gap: $gap; justify-content: flex-end; - margin-top: $gap-large; + margin-top: $gap; // The specificity here is needed to overwrite the margin-top that is inherited on WC block template pages such as Shop. button[type="submit"]:not(.wp-block-search__button).wc-block-components-filter-submit-button { diff --git a/patterns/test.php b/patterns/test.php new file mode 100644 index 000000000..8cc73a2df --- /dev/null +++ b/patterns/test.php @@ -0,0 +1,51 @@ + + + +
    + +
    + +
    + +
    + + + +
    + +
    + +
    + + + +
    + +
    + +
    + +
    + + + +
    + +
    + +
    + +
    + + + +
    + +
    + From 457744ec329a388012617a54b97596446430a2ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alba=20Rinc=C3=B3n?= Date: Thu, 25 Aug 2022 13:03:10 +0200 Subject: [PATCH 095/164] Remove pattern file added by mistake (#6980) --- patterns/test.php | 51 ----------------------------------------------- 1 file changed, 51 deletions(-) delete mode 100644 patterns/test.php diff --git a/patterns/test.php b/patterns/test.php deleted file mode 100644 index 8cc73a2df..000000000 --- a/patterns/test.php +++ /dev/null @@ -1,51 +0,0 @@ - - - -
    - -
    - -
    - -
    - - - -
    - -
    - -
    - - - -
    - -
    - -
    - -
    - - - -
    - -
    - -
    - -
    - - - -
    - -
    - From 68aed32bbb04f76a8a3658a4739af426835c9689 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Albert=20Juh=C3=A9=20Lluveras?= Date: Thu, 25 Aug 2022 13:55:33 +0200 Subject: [PATCH 096/164] Fix z-index issue in Filter by Attribute dropdowns (#6981) * Fix z-index issue in Filter by Attribute dropdowns * Remove unnecessary z-index property --- assets/js/blocks/attribute-filter/style.scss | 7 ------- 1 file changed, 7 deletions(-) diff --git a/assets/js/blocks/attribute-filter/style.scss b/assets/js/blocks/attribute-filter/style.scss index cfb9584bb..f73490761 100644 --- a/assets/js/blocks/attribute-filter/style.scss +++ b/assets/js/blocks/attribute-filter/style.scss @@ -17,7 +17,6 @@ margin-bottom: $gap; border-radius: inherit; border-color: inherit; - z-index: 30; &.style-dropdown { position: relative; @@ -32,17 +31,11 @@ line-height: 1; } - > .wc-blocks-components-form-token-field-wrapper { - position: relative; - z-index: 2; - } - > svg { position: absolute; right: 20px; top: 50%; transform: translateY(-50%); - z-index: 1; } } From b1a2f9652970eb230a6c5c99bcf363b6be547c08 Mon Sep 17 00:00:00 2001 From: Niels Lange Date: Thu, 25 Aug 2022 14:39:34 +0200 Subject: [PATCH 097/164] Update folder-structure.md --- docs/contributors/contributing/folder-structure.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/contributors/contributing/folder-structure.md b/docs/contributors/contributing/folder-structure.md index e3adfe01a..a54bb5cfd 100644 --- a/docs/contributors/contributing/folder-structure.md +++ b/docs/contributors/contributing/folder-structure.md @@ -2,6 +2,7 @@ The following snippet explains how the WooCommerce Blocks repository is structured omitting irrelevant or obvious items with further explanations: +```text โ”‚ โ”œโ”€โ”€ LICENSE โ”œโ”€โ”€ README.md @@ -184,6 +185,7 @@ The following snippet explains how the WooCommerce Blocks repository is structur โ”œโ”€โ”€ tests/utils โ”‚ Utilities for the test cases. โ”‚ +``` ## Credits From 97530898c2d96b657f32d097bbe1b236cf60eb0e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 25 Aug 2022 09:10:38 -0400 Subject: [PATCH 098/164] Bump @storybook/react from 6.5.9 to 6.5.10 (#6858) Bumps [@storybook/react](https://github.com/storybookjs/storybook/tree/HEAD/app/react) from 6.5.9 to 6.5.10. - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/v6.5.10/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v6.5.10/app/react) --- updated-dependencies: - dependency-name: "@storybook/react" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 4094 ++++++++++++++++++++++++++++++++++++++++----- package.json | 2 +- 2 files changed, 3696 insertions(+), 400 deletions(-) diff --git a/package-lock.json b/package-lock.json index 27c299e6f..633cf82c1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -51,7 +51,7 @@ "@storybook/addon-storysource": "6.5.9", "@storybook/addons": "6.5.9", "@storybook/client-api": "6.5.9", - "@storybook/react": "6.5.9", + "@storybook/react": "6.5.10", "@testing-library/jest-dom": "5.16.4", "@testing-library/react": "12.1.5", "@testing-library/react-hooks": "7.0.2", @@ -7155,28 +7155,28 @@ } }, "node_modules/@storybook/builder-webpack4": { - "version": "6.5.9", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack4/-/builder-webpack4-6.5.9.tgz", - "integrity": "sha512-YOeA4++9uRZ8Hog1wC60yjaxBOiI1FRQNtax7b9E7g+kP8UlSCPCGcv4gls9hFmzbzTOPfQTWnToA9Oa6jzRVw==", + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack4/-/builder-webpack4-6.5.10.tgz", + "integrity": "sha512-AoKjsCNoQQoZXYwBDxO8s+yVEd5FjBJAaysEuUTHq2fb81jwLrGcEOo6hjw4jqfugZQIzYUEjPazlvubS78zpw==", "dev": true, "dependencies": { "@babel/core": "^7.12.10", - "@storybook/addons": "6.5.9", - "@storybook/api": "6.5.9", - "@storybook/channel-postmessage": "6.5.9", - "@storybook/channels": "6.5.9", - "@storybook/client-api": "6.5.9", - "@storybook/client-logger": "6.5.9", - "@storybook/components": "6.5.9", - "@storybook/core-common": "6.5.9", - "@storybook/core-events": "6.5.9", - "@storybook/node-logger": "6.5.9", - "@storybook/preview-web": "6.5.9", - "@storybook/router": "6.5.9", + "@storybook/addons": "6.5.10", + "@storybook/api": "6.5.10", + "@storybook/channel-postmessage": "6.5.10", + "@storybook/channels": "6.5.10", + "@storybook/client-api": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/components": "6.5.10", + "@storybook/core-common": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/node-logger": "6.5.10", + "@storybook/preview-web": "6.5.10", + "@storybook/router": "6.5.10", "@storybook/semver": "^7.3.2", - "@storybook/store": "6.5.9", - "@storybook/theming": "6.5.9", - "@storybook/ui": "6.5.9", + "@storybook/store": "6.5.10", + "@storybook/theming": "6.5.10", + "@storybook/ui": "6.5.10", "@types/node": "^14.0.10 || ^16.0.0", "@types/webpack": "^4.41.26", "autoprefixer": "^9.8.6", @@ -7222,6 +7222,451 @@ } } }, + "node_modules/@storybook/builder-webpack4/node_modules/@storybook/addons": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.10.tgz", + "integrity": "sha512-VD4tBCQ23PkSeDoxuHcKy0RfhIs3oMYjBacOZx7d0bvOzK9WjPyvE2ysDAh7r/ceqnwmWHAScIpE+I1RU7gl+g==", + "dev": true, + "dependencies": { + "@storybook/api": "6.5.10", + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/router": "6.5.10", + "@storybook/theming": "6.5.10", + "@types/webpack-env": "^1.16.0", + "core-js": "^3.8.2", + "global": "^4.4.0", + "regenerator-runtime": "^0.13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/@storybook/api": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.5.10.tgz", + "integrity": "sha512-AkmgSPNEGdKp4oZA4KQ+RJsacw7GwfvjsVDnCkcXqS9zmSr/RNL0fhpcd60KKkmx/hGKPTDFpK3ZayxDrJ/h4A==", + "dev": true, + "dependencies": { + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/router": "6.5.10", + "@storybook/semver": "^7.3.2", + "@storybook/theming": "6.5.10", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7", + "store2": "^2.12.0", + "telejson": "^6.0.8", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/@storybook/channel-postmessage": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.5.10.tgz", + "integrity": "sha512-t9PTA0UzFvYa3IlOfpBOolfrRMPTjUMIeCQ6FNyM0aj5GqLKSvoQzP8NeoRpIrvyf6ljFKKdaMaZ3fiCvh45ag==", + "dev": true, + "dependencies": { + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "core-js": "^3.8.2", + "global": "^4.4.0", + "qs": "^6.10.0", + "telejson": "^6.0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/@storybook/channels": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.10.tgz", + "integrity": "sha512-lo26YZ6kWpHXLhuHJF4P/bICY7jD/rXEZqReKtGOSk1Lv99/xvG6pqmcy3hWLf3v3Dy/8otjRPSR7izFVIIZgQ==", + "dev": true, + "dependencies": { + "core-js": "^3.8.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/@storybook/client-api": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.5.10.tgz", + "integrity": "sha512-3wBWZl3NvMFgMovgEh+euiARAT2FXzpvTF4Q1gerGMNNDlrGxHnFvSuy4FHg/irtOGLa4yLz43ULFbYtpKw0Lg==", + "dev": true, + "dependencies": { + "@storybook/addons": "6.5.10", + "@storybook/channel-postmessage": "6.5.10", + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/store": "6.5.10", + "@types/qs": "^6.9.5", + "@types/webpack-env": "^1.16.0", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "store2": "^2.12.0", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/@storybook/client-logger": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.10.tgz", + "integrity": "sha512-/xA0MHOevXev68hyLMQw8Qo8KczSIdXOxliAgrycMTkDmw5eKeA8TP7B8zP3wGuq/e3MrdD9/8MWhb/IQBNC3w==", + "dev": true, + "dependencies": { + "core-js": "^3.8.2", + "global": "^4.4.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/@storybook/components": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.5.10.tgz", + "integrity": "sha512-9OhgB8YQfGwOKjo/N96N5mrtJ6qDVVoEM1zuhea32tJUd2eYf0aSWpryA9VnOM0V1q/8DAoCg5rPBMYWMBU5uw==", + "dev": true, + "dependencies": { + "@storybook/client-logger": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/theming": "6.5.10", + "core-js": "^3.8.2", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/@storybook/core-common": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.5.10.tgz", + "integrity": "sha512-Bx+VKkfWdrAmD8T51Sjq/mMhRaiapBHcpG4cU5bc3DMbg+LF2/yrgqv/cjVu+m5gHAzYCac5D7gqzBgvG7Myww==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.10", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-decorators": "^7.12.12", + "@babel/plugin-proposal-export-default-from": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.7", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-private-property-in-object": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.12", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/preset-env": "^7.12.11", + "@babel/preset-react": "^7.12.10", + "@babel/preset-typescript": "^7.12.7", + "@babel/register": "^7.12.1", + "@storybook/node-logger": "6.5.10", + "@storybook/semver": "^7.3.2", + "@types/node": "^14.0.10 || ^16.0.0", + "@types/pretty-hrtime": "^1.0.0", + "babel-loader": "^8.0.0", + "babel-plugin-macros": "^3.0.1", + "babel-plugin-polyfill-corejs3": "^0.1.0", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "express": "^4.17.1", + "file-system-cache": "^1.0.5", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.0.4", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "handlebars": "^4.7.7", + "interpret": "^2.2.0", + "json5": "^2.1.3", + "lazy-universal-dotenv": "^3.0.1", + "picomatch": "^2.3.0", + "pkg-dir": "^5.0.0", + "pretty-hrtime": "^1.0.3", + "resolve-from": "^5.0.0", + "slash": "^3.0.0", + "telejson": "^6.0.8", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2", + "webpack": "4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/@storybook/core-common/node_modules/fork-ts-checker-webpack-plugin": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.2.tgz", + "integrity": "sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "memfs": "^3.1.2", + "minimatch": "^3.0.4", + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=10", + "yarn": ">=1.0.0" + }, + "peerDependencies": { + "eslint": ">= 6", + "typescript": ">= 2.7", + "vue-template-compiler": "*", + "webpack": ">= 4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/@storybook/core-common/node_modules/schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/@storybook/core-common/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/@storybook/core-events": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.10.tgz", + "integrity": "sha512-EVb1gO1172klVIAABLOoigFMx0V88uctY0K/qVCO8n6v+wd2+0Ccn63kl+gTxsAC3WZ8XhXh9q2w5ImHklVECw==", + "dev": true, + "dependencies": { + "core-js": "^3.8.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/@storybook/node-logger": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.5.10.tgz", + "integrity": "sha512-bYswXIKV7Stru8vYfkjUMNN8UhF7Qg7NRsUvG5Djt5lLIae1XmUIgnH40mU/nW4X4BSfcR9MKxsSsngvn2WmQg==", + "dev": true, + "dependencies": { + "@types/npmlog": "^4.1.2", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "npmlog": "^5.0.1", + "pretty-hrtime": "^1.0.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/@storybook/preview-web": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/preview-web/-/preview-web-6.5.10.tgz", + "integrity": "sha512-sTC/o5gkvALOtcNgtApGKGN9EavvSxRHBeBh+5BQjV2qQ8ap+26RsfUizNBECAa2Jrn4osaDYn9HRhJLFL69WA==", + "dev": true, + "dependencies": { + "@storybook/addons": "6.5.10", + "@storybook/channel-postmessage": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/store": "6.5.10", + "ansi-to-html": "^0.6.11", + "core-js": "^3.8.2", + "global": "^4.4.0", + "lodash": "^4.17.21", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "unfetch": "^4.2.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/@storybook/router": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.10.tgz", + "integrity": "sha512-O+vNW/eEpYFF8eCg5jZjNQ6q2DKQVxqDRPCy9pJdEbvavMDZn6AFYgVK+VJe5F4211WW2yncOu922xObCxXJYg==", + "dev": true, + "dependencies": { + "@storybook/client-logger": "6.5.10", + "core-js": "^3.8.2", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/@storybook/store": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/store/-/store-6.5.10.tgz", + "integrity": "sha512-RswrSYh2IiKkytFPxP9AvP+hekjrvHK2ILvyDk2ZgduCN4n5ivsekOb+N3M2t+dq1eLuW9or5n2T4OWwAwjxxQ==", + "dev": true, + "dependencies": { + "@storybook/addons": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7", + "slash": "^3.0.0", + "stable": "^0.1.8", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/@storybook/theming": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.10.tgz", + "integrity": "sha512-BvTQBBcSEwKKcsVmF+Ol6v0RIQUr+bxP7gb10wtfBd23mZTEFA0C1N5FnZr/dDeiBKG1pvf1UKvoYA731y0BsA==", + "dev": true, + "dependencies": { + "@storybook/client-logger": "6.5.10", + "core-js": "^3.8.2", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/@storybook/builder-webpack4/node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -7289,20 +7734,6 @@ "node": ">=0.10.0" } }, - "node_modules/@storybook/builder-webpack4/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@storybook/builder-webpack4/node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -7324,6 +7755,22 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, + "node_modules/@storybook/builder-webpack4/node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@storybook/builder-webpack4/node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -7377,6 +7824,31 @@ "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, + "node_modules/@storybook/builder-webpack4/node_modules/find-cache-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@storybook/builder-webpack4/node_modules/fork-ts-checker-webpack-plugin": { "version": "4.1.6", "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz", @@ -7396,6 +7868,47 @@ "yarn": ">=1.0.0" } }, + "node_modules/@storybook/builder-webpack4/node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/fork-ts-checker-webpack-plugin/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@storybook/builder-webpack4/node_modules/glob-promise": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/glob-promise/-/glob-promise-3.4.0.tgz", @@ -7482,27 +7995,6 @@ "node": ">= 10.13.0" } }, - "node_modules/@storybook/builder-webpack4/node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@storybook/builder-webpack4/node_modules/jest-worker/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@storybook/builder-webpack4/node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -7590,31 +8082,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/builder-webpack4/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@storybook/builder-webpack4/node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@storybook/builder-webpack4/node_modules/postcss": { "version": "7.0.39", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", @@ -7641,6 +8108,15 @@ "semver": "bin/semver" } }, + "node_modules/@storybook/builder-webpack4/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/@storybook/builder-webpack4/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -7650,18 +8126,6 @@ "node": ">=0.10.0" } }, - "node_modules/@storybook/builder-webpack4/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@storybook/builder-webpack4/node_modules/tapable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", @@ -7759,13 +8223,13 @@ } }, "node_modules/@storybook/channel-websocket": { - "version": "6.5.9", - "resolved": "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-6.5.9.tgz", - "integrity": "sha512-xtHvSNwuOhkgALwVshKWsoFhDmuvcosdYfxcfFGEiYKXIu46tRS5ZXmpmgEC/0JAVkVoFj5nL8bV7IY5np6oaA==", + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-6.5.10.tgz", + "integrity": "sha512-RTXMZbMWCS3xU+4GVIdfnUXsKcwg/WTozy88/5OxaKjGw6KgRedqLAQJKJ6Y5XlnwIcWelirkHj/COwTTXhbPg==", "dev": true, "dependencies": { - "@storybook/channels": "6.5.9", - "@storybook/client-logger": "6.5.9", + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", "core-js": "^3.8.2", "global": "^4.4.0", "telejson": "^6.0.8" @@ -7775,6 +8239,35 @@ "url": "https://opencollective.com/storybook" } }, + "node_modules/@storybook/channel-websocket/node_modules/@storybook/channels": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.10.tgz", + "integrity": "sha512-lo26YZ6kWpHXLhuHJF4P/bICY7jD/rXEZqReKtGOSk1Lv99/xvG6pqmcy3hWLf3v3Dy/8otjRPSR7izFVIIZgQ==", + "dev": true, + "dependencies": { + "core-js": "^3.8.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/channel-websocket/node_modules/@storybook/client-logger": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.10.tgz", + "integrity": "sha512-/xA0MHOevXev68hyLMQw8Qo8KczSIdXOxliAgrycMTkDmw5eKeA8TP7B8zP3wGuq/e3MrdD9/8MWhb/IQBNC3w==", + "dev": true, + "dependencies": { + "core-js": "^3.8.2", + "global": "^4.4.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, "node_modules/@storybook/channels": { "version": "6.5.9", "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.9.tgz", @@ -7883,13 +8376,13 @@ } }, "node_modules/@storybook/core": { - "version": "6.5.9", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-6.5.9.tgz", - "integrity": "sha512-Mt3TTQnjQt2/pa60A+bqDsAOrYpohapdtt4DDZEbS8h0V6u11KyYYh3w7FCySlL+sPEyogj63l5Ec76Jah3l2w==", + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-6.5.10.tgz", + "integrity": "sha512-K86yYa0tYlMxADlwQTculYvPROokQau09SCVqpsLg3wJCTvYFL4+SIqcYoyBSbFmHOdnYbJgPydjN33MYLiOZQ==", "dev": true, "dependencies": { - "@storybook/core-client": "6.5.9", - "@storybook/core-server": "6.5.9" + "@storybook/core-client": "6.5.10", + "@storybook/core-server": "6.5.10" }, "funding": { "type": "opencollective", @@ -7913,21 +8406,21 @@ } }, "node_modules/@storybook/core-client": { - "version": "6.5.9", - "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-6.5.9.tgz", - "integrity": "sha512-LY0QbhShowO+PQx3gao3wdVjpKMH1AaSLmuI95FrcjoMmSXGf96jVLKQp9mJRGeHIsAa93EQBYuCihZycM3Kbg==", + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-6.5.10.tgz", + "integrity": "sha512-THsIjNrOrampTl0Lgfjvfjk1JnktKb4CQLOM80KpQb4cjDqorBjJmErzUkUQ2y3fXvrDmQ/kUREkShET4XEdtA==", "dev": true, "dependencies": { - "@storybook/addons": "6.5.9", - "@storybook/channel-postmessage": "6.5.9", - "@storybook/channel-websocket": "6.5.9", - "@storybook/client-api": "6.5.9", - "@storybook/client-logger": "6.5.9", - "@storybook/core-events": "6.5.9", + "@storybook/addons": "6.5.10", + "@storybook/channel-postmessage": "6.5.10", + "@storybook/channel-websocket": "6.5.10", + "@storybook/client-api": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/preview-web": "6.5.9", - "@storybook/store": "6.5.9", - "@storybook/ui": "6.5.9", + "@storybook/preview-web": "6.5.10", + "@storybook/store": "6.5.10", + "@storybook/ui": "6.5.10", "airbnb-js-shims": "^2.2.1", "ansi-to-html": "^0.6.11", "core-js": "^3.8.2", @@ -7954,6 +8447,276 @@ } } }, + "node_modules/@storybook/core-client/node_modules/@storybook/addons": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.10.tgz", + "integrity": "sha512-VD4tBCQ23PkSeDoxuHcKy0RfhIs3oMYjBacOZx7d0bvOzK9WjPyvE2ysDAh7r/ceqnwmWHAScIpE+I1RU7gl+g==", + "dev": true, + "dependencies": { + "@storybook/api": "6.5.10", + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/router": "6.5.10", + "@storybook/theming": "6.5.10", + "@types/webpack-env": "^1.16.0", + "core-js": "^3.8.2", + "global": "^4.4.0", + "regenerator-runtime": "^0.13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/core-client/node_modules/@storybook/api": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.5.10.tgz", + "integrity": "sha512-AkmgSPNEGdKp4oZA4KQ+RJsacw7GwfvjsVDnCkcXqS9zmSr/RNL0fhpcd60KKkmx/hGKPTDFpK3ZayxDrJ/h4A==", + "dev": true, + "dependencies": { + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/router": "6.5.10", + "@storybook/semver": "^7.3.2", + "@storybook/theming": "6.5.10", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7", + "store2": "^2.12.0", + "telejson": "^6.0.8", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/core-client/node_modules/@storybook/channel-postmessage": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.5.10.tgz", + "integrity": "sha512-t9PTA0UzFvYa3IlOfpBOolfrRMPTjUMIeCQ6FNyM0aj5GqLKSvoQzP8NeoRpIrvyf6ljFKKdaMaZ3fiCvh45ag==", + "dev": true, + "dependencies": { + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "core-js": "^3.8.2", + "global": "^4.4.0", + "qs": "^6.10.0", + "telejson": "^6.0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/core-client/node_modules/@storybook/channels": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.10.tgz", + "integrity": "sha512-lo26YZ6kWpHXLhuHJF4P/bICY7jD/rXEZqReKtGOSk1Lv99/xvG6pqmcy3hWLf3v3Dy/8otjRPSR7izFVIIZgQ==", + "dev": true, + "dependencies": { + "core-js": "^3.8.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/core-client/node_modules/@storybook/client-api": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.5.10.tgz", + "integrity": "sha512-3wBWZl3NvMFgMovgEh+euiARAT2FXzpvTF4Q1gerGMNNDlrGxHnFvSuy4FHg/irtOGLa4yLz43ULFbYtpKw0Lg==", + "dev": true, + "dependencies": { + "@storybook/addons": "6.5.10", + "@storybook/channel-postmessage": "6.5.10", + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/store": "6.5.10", + "@types/qs": "^6.9.5", + "@types/webpack-env": "^1.16.0", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "store2": "^2.12.0", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/core-client/node_modules/@storybook/client-logger": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.10.tgz", + "integrity": "sha512-/xA0MHOevXev68hyLMQw8Qo8KczSIdXOxliAgrycMTkDmw5eKeA8TP7B8zP3wGuq/e3MrdD9/8MWhb/IQBNC3w==", + "dev": true, + "dependencies": { + "core-js": "^3.8.2", + "global": "^4.4.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/core-client/node_modules/@storybook/core-events": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.10.tgz", + "integrity": "sha512-EVb1gO1172klVIAABLOoigFMx0V88uctY0K/qVCO8n6v+wd2+0Ccn63kl+gTxsAC3WZ8XhXh9q2w5ImHklVECw==", + "dev": true, + "dependencies": { + "core-js": "^3.8.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/core-client/node_modules/@storybook/preview-web": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/preview-web/-/preview-web-6.5.10.tgz", + "integrity": "sha512-sTC/o5gkvALOtcNgtApGKGN9EavvSxRHBeBh+5BQjV2qQ8ap+26RsfUizNBECAa2Jrn4osaDYn9HRhJLFL69WA==", + "dev": true, + "dependencies": { + "@storybook/addons": "6.5.10", + "@storybook/channel-postmessage": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/store": "6.5.10", + "ansi-to-html": "^0.6.11", + "core-js": "^3.8.2", + "global": "^4.4.0", + "lodash": "^4.17.21", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "unfetch": "^4.2.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/core-client/node_modules/@storybook/router": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.10.tgz", + "integrity": "sha512-O+vNW/eEpYFF8eCg5jZjNQ6q2DKQVxqDRPCy9pJdEbvavMDZn6AFYgVK+VJe5F4211WW2yncOu922xObCxXJYg==", + "dev": true, + "dependencies": { + "@storybook/client-logger": "6.5.10", + "core-js": "^3.8.2", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/core-client/node_modules/@storybook/store": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/store/-/store-6.5.10.tgz", + "integrity": "sha512-RswrSYh2IiKkytFPxP9AvP+hekjrvHK2ILvyDk2ZgduCN4n5ivsekOb+N3M2t+dq1eLuW9or5n2T4OWwAwjxxQ==", + "dev": true, + "dependencies": { + "@storybook/addons": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7", + "slash": "^3.0.0", + "stable": "^0.1.8", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/core-client/node_modules/@storybook/theming": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.10.tgz", + "integrity": "sha512-BvTQBBcSEwKKcsVmF+Ol6v0RIQUr+bxP7gb10wtfBd23mZTEFA0C1N5FnZr/dDeiBKG1pvf1UKvoYA731y0BsA==", + "dev": true, + "dependencies": { + "@storybook/client-logger": "6.5.10", + "core-js": "^3.8.2", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/core-client/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/@storybook/core-common": { "version": "6.5.9", "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.5.9.tgz", @@ -8063,23 +8826,23 @@ } }, "node_modules/@storybook/core-server": { - "version": "6.5.9", - "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-6.5.9.tgz", - "integrity": "sha512-YeePGUrd5fQPvGzMhowh124KrcZURFpFXg1VB0Op3ESqCIsInoMZeObci4Gc+binMXC7vcv7aw3EwSLU37qJzQ==", + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-6.5.10.tgz", + "integrity": "sha512-jqwpA0ccA8X5ck4esWBid04+cEIVqirdAcqJeNb9IZAD+bRreO4Im8ilzr7jc5AmQ9fkqHs2NByFKh9TITp8NQ==", "dev": true, "dependencies": { "@discoveryjs/json-ext": "^0.5.3", - "@storybook/builder-webpack4": "6.5.9", - "@storybook/core-client": "6.5.9", - "@storybook/core-common": "6.5.9", - "@storybook/core-events": "6.5.9", + "@storybook/builder-webpack4": "6.5.10", + "@storybook/core-client": "6.5.10", + "@storybook/core-common": "6.5.10", + "@storybook/core-events": "6.5.10", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/csf-tools": "6.5.9", - "@storybook/manager-webpack4": "6.5.9", - "@storybook/node-logger": "6.5.9", + "@storybook/csf-tools": "6.5.10", + "@storybook/manager-webpack4": "6.5.10", + "@storybook/node-logger": "6.5.10", "@storybook/semver": "^7.3.2", - "@storybook/store": "6.5.9", - "@storybook/telemetry": "6.5.9", + "@storybook/store": "6.5.10", + "@storybook/telemetry": "6.5.10", "@types/node": "^14.0.10 || ^16.0.0", "@types/node-fetch": "^2.5.7", "@types/pretty-hrtime": "^1.0.0", @@ -8134,6 +8897,268 @@ } } }, + "node_modules/@storybook/core-server/node_modules/@storybook/addons": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.10.tgz", + "integrity": "sha512-VD4tBCQ23PkSeDoxuHcKy0RfhIs3oMYjBacOZx7d0bvOzK9WjPyvE2ysDAh7r/ceqnwmWHAScIpE+I1RU7gl+g==", + "dev": true, + "dependencies": { + "@storybook/api": "6.5.10", + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/router": "6.5.10", + "@storybook/theming": "6.5.10", + "@types/webpack-env": "^1.16.0", + "core-js": "^3.8.2", + "global": "^4.4.0", + "regenerator-runtime": "^0.13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/core-server/node_modules/@storybook/api": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.5.10.tgz", + "integrity": "sha512-AkmgSPNEGdKp4oZA4KQ+RJsacw7GwfvjsVDnCkcXqS9zmSr/RNL0fhpcd60KKkmx/hGKPTDFpK3ZayxDrJ/h4A==", + "dev": true, + "dependencies": { + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/router": "6.5.10", + "@storybook/semver": "^7.3.2", + "@storybook/theming": "6.5.10", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7", + "store2": "^2.12.0", + "telejson": "^6.0.8", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/core-server/node_modules/@storybook/channels": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.10.tgz", + "integrity": "sha512-lo26YZ6kWpHXLhuHJF4P/bICY7jD/rXEZqReKtGOSk1Lv99/xvG6pqmcy3hWLf3v3Dy/8otjRPSR7izFVIIZgQ==", + "dev": true, + "dependencies": { + "core-js": "^3.8.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/core-server/node_modules/@storybook/client-logger": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.10.tgz", + "integrity": "sha512-/xA0MHOevXev68hyLMQw8Qo8KczSIdXOxliAgrycMTkDmw5eKeA8TP7B8zP3wGuq/e3MrdD9/8MWhb/IQBNC3w==", + "dev": true, + "dependencies": { + "core-js": "^3.8.2", + "global": "^4.4.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/core-server/node_modules/@storybook/core-common": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.5.10.tgz", + "integrity": "sha512-Bx+VKkfWdrAmD8T51Sjq/mMhRaiapBHcpG4cU5bc3DMbg+LF2/yrgqv/cjVu+m5gHAzYCac5D7gqzBgvG7Myww==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.10", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-decorators": "^7.12.12", + "@babel/plugin-proposal-export-default-from": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.7", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-private-property-in-object": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.12", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/preset-env": "^7.12.11", + "@babel/preset-react": "^7.12.10", + "@babel/preset-typescript": "^7.12.7", + "@babel/register": "^7.12.1", + "@storybook/node-logger": "6.5.10", + "@storybook/semver": "^7.3.2", + "@types/node": "^14.0.10 || ^16.0.0", + "@types/pretty-hrtime": "^1.0.0", + "babel-loader": "^8.0.0", + "babel-plugin-macros": "^3.0.1", + "babel-plugin-polyfill-corejs3": "^0.1.0", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "express": "^4.17.1", + "file-system-cache": "^1.0.5", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.0.4", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "handlebars": "^4.7.7", + "interpret": "^2.2.0", + "json5": "^2.1.3", + "lazy-universal-dotenv": "^3.0.1", + "picomatch": "^2.3.0", + "pkg-dir": "^5.0.0", + "pretty-hrtime": "^1.0.3", + "resolve-from": "^5.0.0", + "slash": "^3.0.0", + "telejson": "^6.0.8", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2", + "webpack": "4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@storybook/core-server/node_modules/@storybook/core-events": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.10.tgz", + "integrity": "sha512-EVb1gO1172klVIAABLOoigFMx0V88uctY0K/qVCO8n6v+wd2+0Ccn63kl+gTxsAC3WZ8XhXh9q2w5ImHklVECw==", + "dev": true, + "dependencies": { + "core-js": "^3.8.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/core-server/node_modules/@storybook/node-logger": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.5.10.tgz", + "integrity": "sha512-bYswXIKV7Stru8vYfkjUMNN8UhF7Qg7NRsUvG5Djt5lLIae1XmUIgnH40mU/nW4X4BSfcR9MKxsSsngvn2WmQg==", + "dev": true, + "dependencies": { + "@types/npmlog": "^4.1.2", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "npmlog": "^5.0.1", + "pretty-hrtime": "^1.0.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/core-server/node_modules/@storybook/router": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.10.tgz", + "integrity": "sha512-O+vNW/eEpYFF8eCg5jZjNQ6q2DKQVxqDRPCy9pJdEbvavMDZn6AFYgVK+VJe5F4211WW2yncOu922xObCxXJYg==", + "dev": true, + "dependencies": { + "@storybook/client-logger": "6.5.10", + "core-js": "^3.8.2", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/core-server/node_modules/@storybook/store": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/store/-/store-6.5.10.tgz", + "integrity": "sha512-RswrSYh2IiKkytFPxP9AvP+hekjrvHK2ILvyDk2ZgduCN4n5ivsekOb+N3M2t+dq1eLuW9or5n2T4OWwAwjxxQ==", + "dev": true, + "dependencies": { + "@storybook/addons": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7", + "slash": "^3.0.0", + "stable": "^0.1.8", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/core-server/node_modules/@storybook/theming": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.10.tgz", + "integrity": "sha512-BvTQBBcSEwKKcsVmF+Ol6v0RIQUr+bxP7gb10wtfBd23mZTEFA0C1N5FnZr/dDeiBKG1pvf1UKvoYA731y0BsA==", + "dev": true, + "dependencies": { + "@storybook/client-logger": "6.5.10", + "core-js": "^3.8.2", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/@storybook/core-server/node_modules/commander": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", @@ -8183,9 +9208,9 @@ } }, "node_modules/@storybook/csf-tools": { - "version": "6.5.9", - "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-6.5.9.tgz", - "integrity": "sha512-RAdhsO2XmEDyWy0qNQvdKMLeIZAuyfD+tYlUwBHRU6DbByDucvwgMOGy5dF97YNJFmyo93EUYJzXjUrJs3U1LQ==", + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-6.5.10.tgz", + "integrity": "sha512-H77kZQEisu7+skzeIbNZwmE09OqLjwJTeFhLN1pcjxKVa30LEI3pBHcNBxVKqgxl+Yg3KkB7W/ArLO2N+i2ohw==", "dev": true, "dependencies": { "@babel/core": "^7.12.10", @@ -8227,70 +9252,306 @@ "jsonfile": "^6.0.1", "universalify": "^2.0.0" }, - "engines": { - "node": ">=10" + "engines": { + "node": ">=10" + } + }, + "node_modules/@storybook/docs-tools": { + "version": "6.5.9", + "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-6.5.9.tgz", + "integrity": "sha512-UoTaXLvec8x+q+4oYIk/t8DBju9C3ZTGklqOxDIt+0kS3TFAqEgI3JhKXqQOXgN5zDcvLVSxi8dbVAeSxk2ktA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/store": "6.5.9", + "core-js": "^3.8.2", + "doctrine": "^3.0.0", + "lodash": "^4.17.21", + "regenerator-runtime": "^0.13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/manager-webpack4": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/manager-webpack4/-/manager-webpack4-6.5.10.tgz", + "integrity": "sha512-N/TlNDhuhARuFipR/ZJ/xEVESz23iIbCsZ4VNehLHm8PpiGlQUehk+jMjWmz5XV0bJItwjRclY+CU3GjZKblfQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.10", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/preset-react": "^7.12.10", + "@storybook/addons": "6.5.10", + "@storybook/core-client": "6.5.10", + "@storybook/core-common": "6.5.10", + "@storybook/node-logger": "6.5.10", + "@storybook/theming": "6.5.10", + "@storybook/ui": "6.5.10", + "@types/node": "^14.0.10 || ^16.0.0", + "@types/webpack": "^4.41.26", + "babel-loader": "^8.0.0", + "case-sensitive-paths-webpack-plugin": "^2.3.0", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "css-loader": "^3.6.0", + "express": "^4.17.1", + "file-loader": "^6.2.0", + "find-up": "^5.0.0", + "fs-extra": "^9.0.1", + "html-webpack-plugin": "^4.0.0", + "node-fetch": "^2.6.7", + "pnp-webpack-plugin": "1.6.4", + "read-pkg-up": "^7.0.1", + "regenerator-runtime": "^0.13.7", + "resolve-from": "^5.0.0", + "style-loader": "^1.3.0", + "telejson": "^6.0.8", + "terser-webpack-plugin": "^4.2.3", + "ts-dedent": "^2.0.0", + "url-loader": "^4.1.1", + "util-deprecate": "^1.0.2", + "webpack": "4", + "webpack-dev-middleware": "^3.7.3", + "webpack-virtual-modules": "^0.2.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@storybook/manager-webpack4/node_modules/@storybook/addons": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.10.tgz", + "integrity": "sha512-VD4tBCQ23PkSeDoxuHcKy0RfhIs3oMYjBacOZx7d0bvOzK9WjPyvE2ysDAh7r/ceqnwmWHAScIpE+I1RU7gl+g==", + "dev": true, + "dependencies": { + "@storybook/api": "6.5.10", + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/router": "6.5.10", + "@storybook/theming": "6.5.10", + "@types/webpack-env": "^1.16.0", + "core-js": "^3.8.2", + "global": "^4.4.0", + "regenerator-runtime": "^0.13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/manager-webpack4/node_modules/@storybook/api": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.5.10.tgz", + "integrity": "sha512-AkmgSPNEGdKp4oZA4KQ+RJsacw7GwfvjsVDnCkcXqS9zmSr/RNL0fhpcd60KKkmx/hGKPTDFpK3ZayxDrJ/h4A==", + "dev": true, + "dependencies": { + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/router": "6.5.10", + "@storybook/semver": "^7.3.2", + "@storybook/theming": "6.5.10", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7", + "store2": "^2.12.0", + "telejson": "^6.0.8", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/manager-webpack4/node_modules/@storybook/channels": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.10.tgz", + "integrity": "sha512-lo26YZ6kWpHXLhuHJF4P/bICY7jD/rXEZqReKtGOSk1Lv99/xvG6pqmcy3hWLf3v3Dy/8otjRPSR7izFVIIZgQ==", + "dev": true, + "dependencies": { + "core-js": "^3.8.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/manager-webpack4/node_modules/@storybook/client-logger": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.10.tgz", + "integrity": "sha512-/xA0MHOevXev68hyLMQw8Qo8KczSIdXOxliAgrycMTkDmw5eKeA8TP7B8zP3wGuq/e3MrdD9/8MWhb/IQBNC3w==", + "dev": true, + "dependencies": { + "core-js": "^3.8.2", + "global": "^4.4.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/manager-webpack4/node_modules/@storybook/core-common": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.5.10.tgz", + "integrity": "sha512-Bx+VKkfWdrAmD8T51Sjq/mMhRaiapBHcpG4cU5bc3DMbg+LF2/yrgqv/cjVu+m5gHAzYCac5D7gqzBgvG7Myww==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.10", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-decorators": "^7.12.12", + "@babel/plugin-proposal-export-default-from": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.7", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-private-property-in-object": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.12", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/preset-env": "^7.12.11", + "@babel/preset-react": "^7.12.10", + "@babel/preset-typescript": "^7.12.7", + "@babel/register": "^7.12.1", + "@storybook/node-logger": "6.5.10", + "@storybook/semver": "^7.3.2", + "@types/node": "^14.0.10 || ^16.0.0", + "@types/pretty-hrtime": "^1.0.0", + "babel-loader": "^8.0.0", + "babel-plugin-macros": "^3.0.1", + "babel-plugin-polyfill-corejs3": "^0.1.0", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "express": "^4.17.1", + "file-system-cache": "^1.0.5", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.0.4", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "handlebars": "^4.7.7", + "interpret": "^2.2.0", + "json5": "^2.1.3", + "lazy-universal-dotenv": "^3.0.1", + "picomatch": "^2.3.0", + "pkg-dir": "^5.0.0", + "pretty-hrtime": "^1.0.3", + "resolve-from": "^5.0.0", + "slash": "^3.0.0", + "telejson": "^6.0.8", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2", + "webpack": "4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@storybook/manager-webpack4/node_modules/@storybook/core-events": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.10.tgz", + "integrity": "sha512-EVb1gO1172klVIAABLOoigFMx0V88uctY0K/qVCO8n6v+wd2+0Ccn63kl+gTxsAC3WZ8XhXh9q2w5ImHklVECw==", + "dev": true, + "dependencies": { + "core-js": "^3.8.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/manager-webpack4/node_modules/@storybook/node-logger": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.5.10.tgz", + "integrity": "sha512-bYswXIKV7Stru8vYfkjUMNN8UhF7Qg7NRsUvG5Djt5lLIae1XmUIgnH40mU/nW4X4BSfcR9MKxsSsngvn2WmQg==", + "dev": true, + "dependencies": { + "@types/npmlog": "^4.1.2", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "npmlog": "^5.0.1", + "pretty-hrtime": "^1.0.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/docs-tools": { - "version": "6.5.9", - "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-6.5.9.tgz", - "integrity": "sha512-UoTaXLvec8x+q+4oYIk/t8DBju9C3ZTGklqOxDIt+0kS3TFAqEgI3JhKXqQOXgN5zDcvLVSxi8dbVAeSxk2ktA==", + "node_modules/@storybook/manager-webpack4/node_modules/@storybook/router": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.10.tgz", + "integrity": "sha512-O+vNW/eEpYFF8eCg5jZjNQ6q2DKQVxqDRPCy9pJdEbvavMDZn6AFYgVK+VJe5F4211WW2yncOu922xObCxXJYg==", "dev": true, "dependencies": { - "@babel/core": "^7.12.10", - "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/store": "6.5.9", + "@storybook/client-logger": "6.5.10", "core-js": "^3.8.2", - "doctrine": "^3.0.0", - "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", "regenerator-runtime": "^0.13.7" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/manager-webpack4": { - "version": "6.5.9", - "resolved": "https://registry.npmjs.org/@storybook/manager-webpack4/-/manager-webpack4-6.5.9.tgz", - "integrity": "sha512-49LZlHqWc7zj9tQfOOANixPYmLxqWTTZceA6DSXnKd9xDiO2Gl23Y+l/CSPXNZGDB8QFAwpimwqyKJj/NLH45A==", + "node_modules/@storybook/manager-webpack4/node_modules/@storybook/theming": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.10.tgz", + "integrity": "sha512-BvTQBBcSEwKKcsVmF+Ol6v0RIQUr+bxP7gb10wtfBd23mZTEFA0C1N5FnZr/dDeiBKG1pvf1UKvoYA731y0BsA==", "dev": true, "dependencies": { - "@babel/core": "^7.12.10", - "@babel/plugin-transform-template-literals": "^7.12.1", - "@babel/preset-react": "^7.12.10", - "@storybook/addons": "6.5.9", - "@storybook/core-client": "6.5.9", - "@storybook/core-common": "6.5.9", - "@storybook/node-logger": "6.5.9", - "@storybook/theming": "6.5.9", - "@storybook/ui": "6.5.9", - "@types/node": "^14.0.10 || ^16.0.0", - "@types/webpack": "^4.41.26", - "babel-loader": "^8.0.0", - "case-sensitive-paths-webpack-plugin": "^2.3.0", - "chalk": "^4.1.0", + "@storybook/client-logger": "6.5.10", "core-js": "^3.8.2", - "css-loader": "^3.6.0", - "express": "^4.17.1", - "file-loader": "^6.2.0", - "find-up": "^5.0.0", - "fs-extra": "^9.0.1", - "html-webpack-plugin": "^4.0.0", - "node-fetch": "^2.6.7", - "pnp-webpack-plugin": "1.6.4", - "read-pkg-up": "^7.0.1", - "regenerator-runtime": "^0.13.7", - "resolve-from": "^5.0.0", - "style-loader": "^1.3.0", - "telejson": "^6.0.8", - "terser-webpack-plugin": "^4.2.3", - "ts-dedent": "^2.0.0", - "url-loader": "^4.1.1", - "util-deprecate": "^1.0.2", - "webpack": "4", - "webpack-dev-middleware": "^3.7.3", - "webpack-virtual-modules": "^0.2.2" + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7" }, "funding": { "type": "opencollective", @@ -8299,11 +9560,6 @@ "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } } }, "node_modules/@storybook/manager-webpack4/node_modules/commander": { @@ -8329,6 +9585,31 @@ "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, + "node_modules/@storybook/manager-webpack4/node_modules/find-cache-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@storybook/manager-webpack4/node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@storybook/manager-webpack4/node_modules/fs-extra": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", @@ -8412,27 +9693,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/manager-webpack4/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@storybook/manager-webpack4/node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/@storybook/manager-webpack4/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, "engines": { "node": ">=8" } @@ -8595,24 +9860,24 @@ } }, "node_modules/@storybook/react": { - "version": "6.5.9", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-6.5.9.tgz", - "integrity": "sha512-Rp+QaTQAzxJhwuzJXVd49mnIBLQRlF8llTxPT2YoGHdrGkku/zl/HblQ6H2yzEf15367VyzaAv/BpLsO9Jlfxg==", + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-6.5.10.tgz", + "integrity": "sha512-m8S1qQrwA7pDGwdKEvL6LV3YKvSzVUY297Fq+xcTU3irnAy4sHDuFoLqV6Mi1510mErK1r8+rf+0R5rEXB219g==", "dev": true, "dependencies": { "@babel/preset-flow": "^7.12.1", "@babel/preset-react": "^7.12.10", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3", - "@storybook/addons": "6.5.9", - "@storybook/client-logger": "6.5.9", - "@storybook/core": "6.5.9", - "@storybook/core-common": "6.5.9", + "@storybook/addons": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core": "6.5.10", + "@storybook/core-common": "6.5.10", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/docs-tools": "6.5.9", - "@storybook/node-logger": "6.5.9", + "@storybook/docs-tools": "6.5.10", + "@storybook/node-logger": "6.5.10", "@storybook/react-docgen-typescript-plugin": "1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0", "@storybook/semver": "^7.3.2", - "@storybook/store": "6.5.9", + "@storybook/store": "6.5.10", "@types/estree": "^0.0.51", "@types/node": "^14.14.20 || ^16.0.0", "@types/webpack-env": "^1.16.0", @@ -8675,6 +9940,288 @@ } } }, + "node_modules/@storybook/react/node_modules/@storybook/addons": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.10.tgz", + "integrity": "sha512-VD4tBCQ23PkSeDoxuHcKy0RfhIs3oMYjBacOZx7d0bvOzK9WjPyvE2ysDAh7r/ceqnwmWHAScIpE+I1RU7gl+g==", + "dev": true, + "dependencies": { + "@storybook/api": "6.5.10", + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/router": "6.5.10", + "@storybook/theming": "6.5.10", + "@types/webpack-env": "^1.16.0", + "core-js": "^3.8.2", + "global": "^4.4.0", + "regenerator-runtime": "^0.13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/react/node_modules/@storybook/api": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.5.10.tgz", + "integrity": "sha512-AkmgSPNEGdKp4oZA4KQ+RJsacw7GwfvjsVDnCkcXqS9zmSr/RNL0fhpcd60KKkmx/hGKPTDFpK3ZayxDrJ/h4A==", + "dev": true, + "dependencies": { + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/router": "6.5.10", + "@storybook/semver": "^7.3.2", + "@storybook/theming": "6.5.10", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7", + "store2": "^2.12.0", + "telejson": "^6.0.8", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/react/node_modules/@storybook/channels": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.10.tgz", + "integrity": "sha512-lo26YZ6kWpHXLhuHJF4P/bICY7jD/rXEZqReKtGOSk1Lv99/xvG6pqmcy3hWLf3v3Dy/8otjRPSR7izFVIIZgQ==", + "dev": true, + "dependencies": { + "core-js": "^3.8.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/react/node_modules/@storybook/client-logger": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.10.tgz", + "integrity": "sha512-/xA0MHOevXev68hyLMQw8Qo8KczSIdXOxliAgrycMTkDmw5eKeA8TP7B8zP3wGuq/e3MrdD9/8MWhb/IQBNC3w==", + "dev": true, + "dependencies": { + "core-js": "^3.8.2", + "global": "^4.4.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/react/node_modules/@storybook/core-common": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.5.10.tgz", + "integrity": "sha512-Bx+VKkfWdrAmD8T51Sjq/mMhRaiapBHcpG4cU5bc3DMbg+LF2/yrgqv/cjVu+m5gHAzYCac5D7gqzBgvG7Myww==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.10", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-decorators": "^7.12.12", + "@babel/plugin-proposal-export-default-from": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.7", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-private-property-in-object": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.12", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/preset-env": "^7.12.11", + "@babel/preset-react": "^7.12.10", + "@babel/preset-typescript": "^7.12.7", + "@babel/register": "^7.12.1", + "@storybook/node-logger": "6.5.10", + "@storybook/semver": "^7.3.2", + "@types/node": "^14.0.10 || ^16.0.0", + "@types/pretty-hrtime": "^1.0.0", + "babel-loader": "^8.0.0", + "babel-plugin-macros": "^3.0.1", + "babel-plugin-polyfill-corejs3": "^0.1.0", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "express": "^4.17.1", + "file-system-cache": "^1.0.5", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.0.4", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "handlebars": "^4.7.7", + "interpret": "^2.2.0", + "json5": "^2.1.3", + "lazy-universal-dotenv": "^3.0.1", + "picomatch": "^2.3.0", + "pkg-dir": "^5.0.0", + "pretty-hrtime": "^1.0.3", + "resolve-from": "^5.0.0", + "slash": "^3.0.0", + "telejson": "^6.0.8", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2", + "webpack": "4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@storybook/react/node_modules/@storybook/core-common/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@storybook/react/node_modules/@storybook/core-common/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@storybook/react/node_modules/@storybook/core-common/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@storybook/react/node_modules/@storybook/core-common/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@storybook/react/node_modules/@storybook/core-common/node_modules/pkg-dir": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", + "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", + "dev": true, + "dependencies": { + "find-up": "^5.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@storybook/react/node_modules/@storybook/core-events": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.10.tgz", + "integrity": "sha512-EVb1gO1172klVIAABLOoigFMx0V88uctY0K/qVCO8n6v+wd2+0Ccn63kl+gTxsAC3WZ8XhXh9q2w5ImHklVECw==", + "dev": true, + "dependencies": { + "core-js": "^3.8.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/react/node_modules/@storybook/docs-tools": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-6.5.10.tgz", + "integrity": "sha512-/bvYgOO+CxMEcHifkjJg0A60OTGOhcjGxnsB1h0gJuxMrqA/7Qwc108bFmPiX0eiD1BovFkZLJV4O6OY7zP5Vw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/store": "6.5.10", + "core-js": "^3.8.2", + "doctrine": "^3.0.0", + "lodash": "^4.17.21", + "regenerator-runtime": "^0.13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/react/node_modules/@storybook/node-logger": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.5.10.tgz", + "integrity": "sha512-bYswXIKV7Stru8vYfkjUMNN8UhF7Qg7NRsUvG5Djt5lLIae1XmUIgnH40mU/nW4X4BSfcR9MKxsSsngvn2WmQg==", + "dev": true, + "dependencies": { + "@types/npmlog": "^4.1.2", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "npmlog": "^5.0.1", + "pretty-hrtime": "^1.0.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, "node_modules/@storybook/react/node_modules/@storybook/react-docgen-typescript-plugin": { "version": "1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0", "resolved": "https://registry.npmjs.org/@storybook/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0.tgz", @@ -8694,6 +10241,78 @@ "webpack": ">= 4" } }, + "node_modules/@storybook/react/node_modules/@storybook/router": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.10.tgz", + "integrity": "sha512-O+vNW/eEpYFF8eCg5jZjNQ6q2DKQVxqDRPCy9pJdEbvavMDZn6AFYgVK+VJe5F4211WW2yncOu922xObCxXJYg==", + "dev": true, + "dependencies": { + "@storybook/client-logger": "6.5.10", + "core-js": "^3.8.2", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/react/node_modules/@storybook/store": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/store/-/store-6.5.10.tgz", + "integrity": "sha512-RswrSYh2IiKkytFPxP9AvP+hekjrvHK2ILvyDk2ZgduCN4n5ivsekOb+N3M2t+dq1eLuW9or5n2T4OWwAwjxxQ==", + "dev": true, + "dependencies": { + "@storybook/addons": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7", + "slash": "^3.0.0", + "stable": "^0.1.8", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/react/node_modules/@storybook/theming": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.10.tgz", + "integrity": "sha512-BvTQBBcSEwKKcsVmF+Ol6v0RIQUr+bxP7gb10wtfBd23mZTEFA0C1N5FnZr/dDeiBKG1pvf1UKvoYA731y0BsA==", + "dev": true, + "dependencies": { + "@storybook/client-logger": "6.5.10", + "core-js": "^3.8.2", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/@storybook/react/node_modules/acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", @@ -8835,6 +10454,15 @@ "typescript": ">= 4.3.x" } }, + "node_modules/@storybook/react/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/@storybook/router": { "version": "6.5.9", "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.9.tgz", @@ -9003,13 +10631,13 @@ } }, "node_modules/@storybook/telemetry": { - "version": "6.5.9", - "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-6.5.9.tgz", - "integrity": "sha512-JluoHCRhHAr4X0eUNVBSBi1JIBA92404Tu1TPdbN7x6gCZxHXXPTSUTAnspXp/21cTdMhY2x+kfZQ8fmlGK4MQ==", + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-6.5.10.tgz", + "integrity": "sha512-+M5HILDFS8nDumLxeSeAwi1MTzIuV6UWzV4yB2wcsEXOBTdplcl9oYqFKtlst78oOIdGtpPYxYfivDlqxC2K4g==", "dev": true, "dependencies": { - "@storybook/client-logger": "6.5.9", - "@storybook/core-common": "6.5.9", + "@storybook/client-logger": "6.5.10", + "@storybook/core-common": "6.5.10", "chalk": "^4.1.0", "core-js": "^3.8.2", "detect-package-manager": "^2.0.1", @@ -9026,6 +10654,108 @@ "url": "https://opencollective.com/storybook" } }, + "node_modules/@storybook/telemetry/node_modules/@storybook/client-logger": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.10.tgz", + "integrity": "sha512-/xA0MHOevXev68hyLMQw8Qo8KczSIdXOxliAgrycMTkDmw5eKeA8TP7B8zP3wGuq/e3MrdD9/8MWhb/IQBNC3w==", + "dev": true, + "dependencies": { + "core-js": "^3.8.2", + "global": "^4.4.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/telemetry/node_modules/@storybook/core-common": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.5.10.tgz", + "integrity": "sha512-Bx+VKkfWdrAmD8T51Sjq/mMhRaiapBHcpG4cU5bc3DMbg+LF2/yrgqv/cjVu+m5gHAzYCac5D7gqzBgvG7Myww==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.10", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-decorators": "^7.12.12", + "@babel/plugin-proposal-export-default-from": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.7", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-private-property-in-object": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.12", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/preset-env": "^7.12.11", + "@babel/preset-react": "^7.12.10", + "@babel/preset-typescript": "^7.12.7", + "@babel/register": "^7.12.1", + "@storybook/node-logger": "6.5.10", + "@storybook/semver": "^7.3.2", + "@types/node": "^14.0.10 || ^16.0.0", + "@types/pretty-hrtime": "^1.0.0", + "babel-loader": "^8.0.0", + "babel-plugin-macros": "^3.0.1", + "babel-plugin-polyfill-corejs3": "^0.1.0", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "express": "^4.17.1", + "file-system-cache": "^1.0.5", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.0.4", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "handlebars": "^4.7.7", + "interpret": "^2.2.0", + "json5": "^2.1.3", + "lazy-universal-dotenv": "^3.0.1", + "picomatch": "^2.3.0", + "pkg-dir": "^5.0.0", + "pretty-hrtime": "^1.0.3", + "resolve-from": "^5.0.0", + "slash": "^3.0.0", + "telejson": "^6.0.8", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2", + "webpack": "4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@storybook/telemetry/node_modules/@storybook/node-logger": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.5.10.tgz", + "integrity": "sha512-bYswXIKV7Stru8vYfkjUMNN8UhF7Qg7NRsUvG5Djt5lLIae1XmUIgnH40mU/nW4X4BSfcR9MKxsSsngvn2WmQg==", + "dev": true, + "dependencies": { + "@types/npmlog": "^4.1.2", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "npmlog": "^5.0.1", + "pretty-hrtime": "^1.0.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, "node_modules/@storybook/telemetry/node_modules/fs-extra": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", @@ -9041,6 +10771,15 @@ "node": ">=10" } }, + "node_modules/@storybook/telemetry/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/@storybook/theming": { "version": "6.5.9", "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.9.tgz", @@ -9062,25 +10801,192 @@ } }, "node_modules/@storybook/ui": { - "version": "6.5.9", - "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.5.9.tgz", - "integrity": "sha512-ryuPxJgtbb0gPXKGgGAUC+Z185xGAd1IvQ0jM5fJ0SisHXI8jteG3RaWhntOehi9qCg+64Vv6eH/cj9QYNHt1Q==", + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.5.10.tgz", + "integrity": "sha512-6iaoaRAiTqB1inTw35vao+5hjcDE0Qa0A3a9ZIeNa6yHvpB1k0lO/N/0PMrRdVvySYpXVD1iry4z4QYdo1rU+w==", + "dev": true, + "dependencies": { + "@storybook/addons": "6.5.10", + "@storybook/api": "6.5.10", + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/components": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/router": "6.5.10", + "@storybook/semver": "^7.3.2", + "@storybook/theming": "6.5.10", + "core-js": "^3.8.2", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "resolve-from": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/ui/node_modules/@storybook/addons": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.10.tgz", + "integrity": "sha512-VD4tBCQ23PkSeDoxuHcKy0RfhIs3oMYjBacOZx7d0bvOzK9WjPyvE2ysDAh7r/ceqnwmWHAScIpE+I1RU7gl+g==", "dev": true, "dependencies": { - "@storybook/addons": "6.5.9", - "@storybook/api": "6.5.9", - "@storybook/channels": "6.5.9", - "@storybook/client-logger": "6.5.9", - "@storybook/components": "6.5.9", - "@storybook/core-events": "6.5.9", - "@storybook/router": "6.5.9", + "@storybook/api": "6.5.10", + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/router": "6.5.10", + "@storybook/theming": "6.5.10", + "@types/webpack-env": "^1.16.0", + "core-js": "^3.8.2", + "global": "^4.4.0", + "regenerator-runtime": "^0.13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/ui/node_modules/@storybook/api": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.5.10.tgz", + "integrity": "sha512-AkmgSPNEGdKp4oZA4KQ+RJsacw7GwfvjsVDnCkcXqS9zmSr/RNL0fhpcd60KKkmx/hGKPTDFpK3ZayxDrJ/h4A==", + "dev": true, + "dependencies": { + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/router": "6.5.10", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.5.9", + "@storybook/theming": "6.5.10", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7", + "store2": "^2.12.0", + "telejson": "^6.0.8", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/ui/node_modules/@storybook/channels": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.10.tgz", + "integrity": "sha512-lo26YZ6kWpHXLhuHJF4P/bICY7jD/rXEZqReKtGOSk1Lv99/xvG6pqmcy3hWLf3v3Dy/8otjRPSR7izFVIIZgQ==", + "dev": true, + "dependencies": { + "core-js": "^3.8.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/ui/node_modules/@storybook/client-logger": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.10.tgz", + "integrity": "sha512-/xA0MHOevXev68hyLMQw8Qo8KczSIdXOxliAgrycMTkDmw5eKeA8TP7B8zP3wGuq/e3MrdD9/8MWhb/IQBNC3w==", + "dev": true, + "dependencies": { + "core-js": "^3.8.2", + "global": "^4.4.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/ui/node_modules/@storybook/components": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.5.10.tgz", + "integrity": "sha512-9OhgB8YQfGwOKjo/N96N5mrtJ6qDVVoEM1zuhea32tJUd2eYf0aSWpryA9VnOM0V1q/8DAoCg5rPBMYWMBU5uw==", + "dev": true, + "dependencies": { + "@storybook/client-logger": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/theming": "6.5.10", "core-js": "^3.8.2", "memoizerific": "^1.11.3", "qs": "^6.10.0", "regenerator-runtime": "^0.13.7", - "resolve-from": "^5.0.0" + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/ui/node_modules/@storybook/core-events": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.10.tgz", + "integrity": "sha512-EVb1gO1172klVIAABLOoigFMx0V88uctY0K/qVCO8n6v+wd2+0Ccn63kl+gTxsAC3WZ8XhXh9q2w5ImHklVECw==", + "dev": true, + "dependencies": { + "core-js": "^3.8.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/ui/node_modules/@storybook/router": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.10.tgz", + "integrity": "sha512-O+vNW/eEpYFF8eCg5jZjNQ6q2DKQVxqDRPCy9pJdEbvavMDZn6AFYgVK+VJe5F4211WW2yncOu922xObCxXJYg==", + "dev": true, + "dependencies": { + "@storybook/client-logger": "6.5.10", + "core-js": "^3.8.2", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/ui/node_modules/@storybook/theming": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.10.tgz", + "integrity": "sha512-BvTQBBcSEwKKcsVmF+Ol6v0RIQUr+bxP7gb10wtfBd23mZTEFA0C1N5FnZr/dDeiBKG1pvf1UKvoYA731y0BsA==", + "dev": true, + "dependencies": { + "@storybook/client-logger": "6.5.10", + "core-js": "^3.8.2", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7" }, "funding": { "type": "opencollective", @@ -57826,28 +59732,28 @@ } }, "@storybook/builder-webpack4": { - "version": "6.5.9", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack4/-/builder-webpack4-6.5.9.tgz", - "integrity": "sha512-YOeA4++9uRZ8Hog1wC60yjaxBOiI1FRQNtax7b9E7g+kP8UlSCPCGcv4gls9hFmzbzTOPfQTWnToA9Oa6jzRVw==", + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack4/-/builder-webpack4-6.5.10.tgz", + "integrity": "sha512-AoKjsCNoQQoZXYwBDxO8s+yVEd5FjBJAaysEuUTHq2fb81jwLrGcEOo6hjw4jqfugZQIzYUEjPazlvubS78zpw==", "dev": true, "requires": { "@babel/core": "^7.12.10", - "@storybook/addons": "6.5.9", - "@storybook/api": "6.5.9", - "@storybook/channel-postmessage": "6.5.9", - "@storybook/channels": "6.5.9", - "@storybook/client-api": "6.5.9", - "@storybook/client-logger": "6.5.9", - "@storybook/components": "6.5.9", - "@storybook/core-common": "6.5.9", - "@storybook/core-events": "6.5.9", - "@storybook/node-logger": "6.5.9", - "@storybook/preview-web": "6.5.9", - "@storybook/router": "6.5.9", + "@storybook/addons": "6.5.10", + "@storybook/api": "6.5.10", + "@storybook/channel-postmessage": "6.5.10", + "@storybook/channels": "6.5.10", + "@storybook/client-api": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/components": "6.5.10", + "@storybook/core-common": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/node-logger": "6.5.10", + "@storybook/preview-web": "6.5.10", + "@storybook/router": "6.5.10", "@storybook/semver": "^7.3.2", - "@storybook/store": "6.5.9", - "@storybook/theming": "6.5.9", - "@storybook/ui": "6.5.9", + "@storybook/store": "6.5.10", + "@storybook/theming": "6.5.10", + "@storybook/ui": "6.5.10", "@types/node": "^14.0.10 || ^16.0.0", "@types/webpack": "^4.41.26", "autoprefixer": "^9.8.6", @@ -57880,6 +59786,325 @@ "webpack-virtual-modules": "^0.2.2" }, "dependencies": { + "@storybook/addons": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.10.tgz", + "integrity": "sha512-VD4tBCQ23PkSeDoxuHcKy0RfhIs3oMYjBacOZx7d0bvOzK9WjPyvE2ysDAh7r/ceqnwmWHAScIpE+I1RU7gl+g==", + "dev": true, + "requires": { + "@storybook/api": "6.5.10", + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/router": "6.5.10", + "@storybook/theming": "6.5.10", + "@types/webpack-env": "^1.16.0", + "core-js": "^3.8.2", + "global": "^4.4.0", + "regenerator-runtime": "^0.13.7" + } + }, + "@storybook/api": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.5.10.tgz", + "integrity": "sha512-AkmgSPNEGdKp4oZA4KQ+RJsacw7GwfvjsVDnCkcXqS9zmSr/RNL0fhpcd60KKkmx/hGKPTDFpK3ZayxDrJ/h4A==", + "dev": true, + "requires": { + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/router": "6.5.10", + "@storybook/semver": "^7.3.2", + "@storybook/theming": "6.5.10", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7", + "store2": "^2.12.0", + "telejson": "^6.0.8", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/channel-postmessage": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.5.10.tgz", + "integrity": "sha512-t9PTA0UzFvYa3IlOfpBOolfrRMPTjUMIeCQ6FNyM0aj5GqLKSvoQzP8NeoRpIrvyf6ljFKKdaMaZ3fiCvh45ag==", + "dev": true, + "requires": { + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "core-js": "^3.8.2", + "global": "^4.4.0", + "qs": "^6.10.0", + "telejson": "^6.0.8" + } + }, + "@storybook/channels": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.10.tgz", + "integrity": "sha512-lo26YZ6kWpHXLhuHJF4P/bICY7jD/rXEZqReKtGOSk1Lv99/xvG6pqmcy3hWLf3v3Dy/8otjRPSR7izFVIIZgQ==", + "dev": true, + "requires": { + "core-js": "^3.8.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/client-api": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.5.10.tgz", + "integrity": "sha512-3wBWZl3NvMFgMovgEh+euiARAT2FXzpvTF4Q1gerGMNNDlrGxHnFvSuy4FHg/irtOGLa4yLz43ULFbYtpKw0Lg==", + "dev": true, + "requires": { + "@storybook/addons": "6.5.10", + "@storybook/channel-postmessage": "6.5.10", + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/store": "6.5.10", + "@types/qs": "^6.9.5", + "@types/webpack-env": "^1.16.0", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "store2": "^2.12.0", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/client-logger": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.10.tgz", + "integrity": "sha512-/xA0MHOevXev68hyLMQw8Qo8KczSIdXOxliAgrycMTkDmw5eKeA8TP7B8zP3wGuq/e3MrdD9/8MWhb/IQBNC3w==", + "dev": true, + "requires": { + "core-js": "^3.8.2", + "global": "^4.4.0" + } + }, + "@storybook/components": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.5.10.tgz", + "integrity": "sha512-9OhgB8YQfGwOKjo/N96N5mrtJ6qDVVoEM1zuhea32tJUd2eYf0aSWpryA9VnOM0V1q/8DAoCg5rPBMYWMBU5uw==", + "dev": true, + "requires": { + "@storybook/client-logger": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/theming": "6.5.10", + "core-js": "^3.8.2", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/core-common": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.5.10.tgz", + "integrity": "sha512-Bx+VKkfWdrAmD8T51Sjq/mMhRaiapBHcpG4cU5bc3DMbg+LF2/yrgqv/cjVu+m5gHAzYCac5D7gqzBgvG7Myww==", + "dev": true, + "requires": { + "@babel/core": "^7.12.10", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-decorators": "^7.12.12", + "@babel/plugin-proposal-export-default-from": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.7", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-private-property-in-object": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.12", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/preset-env": "^7.12.11", + "@babel/preset-react": "^7.12.10", + "@babel/preset-typescript": "^7.12.7", + "@babel/register": "^7.12.1", + "@storybook/node-logger": "6.5.10", + "@storybook/semver": "^7.3.2", + "@types/node": "^14.0.10 || ^16.0.0", + "@types/pretty-hrtime": "^1.0.0", + "babel-loader": "^8.0.0", + "babel-plugin-macros": "^3.0.1", + "babel-plugin-polyfill-corejs3": "^0.1.0", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "express": "^4.17.1", + "file-system-cache": "^1.0.5", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.0.4", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "handlebars": "^4.7.7", + "interpret": "^2.2.0", + "json5": "^2.1.3", + "lazy-universal-dotenv": "^3.0.1", + "picomatch": "^2.3.0", + "pkg-dir": "^5.0.0", + "pretty-hrtime": "^1.0.3", + "resolve-from": "^5.0.0", + "slash": "^3.0.0", + "telejson": "^6.0.8", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2", + "webpack": "4" + }, + "dependencies": { + "fork-ts-checker-webpack-plugin": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.2.tgz", + "integrity": "sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "memfs": "^3.1.2", + "minimatch": "^3.0.4", + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" + } + }, + "schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@storybook/core-events": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.10.tgz", + "integrity": "sha512-EVb1gO1172klVIAABLOoigFMx0V88uctY0K/qVCO8n6v+wd2+0Ccn63kl+gTxsAC3WZ8XhXh9q2w5ImHklVECw==", + "dev": true, + "requires": { + "core-js": "^3.8.2" + } + }, + "@storybook/node-logger": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.5.10.tgz", + "integrity": "sha512-bYswXIKV7Stru8vYfkjUMNN8UhF7Qg7NRsUvG5Djt5lLIae1XmUIgnH40mU/nW4X4BSfcR9MKxsSsngvn2WmQg==", + "dev": true, + "requires": { + "@types/npmlog": "^4.1.2", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "npmlog": "^5.0.1", + "pretty-hrtime": "^1.0.3" + } + }, + "@storybook/preview-web": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/preview-web/-/preview-web-6.5.10.tgz", + "integrity": "sha512-sTC/o5gkvALOtcNgtApGKGN9EavvSxRHBeBh+5BQjV2qQ8ap+26RsfUizNBECAa2Jrn4osaDYn9HRhJLFL69WA==", + "dev": true, + "requires": { + "@storybook/addons": "6.5.10", + "@storybook/channel-postmessage": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/store": "6.5.10", + "ansi-to-html": "^0.6.11", + "core-js": "^3.8.2", + "global": "^4.4.0", + "lodash": "^4.17.21", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "unfetch": "^4.2.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/router": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.10.tgz", + "integrity": "sha512-O+vNW/eEpYFF8eCg5jZjNQ6q2DKQVxqDRPCy9pJdEbvavMDZn6AFYgVK+VJe5F4211WW2yncOu922xObCxXJYg==", + "dev": true, + "requires": { + "@storybook/client-logger": "6.5.10", + "core-js": "^3.8.2", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7" + } + }, + "@storybook/store": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/store/-/store-6.5.10.tgz", + "integrity": "sha512-RswrSYh2IiKkytFPxP9AvP+hekjrvHK2ILvyDk2ZgduCN4n5ivsekOb+N3M2t+dq1eLuW9or5n2T4OWwAwjxxQ==", + "dev": true, + "requires": { + "@storybook/addons": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7", + "slash": "^3.0.0", + "stable": "^0.1.8", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/theming": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.10.tgz", + "integrity": "sha512-BvTQBBcSEwKKcsVmF+Ol6v0RIQUr+bxP7gb10wtfBd23mZTEFA0C1N5FnZr/dDeiBKG1pvf1UKvoYA731y0BsA==", + "dev": true, + "requires": { + "@storybook/client-logger": "6.5.10", + "core-js": "^3.8.2", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7" + } + }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -57933,17 +60158,6 @@ } } }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -57965,6 +60179,19 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + } + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -58003,6 +60230,27 @@ "commondir": "^1.0.1", "make-dir": "^3.0.2", "pkg-dir": "^4.1.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + } } }, "fork-ts-checker-webpack-plugin": { @@ -58018,6 +60266,40 @@ "semver": "^5.6.0", "tapable": "^1.0.0", "worker-rpc": "^0.1.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" } }, "glob-promise": { @@ -58082,23 +60364,6 @@ "@types/node": "*", "merge-stream": "^2.0.0", "supports-color": "^7.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } } }, "locate-path": { @@ -58168,27 +60433,6 @@ } } }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - } - } - }, "postcss": { "version": "7.0.39", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", @@ -58205,21 +60449,18 @@ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, "tapable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", @@ -58293,16 +60534,39 @@ } }, "@storybook/channel-websocket": { - "version": "6.5.9", - "resolved": "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-6.5.9.tgz", - "integrity": "sha512-xtHvSNwuOhkgALwVshKWsoFhDmuvcosdYfxcfFGEiYKXIu46tRS5ZXmpmgEC/0JAVkVoFj5nL8bV7IY5np6oaA==", + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-6.5.10.tgz", + "integrity": "sha512-RTXMZbMWCS3xU+4GVIdfnUXsKcwg/WTozy88/5OxaKjGw6KgRedqLAQJKJ6Y5XlnwIcWelirkHj/COwTTXhbPg==", "dev": true, "requires": { - "@storybook/channels": "6.5.9", - "@storybook/client-logger": "6.5.9", + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", "core-js": "^3.8.2", "global": "^4.4.0", "telejson": "^6.0.8" + }, + "dependencies": { + "@storybook/channels": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.10.tgz", + "integrity": "sha512-lo26YZ6kWpHXLhuHJF4P/bICY7jD/rXEZqReKtGOSk1Lv99/xvG6pqmcy3hWLf3v3Dy/8otjRPSR7izFVIIZgQ==", + "dev": true, + "requires": { + "core-js": "^3.8.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/client-logger": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.10.tgz", + "integrity": "sha512-/xA0MHOevXev68hyLMQw8Qo8KczSIdXOxliAgrycMTkDmw5eKeA8TP7B8zP3wGuq/e3MrdD9/8MWhb/IQBNC3w==", + "dev": true, + "requires": { + "core-js": "^3.8.2", + "global": "^4.4.0" + } + } } }, "@storybook/channels": { @@ -58388,31 +60652,31 @@ } }, "@storybook/core": { - "version": "6.5.9", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-6.5.9.tgz", - "integrity": "sha512-Mt3TTQnjQt2/pa60A+bqDsAOrYpohapdtt4DDZEbS8h0V6u11KyYYh3w7FCySlL+sPEyogj63l5Ec76Jah3l2w==", + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-6.5.10.tgz", + "integrity": "sha512-K86yYa0tYlMxADlwQTculYvPROokQau09SCVqpsLg3wJCTvYFL4+SIqcYoyBSbFmHOdnYbJgPydjN33MYLiOZQ==", "dev": true, "requires": { - "@storybook/core-client": "6.5.9", - "@storybook/core-server": "6.5.9" + "@storybook/core-client": "6.5.10", + "@storybook/core-server": "6.5.10" } }, "@storybook/core-client": { - "version": "6.5.9", - "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-6.5.9.tgz", - "integrity": "sha512-LY0QbhShowO+PQx3gao3wdVjpKMH1AaSLmuI95FrcjoMmSXGf96jVLKQp9mJRGeHIsAa93EQBYuCihZycM3Kbg==", + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-6.5.10.tgz", + "integrity": "sha512-THsIjNrOrampTl0Lgfjvfjk1JnktKb4CQLOM80KpQb4cjDqorBjJmErzUkUQ2y3fXvrDmQ/kUREkShET4XEdtA==", "dev": true, "requires": { - "@storybook/addons": "6.5.9", - "@storybook/channel-postmessage": "6.5.9", - "@storybook/channel-websocket": "6.5.9", - "@storybook/client-api": "6.5.9", - "@storybook/client-logger": "6.5.9", - "@storybook/core-events": "6.5.9", + "@storybook/addons": "6.5.10", + "@storybook/channel-postmessage": "6.5.10", + "@storybook/channel-websocket": "6.5.10", + "@storybook/client-api": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/preview-web": "6.5.9", - "@storybook/store": "6.5.9", - "@storybook/ui": "6.5.9", + "@storybook/preview-web": "6.5.10", + "@storybook/store": "6.5.10", + "@storybook/ui": "6.5.10", "airbnb-js-shims": "^2.2.1", "ansi-to-html": "^0.6.11", "core-js": "^3.8.2", @@ -58423,6 +60687,203 @@ "ts-dedent": "^2.0.0", "unfetch": "^4.2.0", "util-deprecate": "^1.0.2" + }, + "dependencies": { + "@storybook/addons": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.10.tgz", + "integrity": "sha512-VD4tBCQ23PkSeDoxuHcKy0RfhIs3oMYjBacOZx7d0bvOzK9WjPyvE2ysDAh7r/ceqnwmWHAScIpE+I1RU7gl+g==", + "dev": true, + "requires": { + "@storybook/api": "6.5.10", + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/router": "6.5.10", + "@storybook/theming": "6.5.10", + "@types/webpack-env": "^1.16.0", + "core-js": "^3.8.2", + "global": "^4.4.0", + "regenerator-runtime": "^0.13.7" + } + }, + "@storybook/api": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.5.10.tgz", + "integrity": "sha512-AkmgSPNEGdKp4oZA4KQ+RJsacw7GwfvjsVDnCkcXqS9zmSr/RNL0fhpcd60KKkmx/hGKPTDFpK3ZayxDrJ/h4A==", + "dev": true, + "requires": { + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/router": "6.5.10", + "@storybook/semver": "^7.3.2", + "@storybook/theming": "6.5.10", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7", + "store2": "^2.12.0", + "telejson": "^6.0.8", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/channel-postmessage": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.5.10.tgz", + "integrity": "sha512-t9PTA0UzFvYa3IlOfpBOolfrRMPTjUMIeCQ6FNyM0aj5GqLKSvoQzP8NeoRpIrvyf6ljFKKdaMaZ3fiCvh45ag==", + "dev": true, + "requires": { + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "core-js": "^3.8.2", + "global": "^4.4.0", + "qs": "^6.10.0", + "telejson": "^6.0.8" + } + }, + "@storybook/channels": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.10.tgz", + "integrity": "sha512-lo26YZ6kWpHXLhuHJF4P/bICY7jD/rXEZqReKtGOSk1Lv99/xvG6pqmcy3hWLf3v3Dy/8otjRPSR7izFVIIZgQ==", + "dev": true, + "requires": { + "core-js": "^3.8.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/client-api": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.5.10.tgz", + "integrity": "sha512-3wBWZl3NvMFgMovgEh+euiARAT2FXzpvTF4Q1gerGMNNDlrGxHnFvSuy4FHg/irtOGLa4yLz43ULFbYtpKw0Lg==", + "dev": true, + "requires": { + "@storybook/addons": "6.5.10", + "@storybook/channel-postmessage": "6.5.10", + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/store": "6.5.10", + "@types/qs": "^6.9.5", + "@types/webpack-env": "^1.16.0", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "store2": "^2.12.0", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/client-logger": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.10.tgz", + "integrity": "sha512-/xA0MHOevXev68hyLMQw8Qo8KczSIdXOxliAgrycMTkDmw5eKeA8TP7B8zP3wGuq/e3MrdD9/8MWhb/IQBNC3w==", + "dev": true, + "requires": { + "core-js": "^3.8.2", + "global": "^4.4.0" + } + }, + "@storybook/core-events": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.10.tgz", + "integrity": "sha512-EVb1gO1172klVIAABLOoigFMx0V88uctY0K/qVCO8n6v+wd2+0Ccn63kl+gTxsAC3WZ8XhXh9q2w5ImHklVECw==", + "dev": true, + "requires": { + "core-js": "^3.8.2" + } + }, + "@storybook/preview-web": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/preview-web/-/preview-web-6.5.10.tgz", + "integrity": "sha512-sTC/o5gkvALOtcNgtApGKGN9EavvSxRHBeBh+5BQjV2qQ8ap+26RsfUizNBECAa2Jrn4osaDYn9HRhJLFL69WA==", + "dev": true, + "requires": { + "@storybook/addons": "6.5.10", + "@storybook/channel-postmessage": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/store": "6.5.10", + "ansi-to-html": "^0.6.11", + "core-js": "^3.8.2", + "global": "^4.4.0", + "lodash": "^4.17.21", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "unfetch": "^4.2.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/router": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.10.tgz", + "integrity": "sha512-O+vNW/eEpYFF8eCg5jZjNQ6q2DKQVxqDRPCy9pJdEbvavMDZn6AFYgVK+VJe5F4211WW2yncOu922xObCxXJYg==", + "dev": true, + "requires": { + "@storybook/client-logger": "6.5.10", + "core-js": "^3.8.2", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7" + } + }, + "@storybook/store": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/store/-/store-6.5.10.tgz", + "integrity": "sha512-RswrSYh2IiKkytFPxP9AvP+hekjrvHK2ILvyDk2ZgduCN4n5ivsekOb+N3M2t+dq1eLuW9or5n2T4OWwAwjxxQ==", + "dev": true, + "requires": { + "@storybook/addons": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7", + "slash": "^3.0.0", + "stable": "^0.1.8", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/theming": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.10.tgz", + "integrity": "sha512-BvTQBBcSEwKKcsVmF+Ol6v0RIQUr+bxP7gb10wtfBd23mZTEFA0C1N5FnZr/dDeiBKG1pvf1UKvoYA731y0BsA==", + "dev": true, + "requires": { + "@storybook/client-logger": "6.5.10", + "core-js": "^3.8.2", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + } } }, "@storybook/core-common": { @@ -58513,23 +60974,23 @@ } }, "@storybook/core-server": { - "version": "6.5.9", - "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-6.5.9.tgz", - "integrity": "sha512-YeePGUrd5fQPvGzMhowh124KrcZURFpFXg1VB0Op3ESqCIsInoMZeObci4Gc+binMXC7vcv7aw3EwSLU37qJzQ==", + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-6.5.10.tgz", + "integrity": "sha512-jqwpA0ccA8X5ck4esWBid04+cEIVqirdAcqJeNb9IZAD+bRreO4Im8ilzr7jc5AmQ9fkqHs2NByFKh9TITp8NQ==", "dev": true, "requires": { "@discoveryjs/json-ext": "^0.5.3", - "@storybook/builder-webpack4": "6.5.9", - "@storybook/core-client": "6.5.9", - "@storybook/core-common": "6.5.9", - "@storybook/core-events": "6.5.9", + "@storybook/builder-webpack4": "6.5.10", + "@storybook/core-client": "6.5.10", + "@storybook/core-common": "6.5.10", + "@storybook/core-events": "6.5.10", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/csf-tools": "6.5.9", - "@storybook/manager-webpack4": "6.5.9", - "@storybook/node-logger": "6.5.9", + "@storybook/csf-tools": "6.5.10", + "@storybook/manager-webpack4": "6.5.10", + "@storybook/node-logger": "6.5.10", "@storybook/semver": "^7.3.2", - "@storybook/store": "6.5.9", - "@storybook/telemetry": "6.5.9", + "@storybook/store": "6.5.10", + "@storybook/telemetry": "6.5.10", "@types/node": "^14.0.10 || ^16.0.0", "@types/node-fetch": "^2.5.7", "@types/pretty-hrtime": "^1.0.0", @@ -58565,6 +61026,199 @@ "x-default-browser": "^0.4.0" }, "dependencies": { + "@storybook/addons": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.10.tgz", + "integrity": "sha512-VD4tBCQ23PkSeDoxuHcKy0RfhIs3oMYjBacOZx7d0bvOzK9WjPyvE2ysDAh7r/ceqnwmWHAScIpE+I1RU7gl+g==", + "dev": true, + "requires": { + "@storybook/api": "6.5.10", + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/router": "6.5.10", + "@storybook/theming": "6.5.10", + "@types/webpack-env": "^1.16.0", + "core-js": "^3.8.2", + "global": "^4.4.0", + "regenerator-runtime": "^0.13.7" + } + }, + "@storybook/api": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.5.10.tgz", + "integrity": "sha512-AkmgSPNEGdKp4oZA4KQ+RJsacw7GwfvjsVDnCkcXqS9zmSr/RNL0fhpcd60KKkmx/hGKPTDFpK3ZayxDrJ/h4A==", + "dev": true, + "requires": { + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/router": "6.5.10", + "@storybook/semver": "^7.3.2", + "@storybook/theming": "6.5.10", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7", + "store2": "^2.12.0", + "telejson": "^6.0.8", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/channels": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.10.tgz", + "integrity": "sha512-lo26YZ6kWpHXLhuHJF4P/bICY7jD/rXEZqReKtGOSk1Lv99/xvG6pqmcy3hWLf3v3Dy/8otjRPSR7izFVIIZgQ==", + "dev": true, + "requires": { + "core-js": "^3.8.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/client-logger": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.10.tgz", + "integrity": "sha512-/xA0MHOevXev68hyLMQw8Qo8KczSIdXOxliAgrycMTkDmw5eKeA8TP7B8zP3wGuq/e3MrdD9/8MWhb/IQBNC3w==", + "dev": true, + "requires": { + "core-js": "^3.8.2", + "global": "^4.4.0" + } + }, + "@storybook/core-common": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.5.10.tgz", + "integrity": "sha512-Bx+VKkfWdrAmD8T51Sjq/mMhRaiapBHcpG4cU5bc3DMbg+LF2/yrgqv/cjVu+m5gHAzYCac5D7gqzBgvG7Myww==", + "dev": true, + "requires": { + "@babel/core": "^7.12.10", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-decorators": "^7.12.12", + "@babel/plugin-proposal-export-default-from": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.7", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-private-property-in-object": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.12", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/preset-env": "^7.12.11", + "@babel/preset-react": "^7.12.10", + "@babel/preset-typescript": "^7.12.7", + "@babel/register": "^7.12.1", + "@storybook/node-logger": "6.5.10", + "@storybook/semver": "^7.3.2", + "@types/node": "^14.0.10 || ^16.0.0", + "@types/pretty-hrtime": "^1.0.0", + "babel-loader": "^8.0.0", + "babel-plugin-macros": "^3.0.1", + "babel-plugin-polyfill-corejs3": "^0.1.0", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "express": "^4.17.1", + "file-system-cache": "^1.0.5", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.0.4", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "handlebars": "^4.7.7", + "interpret": "^2.2.0", + "json5": "^2.1.3", + "lazy-universal-dotenv": "^3.0.1", + "picomatch": "^2.3.0", + "pkg-dir": "^5.0.0", + "pretty-hrtime": "^1.0.3", + "resolve-from": "^5.0.0", + "slash": "^3.0.0", + "telejson": "^6.0.8", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2", + "webpack": "4" + } + }, + "@storybook/core-events": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.10.tgz", + "integrity": "sha512-EVb1gO1172klVIAABLOoigFMx0V88uctY0K/qVCO8n6v+wd2+0Ccn63kl+gTxsAC3WZ8XhXh9q2w5ImHklVECw==", + "dev": true, + "requires": { + "core-js": "^3.8.2" + } + }, + "@storybook/node-logger": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.5.10.tgz", + "integrity": "sha512-bYswXIKV7Stru8vYfkjUMNN8UhF7Qg7NRsUvG5Djt5lLIae1XmUIgnH40mU/nW4X4BSfcR9MKxsSsngvn2WmQg==", + "dev": true, + "requires": { + "@types/npmlog": "^4.1.2", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "npmlog": "^5.0.1", + "pretty-hrtime": "^1.0.3" + } + }, + "@storybook/router": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.10.tgz", + "integrity": "sha512-O+vNW/eEpYFF8eCg5jZjNQ6q2DKQVxqDRPCy9pJdEbvavMDZn6AFYgVK+VJe5F4211WW2yncOu922xObCxXJYg==", + "dev": true, + "requires": { + "@storybook/client-logger": "6.5.10", + "core-js": "^3.8.2", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7" + } + }, + "@storybook/store": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/store/-/store-6.5.10.tgz", + "integrity": "sha512-RswrSYh2IiKkytFPxP9AvP+hekjrvHK2ILvyDk2ZgduCN4n5ivsekOb+N3M2t+dq1eLuW9or5n2T4OWwAwjxxQ==", + "dev": true, + "requires": { + "@storybook/addons": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7", + "slash": "^3.0.0", + "stable": "^0.1.8", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/theming": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.10.tgz", + "integrity": "sha512-BvTQBBcSEwKKcsVmF+Ol6v0RIQUr+bxP7gb10wtfBd23mZTEFA0C1N5FnZr/dDeiBKG1pvf1UKvoYA731y0BsA==", + "dev": true, + "requires": { + "@storybook/client-logger": "6.5.10", + "core-js": "^3.8.2", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7" + } + }, "commander": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", @@ -58607,9 +61261,9 @@ } }, "@storybook/csf-tools": { - "version": "6.5.9", - "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-6.5.9.tgz", - "integrity": "sha512-RAdhsO2XmEDyWy0qNQvdKMLeIZAuyfD+tYlUwBHRU6DbByDucvwgMOGy5dF97YNJFmyo93EUYJzXjUrJs3U1LQ==", + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-6.5.10.tgz", + "integrity": "sha512-H77kZQEisu7+skzeIbNZwmE09OqLjwJTeFhLN1pcjxKVa30LEI3pBHcNBxVKqgxl+Yg3KkB7W/ArLO2N+i2ohw==", "dev": true, "requires": { "@babel/core": "^7.12.10", @@ -58658,20 +61312,20 @@ } }, "@storybook/manager-webpack4": { - "version": "6.5.9", - "resolved": "https://registry.npmjs.org/@storybook/manager-webpack4/-/manager-webpack4-6.5.9.tgz", - "integrity": "sha512-49LZlHqWc7zj9tQfOOANixPYmLxqWTTZceA6DSXnKd9xDiO2Gl23Y+l/CSPXNZGDB8QFAwpimwqyKJj/NLH45A==", + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/manager-webpack4/-/manager-webpack4-6.5.10.tgz", + "integrity": "sha512-N/TlNDhuhARuFipR/ZJ/xEVESz23iIbCsZ4VNehLHm8PpiGlQUehk+jMjWmz5XV0bJItwjRclY+CU3GjZKblfQ==", "dev": true, "requires": { "@babel/core": "^7.12.10", "@babel/plugin-transform-template-literals": "^7.12.1", "@babel/preset-react": "^7.12.10", - "@storybook/addons": "6.5.9", - "@storybook/core-client": "6.5.9", - "@storybook/core-common": "6.5.9", - "@storybook/node-logger": "6.5.9", - "@storybook/theming": "6.5.9", - "@storybook/ui": "6.5.9", + "@storybook/addons": "6.5.10", + "@storybook/core-client": "6.5.10", + "@storybook/core-common": "6.5.10", + "@storybook/node-logger": "6.5.10", + "@storybook/theming": "6.5.10", + "@storybook/ui": "6.5.10", "@types/node": "^14.0.10 || ^16.0.0", "@types/webpack": "^4.41.26", "babel-loader": "^8.0.0", @@ -58700,6 +61354,176 @@ "webpack-virtual-modules": "^0.2.2" }, "dependencies": { + "@storybook/addons": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.10.tgz", + "integrity": "sha512-VD4tBCQ23PkSeDoxuHcKy0RfhIs3oMYjBacOZx7d0bvOzK9WjPyvE2ysDAh7r/ceqnwmWHAScIpE+I1RU7gl+g==", + "dev": true, + "requires": { + "@storybook/api": "6.5.10", + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/router": "6.5.10", + "@storybook/theming": "6.5.10", + "@types/webpack-env": "^1.16.0", + "core-js": "^3.8.2", + "global": "^4.4.0", + "regenerator-runtime": "^0.13.7" + } + }, + "@storybook/api": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.5.10.tgz", + "integrity": "sha512-AkmgSPNEGdKp4oZA4KQ+RJsacw7GwfvjsVDnCkcXqS9zmSr/RNL0fhpcd60KKkmx/hGKPTDFpK3ZayxDrJ/h4A==", + "dev": true, + "requires": { + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/router": "6.5.10", + "@storybook/semver": "^7.3.2", + "@storybook/theming": "6.5.10", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7", + "store2": "^2.12.0", + "telejson": "^6.0.8", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/channels": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.10.tgz", + "integrity": "sha512-lo26YZ6kWpHXLhuHJF4P/bICY7jD/rXEZqReKtGOSk1Lv99/xvG6pqmcy3hWLf3v3Dy/8otjRPSR7izFVIIZgQ==", + "dev": true, + "requires": { + "core-js": "^3.8.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/client-logger": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.10.tgz", + "integrity": "sha512-/xA0MHOevXev68hyLMQw8Qo8KczSIdXOxliAgrycMTkDmw5eKeA8TP7B8zP3wGuq/e3MrdD9/8MWhb/IQBNC3w==", + "dev": true, + "requires": { + "core-js": "^3.8.2", + "global": "^4.4.0" + } + }, + "@storybook/core-common": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.5.10.tgz", + "integrity": "sha512-Bx+VKkfWdrAmD8T51Sjq/mMhRaiapBHcpG4cU5bc3DMbg+LF2/yrgqv/cjVu+m5gHAzYCac5D7gqzBgvG7Myww==", + "dev": true, + "requires": { + "@babel/core": "^7.12.10", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-decorators": "^7.12.12", + "@babel/plugin-proposal-export-default-from": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.7", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-private-property-in-object": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.12", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/preset-env": "^7.12.11", + "@babel/preset-react": "^7.12.10", + "@babel/preset-typescript": "^7.12.7", + "@babel/register": "^7.12.1", + "@storybook/node-logger": "6.5.10", + "@storybook/semver": "^7.3.2", + "@types/node": "^14.0.10 || ^16.0.0", + "@types/pretty-hrtime": "^1.0.0", + "babel-loader": "^8.0.0", + "babel-plugin-macros": "^3.0.1", + "babel-plugin-polyfill-corejs3": "^0.1.0", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "express": "^4.17.1", + "file-system-cache": "^1.0.5", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.0.4", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "handlebars": "^4.7.7", + "interpret": "^2.2.0", + "json5": "^2.1.3", + "lazy-universal-dotenv": "^3.0.1", + "picomatch": "^2.3.0", + "pkg-dir": "^5.0.0", + "pretty-hrtime": "^1.0.3", + "resolve-from": "^5.0.0", + "slash": "^3.0.0", + "telejson": "^6.0.8", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2", + "webpack": "4" + } + }, + "@storybook/core-events": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.10.tgz", + "integrity": "sha512-EVb1gO1172klVIAABLOoigFMx0V88uctY0K/qVCO8n6v+wd2+0Ccn63kl+gTxsAC3WZ8XhXh9q2w5ImHklVECw==", + "dev": true, + "requires": { + "core-js": "^3.8.2" + } + }, + "@storybook/node-logger": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.5.10.tgz", + "integrity": "sha512-bYswXIKV7Stru8vYfkjUMNN8UhF7Qg7NRsUvG5Djt5lLIae1XmUIgnH40mU/nW4X4BSfcR9MKxsSsngvn2WmQg==", + "dev": true, + "requires": { + "@types/npmlog": "^4.1.2", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "npmlog": "^5.0.1", + "pretty-hrtime": "^1.0.3" + } + }, + "@storybook/router": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.10.tgz", + "integrity": "sha512-O+vNW/eEpYFF8eCg5jZjNQ6q2DKQVxqDRPCy9pJdEbvavMDZn6AFYgVK+VJe5F4211WW2yncOu922xObCxXJYg==", + "dev": true, + "requires": { + "@storybook/client-logger": "6.5.10", + "core-js": "^3.8.2", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7" + } + }, + "@storybook/theming": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.10.tgz", + "integrity": "sha512-BvTQBBcSEwKKcsVmF+Ol6v0RIQUr+bxP7gb10wtfBd23mZTEFA0C1N5FnZr/dDeiBKG1pvf1UKvoYA731y0BsA==", + "dev": true, + "requires": { + "@storybook/client-logger": "6.5.10", + "core-js": "^3.8.2", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7" + } + }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -58715,6 +61539,27 @@ "commondir": "^1.0.1", "make-dir": "^3.0.2", "pkg-dir": "^4.1.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + } } }, "fs-extra": { @@ -58778,26 +61623,11 @@ } } }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - } - } + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true }, "source-map": { "version": "0.6.1", @@ -58920,24 +61750,24 @@ } }, "@storybook/react": { - "version": "6.5.9", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-6.5.9.tgz", - "integrity": "sha512-Rp+QaTQAzxJhwuzJXVd49mnIBLQRlF8llTxPT2YoGHdrGkku/zl/HblQ6H2yzEf15367VyzaAv/BpLsO9Jlfxg==", + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-6.5.10.tgz", + "integrity": "sha512-m8S1qQrwA7pDGwdKEvL6LV3YKvSzVUY297Fq+xcTU3irnAy4sHDuFoLqV6Mi1510mErK1r8+rf+0R5rEXB219g==", "dev": true, "requires": { "@babel/preset-flow": "^7.12.1", "@babel/preset-react": "^7.12.10", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3", - "@storybook/addons": "6.5.9", - "@storybook/client-logger": "6.5.9", - "@storybook/core": "6.5.9", - "@storybook/core-common": "6.5.9", + "@storybook/addons": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core": "6.5.10", + "@storybook/core-common": "6.5.10", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/docs-tools": "6.5.9", - "@storybook/node-logger": "6.5.9", + "@storybook/docs-tools": "6.5.10", + "@storybook/node-logger": "6.5.10", "@storybook/react-docgen-typescript-plugin": "1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0", "@storybook/semver": "^7.3.2", - "@storybook/store": "6.5.9", + "@storybook/store": "6.5.10", "@types/estree": "^0.0.51", "@types/node": "^14.14.20 || ^16.0.0", "@types/webpack-env": "^1.16.0", @@ -58962,6 +61792,214 @@ "webpack": ">=4.43.0 <6.0.0" }, "dependencies": { + "@storybook/addons": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.10.tgz", + "integrity": "sha512-VD4tBCQ23PkSeDoxuHcKy0RfhIs3oMYjBacOZx7d0bvOzK9WjPyvE2ysDAh7r/ceqnwmWHAScIpE+I1RU7gl+g==", + "dev": true, + "requires": { + "@storybook/api": "6.5.10", + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/router": "6.5.10", + "@storybook/theming": "6.5.10", + "@types/webpack-env": "^1.16.0", + "core-js": "^3.8.2", + "global": "^4.4.0", + "regenerator-runtime": "^0.13.7" + } + }, + "@storybook/api": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.5.10.tgz", + "integrity": "sha512-AkmgSPNEGdKp4oZA4KQ+RJsacw7GwfvjsVDnCkcXqS9zmSr/RNL0fhpcd60KKkmx/hGKPTDFpK3ZayxDrJ/h4A==", + "dev": true, + "requires": { + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/router": "6.5.10", + "@storybook/semver": "^7.3.2", + "@storybook/theming": "6.5.10", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7", + "store2": "^2.12.0", + "telejson": "^6.0.8", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/channels": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.10.tgz", + "integrity": "sha512-lo26YZ6kWpHXLhuHJF4P/bICY7jD/rXEZqReKtGOSk1Lv99/xvG6pqmcy3hWLf3v3Dy/8otjRPSR7izFVIIZgQ==", + "dev": true, + "requires": { + "core-js": "^3.8.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/client-logger": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.10.tgz", + "integrity": "sha512-/xA0MHOevXev68hyLMQw8Qo8KczSIdXOxliAgrycMTkDmw5eKeA8TP7B8zP3wGuq/e3MrdD9/8MWhb/IQBNC3w==", + "dev": true, + "requires": { + "core-js": "^3.8.2", + "global": "^4.4.0" + } + }, + "@storybook/core-common": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.5.10.tgz", + "integrity": "sha512-Bx+VKkfWdrAmD8T51Sjq/mMhRaiapBHcpG4cU5bc3DMbg+LF2/yrgqv/cjVu+m5gHAzYCac5D7gqzBgvG7Myww==", + "dev": true, + "requires": { + "@babel/core": "^7.12.10", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-decorators": "^7.12.12", + "@babel/plugin-proposal-export-default-from": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.7", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-private-property-in-object": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.12", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/preset-env": "^7.12.11", + "@babel/preset-react": "^7.12.10", + "@babel/preset-typescript": "^7.12.7", + "@babel/register": "^7.12.1", + "@storybook/node-logger": "6.5.10", + "@storybook/semver": "^7.3.2", + "@types/node": "^14.0.10 || ^16.0.0", + "@types/pretty-hrtime": "^1.0.0", + "babel-loader": "^8.0.0", + "babel-plugin-macros": "^3.0.1", + "babel-plugin-polyfill-corejs3": "^0.1.0", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "express": "^4.17.1", + "file-system-cache": "^1.0.5", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.0.4", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "handlebars": "^4.7.7", + "interpret": "^2.2.0", + "json5": "^2.1.3", + "lazy-universal-dotenv": "^3.0.1", + "picomatch": "^2.3.0", + "pkg-dir": "^5.0.0", + "pretty-hrtime": "^1.0.3", + "resolve-from": "^5.0.0", + "slash": "^3.0.0", + "telejson": "^6.0.8", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2", + "webpack": "4" + }, + "dependencies": { + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "pkg-dir": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", + "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", + "dev": true, + "requires": { + "find-up": "^5.0.0" + } + } + } + }, + "@storybook/core-events": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.10.tgz", + "integrity": "sha512-EVb1gO1172klVIAABLOoigFMx0V88uctY0K/qVCO8n6v+wd2+0Ccn63kl+gTxsAC3WZ8XhXh9q2w5ImHklVECw==", + "dev": true, + "requires": { + "core-js": "^3.8.2" + } + }, + "@storybook/docs-tools": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-6.5.10.tgz", + "integrity": "sha512-/bvYgOO+CxMEcHifkjJg0A60OTGOhcjGxnsB1h0gJuxMrqA/7Qwc108bFmPiX0eiD1BovFkZLJV4O6OY7zP5Vw==", + "dev": true, + "requires": { + "@babel/core": "^7.12.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/store": "6.5.10", + "core-js": "^3.8.2", + "doctrine": "^3.0.0", + "lodash": "^4.17.21", + "regenerator-runtime": "^0.13.7" + } + }, + "@storybook/node-logger": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.5.10.tgz", + "integrity": "sha512-bYswXIKV7Stru8vYfkjUMNN8UhF7Qg7NRsUvG5Djt5lLIae1XmUIgnH40mU/nW4X4BSfcR9MKxsSsngvn2WmQg==", + "dev": true, + "requires": { + "@types/npmlog": "^4.1.2", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "npmlog": "^5.0.1", + "pretty-hrtime": "^1.0.3" + } + }, "@storybook/react-docgen-typescript-plugin": { "version": "1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0", "resolved": "https://registry.npmjs.org/@storybook/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0.tgz", @@ -58977,6 +62015,54 @@ "tslib": "^2.0.0" } }, + "@storybook/router": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.10.tgz", + "integrity": "sha512-O+vNW/eEpYFF8eCg5jZjNQ6q2DKQVxqDRPCy9pJdEbvavMDZn6AFYgVK+VJe5F4211WW2yncOu922xObCxXJYg==", + "dev": true, + "requires": { + "@storybook/client-logger": "6.5.10", + "core-js": "^3.8.2", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7" + } + }, + "@storybook/store": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/store/-/store-6.5.10.tgz", + "integrity": "sha512-RswrSYh2IiKkytFPxP9AvP+hekjrvHK2ILvyDk2ZgduCN4n5ivsekOb+N3M2t+dq1eLuW9or5n2T4OWwAwjxxQ==", + "dev": true, + "requires": { + "@storybook/addons": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7", + "slash": "^3.0.0", + "stable": "^0.1.8", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/theming": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.10.tgz", + "integrity": "sha512-BvTQBBcSEwKKcsVmF+Ol6v0RIQUr+bxP7gb10wtfBd23mZTEFA0C1N5FnZr/dDeiBKG1pvf1UKvoYA731y0BsA==", + "dev": true, + "requires": { + "@storybook/client-logger": "6.5.10", + "core-js": "^3.8.2", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7" + } + }, "acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", @@ -59073,6 +62159,12 @@ "integrity": "sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==", "dev": true, "requires": {} + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true } } }, @@ -59196,13 +62288,13 @@ } }, "@storybook/telemetry": { - "version": "6.5.9", - "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-6.5.9.tgz", - "integrity": "sha512-JluoHCRhHAr4X0eUNVBSBi1JIBA92404Tu1TPdbN7x6gCZxHXXPTSUTAnspXp/21cTdMhY2x+kfZQ8fmlGK4MQ==", + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-6.5.10.tgz", + "integrity": "sha512-+M5HILDFS8nDumLxeSeAwi1MTzIuV6UWzV4yB2wcsEXOBTdplcl9oYqFKtlst78oOIdGtpPYxYfivDlqxC2K4g==", "dev": true, "requires": { - "@storybook/client-logger": "6.5.9", - "@storybook/core-common": "6.5.9", + "@storybook/client-logger": "6.5.10", + "@storybook/core-common": "6.5.10", "chalk": "^4.1.0", "core-js": "^3.8.2", "detect-package-manager": "^2.0.1", @@ -59215,6 +62307,87 @@ "regenerator-runtime": "^0.13.7" }, "dependencies": { + "@storybook/client-logger": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.10.tgz", + "integrity": "sha512-/xA0MHOevXev68hyLMQw8Qo8KczSIdXOxliAgrycMTkDmw5eKeA8TP7B8zP3wGuq/e3MrdD9/8MWhb/IQBNC3w==", + "dev": true, + "requires": { + "core-js": "^3.8.2", + "global": "^4.4.0" + } + }, + "@storybook/core-common": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.5.10.tgz", + "integrity": "sha512-Bx+VKkfWdrAmD8T51Sjq/mMhRaiapBHcpG4cU5bc3DMbg+LF2/yrgqv/cjVu+m5gHAzYCac5D7gqzBgvG7Myww==", + "dev": true, + "requires": { + "@babel/core": "^7.12.10", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-decorators": "^7.12.12", + "@babel/plugin-proposal-export-default-from": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.7", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-private-property-in-object": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.12", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/preset-env": "^7.12.11", + "@babel/preset-react": "^7.12.10", + "@babel/preset-typescript": "^7.12.7", + "@babel/register": "^7.12.1", + "@storybook/node-logger": "6.5.10", + "@storybook/semver": "^7.3.2", + "@types/node": "^14.0.10 || ^16.0.0", + "@types/pretty-hrtime": "^1.0.0", + "babel-loader": "^8.0.0", + "babel-plugin-macros": "^3.0.1", + "babel-plugin-polyfill-corejs3": "^0.1.0", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "express": "^4.17.1", + "file-system-cache": "^1.0.5", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.0.4", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "handlebars": "^4.7.7", + "interpret": "^2.2.0", + "json5": "^2.1.3", + "lazy-universal-dotenv": "^3.0.1", + "picomatch": "^2.3.0", + "pkg-dir": "^5.0.0", + "pretty-hrtime": "^1.0.3", + "resolve-from": "^5.0.0", + "slash": "^3.0.0", + "telejson": "^6.0.8", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2", + "webpack": "4" + } + }, + "@storybook/node-logger": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.5.10.tgz", + "integrity": "sha512-bYswXIKV7Stru8vYfkjUMNN8UhF7Qg7NRsUvG5Djt5lLIae1XmUIgnH40mU/nW4X4BSfcR9MKxsSsngvn2WmQg==", + "dev": true, + "requires": { + "@types/npmlog": "^4.1.2", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "npmlog": "^5.0.1", + "pretty-hrtime": "^1.0.3" + } + }, "fs-extra": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", @@ -59226,6 +62399,12 @@ "jsonfile": "^6.0.1", "universalify": "^2.0.0" } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true } } }, @@ -59242,25 +62421,142 @@ } }, "@storybook/ui": { - "version": "6.5.9", - "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.5.9.tgz", - "integrity": "sha512-ryuPxJgtbb0gPXKGgGAUC+Z185xGAd1IvQ0jM5fJ0SisHXI8jteG3RaWhntOehi9qCg+64Vv6eH/cj9QYNHt1Q==", - "dev": true, - "requires": { - "@storybook/addons": "6.5.9", - "@storybook/api": "6.5.9", - "@storybook/channels": "6.5.9", - "@storybook/client-logger": "6.5.9", - "@storybook/components": "6.5.9", - "@storybook/core-events": "6.5.9", - "@storybook/router": "6.5.9", + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.5.10.tgz", + "integrity": "sha512-6iaoaRAiTqB1inTw35vao+5hjcDE0Qa0A3a9ZIeNa6yHvpB1k0lO/N/0PMrRdVvySYpXVD1iry4z4QYdo1rU+w==", + "dev": true, + "requires": { + "@storybook/addons": "6.5.10", + "@storybook/api": "6.5.10", + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/components": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/router": "6.5.10", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.5.9", + "@storybook/theming": "6.5.10", "core-js": "^3.8.2", "memoizerific": "^1.11.3", "qs": "^6.10.0", "regenerator-runtime": "^0.13.7", "resolve-from": "^5.0.0" + }, + "dependencies": { + "@storybook/addons": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.10.tgz", + "integrity": "sha512-VD4tBCQ23PkSeDoxuHcKy0RfhIs3oMYjBacOZx7d0bvOzK9WjPyvE2ysDAh7r/ceqnwmWHAScIpE+I1RU7gl+g==", + "dev": true, + "requires": { + "@storybook/api": "6.5.10", + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/router": "6.5.10", + "@storybook/theming": "6.5.10", + "@types/webpack-env": "^1.16.0", + "core-js": "^3.8.2", + "global": "^4.4.0", + "regenerator-runtime": "^0.13.7" + } + }, + "@storybook/api": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.5.10.tgz", + "integrity": "sha512-AkmgSPNEGdKp4oZA4KQ+RJsacw7GwfvjsVDnCkcXqS9zmSr/RNL0fhpcd60KKkmx/hGKPTDFpK3ZayxDrJ/h4A==", + "dev": true, + "requires": { + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/router": "6.5.10", + "@storybook/semver": "^7.3.2", + "@storybook/theming": "6.5.10", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7", + "store2": "^2.12.0", + "telejson": "^6.0.8", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/channels": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.10.tgz", + "integrity": "sha512-lo26YZ6kWpHXLhuHJF4P/bICY7jD/rXEZqReKtGOSk1Lv99/xvG6pqmcy3hWLf3v3Dy/8otjRPSR7izFVIIZgQ==", + "dev": true, + "requires": { + "core-js": "^3.8.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/client-logger": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.10.tgz", + "integrity": "sha512-/xA0MHOevXev68hyLMQw8Qo8KczSIdXOxliAgrycMTkDmw5eKeA8TP7B8zP3wGuq/e3MrdD9/8MWhb/IQBNC3w==", + "dev": true, + "requires": { + "core-js": "^3.8.2", + "global": "^4.4.0" + } + }, + "@storybook/components": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.5.10.tgz", + "integrity": "sha512-9OhgB8YQfGwOKjo/N96N5mrtJ6qDVVoEM1zuhea32tJUd2eYf0aSWpryA9VnOM0V1q/8DAoCg5rPBMYWMBU5uw==", + "dev": true, + "requires": { + "@storybook/client-logger": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/theming": "6.5.10", + "core-js": "^3.8.2", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/core-events": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.10.tgz", + "integrity": "sha512-EVb1gO1172klVIAABLOoigFMx0V88uctY0K/qVCO8n6v+wd2+0Ccn63kl+gTxsAC3WZ8XhXh9q2w5ImHklVECw==", + "dev": true, + "requires": { + "core-js": "^3.8.2" + } + }, + "@storybook/router": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.10.tgz", + "integrity": "sha512-O+vNW/eEpYFF8eCg5jZjNQ6q2DKQVxqDRPCy9pJdEbvavMDZn6AFYgVK+VJe5F4211WW2yncOu922xObCxXJYg==", + "dev": true, + "requires": { + "@storybook/client-logger": "6.5.10", + "core-js": "^3.8.2", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7" + } + }, + "@storybook/theming": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.10.tgz", + "integrity": "sha512-BvTQBBcSEwKKcsVmF+Ol6v0RIQUr+bxP7gb10wtfBd23mZTEFA0C1N5FnZr/dDeiBKG1pvf1UKvoYA731y0BsA==", + "dev": true, + "requires": { + "@storybook/client-logger": "6.5.10", + "core-js": "^3.8.2", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7" + } + } } }, "@svgr/babel-plugin-add-jsx-attribute": { diff --git a/package.json b/package.json index f305a6e08..5b332f23c 100644 --- a/package.json +++ b/package.json @@ -98,7 +98,7 @@ "@storybook/addon-storysource": "6.5.9", "@storybook/addons": "6.5.9", "@storybook/client-api": "6.5.9", - "@storybook/react": "6.5.9", + "@storybook/react": "6.5.10", "@testing-library/jest-dom": "5.16.4", "@testing-library/react": "12.1.5", "@testing-library/react-hooks": "7.0.2", From 0cae8e13b7c34619511ff445730b152a98fcdd06 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 25 Aug 2022 15:25:56 -0400 Subject: [PATCH 099/164] Bump terser from 4.8.0 to 4.8.1 (#6727) Bumps [terser](https://github.com/terser/terser) from 4.8.0 to 4.8.1. - [Release notes](https://github.com/terser/terser/releases) - [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md) - [Commits](https://github.com/terser/terser/commits) --- updated-dependencies: - dependency-name: terser dependency-type: indirect ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 115 ++++++---------------------------------------- 1 file changed, 14 insertions(+), 101 deletions(-) diff --git a/package-lock.json b/package-lock.json index 633cf82c1..47a5a07bb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18614,14 +18614,14 @@ } }, "node_modules/@wordpress/scripts/node_modules/terser": { - "version": "5.13.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.13.1.tgz", - "integrity": "sha512-hn4WKOfwnwbYfe48NgrQjqNOH9jzLqRcIfbYytOXCOv46LBfWr9bDS17MQqOi+BWGD0sJK3Sj5NC/gJjiojaoA==", + "version": "5.14.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", + "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", "dev": true, "dependencies": { + "@jridgewell/source-map": "^0.3.2", "acorn": "^8.5.0", "commander": "^2.20.0", - "source-map": "~0.8.0-beta.0", "source-map-support": "~0.5.20" }, "bin": { @@ -18665,27 +18665,6 @@ } } }, - "node_modules/@wordpress/scripts/node_modules/terser/node_modules/source-map": { - "version": "0.8.0-beta.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", - "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", - "dev": true, - "dependencies": { - "whatwg-url": "^7.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@wordpress/scripts/node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, "node_modules/@wordpress/scripts/node_modules/v8-to-istanbul": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", @@ -18709,12 +18688,6 @@ "node": ">= 8" } }, - "node_modules/@wordpress/scripts/node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, "node_modules/@wordpress/scripts/node_modules/webpack": { "version": "5.72.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.0.tgz", @@ -18823,17 +18796,6 @@ "node": ">=10.13.0" } }, - "node_modules/@wordpress/scripts/node_modules/whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, "node_modules/@wordpress/scripts/node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -38100,12 +38062,6 @@ "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", "dev": true }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true - }, "node_modules/lodash.throttle": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", @@ -50165,9 +50121,9 @@ } }, "node_modules/terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", + "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", "dev": true, "dependencies": { "commander": "^2.20.0", @@ -68494,26 +68450,15 @@ "dev": true }, "terser": { - "version": "5.13.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.13.1.tgz", - "integrity": "sha512-hn4WKOfwnwbYfe48NgrQjqNOH9jzLqRcIfbYytOXCOv46LBfWr9bDS17MQqOi+BWGD0sJK3Sj5NC/gJjiojaoA==", + "version": "5.14.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", + "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", "dev": true, "requires": { + "@jridgewell/source-map": "^0.3.2", "acorn": "^8.5.0", "commander": "^2.20.0", - "source-map": "~0.8.0-beta.0", "source-map-support": "~0.5.20" - }, - "dependencies": { - "source-map": { - "version": "0.8.0-beta.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", - "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", - "dev": true, - "requires": { - "whatwg-url": "^7.0.0" - } - } } }, "terser-webpack-plugin": { @@ -68529,15 +68474,6 @@ "terser": "^5.7.2" } }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, "v8-to-istanbul": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", @@ -68557,12 +68493,6 @@ } } }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, "webpack": { "version": "5.72.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.0.tgz", @@ -68629,17 +68559,6 @@ "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true }, - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -83707,12 +83626,6 @@ "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", "dev": true }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true - }, "lodash.throttle": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", @@ -93278,9 +93191,9 @@ } }, "terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", + "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", "dev": true, "requires": { "commander": "^2.20.0", From 0ade6c86044fbd69007aa6e537eebc0ff5dbd1ac Mon Sep 17 00:00:00 2001 From: "Daniel W. Robert" Date: Fri, 26 Aug 2022 09:11:23 -0400 Subject: [PATCH 100/164] Layout Updates to Active Filters Block (#6905) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Reverse ordter of filter item name and close btn. * Update layout & typography styles for block items * Update chip ui view styles. Additionally, add editor styles to have the editor match the rendered frontend. * Update additional remove button styles. - Add hover state to remove button on chip layout. - Update disabled styles to remove button in both layouts (mainly relevant to the editor view). * Adjust remove button colors. Set hover states to shades of grey. Also set chip color and text to match selected text color of the block. * Update e2e test to account for new element order. Since we're moving the remove button in the list view from the last child node to the first child node, we need to adjust the expected order of the active filter item text. * Design and copy updates on the block settings Co-authored-by: Alba Rincรณn Co-authored-by: Alba Rincรณn --- assets/js/base/components/chip/style.scss | 26 +++++++++------ assets/js/blocks/active-filters/edit.tsx | 4 ++- assets/js/blocks/active-filters/editor.scss | 9 ++++++ assets/js/blocks/active-filters/style.scss | 32 ++++++++++++------- assets/js/blocks/active-filters/utils.tsx | 3 +- .../e2e/specs/shopper/active-filters.test.ts | 2 +- 6 files changed, 52 insertions(+), 24 deletions(-) create mode 100644 assets/js/blocks/active-filters/editor.scss diff --git a/assets/js/base/components/chip/style.scss b/assets/js/base/components/chip/style.scss index d8c23a9f1..3dff3d1ae 100644 --- a/assets/js/base/components/chip/style.scss +++ b/assets/js/base/components/chip/style.scss @@ -3,7 +3,7 @@ align-items: center; border: 0; display: inline-flex; - padding: em($gap-smallest * 0.5) 0.5em em($gap-smallest); + padding: em($gap-smallest) 0.5em; margin: 0 0.365em 0.365em 0; border-radius: 0; line-height: 1; @@ -14,8 +14,9 @@ &:hover, &:focus, &:active { - background: $gray-200; - color: $gray-900; + background: transparent; + color: inherit; + border: 1px solid; } &.wc-block-components-chip--radius-small { @@ -30,24 +31,27 @@ padding-right: 0.75em; } .wc-block-components-chip__text { + @include font-size(smaller); flex-grow: 1; } - &.is-removable { - padding-right: 0.5em; - } &.is-removable .wc-block-components-chip__text { padding-right: 0.25em; } .wc-block-components-chip__remove { @include font-size(smaller); - background: transparent; + background: $gray-200; border: 0; + border-radius: 25px; appearance: none; padding: 0; + height: 16px; + width: 16px; + margin: 0; } .wc-block-components-chip__remove-icon { vertical-align: middle; + fill: $gray-900; } } @@ -67,11 +71,15 @@ button.wc-block-components-chip:hover > .wc-block-components-chip__remove, button.wc-block-components-chip:focus > .wc-block-components-chip__remove, .wc-block-components-chip__remove:hover, .wc-block-components-chip__remove:focus { - fill: $alert-red; + background: $gray-600; + + .wc-block-components-chip__remove-icon { + fill: #fff; + } } button.wc-block-components-chip:disabled > .wc-block-components-chip__remove, .wc-block-components-chip__remove:disabled { - fill: $gray-600; + fill: #fff; cursor: not-allowed; } diff --git a/assets/js/blocks/active-filters/edit.tsx b/assets/js/blocks/active-filters/edit.tsx index c001bd714..f7edb12e6 100644 --- a/assets/js/blocks/active-filters/edit.tsx +++ b/assets/js/blocks/active-filters/edit.tsx @@ -21,6 +21,7 @@ import { */ import Block from './block'; import type { Attributes } from './types'; +import './editor.scss'; const Edit = ( { attributes, @@ -37,7 +38,7 @@ const Edit = ( { @@ -52,6 +53,7 @@ const Edit = ( { displayStyle: value, } ) } + className="wc-block-active-filter__style-toggle" > li:first-child { + margin: 0; + } } .wc-block-active-filters__list-item-type { @include font-size(smaller); + font-weight: bold; text-transform: uppercase; letter-spacing: 0.1em; margin: $gap 0 0; @@ -70,10 +73,11 @@ } .wc-block-active-filters__list-item-name { - font-weight: bold; - display: block; + @include font-size(smaller); + display: flex; + align-items: center; position: relative; - padding: 0 16px 0 0; + padding: 0; } .wc-block-active-filters__list-item-remove { @@ -83,11 +87,17 @@ height: 16px; width: 16px; padding: 0; - position: absolute; - right: 0; - top: 50%; - margin: -8px 0 0 0; + margin: 0 16px 0 0; color: currentColor; + + &:hover { + color: $gray-600; + } + + &:disabled { + color: $gray-200; + cursor: not-allowed; + } } .wc-block-active-filters__list--chips { diff --git a/assets/js/blocks/active-filters/utils.tsx b/assets/js/blocks/active-filters/utils.tsx index 7cc3efa44..e7abfe62e 100644 --- a/assets/js/blocks/active-filters/utils.tsx +++ b/assets/js/blocks/active-filters/utils.tsx @@ -103,7 +103,6 @@ export const renderRemovableListItem = ( { /> ) : ( - { prefixedName } + { prefixedName } ) } diff --git a/tests/e2e/specs/shopper/active-filters.test.ts b/tests/e2e/specs/shopper/active-filters.test.ts index 4b38ea9ca..5a0f3597e 100644 --- a/tests/e2e/specs/shopper/active-filters.test.ts +++ b/tests/e2e/specs/shopper/active-filters.test.ts @@ -84,7 +84,7 @@ const getActiveFilterTypeText = () => const getActiveFilterNameText = () => page.$eval( selectors.frontend.activeFilterName, - ( el ) => ( el as HTMLElement ).childNodes[ 0 ].textContent + ( el ) => ( el as HTMLElement ).childNodes[ 1 ].textContent ); describe( 'Shopper โ†’ Active Filters Block', () => { From 2a0b3bed7406bd9748bed83fd5aeed268e43219c Mon Sep 17 00:00:00 2001 From: Saad Tarhi Date: Fri, 26 Aug 2022 18:21:50 +0100 Subject: [PATCH 101/164] Fix a broken link in "available-filters.md" (#6971) --- .../extensibility/checkout-block/available-filters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/third-party-developers/extensibility/checkout-block/available-filters.md b/docs/third-party-developers/extensibility/checkout-block/available-filters.md index bf60fc758..69442b107 100644 --- a/docs/third-party-developers/extensibility/checkout-block/available-filters.md +++ b/docs/third-party-developers/extensibility/checkout-block/available-filters.md @@ -14,7 +14,7 @@ - [Hide a snackbar notice containing a certain string](#hide-a-snackbar-notice-containing-a-certain-string) - [Troubleshooting](#troubleshooting) -This document lists the filters that are currently available to extensions and offers usage information for each one of them. Information on registering filters can be found on the [Checkout - Filter Registry](../../packages/checkout/filter-registry/README.md) page. +This document lists the filters that are currently available to extensions and offers usage information for each one of them. Information on registering filters can be found on the [Checkout - Filter Registry](../../../../packages/checkout/filter-registry/README.md) page. ## Cart Line Items From 1f706c1833da4e504b457ff8470067a2c8342368 Mon Sep 17 00:00:00 2001 From: Tarun Vijwani Date: Mon, 29 Aug 2022 11:59:50 +0530 Subject: [PATCH 102/164] Change Type for shipping_address and billing_address to object (#6974) * Change Type for shipping_address and billing_address to object * Fix description --- src/StoreApi/docs/checkout.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/StoreApi/docs/checkout.md b/src/StoreApi/docs/checkout.md index db6bf78bb..4374505c0 100644 --- a/src/StoreApi/docs/checkout.md +++ b/src/StoreApi/docs/checkout.md @@ -83,8 +83,8 @@ POST /wc/store/v1/checkout | Attribute | Type | Required | Description | | :----------------- | :----- | :------: | :------------------------------------------------------------------ | -| `billing_address` | array | Yes | Array of updated billing address data for the customer. | -| `shipping_address` | array | Yes | Array of updated shipping address data for the customer. | +| `billing_address` | object | Yes | Object of updated billing address data for the customer. | +| `shipping_address` | object | Yes | Object of updated shipping address data for the customer. | | `customer_note` | string | No | Note added to the order by the customer during checkout. | | `payment_method` | string | Yes | The ID of the payment method being used to process the payment. | | `payment_data` | array | No | Data to pass through to the payment method when processing payment. | From d2d809b710ed531b0412bed03aef82c63870be9b Mon Sep 17 00:00:00 2001 From: Seghir Nadir Date: Mon, 29 Aug 2022 09:05:19 +0100 Subject: [PATCH 103/164] only load shipping countries when shipping is needed (#6901) --- src/BlockTypes/Cart.php | 30 ++++++++++++++++-------------- src/BlockTypes/Checkout.php | 31 +++++++++++++++++-------------- 2 files changed, 33 insertions(+), 28 deletions(-) diff --git a/src/BlockTypes/Cart.php b/src/BlockTypes/Cart.php index cbab3c4e4..496d662c4 100644 --- a/src/BlockTypes/Cart.php +++ b/src/BlockTypes/Cart.php @@ -155,21 +155,23 @@ protected function render( $attributes, $content ) { */ protected function enqueue_data( array $attributes = [] ) { parent::enqueue_data( $attributes ); + if ( wc_shipping_enabled() ) { + $this->asset_data_registry->add( + 'shippingCountries', + function() { + return $this->deep_sort_with_accents( WC()->countries->get_shipping_countries() ); + }, + true + ); + $this->asset_data_registry->add( + 'shippingStates', + function() { + return $this->deep_sort_with_accents( WC()->countries->get_shipping_country_states() ); + }, + true + ); + } - $this->asset_data_registry->add( - 'shippingCountries', - function() { - return $this->deep_sort_with_accents( WC()->countries->get_shipping_countries() ); - }, - true - ); - $this->asset_data_registry->add( - 'shippingStates', - function() { - return $this->deep_sort_with_accents( WC()->countries->get_shipping_country_states() ); - }, - true - ); $this->asset_data_registry->add( 'countryLocale', function() { diff --git a/src/BlockTypes/Checkout.php b/src/BlockTypes/Checkout.php index e654d3549..dd8e1f555 100644 --- a/src/BlockTypes/Checkout.php +++ b/src/BlockTypes/Checkout.php @@ -181,20 +181,23 @@ function() { }, true ); - $this->asset_data_registry->add( - 'shippingCountries', - function() { - return $this->deep_sort_with_accents( WC()->countries->get_shipping_countries() ); - }, - true - ); - $this->asset_data_registry->add( - 'shippingStates', - function() { - return $this->deep_sort_with_accents( WC()->countries->get_shipping_country_states() ); - }, - true - ); + if ( wc_shipping_enabled() ) { + $this->asset_data_registry->add( + 'shippingCountries', + function() { + return $this->deep_sort_with_accents( WC()->countries->get_shipping_countries() ); + }, + true + ); + $this->asset_data_registry->add( + 'shippingStates', + function() { + return $this->deep_sort_with_accents( WC()->countries->get_shipping_country_states() ); + }, + true + ); + } + $this->asset_data_registry->add( 'countryLocale', function() { From 6286a6f12958cb61793b772b453771326852f0c9 Mon Sep 17 00:00:00 2001 From: Seghir Nadir Date: Mon, 29 Aug 2022 09:35:05 +0100 Subject: [PATCH 104/164] Turn current page into the default Cart/Checkout page (#6867) * Add default page notice * show notice all inner blocks * support flow when page isnt saved * switch from where we get the current post id * update lock * fix types * update logic to support cart as well * fix package.json * update design and move away from wc.data * restore notice * handle older versions of WooCommerce * fix package lock * fix typo --- .../default-notice/editor.scss | 11 - .../default-notice/index.tsx | 58 ------ .../js/blocks/cart-checkout-shared/index.js | 1 - .../sidebar-notices/index.tsx | 25 ++- .../default-notice}/editor.scss | 7 + .../default-notice/index.tsx | 191 ++++++++++++++++++ .../sidebar-compatibility-notice/editor.scss | 22 +- .../sidebar-compatibility-notice/index.tsx | 19 +- 8 files changed, 235 insertions(+), 99 deletions(-) delete mode 100644 assets/js/blocks/cart-checkout-shared/default-notice/editor.scss delete mode 100644 assets/js/blocks/cart-checkout-shared/default-notice/index.tsx rename assets/js/{blocks/cart-checkout-shared/sidebar-notices => editor-components/default-notice}/editor.scss (63%) create mode 100644 assets/js/editor-components/default-notice/index.tsx diff --git a/assets/js/blocks/cart-checkout-shared/default-notice/editor.scss b/assets/js/blocks/cart-checkout-shared/default-notice/editor.scss deleted file mode 100644 index 83316569a..000000000 --- a/assets/js/blocks/cart-checkout-shared/default-notice/editor.scss +++ /dev/null @@ -1,11 +0,0 @@ -.wc-block-cart__page-notice { - margin: 0; - padding-right: 16px; - .components-notice__dismiss { - min-width: 24px; - } - svg { - width: 16px; - height: 16px; - } -} diff --git a/assets/js/blocks/cart-checkout-shared/default-notice/index.tsx b/assets/js/blocks/cart-checkout-shared/default-notice/index.tsx deleted file mode 100644 index 8d931fdaf..000000000 --- a/assets/js/blocks/cart-checkout-shared/default-notice/index.tsx +++ /dev/null @@ -1,58 +0,0 @@ -/** - * External dependencies - */ -import { __, sprintf } from '@wordpress/i18n'; -import { Notice } from '@wordpress/components'; -import { createInterpolateElement } from '@wordpress/element'; -import { getAdminLink } from '@woocommerce/settings'; -import { CART_PAGE_ID, CHECKOUT_PAGE_ID } from '@woocommerce/block-settings'; -import { useSelect } from '@wordpress/data'; - -/** - * Internal dependencies - */ -import './editor.scss'; - -/** - * Shows a notice about setting the default Cart and Checkout pages.. - * - */ -export function DefaultNotice( props: { - block: 'cart' | 'checkout'; -} ): JSX.Element | null { - const idToCheck = props.block === 'cart' ? CART_PAGE_ID : CHECKOUT_PAGE_ID; - const currentPostId = useSelect( ( select ) => { - return select( 'core/editor' ).getCurrentPostId(); - } ); - - return currentPostId !== idToCheck ? ( - - { createInterpolateElement( - sprintf( - /* translators: %s is the block name. It will be cart or checkout. */ - __( - 'If you would like to use this block as your default %s you must update your page settings in WooCommerce.', - 'woo-gutenberg-products-block' - ), - props.block - ), - { - a: ( - // eslint-disable-next-line jsx-a11y/anchor-has-content - - ), - } - ) } - - ) : null; -} diff --git a/assets/js/blocks/cart-checkout-shared/index.js b/assets/js/blocks/cart-checkout-shared/index.js index 36a16f580..e739d7a87 100644 --- a/assets/js/blocks/cart-checkout-shared/index.js +++ b/assets/js/blocks/cart-checkout-shared/index.js @@ -2,6 +2,5 @@ export * from './hacks'; export * from './use-forced-layout'; export * from './editor-utils'; export * from './use-view-switcher'; -export * from './default-notice'; export * from './sidebar-notices'; export * from './block-settings'; diff --git a/assets/js/blocks/cart-checkout-shared/sidebar-notices/index.tsx b/assets/js/blocks/cart-checkout-shared/sidebar-notices/index.tsx index 06f17e36c..d2e5e5f63 100644 --- a/assets/js/blocks/cart-checkout-shared/sidebar-notices/index.tsx +++ b/assets/js/blocks/cart-checkout-shared/sidebar-notices/index.tsx @@ -9,15 +9,13 @@ import { import { addFilter, hasFilter } from '@wordpress/hooks'; import type { StoreDescriptor } from '@wordpress/data'; import { CartCheckoutSidebarCompatibilityNotice } from '@woocommerce/editor-components/sidebar-compatibility-notice'; +import { + DefaultNotice, + LegacyNotice, +} from '@woocommerce/editor-components/default-notice'; import { useSelect } from '@wordpress/data'; import { CartCheckoutFeedbackPrompt } from '@woocommerce/editor-components/feedback-prompt'; - -/** - * Internal dependencies - */ -import './editor.scss'; -import { DefaultNotice } from '../default-notice'; - +import { isWcVersion } from '@woocommerce/settings'; declare module '@wordpress/editor' { let store: StoreDescriptor; } @@ -66,12 +64,19 @@ const withSidebarNotices = createHigherOrderComponent( <> { ( isCart || isCheckout ) && ( + { isWcVersion( '6.9.0', '>=' ) ? ( + + ) : ( + + ) } + - { isAddressFieldBlock ? null : ( ) } diff --git a/assets/js/blocks/cart-checkout-shared/sidebar-notices/editor.scss b/assets/js/editor-components/default-notice/editor.scss similarity index 63% rename from assets/js/blocks/cart-checkout-shared/sidebar-notices/editor.scss rename to assets/js/editor-components/default-notice/editor.scss index a98368f24..ebc290361 100644 --- a/assets/js/blocks/cart-checkout-shared/sidebar-notices/editor.scss +++ b/assets/js/editor-components/default-notice/editor.scss @@ -4,8 +4,15 @@ .components-notice__dismiss { min-width: 24px; } + .components-notice__content { + margin: 4px 0; + } svg { width: 16px; height: 16px; } } + +.wc-blocks-legacy-page-notice { + margin: 0; +} diff --git a/assets/js/editor-components/default-notice/index.tsx b/assets/js/editor-components/default-notice/index.tsx new file mode 100644 index 000000000..66f4dad9a --- /dev/null +++ b/assets/js/editor-components/default-notice/index.tsx @@ -0,0 +1,191 @@ +/** + * External dependencies + */ +import { __, sprintf } from '@wordpress/i18n'; +import { store as editorStore } from '@wordpress/editor'; +import triggerFetch from '@wordpress/api-fetch'; +import { store as coreStore } from '@wordpress/core-data'; +import { Notice, Button } from '@wordpress/components'; +import { useSelect, useDispatch } from '@wordpress/data'; +import { CHECKOUT_PAGE_ID, CART_PAGE_ID } from '@woocommerce/block-settings'; +import { + useCallback, + useState, + createInterpolateElement, +} from '@wordpress/element'; +import { getAdminLink } from '@woocommerce/settings'; +/** + * Internal dependencies + */ +import './editor.scss'; + +export function DefaultNotice( { block }: { block: string } ) { + // To avoid having the same logic twice, we're going to handle both pages here. + const ORIGINAL_PAGE_ID = + block === 'checkout' ? CHECKOUT_PAGE_ID : CART_PAGE_ID; + const settingName = + block === 'checkout' + ? 'woocommerce_checkout_page_id' + : 'woocommerce_cart_page_id'; + + const noticeContent = + block === 'checkout' + ? __( + 'If you would like to use this block as your default checkout, update your page settings', + 'woo-gutenberg-products-block' + ) + : __( + 'If you would like to use this block as your default cart, update your page settings', + 'woo-gutenberg-products-block' + ); + + // Everything below works the same for Cart/Checkout + const { saveEntityRecord } = useDispatch( coreStore ); + const { editPost, savePost } = useDispatch( editorStore ); + const { slug, isLoadingPage, postPublished, currentPostId } = useSelect( + ( select ) => { + const { getEntityRecord, isResolving } = select( coreStore ); + const { isCurrentPostPublished, getCurrentPostId } = + select( editorStore ); + return { + slug: + getEntityRecord( 'postType', 'page', ORIGINAL_PAGE_ID ) + ?.slug || block, + isLoadingPage: isResolving( 'getEntityRecord', [ + 'postType', + 'page', + ORIGINAL_PAGE_ID, + ] ), + postPublished: isCurrentPostPublished(), + currentPostId: getCurrentPostId(), + }; + }, + [] + ); + const [ settingStatus, setStatus ] = useState( 'pristine' ); + const updatePage = useCallback( () => { + setStatus( 'updating' ); + Promise.resolve() + .then( () => + triggerFetch( { + path: `/wc/v3/settings/advanced/${ settingName }`, + method: 'GET', + } ) + ) + .catch( ( error ) => { + if ( error.code === 'rest_setting_setting_invalid' ) { + setStatus( 'error' ); + } + } ) + .then( () => { + if ( ! postPublished ) { + editPost( { status: 'publish' } ); + return savePost(); + } + } ) + .then( () => + // Make this page ID the default cart/checkout. + triggerFetch( { + path: `/wc/v3/settings/advanced/${ settingName }`, + method: 'POST', + data: { + value: currentPostId.toString(), + }, + } ) + ) + // Append `-2` to the original link so we can use it here. + .then( () => { + if ( ORIGINAL_PAGE_ID !== 0 ) { + return saveEntityRecord( 'postType', 'page', { + id: ORIGINAL_PAGE_ID, + slug: `${ slug }-2`, + } ); + } + } ) + // Use the original link for this page. + .then( () => editPost( { slug } ) ) + // Save page. + .then( () => savePost() ) + .then( () => setStatus( 'updated' ) ); + }, [ + postPublished, + editPost, + savePost, + settingName, + currentPostId, + ORIGINAL_PAGE_ID, + saveEntityRecord, + slug, + ] ); + if ( currentPostId === ORIGINAL_PAGE_ID || settingStatus === 'dismissed' ) { + return null; + } + return ( + setStatus( 'dismissed' ) } + spokenMessage={ + settingStatus === 'updated' + ? __( + 'Page settings updated', + 'woo-gutenberg-products-block' + ) + : noticeContent + } + > + { settingStatus === 'updated' ? ( + __( 'Page settings updated', 'woo-gutenberg-products-block' ) + ) : ( + <> +

    { noticeContent }

    + + + ) } +
    + ); +} + +export function LegacyNotice( { block }: { block: string } ) { + return ( + + { createInterpolateElement( + sprintf( + /* translators: %s is the block name. It will be cart or checkout. */ + __( + 'If you would like to use this block as your default %s you must update your
    page settings in WooCommerce.', + 'woo-gutenberg-products-block' + ), + block + ), + { + a: ( + // eslint-disable-next-line jsx-a11y/anchor-has-content + + ), + } + ) } + + ); +} diff --git a/assets/js/editor-components/sidebar-compatibility-notice/editor.scss b/assets/js/editor-components/sidebar-compatibility-notice/editor.scss index b7399a347..1c8f9649f 100644 --- a/assets/js/editor-components/sidebar-compatibility-notice/editor.scss +++ b/assets/js/editor-components/sidebar-compatibility-notice/editor.scss @@ -1,13 +1,17 @@ -.wc-blocks-sidebar-compatibility-notice { - border-top: 1px solid $gray-200; -} - -.wc-blocks-sidebar-compatibility-notice__notice.components-notice.is-dismissible { +.wc-blocks-sidebar-compatibility-notice.is-dismissible { margin: 0; - padding: $gap; - padding-right: $gap-small; - + padding-right: 16px; + .components-notice__dismiss { + min-width: 24px; + } .components-notice__content { - margin-right: 0; + margin: 4px 0; + } + svg { + width: 16px; + height: 16px; + } + &.is-hidden { + display: none; } } diff --git a/assets/js/editor-components/sidebar-compatibility-notice/index.tsx b/assets/js/editor-components/sidebar-compatibility-notice/index.tsx index 92d96fe69..3dfa52bd8 100644 --- a/assets/js/editor-components/sidebar-compatibility-notice/index.tsx +++ b/assets/js/editor-components/sidebar-compatibility-notice/index.tsx @@ -4,6 +4,7 @@ import { Notice, ExternalLink } from '@wordpress/components'; import { createInterpolateElement } from '@wordpress/element'; import { __ } from '@wordpress/i18n'; +import classnames from 'classnames'; /** * Internal dependencies @@ -33,16 +34,14 @@ export const CartCheckoutSidebarCompatibilityNotice = ( { ); return ( -
    - - { noticeText } - -
    + { noticeText } + ); }; From 6c68e0cffdf80089f1e83351a3b23485a2b331fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alba=20Rinc=C3=B3n?= Date: Mon, 29 Aug 2022 10:41:25 +0200 Subject: [PATCH 105/164] Remove the price filter setting label style (#6994) --- assets/js/blocks/price-filter/editor.scss | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/assets/js/blocks/price-filter/editor.scss b/assets/js/blocks/price-filter/editor.scss index 238b9cd74..f5b54119e 100644 --- a/assets/js/blocks/price-filter/editor.scss +++ b/assets/js/blocks/price-filter/editor.scss @@ -6,9 +6,11 @@ &::-webkit-slider-thumb { pointer-events: none; } + &::-moz-range-thumb { pointer-events: none; } + &::-ms-thumb { pointer-events: none; } @@ -23,11 +25,6 @@ } } -.components-base-control__label { - text-transform: uppercase; - @include font-size(small); -} - .wc-block-price-slider { .components-placeholder__instructions { border-bottom: 1px solid #e0e2e6; @@ -35,13 +32,16 @@ padding-bottom: 1em; margin-bottom: 2em; } + .components-placeholder__label svg { fill: currentColor; margin-right: 1ch; } + .components-placeholder__fieldset { display: block; /* Disable flex box */ } + .wc-block-price-slider__add-product-button { margin: 0 0 1em; vertical-align: middle; @@ -54,6 +54,7 @@ vertical-align: middle; } } + .wc-block-price-slider__read_more_button { display: block; margin-bottom: 1em; From c410644e9441897ef512f5fa464d972bf90cbd64 Mon Sep 17 00:00:00 2001 From: Alex Florisca Date: Mon, 29 Aug 2022 11:46:33 +0100 Subject: [PATCH 106/164] Add static class name for product-details (#6914) * Add a static class name for the product details item instead of the translatable string * Update Jest snapshot Co-authored-by: Saad Tarhi --- .../components/cart-checkout/product-details/index.tsx | 8 +------- .../product-details/test/__snapshots__/index.js.snap | 8 ++++---- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/assets/js/base/components/cart-checkout/product-details/index.tsx b/assets/js/base/components/cart-checkout/product-details/index.tsx index 5e851df92..90298a24e 100644 --- a/assets/js/base/components/cart-checkout/product-details/index.tsx +++ b/assets/js/base/components/cart-checkout/product-details/index.tsx @@ -1,7 +1,6 @@ /** * External dependencies */ -import { kebabCase } from 'lodash'; import { decodeEntities } from '@wordpress/html-entities'; import type { ProductResponseItemData } from '@woocommerce/type-defs/product-response'; @@ -32,15 +31,10 @@ const ProductDetails = ( { { details.map( ( detail ) => { // Support both `key` and `name` props const name = detail?.key || detail.name || ''; - const className = name - ? `wc-block-components-product-details__${ kebabCase( - name - ) }` - : ''; return (
  • { name && ( <> diff --git a/assets/js/base/components/cart-checkout/product-details/test/__snapshots__/index.js.snap b/assets/js/base/components/cart-checkout/product-details/test/__snapshots__/index.js.snap index 37a5d3cef..bfce44143 100644 --- a/assets/js/base/components/cart-checkout/product-details/test/__snapshots__/index.js.snap +++ b/assets/js/base/components/cart-checkout/product-details/test/__snapshots__/index.js.snap @@ -5,7 +5,7 @@ exports[`ProductDetails should not render hidden details 1`] = ` className="wc-block-components-product-details" >
  • Date: Tue, 30 Aug 2022 09:32:30 +0200 Subject: [PATCH 107/164] Update `filter by stock` skeleton design (#6996) * Update filter by stock skeleton design * Show skeleton only when is loading, otherwise it will show the loading state also after clicking on an option --- assets/js/blocks/stock-filter/block.tsx | 64 +++++++++++++----------- assets/js/blocks/stock-filter/style.scss | 16 ++++++ 2 files changed, 52 insertions(+), 28 deletions(-) diff --git a/assets/js/blocks/stock-filter/block.tsx b/assets/js/blocks/stock-filter/block.tsx index 54a397586..186b744b0 100644 --- a/assets/js/blocks/stock-filter/block.tsx +++ b/assets/js/blocks/stock-filter/block.tsx @@ -26,6 +26,7 @@ import { decodeEntities } from '@wordpress/html-entities'; import { isBoolean, objectHasProp } from '@woocommerce/types'; import { addQueryArgs, removeQueryArgs } from '@wordpress/url'; import { changeUrl, PREFIX_QUERY_ARG_FILTER_TYPE } from '@woocommerce/utils'; +import classnames from 'classnames'; /** * Internal dependencies @@ -339,14 +340,11 @@ const StockStatusFilterBlock = ( { [ checked, displayedOptions ] ); - if ( displayedOptions.length === 0 ) { - return null; - } - const TagName = `h${ blockAttributes.headingLevel }` as keyof JSX.IntrinsicElements; const isLoading = - ! blockAttributes.isPreview && ! STOCK_STATUS_OPTIONS.current; + ( ! blockAttributes.isPreview && ! STOCK_STATUS_OPTIONS.current ) || + displayedOptions.length === 0; const isDisabled = ! blockAttributes.isPreview && filteredCountsLoading; const hasFilterableProducts = getSettingWithCoercion( @@ -362,11 +360,19 @@ const StockStatusFilterBlock = ( { return ( <> { ! isEditor && blockAttributes.heading && ( - + { blockAttributes.heading } ) } -
    +
    -
    - { checked.length > 0 && ( - { - setChecked( [] ); - onSubmit( [] ); - } } - screenReaderLabel={ __( - 'Reset stock filter', - 'woo-gutenberg-products-block' - ) } - /> - ) } - { blockAttributes.showFilterButton && ( - onSubmit( checked ) } - /> - ) } -
    + { ! isLoading && ( +
    + { checked.length > 0 && ( + { + setChecked( [] ); + onSubmit( [] ); + } } + screenReaderLabel={ __( + 'Reset stock filter', + 'woo-gutenberg-products-block' + ) } + /> + ) } + { blockAttributes.showFilterButton && ( + onSubmit( checked ) } + /> + ) } +
    + ) }
    ); diff --git a/assets/js/blocks/stock-filter/style.scss b/assets/js/blocks/stock-filter/style.scss index c90f1f48d..375c4a014 100644 --- a/assets/js/blocks/stock-filter/style.scss +++ b/assets/js/blocks/stock-filter/style.scss @@ -9,7 +9,23 @@ } } +.wc-block-stock-filter__title { + &.show-loading-state { + @include placeholder(); + background-color: $gray-400 !important; + border-radius: em(26px); + box-shadow: none; + width: max-content; + } +} + .wc-block-stock-filter { + &.show-loading-state { + @include placeholder(); + box-shadow: none; + border-radius: em(4px) !important; + } + margin-bottom: $gap-large; .wc-block-stock-filter-list { From 7e70c5a2e0117f9561ec155f0e7d2bf19155a961 Mon Sep 17 00:00:00 2001 From: Saad Tarhi Date: Tue, 30 Aug 2022 12:37:33 +0100 Subject: [PATCH 108/164] Update version to 8.5.0-dev --- package-lock.json | 2 +- package.json | 2 +- readme.txt | 2 +- src/Package.php | 2 +- woocommerce-gutenberg-products-block.php | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 47a5a07bb..9ab86ac62 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@woocommerce/block-library", - "version": "8.4.0-dev", + "version": "8.5.0-dev", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index 5b332f23c..36da5eab1 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "@woocommerce/block-library", "title": "WooCommerce Blocks", "author": "Automattic", - "version": "8.4.0-dev", + "version": "8.5.0-dev", "description": "WooCommerce blocks for the Gutenberg editor.", "homepage": "https://github.com/woocommerce/woocommerce-gutenberg-products-block/", "keywords": [ diff --git a/readme.txt b/readme.txt index 4e3735854..358aadd65 100644 --- a/readme.txt +++ b/readme.txt @@ -4,7 +4,7 @@ Tags: gutenberg, woocommerce, woo commerce, products, blocks, woocommerce blocks Requires at least: 6.0 Tested up to: 6.0 Requires PHP: 7.0 -Stable tag: 8.4.0-dev +Stable tag: 8.5.0-dev License: GPLv3 License URI: https://www.gnu.org/licenses/gpl-3.0.html diff --git a/src/Package.php b/src/Package.php index e934876f5..21464a187 100644 --- a/src/Package.php +++ b/src/Package.php @@ -113,7 +113,7 @@ public static function container( $reset = false ) { NewPackage::class, function ( $container ) { // leave for automated version bumping. - $version = '8.4.0-dev'; + $version = '8.5.0-dev'; return new NewPackage( $version, dirname( __DIR__ ), diff --git a/woocommerce-gutenberg-products-block.php b/woocommerce-gutenberg-products-block.php index 695fb57fa..bafab0dfa 100644 --- a/woocommerce-gutenberg-products-block.php +++ b/woocommerce-gutenberg-products-block.php @@ -3,7 +3,7 @@ * Plugin Name: WooCommerce Blocks * Plugin URI: https://github.com/woocommerce/woocommerce-gutenberg-products-block * Description: WooCommerce blocks for the Gutenberg editor. - * Version: 8.4.0-dev + * Version: 8.5.0-dev * Author: Automattic * Author URI: https://woocommerce.com * Text Domain: woo-gutenberg-products-block From 41035c5bab4299d17692ed2861f7185ed3ab6eac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alba=20Rinc=C3=B3n?= Date: Wed, 31 Aug 2022 10:43:26 +0200 Subject: [PATCH 109/164] Fix stock filter placeholder (#7009) * Set max-height to avoid showing a big placeholder on longer titles * Avoid showing placeholder when no there are no products * Extract the placeholder to a separate component * Adjust width * Adjust border radius * Pass the title to adjust the placeholder width/height * Rename component --- .../components/filter-placeholder/index.tsx | 13 +++++++++ .../components/filter-placeholder/style.scss | 14 ++++++++++ assets/js/blocks/stock-filter/block.tsx | 27 ++++++++++++------- assets/js/blocks/stock-filter/style.scss | 12 +-------- 4 files changed, 46 insertions(+), 20 deletions(-) create mode 100644 assets/js/base/components/filter-placeholder/index.tsx create mode 100644 assets/js/base/components/filter-placeholder/style.scss diff --git a/assets/js/base/components/filter-placeholder/index.tsx b/assets/js/base/components/filter-placeholder/index.tsx new file mode 100644 index 000000000..06a06f921 --- /dev/null +++ b/assets/js/base/components/filter-placeholder/index.tsx @@ -0,0 +1,13 @@ +interface FilterTitlePlaceholderProps { + children?: React.ReactChildren; +} + +const FilterTitlePlaceholder = ( { + children, +}: FilterTitlePlaceholderProps ): JSX.Element => { + return ( +
    { children }
    + ); +}; + +export default FilterTitlePlaceholder; diff --git a/assets/js/base/components/filter-placeholder/style.scss b/assets/js/base/components/filter-placeholder/style.scss new file mode 100644 index 000000000..a1a8751ec --- /dev/null +++ b/assets/js/base/components/filter-placeholder/style.scss @@ -0,0 +1,14 @@ +.wc-block-filter-title-placeholder { + @include placeholder(); + background-color: $gray-400 !important; + border-radius: em(26px); + box-shadow: none; + margin-bottom: $gap; + min-width: 80px; + max-width: max-content !important; + + .wc-block-stock-filter__title { + margin: 0; + height: 1em; + } +} diff --git a/assets/js/blocks/stock-filter/block.tsx b/assets/js/blocks/stock-filter/block.tsx index 186b744b0..ddfa2fb7e 100644 --- a/assets/js/blocks/stock-filter/block.tsx +++ b/assets/js/blocks/stock-filter/block.tsx @@ -20,6 +20,7 @@ import { import CheckboxList from '@woocommerce/base-components/checkbox-list'; import FilterSubmitButton from '@woocommerce/base-components/filter-submit-button'; import FilterResetButton from '@woocommerce/base-components/filter-reset-button'; +import FilterTitlePlaceholder from '@woocommerce/base-components/filter-placeholder'; import Label from '@woocommerce/base-components/filter-element-label'; import isShallowEqual from '@wordpress/is-shallow-equal'; import { decodeEntities } from '@wordpress/html-entities'; @@ -340,6 +341,10 @@ const StockStatusFilterBlock = ( { [ checked, displayedOptions ] ); + if ( ! filteredCountsLoading && displayedOptions.length === 0 ) { + return null; + } + const TagName = `h${ blockAttributes.headingLevel }` as keyof JSX.IntrinsicElements; const isLoading = @@ -357,17 +362,21 @@ const StockStatusFilterBlock = ( { return null; } + const heading = ( + + { blockAttributes.heading } + + ); + + const filterHeading = isLoading ? ( + { heading } + ) : ( + heading + ); + return ( <> - { ! isEditor && blockAttributes.heading && ( - - { blockAttributes.heading } - - ) } + { ! isEditor && blockAttributes.heading && filterHeading }
    Date: Wed, 31 Aug 2022 12:38:48 +0100 Subject: [PATCH 110/164] Set default orderby to popularity (#7025) --- assets/js/blocks/product-best-sellers/block.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/js/blocks/product-best-sellers/block.json b/assets/js/blocks/product-best-sellers/block.json index 5804158f1..7e60e2309 100644 --- a/assets/js/blocks/product-best-sellers/block.json +++ b/assets/js/blocks/product-best-sellers/block.json @@ -88,7 +88,7 @@ "title", "menu_order" ], - "default": "date" + "default": "popularity" } }, "textdomain": "woo-gutenberg-products-block", From 5a9a25314303d0997aef4f00bb0c82566d6c9146 Mon Sep 17 00:00:00 2001 From: "Daniel W. Robert" Date: Wed, 31 Aug 2022 13:03:21 -0400 Subject: [PATCH 111/164] Remove __experimentalDuotone from block.json. (#7000) The __experimentalDuotone Supports property in the block.json files were preventing the Global Styles from being applied in the Editor. Removing them remedies the issue. This also adds a Schema property to improve development in supported editors. See https://developer.wordpress.org/block-editor/reference-guides/block-api/block-metadata/#benefits-using-the-metadata-file. --- .../featured-items/featured-category/block.json | 15 ++++++++++----- .../featured-items/featured-product/block.json | 15 ++++++++++----- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/assets/js/blocks/featured-items/featured-category/block.json b/assets/js/blocks/featured-items/featured-category/block.json index 00e75c843..ee7b908a8 100644 --- a/assets/js/blocks/featured-items/featured-category/block.json +++ b/assets/js/blocks/featured-items/featured-category/block.json @@ -3,15 +3,19 @@ "version": "1.0.0", "title": "Featured Category", "category": "woocommerce", - "keywords": [ "WooCommerce" ], + "keywords": [ + "WooCommerce" + ], "description": "Visually highlight a product category and encourage prompt action.", "supports": { - "align": [ "wide", "full" ], + "align": [ + "wide", + "full" + ], "html": false, "color": { "background": true, - "text": true, - "__experimentalDuotone": ".wc-block-featured-category__background-image" + "text": true }, "spacing": { "padding": true, @@ -106,5 +110,6 @@ } }, "textdomain": "woo-gutenberg-products-block", - "apiVersion": 2 + "apiVersion": 2, + "$schema": "https://schemas.wp.org/trunk/block.json" } diff --git a/assets/js/blocks/featured-items/featured-product/block.json b/assets/js/blocks/featured-items/featured-product/block.json index 119ecb2e2..64a1b70cc 100644 --- a/assets/js/blocks/featured-items/featured-product/block.json +++ b/assets/js/blocks/featured-items/featured-product/block.json @@ -4,14 +4,18 @@ "title": "Featured Product", "description": "Visually highlight a product or variation and encourage prompt action.", "category": "woocommerce", - "keywords": [ "WooCommerce" ], + "keywords": [ + "WooCommerce" + ], "supports": { - "align": [ "wide", "full" ], + "align": [ + "wide", + "full" + ], "html": false, "color": { "background": true, - "text": true, - "__experimentalDuotone": ".wc-block-featured-product__background-image" + "text": true }, "spacing": { "padding": true, @@ -112,5 +116,6 @@ } }, "textdomain": "woo-gutenberg-products-block", - "apiVersion": 2 + "apiVersion": 2, + "$schema": "https://schemas.wp.org/trunk/block.json" } From 0fe518a9178795cedaf993e3e874ec525e684fe0 Mon Sep 17 00:00:00 2001 From: Tung Du Date: Thu, 1 Sep 2022 18:20:20 +0700 Subject: [PATCH 112/164] Product Search E2E tests (#7005) --- .../product-search-legacy.fixture.json | 4 ++ .../__fixtures__/product-search.fixture.json | 2 +- .../__snapshots__/product-search.test.js.snap | 3 - .../backend/product-search-legacy.test.ts | 41 +++++++++++ .../e2e/specs/backend/product-search.test.js | 71 ------------------- .../e2e/specs/backend/product-search.test.ts | 46 ++++++++++++ .../e2e/specs/shopper/product-search.test.ts | 43 +++++++++++ 7 files changed, 135 insertions(+), 75 deletions(-) create mode 100644 tests/e2e/specs/backend/__fixtures__/product-search-legacy.fixture.json delete mode 100644 tests/e2e/specs/backend/__snapshots__/product-search.test.js.snap create mode 100644 tests/e2e/specs/backend/product-search-legacy.test.ts delete mode 100644 tests/e2e/specs/backend/product-search.test.js create mode 100644 tests/e2e/specs/backend/product-search.test.ts create mode 100644 tests/e2e/specs/shopper/product-search.test.ts diff --git a/tests/e2e/specs/backend/__fixtures__/product-search-legacy.fixture.json b/tests/e2e/specs/backend/__fixtures__/product-search-legacy.fixture.json new file mode 100644 index 000000000..e4f3dfd02 --- /dev/null +++ b/tests/e2e/specs/backend/__fixtures__/product-search-legacy.fixture.json @@ -0,0 +1,4 @@ +{ + "title": "Product Search Legacy Block", + "pageContent": "" +} diff --git a/tests/e2e/specs/backend/__fixtures__/product-search.fixture.json b/tests/e2e/specs/backend/__fixtures__/product-search.fixture.json index 70913465e..433654824 100644 --- a/tests/e2e/specs/backend/__fixtures__/product-search.fixture.json +++ b/tests/e2e/specs/backend/__fixtures__/product-search.fixture.json @@ -1,4 +1,4 @@ { "title": "Product Search Block", - "pageContent": "\n
    \n" + "pageContent": "" } diff --git a/tests/e2e/specs/backend/__snapshots__/product-search.test.js.snap b/tests/e2e/specs/backend/__snapshots__/product-search.test.js.snap deleted file mode 100644 index bdfc21fea..000000000 --- a/tests/e2e/specs/backend/__snapshots__/product-search.test.js.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Product Search Block can change field labels in editor 1`] = `""`; diff --git a/tests/e2e/specs/backend/product-search-legacy.test.ts b/tests/e2e/specs/backend/product-search-legacy.test.ts new file mode 100644 index 000000000..51a8c2919 --- /dev/null +++ b/tests/e2e/specs/backend/product-search-legacy.test.ts @@ -0,0 +1,41 @@ +/** + * External dependencies + */ +import { switchUserToAdmin } from '@wordpress/e2e-test-utils'; +import { visitBlockPage } from '@woocommerce/blocks-test-utils'; + +/** + * Internal dependencies + */ +import { GUTENBERG_EDITOR_CONTEXT, describeOrSkip } from '../../utils'; + +describeOrSkip( GUTENBERG_EDITOR_CONTEXT === 'gutenberg' )( + 'Product Search Legacy Block', + () => { + beforeAll( async () => { + await switchUserToAdmin(); + await visitBlockPage( 'Product Search Legacy Block' ); + } ); + + it( 'render the upgrade prompt', async () => { + await expect( page ).toMatch( + 'This version of the Product Search block is outdated. Upgrade to continue using.' + ); + await expect( page ).toMatch( 'Upgrade Block' ); + } ); + + it( 'clicking the upgrade button convert the legacy block to core/search variation', async () => { + await page.click( '.block-editor-warning__action button' ); + + await expect( page ).toMatchElement( '.wp-block-search' ); + + await expect( page ).toMatchElement( '.wp-block-search__label', { + text: 'Search', + } ); + + await expect( page ).toMatchElement( + '.wp-block-search__input[value="Search productsโ€ฆ"]' + ); + } ); + } +); diff --git a/tests/e2e/specs/backend/product-search.test.js b/tests/e2e/specs/backend/product-search.test.js deleted file mode 100644 index d7f99c391..000000000 --- a/tests/e2e/specs/backend/product-search.test.js +++ /dev/null @@ -1,71 +0,0 @@ -/** - * External dependencies - */ -import { - switchUserToAdmin, - getEditedPostContent, - openDocumentSettingsSidebar, -} from '@wordpress/e2e-test-utils'; -import { clearAndFillInput } from '@woocommerce/e2e-utils'; -import { - findLabelWithText, - visitBlockPage, -} from '@woocommerce/blocks-test-utils'; - -/** - * Internal dependencies - */ -import { GUTENBERG_EDITOR_CONTEXT, describeOrSkip } from '../../utils'; - -const block = { - name: 'Product Search', - slug: 'woocommerce/product-search', - class: '.wc-block-product-search', -}; - -describeOrSkip( GUTENBERG_EDITOR_CONTEXT !== 'gutenberg' )( - `${ block.name } Block`, - () => { - beforeAll( async () => { - await switchUserToAdmin(); - await visitBlockPage( `${ block.name } Block` ); - } ); - - it( 'renders without crashing', async () => { - await expect( page ).toRenderBlock( block ); - } ); - - it( 'can toggle field label', async () => { - await openDocumentSettingsSidebar(); - await page.click( block.class ); - const selector = `${ block.class } .wc-block-product-search__label`; - const toggleLabel = await findLabelWithText( - 'Show search field label' - ); - await expect( toggleLabel ).toToggleElement( selector ); - } ); - - it( 'can change field labels in editor', async () => { - await expect( page ).toFill( - 'textarea.wc-block-product-search__label', - 'I am a new label' - ); - - await expect( page ).toFill( - '.wc-block-product-search__field input', - 'I am a new placeholder' - ); - - await clearAndFillInput( - 'textarea.wc-block-product-search__label', - 'The Label' - ); - await clearAndFillInput( - '.wc-block-product-search__field input', - 'The Placeholder' - ); - - expect( await getEditedPostContent() ).toMatchSnapshot(); - } ); - } -); diff --git a/tests/e2e/specs/backend/product-search.test.ts b/tests/e2e/specs/backend/product-search.test.ts new file mode 100644 index 000000000..fba265b85 --- /dev/null +++ b/tests/e2e/specs/backend/product-search.test.ts @@ -0,0 +1,46 @@ +/** + * External dependencies + */ +import { + switchUserToAdmin, + createNewPost, + insertBlock, +} from '@wordpress/e2e-test-utils'; + +/** + * Internal dependencies + */ +import { GUTENBERG_EDITOR_CONTEXT, describeOrSkip } from '../../utils'; + +const block = { + name: 'Product Search', + slug: 'core/search', + class: '.wp-block-search', +}; + +describeOrSkip( GUTENBERG_EDITOR_CONTEXT === 'gutenberg' )( + `${ block.name } Block`, + () => { + it( 'inserting Product Search block renders the core/search variation', async () => { + await switchUserToAdmin(); + + await createNewPost( { + postType: 'page', + } ); + + await insertBlock( block.name ); + + await page.waitForSelector( block.class ); + + await expect( page ).toRenderBlock( block ); + + await expect( page ).toMatchElement( '.wp-block-search__label', { + text: 'Search', + } ); + + await expect( page ).toMatchElement( + '.wp-block-search__input[value="Search productsโ€ฆ"]' + ); + } ); + } +); diff --git a/tests/e2e/specs/shopper/product-search.test.ts b/tests/e2e/specs/shopper/product-search.test.ts new file mode 100644 index 000000000..88fba01fe --- /dev/null +++ b/tests/e2e/specs/shopper/product-search.test.ts @@ -0,0 +1,43 @@ +/** + * Internal dependencies + */ +import { GUTENBERG_EDITOR_CONTEXT, describeOrSkip } from '../../utils'; +import { shopper } from '../../../utils'; +import { getTextContent } from '../../page-utils'; + +describeOrSkip( GUTENBERG_EDITOR_CONTEXT === 'gutenberg' )( + `Shopper โ†’ Product Search`, + () => { + beforeEach( async () => { + await shopper.block.goToBlockPage( 'Product Search' ); + await page.waitForSelector( '.wp-block-search' ); + } ); + + it( 'should render product variation', async () => { + const [ postType ] = await getTextContent( + '.wp-block-search input[name="post_type"]' + ); + await expect( postType ).toBe( 'product' ); + } ); + + it( 'should be able to search for products', async () => { + await page.type( '.wp-block-search input[name="s"]', 'Stick' ); + + await Promise.all( [ + page.waitForNavigation(), + page.keyboard.press( 'Enter' ), + ] ); + + const products = await page.$$( 'ul.products.columns-3 > li' ); + + expect( products ).toHaveLength( 2 ); + + const productTitles = await getTextContent( + 'ul.products.columns-3 .woocommerce-loop-product__title' + ); + + expect( productTitles ).toContain( '32GB USB Stick' ); + expect( productTitles ).toContain( '128GB USB Stick' ); + } ); + } +); From 71001ee44511c34761e292e1571ad8b4feb16fcc Mon Sep 17 00:00:00 2001 From: Luigi Teschio Date: Thu, 1 Sep 2022 15:13:19 +0200 Subject: [PATCH 113/164] Add to the Product Image block the support for the Product Query block (#6911) * Adds to the Product Image Block the support for the Product Query Block Adds to the Product Image Block the support for the Product Query Block #6911 * Add to the Product Image Block the support for the Product Query Block * address feedback * set grid view and font-size L as default --- .../image/{attributes.js => attributes.ts} | 8 +- .../blocks/product-elements/image/block.js | 29 ++-- .../product-elements/image/constants.js | 17 -- .../blocks/product-elements/image/edit.js | 119 +++++++------ .../blocks/product-elements/image/frontend.js | 2 +- .../blocks/product-elements/image/index.js | 43 +++-- .../blocks/product-elements/image/save.tsx | 21 --- .../blocks/product-elements/image/supports.ts | 3 +- .../js/atomic/blocks/product-elements/save.js | 4 + .../blocks/product-elements/shared/config.tsx | 5 +- assets/js/blocks/product-query/constants.ts | 37 ++++- .../variations/product-query.tsx | 12 +- .../variations/products-on-sale.tsx | 12 +- .../js/shared/context/product-data-context.js | 4 +- .../shared/hocs/with-product-data-context.js | 52 +++--- src/BlockTypes/AbstractBlock.php | 27 ++- src/BlockTypes/AbstractProductGrid.php | 7 +- src/BlockTypes/Cart.php | 7 +- src/BlockTypes/Checkout.php | 7 +- src/BlockTypes/ClassicTemplate.php | 8 +- src/BlockTypes/FeaturedItem.php | 7 +- src/BlockTypes/MiniCart.php | 8 +- src/BlockTypes/MiniCartContents.php | 8 +- src/BlockTypes/ProductCategories.php | 7 +- src/BlockTypes/ProductImage.php | 156 +++++++++++++++++- src/BlockTypes/ProductSearch.php | 7 +- src/Utils/StyleAttributesUtils.php | 21 +++ 27 files changed, 414 insertions(+), 224 deletions(-) rename assets/js/atomic/blocks/product-elements/image/{attributes.js => attributes.ts} (75%) delete mode 100644 assets/js/atomic/blocks/product-elements/image/constants.js delete mode 100644 assets/js/atomic/blocks/product-elements/image/save.tsx diff --git a/assets/js/atomic/blocks/product-elements/image/attributes.js b/assets/js/atomic/blocks/product-elements/image/attributes.ts similarity index 75% rename from assets/js/atomic/blocks/product-elements/image/attributes.js rename to assets/js/atomic/blocks/product-elements/image/attributes.ts index 1a2f60f9d..1e7a8e775 100644 --- a/assets/js/atomic/blocks/product-elements/image/attributes.js +++ b/assets/js/atomic/blocks/product-elements/image/attributes.ts @@ -1,4 +1,4 @@ -export const blockAttributes = { +export const attributes = { showProductLink: { type: 'boolean', default: true, @@ -19,6 +19,8 @@ export const blockAttributes = { type: 'number', default: 0, }, + isDescendentOfQueryLoop: { + type: 'boolean', + default: false, + }, }; - -export default blockAttributes; diff --git a/assets/js/atomic/blocks/product-elements/image/block.js b/assets/js/atomic/blocks/product-elements/image/block.js index f9554e6e5..e55f875c1 100644 --- a/assets/js/atomic/blocks/product-elements/image/block.js +++ b/assets/js/atomic/blocks/product-elements/image/block.js @@ -2,7 +2,7 @@ * External dependencies */ import PropTypes from 'prop-types'; -import { useState, Fragment } from '@wordpress/element'; +import { Fragment } from '@wordpress/element'; import { __, sprintf } from '@wordpress/i18n'; import classnames from 'classnames'; import { PLACEHOLDER_IMG_SRC } from '@woocommerce/settings'; @@ -21,18 +21,19 @@ import { useStoreEvents } from '@woocommerce/base-context/hooks'; /** * Internal dependencies */ -import ProductSaleBadge from './../sale-badge/block'; +import ProductSaleBadge from '../sale-badge/block'; import './style.scss'; /** * Product Image Block Component. * - * @param {Object} props Incoming props. - * @param {string} [props.className] CSS Class name for the component. - * @param {string} [props.imageSizing] Size of image to use. - * @param {boolean} [props.showProductLink] Whether or not to display a link to the product page. - * @param {boolean} [props.showSaleBadge] Whether or not to display the on sale badge. - * @param {string} [props.saleBadgeAlign] How should the sale badge be aligned if displayed. + * @param {Object} props Incoming props. + * @param {string} [props.className] CSS Class name for the component. + * @param {string} [props.imageSizing] Size of image to use. + * @param {boolean} [props.showProductLink] Whether or not to display a link to the product page. + * @param {boolean} [props.showSaleBadge] Whether or not to display the on sale badge. + * @param {string} [props.saleBadgeAlign] How should the sale badge be aligned if displayed. + * @param {boolean} [props.isDescendentOfQueryLoop] Whether or not be a children of Query Loop Block. * @return {*} The component. */ export const Block = ( props ) => { @@ -45,8 +46,8 @@ export const Block = ( props ) => { } = props; const { parentClassName } = useInnerBlockLayoutContext(); - const { product } = useProductDataContext(); - const [ imageLoaded, setImageLoaded ] = useState( false ); + const { product, isLoading } = useProductDataContext(); + const { dispatchStoreEvent } = useStoreEvents(); const typographyProps = useTypographyProps( props ); @@ -119,8 +120,7 @@ export const Block = ( props ) => { setImageLoaded( true ) } - loaded={ imageLoaded } + loaded={ ! isLoading } showFullSize={ imageSizing !== 'cropped' } /> @@ -134,11 +134,10 @@ const ImagePlaceholder = () => { ); }; -const Image = ( { image, onLoad, loaded, showFullSize, fallbackAlt } ) => { +const Image = ( { image, loaded, showFullSize, fallbackAlt } ) => { const { thumbnail, src, srcset, sizes, alt } = image || {}; const imageProps = { alt: alt || fallbackAlt, - onLoad, hidden: ! loaded, src: thumbnail, ...( showFullSize && { src, srcSet: srcset, sizes } ), @@ -150,7 +149,7 @@ const Image = ( { image, onLoad, loaded, showFullSize, fallbackAlt } ) => { /* eslint-disable-next-line jsx-a11y/alt-text */ ) } - { ! loaded && } + { ! image && } ); }; diff --git a/assets/js/atomic/blocks/product-elements/image/constants.js b/assets/js/atomic/blocks/product-elements/image/constants.js deleted file mode 100644 index d5d7f1f2d..000000000 --- a/assets/js/atomic/blocks/product-elements/image/constants.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * External dependencies - */ -import { __ } from '@wordpress/i18n'; -import { image, Icon } from '@wordpress/icons'; - -export const BLOCK_TITLE = __( - 'Product Image', - 'woo-gutenberg-products-block' -); -export const BLOCK_ICON = ( - -); -export const BLOCK_DESCRIPTION = __( - 'Display the main product image', - 'woo-gutenberg-products-block' -); diff --git a/assets/js/atomic/blocks/product-elements/image/edit.js b/assets/js/atomic/blocks/product-elements/image/edit.js index f0deda5fc..efa43b7f2 100644 --- a/assets/js/atomic/blocks/product-elements/image/edit.js +++ b/assets/js/atomic/blocks/product-elements/image/edit.js @@ -3,8 +3,9 @@ */ import { __ } from '@wordpress/i18n'; import { InspectorControls, useBlockProps } from '@wordpress/block-editor'; -import { createInterpolateElement } from '@wordpress/element'; -import { getAdminLink } from '@woocommerce/settings'; +import { createInterpolateElement, useEffect } from '@wordpress/element'; +import { getAdminLink, getSettingWithCoercion } from '@woocommerce/settings'; +import { isBoolean } from '@woocommerce/types'; import { Disabled, PanelBody, @@ -19,15 +20,32 @@ import { * Internal dependencies */ import Block from './block'; -import withProductSelector from '../shared/with-product-selector'; -import { BLOCK_TITLE, BLOCK_ICON } from './constants'; -const Edit = ( { attributes, setAttributes } ) => { +const Edit = ( { attributes, setAttributes, context } ) => { const { showProductLink, imageSizing, showSaleBadge, saleBadgeAlign } = attributes; const blockProps = useBlockProps(); + const isDescendentOfQueryLoop = Number.isFinite( context.queryId ); + + useEffect( + () => setAttributes( { isDescendentOfQueryLoop } ), + [ setAttributes, isDescendentOfQueryLoop ] + ); + + const isBlockThemeEnabled = getSettingWithCoercion( + 'is_block_theme_enabled', + false, + isBoolean + ); + + useEffect( () => { + if ( isBlockThemeEnabled && attributes.imageSizing !== 'full-size' ) { + setAttributes( { imageSizing: 'full-size' } ); + } + }, [ attributes.imageSizing, isBlockThemeEnabled, setAttributes ] ); + return (
    ); }; -export default withProductSelector( { - icon: BLOCK_ICON, - label: BLOCK_TITLE, - description: __( - 'Choose a product to display its image.', - 'woo-gutenberg-products-block' - ), -} )( Edit ); +export default Edit; diff --git a/assets/js/atomic/blocks/product-elements/image/frontend.js b/assets/js/atomic/blocks/product-elements/image/frontend.js index b6c773996..2add7452a 100644 --- a/assets/js/atomic/blocks/product-elements/image/frontend.js +++ b/assets/js/atomic/blocks/product-elements/image/frontend.js @@ -7,6 +7,6 @@ import { withFilteredAttributes } from '@woocommerce/shared-hocs'; * Internal dependencies */ import Block from './block'; -import attributes from './attributes'; +import { attributes } from './attributes'; export default withFilteredAttributes( attributes )( Block ); diff --git a/assets/js/atomic/blocks/product-elements/image/index.js b/assets/js/atomic/blocks/product-elements/image/index.js index d132b276e..41bed967a 100644 --- a/assets/js/atomic/blocks/product-elements/image/index.js +++ b/assets/js/atomic/blocks/product-elements/image/index.js @@ -2,30 +2,45 @@ * External dependencies */ import { registerBlockType } from '@wordpress/blocks'; +import { image, Icon } from '@wordpress/icons'; +import { __ } from '@wordpress/i18n'; /** * Internal dependencies */ -import sharedConfig from '../shared/config'; -import attributes from './attributes'; -import { supports } from './supports'; -import { Save } from './save'; import edit from './edit'; -import { - BLOCK_TITLE as title, - BLOCK_ICON as icon, - BLOCK_DESCRIPTION as description, -} from './constants'; + +import { supports } from './supports'; +import { attributes } from './attributes'; +import sharedConfig from '../shared/config'; const blockConfig = { apiVersion: 2, - title, - description, - icon: { src: icon }, + name: 'woocommerce/product-image', + title: __( 'Product Image', 'woo-gutenberg-products-block' ), + icon: { + src: ( + + ), + }, + keywords: [ 'WooCommerce' ], + description: __( + 'Display the main product image.', + 'woo-gutenberg-products-block' + ), + usesContext: [ 'query', 'queryId', 'postId' ], + parent: [ + '@woocommerce/all-products', + '@woocommerce/single-product', + 'core/post-template', + ], + textdomain: 'woo-gutenberg-products-block', attributes, - edit, supports, - save: Save, + edit, }; registerBlockType( 'woocommerce/product-image', { diff --git a/assets/js/atomic/blocks/product-elements/image/save.tsx b/assets/js/atomic/blocks/product-elements/image/save.tsx deleted file mode 100644 index 03a720e27..000000000 --- a/assets/js/atomic/blocks/product-elements/image/save.tsx +++ /dev/null @@ -1,21 +0,0 @@ -/** - * External dependencies - */ -import { useBlockProps } from '@wordpress/block-editor'; -import classnames from 'classnames'; - -type Props = { - attributes: Record< string, unknown > & { - className?: string; - }; -}; - -export const Save = ( { attributes }: Props ): JSX.Element => { - return ( -
    - ); -}; diff --git a/assets/js/atomic/blocks/product-elements/image/supports.ts b/assets/js/atomic/blocks/product-elements/image/supports.ts index 15b724aa9..0a60da1c9 100644 --- a/assets/js/atomic/blocks/product-elements/image/supports.ts +++ b/assets/js/atomic/blocks/product-elements/image/supports.ts @@ -2,13 +2,14 @@ * External dependencies */ import { isFeaturePluginBuild } from '@woocommerce/block-settings'; +import { hasSpacingStyleSupport } from '@woocommerce/utils'; /** * Internal dependencies */ -import { hasSpacingStyleSupport } from '../../../../utils/global-style'; export const supports = { + html: false, ...( isFeaturePluginBuild() && { __experimentalBorder: { radius: true, diff --git a/assets/js/atomic/blocks/product-elements/save.js b/assets/js/atomic/blocks/product-elements/save.js index d99801c45..1bf167d2d 100644 --- a/assets/js/atomic/blocks/product-elements/save.js +++ b/assets/js/atomic/blocks/product-elements/save.js @@ -4,6 +4,10 @@ import classnames from 'classnames'; const save = ( { attributes } ) => { + if ( attributes.isDescendentOfQueryLoop ) { + return null; + } + return (
    ); diff --git a/assets/js/atomic/blocks/product-elements/shared/config.tsx b/assets/js/atomic/blocks/product-elements/shared/config.tsx index fece0dcb9..a300985e7 100644 --- a/assets/js/atomic/blocks/product-elements/shared/config.tsx +++ b/assets/js/atomic/blocks/product-elements/shared/config.tsx @@ -3,7 +3,6 @@ */ import { __ } from '@wordpress/i18n'; import { Icon, grid } from '@wordpress/icons'; -import { isExperimentalBuild } from '@woocommerce/block-settings'; import type { BlockConfiguration } from '@wordpress/blocks'; /** @@ -29,9 +28,7 @@ const sharedConfig: Omit< BlockConfiguration, 'attributes' | 'title' > = { supports: { html: false, }, - parent: isExperimentalBuild() - ? undefined - : [ '@woocommerce/all-products', '@woocommerce/single-product' ], + parent: [ '@woocommerce/all-products', '@woocommerce/single-product' ], save, deprecated: [ { diff --git a/assets/js/blocks/product-query/constants.ts b/assets/js/blocks/product-query/constants.ts index 28c3f5361..1c05f1276 100644 --- a/assets/js/blocks/product-query/constants.ts +++ b/assets/js/blocks/product-query/constants.ts @@ -1,9 +1,24 @@ +/** + * External dependencies + */ +import { InnerBlockTemplate } from '@wordpress/blocks'; + /** * Internal dependencies */ import { QueryBlockQuery } from './types'; -export const QUERY_DEFAULT_ATTRIBUTES: { query: QueryBlockQuery } = { +export const QUERY_DEFAULT_ATTRIBUTES: { + query: QueryBlockQuery; + displayLayout: { + type: 'flex' | 'list'; + columns?: number; + }; +} = { + displayLayout: { + type: 'flex', + columns: 3, + }, query: { perPage: 6, pages: 0, @@ -18,3 +33,23 @@ export const QUERY_DEFAULT_ATTRIBUTES: { query: QueryBlockQuery } = { inherit: false, }, }; + +export const INNER_BLOCKS_TEMPLATE: InnerBlockTemplate[] = [ + [ + 'core/post-template', + {}, + [ + [ 'woocommerce/product-image', undefined, [] ], + [ + 'core/post-title', + { + level: 3, + fontSize: 'large', + }, + [], + ], + ], + ], + [ 'core/query-pagination', undefined, [] ], + [ 'core/query-no-results', undefined, [] ], +]; diff --git a/assets/js/blocks/product-query/variations/product-query.tsx b/assets/js/blocks/product-query/variations/product-query.tsx index 74a1f396a..3a53dbd9a 100644 --- a/assets/js/blocks/product-query/variations/product-query.tsx +++ b/assets/js/blocks/product-query/variations/product-query.tsx @@ -10,7 +10,7 @@ import { sparkles } from '@wordpress/icons'; /** * Internal dependencies */ -import { QUERY_DEFAULT_ATTRIBUTES } from '../constants'; +import { INNER_BLOCKS_TEMPLATE, QUERY_DEFAULT_ATTRIBUTES } from '../constants'; if ( isExperimentalBuild() ) { registerBlockVariation( 'core/query', { @@ -36,15 +36,7 @@ if ( isExperimentalBuild() ) { name: 'product-query', }, }, - innerBlocks: [ - [ - 'core/post-template', - {}, - [ [ 'core/post-title' ], [ 'core/post-featured-image' ] ], - ], - [ 'core/query-pagination' ], - [ 'core/query-no-results' ], - ], + innerBlocks: INNER_BLOCKS_TEMPLATE, scope: [ 'block', 'inserter' ], } ); } diff --git a/assets/js/blocks/product-query/variations/products-on-sale.tsx b/assets/js/blocks/product-query/variations/products-on-sale.tsx index f5365ca19..a76c9b8a4 100644 --- a/assets/js/blocks/product-query/variations/products-on-sale.tsx +++ b/assets/js/blocks/product-query/variations/products-on-sale.tsx @@ -9,7 +9,7 @@ import { Icon, percent } from '@wordpress/icons'; /** * Internal dependencies */ -import { QUERY_DEFAULT_ATTRIBUTES } from '../constants'; +import { INNER_BLOCKS_TEMPLATE, QUERY_DEFAULT_ATTRIBUTES } from '../constants'; if ( isExperimentalBuild() ) { registerBlockVariation( 'core/query', { @@ -39,15 +39,7 @@ if ( isExperimentalBuild() ) { }, }, }, - innerBlocks: [ - [ - 'core/post-template', - {}, - [ [ 'core/post-title' ], [ 'core/post-featured-image' ] ], - ], - [ 'core/query-pagination' ], - [ 'core/query-no-results' ], - ], + innerBlocks: INNER_BLOCKS_TEMPLATE, scope: [ 'block', 'inserter' ], } ); } diff --git a/assets/js/shared/context/product-data-context.js b/assets/js/shared/context/product-data-context.js index ef94a8eea..3d91f5f56 100644 --- a/assets/js/shared/context/product-data-context.js +++ b/assets/js/shared/context/product-data-context.js @@ -63,6 +63,7 @@ const defaultProductData = { const ProductDataContext = createContext( { product: defaultProductData, hasContext: false, + isLoading: false, } ); export const useProductDataContext = () => useContext( ProductDataContext ); @@ -70,10 +71,11 @@ export const useProductDataContext = () => useContext( ProductDataContext ); export const ProductDataContextProvider = ( { product = null, children, - isLoading = false, + isLoading, } ) => { const contextValue = { product: product || defaultProductData, + isLoading, hasContext: true, }; diff --git a/assets/js/shared/hocs/with-product-data-context.js b/assets/js/shared/hocs/with-product-data-context.js index 9de448bfe..95bba5be2 100644 --- a/assets/js/shared/hocs/with-product-data-context.js +++ b/assets/js/shared/hocs/with-product-data-context.js @@ -1,12 +1,11 @@ /** * External dependencies */ -import apiFetch from '@wordpress/api-fetch'; +import { useStoreProducts } from '@woocommerce/base-context/hooks'; import { ProductDataContextProvider, useProductDataContext, } from '@woocommerce/shared-context'; -import { useState, useEffect } from '@wordpress/element'; /** * Loads the product from the API and adds to the context provider. @@ -14,41 +13,32 @@ import { useState, useEffect } from '@wordpress/element'; * @param {Object} props Component props. */ const OriginalComponentWithContext = ( props ) => { - const { productId, OriginalComponent } = props; - const [ product, setProduct ] = useState( null ); - const [ isLoading, setIsLoading ] = useState( true ); + const { productId, OriginalComponent, postId, product } = props; - useEffect( () => { - if ( !! props.product ) { - setProduct( props.product ); - setIsLoading( false ); - } - }, [ props.product ] ); + const id = props?.isDescendentOfQueryLoop ? postId : productId; - useEffect( () => { - if ( productId > 0 ) { - setIsLoading( true ); - apiFetch( { - path: `/wc/store/v1/products/${ productId }`, - } ) - .then( ( receivedProduct ) => { - setProduct( receivedProduct ); - } ) - .catch( async () => { - setProduct( null ); - } ) - .finally( () => { - setIsLoading( false ); - } ); - } - }, [ productId ] ); + const { products, productsLoading } = useStoreProducts( { + include: id, + } ); + + const productFromAPI = { + product: id > 0 && products.length > 0 ? products[ 0 ] : null, + isLoading: productsLoading, + }; - if ( ! isLoading && ! product ) { - return null; + if ( product ) { + return ( + + + + ); } return ( - + ); diff --git a/src/BlockTypes/AbstractBlock.php b/src/BlockTypes/AbstractBlock.php index f774da9b1..ed8cb459c 100644 --- a/src/BlockTypes/AbstractBlock.php +++ b/src/BlockTypes/AbstractBlock.php @@ -76,14 +76,16 @@ public function __construct( AssetApi $asset_api, AssetDataRegistry $asset_data_ * * @param array|WP_Block $attributes Block attributes, or an instance of a WP_Block. Defaults to an empty array. * @param string $content Block content. Default empty string. + * @param WP_Block $block Block instance. * @return string Rendered block type output. */ - public function render_callback( $attributes = [], $content = '' ) { + public function render_callback( $attributes = [], $content = '', $block ) { + $render_callback_attributes = $this->parse_render_callback_attributes( $attributes ); if ( ! is_admin() && ! WC()->is_rest_api_request() ) { $this->enqueue_assets( $render_callback_attributes ); } - return $this->render( $render_callback_attributes, $content ); + return $this->render( $render_callback_attributes, $content, $block ); } /** @@ -222,8 +224,9 @@ protected function register_block_type() { * These are left unset until now and only added here because if they were set when registering with metadata, * the attributes and supports from $block_settings would override the values from metadata. */ - $block_settings['attributes'] = $this->get_block_type_attributes(); - $block_settings['supports'] = $this->get_block_type_supports(); + $block_settings['attributes'] = $this->get_block_type_attributes(); + $block_settings['supports'] = $this->get_block_type_supports(); + $block_settings['uses_context'] = $this->get_block_type_uses_context(); register_block_type( $this->get_block_type(), @@ -323,6 +326,15 @@ protected function get_block_type_attributes() { return []; } + /** + * Get block usesContext. + * + * @return array; + */ + protected function get_block_type_uses_context() { + return []; + } + /** * Parses block attributes from the render_callback. * @@ -336,11 +348,12 @@ protected function parse_render_callback_attributes( $attributes ) { /** * Render the block. Extended by children. * - * @param array $attributes Block attributes. - * @param string $content Block content. + * @param array $attributes Block attributes. + * @param string $content Block content. + * @param WP_Block $block Block instance. * @return string Rendered block type output. */ - protected function render( $attributes, $content ) { + protected function render( $attributes, $content, $block ) { return $content; } diff --git a/src/BlockTypes/AbstractProductGrid.php b/src/BlockTypes/AbstractProductGrid.php index ed9d79ea5..8b9220a34 100644 --- a/src/BlockTypes/AbstractProductGrid.php +++ b/src/BlockTypes/AbstractProductGrid.php @@ -67,11 +67,12 @@ protected function get_block_type_attributes() { /** * Include and render the dynamic block. * - * @param array $attributes Block attributes. Default empty array. - * @param string $content Block content. Default empty string. + * @param array $attributes Block attributes. Default empty array. + * @param string $content Block content. Default empty string. + * @param WP_Block $block Block instance. * @return string Rendered block type output. */ - protected function render( $attributes = array(), $content = '' ) { + protected function render( $attributes = array(), $content = '', $block ) { $this->attributes = $this->parse_attributes( $attributes ); $this->content = $content; $this->query_args = $this->parse_query_args(); diff --git a/src/BlockTypes/Cart.php b/src/BlockTypes/Cart.php index 496d662c4..0429453e6 100644 --- a/src/BlockTypes/Cart.php +++ b/src/BlockTypes/Cart.php @@ -76,11 +76,12 @@ protected function enqueue_assets( array $attributes ) { /** * Append frontend scripts when rendering the Cart block. * - * @param array $attributes Block attributes. - * @param string $content Block content. + * @param array $attributes Block attributes. + * @param string $content Block content. + * @param WP_Block $block Block instance. * @return string Rendered block type output. */ - protected function render( $attributes, $content ) { + protected function render( $attributes, $content, $block ) { // Deregister core cart scripts and styles. wp_dequeue_script( 'wc-cart' ); wp_dequeue_script( 'wc-password-strength-meter' ); diff --git a/src/BlockTypes/Checkout.php b/src/BlockTypes/Checkout.php index dd8e1f555..ff9fbd69f 100644 --- a/src/BlockTypes/Checkout.php +++ b/src/BlockTypes/Checkout.php @@ -74,11 +74,12 @@ protected function enqueue_assets( array $attributes ) { /** * Append frontend scripts when rendering the block. * - * @param array $attributes Block attributes. - * @param string $content Block content. + * @param array $attributes Block attributes. + * @param string $content Block content. + * @param WP_Block $block Block instance. * @return string Rendered block type output. */ - protected function render( $attributes, $content ) { + protected function render( $attributes, $content, $block ) { if ( $this->is_checkout_endpoint() ) { // Note: Currently the block only takes care of the main checkout form -- if an endpoint is set, refer to the // legacy shortcode instead and do not render block. diff --git a/src/BlockTypes/ClassicTemplate.php b/src/BlockTypes/ClassicTemplate.php index 311fd1a20..edb0903cb 100644 --- a/src/BlockTypes/ClassicTemplate.php +++ b/src/BlockTypes/ClassicTemplate.php @@ -40,12 +40,12 @@ protected function initialize() { /** * Render method for the Classic Template block. This method will determine which template to render. * - * @param array $attributes Block attributes. - * @param string $content Block content. - * + * @param array $attributes Block attributes. + * @param string $content Block content. + * @param WP_Block $block Block instance. * @return string | void Rendered block type output. */ - protected function render( $attributes, $content ) { + protected function render( $attributes, $content, $block ) { if ( ! isset( $attributes['template'] ) ) { return; } diff --git a/src/BlockTypes/FeaturedItem.php b/src/BlockTypes/FeaturedItem.php index ec2ea3326..97ca19042 100644 --- a/src/BlockTypes/FeaturedItem.php +++ b/src/BlockTypes/FeaturedItem.php @@ -90,11 +90,12 @@ protected function get_block_type_supports() { /** * Render the featured item block. * - * @param array $attributes Block attributes. - * @param string $content Block content. + * @param array $attributes Block attributes. + * @param string $content Block content. + * @param WP_Block $block Block instance. * @return string Rendered block type output. */ - protected function render( $attributes, $content ) { + protected function render( $attributes, $content, $block ) { $item = $this->get_item( $attributes ); if ( ! $item ) { return ''; diff --git a/src/BlockTypes/MiniCart.php b/src/BlockTypes/MiniCart.php index f9df9863a..ca0a0107c 100644 --- a/src/BlockTypes/MiniCart.php +++ b/src/BlockTypes/MiniCart.php @@ -325,12 +325,12 @@ protected function get_include_tax_label_markup() { /** * Append frontend scripts when rendering the Mini Cart block. * - * @param array $attributes Block attributes. - * @param string $content Block content. - * + * @param array $attributes Block attributes. + * @param string $content Block content. + * @param WP_Block $block Block instance. * @return string Rendered block type output. */ - protected function render( $attributes, $content ) { + protected function render( $attributes, $content, $block ) { return $content . $this->get_markup( $attributes ); } diff --git a/src/BlockTypes/MiniCartContents.php b/src/BlockTypes/MiniCartContents.php index 99fa952fb..5ef6b82c1 100644 --- a/src/BlockTypes/MiniCartContents.php +++ b/src/BlockTypes/MiniCartContents.php @@ -52,12 +52,12 @@ protected function get_block_type_script( $key = null ) { /** * Render the markup for the Mini Cart contents block. * - * @param array $attributes Block attributes. - * @param string $content Block content. - * + * @param array $attributes Block attributes. + * @param string $content Block content. + * @param WP_Block $block Block instance. * @return string Rendered block type output. */ - protected function render( $attributes, $content ) { + protected function render( $attributes, $content, $block ) { if ( is_admin() || WC()->is_rest_api_request() ) { // In the editor we will display the placeholder, so no need to // print the markup. diff --git a/src/BlockTypes/ProductCategories.php b/src/BlockTypes/ProductCategories.php index 1cb07d278..6b52ffca2 100644 --- a/src/BlockTypes/ProductCategories.php +++ b/src/BlockTypes/ProductCategories.php @@ -56,11 +56,12 @@ protected function get_block_type_attributes() { /** * Render the Product Categories List block. * - * @param array $attributes Block attributes. - * @param string $content Block content. + * @param array $attributes Block attributes. + * @param string $content Block content. + * @param WP_Block $block Block instance. * @return string Rendered block type output. */ - protected function render( $attributes, $content ) { + protected function render( $attributes, $content, $block ) { $uid = uniqid( 'product-categories-' ); $categories = $this->get_categories( $attributes ); diff --git a/src/BlockTypes/ProductImage.php b/src/BlockTypes/ProductImage.php index 8f95831ac..4e8c816af 100644 --- a/src/BlockTypes/ProductImage.php +++ b/src/BlockTypes/ProductImage.php @@ -1,6 +1,8 @@ register_chunk_translations( [ $this->block_name ] ); + return null; + } + + /** + * Register the context. + */ + protected function get_block_type_uses_context() { + return [ 'query', 'queryId', 'postId' ]; + } + + /** + * Get the block's attributes. + * + * @param array $attributes Block attributes. Default empty array. + * @return array Block attributes merged with defaults. + */ + private function parse_attributes( $attributes ) { + // These should match what's set in JS `registerBlockType`. + $defaults = array( + 'showProductLink' => true, + 'showSaleBadge' => true, + 'saleBadgeAlign' => 'right', + 'imageSizing' => 'full-size', + 'productId' => 'number', + 'isDescendentOfQueryLoop' => 'false', + ); + + return wp_parse_args( $attributes, $defaults ); + } + + /** + * Render on Sale Badge. + * + * @param \WC_Product $product Product object. + * @param array $attributes Attributes. + * @return string + */ + private function render_on_sale_badge( $product, $attributes ) { + if ( ! $product->is_on_sale() || false === $attributes['showSaleBadge'] ) { + return ''; + } + + $font_size = StyleAttributesUtils::get_font_size_class_and_style( $attributes ); + + $on_sale_badge = sprintf( + ' +
    + + Product on sale +
    + ', + $attributes['saleBadgeAlign'], + isset( $font_size['class'] ) ? $font_size['class'] : '', + isset( $font_size['style'] ) ? $font_size['style'] : '', + esc_html__( 'Sale', 'woo-gutenberg-products-block' ) + ); + return $on_sale_badge; + } + + /** + * Render anchor. + * + * @param \WC_Product $product Product object. + * @param array $attributes Attributes. + * @return string + */ + private function render_anchor( $product, $attributes ) { + $product_permalink = $product->get_permalink(); + + $border_radius = StyleAttributesUtils::get_border_radius_class_and_style( $attributes ); + + $pointer_events = false === $attributes['showProductLink'] ? 'pointer-events: none;' : ''; + + return sprintf( '
    ', $product_permalink, $pointer_events, isset( $border_radius['style'] ) ? $border_radius['style'] : '' ); + } + + + /** + * Render Image. + * + * @param \WC_Product $product Product object. + * @return string + */ + private function render_image( $product ) { + $image_info = wp_get_attachment_image_src( get_post_thumbnail_id( $product->get_id() ), 'woocommerce_thumbnail' ); + + if ( ! isset( $image_info[0] ) ) { + return sprintf( '', woocommerce_placeholder_img_src( 'woocommerce_thumbnail' ) ); + } + + return sprintf( + '%s', + $product->get_title(), + $image_info[0] + ); + } + + /** + * Extra data passed through from server to client for block. + * + * @param array $attributes Any attributes that currently are available from the block. + * Note, this will be empty in the editor context when the block is + * not in the post content on editor load. + */ + protected function enqueue_data( array $attributes = [] ) { + $this->asset_data_registry->add( 'is_block_theme_enabled', wp_is_block_theme(), false ); + } + + + /** + * Include and render the block + * + * @param array $attributes Block attributes. Default empty array. + * @param string $content Block content. Default empty string. + * @param WP_Block $block Block instance. + * @return string Rendered block type output. + */ + protected function render( $attributes, $content, $block ) { + if ( ! empty( $content ) ) { + parent::register_block_type_assets(); + $this->register_chunk_translations( [ $this->block_name ] ); + return $content; + } + $parsed_attributes = $this->parse_attributes( $attributes ); + + $border_radius = StyleAttributesUtils::get_border_radius_class_and_style( $attributes ); + $margin = StyleAttributesUtils::get_margin_class_and_style( $attributes ); + + $post_id = $block->context['postId']; + $product = wc_get_product( $post_id ); + + if ( $product ) { + return sprintf( + ' + ', + isset( $border_radius['style'] ) ? $border_radius['style'] : '', + isset( $margin['style'] ) ? $margin['style'] : '', + $this->render_anchor( $product, $parsed_attributes ), + $this->render_on_sale_badge( $product, $parsed_attributes ), + $this->render_image( $product ) + ); + + } } } diff --git a/src/BlockTypes/ProductSearch.php b/src/BlockTypes/ProductSearch.php index 2afa20ac5..d83134b86 100644 --- a/src/BlockTypes/ProductSearch.php +++ b/src/BlockTypes/ProductSearch.php @@ -26,11 +26,12 @@ protected function get_block_type_script( $key = null ) { /** * Render the block. * - * @param array $attributes Block attributes. - * @param string $content Block content. + * @param array $attributes Block attributes. + * @param string $content Block content. + * @param WP_Block $block Block instance. * @return string Rendered block type output. */ - protected function render( $attributes, $content ) { + protected function render( $attributes, $content, $block ) { static $instance_id = 0; $attributes = wp_parse_args( diff --git a/src/Utils/StyleAttributesUtils.php b/src/Utils/StyleAttributesUtils.php index e8786c78f..8e8093f1e 100644 --- a/src/Utils/StyleAttributesUtils.php +++ b/src/Utils/StyleAttributesUtils.php @@ -347,6 +347,26 @@ public static function get_padding_class_and_style( $attributes ) { ); } + /** + * Get class and style for margin from attributes. + * + * @param array $attributes Block attributes. + * + * @return (array | null) + */ + public static function get_margin_class_and_style( $attributes ) { + $margin = isset( $attributes['style']['spacing']['margin'] ) ? $attributes['style']['spacing']['margin'] : null; + + if ( ! $margin ) { + return null; + } + + return array( + 'class' => null, + 'style' => sprintf( 'margin: %s;', implode( ' ', $margin ) ), + ); + } + /** * Get classes and styles from attributes. * @@ -368,6 +388,7 @@ public static function get_classes_and_styles_by_attributes( $attributes, $prope 'border_radius' => self::get_border_radius_class_and_style( $attributes ), 'border_width' => self::get_border_width_class_and_style( $attributes ), 'padding' => self::get_padding_class_and_style( $attributes ), + 'margin' => self::get_margin_class_and_style( $attributes ), ); if ( ! empty( $properties ) ) { From 386d7e0daa610ec22a65adba869ef22fa768c7b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alba=20Rinc=C3=B3n?= Date: Fri, 2 Sep 2022 12:57:58 +0200 Subject: [PATCH 114/164] Fix pills in the `Filter by Attribute` block dropdown overlapping with the chevron (#7039) * Avoid chevron overlap * Improve input width calculation --- assets/js/blocks/attribute-filter/style.scss | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/assets/js/blocks/attribute-filter/style.scss b/assets/js/blocks/attribute-filter/style.scss index f73490761..b102bcf0a 100644 --- a/assets/js/blocks/attribute-filter/style.scss +++ b/assets/js/blocks/attribute-filter/style.scss @@ -22,8 +22,8 @@ position: relative; display: flex; gap: $gap; - border-radius: inherit; - border-color: inherit; + border: 1px solid $gray-700; + border-radius: 4px; align-items: flex-start; .wc-block-components-filter-submit-button { @@ -67,8 +67,8 @@ } .wc-blocks-components-form-token-field-wrapper .components-form-token-field__input-container { - border: 1px solid $gray-700; - border-radius: 4px; + border: 0; + width: calc(100% - 50px); padding: $gap-smaller; .components-form-token-field__input::placeholder { From 824a92f093918a71c1a0b99feff7bdfa4410f60c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alba=20Rinc=C3=B3n?= Date: Fri, 2 Sep 2022 15:52:52 +0200 Subject: [PATCH 115/164] Update `filter by price` skeleton design (#6997) * Update filter by price skeleton design * Improve skeleton colors * Update skeleton when no apply button * Update skeleton with apply button * Avoid showing a very wide placeholder when the filter title is very long * Start using the FilterTitlePlaceholder component for the placeholder * Add comment to isUpdating * Remove unneeded styles * Fix title animation --- .../components/filter-placeholder/index.tsx | 7 +- .../components/filter-placeholder/style.scss | 7 +- .../js/base/components/price-slider/index.tsx | 170 ++++++++++-------- .../base/components/price-slider/style.scss | 12 ++ assets/js/blocks/price-filter/block.tsx | 28 ++- assets/js/blocks/price-filter/style.scss | 10 +- 6 files changed, 150 insertions(+), 84 deletions(-) diff --git a/assets/js/base/components/filter-placeholder/index.tsx b/assets/js/base/components/filter-placeholder/index.tsx index 06a06f921..679e716ba 100644 --- a/assets/js/base/components/filter-placeholder/index.tsx +++ b/assets/js/base/components/filter-placeholder/index.tsx @@ -1,5 +1,10 @@ +/** + * Internal dependencies + */ +import './style.scss'; + interface FilterTitlePlaceholderProps { - children?: React.ReactChildren; + children?: React.ReactNode; } const FilterTitlePlaceholder = ( { diff --git a/assets/js/base/components/filter-placeholder/style.scss b/assets/js/base/components/filter-placeholder/style.scss index a1a8751ec..43ef138eb 100644 --- a/assets/js/base/components/filter-placeholder/style.scss +++ b/assets/js/base/components/filter-placeholder/style.scss @@ -7,7 +7,12 @@ min-width: 80px; max-width: max-content !important; - .wc-block-stock-filter__title { + &::after { + background-image: linear-gradient(90deg, $gray-400, $gray-200, $gray-400); + } + + .wc-block-stock-filter__title, + .wc-block-price-filter__title { margin: 0; height: 1em; } diff --git a/assets/js/base/components/price-slider/index.tsx b/assets/js/base/components/price-slider/index.tsx index d9f2faa07..e359a2817 100644 --- a/assets/js/base/components/price-slider/index.tsx +++ b/assets/js/base/components/price-slider/index.tsx @@ -33,6 +33,10 @@ export interface PriceSliderProps { * Whether values are loading or not. */ isLoading?: boolean; + /** + * Whether values are updating or not. The update starts when the price slider is changed. + */ + isUpdating?: boolean; /** * Maximum constraint. */ @@ -87,6 +91,7 @@ const PriceSlider = ( { showFilterButton = false, inlineInput = true, isLoading = false, + isUpdating = false, onSubmit = () => void 0, }: PriceSliderProps ): JSX.Element => { const minRange = useRef< HTMLInputElement >( null ); @@ -301,7 +306,6 @@ const PriceSlider = ( { showFilterButton && 'wc-block-price-filter--has-filter-button', showFilterButton && 'wc-block-components-price-slider--has-filter-button', - isLoading && 'is-loading', ! hasValidConstraints && 'is-disabled', ( inlineInput || wrapperWidth <= 300 ) && 'wc-block-components-price-slider--is-input-inline' @@ -326,7 +330,11 @@ const PriceSlider = ( { const slider = (
    @@ -388,58 +396,68 @@ const PriceSlider = ( { { ( ! inlineInputAvailable || ! showInputFields ) && slider } { showInputFields && (
    - { - if ( value === minPriceInput ) { - return; - } - setMinPriceInput( value ); - } } - onBlur={ priceInputOnBlur } - disabled={ isLoading || ! hasValidConstraints } - value={ minPriceInput } - /> + { ! isUpdating ? ( + { + if ( value === minPriceInput ) { + return; + } + setMinPriceInput( value ); + } } + onBlur={ priceInputOnBlur } + disabled={ isLoading || ! hasValidConstraints } + value={ minPriceInput } + /> + ) : ( +
    + ) } { inlineInputAvailable && slider } - { - if ( value === maxPriceInput ) { - return; - } - setMaxPriceInput( value ); - } } - onBlur={ priceInputOnBlur } - disabled={ isLoading || ! hasValidConstraints } - value={ maxPriceInput } - /> + { ! isUpdating ? ( + { + if ( value === maxPriceInput ) { + return; + } + setMaxPriceInput( value ); + } } + onBlur={ priceInputOnBlur } + disabled={ isLoading || ! hasValidConstraints } + value={ maxPriceInput } + /> + ) : ( +
    + ) }
    ) } { ! showInputFields && - ! isLoading && + ! isUpdating && Number.isFinite( minPrice ) && Number.isFinite( maxPrice ) && (
    @@ -453,32 +471,34 @@ const PriceSlider = ( { />
    ) } -
    - { ( minPrice !== minConstraint || - maxPrice !== maxConstraint ) && ( - { - onChange( [ minConstraint, maxConstraint ] ); - debouncedUpdateQuery(); - } } - screenReaderLabel={ __( - 'Reset price filter', - 'woo-gutenberg-products-block' - ) } - /> - ) } - { showFilterButton && ( - - ) } -
    + { ! isUpdating && ( +
    + { ( minPrice !== minConstraint || + maxPrice !== maxConstraint ) && ( + { + onChange( [ minConstraint, maxConstraint ] ); + debouncedUpdateQuery(); + } } + screenReaderLabel={ __( + 'Reset price filter', + 'woo-gutenberg-products-block' + ) } + /> + ) } + { showFilterButton && ( + + ) } +
    + ) }
    ); }; diff --git a/assets/js/base/components/price-slider/style.scss b/assets/js/base/components/price-slider/style.scss index b894c810a..a445c12f9 100644 --- a/assets/js/base/components/price-slider/style.scss +++ b/assets/js/base/components/price-slider/style.scss @@ -83,6 +83,12 @@ height: 4px; margin: 15px 0; position: relative; + + &.is-loading { + @include placeholder(); + height: em(9px); + border-radius: 0; + } } .wc-block-components-price-slider__range-input-progress { @@ -116,6 +122,12 @@ .wc-block-components-price-slider--is-input-inline & { max-width: 60px; } + + &.is-loading { + @include placeholder(); + border-radius: 0 !important; + width: max-content; + } } } diff --git a/assets/js/blocks/price-filter/block.tsx b/assets/js/blocks/price-filter/block.tsx index 87c5df5cb..4e191b556 100644 --- a/assets/js/blocks/price-filter/block.tsx +++ b/assets/js/blocks/price-filter/block.tsx @@ -9,6 +9,7 @@ import { } from '@woocommerce/base-context/hooks'; import { useCallback, useState, useEffect } from '@wordpress/element'; import PriceSlider from '@woocommerce/base-components/price-slider'; +import FilterTitlePlaceholder from '@woocommerce/base-components/filter-placeholder'; import { useDebouncedCallback } from 'use-debounce'; import PropTypes from 'prop-types'; import { getCurrencyFromPriceResponse } from '@woocommerce/price-format'; @@ -164,6 +165,8 @@ const PriceFilterBlock = ( { setMinPriceQuery, ] ); + const [ isUpdating, setIsUpdating ] = useState( isLoading ); + // Updates the query based on slider values. const onSubmit = useCallback( ( newMinPrice, newMaxPrice ) => { @@ -206,6 +209,7 @@ const PriceFilterBlock = ( { // Callback when slider or input fields are changed. const onChange = useCallback( ( prices ) => { + setIsUpdating( true ); if ( prices[ 0 ] !== minPrice ) { setMinPrice( prices[ 0 ] ); } @@ -303,13 +307,26 @@ const PriceFilterBlock = ( { const TagName = `h${ attributes.headingLevel }` as keyof JSX.IntrinsicElements; + if ( ! isLoading && isUpdating ) { + setIsUpdating( false ); + } + + const heading = ( + + { attributes.heading } + + ); + + const filterHeading = + isLoading && isUpdating ? ( + { heading } + ) : ( + heading + ); + return ( <> - { ! isEditor && attributes.heading && ( - - { attributes.heading } - - ) } + { ! isEditor && attributes.heading && filterHeading }
    onSubmit( minPrice, maxPrice ) } isLoading={ isLoading } + isUpdating={ isUpdating } />
    diff --git a/assets/js/blocks/price-filter/style.scss b/assets/js/blocks/price-filter/style.scss index c67de6065..1aa0bc92f 100644 --- a/assets/js/blocks/price-filter/style.scss +++ b/assets/js/blocks/price-filter/style.scss @@ -23,17 +23,23 @@ border-color: inherit; } - .wc-block-price-filter__controls { border-radius: inherit; border-color: inherit; - // Force inherting style is required for global style. + // Force inheriting style is required for global style. input { border-radius: inherit !important; border-color: inherit !important; border-style: solid; } + + .input-loading { + @include placeholder(); + border-radius: 0; + height: em(32px); + width: em(90px); + } } .editor-styles-wrapper .wc-block-price-filter__button.wc-block-components-price-slider__button, From fef3c6c2f0de0d7863ce8ab060cfbd1d70d0d464 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 2 Sep 2022 18:20:01 +0100 Subject: [PATCH 116/164] Release: 8.4.0 (#7001) * Empty commit for release pull request * Add the changelog to `readme.txt` * Add testing instructions & release zip * Fix video tags * Update feedback document path * Bumping version strings to new version. Co-authored-by: github-actions Co-authored-by: Saad Tarhi --- .../testing/releases/840.md | 138 +++++++++++++++++ .../testing/releases/README.md | 1 + readme.txt | 18 +++ src/Package.php | 44 +++--- woocommerce-gutenberg-products-block.php | 141 +++++++++--------- 5 files changed, 257 insertions(+), 85 deletions(-) create mode 100644 docs/internal-developers/testing/releases/840.md diff --git a/docs/internal-developers/testing/releases/840.md b/docs/internal-developers/testing/releases/840.md new file mode 100644 index 000000000..dcd279871 --- /dev/null +++ b/docs/internal-developers/testing/releases/840.md @@ -0,0 +1,138 @@ +# Testing notes and ZIP for release 8.4.0 + +Zip file for testing: [woocommerce-gutenberg-products-block.zip](https://github.com/woocommerce/woocommerce-blocks/files/9444105/woocommerce-gutenberg-products-block.zip) + +## Feature plugin and package inclusion in WooCommerce + +### Update the filter `Apply` buttons to match the new designs. ([6958](https://github.com/woocommerce/woocommerce-blocks/pull/6958)) + +1. Create a new page and add the `All Products` block and the filter pattern containing all filter blocks. +2. Save it and check the buttons look like the `After` screenshot on the editor and the frontend. + +| Before | After | +| ------ | ----- | +| Screenshot 2022-08-22 at 16 03 13 | Screenshot 2022-08-23 at 10 41 03| + +### Update the design of the Filter Products by Attribute block. ([6920](https://github.com/woocommerce/woocommerce-blocks/pull/6920)) + +1. Add the `Filter by Attribute` block to a page. +2. Check that it looks like the new design in the editor and the front-end. +3. Check that the `Reset` button appears when a checkbox is checked. +4. Edit the page and change the Display Style to dropdown. +5. Check that it looks like the new design in the editor and the front-end (it won't look exactly like the design, check [this conversation](p1660817888642199-slack-C02SGH7JBGS) for more context) + +| Before | After | +| ------ | ----- | +| Screenshot 2022-08-19 at 11 36 19 | Screenshot 2022-08-19 at 11 35 10 | +| Screenshot 2022-08-19 at 11 36 41| Screenshot 2022-08-19 at 11 37 15 | +| Screenshot 2022-08-19 at 11 38 01 | Screenshot 2022-08-19 at 11 37 28 | + +### Update the design of the Filter by Attribute block settings panel. ([6912](https://github.com/woocommerce/woocommerce-blocks/pull/6912)) + +1. Add the `Filter by Attribute` block to a page. +2. Check the copy and the design matches with the new design. +3. Check no regression has happened. + +### Terms and conditions, and Privacy policy links open in a new tab by default. ([6908](https://github.com/woocommerce/woocommerce-blocks/pull/6908)) + +1. Insert Checkout page and save the page. +2. On frontend, click on the terms or privacy links in the checkout block. +3. They should open in a new tab. + +### Layout updates to the Active Filters block. ([6905](https://github.com/woocommerce/woocommerce-blocks/pull/6905)) + +1. Add the Active Filters block alongside some other Filters blocks. +2. Apply some filters to the page. +3. Confirm the layout matches the **After** screenshot above. +4. Confirm the **Remove Filter** buttons for each active filter have a hover state of an alternate shade of grey - also confirm they function as expected. + +| Before | After | +| ------ | ----- | +| CleanShot 2022-08-24 at 09 22 27@2x | CleanShot 2022-08-24 at 09 19 27@2x | +| | | +| CleanShot 2022-08-24 at 09 21 47@2x | CleanShot 2022-08-24 at 09 20 16@2x | + +### Update the design of the Filter Products by Stock block. ([6883](https://github.com/woocommerce/woocommerce-blocks/pull/6883)) + +1. Add the Filter by Stock component to a page using the All Products block, and also a block template. +2. Check that the control panel for this block looks like the design (minus Typography) +3. On both the page and the template frontends select a checkbox and observe that it looks as it should do with the design. +4. Check that a "Reset" button appears and clicking this resets the filter again. +5. Now go to your Edit Page & Edit Template pages and enable "'Apply filters' button". +6. On the frontends again, re-select your filter options and check that they are not applied immediately until you click "Apply" +7. Check that when this block is used with the PHP template & the All Products block that regardless of whether the "Apply Filters" button is active, that clicking "Reset" immediately clears the selected filter options + +| Before | After | +| ------ | ----- | +| Screenshot 2022-08-17 at 12 33 57 | Screenshot 2022-08-17 at 12 32 28 | + +### Update the design of the Filter Products by Price block. ([6877](https://github.com/woocommerce/woocommerce-blocks/pull/6877)) + +1. Add `Filter Products by Price` block to a page. +2. Verify that the `Inline input fields` only shows when the `Price Range` is Editable. +3. Toggle Inline input fields, see the block in the editor updates accordingly. +4. Toggle Filter button, see the Reset and Apply button. +5. Add the All Products block then save the page. +6. On the front end, see the new style applied as in the editor. +7. Change the price using the slider then click the Apply button. +8. See the filter works as expected. +9. Click on the Reset button, see the price filter is reset. (Even if the filter button is enabled, clicking on the reset button should reset the filter query). +10. Tested again with PHP templates, ensure no regression. + +image + +### Allow making the Cart/Checkout block page the default one from within the editor. ([6867](https://github.com/woocommerce/woocommerce-blocks/pull/6867)) + +To test this feature you need the latest trunk of WooCommerce, or WooCommerce 6.9.0. For older versions of WC (pre 6.9.0), the notice would show the old text: + +image + +1. Make sure you have a Cart and Checkout pages in WooCommerce -> Settings -> Advanced. +2. Those pages urls can be `/cart` and `/checkout`. +3. Open a new page, give it a title, insert Cart block. +4. Select Cart block, you should see the notice, select an inner block, you should see the notice as well. +5. Click on the notice, it will load for a couple of seconds, once it's green, visit your new page. +6. Make sure it's on the previous url, so `/cart`. +7. Go back to settings, make sure your new page is that value there. +8. Do the same thing for Checkout block. +9. Open a new page, add Cart block, save the page and publish it. +10. Select the block or one of its inner blocks, start the flow again. +11. It should work, confirm that by visiting the frontend. + + + +### Register product search as a core/search variation when available. ([6191](https://github.com/woocommerce/woocommerce-blocks/pull/6191)) + +1. Ensure the Gutenberg version is โ‰ฅ 13.4 and it is deactivated. +2. With a block theme (2022 for example), add the Product Search block to the header. +3. See the Product Search is the independent block (as it is in `trunk`), not a variation of the Search block. See the block is editable in the editor and working as expected on the front end. +4. Activate Gutenberg. +5. On the front end, see the block is still working as expected and is still a WC block (notice the classes, and search icon). +6. Edit the header, see the Deprecation notice, and a call to action button to upgrade the search block to search variation. +7. Click on the CTA button to see if the block is converted to WC variation of the core search block. +8. Save and see the block functions flawlessly on the front end. +9. Edit the header again, try adding the Product Search block, only variation is available in the inserter. The legacy can't be found and inserted from the inserter. + + + +### Fixed a bug with a class name deriving from a translatable string. ([6914](https://github.com/woocommerce/woocommerce-blocks/pull/6914)) + +1. Add an item to your cart that has multiple variants. E.g. Hoodie (Blue, Logo) +2. Go to the Cart Block +3. Inspect the text for one of the variants (e.g. Colour: Blue) +4. Make sure there is a class called `wc-block-components-product-details__item` on the `
  • ` element. This should be a child of `
      ` +5. Change the language of your store +6. Refresh the cart page +7. Repeat steps 3 and 4. You should see the same result. + + + +--- + +[We're hiring!](https://woocommerce.com/careers/) Come work with us! + +๐Ÿž Found a mistake, or have a suggestion? [Leave feedback about this document here.](https://github.com/woocommerce/woocommerce-blocks/issues/new?assignees=&labels=type%3A+documentation&template=--doc-feedback.md&title=Feedback%20on%20./docs/internal-developers/testing/releases/840.md) + + diff --git a/docs/internal-developers/testing/releases/README.md b/docs/internal-developers/testing/releases/README.md index 93bc3c3d1..67a666622 100644 --- a/docs/internal-developers/testing/releases/README.md +++ b/docs/internal-developers/testing/releases/README.md @@ -87,6 +87,7 @@ Every release includes specific testing instructions for new features and bug fi - [8.2.1](./821.md) - [8.3.0](./830.md) - [8.3.1](./831.md) +- [8.4.0](./840.md) diff --git a/readme.txt b/readme.txt index 358aadd65..de0a64363 100644 --- a/readme.txt +++ b/readme.txt @@ -86,6 +86,24 @@ Release and roadmap notes available on the [WooCommerce Developers Blog](https:/ == Changelog == += 8.4.0 - 2022-08-29 = + +#### Enhancements + +- Update the filter `Apply` buttons to match the new designs. ([6958](https://github.com/woocommerce/woocommerce-blocks/pull/6958)) +- Update the design of the Filter Products by Attribute block. ([6920](https://github.com/woocommerce/woocommerce-blocks/pull/6920)) +- Update the design of the Filter by Attribute block settings panel. ([6912](https://github.com/woocommerce/woocommerce-blocks/pull/6912)) +- Terms and conditions, and Privacy policy links open in a new tab by default. ([6908](https://github.com/woocommerce/woocommerce-blocks/pull/6908)) +- Layout updates to the Active Filters block. ([6905](https://github.com/woocommerce/woocommerce-blocks/pull/6905)) +- Update the design of the Filter Products by Stock block. ([6883](https://github.com/woocommerce/woocommerce-blocks/pull/6883)) +- Update the design of the Filter Products by Price block. ([6877](https://github.com/woocommerce/woocommerce-blocks/pull/6877)) +- Allow making the Cart/Checkout block page the default one from within the editor. ([6867](https://github.com/woocommerce/woocommerce-blocks/pull/6867)) +- Register product search as a core/search variation when available. ([6191](https://github.com/woocommerce/woocommerce-blocks/pull/6191)) + +#### Bug Fixes + +- Fixed a bug with a class name deriving from a translatable string. ([6914](https://github.com/woocommerce/woocommerce-blocks/pull/6914)) + = 8.3.1 - 2022-08-17 = #### Bug Fixes diff --git a/src/Package.php b/src/Package.php index 21464a187..e89b2c87e 100644 --- a/src/Package.php +++ b/src/Package.php @@ -1,4 +1,5 @@ get( NewPackage::class ); + protected static function get_package() + { + return self::container()->get(NewPackage::class); } /** @@ -38,8 +41,9 @@ protected static function get_package() { * * @since 2.5.0 Handled by new NewPackage. */ - public static function init() { - self::container()->get( Bootstrap::class ); + public static function init() + { + self::container()->get(Bootstrap::class); } /** @@ -47,7 +51,8 @@ public static function init() { * * @return string */ - public static function get_version() { + public static function get_version() + { return self::get_package()->get_version(); } @@ -56,7 +61,8 @@ public static function get_version() { * * @return string */ - public static function get_path() { + public static function get_path() + { return self::get_package()->get_path(); } @@ -65,7 +71,8 @@ public static function get_path() { * * @return FeatureGating */ - public static function feature() { + public static function feature() + { return self::get_package()->feature(); } @@ -74,7 +81,8 @@ public static function feature() { * * @return boolean */ - public static function is_experimental_build() { + public static function is_experimental_build() + { return self::get_package()->is_experimental_build(); } @@ -101,22 +109,23 @@ public static function is_experimental_build() { * Note: this means all dependencies will be * reconstructed. */ - public static function container( $reset = false ) { + public static function container($reset = false) + { static $container; if ( - ! $container instanceof Container - || $reset - ) { + !$container instanceof Container + || $reset + ) { $container = new Container(); // register Package. $container->register( NewPackage::class, - function ( $container ) { + function ($container) { // leave for automated version bumping. $version = '8.5.0-dev'; return new NewPackage( $version, - dirname( __DIR__ ), + dirname(__DIR__), new FeatureGating() ); } @@ -124,7 +133,7 @@ function ( $container ) { // register Bootstrap. $container->register( Bootstrap::class, - function ( $container ) { + function ($container) { return new Bootstrap( $container ); @@ -134,8 +143,7 @@ function ( $container ) { $container->register( Migration::class, function () { - return new Migration( - ); + return new Migration(); } ); } diff --git a/woocommerce-gutenberg-products-block.php b/woocommerce-gutenberg-products-block.php index bafab0dfa..352058365 100644 --- a/woocommerce-gutenberg-products-block.php +++ b/woocommerce-gutenberg-products-block.php @@ -1,4 +1,5 @@ id; $is_woocommerce_page = - property_exists( $current_screen, 'parent_base' ) && + property_exists($current_screen, 'parent_base') && 'woocommerce' === $current_screen->parent_base; return $is_plugins_page || $is_woocommerce_page; } -if ( version_compare( $GLOBALS['wp_version'], $minimum_wp_version, '<' ) ) { +if (version_compare($GLOBALS['wp_version'], $minimum_wp_version, '<')) { /** * Outputs for an admin notice about running WooCommerce Blocks on outdated WordPress. * * @since 2.5.0 */ - function woocommerce_blocks_admin_unsupported_wp_notice() { - if ( should_display_compatibility_notices() ) { - ?> + function woocommerce_blocks_admin_unsupported_wp_notice() + { + if (should_display_compatibility_notices()) { +?>
      -

      +

      -

      '; printf( /* translators: %1$s is referring to a php constant name, %2$s is referring to the wp-config.php file. */ - esc_html__( 'WooCommerce Blocks development mode requires the %1$s constant to be defined and true in your %2$s file. Otherwise you are loading the blocks package from WooCommerce core.', 'woo-gutenberg-products-block' ), + esc_html__('WooCommerce Blocks development mode requires the %1$s constant to be defined and true in your %2$s file. Otherwise you are loading the blocks package from WooCommerce core.', 'woo-gutenberg-products-block'), 'JETPACK_AUTOLOAD_DEV', 'wp-config.php' ); @@ -112,16 +116,16 @@ function() { * If the autoloader is not present, let's log the failure and display a nice admin notice. */ $autoloader = __DIR__ . '/vendor/autoload_packages.php'; -if ( is_readable( $autoloader ) ) { +if (is_readable($autoloader)) { require $autoloader; } else { - if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) { + if (defined('WP_DEBUG') && WP_DEBUG) { error_log( // phpcs:ignore sprintf( /* translators: 1: composer command. 2: plugin directory */ - esc_html__( 'Your installation of the WooCommerce Blocks feature plugin is incomplete. Please run %1$s within the %2$s directory.', 'woo-gutenberg-products-block' ), + esc_html__('Your installation of the WooCommerce Blocks feature plugin is incomplete. Please run %1$s within the %2$s directory.', 'woo-gutenberg-products-block'), '`composer install`', - '`' . esc_html( str_replace( ABSPATH, '', __DIR__ ) ) . '`' + '`' . esc_html(str_replace(ABSPATH, '', __DIR__)) . '`' ) ); } @@ -130,27 +134,27 @@ function() { */ add_action( 'admin_notices', - function() { - ?> -

      -

      - composer install', - '' . esc_html( str_replace( ABSPATH, '', __DIR__ ) ) . '' - ); - ?> -

      -
      - +
      +

      + composer install', + '' . esc_html(str_replace(ABSPATH, '', __DIR__)) . '' + ); + ?> +

      +
      + registered[ $handle ], $wp_scripts->registered[ $handle ]->src ) ) { + if (!isset($wp_scripts->registered[$handle], $wp_scripts->registered[$handle]->src)) { return $file; } - $handle_src = explode( '/build/', $wp_scripts->registered[ $handle ]->src ); + $handle_src = explode('/build/', $wp_scripts->registered[$handle]->src); $handle_filename = $handle_src[1]; $locale = determine_locale(); $lang_dir = WP_LANG_DIR . '/plugins'; // Translations are always based on the unminified filename. - if ( substr( $handle_filename, -7 ) === '.min.js' ) { - $handle_filename = substr( $handle_filename, 0, -7 ) . '.js'; + if (substr($handle_filename, -7) === '.min.js') { + $handle_filename = substr($handle_filename, 0, -7) . '.js'; } - $core_path_md5 = md5( 'packages/woocommerce-blocks/build/' . $handle_filename ); + $core_path_md5 = md5('packages/woocommerce-blocks/build/' . $handle_filename); /** * Return file path of the corresponding translation file in the WC Core is @@ -213,7 +218,7 @@ function load_woocommerce_core_json_translation( $file, $handle, $domain ) { return $lang_dir . '/woocommerce-' . $locale . '-' . $core_path_md5 . '.json'; } -add_filter( 'load_script_translation_file', 'load_woocommerce_core_json_translation', 10, 3 ); +add_filter('load_script_translation_file', 'load_woocommerce_core_json_translation', 10, 3); /** * Filter translations so we can retrieve translations from Core when the original and the translated @@ -224,33 +229,35 @@ function load_woocommerce_core_json_translation( $file, $handle, $domain ) { * @param string $domain The text domain. * @return string WC Blocks translation. In case it's the same as $text, Core translation. */ -function woocommerce_blocks_get_php_translation_from_core( $translation, $text, $domain ) { - if ( 'woo-gutenberg-products-block' !== $domain ) { +function woocommerce_blocks_get_php_translation_from_core($translation, $text, $domain) +{ + if ('woo-gutenberg-products-block' !== $domain) { return $translation; } // When translation is the same, that could mean the string is not translated. // In that case, load it from core. - if ( $translation === $text ) { - return translate( $text, 'woocommerce' ); // phpcs:ignore WordPress.WP.I18n.LowLevelTranslationFunction, WordPress.WP.I18n.NonSingularStringLiteralText, WordPress.WP.I18n.TextDomainMismatch + if ($translation === $text) { + return translate($text, 'woocommerce'); // phpcs:ignore WordPress.WP.I18n.LowLevelTranslationFunction, WordPress.WP.I18n.NonSingularStringLiteralText, WordPress.WP.I18n.TextDomainMismatch } return $translation; } -add_filter( 'gettext', 'woocommerce_blocks_get_php_translation_from_core', 10, 3 ); +add_filter('gettext', 'woocommerce_blocks_get_php_translation_from_core', 10, 3); /** * Add notice to the admin dashboard if the plugin is outdated. * * @see https://github.com/woocommerce/woocommerce-blocks/issues/5587 */ -function woocommerce_blocks_plugin_outdated_notice() { +function woocommerce_blocks_plugin_outdated_notice() +{ $is_active = - is_plugin_active( 'woo-gutenberg-products-block/woocommerce-gutenberg-products-block.php' ) || - is_plugin_active( 'woocommerce-gutenberg-products-block/woocommerce-gutenberg-products-block.php' ) || - is_plugin_active( 'woocommerce-blocks/woocommerce-gutenberg-products-block.php' ); + is_plugin_active('woo-gutenberg-products-block/woocommerce-gutenberg-products-block.php') || + is_plugin_active('woocommerce-gutenberg-products-block/woocommerce-gutenberg-products-block.php') || + is_plugin_active('woocommerce-blocks/woocommerce-gutenberg-products-block.php'); - if ( ! $is_active ) { + if (!$is_active) { return; } @@ -261,17 +268,17 @@ function woocommerce_blocks_plugin_outdated_notice() { * the current path is from the WC Core, we can consider the plugin is * outdated because Jetpack Autoloader always loads the newer package. */ - if ( ! strpos( $woocommerce_blocks_path, 'packages/woocommerce-blocks' ) ) { + if (!strpos($woocommerce_blocks_path, 'packages/woocommerce-blocks')) { return; } - if ( should_display_compatibility_notices() ) { - ?> + if (should_display_compatibility_notices()) { + ?>
      -

      +

      - Date: Mon, 5 Sep 2022 10:45:03 +0530 Subject: [PATCH 117/164] Fix experimental interface document link in release initial checklist (#6992) --- .github/release-initial-checklist.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/release-initial-checklist.md b/.github/release-initial-checklist.md index c97c3f1f5..5f28818c4 100644 --- a/.github/release-initial-checklist.md +++ b/.github/release-initial-checklist.md @@ -22,7 +22,7 @@ The release pull request has been created! This checklist is a guide to follow f * [ ] Run `npm ci` * [ ] Run `npm run package-plugin:deploy`. This will create a zip of the current branch build locally. * Note: The zip file is functionally equivalent to what gets released except the version bump. -* [ ] Create the testing notes for the release. +* [ ] Create the testing notes for the release. * [ ] For each pull request that belongs to the current release, grab the `User Facing Testing` notes from the PR's description. Be sure that the `Do not include in the Testing Notes is not flagged` checkbox is unchecked. * [ ] Add the notes to `docs/internal-developers/testing/releases` * [ ] Update the `docs/internal-developers/testing/releases/README.md` file index. @@ -63,7 +63,7 @@ Each porter is responsible for testing the PRs that fall under the focus of thei * Note: the script automatically updates version numbers on Github (commits on your behalf). * **ALERT**: This script will ask you if this release will be deployed to WordPress.org. You should answer yes for this release even if it is a pre-release. * A GitHub release will automatically be created and this will trigger a workflow that automatically deploys the plugin to WordPress.org. - + ## If this release is deployed to WordPress.org... @@ -93,20 +93,20 @@ Each porter is responsible for testing the PRs that fall under the focus of thei This only needs to be done if this release is the last release of the feature plugin before code freeze in the WooCommerce core cycle. If this condition doesn't exist you can skip this section. -* [ ] Remind whoever is porter this week to audit our codebase to ensure this [experimental interface document](https://github.com/woocommerce/woocommerce-gutenberg-products-block/blob/trunk/docs/blocks/feature-flags-and-experimental-interfaces.md) is up to date. See Pca54o-rM-p2 for more details. +* [ ] Remind whoever is porter this week to audit our codebase to ensure this [experimental interface document](https://github.com/woocommerce/woocommerce-blocks/blob/trunk/docs/internal-developers/blocks/feature-flags-and-experimental-interfaces.md) is up to date. See Pca54o-rM-p2 for more details. * [ ] Create a pull request for updating the package in the [WooCommerce Core Repository](https://github.com/woocommerce/woocommerce/) that [bumps the package version](https://github.com/woocommerce/woocommerce/blob/747cb6b7184ba9fdc875ab104da5839cfda8b4be/plugins/woocommerce/composer.json) for the Woo Blocks package to the version you are releasing. - The content for the pull release can follow [this example](https://github.com/woocommerce/woocommerce/pull/32627). - [ ] Increase the version of `woocommerce/woocommerce-blocks` in the `plugins/woocommerce/composer.json` file - [ ] Run `composer update woocommerce/woocommerce-blocks` and make sure `composer-lock.json` was updated - [ ] Add a new file similar to this one [plugins/woocommerce/changelog/update-woocommerce-blocks-7.4.1](https://github.com/woocommerce/woocommerce/blob/5040a10d01896bcf40fd0ac538f2b7bc584ffe0a/plugins/woocommerce/changelog/update-woocommerce-blocks-7.4.1) with a similar content as below. For the Significance entry weโ€™ll always use `minor`, or `patch` when including a patch release - + ``` Significance: minor Type: update - + Update WooCommerce Blocks to 7.4.1 ``` - + - The PR description can follow [this example](https://github.com/woocommerce/woocommerce/pull/32627). - It lists all the WooCommerce Blocks versions that are being included since the last version that you edited in `plugins/woocommerce/composer.json`. Each version should have a link for the `Release PR`, `Testing instructions` and `Release post` (if available). - The changelog should be aggregated from all the releases included in the package bump and grouped per type: `Enhancements`, `Bug Fixes`, `Various` etc. This changelog will be used in the release notes for the WooCommerce release. That's why it should only list the PRs that have WooCoomerce Core in the WooCommerce Visibility section of their description. Don't include changes available in the feature plugin or development builds. From 940dea4936449fc9884fce1fc0089677a874843c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Sep 2022 08:49:33 +0000 Subject: [PATCH 118/164] Bump @typescript-eslint/parser from 5.31.0 to 5.35.1 (#7004) --- package-lock.json | 96 +++++++++++++++++++++++------------------------ package.json | 2 +- 2 files changed, 49 insertions(+), 49 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9ab86ac62..aae46949f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,7 +6,7 @@ "packages": { "": { "name": "@woocommerce/block-library", - "version": "8.3.0-dev", + "version": "8.4.0-dev", "hasInstallScript": true, "license": "GPL-3.0+", "dependencies": { @@ -74,7 +74,7 @@ "@types/wordpress__data-controls": "2.2.0", "@types/wordpress__editor": "^11.0.0", "@typescript-eslint/eslint-plugin": "5.30.5", - "@typescript-eslint/parser": "5.31.0", + "@typescript-eslint/parser": "5.35.1", "@woocommerce/api": "0.2.0", "@woocommerce/data": "^4.1.0", "@woocommerce/e2e-utils": "0.2.0", @@ -12564,14 +12564,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.31.0.tgz", - "integrity": "sha512-UStjQiZ9OFTFReTrN+iGrC6O/ko9LVDhreEK5S3edmXgR396JGq7CoX2TWIptqt/ESzU2iRKXAHfSF2WJFcWHw==", + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.35.1.tgz", + "integrity": "sha512-XL2TBTSrh3yWAsMYpKseBYTVpvudNf69rPOWXWVBI08My2JVT5jR66eTt4IgQFHA/giiKJW5dUD4x/ZviCKyGg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.31.0", - "@typescript-eslint/types": "5.31.0", - "@typescript-eslint/typescript-estree": "5.31.0", + "@typescript-eslint/scope-manager": "5.35.1", + "@typescript-eslint/types": "5.35.1", + "@typescript-eslint/typescript-estree": "5.35.1", "debug": "^4.3.4" }, "engines": { @@ -12591,13 +12591,13 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.31.0.tgz", - "integrity": "sha512-8jfEzBYDBG88rcXFxajdVavGxb5/XKXyvWgvD8Qix3EEJLCFIdVloJw+r9ww0wbyNLOTYyBsR+4ALNGdlalLLg==", + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.35.1.tgz", + "integrity": "sha512-kCYRSAzIW9ByEIzmzGHE50NGAvAP3wFTaZevgWva7GpquDyFPFcmvVkFJGWJJktg/hLwmys/FZwqM9EKr2u24Q==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.31.0", - "@typescript-eslint/visitor-keys": "5.31.0" + "@typescript-eslint/types": "5.35.1", + "@typescript-eslint/visitor-keys": "5.35.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -12608,9 +12608,9 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.31.0.tgz", - "integrity": "sha512-/f/rMaEseux+I4wmR6mfpM2wvtNZb1p9hAV77hWfuKc3pmaANp5dLAZSiE3/8oXTYTt3uV9KW5yZKJsMievp6g==", + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.35.1.tgz", + "integrity": "sha512-FDaujtsH07VHzG0gQ6NDkVVhi1+rhq0qEvzHdJAQjysN+LHDCKDKCBRlZFFE0ec0jKxiv0hN63SNfExy0KrbQQ==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -12621,13 +12621,13 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.31.0.tgz", - "integrity": "sha512-3S625TMcARX71wBc2qubHaoUwMEn+l9TCsaIzYI/ET31Xm2c9YQ+zhGgpydjorwQO9pLfR/6peTzS/0G3J/hDw==", + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.35.1.tgz", + "integrity": "sha512-JUqE1+VRTGyoXlDWWjm6MdfpBYVq+hixytrv1oyjYIBEOZhBCwtpp5ZSvBt4wIA1MKWlnaC2UXl2XmYGC3BoQA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.31.0", - "@typescript-eslint/visitor-keys": "5.31.0", + "@typescript-eslint/types": "5.35.1", + "@typescript-eslint/visitor-keys": "5.35.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -12648,12 +12648,12 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.31.0.tgz", - "integrity": "sha512-ZK0jVxSjS4gnPirpVjXHz7mgdOsZUHzNYSfTw2yPa3agfbt9YfqaBiBZFSSxeBWnpWkzCxTfUpnzA3Vily/CSg==", + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.35.1.tgz", + "integrity": "sha512-cEB1DvBVo1bxbW/S5axbGPE6b7FIMAbo3w+AGq6zNDA7+NYJOIkKj/sInfTv4edxd4PxJSgdN4t6/pbvgA+n5g==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.31.0", + "@typescript-eslint/types": "5.35.1", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -63831,41 +63831,41 @@ } }, "@typescript-eslint/parser": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.31.0.tgz", - "integrity": "sha512-UStjQiZ9OFTFReTrN+iGrC6O/ko9LVDhreEK5S3edmXgR396JGq7CoX2TWIptqt/ESzU2iRKXAHfSF2WJFcWHw==", + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.35.1.tgz", + "integrity": "sha512-XL2TBTSrh3yWAsMYpKseBYTVpvudNf69rPOWXWVBI08My2JVT5jR66eTt4IgQFHA/giiKJW5dUD4x/ZviCKyGg==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.31.0", - "@typescript-eslint/types": "5.31.0", - "@typescript-eslint/typescript-estree": "5.31.0", + "@typescript-eslint/scope-manager": "5.35.1", + "@typescript-eslint/types": "5.35.1", + "@typescript-eslint/typescript-estree": "5.35.1", "debug": "^4.3.4" }, "dependencies": { "@typescript-eslint/scope-manager": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.31.0.tgz", - "integrity": "sha512-8jfEzBYDBG88rcXFxajdVavGxb5/XKXyvWgvD8Qix3EEJLCFIdVloJw+r9ww0wbyNLOTYyBsR+4ALNGdlalLLg==", + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.35.1.tgz", + "integrity": "sha512-kCYRSAzIW9ByEIzmzGHE50NGAvAP3wFTaZevgWva7GpquDyFPFcmvVkFJGWJJktg/hLwmys/FZwqM9EKr2u24Q==", "dev": true, "requires": { - "@typescript-eslint/types": "5.31.0", - "@typescript-eslint/visitor-keys": "5.31.0" + "@typescript-eslint/types": "5.35.1", + "@typescript-eslint/visitor-keys": "5.35.1" } }, "@typescript-eslint/types": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.31.0.tgz", - "integrity": "sha512-/f/rMaEseux+I4wmR6mfpM2wvtNZb1p9hAV77hWfuKc3pmaANp5dLAZSiE3/8oXTYTt3uV9KW5yZKJsMievp6g==", + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.35.1.tgz", + "integrity": "sha512-FDaujtsH07VHzG0gQ6NDkVVhi1+rhq0qEvzHdJAQjysN+LHDCKDKCBRlZFFE0ec0jKxiv0hN63SNfExy0KrbQQ==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.31.0.tgz", - "integrity": "sha512-3S625TMcARX71wBc2qubHaoUwMEn+l9TCsaIzYI/ET31Xm2c9YQ+zhGgpydjorwQO9pLfR/6peTzS/0G3J/hDw==", + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.35.1.tgz", + "integrity": "sha512-JUqE1+VRTGyoXlDWWjm6MdfpBYVq+hixytrv1oyjYIBEOZhBCwtpp5ZSvBt4wIA1MKWlnaC2UXl2XmYGC3BoQA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.31.0", - "@typescript-eslint/visitor-keys": "5.31.0", + "@typescript-eslint/types": "5.35.1", + "@typescript-eslint/visitor-keys": "5.35.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -63874,12 +63874,12 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.31.0.tgz", - "integrity": "sha512-ZK0jVxSjS4gnPirpVjXHz7mgdOsZUHzNYSfTw2yPa3agfbt9YfqaBiBZFSSxeBWnpWkzCxTfUpnzA3Vily/CSg==", + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.35.1.tgz", + "integrity": "sha512-cEB1DvBVo1bxbW/S5axbGPE6b7FIMAbo3w+AGq6zNDA7+NYJOIkKj/sInfTv4edxd4PxJSgdN4t6/pbvgA+n5g==", "dev": true, "requires": { - "@typescript-eslint/types": "5.31.0", + "@typescript-eslint/types": "5.35.1", "eslint-visitor-keys": "^3.3.0" } }, diff --git a/package.json b/package.json index 36da5eab1..c543af883 100644 --- a/package.json +++ b/package.json @@ -121,7 +121,7 @@ "@types/wordpress__data-controls": "2.2.0", "@types/wordpress__editor": "^11.0.0", "@typescript-eslint/eslint-plugin": "5.30.5", - "@typescript-eslint/parser": "5.31.0", + "@typescript-eslint/parser": "5.35.1", "@woocommerce/api": "0.2.0", "@woocommerce/data": "^4.1.0", "@woocommerce/e2e-utils": "0.2.0", From 60bdfdbd4726c1ff52b38a4a003051947e16401f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Sep 2022 10:59:13 +0200 Subject: [PATCH 119/164] Bump @wordpress/browserslist-config from 4.1.2 to 5.0.0 (#7003) Bumps [@wordpress/browserslist-config](https://github.com/WordPress/gutenberg/tree/HEAD/packages/browserslist-config) from 4.1.2 to 5.0.0. - [Release notes](https://github.com/WordPress/gutenberg/releases) - [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/browserslist-config/CHANGELOG.md) - [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/browserslist-config@5.0.0/packages/browserslist-config) --- updated-dependencies: - dependency-name: "@wordpress/browserslist-config" dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Tom Cafferkey --- package-lock.json | 61 ++++++++++++++++++++++++++++++++++++++++------- package.json | 2 +- 2 files changed, 54 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index aae46949f..6a9c98d2d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -85,7 +85,7 @@ "@wordpress/base-styles": "4.0.4", "@wordpress/block-editor": "8.2.0", "@wordpress/blocks": "11.1.5", - "@wordpress/browserslist-config": "4.1.2", + "@wordpress/browserslist-config": "5.0.0", "@wordpress/components": "19.1.5", "@wordpress/data-controls": "2.2.7", "@wordpress/dependency-extraction-webpack-plugin": "3.2.1", @@ -13897,6 +13897,15 @@ "node": ">=12" } }, + "node_modules/@wordpress/babel-preset-default/node_modules/@wordpress/browserslist-config": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-4.1.3.tgz", + "integrity": "sha512-M4WQ0C4zCfMWyCmK40git3rfPdNkRwg5boGjoTL4LSdhrY+rtchFAtfOHS9KovAZ5ZzTB0gyZsCu/QKZlPClog==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/@wordpress/babel-preset-default/node_modules/@wordpress/element": { "version": "4.11.0", "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.11.0.tgz", @@ -14242,12 +14251,12 @@ } }, "node_modules/@wordpress/browserslist-config": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-4.1.2.tgz", - "integrity": "sha512-UH0Ifmm4tEjVPOtiqH6yxDvk2EKtqSAhnyhyfSIb0wUnEoGsWTjREZjzuhgjt/I2nTqfg+0gUSzL5D0yQH6wDQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-5.0.0.tgz", + "integrity": "sha512-YitgByVHIBP7IscrhHVuUkZ6+qnMfATln2b3ItdyUT2gLlUmZJfqrt7UNiT6YiaArypKwkklpFw5NNtFpyvZVw==", "dev": true, "engines": { - "node": ">=12" + "node": ">=14" } }, "node_modules/@wordpress/components": { @@ -15188,6 +15197,15 @@ "node": ">=12" } }, + "node_modules/@wordpress/e2e-tests/node_modules/@wordpress/browserslist-config": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-4.1.3.tgz", + "integrity": "sha512-M4WQ0C4zCfMWyCmK40git3rfPdNkRwg5boGjoTL4LSdhrY+rtchFAtfOHS9KovAZ5ZzTB0gyZsCu/QKZlPClog==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/@wordpress/e2e-tests/node_modules/@wordpress/dependency-extraction-webpack-plugin": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/@wordpress/dependency-extraction-webpack-plugin/-/dependency-extraction-webpack-plugin-3.7.0.tgz", @@ -17710,6 +17728,15 @@ } } }, + "node_modules/@wordpress/scripts/node_modules/@wordpress/browserslist-config": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-4.1.3.tgz", + "integrity": "sha512-M4WQ0C4zCfMWyCmK40git3rfPdNkRwg5boGjoTL4LSdhrY+rtchFAtfOHS9KovAZ5ZzTB0gyZsCu/QKZlPClog==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/@wordpress/scripts/node_modules/@wordpress/dependency-extraction-webpack-plugin": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/@wordpress/dependency-extraction-webpack-plugin/-/dependency-extraction-webpack-plugin-3.4.1.tgz", @@ -64899,6 +64926,12 @@ "core-js": "^3.19.1" }, "dependencies": { + "@wordpress/browserslist-config": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-4.1.3.tgz", + "integrity": "sha512-M4WQ0C4zCfMWyCmK40git3rfPdNkRwg5boGjoTL4LSdhrY+rtchFAtfOHS9KovAZ5ZzTB0gyZsCu/QKZlPClog==", + "dev": true + }, "@wordpress/element": { "version": "4.11.0", "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.11.0.tgz", @@ -65197,9 +65230,9 @@ } }, "@wordpress/browserslist-config": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-4.1.2.tgz", - "integrity": "sha512-UH0Ifmm4tEjVPOtiqH6yxDvk2EKtqSAhnyhyfSIb0wUnEoGsWTjREZjzuhgjt/I2nTqfg+0gUSzL5D0yQH6wDQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-5.0.0.tgz", + "integrity": "sha512-YitgByVHIBP7IscrhHVuUkZ6+qnMfATln2b3ItdyUT2gLlUmZJfqrt7UNiT6YiaArypKwkklpFw5NNtFpyvZVw==", "dev": true }, "@wordpress/components": { @@ -65970,6 +66003,12 @@ "core-js": "^3.19.1" } }, + "@wordpress/browserslist-config": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-4.1.3.tgz", + "integrity": "sha512-M4WQ0C4zCfMWyCmK40git3rfPdNkRwg5boGjoTL4LSdhrY+rtchFAtfOHS9KovAZ5ZzTB0gyZsCu/QKZlPClog==", + "dev": true + }, "@wordpress/dependency-extraction-webpack-plugin": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/@wordpress/dependency-extraction-webpack-plugin/-/dependency-extraction-webpack-plugin-3.7.0.tgz", @@ -67823,6 +67862,12 @@ "dev": true, "requires": {} }, + "@wordpress/browserslist-config": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@wordpress/browserslist-config/-/browserslist-config-4.1.3.tgz", + "integrity": "sha512-M4WQ0C4zCfMWyCmK40git3rfPdNkRwg5boGjoTL4LSdhrY+rtchFAtfOHS9KovAZ5ZzTB0gyZsCu/QKZlPClog==", + "dev": true + }, "@wordpress/dependency-extraction-webpack-plugin": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/@wordpress/dependency-extraction-webpack-plugin/-/dependency-extraction-webpack-plugin-3.4.1.tgz", diff --git a/package.json b/package.json index c543af883..da404ece9 100644 --- a/package.json +++ b/package.json @@ -132,7 +132,7 @@ "@wordpress/base-styles": "4.0.4", "@wordpress/block-editor": "8.2.0", "@wordpress/blocks": "11.1.5", - "@wordpress/browserslist-config": "4.1.2", + "@wordpress/browserslist-config": "5.0.0", "@wordpress/components": "19.1.5", "@wordpress/data-controls": "2.2.7", "@wordpress/dependency-extraction-webpack-plugin": "3.2.1", From e964acd8be3d5e49c7a54793a55b8f5acba60c3f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Sep 2022 11:05:06 +0200 Subject: [PATCH 120/164] Bump @actions/core from 1.9.0 to 1.9.1 (#6938) Bumps [@actions/core](https://github.com/actions/toolkit/tree/HEAD/packages/core) from 1.9.0 to 1.9.1. - [Release notes](https://github.com/actions/toolkit/releases) - [Changelog](https://github.com/actions/toolkit/blob/main/packages/core/RELEASES.md) - [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/core) --- updated-dependencies: - dependency-name: "@actions/core" dependency-type: direct:development ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 20 +++++++++++--------- package.json | 2 +- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6a9c98d2d..d14e5ca72 100644 --- a/package-lock.json +++ b/package-lock.json @@ -35,7 +35,7 @@ "wordpress-components": "npm:@wordpress/components@14.2.0" }, "devDependencies": { - "@actions/core": "1.9.0", + "@actions/core": "1.9.1", "@actions/github": "5.0.3", "@automattic/color-studio": "2.5.0", "@babel/cli": "7.18.9", @@ -187,12 +187,13 @@ } }, "node_modules/@actions/core": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.9.0.tgz", - "integrity": "sha512-5pbM693Ih59ZdUhgk+fts+bUWTnIdHV3kwOSr+QIoFHMLg7Gzhwm0cifDY/AG68ekEJAkHnQVpcy4f6GjmzBCA==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.9.1.tgz", + "integrity": "sha512-5ad+U2YGrmmiw6du20AQW5XuWo7UKN2052FjSV7MX+Wfjf8sCqcsZe62NfgHys4QI4/Y+vQvLKYL8jWtA1ZBTA==", "dev": true, "dependencies": { - "@actions/http-client": "^2.0.1" + "@actions/http-client": "^2.0.1", + "uuid": "^8.3.2" } }, "node_modules/@actions/github": { @@ -54407,12 +54408,13 @@ }, "dependencies": { "@actions/core": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.9.0.tgz", - "integrity": "sha512-5pbM693Ih59ZdUhgk+fts+bUWTnIdHV3kwOSr+QIoFHMLg7Gzhwm0cifDY/AG68ekEJAkHnQVpcy4f6GjmzBCA==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.9.1.tgz", + "integrity": "sha512-5ad+U2YGrmmiw6du20AQW5XuWo7UKN2052FjSV7MX+Wfjf8sCqcsZe62NfgHys4QI4/Y+vQvLKYL8jWtA1ZBTA==", "dev": true, "requires": { - "@actions/http-client": "^2.0.1" + "@actions/http-client": "^2.0.1", + "uuid": "^8.3.2" } }, "@actions/github": { diff --git a/package.json b/package.json index da404ece9..59ee89dcf 100644 --- a/package.json +++ b/package.json @@ -82,7 +82,7 @@ "wp-env:config": "./bin/wp-env-pre-config.sh" }, "devDependencies": { - "@actions/core": "1.9.0", + "@actions/core": "1.9.1", "@actions/github": "5.0.3", "@automattic/color-studio": "2.5.0", "@babel/cli": "7.18.9", From 8e518b81cfef4a057d6bfd5f36a0954c7c2dda53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alba=20Rinc=C3=B3n?= Date: Mon, 5 Sep 2022 11:35:10 +0200 Subject: [PATCH 121/164] Fix php format (#7050) --- src/Package.php | 37 +++++++++++++++---------------------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/src/Package.php b/src/Package.php index e89b2c87e..6b11bb7e0 100644 --- a/src/Package.php +++ b/src/Package.php @@ -20,8 +20,8 @@ * * @since 2.5.0 */ -class Package -{ +class Package { + /** * For back compat this is provided. Ideally, you should register your @@ -31,9 +31,8 @@ class Package * @since 2.5.0 * @return Package The Package instance class */ - protected static function get_package() - { - return self::container()->get(NewPackage::class); + protected static function get_package() { + return self::container()->get( NewPackage::class ); } /** @@ -41,9 +40,8 @@ protected static function get_package() * * @since 2.5.0 Handled by new NewPackage. */ - public static function init() - { - self::container()->get(Bootstrap::class); + public static function init() { + self::container()->get( Bootstrap::class ); } /** @@ -51,8 +49,7 @@ public static function init() * * @return string */ - public static function get_version() - { + public static function get_version() { return self::get_package()->get_version(); } @@ -61,8 +58,7 @@ public static function get_version() * * @return string */ - public static function get_path() - { + public static function get_path() { return self::get_package()->get_path(); } @@ -71,8 +67,7 @@ public static function get_path() * * @return FeatureGating */ - public static function feature() - { + public static function feature() { return self::get_package()->feature(); } @@ -81,8 +76,7 @@ public static function feature() * * @return boolean */ - public static function is_experimental_build() - { + public static function is_experimental_build() { return self::get_package()->is_experimental_build(); } @@ -109,23 +103,22 @@ public static function is_experimental_build() * Note: this means all dependencies will be * reconstructed. */ - public static function container($reset = false) - { + public static function container( $reset = false ) { static $container; if ( - !$container instanceof Container + ! $container instanceof Container || $reset ) { $container = new Container(); // register Package. $container->register( NewPackage::class, - function ($container) { + function ( $container ) { // leave for automated version bumping. $version = '8.5.0-dev'; return new NewPackage( $version, - dirname(__DIR__), + dirname( __DIR__ ), new FeatureGating() ); } @@ -133,7 +126,7 @@ function ($container) { // register Bootstrap. $container->register( Bootstrap::class, - function ($container) { + function ( $container ) { return new Bootstrap( $container ); From f5888d18837ad8fc1c41f6861c9643153d9c477e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Sep 2022 12:05:06 +0200 Subject: [PATCH 122/164] Bump automattic/jetpack-autoloader from 2.11.6 to 2.11.7 (#6810) Bumps [automattic/jetpack-autoloader](https://github.com/Automattic/jetpack-autoloader) from 2.11.6 to 2.11.7. - [Release notes](https://github.com/Automattic/jetpack-autoloader/releases) - [Changelog](https://github.com/Automattic/jetpack-autoloader/blob/trunk/CHANGELOG.md) - [Commits](https://github.com/Automattic/jetpack-autoloader/compare/v2.11.6...v2.11.7) --- updated-dependencies: - dependency-name: automattic/jetpack-autoloader dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.lock | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/composer.lock b/composer.lock index 1a0acfea8..8ad0624b5 100644 --- a/composer.lock +++ b/composer.lock @@ -8,23 +8,23 @@ "packages": [ { "name": "automattic/jetpack-autoloader", - "version": "v2.11.6", + "version": "v2.11.7", "source": { "type": "git", "url": "https://github.com/Automattic/jetpack-autoloader.git", - "reference": "a22f41ff845b8bd4591a933b282270f57dd5bc1d" + "reference": "65170ab358aa5a8efd9de96666a46b74dc74513d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Automattic/jetpack-autoloader/zipball/a22f41ff845b8bd4591a933b282270f57dd5bc1d", - "reference": "a22f41ff845b8bd4591a933b282270f57dd5bc1d", + "url": "https://api.github.com/repos/Automattic/jetpack-autoloader/zipball/65170ab358aa5a8efd9de96666a46b74dc74513d", + "reference": "65170ab358aa5a8efd9de96666a46b74dc74513d", "shasum": "" }, "require": { "composer-plugin-api": "^1.1 || ^2.0" }, "require-dev": { - "automattic/jetpack-changelogger": "^3.1", + "automattic/jetpack-changelogger": "^3.2", "yoast/phpunit-polyfills": "1.0.3" }, "type": "composer-plugin", @@ -53,9 +53,9 @@ ], "description": "Creates a custom autoloader for a plugin or theme.", "support": { - "source": "https://github.com/Automattic/jetpack-autoloader/tree/v2.11.6" + "source": "https://github.com/Automattic/jetpack-autoloader/tree/v2.11.7" }, - "time": "2022-06-21T07:32:07+00:00" + "time": "2022-07-26T13:41:25+00:00" }, { "name": "composer/installers", From fff4733df96b069e2396e08b2558359ce01f76b8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Sep 2022 12:17:12 +0200 Subject: [PATCH 123/164] Bump core-js from 3.23.3 to 3.25.0 (#7051) Bumps [core-js](https://github.com/zloirock/core-js) from 3.23.3 to 3.25.0. - [Release notes](https://github.com/zloirock/core-js/releases) - [Changelog](https://github.com/zloirock/core-js/blob/master/CHANGELOG.md) - [Commits](https://github.com/zloirock/core-js/compare/v3.23.3...v3.25.0) --- updated-dependencies: - dependency-name: core-js dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 16 ++++++++-------- package.json | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index d14e5ca72..d9ca25074 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,7 +6,7 @@ "packages": { "": { "name": "@woocommerce/block-library", - "version": "8.4.0-dev", + "version": "8.5.0-dev", "hasInstallScript": true, "license": "GPL-3.0+", "dependencies": { @@ -111,7 +111,7 @@ "circular-dependency-plugin": "5.2.2", "commander": "9.3.0", "copy-webpack-plugin": "6.4.1", - "core-js": "3.23.3", + "core-js": "3.25.0", "create-file-webpack": "1.0.2", "cross-env": "7.0.3", "cssnano": "5.1.12", @@ -23649,9 +23649,9 @@ } }, "node_modules/core-js": { - "version": "3.23.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.23.3.tgz", - "integrity": "sha512-oAKwkj9xcWNBAvGbT//WiCdOMpb9XQG92/Fe3ABFM/R16BsHgePG00mFOgKf7IsCtfj8tA1kHtf/VwErhriz5Q==", + "version": "3.25.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.25.0.tgz", + "integrity": "sha512-CVU1xvJEfJGhyCpBrzzzU1kjCfgsGUxhEvwUV2e/cOedYWHdmluamx+knDnmhqALddMG16fZvIqvs9aijsHHaA==", "dev": true, "hasInstallScript": true, "funding": { @@ -72492,9 +72492,9 @@ } }, "core-js": { - "version": "3.23.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.23.3.tgz", - "integrity": "sha512-oAKwkj9xcWNBAvGbT//WiCdOMpb9XQG92/Fe3ABFM/R16BsHgePG00mFOgKf7IsCtfj8tA1kHtf/VwErhriz5Q==", + "version": "3.25.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.25.0.tgz", + "integrity": "sha512-CVU1xvJEfJGhyCpBrzzzU1kjCfgsGUxhEvwUV2e/cOedYWHdmluamx+knDnmhqALddMG16fZvIqvs9aijsHHaA==", "dev": true }, "core-js-compat": { diff --git a/package.json b/package.json index 59ee89dcf..f829885c8 100644 --- a/package.json +++ b/package.json @@ -158,7 +158,7 @@ "circular-dependency-plugin": "5.2.2", "commander": "9.3.0", "copy-webpack-plugin": "6.4.1", - "core-js": "3.23.3", + "core-js": "3.25.0", "create-file-webpack": "1.0.2", "cross-env": "7.0.3", "cssnano": "5.1.12", From 08db8a35ceccc95ef67ea23126c9c1783e1737d3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Sep 2022 12:34:07 +0200 Subject: [PATCH 124/164] Bump commander from 9.3.0 to 9.4.0 (#6831) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [commander](https://github.com/tj/commander.js) from 9.3.0 to 9.4.0. - [Release notes](https://github.com/tj/commander.js/releases) - [Changelog](https://github.com/tj/commander.js/blob/master/CHANGELOG.md) - [Commits](https://github.com/tj/commander.js/compare/v9.3.0...v9.4.0) --- updated-dependencies: - dependency-name: commander dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Alba Rincรณn --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index d9ca25074..0b9a0f712 100644 --- a/package-lock.json +++ b/package-lock.json @@ -109,7 +109,7 @@ "babel-plugin-transform-react-remove-prop-types": "0.4.24", "chalk": "4.1.2", "circular-dependency-plugin": "5.2.2", - "commander": "9.3.0", + "commander": "9.4.0", "copy-webpack-plugin": "6.4.1", "core-js": "3.25.0", "create-file-webpack": "1.0.2", @@ -23074,9 +23074,9 @@ "peer": true }, "node_modules/commander": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.3.0.tgz", - "integrity": "sha512-hv95iU5uXPbK83mjrJKuZyFM/LBAoCV/XhVGkS5Je6tl7sxr6A0ITMw5WoRV46/UaJ46Nllm3Xt7IaJhXTIkzw==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.0.tgz", + "integrity": "sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw==", "dev": true, "engines": { "node": "^12.20.0 || >=14" @@ -72023,9 +72023,9 @@ "peer": true }, "commander": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.3.0.tgz", - "integrity": "sha512-hv95iU5uXPbK83mjrJKuZyFM/LBAoCV/XhVGkS5Je6tl7sxr6A0ITMw5WoRV46/UaJ46Nllm3Xt7IaJhXTIkzw==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.0.tgz", + "integrity": "sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw==", "dev": true }, "comment-parser": { diff --git a/package.json b/package.json index f829885c8..c3474ddc7 100644 --- a/package.json +++ b/package.json @@ -156,7 +156,7 @@ "babel-plugin-transform-react-remove-prop-types": "0.4.24", "chalk": "4.1.2", "circular-dependency-plugin": "5.2.2", - "commander": "9.3.0", + "commander": "9.4.0", "copy-webpack-plugin": "6.4.1", "core-js": "3.25.0", "create-file-webpack": "1.0.2", From 3380a1f72855bf997d0f626857527122ffa9d217 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Sep 2022 12:51:25 +0200 Subject: [PATCH 125/164] Bump moment-timezone from 0.5.34 to 0.5.37 (#7022) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [moment-timezone](https://github.com/moment/moment-timezone) from 0.5.34 to 0.5.37. - [Release notes](https://github.com/moment/moment-timezone/releases) - [Changelog](https://github.com/moment/moment-timezone/blob/develop/changelog.md) - [Commits](https://github.com/moment/moment-timezone/compare/0.5.34...0.5.37) --- updated-dependencies: - dependency-name: moment-timezone dependency-type: indirect ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Alba Rincรณn --- package-lock.json | 226 ++-------------------------------------------- 1 file changed, 6 insertions(+), 220 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0b9a0f712..21aae163f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13194,27 +13194,6 @@ "node": ">=12" } }, - "node_modules/@woocommerce/data/node_modules/@wordpress/i18n": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.14.0.tgz", - "integrity": "sha512-46ryvPbh139RkLXQt8oey4aCcWo6HRKb1NLVHU4a4kJ4HRD/HLhAeTHKAMiZFWTg+QC1HZC32vGdEikqrpnlzQ==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.14.0", - "gettext-parser": "^1.3.1", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "sprintf-js": "^1.1.1", - "tannin": "^1.2.0" - }, - "bin": { - "pot-to-php": "tools/pot-to-php.js" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@woocommerce/data/node_modules/@wordpress/url": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-3.15.0.tgz", @@ -13509,27 +13488,6 @@ "node": ">=12" } }, - "node_modules/@woocommerce/navigation/node_modules/@wordpress/i18n": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.14.0.tgz", - "integrity": "sha512-46ryvPbh139RkLXQt8oey4aCcWo6HRKb1NLVHU4a4kJ4HRD/HLhAeTHKAMiZFWTg+QC1HZC32vGdEikqrpnlzQ==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.14.0", - "gettext-parser": "^1.3.1", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "sprintf-js": "^1.1.1", - "tannin": "^1.2.0" - }, - "bin": { - "pot-to-php": "tools/pot-to-php.js" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@woocommerce/navigation/node_modules/@wordpress/icons": { "version": "9.5.0", "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-9.5.0.tgz", @@ -13807,26 +13765,6 @@ "node": ">=12" } }, - "node_modules/@wordpress/a11y/node_modules/@wordpress/i18n": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.14.0.tgz", - "integrity": "sha512-46ryvPbh139RkLXQt8oey4aCcWo6HRKb1NLVHU4a4kJ4HRD/HLhAeTHKAMiZFWTg+QC1HZC32vGdEikqrpnlzQ==", - "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.14.0", - "gettext-parser": "^1.3.1", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "sprintf-js": "^1.1.1", - "tannin": "^1.2.0" - }, - "bin": { - "pot-to-php": "tools/pot-to-php.js" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@wordpress/api-fetch": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-6.11.0.tgz", @@ -14501,27 +14439,6 @@ "node": ">=12" } }, - "node_modules/@wordpress/core-data/node_modules/@wordpress/i18n": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.14.0.tgz", - "integrity": "sha512-46ryvPbh139RkLXQt8oey4aCcWo6HRKb1NLVHU4a4kJ4HRD/HLhAeTHKAMiZFWTg+QC1HZC32vGdEikqrpnlzQ==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.14.0", - "gettext-parser": "^1.3.1", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "sprintf-js": "^1.1.1", - "tannin": "^1.2.0" - }, - "bin": { - "pot-to-php": "tools/pot-to-php.js" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@wordpress/core-data/node_modules/@wordpress/is-shallow-equal": { "version": "4.14.0", "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-4.14.0.tgz", @@ -16931,26 +16848,6 @@ "node": ">=12" } }, - "node_modules/@wordpress/keycodes/node_modules/@wordpress/i18n": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.14.0.tgz", - "integrity": "sha512-46ryvPbh139RkLXQt8oey4aCcWo6HRKb1NLVHU4a4kJ4HRD/HLhAeTHKAMiZFWTg+QC1HZC32vGdEikqrpnlzQ==", - "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.14.0", - "gettext-parser": "^1.3.1", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "sprintf-js": "^1.1.1", - "tannin": "^1.2.0" - }, - "bin": { - "pot-to-php": "tools/pot-to-php.js" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@wordpress/notices": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/@wordpress/notices/-/notices-3.12.0.tgz", @@ -17259,26 +17156,6 @@ "node": ">=12" } }, - "node_modules/@wordpress/rich-text/node_modules/@wordpress/i18n": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.14.0.tgz", - "integrity": "sha512-46ryvPbh139RkLXQt8oey4aCcWo6HRKb1NLVHU4a4kJ4HRD/HLhAeTHKAMiZFWTg+QC1HZC32vGdEikqrpnlzQ==", - "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.14.0", - "gettext-parser": "^1.3.1", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "sprintf-js": "^1.1.1", - "tannin": "^1.2.0" - }, - "bin": { - "pot-to-php": "tools/pot-to-php.js" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@wordpress/rich-text/node_modules/@wordpress/is-shallow-equal": { "version": "4.14.0", "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-4.14.0.tgz", @@ -40551,9 +40428,9 @@ } }, "node_modules/moment-timezone": { - "version": "0.5.34", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz", - "integrity": "sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==", + "version": "0.5.37", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.37.tgz", + "integrity": "sha512-uEDzDNFhfaywRl+vwXxffjjq1q0Vzr+fcQpQ1bU0kbzorfS7zVtZnCnGc8mhWmF39d4g4YriF6kwA75mJKE/Zg==", "dependencies": { "moment": ">= 2.9.0" }, @@ -64346,21 +64223,6 @@ "react-dom": "^17.0.2" } }, - "@wordpress/i18n": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.14.0.tgz", - "integrity": "sha512-46ryvPbh139RkLXQt8oey4aCcWo6HRKb1NLVHU4a4kJ4HRD/HLhAeTHKAMiZFWTg+QC1HZC32vGdEikqrpnlzQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.14.0", - "gettext-parser": "^1.3.1", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "sprintf-js": "^1.1.1", - "tannin": "^1.2.0" - } - }, "@wordpress/url": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-3.15.0.tgz", @@ -64612,21 +64474,6 @@ "react-dom": "^17.0.2" } }, - "@wordpress/i18n": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.14.0.tgz", - "integrity": "sha512-46ryvPbh139RkLXQt8oey4aCcWo6HRKb1NLVHU4a4kJ4HRD/HLhAeTHKAMiZFWTg+QC1HZC32vGdEikqrpnlzQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.14.0", - "gettext-parser": "^1.3.1", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "sprintf-js": "^1.1.1", - "tannin": "^1.2.0" - } - }, "@wordpress/icons": { "version": "9.5.0", "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-9.5.0.tgz", @@ -64854,22 +64701,6 @@ "@babel/runtime": "^7.16.0", "@wordpress/dom-ready": "^3.14.0", "@wordpress/i18n": "^4.14.0" - }, - "dependencies": { - "@wordpress/i18n": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.14.0.tgz", - "integrity": "sha512-46ryvPbh139RkLXQt8oey4aCcWo6HRKb1NLVHU4a4kJ4HRD/HLhAeTHKAMiZFWTg+QC1HZC32vGdEikqrpnlzQ==", - "requires": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.14.0", - "gettext-parser": "^1.3.1", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "sprintf-js": "^1.1.1", - "tannin": "^1.2.0" - } - } } }, "@wordpress/api-fetch": { @@ -65435,21 +65266,6 @@ "@babel/runtime": "^7.16.0" } }, - "@wordpress/i18n": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.14.0.tgz", - "integrity": "sha512-46ryvPbh139RkLXQt8oey4aCcWo6HRKb1NLVHU4a4kJ4HRD/HLhAeTHKAMiZFWTg+QC1HZC32vGdEikqrpnlzQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.14.0", - "gettext-parser": "^1.3.1", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "sprintf-js": "^1.1.1", - "tannin": "^1.2.0" - } - }, "@wordpress/is-shallow-equal": { "version": "4.14.0", "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-4.14.0.tgz", @@ -67217,22 +67033,6 @@ "@babel/runtime": "^7.16.0", "@wordpress/i18n": "^4.14.0", "lodash": "^4.17.21" - }, - "dependencies": { - "@wordpress/i18n": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.14.0.tgz", - "integrity": "sha512-46ryvPbh139RkLXQt8oey4aCcWo6HRKb1NLVHU4a4kJ4HRD/HLhAeTHKAMiZFWTg+QC1HZC32vGdEikqrpnlzQ==", - "requires": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.14.0", - "gettext-parser": "^1.3.1", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "sprintf-js": "^1.1.1", - "tannin": "^1.2.0" - } - } } }, "@wordpress/notices": { @@ -67465,20 +67265,6 @@ "react-dom": "^17.0.2" } }, - "@wordpress/i18n": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-4.14.0.tgz", - "integrity": "sha512-46ryvPbh139RkLXQt8oey4aCcWo6HRKb1NLVHU4a4kJ4HRD/HLhAeTHKAMiZFWTg+QC1HZC32vGdEikqrpnlzQ==", - "requires": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.14.0", - "gettext-parser": "^1.3.1", - "lodash": "^4.17.21", - "memize": "^1.1.0", - "sprintf-js": "^1.1.1", - "tannin": "^1.2.0" - } - }, "@wordpress/is-shallow-equal": { "version": "4.14.0", "resolved": "https://registry.npmjs.org/@wordpress/is-shallow-equal/-/is-shallow-equal-4.14.0.tgz", @@ -85681,9 +85467,9 @@ "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" }, "moment-timezone": { - "version": "0.5.34", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz", - "integrity": "sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==", + "version": "0.5.37", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.37.tgz", + "integrity": "sha512-uEDzDNFhfaywRl+vwXxffjjq1q0Vzr+fcQpQ1bU0kbzorfS7zVtZnCnGc8mhWmF39d4g4YriF6kwA75mJKE/Zg==", "requires": { "moment": ">= 2.9.0" } From 61514db93641a2e1bb1d93254be270afcaefdc0e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Sep 2022 15:37:17 +0200 Subject: [PATCH 126/164] Bump @wordpress/dom from 3.2.7 to 3.16.0 (#7053) Bumps [@wordpress/dom](https://github.com/WordPress/gutenberg/tree/HEAD/packages/dom) from 3.2.7 to 3.16.0. - [Release notes](https://github.com/WordPress/gutenberg/releases) - [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/dom/CHANGELOG.md) - [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/dom@3.16.0/packages/dom) --- updated-dependencies: - dependency-name: "@wordpress/dom" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 204 ++-------------------------------------------- package.json | 2 +- 2 files changed, 10 insertions(+), 196 deletions(-) diff --git a/package-lock.json b/package-lock.json index 21aae163f..0a7bc11bf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -89,7 +89,7 @@ "@wordpress/components": "19.1.5", "@wordpress/data-controls": "2.2.7", "@wordpress/dependency-extraction-webpack-plugin": "3.2.1", - "@wordpress/dom": "3.2.7", + "@wordpress/dom": "3.16.0", "@wordpress/e2e-test-utils": "7.8.0", "@wordpress/e2e-tests": "4.6.0", "@wordpress/element": "4.0.4", @@ -13456,20 +13456,6 @@ "node": ">=12" } }, - "node_modules/@woocommerce/navigation/node_modules/@wordpress/dom": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.14.0.tgz", - "integrity": "sha512-U31BuODuyXsllErsURVITJNXdJGmoZoRWwnREOlxLfKZymmFFnNWvSJRqrB2ZLnUMc/qwQoX27LoK76CRl5vzQ==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/deprecated": "^3.8.0", - "lodash": "^4.17.21" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@woocommerce/navigation/node_modules/@wordpress/element": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.12.0.tgz", @@ -14036,19 +14022,6 @@ "node": ">=12" } }, - "node_modules/@wordpress/block-editor/node_modules/@wordpress/dom": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.7.0.tgz", - "integrity": "sha512-+2WFob22c3ecrZ6L4UEh/ZTSyxXlO/21dLo308HuE32fFO+3snrgZaXF2Z9aA41snh99HAcPeyuqImplOMDebw==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.16.0", - "lodash": "^4.17.21" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@wordpress/block-editor/node_modules/@wordpress/element": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.5.0.tgz", @@ -14277,18 +14250,6 @@ "react": "^17.0.0" } }, - "node_modules/@wordpress/compose/node_modules/@wordpress/dom": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.7.0.tgz", - "integrity": "sha512-+2WFob22c3ecrZ6L4UEh/ZTSyxXlO/21dLo308HuE32fFO+3snrgZaXF2Z9aA41snh99HAcPeyuqImplOMDebw==", - "dependencies": { - "@babel/runtime": "^7.16.0", - "lodash": "^4.17.21" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@wordpress/compose/node_modules/@wordpress/element": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.5.0.tgz", @@ -14395,20 +14356,6 @@ "node": ">=12" } }, - "node_modules/@wordpress/core-data/node_modules/@wordpress/dom": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.14.0.tgz", - "integrity": "sha512-U31BuODuyXsllErsURVITJNXdJGmoZoRWwnREOlxLfKZymmFFnNWvSJRqrB2ZLnUMc/qwQoX27LoK76CRl5vzQ==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/deprecated": "^3.8.0", - "lodash": "^4.17.21" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@wordpress/core-data/node_modules/@wordpress/element": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.12.0.tgz", @@ -14563,19 +14510,6 @@ "node": ">=12" } }, - "node_modules/@wordpress/data/node_modules/@wordpress/dom": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.14.0.tgz", - "integrity": "sha512-U31BuODuyXsllErsURVITJNXdJGmoZoRWwnREOlxLfKZymmFFnNWvSJRqrB2ZLnUMc/qwQoX27LoK76CRl5vzQ==", - "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/deprecated": "^3.8.0", - "lodash": "^4.17.21" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@wordpress/data/node_modules/@wordpress/element": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.12.0.tgz", @@ -14646,12 +14580,12 @@ } }, "node_modules/@wordpress/dom": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.2.7.tgz", - "integrity": "sha512-/e7sFaiwKHWmgqUFsClYw9YI6Wq/eZ1iBsxtGgqX5zrU8KyFJaziNeHDE8tTZLkiURS1vlBQm0mY6bX7Bo4CEA==", + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.16.0.tgz", + "integrity": "sha512-WOwEYXQWaZ4ZkQgL//jyB/FN33vPuFUHcr1Tc0o1T5zScNJrWVTiILokkFVv2AxqPZkrq4WhxKN9ZGRyo6VlOA==", "dependencies": { "@babel/runtime": "^7.16.0", - "lodash": "^4.17.21" + "@wordpress/deprecated": "^3.8.0" }, "engines": { "node": ">=12" @@ -16933,19 +16867,6 @@ "node": ">=12" } }, - "node_modules/@wordpress/plugins/node_modules/@wordpress/dom": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.13.0.tgz", - "integrity": "sha512-8fDWKGgAUrrJFeYm+ahlPRYzs5k2NmWNlw45SvH60nlkZjdjN5UuM8gEgVZadxNq+vCazuvSMGLesZXGuY4FRQ==", - "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/deprecated": "^3.8.0", - "lodash": "^4.17.21" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@wordpress/plugins/node_modules/@wordpress/element": { "version": "4.11.0", "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.11.0.tgz", @@ -17126,19 +17047,6 @@ "node": ">=12" } }, - "node_modules/@wordpress/rich-text/node_modules/@wordpress/dom": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.14.0.tgz", - "integrity": "sha512-U31BuODuyXsllErsURVITJNXdJGmoZoRWwnREOlxLfKZymmFFnNWvSJRqrB2ZLnUMc/qwQoX27LoK76CRl5vzQ==", - "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/deprecated": "^3.8.0", - "lodash": "^4.17.21" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@wordpress/rich-text/node_modules/@wordpress/element": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.12.0.tgz", @@ -18878,19 +18786,6 @@ "node": ">=12" } }, - "node_modules/@wordpress/server-side-render/node_modules/@wordpress/dom": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.13.0.tgz", - "integrity": "sha512-8fDWKGgAUrrJFeYm+ahlPRYzs5k2NmWNlw45SvH60nlkZjdjN5UuM8gEgVZadxNq+vCazuvSMGLesZXGuY4FRQ==", - "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/deprecated": "^3.8.0", - "lodash": "^4.17.21" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@wordpress/server-side-render/node_modules/@wordpress/element": { "version": "4.11.0", "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.11.0.tgz", @@ -64448,17 +64343,6 @@ "@wordpress/hooks": "^3.14.0" } }, - "@wordpress/dom": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.14.0.tgz", - "integrity": "sha512-U31BuODuyXsllErsURVITJNXdJGmoZoRWwnREOlxLfKZymmFFnNWvSJRqrB2ZLnUMc/qwQoX27LoK76CRl5vzQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.16.0", - "@wordpress/deprecated": "^3.8.0", - "lodash": "^4.17.21" - } - }, "@wordpress/element": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.12.0.tgz", @@ -64931,16 +64815,6 @@ } } }, - "@wordpress/dom": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.7.0.tgz", - "integrity": "sha512-+2WFob22c3ecrZ6L4UEh/ZTSyxXlO/21dLo308HuE32fFO+3snrgZaXF2Z9aA41snh99HAcPeyuqImplOMDebw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.16.0", - "lodash": "^4.17.21" - } - }, "@wordpress/element": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.5.0.tgz", @@ -65135,15 +65009,6 @@ "use-memo-one": "^1.1.1" }, "dependencies": { - "@wordpress/dom": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.7.0.tgz", - "integrity": "sha512-+2WFob22c3ecrZ6L4UEh/ZTSyxXlO/21dLo308HuE32fFO+3snrgZaXF2Z9aA41snh99HAcPeyuqImplOMDebw==", - "requires": { - "@babel/runtime": "^7.16.0", - "lodash": "^4.17.21" - } - }, "@wordpress/element": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.5.0.tgz", @@ -65231,17 +65096,6 @@ "@wordpress/hooks": "^3.14.0" } }, - "@wordpress/dom": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.14.0.tgz", - "integrity": "sha512-U31BuODuyXsllErsURVITJNXdJGmoZoRWwnREOlxLfKZymmFFnNWvSJRqrB2ZLnUMc/qwQoX27LoK76CRl5vzQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.16.0", - "@wordpress/deprecated": "^3.8.0", - "lodash": "^4.17.21" - } - }, "@wordpress/element": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.12.0.tgz", @@ -65342,16 +65196,6 @@ "@wordpress/hooks": "^3.14.0" } }, - "@wordpress/dom": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.14.0.tgz", - "integrity": "sha512-U31BuODuyXsllErsURVITJNXdJGmoZoRWwnREOlxLfKZymmFFnNWvSJRqrB2ZLnUMc/qwQoX27LoK76CRl5vzQ==", - "requires": { - "@babel/runtime": "^7.16.0", - "@wordpress/deprecated": "^3.8.0", - "lodash": "^4.17.21" - } - }, "@wordpress/element": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.12.0.tgz", @@ -65431,12 +65275,12 @@ } }, "@wordpress/dom": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.2.7.tgz", - "integrity": "sha512-/e7sFaiwKHWmgqUFsClYw9YI6Wq/eZ1iBsxtGgqX5zrU8KyFJaziNeHDE8tTZLkiURS1vlBQm0mY6bX7Bo4CEA==", + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.16.0.tgz", + "integrity": "sha512-WOwEYXQWaZ4ZkQgL//jyB/FN33vPuFUHcr1Tc0o1T5zScNJrWVTiILokkFVv2AxqPZkrq4WhxKN9ZGRyo6VlOA==", "requires": { "@babel/runtime": "^7.16.0", - "lodash": "^4.17.21" + "@wordpress/deprecated": "^3.8.0" } }, "@wordpress/dom-ready": { @@ -67094,16 +66938,6 @@ "@wordpress/hooks": "^3.13.0" } }, - "@wordpress/dom": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.13.0.tgz", - "integrity": "sha512-8fDWKGgAUrrJFeYm+ahlPRYzs5k2NmWNlw45SvH60nlkZjdjN5UuM8gEgVZadxNq+vCazuvSMGLesZXGuY4FRQ==", - "requires": { - "@babel/runtime": "^7.16.0", - "@wordpress/deprecated": "^3.8.0", - "lodash": "^4.17.21" - } - }, "@wordpress/element": { "version": "4.11.0", "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.11.0.tgz", @@ -67241,16 +67075,6 @@ "@wordpress/hooks": "^3.14.0" } }, - "@wordpress/dom": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.14.0.tgz", - "integrity": "sha512-U31BuODuyXsllErsURVITJNXdJGmoZoRWwnREOlxLfKZymmFFnNWvSJRqrB2ZLnUMc/qwQoX27LoK76CRl5vzQ==", - "requires": { - "@babel/runtime": "^7.16.0", - "@wordpress/deprecated": "^3.8.0", - "lodash": "^4.17.21" - } - }, "@wordpress/element": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.12.0.tgz", @@ -68533,16 +68357,6 @@ "@wordpress/hooks": "^3.13.0" } }, - "@wordpress/dom": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/dom/-/dom-3.13.0.tgz", - "integrity": "sha512-8fDWKGgAUrrJFeYm+ahlPRYzs5k2NmWNlw45SvH60nlkZjdjN5UuM8gEgVZadxNq+vCazuvSMGLesZXGuY4FRQ==", - "requires": { - "@babel/runtime": "^7.16.0", - "@wordpress/deprecated": "^3.8.0", - "lodash": "^4.17.21" - } - }, "@wordpress/element": { "version": "4.11.0", "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.11.0.tgz", diff --git a/package.json b/package.json index c3474ddc7..4892c8e29 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "@wordpress/components": "19.1.5", "@wordpress/data-controls": "2.2.7", "@wordpress/dependency-extraction-webpack-plugin": "3.2.1", - "@wordpress/dom": "3.2.7", + "@wordpress/dom": "3.16.0", "@wordpress/e2e-test-utils": "7.8.0", "@wordpress/e2e-tests": "4.6.0", "@wordpress/element": "4.0.4", From df3776a3f79e64ff2a11b8f627bb9b7c3048603c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 6 Sep 2022 11:23:05 +0200 Subject: [PATCH 127/164] Bump @wordpress/autop from 3.12.0 to 3.16.0 (#7063) Bumps [@wordpress/autop](https://github.com/WordPress/gutenberg/tree/HEAD/packages/autop) from 3.12.0 to 3.16.0. - [Release notes](https://github.com/WordPress/gutenberg/releases) - [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/autop/CHANGELOG.md) - [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/autop@3.16.0/packages/autop) --- updated-dependencies: - dependency-name: "@wordpress/autop" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 54 ++++++----------------------------------------- package.json | 2 +- 2 files changed, 8 insertions(+), 48 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0a7bc11bf..6599edcb5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "hasInstallScript": true, "license": "GPL-3.0+", "dependencies": { - "@wordpress/autop": "3.12.0", + "@wordpress/autop": "3.16.0", "@wordpress/compose": "5.5.0", "@wordpress/deprecated": "3.12.0", "@wordpress/icons": "6.1.1", @@ -13777,9 +13777,9 @@ } }, "node_modules/@wordpress/autop": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/@wordpress/autop/-/autop-3.12.0.tgz", - "integrity": "sha512-SWi8YzZQho47NwnYnuAsxejw33BF9MRDADIEc5l7VHuCLvL8ddfT0+b9apvovBOpMhnhvrpQBbkk99lnSMlg6g==", + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@wordpress/autop/-/autop-3.16.0.tgz", + "integrity": "sha512-cepLM41mF1h7f2JIU12XhLLfep1R0DNkI0gM2GoVzp0DlM0qSnJVuU93R75wTnR0OTija0cVVPUovt+gBWIR2Q==", "dependencies": { "@babel/runtime": "^7.16.0" }, @@ -14296,18 +14296,6 @@ "react": "^17.0.0" } }, - "node_modules/@wordpress/core-data/node_modules/@wordpress/autop": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/@wordpress/autop/-/autop-3.14.0.tgz", - "integrity": "sha512-S5QUDlg8+4YHFLx0sHJX7Gvq905LEbANQoaVGJYSF3SX2NCX9NDA3/ugWA5yKhZ7s+BpYny6or+OF7MmDFElcg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.16.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@wordpress/core-data/node_modules/@wordpress/blocks": { "version": "11.13.0", "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-11.13.0.tgz", @@ -18649,17 +18637,6 @@ "react-dom": "^17.0.0" } }, - "node_modules/@wordpress/server-side-render/node_modules/@wordpress/autop": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/autop/-/autop-3.13.0.tgz", - "integrity": "sha512-EAVrb7KuSfCBDFnGJJxD/9TVkDZEi/A1F2YSOb0X8RPS6RQNtXU76aiNyrm/G8ovJ/ElRGfSiy/+hwqZlnQo+A==", - "dependencies": { - "@babel/runtime": "^7.16.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@wordpress/server-side-render/node_modules/@wordpress/blocks": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-11.12.0.tgz", @@ -64609,9 +64586,9 @@ } }, "@wordpress/autop": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/@wordpress/autop/-/autop-3.12.0.tgz", - "integrity": "sha512-SWi8YzZQho47NwnYnuAsxejw33BF9MRDADIEc5l7VHuCLvL8ddfT0+b9apvovBOpMhnhvrpQBbkk99lnSMlg6g==", + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@wordpress/autop/-/autop-3.16.0.tgz", + "integrity": "sha512-cepLM41mF1h7f2JIU12XhLLfep1R0DNkI0gM2GoVzp0DlM0qSnJVuU93R75wTnR0OTija0cVVPUovt+gBWIR2Q==", "requires": { "@babel/runtime": "^7.16.0" } @@ -65048,15 +65025,6 @@ "uuid": "^8.3.0" }, "dependencies": { - "@wordpress/autop": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/@wordpress/autop/-/autop-3.14.0.tgz", - "integrity": "sha512-S5QUDlg8+4YHFLx0sHJX7Gvq905LEbANQoaVGJYSF3SX2NCX9NDA3/ugWA5yKhZ7s+BpYny6or+OF7MmDFElcg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.16.0" - } - }, "@wordpress/blocks": { "version": "11.13.0", "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-11.13.0.tgz", @@ -68245,14 +68213,6 @@ "lodash": "^4.17.21" }, "dependencies": { - "@wordpress/autop": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/autop/-/autop-3.13.0.tgz", - "integrity": "sha512-EAVrb7KuSfCBDFnGJJxD/9TVkDZEi/A1F2YSOb0X8RPS6RQNtXU76aiNyrm/G8ovJ/ElRGfSiy/+hwqZlnQo+A==", - "requires": { - "@babel/runtime": "^7.16.0" - } - }, "@wordpress/blocks": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-11.12.0.tgz", diff --git a/package.json b/package.json index 4892c8e29..b466bafcd 100644 --- a/package.json +++ b/package.json @@ -215,7 +215,7 @@ "npm": "^8.0.0" }, "dependencies": { - "@wordpress/autop": "3.12.0", + "@wordpress/autop": "3.16.0", "@wordpress/compose": "5.5.0", "@wordpress/deprecated": "3.12.0", "@wordpress/icons": "6.1.1", From a33a266d70ac3c4c80b19904ecbf83e92c0157de Mon Sep 17 00:00:00 2001 From: Niels Lange Date: Tue, 6 Sep 2022 16:23:58 +0700 Subject: [PATCH 128/164] Update checkout-flow-and-events.md --- .../checkout-payment-methods/checkout-flow-and-events.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/docs/third-party-developers/extensibility/checkout-payment-methods/checkout-flow-and-events.md b/docs/third-party-developers/extensibility/checkout-payment-methods/checkout-flow-and-events.md index 3e772f4c5..418460588 100644 --- a/docs/third-party-developers/extensibility/checkout-payment-methods/checkout-flow-and-events.md +++ b/docs/third-party-developers/extensibility/checkout-payment-methods/checkout-flow-and-events.md @@ -1,12 +1,8 @@ # Checkout Flow and Events -## Replaced classes +To see the Checkout Flow and Events please consult the following document: -| Removed | New class | -| ----------------------------------- | ------------------------- | -| `wc-block-components-checkout-form` | `wc-block-checkout__form` | - - +[./docs/internal-developers/block-client-apis/checkout/checkout-flow-and-events.md](../../../../docs/internal-developers/block-client-apis/checkout/checkout-flow-and-events.md) --- From 93e208f806180cefae357661a785e6b929ba250e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 6 Sep 2022 11:28:46 +0200 Subject: [PATCH 129/164] Bump wp-phpunit/wp-phpunit from 6.0.1 to 6.0.2 (#7067) Bumps [wp-phpunit/wp-phpunit](https://github.com/wp-phpunit/wp-phpunit) from 6.0.1 to 6.0.2. - [Release notes](https://github.com/wp-phpunit/wp-phpunit/releases) - [Commits](https://github.com/wp-phpunit/wp-phpunit/compare/6.0.1...6.0.2) --- updated-dependencies: - dependency-name: wp-phpunit/wp-phpunit dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/composer.lock b/composer.lock index 8ad0624b5..52c349887 100644 --- a/composer.lock +++ b/composer.lock @@ -2715,16 +2715,16 @@ }, { "name": "wp-phpunit/wp-phpunit", - "version": "6.0.1", + "version": "6.0.2", "source": { "type": "git", "url": "https://github.com/wp-phpunit/wp-phpunit.git", - "reference": "d4082280dd59add7c42d0a67400f8eb26cd790de" + "reference": "88c786f68c6abe1061f9e40f5e8b299e41a50287" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wp-phpunit/wp-phpunit/zipball/d4082280dd59add7c42d0a67400f8eb26cd790de", - "reference": "d4082280dd59add7c42d0a67400f8eb26cd790de", + "url": "https://api.github.com/repos/wp-phpunit/wp-phpunit/zipball/88c786f68c6abe1061f9e40f5e8b299e41a50287", + "reference": "88c786f68c6abe1061f9e40f5e8b299e41a50287", "shasum": "" }, "type": "library", @@ -2759,7 +2759,7 @@ "issues": "https://github.com/wp-phpunit/issues", "source": "https://github.com/wp-phpunit/wp-phpunit" }, - "time": "2022-07-12T22:10:08+00:00" + "time": "2022-08-30T21:14:52+00:00" }, { "name": "yoast/phpunit-polyfills", From 788e8a5faf8eccd29f87868fe302b5c469d484d0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 6 Sep 2022 11:44:10 +0200 Subject: [PATCH 130/164] Bump @wordpress/deprecated from 3.12.0 to 3.16.0 (#7065) Bumps [@wordpress/deprecated](https://github.com/WordPress/gutenberg/tree/HEAD/packages/deprecated) from 3.12.0 to 3.16.0. - [Release notes](https://github.com/WordPress/gutenberg/releases) - [Changelog](https://github.com/WordPress/gutenberg/blob/trunk/packages/deprecated/CHANGELOG.md) - [Commits](https://github.com/WordPress/gutenberg/commits/@wordpress/deprecated@3.16.0/packages/deprecated) --- updated-dependencies: - dependency-name: "@wordpress/deprecated" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 183 ++++------------------------------------------ package.json | 2 +- 2 files changed, 16 insertions(+), 169 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6599edcb5..770a59204 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "dependencies": { "@wordpress/autop": "3.16.0", "@wordpress/compose": "5.5.0", - "@wordpress/deprecated": "3.12.0", + "@wordpress/deprecated": "3.16.0", "@wordpress/icons": "6.1.1", "@wordpress/notices": "3.12.0", "@wordpress/plugins": "4.10.0", @@ -13163,19 +13163,6 @@ "react": "^17.0.0" } }, - "node_modules/@woocommerce/data/node_modules/@wordpress/deprecated": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.14.0.tgz", - "integrity": "sha512-Nvx2/sLjzeIcIAJTBwmYxJ1yKkWd+yfZze1bByPkhndo+y0ImNap3NUrl+inOgtNbZiVkj9QafmaCwaogjp9xQ==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.14.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@woocommerce/data/node_modules/@wordpress/element": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.12.0.tgz", @@ -13443,19 +13430,6 @@ "react": "^17.0.0" } }, - "node_modules/@woocommerce/navigation/node_modules/@wordpress/deprecated": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.14.0.tgz", - "integrity": "sha512-Nvx2/sLjzeIcIAJTBwmYxJ1yKkWd+yfZze1bByPkhndo+y0ImNap3NUrl+inOgtNbZiVkj9QafmaCwaogjp9xQ==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.14.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@woocommerce/navigation/node_modules/@wordpress/element": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.12.0.tgz", @@ -14331,19 +14305,6 @@ "react": "^17.0.0" } }, - "node_modules/@wordpress/core-data/node_modules/@wordpress/deprecated": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.14.0.tgz", - "integrity": "sha512-Nvx2/sLjzeIcIAJTBwmYxJ1yKkWd+yfZze1bByPkhndo+y0ImNap3NUrl+inOgtNbZiVkj9QafmaCwaogjp9xQ==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.14.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@wordpress/core-data/node_modules/@wordpress/element": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.12.0.tgz", @@ -14486,18 +14447,6 @@ "react": "^17.0.0" } }, - "node_modules/@wordpress/data/node_modules/@wordpress/deprecated": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.14.0.tgz", - "integrity": "sha512-Nvx2/sLjzeIcIAJTBwmYxJ1yKkWd+yfZze1bByPkhndo+y0ImNap3NUrl+inOgtNbZiVkj9QafmaCwaogjp9xQ==", - "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.14.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@wordpress/data/node_modules/@wordpress/element": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.12.0.tgz", @@ -14556,12 +14505,12 @@ } }, "node_modules/@wordpress/deprecated": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.12.0.tgz", - "integrity": "sha512-sep+c2jFwAZ4HTtPgIbNLC0YTz3q9gCH3A82XwY/krkvxhNk3g+mXxPUI2dUoxp7RAeeckqDtKosPvvpqUZWiQ==", + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.16.0.tgz", + "integrity": "sha512-/lCISYhy1l4N4HdGB8vKtPRYcvlLL+Lo/luwxgWzDxV+GkIlva6mZvEwsSd/Ocd5NXzR496V6+AKREDOyfJgiQ==", "dependencies": { "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.12.0" + "@wordpress/hooks": "^3.16.0" }, "engines": { "node": ">=12" @@ -16573,9 +16522,9 @@ } }, "node_modules/@wordpress/hooks": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-3.14.0.tgz", - "integrity": "sha512-bcQXql4A1VI6gnTdNzMjdHLGTpnf8oWOQ1r8B8fcvtOF3dKictxJPobarWxFbtVTQoegizZT/lPCMoLsnVJpug==", + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-3.16.0.tgz", + "integrity": "sha512-KpY8KFp2/3TX6lKmffNmdkeaH9c4CN1iJ8SiCufjGgRCnVWmWe/HcEJ5OjhUvBnRkhsLMY7pvlXMU8Mh7nLxyA==", "dependencies": { "@babel/runtime": "^7.16.0" }, @@ -16843,18 +16792,6 @@ "react": "^17.0.0" } }, - "node_modules/@wordpress/plugins/node_modules/@wordpress/deprecated": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.13.0.tgz", - "integrity": "sha512-0k0/h5Y9a7bb5HEDK9yJI+NBVrO/YyGcnI87DIgMVXTysykRf78qQq4CUvFh8roo1aOAFIUQDYQrJttkbbWyhw==", - "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.13.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@wordpress/plugins/node_modules/@wordpress/element": { "version": "4.11.0", "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.11.0.tgz", @@ -17023,18 +16960,6 @@ "react": "^17.0.0" } }, - "node_modules/@wordpress/rich-text/node_modules/@wordpress/deprecated": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.14.0.tgz", - "integrity": "sha512-Nvx2/sLjzeIcIAJTBwmYxJ1yKkWd+yfZze1bByPkhndo+y0ImNap3NUrl+inOgtNbZiVkj9QafmaCwaogjp9xQ==", - "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.14.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@wordpress/rich-text/node_modules/@wordpress/element": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.12.0.tgz", @@ -18751,18 +18676,6 @@ "react": "^17.0.0" } }, - "node_modules/@wordpress/server-side-render/node_modules/@wordpress/deprecated": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.13.0.tgz", - "integrity": "sha512-0k0/h5Y9a7bb5HEDK9yJI+NBVrO/YyGcnI87DIgMVXTysykRf78qQq4CUvFh8roo1aOAFIUQDYQrJttkbbWyhw==", - "dependencies": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.13.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@wordpress/server-side-render/node_modules/@wordpress/element": { "version": "4.11.0", "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.11.0.tgz", @@ -64070,16 +63983,6 @@ "@wordpress/deprecated": "^3.14.0" } }, - "@wordpress/deprecated": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.14.0.tgz", - "integrity": "sha512-Nvx2/sLjzeIcIAJTBwmYxJ1yKkWd+yfZze1bByPkhndo+y0ImNap3NUrl+inOgtNbZiVkj9QafmaCwaogjp9xQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.14.0" - } - }, "@wordpress/element": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.12.0.tgz", @@ -64310,16 +64213,6 @@ "use-memo-one": "^1.1.1" } }, - "@wordpress/deprecated": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.14.0.tgz", - "integrity": "sha512-Nvx2/sLjzeIcIAJTBwmYxJ1yKkWd+yfZze1bByPkhndo+y0ImNap3NUrl+inOgtNbZiVkj9QafmaCwaogjp9xQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.14.0" - } - }, "@wordpress/element": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.12.0.tgz", @@ -65054,16 +64947,6 @@ "uuid": "^8.3.0" } }, - "@wordpress/deprecated": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.14.0.tgz", - "integrity": "sha512-Nvx2/sLjzeIcIAJTBwmYxJ1yKkWd+yfZze1bByPkhndo+y0ImNap3NUrl+inOgtNbZiVkj9QafmaCwaogjp9xQ==", - "dev": true, - "requires": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.14.0" - } - }, "@wordpress/element": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.12.0.tgz", @@ -65155,15 +65038,6 @@ "use-memo-one": "^1.1.1" } }, - "@wordpress/deprecated": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.14.0.tgz", - "integrity": "sha512-Nvx2/sLjzeIcIAJTBwmYxJ1yKkWd+yfZze1bByPkhndo+y0ImNap3NUrl+inOgtNbZiVkj9QafmaCwaogjp9xQ==", - "requires": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.14.0" - } - }, "@wordpress/element": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.12.0.tgz", @@ -65234,12 +65108,12 @@ } }, "@wordpress/deprecated": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.12.0.tgz", - "integrity": "sha512-sep+c2jFwAZ4HTtPgIbNLC0YTz3q9gCH3A82XwY/krkvxhNk3g+mXxPUI2dUoxp7RAeeckqDtKosPvvpqUZWiQ==", + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.16.0.tgz", + "integrity": "sha512-/lCISYhy1l4N4HdGB8vKtPRYcvlLL+Lo/luwxgWzDxV+GkIlva6mZvEwsSd/Ocd5NXzR496V6+AKREDOyfJgiQ==", "requires": { "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.12.0" + "@wordpress/hooks": "^3.16.0" } }, "@wordpress/dom": { @@ -66709,9 +66583,9 @@ } }, "@wordpress/hooks": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-3.14.0.tgz", - "integrity": "sha512-bcQXql4A1VI6gnTdNzMjdHLGTpnf8oWOQ1r8B8fcvtOF3dKictxJPobarWxFbtVTQoegizZT/lPCMoLsnVJpug==", + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-3.16.0.tgz", + "integrity": "sha512-KpY8KFp2/3TX6lKmffNmdkeaH9c4CN1iJ8SiCufjGgRCnVWmWe/HcEJ5OjhUvBnRkhsLMY7pvlXMU8Mh7nLxyA==", "requires": { "@babel/runtime": "^7.16.0" } @@ -66897,15 +66771,6 @@ "use-memo-one": "^1.1.1" } }, - "@wordpress/deprecated": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.13.0.tgz", - "integrity": "sha512-0k0/h5Y9a7bb5HEDK9yJI+NBVrO/YyGcnI87DIgMVXTysykRf78qQq4CUvFh8roo1aOAFIUQDYQrJttkbbWyhw==", - "requires": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.13.0" - } - }, "@wordpress/element": { "version": "4.11.0", "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.11.0.tgz", @@ -67034,15 +66899,6 @@ "use-memo-one": "^1.1.1" } }, - "@wordpress/deprecated": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.14.0.tgz", - "integrity": "sha512-Nvx2/sLjzeIcIAJTBwmYxJ1yKkWd+yfZze1bByPkhndo+y0ImNap3NUrl+inOgtNbZiVkj9QafmaCwaogjp9xQ==", - "requires": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.14.0" - } - }, "@wordpress/element": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.12.0.tgz", @@ -68308,15 +68164,6 @@ "use-memo-one": "^1.1.1" } }, - "@wordpress/deprecated": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/@wordpress/deprecated/-/deprecated-3.13.0.tgz", - "integrity": "sha512-0k0/h5Y9a7bb5HEDK9yJI+NBVrO/YyGcnI87DIgMVXTysykRf78qQq4CUvFh8roo1aOAFIUQDYQrJttkbbWyhw==", - "requires": { - "@babel/runtime": "^7.16.0", - "@wordpress/hooks": "^3.13.0" - } - }, "@wordpress/element": { "version": "4.11.0", "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-4.11.0.tgz", diff --git a/package.json b/package.json index b466bafcd..81fe450e5 100644 --- a/package.json +++ b/package.json @@ -217,7 +217,7 @@ "dependencies": { "@wordpress/autop": "3.16.0", "@wordpress/compose": "5.5.0", - "@wordpress/deprecated": "3.12.0", + "@wordpress/deprecated": "3.16.0", "@wordpress/icons": "6.1.1", "@wordpress/notices": "3.12.0", "@wordpress/plugins": "4.10.0", From ed3abbe7fcc2583c2bc49bc70e5f5cc4b8961d20 Mon Sep 17 00:00:00 2001 From: Tom Cafferkey Date: Tue, 6 Sep 2022 10:52:33 +0100 Subject: [PATCH 131/164] Fix corrupt Classic Template placeholders for specific products. (#7033) * If user has created a template for a specific product, find the closest matching template details * Move Classic Template functions into Utils file and refactor function for specific template names * Classic Template utils refactor and unit tests --- .../js/blocks/classic-template/constants.ts | 8 ++- assets/js/blocks/classic-template/index.tsx | 50 ++++++++++--------- .../js/blocks/classic-template/test/utils.ts | 47 +++++++++++++++++ assets/js/blocks/classic-template/types.ts | 1 + assets/js/blocks/classic-template/utils.ts | 49 ++++++++++++++++++ 5 files changed, 129 insertions(+), 26 deletions(-) create mode 100644 assets/js/blocks/classic-template/test/utils.ts create mode 100644 assets/js/blocks/classic-template/types.ts create mode 100644 assets/js/blocks/classic-template/utils.ts diff --git a/assets/js/blocks/classic-template/constants.ts b/assets/js/blocks/classic-template/constants.ts index f75f9f78b..dfeb37b33 100644 --- a/assets/js/blocks/classic-template/constants.ts +++ b/assets/js/blocks/classic-template/constants.ts @@ -2,10 +2,14 @@ * External dependencies */ import { __ } from '@wordpress/i18n'; - export const BLOCK_SLUG = 'woocommerce/legacy-template'; -export const TEMPLATES: Record< string, Record< string, string > > = { +/** + * Internal dependencies + */ +import { TemplateDetails } from './types'; + +export const TEMPLATES: TemplateDetails = { 'single-product': { title: __( 'WooCommerce Single Product Block', diff --git a/assets/js/blocks/classic-template/index.tsx b/assets/js/blocks/classic-template/index.tsx index 2bbf623b1..18bf8237e 100644 --- a/assets/js/blocks/classic-template/index.tsx +++ b/assets/js/blocks/classic-template/index.tsx @@ -2,7 +2,6 @@ * External dependencies */ import { - Block, BlockEditProps, createBlock, getBlockType, @@ -26,6 +25,11 @@ import { useEffect } from '@wordpress/element'; import './editor.scss'; import './style.scss'; import { BLOCK_SLUG, TEMPLATES } from './constants'; +import { + isClassicTemplateBlockRegisteredWithAnotherTitle, + hasTemplateSupportForClassicTemplateBlock, + getTemplateDetailsBySlug, +} from './utils'; type Attributes = { template: string; @@ -40,10 +44,12 @@ const Edit = ( { const { replaceBlock } = useDispatch( 'core/block-editor' ); const blockProps = useBlockProps(); - const templateTitle = - TEMPLATES[ attributes.template ]?.title ?? attributes.template; - const templatePlaceholder = - TEMPLATES[ attributes.template ]?.placeholder ?? 'fallback'; + const templateDetails = getTemplateDetailsBySlug( + attributes.template, + TEMPLATES + ); + const templateTitle = templateDetails?.title ?? attributes.template; + const templatePlaceholder = templateDetails?.placeholder ?? 'fallback'; useEffect( () => @@ -118,8 +124,6 @@ const Edit = ( { ); }; -const templates = Object.keys( TEMPLATES ); - const registerClassicTemplateBlock = ( { template, inserter, @@ -136,12 +140,13 @@ const registerClassicTemplateBlock = ( { * See https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/5861 for more context */ registerBlockType( BLOCK_SLUG, { - title: template - ? TEMPLATES[ template ].title - : __( - 'WooCommerce Classic Template', - 'woo-gutenberg-products-block' - ), + title: + template && TEMPLATES[ template ] + ? TEMPLATES[ template ].title + : __( + 'WooCommerce Classic Template', + 'woo-gutenberg-products-block' + ), icon: ( | undefined, - parsedTemplate: string -) => block?.title !== TEMPLATES[ parsedTemplate ].title; - -const hasTemplateSupportForClassicTemplateBlock = ( parsedTemplate: string ) => - templates.includes( parsedTemplate ); - // @todo Refactor when there will be possible to show a block according on a template/post with a Gutenberg API. https://github.com/WordPress/gutenberg/pull/41718 let currentTemplateId: string | undefined; @@ -235,7 +231,10 @@ if ( isExperimentalBuild() ) { if ( block !== undefined && - ( ! hasTemplateSupportForClassicTemplateBlock( parsedTemplate ) || + ( ! hasTemplateSupportForClassicTemplateBlock( + parsedTemplate, + TEMPLATES + ) || isClassicTemplateBlockRegisteredWithAnotherTitle( block, parsedTemplate @@ -248,7 +247,10 @@ if ( isExperimentalBuild() ) { if ( block === undefined && - hasTemplateSupportForClassicTemplateBlock( parsedTemplate ) + hasTemplateSupportForClassicTemplateBlock( + parsedTemplate, + TEMPLATES + ) ) { registerClassicTemplateBlock( { template: parsedTemplate, diff --git a/assets/js/blocks/classic-template/test/utils.ts b/assets/js/blocks/classic-template/test/utils.ts new file mode 100644 index 000000000..8f413c21a --- /dev/null +++ b/assets/js/blocks/classic-template/test/utils.ts @@ -0,0 +1,47 @@ +/** + * Internal dependencies + */ +import { getTemplateDetailsBySlug } from '../utils'; + +const TEMPLATES = { + 'single-product': { + title: 'Single Product Title', + placeholder: 'Single Product Placeholder', + }, + 'archive-product': { + title: 'Product Archive Title', + placeholder: 'Product Archive Placeholder', + }, + 'archive-product': { + title: 'Product Archive Title', + placeholder: 'Product Archive Placeholder', + }, + 'taxonomy-product_cat': { + title: 'Product Taxonomy Title', + placeholder: 'Product Taxonomy Placeholder', + }, +}; + +describe( 'getTemplateDetailsBySlug', function () { + it( 'should return single-product object when given an exact match', () => { + expect( + getTemplateDetailsBySlug( 'single-product', TEMPLATES ) + ).toBeTruthy(); + expect( + getTemplateDetailsBySlug( 'single-product', TEMPLATES ) + ).toStrictEqual( TEMPLATES[ 'single-product' ] ); + } ); + + it( 'should return single-product object when given a partial match', () => { + expect( + getTemplateDetailsBySlug( 'single-product-hoodie', TEMPLATES ) + ).toBeTruthy(); + expect( + getTemplateDetailsBySlug( 'single-product-hoodie', TEMPLATES ) + ).toStrictEqual( TEMPLATES[ 'single-product' ] ); + } ); + + it( 'should return null object when given an incorrect match', () => { + expect( getTemplateDetailsBySlug( 'void', TEMPLATES ) ).toBeNull(); + } ); +} ); diff --git a/assets/js/blocks/classic-template/types.ts b/assets/js/blocks/classic-template/types.ts new file mode 100644 index 000000000..3e28296b6 --- /dev/null +++ b/assets/js/blocks/classic-template/types.ts @@ -0,0 +1 @@ +export type TemplateDetails = Record< string, Record< string, string > >; diff --git a/assets/js/blocks/classic-template/utils.ts b/assets/js/blocks/classic-template/utils.ts new file mode 100644 index 000000000..76a31299b --- /dev/null +++ b/assets/js/blocks/classic-template/utils.ts @@ -0,0 +1,49 @@ +/** + * External dependencies + */ +import { Block } from '@wordpress/blocks'; + +/** + * Internal dependencies + */ +import { TEMPLATES } from './constants'; +import { TemplateDetails } from './types'; + +// Finds the most appropriate template details object for specific template keys such as single-product-hoodie. +export function getTemplateDetailsBySlug( + parsedTemplate: string, + templates: TemplateDetails +) { + const templateKeys = Object.keys( templates ); + let templateDetails = null; + + for ( let i = 0; templateKeys.length > i; i++ ) { + const keyToMatch = parsedTemplate.substr( 0, templateKeys[ i ].length ); + const maybeTemplate = templates[ keyToMatch ]; + if ( maybeTemplate ) { + templateDetails = maybeTemplate; + break; + } + } + + return templateDetails; +} + +export function isClassicTemplateBlockRegisteredWithAnotherTitle( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + block: Block< any > | undefined, + parsedTemplate: string +) { + const templateDetails = getTemplateDetailsBySlug( + parsedTemplate, + TEMPLATES + ); + return block?.title !== templateDetails?.title; +} + +export function hasTemplateSupportForClassicTemplateBlock( + parsedTemplate: string, + templates: TemplateDetails +): boolean { + return getTemplateDetailsBySlug( parsedTemplate, templates ) ? true : false; +} From 6e8b5711bc1ac6ad6611799c89ec033e3b822e4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alba=20Rinc=C3=B3n?= Date: Tue, 6 Sep 2022 15:17:11 +0200 Subject: [PATCH 132/164] Update `filter by attribute` skeleton design (#6990) * Update filter by attribute skeleton design * Update filter by attribute skeleton design * Start using the FilterTitlePlaceholder * Fix title animation * Show two placeholder lines on checkboxes * Fix dropdown border * Fix gap * Fix border radius for dropdown * Don't show placeholder when changing other filters * Improve filter title margins --- .../components/filter-placeholder/style.scss | 4 +- assets/js/blocks/attribute-filter/block.tsx | 62 ++++++++++++------- .../attribute-filter/checkbox-filter.tsx | 47 ++++++++++++++ assets/js/blocks/attribute-filter/style.scss | 26 +++++++- assets/js/blocks/price-filter/style.scss | 5 ++ assets/js/blocks/stock-filter/style.scss | 6 ++ 6 files changed, 125 insertions(+), 25 deletions(-) create mode 100644 assets/js/blocks/attribute-filter/checkbox-filter.tsx diff --git a/assets/js/base/components/filter-placeholder/style.scss b/assets/js/base/components/filter-placeholder/style.scss index 43ef138eb..e2a99a382 100644 --- a/assets/js/base/components/filter-placeholder/style.scss +++ b/assets/js/base/components/filter-placeholder/style.scss @@ -3,7 +3,6 @@ background-color: $gray-400 !important; border-radius: em(26px); box-shadow: none; - margin-bottom: $gap; min-width: 80px; max-width: max-content !important; @@ -12,7 +11,8 @@ } .wc-block-stock-filter__title, - .wc-block-price-filter__title { + .wc-block-price-filter__title, + .wc-block-attribute-filter__title { margin: 0; height: 1em; } diff --git a/assets/js/blocks/attribute-filter/block.tsx b/assets/js/blocks/attribute-filter/block.tsx index 5080ebf3c..ceebbfd4a 100644 --- a/assets/js/blocks/attribute-filter/block.tsx +++ b/assets/js/blocks/attribute-filter/block.tsx @@ -14,7 +14,6 @@ import { useCollectionData, } from '@woocommerce/base-context/hooks'; import { useCallback, useEffect, useState, useMemo } from '@wordpress/element'; -import CheckboxList from '@woocommerce/base-components/checkbox-list'; import Label from '@woocommerce/base-components/filter-element-label'; import FilterResetButton from '@woocommerce/base-components/filter-reset-button'; import FilterSubmitButton from '@woocommerce/base-components/filter-submit-button'; @@ -38,7 +37,8 @@ import { } from '@woocommerce/utils'; import { difference } from 'lodash'; import FormTokenField from '@woocommerce/base-components/form-token-field'; -import classNames from 'classnames'; +import FilterTitlePlaceholder from '@woocommerce/base-components/filter-placeholder'; +import classnames from 'classnames'; /** * Internal dependencies @@ -57,6 +57,7 @@ import { generateUniqueId, } from './utils'; import { BlockAttributes, DisplayOption } from './types'; +import CheckboxFilter from './checkbox-filter'; /** * Formats filter values into a string for the URL parameters needed for filtering PHP templates. @@ -237,6 +238,7 @@ const AttributeFilterBlock = ( { .filter( ( option ): option is DisplayOption => !! option ); setDisplayedOptions( newOptions ); + setRemountKey( generateUniqueId() ); }, [ attributeObject?.taxonomy, attributeTerms, @@ -500,32 +502,48 @@ const AttributeFilterBlock = ( { ); } - return null; } const TagName = `h${ blockAttributes.headingLevel }` as keyof JSX.IntrinsicElements; - const isLoading = ! blockAttributes.isPreview && attributeTermsLoading; - const isDisabled = ! blockAttributes.isPreview && filteredCountsLoading; + const termsLoading = ! blockAttributes.isPreview && attributeTermsLoading; + const countsLoading = ! blockAttributes.isPreview && filteredCountsLoading; + + const isLoading = + ( termsLoading || countsLoading ) && displayedOptions.length === 0; + + if ( ! isLoading && displayedOptions.length === 0 ) { + return null; + } + + const heading = ( + + { blockAttributes.heading } + + ); + + const filterHeading = isLoading ? ( + { heading } + ) : ( + heading + ); return ( <> - { ! isEditor && - blockAttributes.heading && - displayedOptions.length > 0 && ( - - { blockAttributes.heading } - - ) } + { ! isEditor && blockAttributes.heading && filterHeading }
      { blockAttributes.displayStyle === 'dropdown' ? ( <> option.formattedValue ) } - disabled={ isDisabled } + disabled={ isLoading } placeholder={ sprintf( /* translators: %s attribute name. */ __( @@ -625,18 +643,18 @@ const AttributeFilterBlock = ( { ) } ) : ( - ) }
      +
      - { checked.length > 0 && ( + { checked.length > 0 && ! isLoading && ( { setChecked( [] ); @@ -651,11 +669,13 @@ const AttributeFilterBlock = ( { ) } /> ) } - { blockAttributes.showFilterButton && ( + { blockAttributes.showFilterButton && ! isLoading && ( onSubmit( checked ) } /> diff --git a/assets/js/blocks/attribute-filter/checkbox-filter.tsx b/assets/js/blocks/attribute-filter/checkbox-filter.tsx new file mode 100644 index 000000000..89a797009 --- /dev/null +++ b/assets/js/blocks/attribute-filter/checkbox-filter.tsx @@ -0,0 +1,47 @@ +/** + * External dependencies + */ +import CheckboxList from '@woocommerce/base-components/checkbox-list'; +/** + * Internal dependencies + */ +import { DisplayOption } from './types'; + +interface CheckboxFilterProps { + className?: string; + isLoading?: boolean; + isDisabled?: boolean; + limit?: number; + checked?: string[]; + onChange: ( value: string ) => void; + options?: DisplayOption[]; +} + +const CheckboxFilter = ( { + isLoading = false, + options, + checked, + onChange, +}: CheckboxFilterProps ) => { + if ( isLoading ) { + return ( + <> + + + + ); + } + + return ( + + ); +}; + +export default CheckboxFilter; diff --git a/assets/js/blocks/attribute-filter/style.scss b/assets/js/blocks/attribute-filter/style.scss index b102bcf0a..c081a4049 100644 --- a/assets/js/blocks/attribute-filter/style.scss +++ b/assets/js/blocks/attribute-filter/style.scss @@ -11,6 +11,11 @@ h6 { text-transform: inherit; } + + .wc-block-attribute-filter__title { + margin-top: $gap-small; + margin-bottom: $gap-small; + } } .wc-block-attribute-filter { @@ -18,12 +23,19 @@ border-radius: inherit; border-color: inherit; + .show-loading-state { + @include placeholder(); + box-shadow: none; + border-radius: 0; + margin-bottom: $gap; + margin-top: $gap; + height: 1em; + } + &.style-dropdown { position: relative; display: flex; gap: $gap; - border: 1px solid $gray-700; - border-radius: 4px; align-items: flex-start; .wc-block-components-filter-submit-button { @@ -59,6 +71,16 @@ flex-grow: 1; max-width: unset; width: 0; + height: max-content; + + &:not(.show-loading-state) { + border: 1px solid $gray-700 !important; + border-radius: 4px; + } + + &.show-loading-state { + border-radius: em(4px); + } } .is-single .wc-block-attribute-filter-list-count, diff --git a/assets/js/blocks/price-filter/style.scss b/assets/js/blocks/price-filter/style.scss index 1aa0bc92f..002703d27 100644 --- a/assets/js/blocks/price-filter/style.scss +++ b/assets/js/blocks/price-filter/style.scss @@ -11,6 +11,11 @@ h6 { text-transform: inherit; } + + .wc-block-price-filter__title { + margin-top: $gap-small; + margin-bottom: $gap-small; + } } .wc-block-price-slider { diff --git a/assets/js/blocks/stock-filter/style.scss b/assets/js/blocks/stock-filter/style.scss index d9df3e264..730444006 100644 --- a/assets/js/blocks/stock-filter/style.scss +++ b/assets/js/blocks/stock-filter/style.scss @@ -7,11 +7,17 @@ h6 { text-transform: inherit; } + + .wc-block-stock-filter__title { + margin-top: $gap-small; + margin-bottom: $gap-small; + } } .wc-block-stock-filter { &.show-loading-state { @include placeholder(); + margin-top: $gap; box-shadow: none; border-radius: 0; } From 9f9acf943a8fad682428fd6ab2201910379c0c81 Mon Sep 17 00:00:00 2001 From: Luigi Teschio Date: Tue, 6 Sep 2022 16:23:15 +0200 Subject: [PATCH 133/164] Add default value to parameter #7060 (#7074) add default value to parameter --- src/BlockTypes/AbstractBlock.php | 4 ++-- src/BlockTypes/AbstractProductGrid.php | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/BlockTypes/AbstractBlock.php b/src/BlockTypes/AbstractBlock.php index ed8cb459c..fe5b963cf 100644 --- a/src/BlockTypes/AbstractBlock.php +++ b/src/BlockTypes/AbstractBlock.php @@ -76,10 +76,10 @@ public function __construct( AssetApi $asset_api, AssetDataRegistry $asset_data_ * * @param array|WP_Block $attributes Block attributes, or an instance of a WP_Block. Defaults to an empty array. * @param string $content Block content. Default empty string. - * @param WP_Block $block Block instance. + * @param WP_Block|null $block Block instance. * @return string Rendered block type output. */ - public function render_callback( $attributes = [], $content = '', $block ) { + public function render_callback( $attributes = [], $content = '', $block = null ) { $render_callback_attributes = $this->parse_render_callback_attributes( $attributes ); if ( ! is_admin() && ! WC()->is_rest_api_request() ) { diff --git a/src/BlockTypes/AbstractProductGrid.php b/src/BlockTypes/AbstractProductGrid.php index 8b9220a34..451b0ad80 100644 --- a/src/BlockTypes/AbstractProductGrid.php +++ b/src/BlockTypes/AbstractProductGrid.php @@ -67,12 +67,12 @@ protected function get_block_type_attributes() { /** * Include and render the dynamic block. * - * @param array $attributes Block attributes. Default empty array. - * @param string $content Block content. Default empty string. - * @param WP_Block $block Block instance. + * @param array $attributes Block attributes. Default empty array. + * @param string $content Block content. Default empty string. + * @param WP_Block|null $block Block instance. * @return string Rendered block type output. */ - protected function render( $attributes = array(), $content = '', $block ) { + protected function render( $attributes = array(), $content = '', $block = null ) { $this->attributes = $this->parse_attributes( $attributes ); $this->content = $content; $this->query_args = $this->parse_query_args(); From d0e41b6e6ecaf9b6f0edb33625d9a3126d517c52 Mon Sep 17 00:00:00 2001 From: Tarun Vijwani Date: Wed, 7 Sep 2022 15:49:10 +0530 Subject: [PATCH 134/164] Add steps to retrieve products variations in Store API docs (#7076) --- src/StoreApi/docs/products.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/StoreApi/docs/products.md b/src/StoreApi/docs/products.md index 6e5eeeee2..465adb6f9 100644 --- a/src/StoreApi/docs/products.md +++ b/src/StoreApi/docs/products.md @@ -191,6 +191,14 @@ curl "https://example-store.com/wp-json/wc/store/v1/products/34" } ``` +## Product Variations + +By default, Store API excludes product variations. You can retrieve the variations for a product by using the `type=variation`. + +```sh +curl "https://example-store.com/wp-json/wc/store/v1/products?type=variation" +``` + --- From 8bef0791191615d0ae5e6161d6a6018330a69e60 Mon Sep 17 00:00:00 2001 From: Luigi Teschio Date: Wed, 7 Sep 2022 14:05:01 +0200 Subject: [PATCH 135/164] Replace 'gutenberg_build_query_vars_from_query_block' filter with 'query_loop_block_query_vars' filter (#7078) --- src/BlockTypes/ProductQuery.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/BlockTypes/ProductQuery.php b/src/BlockTypes/ProductQuery.php index cedc19993..2b39c2319 100644 --- a/src/BlockTypes/ProductQuery.php +++ b/src/BlockTypes/ProductQuery.php @@ -40,7 +40,7 @@ protected function initialize() { /** * Remove the query block filter and parse the custom query * - * This function is supposed to be called by the `gutenberg_build_query_vars_from_query_block` + * This function is supposed to be called by the `query_loop_block_query_vars` * filter. It de-registers the filter to make sure it runs only once and doesn't end * up hi-jacking future Query Loop blocks. * @@ -51,7 +51,7 @@ protected function initialize() { */ public function get_query_by_attributes_once( $query ) { remove_filter( - 'gutenberg_build_query_vars_from_query_block', + 'query_loop_block_query_vars', array( $this, 'get_query_by_attributes_once' ), 10 ); @@ -73,7 +73,7 @@ public function update_query( $pre_render, $parsed_block ) { $this->parsed_block = $parsed_block; add_filter( - 'gutenberg_build_query_vars_from_query_block', + 'query_loop_block_query_vars', array( $this, 'get_query_by_attributes_once' ), 10, 1 From e6ed0f681416dbcf01a8c49379bfc9d314d090e0 Mon Sep 17 00:00:00 2001 From: Paulo Arromba <17236129+wavvves@users.noreply.github.com> Date: Wed, 7 Sep 2022 13:55:15 +0100 Subject: [PATCH 136/164] Suppress unnecessary warnings for old namespace aliasing (#7046) * Aliasing classes in deprecated.php now checks for prior alias declaration to suppress unnecessary warnings. --- src/StoreApi/deprecated.php | 126 +++++++++++++++++++----------------- 1 file changed, 68 insertions(+), 58 deletions(-) diff --git a/src/StoreApi/deprecated.php b/src/StoreApi/deprecated.php index ca9fffbf4..ffb9f613a 100644 --- a/src/StoreApi/deprecated.php +++ b/src/StoreApi/deprecated.php @@ -5,63 +5,73 @@ * This file is autoloaded via composer.json and maps the old namespaces to new namespaces. */ -// Map old to new namespaces for utils and exceptions. -class_alias( Automattic\WooCommerce\StoreApi\Exceptions\RouteException::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\RouteException::class ); -class_alias( Automattic\WooCommerce\StoreApi\Schemas\ExtendSchema::class, Automattic\WooCommerce\Blocks\Domain\Services\ExtendRestApi::class ); -class_alias( Automattic\WooCommerce\StoreApi\SchemaController::class, Automattic\WooCommerce\Blocks\StoreApi\SchemaController::class ); -class_alias( Automattic\WooCommerce\StoreApi\RoutesController::class, Automattic\WooCommerce\Blocks\StoreApi\RoutesController::class ); -class_alias( Automattic\WooCommerce\StoreApi\Formatters::class, Automattic\WooCommerce\Blocks\StoreApi\Formatters::class ); -class_alias( Automattic\WooCommerce\StoreApi\Payments\PaymentResult::class, Automattic\WooCommerce\Blocks\Payments\PaymentResult::class ); -class_alias( Automattic\WooCommerce\StoreApi\Payments\PaymentContext::class, Automattic\WooCommerce\Blocks\Payments\PaymentContext::class ); +$class_aliases = [ + // Old to new namespaces for utils and exceptions. + Automattic\WooCommerce\StoreApi\Exceptions\RouteException::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\RouteException::class, + Automattic\WooCommerce\StoreApi\Schemas\ExtendSchema::class => Automattic\WooCommerce\Blocks\Domain\Services\ExtendRestApi::class, + Automattic\WooCommerce\StoreApi\SchemaController::class => Automattic\WooCommerce\Blocks\StoreApi\SchemaController::class, + Automattic\WooCommerce\StoreApi\RoutesController::class => Automattic\WooCommerce\Blocks\StoreApi\RoutesController::class, + Automattic\WooCommerce\StoreApi\Formatters::class => Automattic\WooCommerce\Blocks\StoreApi\Formatters::class, + Automattic\WooCommerce\StoreApi\Payments\PaymentResult::class => Automattic\WooCommerce\Blocks\Payments\PaymentResult::class, + Automattic\WooCommerce\StoreApi\Payments\PaymentContext::class => Automattic\WooCommerce\Blocks\Payments\PaymentContext::class, -// Map old schemas to V1 schemas under new namespace. -class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\AbstractAddressSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\AbstractAddressSchema::class ); -class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\AbstractSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\AbstractSchema::class ); -class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\BillingAddressSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\BillingAddressSchema::class ); -class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\CartCouponSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\CartCouponSchema::class ); -class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\CartExtensionsSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\CartExtensionsSchema::class ); -class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\CartFeeSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\CartFeeSchema::class ); -class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\CartItemSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\CartItemSchema::class ); -class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\CartSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\CartSchema::class ); -class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\CartShippingRateSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\CartShippingRateSchema::class ); -class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\CheckoutSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\CheckoutSchema::class ); -class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\ErrorSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\ErrorSchema::class ); -class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\ImageAttachmentSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\ImageAttachmentSchema::class ); -class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\OrderCouponSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\OrderCouponSchema::class ); -class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\ProductAttributeSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\ProductAttributeSchema::class ); -class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\ProductCategorySchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\ProductCategorySchema::class ); -class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\ProductCollectionDataSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\ProductCollectionDataSchema::class ); -class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\ProductReviewSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\ProductReviewSchema::class ); -class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\ProductSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\ProductSchema::class ); -class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\ShippingAddressSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\ShippingAddressSchema::class ); -class_alias( Automattic\WooCommerce\StoreApi\Schemas\V1\TermSchema::class, Automattic\WooCommerce\Blocks\StoreApi\Schemas\TermSchema::class ); + // Old schemas to V1 schemas under new namespace. + Automattic\WooCommerce\StoreApi\Schemas\V1\AbstractAddressSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\AbstractAddressSchema::class, + Automattic\WooCommerce\StoreApi\Schemas\V1\AbstractSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\AbstractSchema::class, + Automattic\WooCommerce\StoreApi\Schemas\V1\BillingAddressSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\BillingAddressSchema::class, + Automattic\WooCommerce\StoreApi\Schemas\V1\CartCouponSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\CartCouponSchema::class, + Automattic\WooCommerce\StoreApi\Schemas\V1\CartExtensionsSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\CartExtensionsSchema::class, + Automattic\WooCommerce\StoreApi\Schemas\V1\CartFeeSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\CartFeeSchema::class, + Automattic\WooCommerce\StoreApi\Schemas\V1\CartItemSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\CartItemSchema::class, + Automattic\WooCommerce\StoreApi\Schemas\V1\CartSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\CartSchema::class, + Automattic\WooCommerce\StoreApi\Schemas\V1\CartShippingRateSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\CartShippingRateSchema::class, + Automattic\WooCommerce\StoreApi\Schemas\V1\CheckoutSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\CheckoutSchema::class, + Automattic\WooCommerce\StoreApi\Schemas\V1\ErrorSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\ErrorSchema::class, + Automattic\WooCommerce\StoreApi\Schemas\V1\ImageAttachmentSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\ImageAttachmentSchema::class, + Automattic\WooCommerce\StoreApi\Schemas\V1\OrderCouponSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\OrderCouponSchema::class, + Automattic\WooCommerce\StoreApi\Schemas\V1\ProductAttributeSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\ProductAttributeSchema::class, + Automattic\WooCommerce\StoreApi\Schemas\V1\ProductCategorySchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\ProductCategorySchema::class, + Automattic\WooCommerce\StoreApi\Schemas\V1\ProductCollectionDataSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\ProductCollectionDataSchema::class, + Automattic\WooCommerce\StoreApi\Schemas\V1\ProductReviewSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\ProductReviewSchema::class, + Automattic\WooCommerce\StoreApi\Schemas\V1\ProductSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\ProductSchema::class, + Automattic\WooCommerce\StoreApi\Schemas\V1\ShippingAddressSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\ShippingAddressSchema::class, + Automattic\WooCommerce\StoreApi\Schemas\V1\TermSchema::class => Automattic\WooCommerce\Blocks\StoreApi\Schemas\TermSchema::class, -// Map old routes to V1 routes under new namespace. -class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\AbstractCartRoute::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\AbstractCartRoute::class ); -class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\AbstractRoute::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\AbstractRoute::class ); -class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\AbstractTermsRoute::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\AbstractTermsRoute::class ); -class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\Batch::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\Batch::class ); -class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\Cart::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\Cart::class ); -class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\CartAddItem::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\CartAddItem::class ); -class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\CartApplyCoupon::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\CartApplyCoupon::class ); -class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\CartCoupons::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\CartCoupons::class ); -class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\CartCouponsByCode::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\CartCouponsByCode::class ); -class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\CartExtensions::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\CartExtensions::class ); -class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\CartItems::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\CartItems::class ); -class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\CartItemsByKey::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\CartItemsByKey::class ); -class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\CartRemoveCoupon::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\CartRemoveCoupon::class ); -class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\CartRemoveItem::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\CartRemoveItem::class ); -class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\CartSelectShippingRate::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\CartSelectShippingRate::class ); -class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\CartUpdateCustomer::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\CartUpdateCustomer::class ); -class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\CartUpdateItem::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\CartUpdateItem::class ); -class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\Checkout::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\Checkout::class ); -class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\ProductAttributes::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\ProductAttributes::class ); -class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\ProductAttributesById::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\ProductAttributesById::class ); -class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\ProductAttributeTerms::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\ProductAttributeTerms::class ); -class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\ProductCategories::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\ProductCategories::class ); -class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\ProductCategoriesById::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\ProductCategoriesById::class ); -class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\ProductCollectionData::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\ProductCollectionData::class ); -class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\ProductReviews::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\ProductReviews::class ); -class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\Products::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\Products::class ); -class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\ProductsById::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\ProductsById::class ); -class_alias( Automattic\WooCommerce\StoreApi\Routes\V1\ProductTags::class, Automattic\WooCommerce\Blocks\StoreApi\Routes\ProductTags::class ); + // Old routes to V1 routes under new namespace. + Automattic\WooCommerce\StoreApi\Routes\V1\AbstractCartRoute::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\AbstractCartRoute::class, + Automattic\WooCommerce\StoreApi\Routes\V1\AbstractRoute::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\AbstractRoute::class, + Automattic\WooCommerce\StoreApi\Routes\V1\AbstractTermsRoute::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\AbstractTermsRoute::class, + Automattic\WooCommerce\StoreApi\Routes\V1\Batch::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\Batch::class, + Automattic\WooCommerce\StoreApi\Routes\V1\Cart::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\Cart::class, + Automattic\WooCommerce\StoreApi\Routes\V1\CartAddItem::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\CartAddItem::class, + Automattic\WooCommerce\StoreApi\Routes\V1\CartApplyCoupon::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\CartApplyCoupon::class, + Automattic\WooCommerce\StoreApi\Routes\V1\CartCoupons::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\CartCoupons::class, + Automattic\WooCommerce\StoreApi\Routes\V1\CartCouponsByCode::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\CartCouponsByCode::class, + Automattic\WooCommerce\StoreApi\Routes\V1\CartExtensions::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\CartExtensions::class, + Automattic\WooCommerce\StoreApi\Routes\V1\CartItems::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\CartItems::class, + Automattic\WooCommerce\StoreApi\Routes\V1\CartItemsByKey::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\CartItemsByKey::class, + Automattic\WooCommerce\StoreApi\Routes\V1\CartRemoveCoupon::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\CartRemoveCoupon::class, + Automattic\WooCommerce\StoreApi\Routes\V1\CartRemoveItem::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\CartRemoveItem::class, + Automattic\WooCommerce\StoreApi\Routes\V1\CartSelectShippingRate::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\CartSelectShippingRate::class, + Automattic\WooCommerce\StoreApi\Routes\V1\CartUpdateCustomer::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\CartUpdateCustomer::class, + Automattic\WooCommerce\StoreApi\Routes\V1\CartUpdateItem::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\CartUpdateItem::class, + Automattic\WooCommerce\StoreApi\Routes\V1\Checkout::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\Checkout::class, + Automattic\WooCommerce\StoreApi\Routes\V1\ProductAttributes::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\ProductAttributes::class, + Automattic\WooCommerce\StoreApi\Routes\V1\ProductAttributesById::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\ProductAttributesById::class, + Automattic\WooCommerce\StoreApi\Routes\V1\ProductAttributeTerms::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\ProductAttributeTerms::class, + Automattic\WooCommerce\StoreApi\Routes\V1\ProductCategories::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\ProductCategories::class, + Automattic\WooCommerce\StoreApi\Routes\V1\ProductCategoriesById::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\ProductCategoriesById::class, + Automattic\WooCommerce\StoreApi\Routes\V1\ProductCollectionData::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\ProductCollectionData::class, + Automattic\WooCommerce\StoreApi\Routes\V1\ProductReviews::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\ProductReviews::class, + Automattic\WooCommerce\StoreApi\Routes\V1\Products::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\Products::class, + Automattic\WooCommerce\StoreApi\Routes\V1\ProductsById::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\ProductsById::class, + Automattic\WooCommerce\StoreApi\Routes\V1\ProductTags::class => Automattic\WooCommerce\Blocks\StoreApi\Routes\ProductTags::class, +]; + +foreach ( $class_aliases as $class => $alias ) { + if ( ! class_exists( $alias, false ) ) { + class_alias( $class, $alias ); + } +} + +unset( $class_aliases ); From c1a257c7bb943ca2ae8a70205d25207bf21c66ca Mon Sep 17 00:00:00 2001 From: "Daniel W. Robert" Date: Wed, 7 Sep 2022 12:49:57 -0400 Subject: [PATCH 137/164] Move experimental item under Feature Plugin group The addition of the font-weight controls is an experimental feature and should be added under the Feature Plugin section so it does not get rolled into Core. --- docs/internal-developers/testing/releases/830.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/internal-developers/testing/releases/830.md b/docs/internal-developers/testing/releases/830.md index cd096a74b..e9b578395 100644 --- a/docs/internal-developers/testing/releases/830.md +++ b/docs/internal-developers/testing/releases/830.md @@ -101,6 +101,8 @@ Verify the wording says **checkout**. 6. Uncheck the checkbox for `Use same address for billing`. 7. Look at the Billing address form and confirm it has the same address which was selected in the shipping calculator. +## Feature plugin + ### Fix: Add font-weight controls to the Mini Cart block text. ([6760](https://github.com/woocommerce/woocommerce-blocks/pull/6760)) 1. Make sure you have a blocks theme active (like Twenty Twenty-Two). From 5d6a088021a3fb251e9e22906407ce7bdf84d433 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alba=20Rinc=C3=B3n?= Date: Thu, 8 Sep 2022 10:41:11 +0200 Subject: [PATCH 138/164] Compare count with null to avoid rendering a 0 when count is 0 (#7073) --- assets/js/base/components/filter-element-label/index.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/js/base/components/filter-element-label/index.tsx b/assets/js/base/components/filter-element-label/index.tsx index e7d3714a9..4806d3bfb 100644 --- a/assets/js/base/components/filter-element-label/index.tsx +++ b/assets/js/base/components/filter-element-label/index.tsx @@ -14,7 +14,7 @@ interface FilterElementLabelProps { count: number | null; } /** - * The label for an filter elements. + * The label for a filter element. * * @param {Object} props Incoming props for the component. * @param {string} props.name The name for the label. @@ -27,7 +27,7 @@ const FilterElementLabel = ( { return ( <> { name } - { count && Number.isFinite( count ) && ( + { count !== null && Number.isFinite( count ) && (
      ; + * }; + * ``` + */ + +export function useIsMounted() { + const isMounted = useRef( false ); + + useEffect( () => { + isMounted.current = true; + + return () => { + isMounted.current = false; + }; + }, [] ); + + return useCallback( () => isMounted.current, [] ); +} diff --git a/assets/js/blocks/active-filters/active-attribute-filters.tsx b/assets/js/blocks/active-filters/active-attribute-filters.tsx index 1929e3ceb..5519d4e05 100644 --- a/assets/js/blocks/active-filters/active-attribute-filters.tsx +++ b/assets/js/blocks/active-filters/active-attribute-filters.tsx @@ -1,6 +1,7 @@ /** * External dependencies */ +import { useEffect } from '@wordpress/element'; import { useCollection, useQueryStateByKey, @@ -26,22 +27,25 @@ interface ActiveAttributeFiltersProps { operator: 'and' | 'in'; slugs: string[]; attributeObject: AttributeObject; + isLoadingCallback: ( val: boolean ) => void; } /** * Component that renders active attribute (terms) filters. * - * @param {Object} props Incoming props for the component. - * @param {Object} props.attributeObject The attribute object. - * @param {Array} props.slugs The slugs for attributes. - * @param {string} props.operator The operator for the filter. - * @param {string} props.displayStyle The style used for displaying the filters. + * @param {Object} props Incoming props for the component. + * @param {Object} props.attributeObject The attribute object. + * @param {Array} props.slugs The slugs for attributes. + * @param {string} props.operator The operator for the filter. + * @param {string} props.displayStyle The style used for displaying the filters. + * @param {string} props.isLoadingCallback The callback to trigger the loading complete state. */ const ActiveAttributeFilters = ( { attributeObject, slugs = [], operator = 'in', displayStyle, + isLoadingCallback, }: ActiveAttributeFiltersProps ) => { const { results, isLoading } = useCollection( { namespace: '/wc/store/v1', @@ -54,8 +58,11 @@ const ActiveAttributeFilters = ( { [] ); + useEffect( () => { + isLoadingCallback( isLoading ); + }, [ isLoading, isLoadingCallback ] ); + if ( - isLoading || ! Array.isArray( results ) || ! isAttributeTermCollection( results ) || ! isAttributeQueryCollection( productAttributes ) @@ -100,6 +107,7 @@ const ActiveAttributeFilters = ( { type: attributeLabel, name: decodeEntities( termObject.name || slug ), prefix, + isLoading, removeCallback: () => { const currentAttribute = productAttributes.find( ( { attribute } ) => diff --git a/assets/js/blocks/active-filters/block.tsx b/assets/js/blocks/active-filters/block.tsx index 12b38f87d..0929e2218 100644 --- a/assets/js/blocks/active-filters/block.tsx +++ b/assets/js/blocks/active-filters/block.tsx @@ -4,7 +4,7 @@ import { __, sprintf } from '@wordpress/i18n'; import { useQueryStateByKey } from '@woocommerce/base-context/hooks'; import { getSetting, getSettingWithCoercion } from '@woocommerce/settings'; -import { useMemo, useEffect } from '@wordpress/element'; +import { useMemo, useEffect, useState } from '@wordpress/element'; import classnames from 'classnames'; import PropTypes from 'prop-types'; import Label from '@woocommerce/base-components/label'; @@ -16,6 +16,8 @@ import { isStockStatusOptions, } from '@woocommerce/types'; import { getUrlParameter } from '@woocommerce/utils'; +import FilterTitlePlaceholder from '@woocommerce/base-components/filter-placeholder'; +import { useIsMounted } from '@woocommerce/base-hooks'; /** * Internal dependencies @@ -27,8 +29,11 @@ import { renderRemovableListItem, removeArgsFromFilterUrl, cleanFilterUrl, + maybeUrlContainsFilters, + urlContainsAttributeFilter, } from './utils'; import ActiveAttributeFilters from './active-attribute-filters'; +import FilterPlaceholders from './filter-placeholders'; import { Attributes } from './types'; /** @@ -45,11 +50,20 @@ const ActiveFiltersBlock = ( { attributes: Attributes; isEditor?: boolean; } ) => { + const isMounted = useIsMounted(); + const componentHasMounted = isMounted(); const filteringForPhpTemplate = getSettingWithCoercion( 'is_rendering_php_template', false, isBoolean ); + const [ isLoading, setIsLoading ] = useState( true ); + /* + activeAttributeFilters is the only async query in this block. Because of this the rest of the filters will render null + when in a loading state and activeAttributeFilters renders the placeholders. + */ + const shouldShowLoadingPlaceholders = + maybeUrlContainsFilters() && ! isEditor && isLoading; const [ productAttributes, setProductAttributes ] = useQueryStateByKey( 'attributes', [] @@ -62,8 +76,10 @@ const ActiveFiltersBlock = ( { const [ maxPrice, setMaxPrice ] = useQueryStateByKey( 'max_price' ); const STOCK_STATUS_OPTIONS = getSetting( 'stockStatusOptions', [] ); + const STORE_ATTRIBUTES = getSetting( 'attributes', [] ); const activeStockStatusFilters = useMemo( () => { if ( + shouldShowLoadingPlaceholders || productStockStatus.length === 0 || ! isStockStatusQueryCollection( productStockStatus ) || ! isStockStatusOptions( STOCK_STATUS_OPTIONS ) @@ -92,6 +108,7 @@ const ActiveFiltersBlock = ( { } ); } ); }, [ + shouldShowLoadingPlaceholders, STOCK_STATUS_OPTIONS, productStockStatus, setProductStockStatus, @@ -100,7 +117,10 @@ const ActiveFiltersBlock = ( { ] ); const activePriceFilters = useMemo( () => { - if ( ! Number.isFinite( minPrice ) && ! Number.isFinite( maxPrice ) ) { + if ( + shouldShowLoadingPlaceholders || + ( ! Number.isFinite( minPrice ) && ! Number.isFinite( maxPrice ) ) + ) { return null; } return renderRemovableListItem( { @@ -116,6 +136,7 @@ const ActiveFiltersBlock = ( { displayStyle: blockAttributes.displayStyle, } ); }, [ + shouldShowLoadingPlaceholders, minPrice, maxPrice, blockAttributes.displayStyle, @@ -125,7 +146,13 @@ const ActiveFiltersBlock = ( { ] ); const activeAttributeFilters = useMemo( () => { - if ( ! isAttributeQueryCollection( productAttributes ) ) { + if ( + ( ! isAttributeQueryCollection( productAttributes ) && + componentHasMounted ) || + ( ! productAttributes.length && + ! urlContainsAttributeFilter( STORE_ATTRIBUTES ) ) + ) { + setIsLoading( false ); return null; } @@ -135,6 +162,7 @@ const ActiveFiltersBlock = ( { ); if ( ! attributeObject ) { + setIsLoading( false ); return null; } @@ -145,10 +173,16 @@ const ActiveFiltersBlock = ( { slugs={ attribute.slug } key={ attribute.attribute } operator={ attribute.operator } + isLoadingCallback={ setIsLoading } /> ); } ); - }, [ productAttributes, blockAttributes.displayStyle ] ); + }, [ + componentHasMounted, + setIsLoading, + productAttributes, + blockAttributes.displayStyle, + ] ); const [ productRatings, setProductRatings ] = useQueryStateByKey( 'ratings' ); @@ -177,6 +211,7 @@ const ActiveFiltersBlock = ( { const activeRatingFilters = useMemo( () => { if ( + shouldShowLoadingPlaceholders || productRatings.length === 0 || ! isRatingQueryCollection( productRatings ) ) { @@ -206,6 +241,7 @@ const ActiveFiltersBlock = ( { } ); } ); }, [ + shouldShowLoadingPlaceholders, productRatings, setProductRatings, blockAttributes.displayStyle, @@ -222,12 +258,25 @@ const ActiveFiltersBlock = ( { ); }; - if ( ! hasFilters() && ! isEditor ) { + if ( ! shouldShowLoadingPlaceholders && ! hasFilters() && ! isEditor ) { return null; } const TagName = `h${ blockAttributes.headingLevel }` as keyof JSX.IntrinsicElements; + + const heading = ( + + { blockAttributes.heading } + + ); + + const filterHeading = shouldShowLoadingPlaceholders ? ( + { heading } + ) : ( + heading + ); + const hasFilterableProducts = getSettingWithCoercion( 'has_filterable_products', false, @@ -241,15 +290,12 @@ const ActiveFiltersBlock = ( { const listClasses = classnames( 'wc-block-active-filters__list', { 'wc-block-active-filters__list--chips': blockAttributes.displayStyle === 'chips', + 'wc-block-active-filters--loading': shouldShowLoadingPlaceholders, } ); return ( <> - { ! isEditor && blockAttributes.heading && ( - - { blockAttributes.heading } - - ) } + { ! isEditor && blockAttributes.heading && filterHeading }
        { isEditor ? ( @@ -279,6 +325,10 @@ const ActiveFiltersBlock = ( { ) : ( <> + { activePriceFilters } { activeStockStatusFilters } { activeAttributeFilters } @@ -286,29 +336,33 @@ const ActiveFiltersBlock = ( { ) }
      - + { shouldShowLoadingPlaceholders ? ( + + ) : ( + + ) }
      ); diff --git a/assets/js/blocks/active-filters/filter-placeholders.tsx b/assets/js/blocks/active-filters/filter-placeholders.tsx new file mode 100644 index 000000000..a9df2ab7a --- /dev/null +++ b/assets/js/blocks/active-filters/filter-placeholders.tsx @@ -0,0 +1,30 @@ +const FilterPlaceholders = ( { + displayStyle, + isLoading, +}: { + isLoading: boolean; + displayStyle: string; +} ) => { + if ( ! isLoading ) { + return null; + } + + return ( + <> + { [ ...Array( displayStyle === 'list' ? 2 : 3 ) ].map( ( x, i ) => ( +
    • + +
    • + ) ) } + + ); +}; + +export default FilterPlaceholders; diff --git a/assets/js/blocks/active-filters/style.scss b/assets/js/blocks/active-filters/style.scss index e23057b74..695aa808d 100644 --- a/assets/js/blocks/active-filters/style.scss +++ b/assets/js/blocks/active-filters/style.scss @@ -7,6 +7,17 @@ h6 { text-transform: inherit; } + + .wc-block-filter-title-placeholder { + .wc-block-active-filters__title { + height: 1em; + } + } + + .wc-block-active-filters__title { + margin-top: $gap-small; + margin-bottom: $gap-small; + } } .wc-block-active-filters { @@ -20,6 +31,7 @@ padding: 0; text-decoration: underline; cursor: pointer; + float: right; &, &:hover, @@ -30,12 +42,35 @@ } } + .wc-block-active-filters__clear-all-placeholder { + @include placeholder(); + display: inline-block; + width: 80px; + height: 1em; + float: right; + border-radius: 0; + } + .wc-block-active-filters__list { margin: 0 0 $gap-smallest; padding: 0; list-style: none outside; clear: both; + &.wc-block-active-filters--loading { + margin-top: $gap-small; + display: flex; + flex-direction: column; + flex-wrap: nowrap; + + &.wc-block-active-filters__list--chips { + flex-direction: row; + flex-wrap: wrap; + align-items: flex-end; + gap: 0 10px; + } + } + li { margin: 9px 0 0; padding: 0; @@ -56,6 +91,42 @@ > li:first-child { margin: 0; } + li.show-loading-state-list { + display: inline-block; + + > span { + @include placeholder(); + display: inline-block; + box-shadow: none; + border-radius: 0; + height: 1em; + width: 100%; + } + } + + li.show-loading-state-chips { + display: inline-block; + + > span { + @include placeholder(); + display: inline-block; + box-shadow: none; + border-radius: 13px; + height: 1em; + width: 100%; + min-width: 70px; + margin-right: 15px !important; + } + + &:last-of-type > span { + margin-right: 0 !important; + } + + &:nth-child(3) { + flex-grow: 1; + max-width: 200px; + } + } } .wc-block-active-filters__list-item-type { diff --git a/assets/js/blocks/active-filters/utils.tsx b/assets/js/blocks/active-filters/utils.tsx index e7abfe62e..e99059b76 100644 --- a/assets/js/blocks/active-filters/utils.tsx +++ b/assets/js/blocks/active-filters/utils.tsx @@ -44,6 +44,7 @@ interface RemovableListItemProps { name: string; prefix?: string | JSX.Element; showLabel?: boolean; + isLoading?: boolean; displayStyle: string; removeCallback?: () => void; } @@ -190,6 +191,35 @@ export const removeArgsFromFilterUrl = ( changeUrl( newUrl ); }; +/** + * Prefixes typically expected before filters in the URL. + */ +const FILTER_QUERY_VALUES = [ + 'min_price', + 'max_price', + 'rating_filter', + 'filter_', + 'query_type_', +]; + +/** + * Check if the URL contains arguments that could be Woo filter keys. + */ +const keyIsAFilter = ( key: string ): boolean => { + let keyIsFilter = false; + + for ( let i = 0; FILTER_QUERY_VALUES.length > i; i++ ) { + const keyToMatch = FILTER_QUERY_VALUES[ i ]; + const trimmedKey = key.substring( 0, keyToMatch.length ); + if ( keyToMatch === trimmedKey ) { + keyIsFilter = true; + break; + } + } + + return keyIsFilter; +}; + /** * Clean the filter URL. */ @@ -204,13 +234,7 @@ export const cleanFilterUrl = () => { const remainingArgs = Object.fromEntries( Object.keys( args ) .filter( ( arg ) => { - if ( - arg.includes( 'min_price' ) || - arg.includes( 'max_price' ) || - arg.includes( 'rating_filter' ) || - arg.includes( 'filter_' ) || - arg.includes( 'query_type_' ) - ) { + if ( keyIsAFilter( arg ) ) { return false; } @@ -223,3 +247,60 @@ export const cleanFilterUrl = () => { changeUrl( newUrl ); }; + +export const maybeUrlContainsFilters = (): boolean => { + if ( ! window ) { + return false; + } + + const url = window.location.href; + const args = getQueryArgs( url ); + const filterKeys = Object.keys( args ); + let maybeHasFilter = false; + + for ( let i = 0; filterKeys.length > i; i++ ) { + const key = filterKeys[ i ]; + if ( keyIsAFilter( key ) ) { + maybeHasFilter = true; + break; + } + } + + return maybeHasFilter; +}; + +interface StoreAttributes { + attribute_id: string; + attribute_label: string; + attribute_name: string; + attribute_orderby: string; + attribute_public: number; + attribute_type: string; +} + +export const urlContainsAttributeFilter = ( + attributes: StoreAttributes[] +): boolean => { + if ( ! window ) { + return false; + } + + const storeAttributeKeys = attributes.map( + ( attr ) => `filter_${ attr.attribute_name }` + ); + + const url = window.location.href; + const args = getQueryArgs( url ); + const urlFilterKeys = Object.keys( args ); + let filterIsInUrl = false; + + for ( let i = 0; urlFilterKeys.length > i; i++ ) { + const urlKey = urlFilterKeys[ i ]; + if ( storeAttributeKeys.includes( urlKey ) ) { + filterIsInUrl = true; + break; + } + } + + return filterIsInUrl; +}; From 6cb49bc99b18a976c72b4b6a986cad98b6fbeb31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alba=20Rinc=C3=B3n?= Date: Fri, 9 Sep 2022 13:28:04 +0200 Subject: [PATCH 143/164] Add Apply button placeholders to filters and adjust title margins (#7077) * Adjust filter titles margins * Show the Apply button placeholder and adjust title margins * Add placeholder for the Apply button on filter by price * Add placeholder for the Apply button on filter by attr * Update stock filter snapshot * Move the apply button placeholder to inside the FilterSubmitButton component * Fix the placeholder button height * Fix apply button on editor * Change loading class to be is-loading --- .../components/filter-placeholder/style.scss | 3 ++ .../components/filter-submit-button/index.tsx | 3 ++ .../filter-submit-button/style.scss | 9 ++++ .../js/base/components/price-slider/index.tsx | 35 +++++++------ .../base/components/price-slider/style.scss | 21 ++++++++ assets/js/blocks/active-filters/style.scss | 2 +- assets/js/blocks/attribute-filter/block.tsx | 5 +- .../attribute-filter/checkbox-filter.tsx | 4 +- assets/js/blocks/attribute-filter/style.scss | 14 +++--- assets/js/blocks/price-filter/style.scss | 2 +- assets/js/blocks/stock-filter/block.tsx | 49 ++++++++++--------- assets/js/blocks/stock-filter/style.scss | 36 ++++++++------ .../test/__snapshots__/block.js.snap | 46 ++++++++--------- 13 files changed, 140 insertions(+), 89 deletions(-) diff --git a/assets/js/base/components/filter-placeholder/style.scss b/assets/js/base/components/filter-placeholder/style.scss index e2a99a382..b667fe5ec 100644 --- a/assets/js/base/components/filter-placeholder/style.scss +++ b/assets/js/base/components/filter-placeholder/style.scss @@ -4,6 +4,8 @@ border-radius: em(26px); box-shadow: none; min-width: 80px; + margin-top: $gap-small; + margin-bottom: $gap-small; max-width: max-content !important; &::after { @@ -12,6 +14,7 @@ .wc-block-stock-filter__title, .wc-block-price-filter__title, + .wc-block-active-filters__title, .wc-block-attribute-filter__title { margin: 0; height: 1em; diff --git a/assets/js/base/components/filter-submit-button/index.tsx b/assets/js/base/components/filter-submit-button/index.tsx index 4a320aa68..d1ab3cd2e 100644 --- a/assets/js/base/components/filter-submit-button/index.tsx +++ b/assets/js/base/components/filter-submit-button/index.tsx @@ -12,6 +12,7 @@ import './style.scss'; interface FilterSubmitButtonProps { className?: string; + isLoading?: boolean; disabled?: boolean; label?: string; onClick: () => void; @@ -20,6 +21,7 @@ interface FilterSubmitButtonProps { const FilterSubmitButton = ( { className, + isLoading, disabled, /* translators: Submit button text for filters. */ label = __( 'Apply', 'woo-gutenberg-products-block' ), @@ -33,6 +35,7 @@ const FilterSubmitButton = ( { 'wp-block-button__link', 'wc-block-filter-submit-button', 'wc-block-components-filter-submit-button', + { 'is-loading': isLoading }, className ) } disabled={ disabled } diff --git a/assets/js/base/components/filter-submit-button/style.scss b/assets/js/base/components/filter-submit-button/style.scss index 8d05eb31e..39c469966 100644 --- a/assets/js/base/components/filter-submit-button/style.scss +++ b/assets/js/base/components/filter-submit-button/style.scss @@ -3,4 +3,13 @@ display: block; margin-left: auto; white-space: nowrap; + + &.is-loading { + @include placeholder(); + margin-top: $gap; + width: max-content; + box-shadow: none; + border-radius: 0; + line-height: initial; + } } diff --git a/assets/js/base/components/price-slider/index.tsx b/assets/js/base/components/price-slider/index.tsx index e359a2817..e122210a6 100644 --- a/assets/js/base/components/price-slider/index.tsx +++ b/assets/js/base/components/price-slider/index.tsx @@ -471,24 +471,29 @@ const PriceSlider = ( { />
  • ) } - { ! isUpdating && ( + {
    - { ( minPrice !== minConstraint || - maxPrice !== maxConstraint ) && ( - { - onChange( [ minConstraint, maxConstraint ] ); - debouncedUpdateQuery(); - } } - screenReaderLabel={ __( - 'Reset price filter', - 'woo-gutenberg-products-block' - ) } - /> - ) } + { ! isUpdating && + ( minPrice !== minConstraint || + maxPrice !== maxConstraint ) && ( + { + onChange( [ + minConstraint, + maxConstraint, + ] ); + debouncedUpdateQuery(); + } } + screenReaderLabel={ __( + 'Reset price filter', + 'woo-gutenberg-products-block' + ) } + /> + ) } { showFilterButton && ( ) }
    - ) } + }
    ); }; diff --git a/assets/js/base/components/price-slider/style.scss b/assets/js/base/components/price-slider/style.scss index a445c12f9..ef82faa62 100644 --- a/assets/js/base/components/price-slider/style.scss +++ b/assets/js/base/components/price-slider/style.scss @@ -23,9 +23,11 @@ @include thumbFocus; } } + @mixin thumbFocus { background: $gray-900; } + /* stylelint-enable */ @mixin track { cursor: default; @@ -35,6 +37,7 @@ -moz-appearance: none; appearance: none; } + @mixin reset { margin: 0; /* Use !important to prevent theme input styles from breaking the component. @@ -166,10 +169,12 @@ &::-webkit-slider-runnable-track { @include track; } + &::-webkit-slider-thumb { @include thumb; margin: -5px 0 0 0; } + &::-webkit-slider-progress { @include reset; } @@ -177,12 +182,15 @@ &::-moz-focus-outer { border: 0; } + &::-moz-range-track { @include track; } + &::-moz-range-progress { @include reset; } + &::-moz-range-thumb { @include thumb; } @@ -195,9 +203,11 @@ &::-webkit-slider-thumb { @include thumbFocus; } + &::-moz-range-thumb { @include thumbFocus; } + &::-ms-thumb { @include thumbFocus; } @@ -210,10 +220,12 @@ margin-left: -2px; background-position-x: left; } + &::-moz-range-thumb { background-position-x: left; transform: translate(-2px, 2px); } + &::-ms-thumb { background-position-x: left; } @@ -226,10 +238,12 @@ background-position-x: right; margin-left: 2px; } + &::-moz-range-thumb { background-position-x: right; transform: translate(2px, 2px); } + &::-ms-thumb { background-position-x: right; } @@ -270,16 +284,20 @@ /*remove default tick marks*/ color: transparent; } + &::-ms-fill-lower { background: #e1e1e1; box-shadow: 0 0 0 1px inset #b8b8b8; } + &::-ms-fill-upper { background: transparent; } + &::-ms-tooltip { display: none; } + &::-ms-thumb { transform: translate(1px, 0); pointer-events: auto; @@ -290,6 +308,7 @@ background: #e1e1e1; box-shadow: 0 0 0 1px inset #b8b8b8; } + &::-ms-fill-lower { background: transparent; } @@ -345,9 +364,11 @@ &::-webkit-slider-thumb { filter: none; } + &::-moz-range-thumb { filter: none; } + &::-ms-thumb { filter: none; } diff --git a/assets/js/blocks/active-filters/style.scss b/assets/js/blocks/active-filters/style.scss index 695aa808d..f28e2091f 100644 --- a/assets/js/blocks/active-filters/style.scss +++ b/assets/js/blocks/active-filters/style.scss @@ -14,7 +14,7 @@ } } - .wc-block-active-filters__title { + > .wc-block-active-filters__title { margin-top: $gap-small; margin-bottom: $gap-small; } diff --git a/assets/js/blocks/attribute-filter/block.tsx b/assets/js/blocks/attribute-filter/block.tsx index ceebbfd4a..641270ec5 100644 --- a/assets/js/blocks/attribute-filter/block.tsx +++ b/assets/js/blocks/attribute-filter/block.tsx @@ -543,7 +543,7 @@ const AttributeFilterBlock = ( { key={ remountKey } className={ classnames( borderProps.className, { 'single-selection': ! multiple, - 'show-loading-state': isLoading, + 'is-loading': isLoading, } ) } style={ { ...borderProps.style, @@ -669,9 +669,10 @@ const AttributeFilterBlock = ( { ) } /> ) } - { blockAttributes.showFilterButton && ! isLoading && ( + { blockAttributes.showFilterButton && ( - - + + ); } diff --git a/assets/js/blocks/attribute-filter/style.scss b/assets/js/blocks/attribute-filter/style.scss index d5cda2422..853c47010 100644 --- a/assets/js/blocks/attribute-filter/style.scss +++ b/assets/js/blocks/attribute-filter/style.scss @@ -12,7 +12,7 @@ text-transform: inherit; } - .wc-block-attribute-filter__title { + > .wc-block-attribute-filter__title { margin-top: $gap-small; margin-bottom: $gap-small; } @@ -23,13 +23,12 @@ border-radius: inherit; border-color: inherit; - .show-loading-state { + .is-loading { @include placeholder(); box-shadow: none; border-radius: 0; - margin-bottom: $gap; - margin-top: $gap; height: 1em; + margin-top: $gap; } &.style-dropdown { @@ -73,12 +72,12 @@ width: 0; height: max-content; - &:not(.show-loading-state) { + &:not(.is-loading) { border: 1px solid $gray-700 !important; border-radius: 4px; } - &.show-loading-state { + &.is-loading { border-radius: em(4px); } } @@ -187,4 +186,7 @@ .wc-block-attribute-filter__button.wc-block-attribute-filter__button { padding: em($gap-smaller) em($gap); @include font-size(small); + height: max-content; + line-height: normal; + width: max-content; } diff --git a/assets/js/blocks/price-filter/style.scss b/assets/js/blocks/price-filter/style.scss index 002703d27..0a7e79283 100644 --- a/assets/js/blocks/price-filter/style.scss +++ b/assets/js/blocks/price-filter/style.scss @@ -12,7 +12,7 @@ text-transform: inherit; } - .wc-block-price-filter__title { + > .wc-block-price-filter__title { margin-top: $gap-small; margin-bottom: $gap-small; } diff --git a/assets/js/blocks/stock-filter/block.tsx b/assets/js/blocks/stock-filter/block.tsx index ddfa2fb7e..869f0f0bf 100644 --- a/assets/js/blocks/stock-filter/block.tsx +++ b/assets/js/blocks/stock-filter/block.tsx @@ -379,7 +379,7 @@ const StockStatusFilterBlock = ( { { ! isEditor && blockAttributes.heading && filterHeading }
    - { ! isLoading && ( -
    - { checked.length > 0 && ( - { - setChecked( [] ); - onSubmit( [] ); - } } - screenReaderLabel={ __( - 'Reset stock filter', - 'woo-gutenberg-products-block' - ) } - /> - ) } - { blockAttributes.showFilterButton && ( - onSubmit( checked ) } - /> - ) } -
    - ) }
    + { +
    + { checked.length > 0 && ! isLoading && ( + { + setChecked( [] ); + onSubmit( [] ); + } } + screenReaderLabel={ __( + 'Reset stock filter', + 'woo-gutenberg-products-block' + ) } + /> + ) } + { blockAttributes.showFilterButton && ( + onSubmit( checked ) } + /> + ) } +
    + } ); }; diff --git a/assets/js/blocks/stock-filter/style.scss b/assets/js/blocks/stock-filter/style.scss index 730444006..cfbbaf11e 100644 --- a/assets/js/blocks/stock-filter/style.scss +++ b/assets/js/blocks/stock-filter/style.scss @@ -8,14 +8,14 @@ text-transform: inherit; } - .wc-block-stock-filter__title { + > .wc-block-stock-filter__title { margin-top: $gap-small; margin-bottom: $gap-small; } } .wc-block-stock-filter { - &.show-loading-state { + &.is-loading { @include placeholder(); margin-top: $gap; box-shadow: none; @@ -44,23 +44,29 @@ opacity: 0.6; } - .wc-block-stock-filter__actions { - align-items: center; - display: flex; - gap: $gap; - justify-content: flex-end; - margin-top: $gap; +} - // The specificity here is needed to overwrite the margin-top that is inherited on WC block template pages such as Shop. - button[type="submit"]:not(.wp-block-search__button).wc-block-components-filter-submit-button { - margin-left: 0; - margin-top: 0; - } +.wc-block-stock-filter__actions { + align-items: center; + display: flex; + gap: $gap; + justify-content: flex-end; + margin-top: $gap; + + // The specificity here is needed to overwrite the margin-top that is inherited on WC block template pages such as Shop. + button[type="submit"]:not(.wp-block-search__button).wc-block-components-filter-submit-button { + margin-left: 0; + margin-top: 0; + } + + .wc-block-stock-filter__button { + margin-top: em($gap-smaller); + padding: em($gap-smaller) em($gap); + @include font-size(small); } } -.editor-styles-wrapper .wc-block-stock-filter .wc-block-stock-filter__button, -.wc-block-stock-filter .wc-block-stock-filter__button { +.editor-styles-wrapper .wc-block-stock-filter .wc-block-stock-filter__button { margin-top: em($gap-smaller); padding: em($gap-smaller) em($gap); @include font-size(small); diff --git a/assets/js/blocks/stock-filter/test/__snapshots__/block.js.snap b/assets/js/blocks/stock-filter/test/__snapshots__/block.js.snap index d61877011..6463cade9 100644 --- a/assets/js/blocks/stock-filter/test/__snapshots__/block.js.snap +++ b/assets/js/blocks/stock-filter/test/__snapshots__/block.js.snap @@ -102,10 +102,10 @@ exports[`Testing stock filter renders the stock filter block 1`] = `
    -
    +
    `; @@ -211,25 +211,25 @@ exports[`Testing stock filter renders the stock filter block with the filter but -
    +
    + -
    + Apply + + + Apply filter + +
    `; @@ -378,9 +378,9 @@ exports[`Testing stock filter renders the stock filter block with the product co -
    +
    `; From 0fecf2b4e734a30050de3944bcdf3e0c825c3bb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alba=20Rinc=C3=B3n?= Date: Fri, 9 Sep 2022 13:33:15 +0200 Subject: [PATCH 144/164] Fix formatting (#7105) Co-authored-by: Niels Lange --- woocommerce-gutenberg-products-block.php | 117 +++++++++++------------ 1 file changed, 55 insertions(+), 62 deletions(-) diff --git a/woocommerce-gutenberg-products-block.php b/woocommerce-gutenberg-products-block.php index 352058365..fd4cbc641 100644 --- a/woocommerce-gutenberg-products-block.php +++ b/woocommerce-gutenberg-products-block.php @@ -1,5 +1,4 @@ id; $is_woocommerce_page = - property_exists($current_screen, 'parent_base') && + property_exists( $current_screen, 'parent_base' ) && 'woocommerce' === $current_screen->parent_base; return $is_plugins_page || $is_woocommerce_page; } -if (version_compare($GLOBALS['wp_version'], $minimum_wp_version, '<')) { +if ( version_compare( $GLOBALS['wp_version'], $minimum_wp_version, '<' ) ) { /** * Outputs for an admin notice about running WooCommerce Blocks on outdated WordPress. * * @since 2.5.0 */ - function woocommerce_blocks_admin_unsupported_wp_notice() - { - if (should_display_compatibility_notices()) { -?> + function woocommerce_blocks_admin_unsupported_wp_notice() { + if ( should_display_compatibility_notices() ) { + ?>
    -

    +

    -

    '; printf( /* translators: %1$s is referring to a php constant name, %2$s is referring to the wp-config.php file. */ - esc_html__('WooCommerce Blocks development mode requires the %1$s constant to be defined and true in your %2$s file. Otherwise you are loading the blocks package from WooCommerce core.', 'woo-gutenberg-products-block'), + esc_html__( 'WooCommerce Blocks development mode requires the %1$s constant to be defined and true in your %2$s file. Otherwise you are loading the blocks package from WooCommerce core.', 'woo-gutenberg-products-block' ), 'JETPACK_AUTOLOAD_DEV', 'wp-config.php' ); @@ -116,16 +112,16 @@ function () { * If the autoloader is not present, let's log the failure and display a nice admin notice. */ $autoloader = __DIR__ . '/vendor/autoload_packages.php'; -if (is_readable($autoloader)) { +if ( is_readable( $autoloader ) ) { require $autoloader; } else { - if (defined('WP_DEBUG') && WP_DEBUG) { + if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) { error_log( // phpcs:ignore sprintf( /* translators: 1: composer command. 2: plugin directory */ - esc_html__('Your installation of the WooCommerce Blocks feature plugin is incomplete. Please run %1$s within the %2$s directory.', 'woo-gutenberg-products-block'), + esc_html__( 'Your installation of the WooCommerce Blocks feature plugin is incomplete. Please run %1$s within the %2$s directory.', 'woo-gutenberg-products-block' ), '`composer install`', - '`' . esc_html(str_replace(ABSPATH, '', __DIR__)) . '`' + '`' . esc_html( str_replace( ABSPATH, '', __DIR__ ) ) . '`' ) ); } @@ -135,26 +131,26 @@ function () { add_action( 'admin_notices', function () { - ?> + ?>

    composer install', - '' . esc_html(str_replace(ABSPATH, '', __DIR__)) . '' + '' . esc_html( str_replace( ABSPATH, '', __DIR__ ) ) . '' ); ?>

    - registered[$handle], $wp_scripts->registered[$handle]->src)) { + if ( ! isset( $wp_scripts->registered[ $handle ], $wp_scripts->registered[ $handle ]->src ) ) { return $file; } - $handle_src = explode('/build/', $wp_scripts->registered[$handle]->src); + $handle_src = explode( '/build/', $wp_scripts->registered[ $handle ]->src ); $handle_filename = $handle_src[1]; $locale = determine_locale(); $lang_dir = WP_LANG_DIR . '/plugins'; // Translations are always based on the unminified filename. - if (substr($handle_filename, -7) === '.min.js') { - $handle_filename = substr($handle_filename, 0, -7) . '.js'; + if ( substr( $handle_filename, -7 ) === '.min.js' ) { + $handle_filename = substr( $handle_filename, 0, -7 ) . '.js'; } - $core_path_md5 = md5('packages/woocommerce-blocks/build/' . $handle_filename); + $core_path_md5 = md5( 'packages/woocommerce-blocks/build/' . $handle_filename ); /** * Return file path of the corresponding translation file in the WC Core is @@ -218,7 +213,7 @@ function load_woocommerce_core_json_translation($file, $handle, $domain) return $lang_dir . '/woocommerce-' . $locale . '-' . $core_path_md5 . '.json'; } -add_filter('load_script_translation_file', 'load_woocommerce_core_json_translation', 10, 3); +add_filter( 'load_script_translation_file', 'load_woocommerce_core_json_translation', 10, 3 ); /** * Filter translations so we can retrieve translations from Core when the original and the translated @@ -229,35 +224,33 @@ function load_woocommerce_core_json_translation($file, $handle, $domain) * @param string $domain The text domain. * @return string WC Blocks translation. In case it's the same as $text, Core translation. */ -function woocommerce_blocks_get_php_translation_from_core($translation, $text, $domain) -{ - if ('woo-gutenberg-products-block' !== $domain) { +function woocommerce_blocks_get_php_translation_from_core( $translation, $text, $domain ) { + if ( 'woo-gutenberg-products-block' !== $domain ) { return $translation; } // When translation is the same, that could mean the string is not translated. // In that case, load it from core. - if ($translation === $text) { - return translate($text, 'woocommerce'); // phpcs:ignore WordPress.WP.I18n.LowLevelTranslationFunction, WordPress.WP.I18n.NonSingularStringLiteralText, WordPress.WP.I18n.TextDomainMismatch + if ( $translation === $text ) { + return translate( $text, 'woocommerce' ); // phpcs:ignore WordPress.WP.I18n.LowLevelTranslationFunction, WordPress.WP.I18n.NonSingularStringLiteralText, WordPress.WP.I18n.TextDomainMismatch } return $translation; } -add_filter('gettext', 'woocommerce_blocks_get_php_translation_from_core', 10, 3); +add_filter( 'gettext', 'woocommerce_blocks_get_php_translation_from_core', 10, 3 ); /** * Add notice to the admin dashboard if the plugin is outdated. * * @see https://github.com/woocommerce/woocommerce-blocks/issues/5587 */ -function woocommerce_blocks_plugin_outdated_notice() -{ +function woocommerce_blocks_plugin_outdated_notice() { $is_active = - is_plugin_active('woo-gutenberg-products-block/woocommerce-gutenberg-products-block.php') || - is_plugin_active('woocommerce-gutenberg-products-block/woocommerce-gutenberg-products-block.php') || - is_plugin_active('woocommerce-blocks/woocommerce-gutenberg-products-block.php'); + is_plugin_active( 'woo-gutenberg-products-block/woocommerce-gutenberg-products-block.php' ) || + is_plugin_active( 'woocommerce-gutenberg-products-block/woocommerce-gutenberg-products-block.php' ) || + is_plugin_active( 'woocommerce-blocks/woocommerce-gutenberg-products-block.php' ); - if (!$is_active) { + if ( ! $is_active ) { return; } @@ -268,17 +261,17 @@ function woocommerce_blocks_plugin_outdated_notice() * the current path is from the WC Core, we can consider the plugin is * outdated because Jetpack Autoloader always loads the newer package. */ - if (!strpos($woocommerce_blocks_path, 'packages/woocommerce-blocks')) { + if ( ! strpos( $woocommerce_blocks_path, 'packages/woocommerce-blocks' ) ) { return; } - if (should_display_compatibility_notices()) { - ?> + if ( should_display_compatibility_notices() ) { + ?>
    -

    +

    - Date: Fri, 9 Sep 2022 11:06:42 -0400 Subject: [PATCH 145/164] Update Active Filters "remove filter" icon to use Icon component (#7035) * Update "remove filter" icon to use Icon component. To be consistent with the button icon used on the Chips view, this replaces the native svg element used in the List view with the same Icon component from core. * Add proper margin to active filters by price list. There is currently no top margin when the active filters contain a price filter in the list view. This is because the filters only contain a range and do not render a child list. This update will target that price filter item and add a top margin that is consistent with the other active filters. --- assets/js/blocks/active-filters/style.scss | 18 ++++++++-- assets/js/blocks/active-filters/utils.tsx | 39 ++++------------------ 2 files changed, 21 insertions(+), 36 deletions(-) diff --git a/assets/js/blocks/active-filters/style.scss b/assets/js/blocks/active-filters/style.scss index f28e2091f..30adf7fd4 100644 --- a/assets/js/blocks/active-filters/style.scss +++ b/assets/js/blocks/active-filters/style.scss @@ -127,6 +127,10 @@ max-width: 200px; } } + + > .wc-block-active-filters__list-item .wc-block-active-filters__list-item-name { + margin: 9px 0 0; + } } .wc-block-active-filters__list-item-type { @@ -151,9 +155,12 @@ } .wc-block-active-filters__list-item-remove { - background: transparent; + @include font-size(smaller); + background: $gray-200; border: 0; + border-radius: 25px; appearance: none; + padding: 0; height: 16px; width: 16px; line-height: 16px; @@ -161,8 +168,13 @@ margin: 0 0.5em 0 0; color: currentColor; - &:hover { - color: $gray-600; + &:hover, + &:focus { + background: $gray-600; + + .wc-block-components-chip__remove-icon { + fill: #fff; + } } &:disabled { diff --git a/assets/js/blocks/active-filters/utils.tsx b/assets/js/blocks/active-filters/utils.tsx index e99059b76..7786ebae0 100644 --- a/assets/js/blocks/active-filters/utils.tsx +++ b/assets/js/blocks/active-filters/utils.tsx @@ -7,6 +7,7 @@ import { RemovableChip } from '@woocommerce/base-components/chip'; import Label from '@woocommerce/base-components/label'; import { getQueryArgs, addQueryArgs, removeQueryArgs } from '@wordpress/url'; import { changeUrl } from '@woocommerce/utils'; +import { Icon, closeSmall } from '@wordpress/icons'; /** * Format a min/max price range to display. @@ -108,39 +109,11 @@ export const renderRemovableListItem = ( { className="wc-block-active-filters__list-item-remove" onClick={ removeCallback } > - - - - - +
    { __( - 'Note: by choosing โ€œCoverโ€ you will lose the ability to freely move the focal point precisely.', + 'This may affect your ability to freely move the focal point of the image.', 'woo-gutenberg-products-block' ) } diff --git a/assets/js/blocks/handpicked-products/edit-mode.tsx b/assets/js/blocks/handpicked-products/edit-mode.tsx index 111fe4e76..3a36e0708 100644 --- a/assets/js/blocks/handpicked-products/edit-mode.tsx +++ b/assets/js/blocks/handpicked-products/edit-mode.tsx @@ -30,7 +30,7 @@ export const HandpickedProductsEditMode = ( setIsEditing( ! isEditing ); debouncedSpeak( __( - 'Showing Hand-picked Products block preview.', + 'Now displaying a preview of the Hand-picked Products block.', 'woo-gutenberg-products-block' ) ); diff --git a/assets/js/blocks/mini-cart/edit.tsx b/assets/js/blocks/mini-cart/edit.tsx index d37968ae7..b8b51e42b 100644 --- a/assets/js/blocks/mini-cart/edit.tsx +++ b/assets/js/blocks/mini-cart/edit.tsx @@ -111,7 +111,7 @@ const Edit = ( { attributes, setAttributes }: Props ): ReactElement => { >

    { __( - 'Edit the appearance of your empty and filled mini cart contents.', + 'Edit the appearance of the Mini Cart.', 'woo-gutenberg-products-block' ) }

    diff --git a/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/empty-mini-cart-contents-block/block.json b/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/empty-mini-cart-contents-block/block.json index b8017ef7c..7b32de681 100644 --- a/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/empty-mini-cart-contents-block/block.json +++ b/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/empty-mini-cart-contents-block/block.json @@ -1,8 +1,8 @@ { "name": "woocommerce/empty-mini-cart-contents-block", "version": "1.0.0", - "title": "Empty Mini Cart Contents", - "description": "Contains blocks that are displayed when the mini cart is empty.", + "title": "Empty Mini Cart view.", + "description": "Blocks that are displayed when the Mini Cart is empty.", "category": "woocommerce", "supports": { "align": false, diff --git a/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/filled-mini-cart-contents-block/block.json b/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/filled-mini-cart-contents-block/block.json index 2f529ee20..f40d4d300 100644 --- a/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/filled-mini-cart-contents-block/block.json +++ b/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/filled-mini-cart-contents-block/block.json @@ -1,8 +1,8 @@ { "name": "woocommerce/filled-mini-cart-contents-block", "version": "1.0.0", - "title": "Filled Mini Cart Contents", - "description": "Contains blocks that are displayed when the mini cart has products.", + "title": "Filled Mini Cart view", + "description": "Contains blocks that display the content of the Mini Cart.", "category": "woocommerce", "supports": { "align": false, diff --git a/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-shopping-button-block/block.json b/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-shopping-button-block/block.json index 397a99d95..c81b1c38c 100644 --- a/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-shopping-button-block/block.json +++ b/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-shopping-button-block/block.json @@ -2,7 +2,7 @@ "name": "woocommerce/mini-cart-shopping-button-block", "version": "1.0.0", "title": "Mini Cart Shopping Button", - "description": "Block that displays the shopping button for the Mini Cart block.", + "description": "Block that displays the shopping button when the Mini Cart is empty.", "category": "woocommerce", "supports": { "align": false, diff --git a/assets/js/blocks/price-filter/block.json b/assets/js/blocks/price-filter/block.json index 2bfd91e85..8142a609a 100644 --- a/assets/js/blocks/price-filter/block.json +++ b/assets/js/blocks/price-filter/block.json @@ -2,7 +2,7 @@ "name": "woocommerce/price-filter", "version": "1.0.0", "title": "Filter by Price", - "description": "Allow customers to filter products by price range.", + "description": "Enable customers to filter the product grid by choosing a price range.", "category": "woocommerce", "keywords": [ "WooCommerce" ], "supports": { diff --git a/assets/js/blocks/price-filter/edit.tsx b/assets/js/blocks/price-filter/edit.tsx index 4e2fbbb71..fca50c6d9 100644 --- a/assets/js/blocks/price-filter/edit.tsx +++ b/assets/js/blocks/price-filter/edit.tsx @@ -102,7 +102,7 @@ export default function ( { help={ showFilterButton ? __( - 'Products will only update when the button is pressed.', + 'Products will only update when the button is clicked.', 'woo-gutenberg-products-block' ) : __( @@ -149,7 +149,7 @@ export default function ( { >

    { __( - "Products with prices are needed for filtering by price. You haven't created any products yet.", + 'To filter your products by price you first need to assign prices to your products.', 'woo-gutenberg-products-block' ) }

    diff --git a/assets/js/blocks/product-categories/block.js b/assets/js/blocks/product-categories/block.js index 854d15657..fdcc604d7 100644 --- a/assets/js/blocks/product-categories/block.js +++ b/assets/js/blocks/product-categories/block.js @@ -27,7 +27,7 @@ const EmptyPlaceholder = () => ( className="wc-block-product-categories" > { __( - "This block shows product categories for your store. To use it, you'll first need to create a product and assign it to a category.", + 'This block displays the product categories for your store. To use it you first need to create a product and assign it to a category.', 'woo-gutenberg-products-block' ) } @@ -92,17 +92,6 @@ const ProductCategoriesBlock = ( { attributes, setAttributes, name } ) => { 'Show product count', 'woo-gutenberg-products-block' ) } - help={ - hasCount - ? __( - 'Product count is visible.', - 'woo-gutenberg-products-block' - ) - : __( - 'Product count is hidden.', - 'woo-gutenberg-products-block' - ) - } checked={ hasCount } onChange={ () => setAttributes( { hasCount: ! hasCount } ) @@ -136,17 +125,6 @@ const ProductCategoriesBlock = ( { attributes, setAttributes, name } ) => { 'Show hierarchy', 'woo-gutenberg-products-block' ) } - help={ - isHierarchical - ? __( - 'Hierarchy is visible.', - 'woo-gutenberg-products-block' - ) - : __( - 'Hierarchy is hidden.', - 'woo-gutenberg-products-block' - ) - } checked={ isHierarchical } onChange={ () => setAttributes( { @@ -159,17 +137,6 @@ const ProductCategoriesBlock = ( { attributes, setAttributes, name } ) => { 'Show empty categories', 'woo-gutenberg-products-block' ) } - help={ - hasEmpty - ? __( - 'Empty categories are visible.', - 'woo-gutenberg-products-block' - ) - : __( - 'Empty categories are hidden.', - 'woo-gutenberg-products-block' - ) - } checked={ hasEmpty } onChange={ () => setAttributes( { hasEmpty: ! hasEmpty } ) diff --git a/assets/js/blocks/product-category/edit-mode.tsx b/assets/js/blocks/product-category/edit-mode.tsx index e2de7e090..fa2cef297 100644 --- a/assets/js/blocks/product-category/edit-mode.tsx +++ b/assets/js/blocks/product-category/edit-mode.tsx @@ -47,7 +47,7 @@ export const ProductsByCategoryEditMode = ( save(); debouncedSpeak( __( - 'Showing Products by Category block preview.', + 'Now displaying a preview of the reviews for the products in the selected categories.', 'woo-gutenberg-products-block' ) ); @@ -57,7 +57,7 @@ export const ProductsByCategoryEditMode = ( stopEditing(); debouncedSpeak( __( - 'Showing Products by Category block preview.', + 'Now displaying a preview of the reviews for the products in the selected categories.', 'woo-gutenberg-products-block' ) ); diff --git a/assets/js/blocks/product-search/edit.js b/assets/js/blocks/product-search/edit.js index 8d22a4263..c881d261b 100644 --- a/assets/js/blocks/product-search/edit.js +++ b/assets/js/blocks/product-search/edit.js @@ -60,17 +60,6 @@ const Edit = ( { 'Show search field label', 'woo-gutenberg-products-block' ) } - help={ - hasLabel - ? __( - 'Label is visible.', - 'woo-gutenberg-products-block' - ) - : __( - 'Label is hidden.', - 'woo-gutenberg-products-block' - ) - } checked={ hasLabel } onChange={ () => setAttributes( { hasLabel: ! hasLabel } ) diff --git a/assets/js/blocks/product-tag/block.js b/assets/js/blocks/product-tag/block.js index 5c869dc56..3c19c41fb 100644 --- a/assets/js/blocks/product-tag/block.js +++ b/assets/js/blocks/product-tag/block.js @@ -311,7 +311,7 @@ class ProductsByTagBlock extends Component { className="wc-block-products-grid wc-block-product-tag" > { __( - "This block displays products from selected tags. In order to preview this you'll first need to create a product and assign it some tags.", + 'This block displays products from selected tags. To use it you first need to create products and assign tags to them.', 'woo-gutenberg-products-block' ) } diff --git a/assets/js/blocks/products/all-products/edit.js b/assets/js/blocks/products/all-products/edit.js index ae0269294..e7ba049b5 100644 --- a/assets/js/blocks/products/all-products/edit.js +++ b/assets/js/blocks/products/all-products/edit.js @@ -149,7 +149,7 @@ class Editor extends Component { { icon: 'edit', title: __( - 'Edit inner product layout', + 'Edit the layout of each product', 'woo-gutenberg-products-block' ), onClick: () => this.togglePreview(), @@ -208,7 +208,7 @@ class Editor extends Component {
    { __( - 'Edit the blocks inside the preview below to change the content displayed for each product within the product grid.', + 'Edit the blocks inside the example below to change the content displayed for all products within the product grid.', 'woo-gutenberg-products-block' ) } diff --git a/assets/js/blocks/reviews/reviews-by-category/edit.js b/assets/js/blocks/reviews/reviews-by-category/edit.js index 316948491..29d5b1241 100644 --- a/assets/js/blocks/reviews/reviews-by-category/edit.js +++ b/assets/js/blocks/reviews/reviews-by-category/edit.js @@ -94,7 +94,7 @@ const ReviewsByCategoryEditor = ( { setAttributes( { editMode: false } ); debouncedSpeak( __( - 'Showing Reviews by Category block preview.', + 'Now displaying a preview of the reviews for the products in the selected categories.', 'woo-gutenberg-products-block' ) ); diff --git a/assets/js/blocks/reviews/reviews-by-product/index.js b/assets/js/blocks/reviews/reviews-by-product/index.js index 32b3531ff..ff6d152d4 100644 --- a/assets/js/blocks/reviews/reviews-by-product/index.js +++ b/assets/js/blocks/reviews/reviews-by-product/index.js @@ -30,7 +30,7 @@ registerBlockType( 'woocommerce/reviews-by-product', { category: 'woocommerce', keywords: [ __( 'WooCommerce', 'woo-gutenberg-products-block' ) ], description: __( - 'Show reviews of your products to build trust.', + 'Display reviews for your products.', 'woo-gutenberg-products-block' ), supports: { diff --git a/assets/js/blocks/stock-filter/edit.tsx b/assets/js/blocks/stock-filter/edit.tsx index d3f079471..7d7d9103b 100644 --- a/assets/js/blocks/stock-filter/edit.tsx +++ b/assets/js/blocks/stock-filter/edit.tsx @@ -40,20 +40,9 @@ const Edit = ( { > setAttributes( { @@ -73,11 +62,11 @@ const Edit = ( { help={ showFilterButton ? __( - 'Products will only update when the button is pressed.', + 'Products will only update when the button is clicked.', 'woo-gutenberg-products-block' ) : __( - 'Products will update as options are selected.', + 'Products will update as soon as attributes are selected.', 'woo-gutenberg-products-block' ) } diff --git a/assets/js/blocks/stock-filter/index.tsx b/assets/js/blocks/stock-filter/index.tsx index 9bb0b96af..80477ae79 100644 --- a/assets/js/blocks/stock-filter/index.tsx +++ b/assets/js/blocks/stock-filter/index.tsx @@ -18,7 +18,7 @@ import type { Attributes } from './types'; registerBlockType( metadata, { title: __( 'Filter Products by Stock', 'woo-gutenberg-products-block' ), description: __( - 'Allow customers to filter the grid by products stock status. Works in combination with the All Products block.', + 'Enable customers to filter the product grid by stock status.', 'woo-gutenberg-products-block' ), icon: { diff --git a/assets/js/editor-components/error-placeholder/error-message.tsx b/assets/js/editor-components/error-placeholder/error-message.tsx index 2f0c113a1..7f7d111e5 100644 --- a/assets/js/editor-components/error-placeholder/error-message.tsx +++ b/assets/js/editor-components/error-placeholder/error-message.tsx @@ -19,7 +19,7 @@ export interface ErrorMessageProps { const getErrorMessage = ( { message, type }: ErrorObject ) => { if ( ! message ) { return __( - 'An unknown error occurred which prevented the block from being updated.', + 'An error has prevented the block from being updated.', 'woo-gutenberg-products-block' ); } diff --git a/assets/js/editor-components/grid-content-control/index.js b/assets/js/editor-components/grid-content-control/index.js index 9f7d83e4e..ab90b83e6 100644 --- a/assets/js/editor-components/grid-content-control/index.js +++ b/assets/js/editor-components/grid-content-control/index.js @@ -21,17 +21,6 @@ const GridContentControl = ( { onChange, settings } ) => { <> onChange( { ...settings, image: ! imageIsVisible } ) @@ -39,49 +28,16 @@ const GridContentControl = ( { onChange, settings } ) => { /> onChange( { ...settings, title: ! title } ) } /> onChange( { ...settings, price: ! price } ) } /> onChange( { ...settings, rating: ! rating } ) } /> @@ -90,17 +46,6 @@ const GridContentControl = ( { onChange, settings } ) => { 'Add to Cart button', 'woo-gutenberg-products-block' ) } - help={ - button - ? __( - 'Add to Cart button is visible.', - 'woo-gutenberg-products-block' - ) - : __( - 'Add to Cart button is hidden.', - 'woo-gutenberg-products-block' - ) - } checked={ button } onChange={ () => onChange( { ...settings, button: ! button } ) } /> diff --git a/assets/js/editor-components/grid-layout-control/index.js b/assets/js/editor-components/grid-layout-control/index.js index ff269f75c..87c6820d3 100644 --- a/assets/js/editor-components/grid-layout-control/index.js +++ b/assets/js/editor-components/grid-layout-control/index.js @@ -57,13 +57,13 @@ const GridLayoutControl = ( { />