defmodule Moon.Design.Form.AuthCode.Input do
@moduledoc false
use Moon.StatelessComponent, slot: "input"
import Phoenix.HTML.Form
import Moon.Helpers.Form
alias Surface.Components.Form.HiddenInput
@doc "Id attribute for DOM element"
prop(id, :string, from_context: :id)
@doc "Data-testid attribute for DOM element"
prop(testid, :string)
@doc "Additional Tailwind classes"
prop(class, :css_class)
@doc "Will be got from AuthCode in most cases"
prop(disabled, :boolean, from_context: :disabled)
@doc "Will be got from AuthCode in most cases"
prop(placeholder, :string, from_context: :placeholder)
@doc "Will be got from AuthCode in most cases"
prop(type, :string, from_context: :type)
@doc "Will be got from AuthCode in most cases"
prop(length, :integer, from_context: :length)
@doc "Name of the field, usually should be taken from context"
prop(field, :atom, from_context: {Surface.Components.Form.Field, :field})
@doc "Form info, usually should be taken from context"
prop(form, :form, from_context: {Surface.Components.Form, :form})
@doc "Will be got from AuthCode in most cases"
prop(error, :boolean, from_context: :error)
@doc "Will be got from AuthCode in most cases"
prop(allowed_characters, :string, from_context: :allowed_characters)
@doc "Will be got from AuthCode in most cases"
prop(value, :string, from_context: :value)
def render(assigns) do
~F"""
{#for index <- 0..(@length - 1)}
{/for}
"""
end
defp input_attributes("alpha") do
[type: "text", inputmode: "text", pattern: "[a-zA-Z]{1}"]
end
defp input_attributes("alphanumeric") do
[type: "text", inputmode: "text", pattern: "[a-zA-Z0-9]{1}"]
end
defp input_attributes("numeric") do
[type: "tel", inputmode: "numeric", pattern: "[0-9]{1}", min: "0", max: "9"]
end
end