mirror of
https://github.com/woutdp/live_svelte
synced 2026-05-24 09:28:21 +00:00
Fix issue LiveJSON when not using SSR
This commit is contained in:
parent
9e131f24e5
commit
c1f64075d4
3 changed files with 17 additions and 11 deletions
|
|
@ -3,7 +3,16 @@ defmodule ExampleWeb.LiveJson do
|
|||
|
||||
def render(assigns) do
|
||||
~H"""
|
||||
<.svelte name="LiveJson" live_json_props={%{big_data_set: @ljbig_data_set}} />
|
||||
<div class="flex gap-10">
|
||||
<div>
|
||||
SSR:
|
||||
<.svelte name="LiveJson" live_json_props={%{big_data_set: @ljbig_data_set}} />
|
||||
</div>
|
||||
<div>
|
||||
No SSR:
|
||||
<.svelte name="LiveJson" live_json_props={%{big_data_set: @ljbig_data_set}} ssr={false} />
|
||||
</div>
|
||||
</div>
|
||||
"""
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -78,6 +78,7 @@ defmodule LiveSvelte do
|
|||
|
||||
assigns =
|
||||
assigns
|
||||
|> assign(:init, init)
|
||||
|> assign(:slots, slots)
|
||||
|> assign(:ssr_render, ssr_code)
|
||||
|
||||
|
|
@ -88,7 +89,7 @@ defmodule LiveSvelte do
|
|||
id={id(@name)}
|
||||
data-name={@name}
|
||||
data-props={json(@props)}
|
||||
data-live-json={render_live_json(@live_json_props, @ssr_render)}
|
||||
data-live-json={if @init, do: json(@live_json_props), else: @live_json_props |> Map.keys() |> json()}
|
||||
data-slots={Slots.base_encode_64(@slots) |> json}
|
||||
phx-update="ignore"
|
||||
phx-hook="SvelteHook"
|
||||
|
|
@ -119,9 +120,6 @@ defmodule LiveSvelte do
|
|||
end
|
||||
end
|
||||
|
||||
def render_live_json(data, nil), do: json(Map.keys(data))
|
||||
def render_live_json(data, _ssr_render), do: json(data)
|
||||
|
||||
defp id(name), do: "#{name}-#{System.unique_integer([:positive])}"
|
||||
|
||||
@doc false
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ defmodule LiveSvelte.LiveJson do
|
|||
:live_json_props,
|
||||
:map,
|
||||
default: %{},
|
||||
doc: "LiveJson props to pass to the Svelte component"
|
||||
doc: "LiveJSON props to pass to the svelte component"
|
||||
)
|
||||
|
||||
slot(:inner_block)
|
||||
|
|
@ -13,12 +13,11 @@ defmodule LiveSvelte.LiveJson do
|
|||
def live_json(assigns) do
|
||||
~H"""
|
||||
<%= if @live_json_props != %{} do %>
|
||||
<div id="lj" phx-hook="LiveJSON">
|
||||
<%= render_slot(@inner_block) %>
|
||||
</div>
|
||||
<% else %>
|
||||
<%= render_slot(@inner_block) %>
|
||||
<div id={id("lj")} phx-hook="LiveJSON" />
|
||||
<% end %>
|
||||
<%= render_slot(@inner_block) %>
|
||||
"""
|
||||
end
|
||||
|
||||
defp id(name), do: "#{name}-#{System.unique_integer([:positive])}"
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in a new issue