<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[55175] trunk: Editor: Introduce minimum height dimensions block support.</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { white-space: pre-line; overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta" style="font-size: 105%">
<dt style="float: left; width: 6em; font-weight: bold">Revision</dt> <dd><a style="font-weight: bold" href="https://core.trac.wordpress.org/changeset/55175">55175</a><script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","description":"Review this Commit","action":{"@type":"ViewAction","url":"https://core.trac.wordpress.org/changeset/55175","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>hellofromTonya</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2023-02-01 16:13:49 +0000 (Wed, 01 Feb 2023)</dd>
</dl>

<pre style='padding-left: 1em; margin: 2em 0; border-left: 2px solid #ccc; line-height: 1.25; font-size: 105%; font-family: sans-serif'>Editor: Introduce minimum height dimensions block support.

This changeset adds the new dimension feature's PHP code for supporting minimum height in the block editor inspector and in global styles. Minimum height is quite useful for defining the minimum vertical dimensions of a block, while allowing it to expand beyond that size. 

In this changeset:

* Adds support in `theme.json`.
* Adds support in the style engine.
* Adds support in `wp_apply_dimensions_support()`.
* Renames the setting from `'__experimentalDimensions'` to `dimensions` in `wp_register_dimensions_support()`.
* Adds PHPUnit tests.

Is renaming `'__experimentalDimensions'` a backwards-compatibility (BC) break?

Though the setting has been in the code since 5.9.0, it was never wired to anything, ie it did not expose any controls or styles. Notice in `wp_register_dimensions_support()` and `wp_apply_dimensions_support()` prior to this changeset, there are inline comments as placeholders for height and width support, but no code.

If a developer opted in to use it, it had no effect.

A search in wp.org's plugin and themes repo showed no instances of this experimental setting.

Given there was no functionality attached to it (until this changeset), no change in behavior or effect from removing it, and no usage found in the plugins and themes repository, it does appear to be a BC break.

References:
* [https://github.com/WordPress/gutenberg/pull/45300 Gutenberg PR 45300]
* [https://github.com/WordPress/gutenberg/pull/45334 Gutenberg PR 45334]

Follow-up to <a href="https://core.trac.wordpress.org/changeset/53076">[53076]</a>, <a href="https://core.trac.wordpress.org/changeset/52069">[52069]</a>.

Props andrewserong, aaronrobertshaw , costdev, hellofromTonya, isabel_brison, joen, paaljoachim, mukesh27, ntsekouras, oandregal, ramonopoly.
Fixes <a href="https://core.trac.wordpress.org/ticket/57582">#57582</a>.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunksrcwpincludesblocksupportsdimensionsphp">trunk/src/wp-includes/block-supports/dimensions.php</a></li>
<li><a href="#trunksrcwpincludesclasswpthemejsonphp">trunk/src/wp-includes/class-wp-theme-json.php</a></li>
<li><a href="#trunksrcwpincludesstyleengineclasswpstyleenginephp">trunk/src/wp-includes/style-engine/class-wp-style-engine.php</a></li>
<li><a href="#trunktestsphpunittestsstyleenginestyleEnginephp">trunk/tests/phpunit/tests/style-engine/styleEngine.php</a></li>
<li><a href="#trunktestsphpunitteststhemewpThemeJsonphp">trunk/tests/phpunit/tests/theme/wpThemeJson.php</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunktestsphpunittestsblocksupportswpApplyDimensionsSupportphp">trunk/tests/phpunit/tests/block-supports/wpApplyDimensionsSupport.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunksrcwpincludesblocksupportsdimensionsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/block-supports/dimensions.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/block-supports/dimensions.php       2023-02-01 15:27:14 UTC (rev 55174)
+++ trunk/src/wp-includes/block-supports/dimensions.php 2023-02-01 16:13:49 UTC (rev 55175)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -29,8 +29,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                return;
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $has_dimensions_support = block_has_support( $block_type, array( '__experimentalDimensions' ), false );
-       // Future block supports such as height & width will be added here.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $has_dimensions_support = block_has_support( $block_type, array( 'dimensions' ), false );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        if ( $has_dimensions_support ) {
</span><span class="cx" style="display: block; padding: 0 10px">                $block_type->attributes['style'] = array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -44,6 +43,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * This will be applied to the block markup in the front-end.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @since 5.9.0
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @since 6.2.0 Added `minHeight` support.
</ins><span class="cx" style="display: block; padding: 0 10px">  * @access private
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @param WP_Block_Type $block_type       Block Type.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -51,16 +51,31 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * @return array Block dimensions CSS classes and inline styles.
</span><span class="cx" style="display: block; padding: 0 10px">  */
</span><span class="cx" style="display: block; padding: 0 10px"> function wp_apply_dimensions_support( $block_type, $block_attributes ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        if ( wp_should_skip_block_supports_serialization( $block_type, '__experimentalDimensions' ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ if ( wp_should_skip_block_supports_serialization( $block_type, 'dimensions' ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                 return array();
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $styles = array();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $attributes = array();
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        // Height support to be added in near future.
</del><span class="cx" style="display: block; padding: 0 10px">         // Width support to be added in near future.
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return empty( $styles ) ? array() : array( 'style' => implode( ' ', $styles ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $has_min_height_support = block_has_support( $block_type, array( 'dimensions', 'minHeight' ), false );
+       $block_styles           = isset( $block_attributes['style'] ) ? $block_attributes['style'] : null;
+
+       if ( ! $block_styles ) {
+               return $attributes;
+       }
+
+       $skip_min_height                      = wp_should_skip_block_supports_serialization( $block_type, 'dimensions', 'minHeight' );
+       $dimensions_block_styles              = array();
+       $dimensions_block_styles['minHeight'] = $has_min_height_support && ! $skip_min_height ? _wp_array_get( $block_styles, array( 'dimensions', 'minHeight' ), null ) : null;
+       $styles                               = wp_style_engine_get_styles( array( 'dimensions' => $dimensions_block_styles ) );
+
+       if ( ! empty( $styles['css'] ) ) {
+               $attributes['style'] = $styles['css'];
+       }
+
+       return $attributes;
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> // Register the block support.
</span></span></pre></div>
<a id="trunksrcwpincludesclasswpthemejsonphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/class-wp-theme-json.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/class-wp-theme-json.php     2023-02-01 15:27:14 UTC (rev 55174)
+++ trunk/src/wp-includes/class-wp-theme-json.php       2023-02-01 16:13:49 UTC (rev 55175)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -192,7 +192,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @since 6.1.0 Added the `border-*-color`, `border-*-width`, `border-*-style`,
</span><span class="cx" style="display: block; padding: 0 10px">         *              `--wp--style--root--padding-*`, and `box-shadow` properties,
</span><span class="cx" style="display: block; padding: 0 10px">         *              removed the `--wp--style--block-gap` property.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * @since 6.2.0 Added `outline-*` properties.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @since 6.2.0 Added `outline-*`, and `min-height` properties.
</ins><span class="cx" style="display: block; padding: 0 10px">          *
</span><span class="cx" style="display: block; padding: 0 10px">         * @var array
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -231,6 +231,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                'margin-right'                      => array( 'spacing', 'margin', 'right' ),
</span><span class="cx" style="display: block; padding: 0 10px">                'margin-bottom'                     => array( 'spacing', 'margin', 'bottom' ),
</span><span class="cx" style="display: block; padding: 0 10px">                'margin-left'                       => array( 'spacing', 'margin', 'left' ),
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                'min-height'                        => array( 'dimensions', 'minHeight' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                 'outline-color'                     => array( 'outline', 'color' ),
</span><span class="cx" style="display: block; padding: 0 10px">                'outline-offset'                    => array( 'outline', 'offset' ),
</span><span class="cx" style="display: block; padding: 0 10px">                'outline-style'                     => array( 'outline', 'style' ),
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -293,6 +294,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         *              and `typography`, and renamed others according to the new schema.
</span><span class="cx" style="display: block; padding: 0 10px">         * @since 6.0.0 Added `color.defaultDuotone`.
</span><span class="cx" style="display: block; padding: 0 10px">         * @since 6.1.0 Added `layout.definitions` and `useRootPaddingAwareAlignments`.
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         * @since 6.2.0 Added `dimensions.minHeight`.
</ins><span class="cx" style="display: block; padding: 0 10px">          * @var array
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        const VALID_SETTINGS = array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -319,6 +321,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'text'             => null,
</span><span class="cx" style="display: block; padding: 0 10px">                ),
</span><span class="cx" style="display: block; padding: 0 10px">                'custom'                        => null,
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                'dimensions'                    => array(
+                       'minHeight' => null,
+               ),
</ins><span class="cx" style="display: block; padding: 0 10px">                 'layout'                        => array(
</span><span class="cx" style="display: block; padding: 0 10px">                        'contentSize' => null,
</span><span class="cx" style="display: block; padding: 0 10px">                        'definitions' => null,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -358,7 +363,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @since 6.1.0 Added new side properties for `border`,
</span><span class="cx" style="display: block; padding: 0 10px">         *              added new property `shadow`,
</span><span class="cx" style="display: block; padding: 0 10px">         *              updated `blockGap` to be allowed at any level.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * @since 6.2.0 Added `outline` properties.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @since 6.2.0 Added `outline`, and `minHeight` properties.
</ins><span class="cx" style="display: block; padding: 0 10px">          *
</span><span class="cx" style="display: block; padding: 0 10px">         * @var array
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -378,6 +383,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'gradient'   => null,
</span><span class="cx" style="display: block; padding: 0 10px">                        'text'       => null,
</span><span class="cx" style="display: block; padding: 0 10px">                ),
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                'dimensions' => array(
+                       'minHeight' => null,
+               ),
</ins><span class="cx" style="display: block; padding: 0 10px">                 'filter'     => array(
</span><span class="cx" style="display: block; padding: 0 10px">                        'duotone' => null,
</span><span class="cx" style="display: block; padding: 0 10px">                ),
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -490,6 +498,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * Options that settings.appearanceTools enables.
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @since 6.0.0
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         * @since 6.2.0 Added `dimensions.minHeight`.
</ins><span class="cx" style="display: block; padding: 0 10px">          * @var array
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        const APPEARANCE_TOOLS_OPT_INS = array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -498,6 +507,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                array( 'border', 'style' ),
</span><span class="cx" style="display: block; padding: 0 10px">                array( 'border', 'width' ),
</span><span class="cx" style="display: block; padding: 0 10px">                array( 'color', 'link' ),
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                array( 'dimensions', 'minHeight' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                 array( 'spacing', 'blockGap' ),
</span><span class="cx" style="display: block; padding: 0 10px">                array( 'spacing', 'margin' ),
</span><span class="cx" style="display: block; padding: 0 10px">                array( 'spacing', 'padding' ),
</span></span></pre></div>
<a id="trunksrcwpincludesstyleengineclasswpstyleenginephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/style-engine/class-wp-style-engine.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/style-engine/class-wp-style-engine.php      2023-02-01 15:27:14 UTC (rev 55174)
+++ trunk/src/wp-includes/style-engine/class-wp-style-engine.php        2023-02-01 16:13:49 UTC (rev 55175)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -137,6 +137,17 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                ),
</span><span class="cx" style="display: block; padding: 0 10px">                        ),
</span><span class="cx" style="display: block; padding: 0 10px">                ),
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                'dimensions' => array(
+                       'minHeight' => array(
+                               'property_keys' => array(
+                                       'default' => 'min-height',
+                               ),
+                               'path'          => array( 'dimensions', 'minHeight' ),
+                               'css_vars'      => array(
+                                       'spacing' => '--wp--preset--spacing--$slug',
+                               ),
+                       ),
+               ),
</ins><span class="cx" style="display: block; padding: 0 10px">                 'spacing'    => array(
</span><span class="cx" style="display: block; padding: 0 10px">                        'padding' => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'property_keys' => array(
</span></span></pre></div>
<a id="trunktestsphpunittestsblocksupportswpApplyDimensionsSupportphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: trunk/tests/phpunit/tests/block-supports/wpApplyDimensionsSupport.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/tests/phpunit/tests/block-supports/wpApplyDimensionsSupport.php                             (rev 0)
+++ trunk/tests/phpunit/tests/block-supports/wpApplyDimensionsSupport.php       2023-02-01 16:13:49 UTC (rev 55175)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,103 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+
+/**
+ * @group block-supports
+ *
+ * @covers ::wp_apply_dimensions_support
+ */
+class Tests_Block_Supports_WpApplyDimensionsSupport extends WP_UnitTestCase {
+       /**
+        * @var string|null
+        */
+       private $test_block_name;
+
+       public function set_up() {
+               parent::set_up();
+               $this->test_block_name = null;
+       }
+
+       public function tear_down() {
+               unregister_block_type( $this->test_block_name );
+               $this->test_block_name = null;
+               parent::tear_down();
+       }
+
+       /**
+        * Tests that minimum height block support works as expected.
+        *
+        * @ticket 57582
+        *
+        * @covers ::wp_apply_dimensions_support
+        *
+        * @dataProvider data_minimum_height_block_support
+        *
+        * @param string $block_name The test block name to register.
+        * @param mixed  $dimensions The dimensions block support settings.
+        * @param mixed  $expected   The expected results.
+        */
+       public function test_minimum_height_block_support( $block_name, $dimensions, $expected ) {
+               $this->test_block_name = $block_name;
+               register_block_type(
+                       $this->test_block_name,
+                       array(
+                               'api_version' => 2,
+                               'attributes'  => array(
+                                       'style' => array(
+                                               'type' => 'object',
+                                       ),
+                               ),
+                               'supports'    => array(
+                                       'dimensions' => $dimensions,
+                               ),
+                       )
+               );
+               $registry    = WP_Block_Type_Registry::get_instance();
+               $block_type  = $registry->get_registered( $this->test_block_name );
+               $block_attrs = array(
+                       'style' => array(
+                               'dimensions' => array(
+                                       'minHeight' => '50vh',
+                               ),
+                       ),
+               );
+
+               $actual = wp_apply_dimensions_support( $block_type, $block_attrs );
+
+               $this->assertSame( $expected, $actual );
+       }
+
+       /**
+        * Data provider.
+        *
+        * @return array
+        */
+       public function data_minimum_height_block_support() {
+               return array(
+                       'style is applied' => array(
+                               'block_name' => 'test/dimensions-block-supports',
+                               'dimensions' => array(
+                                       'minHeight' => true,
+                               ),
+                               'expected'   => array(
+                                       'style' => 'min-height:50vh;',
+                               ),
+                       ),
+                       'style output is skipped when serialization is skipped' => array(
+                               'block_name' => 'test/dimensions-with-skipped-serialization-block-supports',
+                               'dimensions' => array(
+                                       'minHeight'                       => true,
+                                       '__experimentalSkipSerialization' => true,
+                               ),
+                               'expected'   => array(),
+                       ),
+                       'style output is skipped when individual feature serialization is skipped' => array(
+                               'block_name' => 'test/min-height-with-individual-skipped-serialization-block-supports',
+                               'dimensions' => array(
+                                       'minHeight'                       => true,
+                                       '__experimentalSkipSerialization' => array( 'minHeight' ),
+                               ),
+                               'expected'   => array(),
+                       ),
+               );
+       }
+}
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: trunk/tests/phpunit/tests/block-supports/wpApplyDimensionsSupport.php
</span><span class="cx" style="display: block; padding: 0 10px">___________________________________________________________________
</span></span></pre></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: svn:eol-style</h4></div>
<ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+native
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of property
</span><a id="trunktestsphpunittestsstyleenginestyleEnginephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/tests/phpunit/tests/style-engine/styleEngine.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/tests/phpunit/tests/style-engine/styleEngine.php    2023-02-01 15:27:14 UTC (rev 55174)
+++ trunk/tests/phpunit/tests/style-engine/styleEngine.php      2023-02-01 16:13:49 UTC (rev 55175)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -166,6 +166,21 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                ),
</span><span class="cx" style="display: block; padding: 0 10px">                        ),
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        'inline_valid_dimensions_style'                => array(
+                               'block_styles'    => array(
+                                       'dimensions' => array(
+                                               'minHeight' => '50vh',
+                                       ),
+                               ),
+                               'options'         => null,
+                               'expected_output' => array(
+                                       'css'          => 'min-height:50vh;',
+                                       'declarations' => array(
+                                               'min-height' => '50vh',
+                                       ),
+                               ),
+                       ),
+
</ins><span class="cx" style="display: block; padding: 0 10px">                         'inline_valid_typography_style'                => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'block_styles'    => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                        'typography' => array(
</span></span></pre></div>
<a id="trunktestsphpunitteststhemewpThemeJsonphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/tests/phpunit/tests/theme/wpThemeJson.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/tests/phpunit/tests/theme/wpThemeJson.php   2023-02-01 15:27:14 UTC (rev 55174)
+++ trunk/tests/phpunit/tests/theme/wpThemeJson.php     2023-02-01 16:13:49 UTC (rev 55175)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -241,6 +241,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'color'      => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'link' => true,
</span><span class="cx" style="display: block; padding: 0 10px">                        ),
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        'dimensions' => array(
+                               'minHeight' => true,
+                       ),
</ins><span class="cx" style="display: block; padding: 0 10px">                         'spacing'    => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'blockGap' => false,
</span><span class="cx" style="display: block; padding: 0 10px">                                'margin'   => true,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -265,6 +268,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                        'color'      => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                                'link' => true,
</span><span class="cx" style="display: block; padding: 0 10px">                                        ),
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                        'dimensions' => array(
+                                               'minHeight' => true,
+                                       ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                         'spacing'    => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                                'blockGap' => false,
</span><span class="cx" style="display: block; padding: 0 10px">                                                'margin'   => true,
</span></span></pre>
</div>
</div>

</body>
</html>