Ensure containing block around absolute wrapper. #4278
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.
Problem:
When creating a wrapper element around other elements, if that wrapper includes
position: 'absolute'
, then that could result in some unexpected layouting.Fix:
When a wrapper element is inserted, if
position: 'absolute'
is included in the style properties then if any of the following settings aren't in the parent style props acontain: 'layout'
is added to the parent props:position: 'absolute'
position: 'relative'
contain: 'layout'
Commit Details:
fixParentContainingBlockSettings
to check a target and see if a containing block needs to be created around that target by assigningcontain: 'layout'
to the parent.elementHasPositionOf
andelementHasContainLayout
utility functions.fixParentContainingBlockSettings
into theWRAP_IN_ELEMENT
action.forElementOptic
into a smaller optic which then gets composed onto to get the newforElementChildOptic
.propertyHasSimpleValue
utility function.