-
Notifications
You must be signed in to change notification settings - Fork 24.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CSS parsing fixes #49460
CSS parsing fixes #49460
Conversation
This commit backport style parser fixes from angular/angular#49460
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@alan-agius4 thanks for the PR, I've left a couple comments about existing tests that look legit to me (and we shouldn't remove them), so I'm curious if they work with the changes from this PR.
I think it'd be great if @pkozlowski-opensource can take a look as well to double-check that we are not missing any important use-cases.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for additional information @alan-agius4 👍
The change looks good and I'd like to ask @pkozlowski-opensource to also take a look when he get a chance, so we have more coverage from reviewers perspective (Pawel might be more familiar with this subsystem).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The change LGTM overall but I would very much expect to see more tests (left comments with some of the scenarios) hence adding the cleanup label.
…alid value Currently when the value of a styling property that has a unit is empty string a invalid value is generated. Example: `[style.width.px] = ""` will generate a value of `"px"`, when instead it should be `""`. This causes browser to reset the value to an empty string. This is however not the case in Domino with changes in angular/domino@bfc9114. This commit fixes the issues and generate correct values.
Currently we are unsafely unquoting CSS values which in some cases causes valid values to become invalid and invalid values to become valid. Example: ```html <div style="width:"1px;""></div> ``` In the above case, `width` has an invalid value of `"1px"`, however the compiler will transform it to `1px` which makes it valid. On the other hand, in the below case ```html <div style="content:"foo""></div> ``` `content` has a valid value of `"foo"`, but since the compiler unwraps it to `foo` it becomes invalid. For correctness, we should not remove quotes. ```js const div = document.createElement('div'); div.style.width='"1px"'; div.style.content='foo'; div.style.width; // '' div.style.content; // '' div.style.width='1px'; div.style.content='"foo"'; div.style.width; // '1px' div.style.content; // '"foo"' ``` More information about values can be found https://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
Caretaker: G3 failures are pre-existing. |
This PR was merged into the repository by commit 1829542. |
Currently we are unsafely unquoting CSS values which in some cases causes valid values to become invalid and invalid values to become valid. Example: ```html <div style="width:"1px;""></div> ``` In the above case, `width` has an invalid value of `"1px"`, however the compiler will transform it to `1px` which makes it valid. On the other hand, in the below case ```html <div style="content:"foo""></div> ``` `content` has a valid value of `"foo"`, but since the compiler unwraps it to `foo` it becomes invalid. For correctness, we should not remove quotes. ```js const div = document.createElement('div'); div.style.width='"1px"'; div.style.content='foo'; div.style.width; // '' div.style.content; // '' div.style.width='1px'; div.style.content='"foo"'; div.style.width; // '1px' div.style.content; // '"foo"' ``` More information about values can be found https://www.w3.org/TR/CSS21/syndata.html#value-def-identifier PR Close #49460
…alid value (#49460) Currently when the value of a styling property that has a unit is empty string a invalid value is generated. Example: `[style.width.px] = ""` will generate a value of `"px"`, when instead it should be `""`. This causes browser to reset the value to an empty string. This is however not the case in Domino with changes in angular/domino@bfc9114. This commit fixes the issues and generate correct values. PR Close #49460
Currently we are unsafely unquoting CSS values which in some cases causes valid values to become invalid and invalid values to become valid. Example: ```html <div style="width:"1px;""></div> ``` In the above case, `width` has an invalid value of `"1px"`, however the compiler will transform it to `1px` which makes it valid. On the other hand, in the below case ```html <div style="content:"foo""></div> ``` `content` has a valid value of `"foo"`, but since the compiler unwraps it to `foo` it becomes invalid. For correctness, we should not remove quotes. ```js const div = document.createElement('div'); div.style.width='"1px"'; div.style.content='foo'; div.style.width; // '' div.style.content; // '' div.style.width='1px'; div.style.content='"foo"'; div.style.width; // '1px' div.style.content; // '"foo"' ``` More information about values can be found https://www.w3.org/TR/CSS21/syndata.html#value-def-identifier PR Close #49460
This commit backport style parser fixes from angular/angular#49460
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [@angular/animations](https://github.com/angular/angular) | dependencies | patch | [`15.2.4` -> `15.2.5`](https://renovatebot.com/diffs/npm/@angular%2fanimations/15.2.4/15.2.5) | | [@angular/common](https://github.com/angular/angular) | dependencies | patch | [`15.2.4` -> `15.2.5`](https://renovatebot.com/diffs/npm/@angular%2fcommon/15.2.4/15.2.5) | | [@angular/compiler](https://github.com/angular/angular) | dependencies | patch | [`15.2.4` -> `15.2.5`](https://renovatebot.com/diffs/npm/@angular%2fcompiler/15.2.4/15.2.5) | | [@angular/compiler-cli](https://github.com/angular/angular/tree/main/packages/compiler-cli) ([source](https://github.com/angular/angular)) | devDependencies | patch | [`15.2.4` -> `15.2.5`](https://renovatebot.com/diffs/npm/@angular%2fcompiler-cli/15.2.4/15.2.5) | | [@angular/core](https://github.com/angular/angular) | dependencies | patch | [`15.2.4` -> `15.2.5`](https://renovatebot.com/diffs/npm/@angular%2fcore/15.2.4/15.2.5) | | [@angular/forms](https://github.com/angular/angular) | dependencies | patch | [`15.2.4` -> `15.2.5`](https://renovatebot.com/diffs/npm/@angular%2fforms/15.2.4/15.2.5) | | [@angular/platform-browser](https://github.com/angular/angular) | dependencies | patch | [`15.2.4` -> `15.2.5`](https://renovatebot.com/diffs/npm/@angular%2fplatform-browser/15.2.4/15.2.5) | | [@angular/platform-browser-dynamic](https://github.com/angular/angular) | dependencies | patch | [`15.2.4` -> `15.2.5`](https://renovatebot.com/diffs/npm/@angular%2fplatform-browser-dynamic/15.2.4/15.2.5) | --- ### Release Notes <details> <summary>angular/angular</summary> ### [`v15.2.5`](https://github.com/angular/angular/blob/HEAD/CHANGELOG.md#​1525-2023-03-29) [Compare Source](angular/angular@15.2.4...15.2.5) ##### common | Commit | Type | Description | | -- | -- | -- | | [ca5acadb78](angular/angular@ca5acad) | fix | invalid ImageKit transformation ([#​49201](angular/angular#49201)) | ##### compiler | Commit | Type | Description | | -- | -- | -- | | [077f6b4674](angular/angular@077f6b4) | fix | do not unquote CSS values ([#​49460](angular/angular#49460)) | | [c3cff35869](angular/angular@c3cff35) | fix | handle trailing comma in object literal ([#​49535](angular/angular#49535)) | ##### core | Commit | Type | Description | | -- | -- | -- | | [d201fc2dec](angular/angular@d201fc2) | fix | set style property value to empty string instead of an invalid value ([#​49460](angular/angular#49460)) | ##### router | Commit | Type | Description | | -- | -- | -- | | [978d37f324](angular/angular@978d37f) | fix | Ensure Router preloading works with lazy component and static children ([#​49571](angular/angular#49571)) | | [a844435514](angular/angular@a844435) | fix | fix [#​49457](angular/angular#49457) outlet activating with old info ([#​49459](angular/angular#49459)) | #### Special Thanks Alan Agius, Andrew Scott, Asaf Malin, Jan Cabadaj, Kristiyan Kostadinov, Matthieu Riegler, Paul Gschwendtner, Sid and Tano Abeleyra <!-- CHANGELOG SPLIT MARKER --> </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS4yNC41IiwidXBkYXRlZEluVmVyIjoiMzUuMjQuNSJ9--> Co-authored-by: cabr2-bot <cabr2.help@gmail.com> Reviewed-on: https://codeberg.org/Calciumdibromid/CaBr2/pulls/1842 Reviewed-by: Epsilon_02 <epsilon_02@noreply.codeberg.org> Co-authored-by: Calciumdibromid Bot <cabr2_bot@noreply.codeberg.org> Co-committed-by: Calciumdibromid Bot <cabr2_bot@noreply.codeberg.org>
This issue has been automatically locked due to inactivity. Read more about our automatic conversation locking policy. This action has been performed automatically by a bot. |
fix(compiler): do not unquote CSS values
Currently we are unsafely unquoting CSS values which in some cases causes valid values to become invalid and invalid values to become valid.
Example:
In the above case,
width
has an invalid value of"1px"
, however the compiler will transform it to1px
which makes it valid.On the other hand, in the below case
content
has a valid value of"foo"
, but since the compiler unwraps it tofoo
it becomes invalid. For correctness, we should not remove quotes.More information about values can be found https://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
fix(core): set style property value to empty string instead of an invalid value
Currently when the value of a styling property that has a unit is empty string a invalid value is generated.
Example:
[style.width.px] = ""
will generate a value of"px"
, when instead it should be""
.This causes browser to reset the value to an empty string. This is however not the case in Domino with changes in angular/domino@bfc9114.
Related to #49445
TGP 🟢 : http://test/OCL:517391008:BASE:517903049:1679305336599:6def8c79
Failing target CL: http://cl/517411522