defmodule ClaperWeb.Component.Input do @moduledoc """ Input component for forms """ use ClaperWeb, :view_component def text(assigns) do assigns = assigns |> assign_new(:required, fn -> false end) |> assign_new(:autofocus, fn -> false end) |> assign_new(:placeholder, fn -> false end) |> assign_new(:readonly, fn -> false end) |> assign_new(:labelClass, fn -> "text-gray-700" end) |> assign_new(:fieldClass, fn -> "bg-white" end) |> assign_new(:value, fn -> input_value(assigns.form, assigns.key) end) ~H"""
<%= label(@form, @key, @name, class: "block text-sm font-medium #{@labelClass}") %>
<%= text_input(@form, @key, required: @required, readonly: @readonly, autofocus: @autofocus, placeholder: @placeholder, autocomplete: @key, value: @value, class: "#{@fieldClass} read-only:opacity-50 outline-none shadow-base focus:ring-primary-500 focus:border-primary-500 focus:ring-2 block w-full text-lg border-gray-300 rounded-md py-2 px-3" ) %>
<%= if Keyword.has_key?(@form.errors, @key) do %>

<%= error_tag(@form, @key) %>

<% end %>
""" end def textarea(assigns) do assigns = assigns |> assign_new(:required, fn -> false end) |> assign_new(:autofocus, fn -> false end) |> assign_new(:placeholder, fn -> false end) |> assign_new(:readonly, fn -> false end) |> assign_new(:labelClass, fn -> "text-gray-700" end) |> assign_new(:fieldClass, fn -> "bg-white" end) |> assign_new(:value, fn -> input_value(assigns.form, assigns.key) end) ~H"""
<%= label(@form, @key, @name, class: "block text-sm font-medium #{@labelClass}") %>
<%= text_input(@form, @key, required: @required, readonly: @readonly, autofocus: @autofocus, placeholder: @placeholder, autocomplete: @key, value: @value, class: "#{@fieldClass} read-only:opacity-50 outline-none shadow-base focus:ring-primary-500 focus:border-primary-500 focus:ring-2 block w-full text-lg border-gray-300 rounded-md py-2 px-3" ) %>
<%= if Keyword.has_key?(@form.errors, @key) do %>

<%= error_tag(@form, @key) %>

<% end %>
""" end def select(assigns) do assigns = assigns |> assign_new(:required, fn -> false end) |> assign_new(:autofocus, fn -> false end) |> assign_new(:placeholder, fn -> false end) |> assign_new(:labelClass, fn -> "text-gray-700" end) |> assign_new(:fieldClass, fn -> "bg-white" end) ~H"""
<%= label(@form, @key, @name, class: "block text-sm font-medium #{@labelClass}") %>
<%= select(@form, @key, @array, required: @required, autofocus: @autofocus, placeholder: @placeholder, autocomplete: @key, class: "#{@fieldClass} outline-none shadow-base focus:ring-primary-500 focus:border-primary-500 block w-full text-lg border-gray-300 rounded-md py-2 px-3" ) %>
<%= if Keyword.has_key?(@form.errors, @key) do %>

<%= error_tag(@form, @key) %>

<% end %>
""" end def check(assigns) do assigns = assigns |> assign_new(:disabled, fn -> false end) |> assign_new(:shortcut, fn -> nil end) ~H""" """ end def checked(is_checked, key, js \\ %JS{}) def checked(false, key, js) do js |> JS.push("checked", value: %{key: key, value: true}) end def checked(true, key, js) do js |> JS.remove_class("translate-x-6", to: "#check-#{key} > span" ) |> JS.add_class("translate-x-0", to: "#check-#{key} > span" ) |> JS.remove_class("opacity-0 ease-out duration-100", to: "#check-#{key} > span > span" ) |> JS.add_class("opacity-100 ease-in duration-200", to: "#check-#{key} > span > span" ) |> JS.remove_class("opacity-100 ease-in duration-200", to: "#check-#{key} > span > span:nth-child(2)" ) |> JS.add_class("opacity-0 ease-out duration-100", to: "#check-#{key} > span > span:nth-child(2)" ) |> JS.push("checked", value: %{key: key, value: false}) end def code(assigns) do assigns = assigns |> assign_new(:required, fn -> false end) |> assign_new(:autofocus, fn -> false end) |> assign_new(:placeholder, fn -> false end) |> assign_new(:readonly, fn -> false end) ~H"""
<%= label(@form, @key, @name, class: "block text-sm font-medium text-gray-700") %>
code <%= text_input(@form, @key, required: @required, readonly: @readonly, placeholder: @placeholder, autofocus: @autofocus, autocomplete: @key, class: "read-only:opacity-50 outline-none shadow-base focus:ring-primary-500 focus:border-primary-500 block w-full text-lg border-gray-300 rounded-md py-2 pr-3 pl-9 uppercase" ) %>
<%= if Keyword.has_key?(@form.errors, @key) do %>

<%= error_tag(@form, @key) %>

<% end %>
""" end def date(assigns) do assigns = assigns |> assign_new(:required, fn -> false end) |> assign_new(:autofocus, fn -> false end) |> assign_new(:placeholder, fn -> false end) |> assign_new(:readonly, fn -> false end) ~H"""
<%= label(@form, @key, @name, class: "block text-sm font-medium text-gray-700") %>
<%= hidden_input(@form, @key) %> <%= text_input(@form, :local_date, autofocus: @autofocus, placeholder: @placeholder, autocomplete: false, class: "outline-none shadow-base focus:ring-primary-500 focus:border-primary-500 block w-full text-lg border-gray-300 rounded-md py-2 px-3 read-only:opacity-50" ) %>
<%= if Keyword.has_key?(@form.errors, @key) do %>

<%= error_tag(@form, @key) %>

<% end %>
""" end def email(assigns) do assigns = assigns |> assign_new(:required, fn -> false end) |> assign_new(:autofocus, fn -> false end) |> assign_new(:readonly, fn -> false end) |> assign_new(:placeholder, fn -> false end) |> assign_new(:labelClass, fn -> "text-gray-700" end) |> assign_new(:fieldClass, fn -> "bg-white" end) |> assign_new(:value, fn -> input_value(assigns.form, assigns.key) end) ~H"""
<%= label(@form, @key, @name, class: "block text-sm font-medium #{@labelClass}") %>
<%= email_input(@form, @key, required: @required, autofocus: @autofocus, placeholder: @placeholder, readonly: @readonly, autocomplete: @key, value: @value, class: "#{@fieldClass} read-only:opacity-50 shadow-base block w-full text-lg focus:ring-primary-500 focus:ring-2 outline-none rounded-md py-2 px-3", "x-model": "input", "x-ref": "input" ) %>
<%= if Keyword.has_key?(@form.errors, @key) do %>

<%= error_tag(@form, @key) %>

<% end %>
""" end def password(assigns) do assigns = assigns |> assign_new(:required, fn -> false end) |> assign_new(:autofocus, fn -> false end) |> assign_new(:placeholder, fn -> false end) |> assign_new(:labelClass, fn -> "text-gray-700" end) |> assign_new(:fieldClass, fn -> "bg-white" end) |> assign_new(:value, fn -> Map.get(assigns.form.data, assigns.key, "") end) ~H"""
<%= label(@form, @key, @name, class: "block text-sm font-medium #{@labelClass}") %>
<%= password_input(@form, @key, required: @required, autofocus: @autofocus, placeholder: @placeholder, class: "#{@fieldClass} shadow-base block w-full text-lg focus:ring-primary-500 focus:ring-2 outline-none rounded-md py-2 px-3", "x-model": "input", "x-ref": "input" ) %>
<%= if Keyword.has_key?(@form.errors, @key) do %>

<%= error_tag(@form, @key) %>

<% end %>
""" end end