-
Notifications
You must be signed in to change notification settings - Fork 3.2k
Backport: Gutenberg 43660 - Separator color bugfix #3522
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 1 commit
e4bbc98
cb62823
620a79a
11021ea
8a0be43
b4905cb
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
- Loading branch information
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -1925,6 +1925,53 @@ public function get_styles_block_nodes() { | |
| return static::get_block_nodes( $this->theme_json ); | ||
| } | ||
|
|
||
| /** | ||
| * Returns a filtered declarations array if there is a separator block with only a background | ||
| * style defined in theme.json by adding a color attribute to reflect the changes in the front. | ||
| * | ||
| * @since 6.1.0 | ||
| * | ||
| * @param array $declarations List of declarations. | ||
| * | ||
| * @return array $declarations List of declarations filtered. | ||
| */ | ||
| private static function update_separator_declarations( $declarations ) { | ||
| $background_matches = array_values( | ||
| array_filter( | ||
| $declarations, | ||
| function( $declaration ) { | ||
dream-encode marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| return 'background-color' === $declaration['name']; | ||
| } | ||
| ) | ||
| ); | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I committed something similar a few months back, and learned that
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Hmm there are multiple Combining all of the Granted, this means refactoring and re-testing the code to be more performant. Likely not something that can happen before 6.1.1-RC.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @hellofromtonya I've refactored this to match your suggestions(at least as best as I understand them). How does this look to you now? Any further improvements we can make?
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @dream-encode I agree with @hellofromtonya, I think we can avoid using Given that #3555 is focused on optimizing performance by reducing excessive usage of array functions, it would feel counterproductive if we at the same time introduced new ones here. IMO we can even have only a single |
||
| if ( ! empty( $background_matches && isset( $background_matches[0]['value'] ) ) ) { | ||
dream-encode marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| $border_color_matches = array_values( | ||
| array_filter( | ||
| $declarations, | ||
| function( $declaration ) { | ||
dream-encode marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| return 'border-color' === $declaration['name']; | ||
| } | ||
| ) | ||
| ); | ||
| $text_color_matches = array_values( | ||
| array_filter( | ||
| $declarations, | ||
| function( $declaration ) { | ||
dream-encode marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| return 'color' === $declaration['name']; | ||
| } | ||
| ) | ||
| ); | ||
| if ( empty( $border_color_matches ) && empty( $text_color_matches ) ) { | ||
| $declarations[] = array( | ||
| 'name' => 'color', | ||
| 'value' => $background_matches[0]['value'], | ||
| ); | ||
| } | ||
| } | ||
|
|
||
| return $declarations; | ||
| } | ||
|
|
||
| /** | ||
| * An internal method to get the block nodes from a theme.json file. | ||
| * | ||
|
|
@@ -2101,6 +2148,11 @@ function( $pseudo_selector ) use ( $selector ) { | |
| } | ||
| } | ||
|
|
||
| // Update declarations if there are separators with only background color defined. | ||
| if ( '.wp-block-separator' === $selector ) { | ||
| $declarations = static::update_separator_declarations( $declarations ); | ||
| } | ||
|
|
||
| // 2. Generate and append the rules that use the general selector. | ||
| $block_rules .= static::to_ruleset( $selector, $declarations ); | ||
|
|
||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.