Make WordPress Core


Ignore:
Timestamp:
09/19/2022 08:12:02 PM (3 years ago)
Author:
audrasjb
Message:

Editor: Backport block supports (border, color, elements, spacing) from Gutenberg to WP 6.1.

This changeset backports border, color, elements and spacing block supports changes from Gutenberg to WP 6.1.

See tracking issue on Gutenberg repository: gutenberg#43440.

Props ramonopoly, glendaviesnz, bernhard-reiter, audrasjb, costdev.
See #56467.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/block-supports/spacing.php

    r53076 r54211  
    3838 *
    3939 * @since 5.8.0
     40 * @since 6.1.0 Implemented the style engine to generate CSS and classnames.
    4041 * @access private
    4142 *
     
    4950    }
    5051
     52    $attributes          = array();
    5153    $has_padding_support = block_has_support( $block_type, array( 'spacing', 'padding' ), false );
    5254    $has_margin_support  = block_has_support( $block_type, array( 'spacing', 'margin' ), false );
    53     $skip_padding        = wp_should_skip_block_supports_serialization( $block_type, 'spacing', 'padding' );
    54     $skip_margin         = wp_should_skip_block_supports_serialization( $block_type, 'spacing', 'margin' );
    55     $styles              = array();
     55    $block_styles        = isset( $block_attributes['style'] ) ? $block_attributes['style'] : null;
    5656
    57     if ( $has_padding_support && ! $skip_padding ) {
    58         $padding_value = _wp_array_get( $block_attributes, array( 'style', 'spacing', 'padding' ), null );
    59         if ( is_array( $padding_value ) ) {
    60             foreach ( $padding_value as $key => $value ) {
    61                 $styles[] = sprintf( 'padding-%s: %s;', $key, $value );
    62             }
    63         } elseif ( null !== $padding_value ) {
    64             $styles[] = sprintf( 'padding: %s;', $padding_value );
    65         }
     57    if ( ! $block_styles ) {
     58        return $attributes;
    6659    }
    6760
    68     if ( $has_margin_support && ! $skip_margin ) {
    69         $margin_value = _wp_array_get( $block_attributes, array( 'style', 'spacing', 'margin' ), null );
    70         if ( is_array( $margin_value ) ) {
    71             foreach ( $margin_value as $key => $value ) {
    72                 $styles[] = sprintf( 'margin-%s: %s;', $key, $value );
    73             }
    74         } elseif ( null !== $margin_value ) {
    75             $styles[] = sprintf( 'margin: %s;', $margin_value );
    76         }
     61    $skip_padding                    = wp_should_skip_block_supports_serialization( $block_type, 'spacing', 'padding' );
     62    $skip_margin                     = wp_should_skip_block_supports_serialization( $block_type, 'spacing', 'margin' );
     63    $spacing_block_styles            = array();
     64    $spacing_block_styles['padding'] = $has_padding_support && ! $skip_padding ? _wp_array_get( $block_styles, array( 'spacing', 'padding' ), null ) : null;
     65    $spacing_block_styles['margin']  = $has_margin_support && ! $skip_margin ? _wp_array_get( $block_styles, array( 'spacing', 'margin' ), null ) : null;
     66    $styles                          = wp_style_engine_get_styles( array( 'spacing' => $spacing_block_styles ) );
     67
     68    if ( ! empty( $styles['css'] ) ) {
     69        $attributes['style'] = $styles['css'];
    7770    }
    7871
    79     return empty( $styles ) ? array() : array( 'style' => implode( ' ', $styles ) );
     72    return $attributes;
    8073}
    8174
Note: See TracChangeset for help on using the changeset viewer.