From f979e16c9aa5b4960d02663a782eed1924facfa0 Mon Sep 17 00:00:00 2001 From: tellthemachines Date: Fri, 30 Sep 2022 15:51:52 +1000 Subject: [PATCH] Try adding layout classnames to inner block wrapper. --- lib/block-supports/layout.php | 36 ++++++++------------- packages/block-library/src/cover/block.json | 7 ---- 2 files changed, 14 insertions(+), 29 deletions(-) diff --git a/lib/block-supports/layout.php b/lib/block-supports/layout.php index 749709445e9b9..ca88d9bdd2521 100644 --- a/lib/block-supports/layout.php +++ b/lib/block-supports/layout.php @@ -285,26 +285,23 @@ function gutenberg_get_layout_style( $selector, $layout, $has_block_gap_support } /** - * Adds an identifying classname to the inner block wrapper. + * Indentifies inner block wrapper classnames. * - * @param array $parsed_block A parsed block object. - * @return array The updated block object. + * @param array $inner_content An array of strings. + * @return string String of inner wrapper classnames. */ -function gutenberg_identify_inner_block_wrapper( $parsed_block ) { +function gutenberg_identify_inner_block_wrapper_classnames( $inner_content ) { - if ( ! isset( $parsed_block['innerContent'][0] ) ) { - return $parsed_block; + if ( ! isset( $inner_content[0] ) ) { + return false; } - $inner_class_position = strrpos( $parsed_block['innerContent'][0], 'class="' ); + $matches = array(); - if ( ! $inner_class_position ) { - return $parsed_block; - } + preg_match_all( '/class="[a-z\-\_\s]*/', $inner_content[0], $matches ); - $parsed_block['innerContent'][0] = substr_replace( $parsed_block['innerContent'][0], 'class="is-inner-block-wrapper ', $inner_class_position, strlen( 'class="' ) ); + return end($matches[0]); - return $parsed_block; } /** @@ -410,12 +407,12 @@ function gutenberg_render_layout_support_flag( $block_content, $block ) { } } - // Ideally we'll be able to attach this class to all inner block wrappers and - // we won't need the condition or the fallback. - if ( strpos( $block_content, 'is-inner-block-wrapper' ) ) { + $inner_content_classnames = gutenberg_identify_inner_block_wrapper_classnames($block['innerContent']); + + if ( $inner_content_classnames ) { $content = preg_replace( - '/' . preg_quote( 'is-inner-block-wrapper', '/' ) . '/', - esc_attr( implode( ' ', $class_names ) ), + '/' . $inner_content_classnames . '/', + $inner_content_classnames . ' ' . esc_attr( implode( ' ', $class_names ) ), $block_content, 1 ); @@ -441,11 +438,6 @@ function gutenberg_render_layout_support_flag( $block_content, $block ) { ) ); -if ( function_exists( 'wp_identify_inner_block_wrapper' ) ) { - remove_filter( 'render_block', 'wp_identify_inner_block_wrapper' ); -} -add_filter( 'render_block_data', 'gutenberg_identify_inner_block_wrapper' ); - if ( function_exists( 'wp_render_layout_support_flag' ) ) { remove_filter( 'render_block', 'wp_render_layout_support_flag' ); } diff --git a/packages/block-library/src/cover/block.json b/packages/block-library/src/cover/block.json index d7dd4d48e57b4..1982ecc44853e 100644 --- a/packages/block-library/src/cover/block.json +++ b/packages/block-library/src/cover/block.json @@ -105,13 +105,6 @@ "__experimentalDefaultControls": { "fontSize": true } - }, - "__experimentalLayout": { - "allowSwitching": true, - "allowInheriting": false, - "default": { - "type": "flow" - } } }, "editorStyle": "wp-block-cover-editor",