fix(platform-browser): Fixes IsolatedShadowDom encapsulation method #63131
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.
This fixes an issue where a child component inside of IsolatedShadowDom would get it's styles moved to the root style object, causing it to be unstyled. This new approach hoists the child styles to the shadowroot. This change only applies to IsolatedShadowDom
PR Checklist
Please check if your PR fulfills the following requirements:
PR Type
What kind of change does this PR introduce?
What is the current behavior?
After introducing IsolatedShadowDom, it was raised on the PR that any child components using other encapsulation methods would have their styles hoisted to the root styles of the app. This would cause the child component to be unstyled as it is inside a shadowroot.
What is the new behavior?
The new behaviour hoists the styles of any child component into the head of the shadowroot.
Does this PR introduce a breaking change?
Other information
Spun up a test project:
emulated
, with a button styled redComparisons:
Standard/old
Shadowdom
encapsulation with style leakage:IsolatedShadowDom
pre-fix (styles are moved to root so child component loses styling):IsolatedShadowDom
post-fix (styles are moved to shadowhost, fixing child component styling):As you can see from the last screenshot, the styles are now correctly applied to the child (
Emulated
) component