Theme JSON: Don't output rules that 'unset' properties #48351
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.
What?
If a theme sets a Duotone filter, users might want to override this by setting the filter to "unset" (see #48255). This is important to allow users to turn off duotone for specific blocks.
When unset is selected, this is saved to the database:
{"styles":{"blocks":{"core\/image":{"filter":{"duotone":"unset"}}}},"isGlobalStylesUserThemeJSON":true,"version":2}
Which generates the following CSS:
.wp-block-image img, .wp-block-image .components-placeholder{filter: unset;}
It would be better if we didn't generate any CSS for the block if the global styles changed to unset.
Why?
Outputting redundant code is bad for performance.
How?
If a declaration has a value of
unset
then don't output it. I'm not sure if this is the best place to achieve this. We can do something specific for Duotone in #48255 but once Duotone is treated like all other styles then we won't be able to (which is the goal).Testing Instructions