fix(styling): Fix parent selectors in compat mode #2743
Merged
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.
Summary
PR #2741 added the ability to target parent modifier class names to build selectors, but doesn't work in compat mode because compat mode merges all the CSS class names into a single, new class name. I added a
parentModifiers
function that handles this for both React Kit and CSS Kit and updated stencils to add inert class names for the purpose of always matching a selector.I also fixed a bug where passing
undefined
to a Stencil for a modifier key resulted in overridingdefaultModifiers
.Release Category
Styling
Before:
React static mode
HTML
Styles
React compat mode
HTML
Styles
Since compat mode merges class names together, the selector no longer works. This change forces the Stencil to add a class name of the modifier without the
css-
prefix. This still encodes needed information without the class name being removed by Emotion'scx
function when style merging. The class names are inert directly (no selector matches), but are used by theparentModifier
function.After
React compat mode
HTML
Styles
For the Reviewer
Where Should the Reviewer Start?
Tests