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 %>