Skip to content
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

feature: allow same parsing of style attributes as for class #445

Open
krilllind opened this issue Jul 1, 2024 · 1 comment
Open

feature: allow same parsing of style attributes as for class #445

krilllind opened this issue Jul 1, 2024 · 1 comment

Comments

@krilllind
Copy link

As described by this comment it is possible to write expressions like the following for class bindings as false and nil values are discarded:

<div class={["my-class", @foo? and "my-class--modifier"]}>
  ...
</div>

This is great because it allows developers to easily implement additional css classes if a condition is true and otherwise it will just be discarded. However the same behaviour doesn't work for the style attribute:

<div style={["--my-target: 100", "--my-value: 50", @label and "--label: #{@label}"]}>
  ...
</div>

This raises the argument error (from here)

lists in Phoenix.HTML and templates may only contain integers representing bytes, binaries or other lists, got invalid entry: nil

Given the flexibility that CSS custom properties offers I think it would be a great addition to the syntax.

Current workaround to this issue would be to write it as the following (which doesn't read as good and looks more complex than needed to be):

<div style={["--my-target: 100", "--my-value: 50", (if @label, do: "--label: #{@label}", else: "")]}>
  ...
</div>

Is there any security concern in play here or would this be an easy addition?

Thanks

@josevalim
Copy link
Member

I believe the problem is that this would be backwards incompatible. IIRC, when we added the changes to class, we had to launch a major version, and I am not sure this is an important enough feature to justify a new major release of this library. Perhaps we leave this open and revisit by the time of a new major version?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants