defmodule MoonWeb.Examples.Design.TableExample.ClickableRows do @moduledoc false use Moon.StatefulComponent use MoonWeb, :example alias Moon.Design.Table alias Moon.Design.Table.Column alias Moon.Components.Renderers.Datetime prop(selected, :list, default: []) data(models, :list, default: Enum.map(1..5, fn x -> %{ id: x, name: "Name #{x}", created_at: DateTime.add(DateTime.utc_now(), -3600 + x) } end) ) def render(assigns) do ~F""" {model.id} {model.name}
""" end def handle_event("single_row_click", %{"selected" => selected}, socket) do {:noreply, assign(socket, selected: [selected])} end def code() do """ alias Moon.Design.Table alias Moon.Design.Table.Column alias Moon.Components.Renderers.Datetime prop(selected, :list, default: []) data(models, :list, default: Enum.map(1..5, fn x -> %{ id: x, name: "Name #\{x}", created_at: DateTime.add(DateTime.utc_now(), -3600 + x) } end) ) def mount(_params, _session, socket) do socket = assign(socket, selected: [] ) {:ok, socket} end def render(assigns) do ~F\""" {model.id} {model.name}
\""" end def handle_event("single_row_click", %{"selected" => selected}, socket) do {:noreply, assign(socket, selected: [selected])} end """ end end