Fix CSS vendor-prefixed property serialization #7704
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.
Description
I recently merged #7676 which attempted to improve how we handle serialising CSS properties. This PR made
wp.element.renderToString()
correctly serialise custom attribute properties, but was naive in its handling of elements that contain vendor-prefixed properties.My confusion was that I didn't realise that, in React, you're supposed to write
<div style={ { WebkitTransform: 'none' } }>
and not<div style={ { '-webkit-transform': 'none' } }>
.The complete rules, inspired by these relevant React unit tests are:
backgroundColor
→background-color
--myBackgroundColor
→--myBackgroundColor
MozTransform
→-moz-transform
How has this been tested?
Unit tests have been updated.
You could also create a block that has returns a
<div style={ { WebkitTransform: 'none' } }>
in itssave()
function. Gutenberg should correctly save<div style="-webkit-transform:none">
to the post.