defmodule Phoenix.LiveDashboard.FieldsCardComponent do use Phoenix.LiveDashboard.Web, :live_component @impl true def mount(socket) do {:ok, socket} end def normalize_params(params) do params |> validate_required([:fields]) |> put_defaults() end defp validate_required(params, list) do case Enum.find(list, &(not Map.has_key?(params, &1))) do nil -> :ok key -> raise ArgumentError, "the #{inspect(key)} parameter is expected in fields card component" end params end defp put_defaults(params) do params |> Map.put_new(:title, nil) |> Map.put_new(:inner_title, nil) |> Map.put_new(:hint, nil) |> Map.put_new(:inner_hint, nil) end @impl true def render(assigns) do ~H""" <%= if @fields && not Enum.empty?(@fields) do %> <%= if @title do %>
<%= @title %> <%= if @hint do %> <%= hint(do: @hint) %> <% end %>
<% end %>
<%= if @inner_title do %>
<%= @inner_title %> <%= if @inner_hint do %> <%= hint(do: @inner_hint) %> <% end %>
<% end %>
<%= for {k, v} <- @fields do %>
<%= k %>
<% end %>
<% end %> """ end end