Change the priority of the block supports styles #37593
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
When we output CSS for block supports (for example link color), the parent block CSS is output after the child block. This is the opposite of what is expected, since with CSS inheritance the child block should take priority, as happens in the editor.
The solution that I've gone with here converts the block to a string, and then counts how many innerBlocks are inside it. We use this count to increase the priority at which the CSS is added to the footer. Therefore the more innerBlocks a block has, the earlier the CSS is added. This should ensure that the CSS for the inner blocks is always added later.
I tried to find a Gutenberg function that would tell me how many innerBlocks a block has, but I couldn't find one. The idea to convert the block to a string and the count the instances of
innerBlocks
feels like a bad code smell, but it is also much more efficient and simple than iterating arrays.Other solutions I considered and rejected:
I think the solution I have here is better than any of these, but there might still be a better one!
How has this been tested?
See #37582 for comprehensive instructions
Screenshots
See #37582
Types of changes
Bug fix (non-breaking change which fixes an issue)
Checklist: