lib/phoenix/ui/components/hidden_input.ex

defmodule Phoenix.UI.Components.HiddenInput do
  @moduledoc """
  Provides hidden input component.
  """
  import Phoenix.HTML.Form, only: [hidden_input: 3]

  use Phoenix.UI, :component

  @doc """
  Renders hidden input component.

  ## Examples

      ```
      <.hidden_input />
      ```

  """
  @spec hidden_input(Socket.assigns()) :: Rendered.t()
  def hidden_input(raw) do
    assigns = assign(raw, :hidden_input_attrs, assigns_to_attributes(raw, [:field, :form]))

    ~H"""
    <%= if assigns[:form] && assigns[:field] do %>
      <%= hidden_input(@form, @field, @hidden_input_attrs) %>
    <% else %>
      <input type="hidden" {@hidden_input_attrs} />
    <% end %>
    """
  end
end