From 42d7444996aafbb60759ced8149ce9fc3a3c8bd7 Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Tue, 9 Dec 2025 11:47:51 +0800 Subject: [PATCH 1/8] Blocks: Use apiVersion 3 --- includes/blocks/broadcasts/block.json | 2 +- .../form-builder-field-custom/block.json | 2 +- .../form-builder-field-email/block.json | 2 +- .../blocks/form-builder-field-name/block.json | 2 +- includes/blocks/form-builder/block.json | 2 +- includes/blocks/form/block.json | 2 +- includes/blocks/formtrigger/block.json | 2 +- includes/blocks/product/block.json | 2 +- resources/backend/js/gutenberg.js | 31 ++++++++++--------- 9 files changed, 25 insertions(+), 22 deletions(-) diff --git a/includes/blocks/broadcasts/block.json b/includes/blocks/broadcasts/block.json index df0b5217e..650a77901 100644 --- a/includes/blocks/broadcasts/block.json +++ b/includes/blocks/broadcasts/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 1, + "apiVersion": 3, "name": "convertkit/broadcasts", "title": "Kit Broadcasts", "category": "kit", diff --git a/includes/blocks/form-builder-field-custom/block.json b/includes/blocks/form-builder-field-custom/block.json index f474b6c33..a5ab5b7fe 100644 --- a/includes/blocks/form-builder-field-custom/block.json +++ b/includes/blocks/form-builder-field-custom/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 1, + "apiVersion": 3, "name": "convertkit/form-builder-field-custom", "title": "Kit Form Builder: Custom Field", "category": "kit", diff --git a/includes/blocks/form-builder-field-email/block.json b/includes/blocks/form-builder-field-email/block.json index 0f63ef98b..209e6e373 100644 --- a/includes/blocks/form-builder-field-email/block.json +++ b/includes/blocks/form-builder-field-email/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 1, + "apiVersion": 3, "name": "convertkit/form-builder-field-email", "title": "Kit Form Builder: Email Field", "category": "kit", diff --git a/includes/blocks/form-builder-field-name/block.json b/includes/blocks/form-builder-field-name/block.json index 58a7b2d15..b8a6a1b01 100644 --- a/includes/blocks/form-builder-field-name/block.json +++ b/includes/blocks/form-builder-field-name/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 1, + "apiVersion": 3, "name": "convertkit/form-builder-field-name", "title": "Kit Form Builder: Name Field", "category": "kit", diff --git a/includes/blocks/form-builder/block.json b/includes/blocks/form-builder/block.json index f8e60ea92..edacd8a45 100644 --- a/includes/blocks/form-builder/block.json +++ b/includes/blocks/form-builder/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 1, + "apiVersion": 3, "name": "convertkit/form-builder", "title": "Kit Form Builder", "category": "kit", diff --git a/includes/blocks/form/block.json b/includes/blocks/form/block.json index 312dc2de5..35c9727c9 100644 --- a/includes/blocks/form/block.json +++ b/includes/blocks/form/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 1, + "apiVersion": 3, "name": "convertkit/form", "title": "Kit Form", "category": "kit", diff --git a/includes/blocks/formtrigger/block.json b/includes/blocks/formtrigger/block.json index 3dba03250..b9ea5e4a2 100644 --- a/includes/blocks/formtrigger/block.json +++ b/includes/blocks/formtrigger/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 1, + "apiVersion": 3, "name": "convertkit/formtrigger", "title": "Kit Form Trigger", "category": "kit", diff --git a/includes/blocks/product/block.json b/includes/blocks/product/block.json index 534a3123d..27fc0d9e5 100644 --- a/includes/blocks/product/block.json +++ b/includes/blocks/product/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 1, + "apiVersion": 3, "name": "convertkit/product", "title": "Kit Product", "category": "kit", diff --git a/resources/backend/js/gutenberg.js b/resources/backend/js/gutenberg.js index 5fd597d28..e22e3f5e0 100644 --- a/resources/backend/js/gutenberg.js +++ b/resources/backend/js/gutenberg.js @@ -41,7 +41,7 @@ function convertKitGutenbergRegisterBlock(block) { // Define some constants for the various items we'll use. const el = element.createElement; const { registerBlockType } = blocks; - const { InspectorControls, InnerBlocks } = editor; + const { InspectorControls, InnerBlocks, useBlockProps } = editor; const { Fragment, useState } = element; const { Button, @@ -350,13 +350,16 @@ function convertKitGutenbergRegisterBlock(block) { * @return {Object} Block settings sidebar elements. */ const editBlock = function (props) { + + const blockProps = useBlockProps(); + // If requesting an example of how this block looks (which is requested // when the user adds a new block and hovers over this block's icon), // show the preview image. if (props.attributes.is_gutenberg_example === true) { return ( - Fragment, - {}, + 'div', + blockProps, el('img', { src: block.gutenberg_example_image, }) @@ -386,7 +389,7 @@ function convertKitGutenbergRegisterBlock(block) { block, props ); - return editBlockWithPanelsAndPreview(panels, preview); + return editBlockWithPanelsAndPreview(panels, preview, blockProps); } // If no settings have been defined for this block, render the block with a notice @@ -401,7 +404,7 @@ function convertKitGutenbergRegisterBlock(block) { block.name, block.gutenberg_help_description ); - return editBlockWithPanelsAndPreview(panels, preview); + return editBlockWithPanelsAndPreview(panels, preview, blockProps); } // If no render_callback is defined, render the block. @@ -428,7 +431,7 @@ function convertKitGutenbergRegisterBlock(block) { template, }) ); - return editBlockWithPanelsAndPreview(panels, preview); + return editBlockWithPanelsAndPreview(panels, preview, blockProps); } // Use the block's PHP's render() function by calling the ServerSideRender component. @@ -440,7 +443,7 @@ function convertKitGutenbergRegisterBlock(block) { // apply styles with i.e. convertkit-block.name. className: 'convertkit-ssr-' + block.name, }); - return editBlockWithPanelsAndPreview(panels, preview); + return editBlockWithPanelsAndPreview(panels, preview, blockProps); }; /** @@ -453,14 +456,14 @@ function convertKitGutenbergRegisterBlock(block) { * @param {Object} preview Block preview. * @return {Object} Block settings sidebar elements. */ - const editBlockWithPanelsAndPreview = function (panels, preview) { + const editBlockWithPanelsAndPreview = function (panels, preview, blockProps) { return el( - // Sidebar Panel with Fields. - Fragment, - {}, - el(InspectorControls, {}, panels), - // Block Preview. - preview + 'div', + blockProps, + [ + el(InspectorControls, {}, panels), + preview + ] ); }; From 3f6894c76a08b6238d167ad8ef6a5edf6191d05d Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Tue, 9 Dec 2025 12:14:53 +0800 Subject: [PATCH 2/8] Remove Fragment, so blocks can be interacted with; add blockProps to output --- resources/backend/js/gutenberg.js | 36 ++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/resources/backend/js/gutenberg.js b/resources/backend/js/gutenberg.js index e22e3f5e0..d172ce1ff 100644 --- a/resources/backend/js/gutenberg.js +++ b/resources/backend/js/gutenberg.js @@ -42,7 +42,7 @@ function convertKitGutenbergRegisterBlock(block) { const el = element.createElement; const { registerBlockType } = blocks; const { InspectorControls, InnerBlocks, useBlockProps } = editor; - const { Fragment, useState } = element; + const { useState } = element; const { Button, Icon, @@ -357,7 +357,7 @@ function convertKitGutenbergRegisterBlock(block) { // when the user adds a new block and hovers over this block's icon), // show the preview image. if (props.attributes.is_gutenberg_example === true) { - return ( + return el( 'div', blockProps, el('img', { @@ -476,7 +476,12 @@ function convertKitGutenbergRegisterBlock(block) { */ const saveBlock = function () { if (typeof block.gutenberg_template !== 'undefined') { - return el('div', {}, el(InnerBlocks.Content)); + // Use useBlockProps.save() to preserve styling classes and attributes + // from block supports (colors, typography, spacing, etc.) + const blockProps = useBlockProps.save({ + className: 'wp-block-' + block.name.replace(/\//g, '-'), + }); + return el('div', blockProps, el(InnerBlocks.Content)); } // Deliberate; preview in the editor is determined by the return statement in `edit` above. @@ -837,6 +842,31 @@ function convertKitGutenbergRegisterBlock(block) { // Output. save: saveBlock, + + // Migrate blocks created with apiVersion: 1 to apiVersion: 3. + // @TODO Fixes Form Builder; do we need this with other blocks? + // @TODO Write a test with a block created in apiVersion: 1 and migrated to apiVersion: 3. + deprecated: [ + { + attributes: block.attributes, + supports: block.supports, + save: function (props) { + if (typeof block.gutenberg_template !== 'undefined') { + // Use useBlockProps.save() to preserve styling classes and attributes + // from block supports (colors, typography, spacing, etc.) + const blockProps = useBlockProps.save({ + className: 'wp-block-' + block.name.replace(/\//g, '-'), + }); + return el('div', blockProps, el(InnerBlocks.Content)); + } + + // Deliberate; preview in the editor is determined by the return statement in `edit` above. + // On the frontend site, the block's render() PHP class is always called, so we dynamically + // fetch the content. + return null; + }, + }, + ] }); })( window.wp.blocks, From 89c444e44017e97bde4f2869db3a4644397c2e44 Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Tue, 9 Dec 2025 12:20:54 +0800 Subject: [PATCH 3/8] Remove className and deprecated property --- resources/backend/js/gutenberg.js | 31 ++----------------------------- 1 file changed, 2 insertions(+), 29 deletions(-) diff --git a/resources/backend/js/gutenberg.js b/resources/backend/js/gutenberg.js index d172ce1ff..823c70b32 100644 --- a/resources/backend/js/gutenberg.js +++ b/resources/backend/js/gutenberg.js @@ -478,9 +478,7 @@ function convertKitGutenbergRegisterBlock(block) { if (typeof block.gutenberg_template !== 'undefined') { // Use useBlockProps.save() to preserve styling classes and attributes // from block supports (colors, typography, spacing, etc.) - const blockProps = useBlockProps.save({ - className: 'wp-block-' + block.name.replace(/\//g, '-'), - }); + const blockProps = useBlockProps.save(); return el('div', blockProps, el(InnerBlocks.Content)); } @@ -841,32 +839,7 @@ function convertKitGutenbergRegisterBlock(block) { edit: editBlock, // Output. - save: saveBlock, - - // Migrate blocks created with apiVersion: 1 to apiVersion: 3. - // @TODO Fixes Form Builder; do we need this with other blocks? - // @TODO Write a test with a block created in apiVersion: 1 and migrated to apiVersion: 3. - deprecated: [ - { - attributes: block.attributes, - supports: block.supports, - save: function (props) { - if (typeof block.gutenberg_template !== 'undefined') { - // Use useBlockProps.save() to preserve styling classes and attributes - // from block supports (colors, typography, spacing, etc.) - const blockProps = useBlockProps.save({ - className: 'wp-block-' + block.name.replace(/\//g, '-'), - }); - return el('div', blockProps, el(InnerBlocks.Content)); - } - - // Deliberate; preview in the editor is determined by the return statement in `edit` above. - // On the frontend site, the block's render() PHP class is always called, so we dynamically - // fetch the content. - return null; - }, - }, - ] + save: saveBlock }); })( window.wp.blocks, From 8832f593d2d1684c8451050394efd69380fc5eaa Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Tue, 9 Dec 2025 16:11:49 +0800 Subject: [PATCH 4/8] Tests: Update iframe switch helper description --- tests/Support/Helper/WPGutenberg.php | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/tests/Support/Helper/WPGutenberg.php b/tests/Support/Helper/WPGutenberg.php index fd5781988..84548173c 100644 --- a/tests/Support/Helper/WPGutenberg.php +++ b/tests/Support/Helper/WPGutenberg.php @@ -11,11 +11,13 @@ class WPGutenberg extends \Codeception\Module { /** * Helper method to switch to the Gutenberg editor Iframe. - * Use this method if all blocks use the Block API v3, - * as this means Gutenberg will be served in an Iframe. - * At present, we use v2 to provide backwards compatibility - * down to WordPress 5.6: - * https://developer.wordpress.org/block-editor/reference-guides/block-api/block-api-versions/ + * Use this method if all blocks use the block editor apiVersion 3, + * as this means the block editor will be served in an Iframe. + * + * Any blocks using apiVersion 2 or lower will result in the block editor + * *not* being served in an Iframe + * + * @see https://developer.wordpress.org/block-editor/reference-guides/block-api/block-api-versions/ * * @since 2.7.7 * From 13a6ae750f4cc6ce635dc92aded83983eeba1367 Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Tue, 9 Dec 2025 16:45:45 +0800 Subject: [PATCH 5/8] JS Coding Standards --- resources/backend/js/gutenberg.js | 44 ++++++++++++++++++++----------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/resources/backend/js/gutenberg.js b/resources/backend/js/gutenberg.js index 81149eacf..fa34e7a76 100644 --- a/resources/backend/js/gutenberg.js +++ b/resources/backend/js/gutenberg.js @@ -365,7 +365,6 @@ function convertKitGutenbergRegisterBlock(block) { * @return {Object} Block settings sidebar elements. */ const editBlock = function (props) { - const blockProps = useBlockProps(); // If requesting an example of how this block looks (which is requested @@ -404,7 +403,11 @@ function convertKitGutenbergRegisterBlock(block) { block, props ); - return editBlockWithPanelsAndPreview(panels, preview, blockProps); + return editBlockWithPanelsAndPreview( + panels, + preview, + blockProps + ); } // If no settings have been defined for this block, render the block with a notice @@ -419,7 +422,11 @@ function convertKitGutenbergRegisterBlock(block) { block.name, block.gutenberg_help_description ); - return editBlockWithPanelsAndPreview(panels, preview, blockProps); + return editBlockWithPanelsAndPreview( + panels, + preview, + blockProps + ); } // If no render_callback is defined, render the block. @@ -446,7 +453,11 @@ function convertKitGutenbergRegisterBlock(block) { template, }) ); - return editBlockWithPanelsAndPreview(panels, preview, blockProps); + return editBlockWithPanelsAndPreview( + panels, + preview, + blockProps + ); } // Use the block's PHP's render() function by calling the ServerSideRender component. @@ -467,19 +478,20 @@ function convertKitGutenbergRegisterBlock(block) { * * @since 3.0.0 * - * @param {Object} panels Block panels. - * @param {Object} preview Block preview. + * @param blockProps + * @param {Object} panels Block panels. + * @param {Object} preview Block preview. * @return {Object} Block settings sidebar elements. */ - const editBlockWithPanelsAndPreview = function (panels, preview, blockProps) { - return el( - 'div', - blockProps, - [ - el(InspectorControls, {}, panels), - preview - ] - ); + const editBlockWithPanelsAndPreview = function ( + panels, + preview, + blockProps + ) { + return el('div', blockProps, [ + el(InspectorControls, {}, panels), + preview, + ]); }; /** @@ -860,7 +872,7 @@ function convertKitGutenbergRegisterBlock(block) { edit: editBlock, // Output. - save: saveBlock + save: saveBlock, }); })( window.wp.blocks, From 3ee7c27bcbe29d08816ff826afd67675afe33c7c Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Tue, 9 Dec 2025 21:55:27 +0800 Subject: [PATCH 6/8] Use apiVersion 2 Compatible with WordPress 5.6+ --- includes/blocks/broadcasts/block.json | 2 +- includes/blocks/form-builder-field-custom/block.json | 2 +- includes/blocks/form-builder-field-email/block.json | 2 +- includes/blocks/form-builder-field-name/block.json | 2 +- includes/blocks/form-builder/block.json | 2 +- includes/blocks/form/block.json | 2 +- includes/blocks/formtrigger/block.json | 2 +- includes/blocks/product/block.json | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/includes/blocks/broadcasts/block.json b/includes/blocks/broadcasts/block.json index 650a77901..966fdea87 100644 --- a/includes/blocks/broadcasts/block.json +++ b/includes/blocks/broadcasts/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 3, + "apiVersion": 2, "name": "convertkit/broadcasts", "title": "Kit Broadcasts", "category": "kit", diff --git a/includes/blocks/form-builder-field-custom/block.json b/includes/blocks/form-builder-field-custom/block.json index a5ab5b7fe..17e329ccd 100644 --- a/includes/blocks/form-builder-field-custom/block.json +++ b/includes/blocks/form-builder-field-custom/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 3, + "apiVersion": 2, "name": "convertkit/form-builder-field-custom", "title": "Kit Form Builder: Custom Field", "category": "kit", diff --git a/includes/blocks/form-builder-field-email/block.json b/includes/blocks/form-builder-field-email/block.json index 209e6e373..837c06cb3 100644 --- a/includes/blocks/form-builder-field-email/block.json +++ b/includes/blocks/form-builder-field-email/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 3, + "apiVersion": 2, "name": "convertkit/form-builder-field-email", "title": "Kit Form Builder: Email Field", "category": "kit", diff --git a/includes/blocks/form-builder-field-name/block.json b/includes/blocks/form-builder-field-name/block.json index b8a6a1b01..8e3d5f212 100644 --- a/includes/blocks/form-builder-field-name/block.json +++ b/includes/blocks/form-builder-field-name/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 3, + "apiVersion": 2, "name": "convertkit/form-builder-field-name", "title": "Kit Form Builder: Name Field", "category": "kit", diff --git a/includes/blocks/form-builder/block.json b/includes/blocks/form-builder/block.json index edacd8a45..204b305b9 100644 --- a/includes/blocks/form-builder/block.json +++ b/includes/blocks/form-builder/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 3, + "apiVersion": 2, "name": "convertkit/form-builder", "title": "Kit Form Builder", "category": "kit", diff --git a/includes/blocks/form/block.json b/includes/blocks/form/block.json index 35c9727c9..8b677bb10 100644 --- a/includes/blocks/form/block.json +++ b/includes/blocks/form/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 3, + "apiVersion": 2, "name": "convertkit/form", "title": "Kit Form", "category": "kit", diff --git a/includes/blocks/formtrigger/block.json b/includes/blocks/formtrigger/block.json index b9ea5e4a2..fa7158caa 100644 --- a/includes/blocks/formtrigger/block.json +++ b/includes/blocks/formtrigger/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 3, + "apiVersion": 2, "name": "convertkit/formtrigger", "title": "Kit Form Trigger", "category": "kit", diff --git a/includes/blocks/product/block.json b/includes/blocks/product/block.json index 27fc0d9e5..cdf8e35e9 100644 --- a/includes/blocks/product/block.json +++ b/includes/blocks/product/block.json @@ -1,6 +1,6 @@ { "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 3, + "apiVersion": 2, "name": "convertkit/product", "title": "Kit Product", "category": "kit", From 193d379473845ae407d9e83224cb085595507fa8 Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Tue, 9 Dec 2025 22:36:12 +0800 Subject: [PATCH 7/8] Coding standards --- tests/Support/Helper/WPGutenberg.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Support/Helper/WPGutenberg.php b/tests/Support/Helper/WPGutenberg.php index 84548173c..21b631fd1 100644 --- a/tests/Support/Helper/WPGutenberg.php +++ b/tests/Support/Helper/WPGutenberg.php @@ -16,7 +16,7 @@ class WPGutenberg extends \Codeception\Module * * Any blocks using apiVersion 2 or lower will result in the block editor * *not* being served in an Iframe - * + * * @see https://developer.wordpress.org/block-editor/reference-guides/block-api/block-api-versions/ * * @since 2.7.7 From 082cbb382355247772473fa5e518239a5a037749 Mon Sep 17 00:00:00 2001 From: Tim Carr Date: Tue, 9 Dec 2025 22:49:35 +0800 Subject: [PATCH 8/8] Wrap notice in div with useBlockProps to style correctly in the block editor --- resources/backend/js/gutenberg.js | 40 +++++++++++++++++++------------ 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/resources/backend/js/gutenberg.js b/resources/backend/js/gutenberg.js index fa34e7a76..ed05041dc 100644 --- a/resources/backend/js/gutenberg.js +++ b/resources/backend/js/gutenberg.js @@ -364,9 +364,12 @@ function convertKitGutenbergRegisterBlock(block) { * @param {Object} props Block properties. * @return {Object} Block settings sidebar elements. */ - const editBlock = function (props) { + const EditBlock = function (props) { const blockProps = useBlockProps(); + console.log(props); + console.log(blockProps); + // If requesting an example of how this block looks (which is requested // when the user adds a new block and hovers over this block's icon), // show the preview image. @@ -383,7 +386,7 @@ function convertKitGutenbergRegisterBlock(block) { // If no access token has been defined in the Plugin, or no resources exist in Kit // for this block, show a message in the block to tell the user what to do. if (!block.has_access_token || !block.has_resources) { - return DisplayNoticeWithLink(props); + return DisplayNoticeWithLink(props, blockProps); } // Build Inspector Control Panels, which will appear in the Sidebar when editing the Block. @@ -478,10 +481,10 @@ function convertKitGutenbergRegisterBlock(block) { * * @since 3.0.0 * - * @param blockProps * @param {Object} panels Block panels. * @param {Object} preview Block preview. - * @return {Object} Block settings sidebar elements. + * @param {Object} blockProps Block properties. + * @return {Object} Block settings sidebar elements. */ const editBlockWithPanelsAndPreview = function ( panels, @@ -522,10 +525,11 @@ function convertKitGutenbergRegisterBlock(block) { * * @since 2.2.5 * - * @param {Object} props Block properties. - * @return {Object} Notice. + * @param {Object} props Block properties. + * @param {Object} blockProps Block properties. + * @return {Object} Notice. */ - const DisplayNoticeWithLink = function (props) { + const DisplayNoticeWithLink = function (props, blockProps) { // useState to toggle the refresh button's disabled state. const [buttonDisabled, setButtonDisabled] = useState(false); @@ -559,13 +563,19 @@ function convertKitGutenbergRegisterBlock(block) { // Return the element. return el( 'div', - { - // convertkit-no-content class allows resources/backend/css/gutenberg.css - // to apply styling/branding to the block. - className: - 'convertkit-' + block.name + ' convertkit-no-content', - }, - elements + blockProps, + el( + 'div', + { + // convertkit-no-content class allows resources/backend/css/gutenberg.css + // to apply styling/branding to the block. + className: + 'convertkit-' + + block.name + + ' convertkit-no-content', + }, + elements + ) ); }; @@ -869,7 +879,7 @@ function convertKitGutenbergRegisterBlock(block) { }, // Editor. - edit: editBlock, + edit: EditBlock, // Output. save: saveBlock,