Skip to content

Commit

Permalink
Add custom CSS for block style variations. (#62526)
Browse files Browse the repository at this point in the history
Co-authored-by: tellthemachines <isabel_brison@git.wordpress.org>
Co-authored-by: aaronrobertshaw <aaronrobertshaw@git.wordpress.org>
Co-authored-by: matiasbenedetto <mmaattiiaass@git.wordpress.org>
  • Loading branch information
4 people authored and ellatrix committed Jun 18, 2024
1 parent d81622b commit e7f64f7
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 5 deletions.
3 changes: 3 additions & 0 deletions backport-changelog/6.6/6797.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
https://github.com/WordPress/wordpress-develop/pull/6797

* https://github.com/WordPress/gutenberg/pull/62526
9 changes: 8 additions & 1 deletion lib/class-wp-theme-json-gutenberg.php
Original file line number Diff line number Diff line change
Expand Up @@ -2694,6 +2694,7 @@ public function get_styles_for_block( $block_metadata ) {

// If there are style variations, generate the declarations for them, including any feature selectors the block may have.
$style_variation_declarations = array();
$style_variation_custom_css = array();
if ( ! empty( $block_metadata['variations'] ) ) {
foreach ( $block_metadata['variations'] as $style_variation ) {
$style_variation_node = _wp_array_get( $this->theme_json, $style_variation['path'], array() );
Expand All @@ -2720,9 +2721,12 @@ static function ( $split_selector ) use ( $clean_style_variation_selector ) {
// Add the new declarations to the overall results under the modified selector.
$style_variation_declarations[ $combined_selectors ] = $new_declarations;
}

// Compute declarations for remaining styles not covered by feature level selectors.
$style_variation_declarations[ $style_variation['selector'] ] = static::compute_style_properties( $style_variation_node, $settings, null, $this->theme_json );
// Store custom CSS for the style variation.
if ( isset( $style_variation_node['css'] ) ) {
$style_variation_custom_css[ $style_variation['selector'] ] = $this->process_blocks_custom_css( $style_variation_node['css'], $style_variation['selector'] );
}
}
}

Expand Down Expand Up @@ -2853,6 +2857,9 @@ static function ( $pseudo_selector ) use ( $selector ) {
// 6. Generate and append the style variation rulesets.
foreach ( $style_variation_declarations as $style_variation_selector => $individual_style_variation_declarations ) {
$block_rules .= static::to_ruleset( ":root :where($style_variation_selector)", $individual_style_variation_declarations );
if ( isset( $style_variation_custom_css[ $style_variation_selector ] ) ) {
$block_rules .= $style_variation_custom_css[ $style_variation_selector ];
}
}

return $block_rules;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -651,7 +651,9 @@ export const getNodesWithStyles = ( tree, blockSelectors ) => {
( [ variationName, variation ] ) => {
variations[ variationName ] =
pickStyleKeys( variation );

if ( variation?.css ) {
variations[ variationName ].css = variation.css;
}
const variationSelector =
blockSelectors[ blockName ]
.styleVariationSelectors?.[ variationName ];
Expand Down Expand Up @@ -697,6 +699,14 @@ export const getNodesWithStyles = ( tree, blockSelectors ) => {
.featureSelectors
);

const variationBlockStyleNodes =
pickStyleKeys( variationBlockStyles );

if ( variationBlockStyles?.css ) {
variationBlockStyleNodes.css =
variationBlockStyles.css;
}

nodes.push( {
selector: variationBlockSelector,
duotoneSelector: variationDuotoneSelector,
Expand All @@ -707,9 +717,7 @@ export const getNodesWithStyles = ( tree, blockSelectors ) => {
hasLayoutSupport:
blockSelectors[ variationBlockName ]
.hasLayoutSupport,
styles: pickStyleKeys(
variationBlockStyles
),
styles: variationBlockStyleNodes,
} );

// Process element styles for the inner blocks
Expand Down Expand Up @@ -995,6 +1003,12 @@ export const toStyles = (
';'
) };}`;
}
if ( styles?.css ) {
ruleset += processCSSNesting(
styles.css,
`:root :where(${ selector })`
);
}

if ( styleVariationSelectors ) {
Object.entries( styleVariationSelectors ).forEach(
Expand Down Expand Up @@ -1041,6 +1055,12 @@ export const toStyles = (
';'
) };}`;
}
if ( styleVariations?.css ) {
ruleset += processCSSNesting(
styleVariations.css,
`:root :where(${ styleVariationSelector })`
);
}
}
}
);
Expand Down

0 comments on commit e7f64f7

Please sign in to comment.