mirror of
git://develop.git.wordpress.org/
synced 2025-01-18 05:18:42 +01:00
Editor: Add __experimentalSkipSerialization
support to shadow.
Checks if `__experimentalSkipSerialization` is set and returns early from `wp_apply_shadow_support` if so. Props colind, madhudollu, aaronrobertshaw, vcanales, isabel_brison, swissspidy, youknowriad. Fixes #60784. git-svn-id: https://develop.svn.wordpress.org/trunk@58312 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
87ca676a13
commit
c2e280665d
@ -43,6 +43,7 @@ function wp_register_shadow_support( $block_type ) {
|
||||
* This will be applied to the block markup in the front-end.
|
||||
*
|
||||
* @since 6.3.0
|
||||
* @since 6.6.0 Return early if __experimentalSkipSerialization is true.
|
||||
* @access private
|
||||
*
|
||||
* @param WP_Block_Type $block_type Block type.
|
||||
@ -52,7 +53,10 @@ function wp_register_shadow_support( $block_type ) {
|
||||
function wp_apply_shadow_support( $block_type, $block_attributes ) {
|
||||
$has_shadow_support = block_has_support( $block_type, 'shadow', false );
|
||||
|
||||
if ( ! $has_shadow_support ) {
|
||||
if (
|
||||
! $has_shadow_support ||
|
||||
wp_should_skip_block_supports_serialization( $block_type, 'shadow' )
|
||||
) {
|
||||
return array();
|
||||
}
|
||||
|
||||
|
@ -22,10 +22,15 @@ class Tests_Block_Supports_Shadow extends WP_UnitTestCase {
|
||||
}
|
||||
|
||||
/**
|
||||
* @ticket 58590
|
||||
* Registers a new block for testing shadow support.
|
||||
*
|
||||
* @param string $block_name Name for the test block.
|
||||
* @param array $supports Array defining block support configuration.
|
||||
*
|
||||
* @return WP_Block_Type The block type for the newly registered test block.
|
||||
*/
|
||||
public function test_shadow_style_is_applied() {
|
||||
$this->test_block_name = 'test/shadow-style-is-applied';
|
||||
private function register_shadow_block_with_support( $block_name, $supports = array() ) {
|
||||
$this->test_block_name = $block_name;
|
||||
register_block_type(
|
||||
$this->test_block_name,
|
||||
array(
|
||||
@ -35,55 +40,71 @@ class Tests_Block_Supports_Shadow extends WP_UnitTestCase {
|
||||
'type' => 'object',
|
||||
),
|
||||
),
|
||||
'supports' => array(
|
||||
'shadow' => true,
|
||||
),
|
||||
'supports' => $supports,
|
||||
)
|
||||
);
|
||||
$registry = WP_Block_Type_Registry::get_instance();
|
||||
$block_type = $registry->get_registered( $this->test_block_name );
|
||||
$block_atts = array(
|
||||
'style' => array(
|
||||
'shadow' => '60px -16px teal',
|
||||
),
|
||||
);
|
||||
$registry = WP_Block_Type_Registry::get_instance();
|
||||
|
||||
$actual = wp_apply_shadow_support( $block_type, $block_atts );
|
||||
$expected = array(
|
||||
'style' => 'box-shadow:60px -16px teal;',
|
||||
return $registry->get_registered( $this->test_block_name );
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the generation of shadow block support styles.
|
||||
*
|
||||
* @dataProvider data_generate_shadow_fixtures
|
||||
*
|
||||
* @param boolean|array $support Shadow block support configuration.
|
||||
* @param string $value Shadow style value for style attribute object.
|
||||
* @param array $expected Expected shadow block support styles.
|
||||
*/
|
||||
public function test_wp_apply_shadow_support( $support, $value, $expected ) {
|
||||
$block_type = self::register_shadow_block_with_support(
|
||||
'test/shadow-block',
|
||||
array( 'shadow' => $support )
|
||||
);
|
||||
$block_attrs = array( 'style' => array( 'shadow' => $value ) );
|
||||
$actual = wp_apply_shadow_support( $block_type, $block_attrs );
|
||||
|
||||
$this->assertSame( $expected, $actual );
|
||||
}
|
||||
|
||||
/**
|
||||
* @ticket 58590
|
||||
* Data provider.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function test_shadow_without_block_supports() {
|
||||
$this->test_block_name = 'test/shadow-with-skipped-serialization-block-supports';
|
||||
register_block_type(
|
||||
$this->test_block_name,
|
||||
array(
|
||||
'api_version' => 2,
|
||||
'attributes' => array(
|
||||
'style' => array(
|
||||
'type' => 'object',
|
||||
),
|
||||
),
|
||||
'supports' => array(),
|
||||
)
|
||||
);
|
||||
$registry = WP_Block_Type_Registry::get_instance();
|
||||
$block_type = $registry->get_registered( $this->test_block_name );
|
||||
$block_atts = array(
|
||||
'style' => array(
|
||||
'shadow' => '60px -16px teal',
|
||||
public function data_generate_shadow_fixtures() {
|
||||
return array(
|
||||
'with no styles' => array(
|
||||
'support' => true,
|
||||
'value' => '',
|
||||
'expected' => array(),
|
||||
),
|
||||
'without support' => array(
|
||||
'support' => false,
|
||||
'value' => '1px 1px 1px #000',
|
||||
'expected' => array(),
|
||||
),
|
||||
'with single shadow' => array(
|
||||
'support' => true,
|
||||
'value' => '1px 1px 1px #000',
|
||||
'expected' => array( 'style' => 'box-shadow:1px 1px 1px #000;' ),
|
||||
),
|
||||
'with comma separated shadows' => array(
|
||||
'support' => true,
|
||||
'value' => '1px 1px 1px #000, 2px 2px 2px #fff',
|
||||
'expected' => array( 'style' => 'box-shadow:1px 1px 1px #000, 2px 2px 2px #fff;' ),
|
||||
),
|
||||
'with preset shadow' => array(
|
||||
'support' => true,
|
||||
'value' => 'var:preset|shadow|natural',
|
||||
'expected' => array( 'style' => 'box-shadow:var(--wp--preset--shadow--natural);' ),
|
||||
),
|
||||
'with serialization skipped' => array(
|
||||
'support' => array( '__experimentalSkipSerialization' => true ),
|
||||
'value' => '1px 1px 1px #000',
|
||||
'expected' => array(),
|
||||
),
|
||||
);
|
||||
|
||||
$actual = wp_apply_spacing_support( $block_type, $block_atts );
|
||||
$expected = array();
|
||||
|
||||
$this->assertSame( $expected, $actual );
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user