Comments (4)
Continuing the thread about live_patch/redirect not supporting containers inside the do block:
I mentioned I thought it was because they were using ~E
under the hood instead of ~L
; however after looking at the code it's because the method uses Phoenix.HTML.Tag.content_tag
.
Relevant block show below:
defp live_link(type, block_or_text, opts) do
uri = Keyword.fetch!(opts, :to)
replace = Keyword.get(opts, :replace, false)
kind = if replace, do: "replace", else: "push"
data = [phx_link: type, phx_link_state: kind]
opts =
opts
|> Keyword.update(:data, data, &Keyword.merge(&1, data))
|> Keyword.put(:href, uri)
Phoenix.HTML.Tag.content_tag(:a, opts, do: block_or_text)
end
from surface.
So I suppose it will only work when the content is simple markup even if you are not using Surface. I mean, if you try to use just LV and use <%= live_component SomeComponent, ... %>
as the content, it won't work. Right?
If that's the case, this is also a LiveView issue and we have two options:
-
Open an issue on the phoenix LV project to check why it doesn't accept it. It might be by design or due to some technical limitation. In either case, it would be nice to know if they intend to change this behaviour in the near future or not. I think since the component API is quite new and usually the content of those helpers a simple, users may have not faced this problem yet.
-
Implement our own helpers without depending on
content_tag
.
I think choosing #2
will depend on the answer of #1
.
from surface.
Yeah, live_component
within live_patch
/live_redirect
fails with the same error message. I'll go ahead and post an issue over there.
I already have a live patch/live redirect component that doesn't use content_tag
which I'd be happy to push up as a PR; though I understand if you want to hold off until we get feedback from the LV project
from surface.
I already have a live patch/live redirect component that doesn't use
content_tag
which I'd be happy to push up as a PR
Awesome! Feel free to submit a PR. We can replace the implementation later in case they update the original one.
from surface.
Related Issues (20)
- Erlang Error in Elixir Language Server with Surface HOT 1
- [Using a plugin] Scoped CSS changes require two page reloads. HOT 1
- inputs_for/3 warning HOT 1
- Warnings on Select component with disabled property
- Props missing inside `handle_event()` `socket.assigns` map. HOT 3
- mix surface.init: no function clause matching in Sourceror.Zipper.down/1 HOT 3
- Support for LiveViewNative? HOT 5
- Submitted forms don't carry the "submitter" attribute
- Surface CSS scoping attributes don't work when root component is a component
- When using :on-click={"name", target="#target_id"} I cannot seem to get a sibling to target another sibling node that is rendered in the same parent. HOT 1
- Compatibility with LiveView 0.20 HOT 7
- Question: How would you make the sample tab component to use svg icons instead of font icons HOT 4
- Elixir 1.16: negative steps are not supported in String.slice/2, pass 1..-2//1 instead
- Malformed HTML when using LiveRedirect with another component inside HOT 1
- Mix.env() usage can cause troubles in release HOT 2
- Question: Form example on latest version HOT 2
- error: module Surface.Components.Form.Inputs is not loaded and could not be found. This may be happening because the module you are trying to load directly or indirectly depends on the current module<Description> HOT 1
- Surface LiveComponent raise single static root error if render root is Form Component HOT 2
- error: undefined function date_select/3 in v0.11.4 HOT 1
- Surface.LiveViewTest is broken after Phoenix LiveView 0.20.15 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from surface.