defmodule MoonWeb.Examples.Design.TableExample.Stream do @moduledoc false use Moon.LiveView use MoonWeb, :example alias Moon.Design.Table alias Moon.Design.Table.Column alias Moon.Components.Renderers.Datetime def mount(_params, _session, socket) do {:ok, stream(socket, :models, models())} end defp models() do Enum.map(1..5, fn x -> %{ id: x, name: "Name #{x}", created_at: DateTime.utc_now() } end) end def render(assigns) do ~F"""
"stream"}} row_click="row_click" > {model.id} {model.name}
""" end def handle_event("row_click", params, socket) do data = models() |> Enum.map(&(("#{&1.id}" == params["selected"] && Map.put(&1, :is_selected, true)) || &1)) {:noreply, stream(socket, :models, data, reset: true)} end def code() do """ use Phoenix.LiveView alias Moon.Design.Table alias Moon.Design.Table.Column alias Moon.Components.Renderers.Datetime def mount(_params, _session, socket) do {:ok, stream(socket, :models, models())} end defp models() do Enum.map(1..5, fn x -> %{ id: x, name: "Name \#{x}", created_at: DateTime.utc_now() } end) end def render(assigns) do ~F\"""
"stream"}}> {model.id} {model.name}
\""" end def handle_event("row_click", params, socket) do data = models() |> Enum.map(&("\#{&1.id}" == params["selected"] && Map.put(&1, :is_selected, true) || &1)) {:noreply, stream(socket, :models, data, reset: true )} end """ end end