Block Widgets: add block transforms for legacy widgets with a block equivalent (https://github.com/woocommerce/woocommerce-blocks/pull/4292)

* Block Widgets: add transforms for legacy widgets with a block equivalent

* Update All Reviews block transform to more closely resemble the widget

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

* Convert integers to boolean

Co-authored-by: Albert Juhé Lluveras <contact@albertjuhe.com>
This commit is contained in:
Michael P. Pfeiffer 2021-06-04 16:47:30 +02:00 committed by GitHub
parent ffa77f26f7
commit 20f70b6626
3 changed files with 63 additions and 3 deletions

View File

@ -2,7 +2,7 @@
* External dependencies * External dependencies
*/ */
import { __ } from '@wordpress/i18n'; import { __ } from '@wordpress/i18n';
import { registerBlockType } from '@wordpress/blocks'; import { createBlock, registerBlockType } from '@wordpress/blocks';
import { Icon, list } from '@woocommerce/icons'; import { Icon, list } from '@woocommerce/icons';
/** /**
@ -83,6 +83,26 @@ registerBlockType( 'woocommerce/product-categories', {
}, },
}, },
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_categories' &&
!! instance?.raw,
transform: ( { instance } ) =>
createBlock( 'woocommerce/product-categories', {
hasCount: !! instance.raw.count,
hasEmpty: ! instance.raw.hide_empty,
isDropdown: !! instance.raw.dropdown,
isHierarchical: !! instance.raw.hierarchical,
} ),
},
],
},
deprecated: [ deprecated: [
{ {
// Deprecate HTML save method in favor of dynamic rendering. // Deprecate HTML save method in favor of dynamic rendering.

View File

@ -2,7 +2,7 @@
* External dependencies * External dependencies
*/ */
import { __ } from '@wordpress/i18n'; import { __ } from '@wordpress/i18n';
import { registerBlockType } from '@wordpress/blocks'; import { createBlock, registerBlockType } from '@wordpress/blocks';
import { Icon, search } from '@woocommerce/icons'; import { Icon, search } from '@woocommerce/icons';
/** /**
* Internal dependencies * Internal dependencies
@ -71,6 +71,25 @@ registerBlockType( 'woocommerce/product-search', {
}, },
}, },
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,
} ),
},
],
},
edit, edit,
/** /**

View File

@ -2,7 +2,7 @@
* External dependencies * External dependencies
*/ */
import { __ } from '@wordpress/i18n'; import { __ } from '@wordpress/i18n';
import { registerBlockType } from '@wordpress/blocks'; import { createBlock, registerBlockType } from '@wordpress/blocks';
import { Icon, discussion } from '@woocommerce/icons'; import { Icon, discussion } from '@woocommerce/icons';
/** /**
@ -51,6 +51,27 @@ registerBlockType( 'woocommerce/all-reviews', {
}, },
}, },
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_recent_reviews' && !! instance?.raw,
transform: ( { instance } ) =>
createBlock( 'woocommerce/all-reviews', {
reviewsOnPageLoad: instance.raw.number,
imageType: 'product',
showLoadMore: false,
showOrderby: false,
showReviewDate: false,
showReviewContent: false,
} ),
},
],
},
/** /**
* Renders and manages the block. * Renders and manages the block.
* *