Gray color is not correctly cast to a string
Closed this issue · 7 comments
What hue would you suggest gray has? The reason why you get an undefined hue (none
) is because the color is achromatic and has no hue.
I suggest use 0
instead none
when color stringify. So, I expect hsl(0 0% 50.196%)
but not a hsl(none 0% 50.196%)
Because converting color with none
to other format is another issue:
(new Color("hsl(none 0% 50.196%)")).to("srgb").toString()
>>> 'rgb(none none none)'
but with 0
instead none
it works corretly:
(new Color("hsl(0 0% 50.196%)")).to("srgb").toString()
>>> 'rgb(50.196% 50.196% 50.196%)'
none
is now supported in the CSS spec and has been implemented in a number of browsers. Gray doesn't actually have a red (0deg) hue, but regardless of technicalities of what is more correct, I can imagine some people desiring a way to serialize without none
. There was an option to do so for some amount of time, but it was removed in e28cd6a.
Below does look like a bug to me though. Undefined values should be handled before conversion, but that does not appear to be happening currently.
new Color("hsl(none 0% 50.196%)").to("srgb").toString()
>>> 'rgb(none none none)'
I just fixed problem for a while with a .toString().replaceAll("none", "0")
after any stringify.
I personally think an option to allow omitting none
in serialization seems reasonable, but thenone
conversion issue should definitely get fixed.
None bug has been fixed on main. A new issue is opened that, when implemented, could solve the serialization request: #479. I will resolve this as a duplicate of that issue. I advise following that issue to stay on top of progress.