From e6ce2af782b7d40f37747143e63a9572c7e90ff2 Mon Sep 17 00:00:00 2001 From: Mikael Korpela Date: Fri, 13 Feb 2026 10:35:53 +0200 Subject: [PATCH 1/9] Forms: Consolidate allowed core blocks between JavaScript and PHP Synchronize the allowed core blocks lists in both JavaScript (constants.js) and PHP (Form_Editor class) by adding: - core/accordion, core/icon, core/details (new additions) - core/button, core/column, core/list-item (for consistency) This ensures both the block editor and server-side filtering allow the same set of core blocks inside forms. Co-authored-by: Cursor --- .../forms/changelog/add-core-blocks-to-forms | 4 ++ .../forms/src/blocks/shared/util/constants.js | 6 +++ .../src/form-editor/class-form-editor.php | 43 ++++++++++--------- 3 files changed, 33 insertions(+), 20 deletions(-) create mode 100644 projects/packages/forms/changelog/add-core-blocks-to-forms diff --git a/projects/packages/forms/changelog/add-core-blocks-to-forms b/projects/packages/forms/changelog/add-core-blocks-to-forms new file mode 100644 index 000000000000..512068b46560 --- /dev/null +++ b/projects/packages/forms/changelog/add-core-blocks-to-forms @@ -0,0 +1,4 @@ +Significance: patch +Type: changed + +Form Editor: Consolidate allowed core blocks list between JavaScript and PHP, adding core/accordion, core/icon, core/details, core/button, core/column, and core/list-item. diff --git a/projects/packages/forms/src/blocks/shared/util/constants.js b/projects/packages/forms/src/blocks/shared/util/constants.js index fcad18529e2f..8564f23d327b 100644 --- a/projects/packages/forms/src/blocks/shared/util/constants.js +++ b/projects/packages/forms/src/blocks/shared/util/constants.js @@ -4,14 +4,20 @@ export const ALLOWED_FORMATS = [ 'core/bold', 'core/italic' ]; export const ALLOWED_INNER_BLOCKS = [ 'jetpack/label', 'jetpack/input' ]; export const CORE_BLOCKS = [ + 'core/accordion', 'core/audio', + 'core/button', 'core/code', 'core/columns', + 'core/column', + 'core/details', 'core/group', 'core/heading', 'core/html', + 'core/icon', 'core/image', 'core/list', + 'core/list-item', 'core/math', 'core/paragraph', 'core/row', diff --git a/projects/packages/forms/src/form-editor/class-form-editor.php b/projects/packages/forms/src/form-editor/class-form-editor.php index 4f89abd2de48..6b686a41b82b 100644 --- a/projects/packages/forms/src/form-editor/class-form-editor.php +++ b/projects/packages/forms/src/form-editor/class-form-editor.php @@ -95,26 +95,29 @@ public static function allowed_blocks_for_jetpack_form( $allowed_block_types, $e 'jetpack/form-step-navigation', 'jetpack/form-progress-indicator', - // Core blocks for rich content. - 'core/audio', - 'core/button', - 'core/code', - 'core/columns', - 'core/column', - 'core/group', - 'core/heading', - 'core/html', - 'core/image', - 'core/list', - 'core/list-item', - 'core/math', - 'core/paragraph', - 'core/row', - 'core/separator', - 'core/spacer', - 'core/stack', - 'core/subhead', - 'core/video', + // Core blocks for rich content. + 'core/accordion', + 'core/audio', + 'core/button', + 'core/code', + 'core/columns', + 'core/column', + 'core/details', + 'core/group', + 'core/heading', + 'core/html', + 'core/icon', + 'core/image', + 'core/list', + 'core/list-item', + 'core/math', + 'core/paragraph', + 'core/row', + 'core/separator', + 'core/spacer', + 'core/stack', + 'core/subhead', + 'core/video', ); } From 2a663336ead0181b91e472038d580a4ed537de70 Mon Sep 17 00:00:00 2001 From: Mikael Korpela Date: Fri, 13 Feb 2026 12:01:07 +0200 Subject: [PATCH 2/9] Forms: Allow core/icon block inside file upload dropzone Enable the core/icon block to be added inside the dropzone block, allowing users to customize the file upload UI with icons. Co-authored-by: Cursor --- projects/packages/forms/changelog/allow-icon-in-dropzone | 4 ++++ projects/packages/forms/src/blocks/dropzone/index.js | 1 + 2 files changed, 5 insertions(+) create mode 100644 projects/packages/forms/changelog/allow-icon-in-dropzone diff --git a/projects/packages/forms/changelog/allow-icon-in-dropzone b/projects/packages/forms/changelog/allow-icon-in-dropzone new file mode 100644 index 000000000000..d8a6f5d4e9c0 --- /dev/null +++ b/projects/packages/forms/changelog/allow-icon-in-dropzone @@ -0,0 +1,4 @@ +Significance: patch +Type: changed + +File Upload Dropzone: Allow core/icon block to be added inside the dropzone. diff --git a/projects/packages/forms/src/blocks/dropzone/index.js b/projects/packages/forms/src/blocks/dropzone/index.js index c668638bb363..2b4821838d45 100644 --- a/projects/packages/forms/src/blocks/dropzone/index.js +++ b/projects/packages/forms/src/blocks/dropzone/index.js @@ -13,6 +13,7 @@ const settings = { allowedBlocks: [ 'core/button', 'core/heading', + 'core/icon', 'core/image', 'core/list', 'core/paragraph', From 2c7f5f70ee389c3fd8e4ad44ae48937aa3aa4810 Mon Sep 17 00:00:00 2001 From: Mikael Korpela Date: Fri, 13 Feb 2026 12:17:28 +0200 Subject: [PATCH 3/9] Remove inner blocks (we allow their containers instead) --- projects/packages/forms/src/blocks/shared/util/constants.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/projects/packages/forms/src/blocks/shared/util/constants.js b/projects/packages/forms/src/blocks/shared/util/constants.js index 8564f23d327b..52bde03aa437 100644 --- a/projects/packages/forms/src/blocks/shared/util/constants.js +++ b/projects/packages/forms/src/blocks/shared/util/constants.js @@ -6,10 +6,8 @@ export const ALLOWED_INNER_BLOCKS = [ 'jetpack/label', 'jetpack/input' ]; export const CORE_BLOCKS = [ 'core/accordion', 'core/audio', - 'core/button', 'core/code', 'core/columns', - 'core/column', 'core/details', 'core/group', 'core/heading', @@ -17,7 +15,6 @@ export const CORE_BLOCKS = [ 'core/icon', 'core/image', 'core/list', - 'core/list-item', 'core/math', 'core/paragraph', 'core/row', From 0055e43ff01185535413bd10039a31935ab2f580 Mon Sep 17 00:00:00 2001 From: Mikael Korpela Date: Fri, 13 Feb 2026 12:20:15 +0200 Subject: [PATCH 4/9] changelog --- projects/packages/forms/changelog/add-core-blocks-to-forms | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/packages/forms/changelog/add-core-blocks-to-forms b/projects/packages/forms/changelog/add-core-blocks-to-forms index 512068b46560..1dbe922b72d3 100644 --- a/projects/packages/forms/changelog/add-core-blocks-to-forms +++ b/projects/packages/forms/changelog/add-core-blocks-to-forms @@ -1,4 +1,4 @@ Significance: patch Type: changed -Form Editor: Consolidate allowed core blocks list between JavaScript and PHP, adding core/accordion, core/icon, core/details, core/button, core/column, and core/list-item. +Add core/accordion, core/icon, and core/details blocks to allowed form blocks. From 509b6437f46203bfe83205389df61da4f02cf587 Mon Sep 17 00:00:00 2001 From: Mikael Korpela Date: Fri, 13 Feb 2026 12:31:41 +0200 Subject: [PATCH 5/9] Update backend list - sort - remove duplicate button - comment on buttons --- .../src/form-editor/class-form-editor.php | 49 +++++++++---------- 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/projects/packages/forms/src/form-editor/class-form-editor.php b/projects/packages/forms/src/form-editor/class-form-editor.php index 6b686a41b82b..f9409340a458 100644 --- a/projects/packages/forms/src/form-editor/class-form-editor.php +++ b/projects/packages/forms/src/form-editor/class-form-editor.php @@ -75,8 +75,7 @@ public static function allowed_blocks_for_jetpack_form( $allowed_block_types, $e 'jetpack/field-image-select', // Supporting blocks. - 'jetpack/button', - 'core/button', + 'jetpack/button', // Used for the submit button previously. 'jetpack/label', 'jetpack/input', 'jetpack/options', @@ -95,29 +94,29 @@ public static function allowed_blocks_for_jetpack_form( $allowed_block_types, $e 'jetpack/form-step-navigation', 'jetpack/form-progress-indicator', - // Core blocks for rich content. - 'core/accordion', - 'core/audio', - 'core/button', - 'core/code', - 'core/columns', - 'core/column', - 'core/details', - 'core/group', - 'core/heading', - 'core/html', - 'core/icon', - 'core/image', - 'core/list', - 'core/list-item', - 'core/math', - 'core/paragraph', - 'core/row', - 'core/separator', - 'core/spacer', - 'core/stack', - 'core/subhead', - 'core/video', + // Core blocks for rich content. + 'core/accordion', + 'core/audio', + 'core/button', // Used for the submit button. + 'core/code', + 'core/column', + 'core/columns', + 'core/details', + 'core/group', + 'core/heading', + 'core/html', + 'core/icon', + 'core/image', + 'core/list-item', + 'core/list', + 'core/math', + 'core/paragraph', + 'core/row', + 'core/separator', + 'core/spacer', + 'core/stack', + 'core/subhead', + 'core/video', ); } From db7bcac82d10a5e794ca91d7daa67822d2ea5362 Mon Sep 17 00:00:00 2001 From: Mikael Korpela Date: Fri, 13 Feb 2026 12:47:48 +0200 Subject: [PATCH 6/9] update changelog Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- projects/packages/forms/changelog/add-core-blocks-to-forms | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/packages/forms/changelog/add-core-blocks-to-forms b/projects/packages/forms/changelog/add-core-blocks-to-forms index 1dbe922b72d3..61d48859615a 100644 --- a/projects/packages/forms/changelog/add-core-blocks-to-forms +++ b/projects/packages/forms/changelog/add-core-blocks-to-forms @@ -1,4 +1,4 @@ Significance: patch Type: changed -Add core/accordion, core/icon, and core/details blocks to allowed form blocks. +Allow Accordion, Details, and Icon blocks in forms. From 4c27bed2ec7d3970dbd11cf77799942917cea473 Mon Sep 17 00:00:00 2001 From: Mikael Korpela Date: Fri, 13 Feb 2026 12:48:04 +0200 Subject: [PATCH 7/9] update changelog Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- projects/packages/forms/changelog/allow-icon-in-dropzone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/packages/forms/changelog/allow-icon-in-dropzone b/projects/packages/forms/changelog/allow-icon-in-dropzone index d8a6f5d4e9c0..b729608f6c69 100644 --- a/projects/packages/forms/changelog/allow-icon-in-dropzone +++ b/projects/packages/forms/changelog/allow-icon-in-dropzone @@ -1,4 +1,4 @@ Significance: patch Type: changed -File Upload Dropzone: Allow core/icon block to be added inside the dropzone. +File Upload Dropzone: Allow Icon block to be added inside the dropzone. From 9afdf4b81460b68bc714a2b8bfb1cb1b777f8c95 Mon Sep 17 00:00:00 2001 From: Mikael Korpela Date: Fri, 13 Feb 2026 12:50:12 +0200 Subject: [PATCH 8/9] add customer facing changelog --- .../plugins/jetpack/changelog/update-forms-unlock-new-blocks | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 projects/plugins/jetpack/changelog/update-forms-unlock-new-blocks diff --git a/projects/plugins/jetpack/changelog/update-forms-unlock-new-blocks b/projects/plugins/jetpack/changelog/update-forms-unlock-new-blocks new file mode 100644 index 000000000000..85a7ffc5ed7e --- /dev/null +++ b/projects/plugins/jetpack/changelog/update-forms-unlock-new-blocks @@ -0,0 +1,4 @@ +Significance: minor +Type: enhancement + +Forms: Allow Accordion, Details, and Icon blocks in forms, and Icon block to be added inside the file upload dropzone. From 9d1b2826e3eff2b7edb6604183e5f0f9c0146345 Mon Sep 17 00:00:00 2001 From: Mikael Korpela Date: Fri, 13 Feb 2026 15:32:13 +0200 Subject: [PATCH 9/9] Update the test --- .../php/form-editor/Form_Editor_Test.php | 35 +++++++++++++++---- 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/projects/packages/forms/tests/php/form-editor/Form_Editor_Test.php b/projects/packages/forms/tests/php/form-editor/Form_Editor_Test.php index f1d853a64726..21db2a8cd00c 100644 --- a/projects/packages/forms/tests/php/form-editor/Form_Editor_Test.php +++ b/projects/packages/forms/tests/php/form-editor/Form_Editor_Test.php @@ -89,6 +89,9 @@ public function test_allowed_blocks_for_jetpack_form_restricts_blocks() { // Verify that core blocks are in the allowed list $this->assertContains( 'core/paragraph', $result, 'Paragraph block should be allowed' ); $this->assertContains( 'core/heading', $result, 'Heading block should be allowed' ); + $this->assertContains( 'core/accordion', $result, 'Accordion block should be allowed' ); + $this->assertContains( 'core/details', $result, 'Details block should be allowed' ); + $this->assertContains( 'core/icon', $result, 'Icon block should be allowed' ); // Verify that contact-form block is NOT in the list (handled by DOM manipulation) $this->assertNotContains( 'jetpack/contact-form', $result, 'Contact form block should not be in the allowed list' ); @@ -410,7 +413,11 @@ public function test_allowed_blocks_list_completeness() { 'jetpack/field-rating', 'jetpack/field-text', 'jetpack/field-number', + 'jetpack/field-hidden', 'jetpack/field-file', + 'jetpack/field-time', + 'jetpack/field-slider', + 'jetpack/field-image-select', ); // Expected blocks - supporting blocks @@ -421,6 +428,11 @@ public function test_allowed_blocks_list_completeness() { 'jetpack/options', 'jetpack/option', 'jetpack/phone-input', + 'jetpack/dropzone', + 'jetpack/input-range', + 'jetpack/input-rating', + 'jetpack/fieldset-image-options', + 'jetpack/input-image-option', ); // Expected blocks - multistep blocks @@ -434,17 +446,28 @@ public function test_allowed_blocks_list_completeness() { // Expected blocks - core blocks $expected_core_blocks = array( - 'core/paragraph', + 'core/accordion', + 'core/audio', + 'core/button', + 'core/code', + 'core/column', + 'core/columns', + 'core/details', + 'core/group', 'core/heading', + 'core/html', + 'core/icon', + 'core/image', 'core/list', 'core/list-item', + 'core/math', + 'core/paragraph', + 'core/row', 'core/separator', 'core/spacer', - 'core/columns', - 'core/column', - 'core/group', - 'core/image', - 'core/html', + 'core/stack', + 'core/subhead', + 'core/video', ); // Verify all expected blocks are present