@@ -3,6 +3,7 @@ defmodule ClaperWeb.Component.Input do
33 Input component for forms
44 """
55 use ClaperWeb , :view_component
6+ use Gettext , backend: ClaperWeb.Gettext
67
78 def text ( assigns ) do
89 assigns =
@@ -11,6 +12,10 @@ defmodule ClaperWeb.Component.Input do
1112 |> assign_new ( :autofocus , fn -> false end )
1213 |> assign_new ( :placeholder , fn -> false end )
1314 |> assign_new ( :readonly , fn -> false end )
15+ |> assign_new ( :label , fn
16+ % { required: false , name: name } -> ~s/ #{ name } #{ gettext ( "(optional)" ) } /
17+ % { name: name } -> name
18+ end )
1419 |> assign_new ( :labelClass , fn -> "text-gray-700" end )
1520 |> assign_new ( :fieldClass , fn -> "bg-white" end )
1621 |> assign_new ( :value , fn -> input_value ( assigns . form , assigns . key ) end )
@@ -19,7 +24,7 @@ defmodule ClaperWeb.Component.Input do
1924
2025 ~H"""
2126 < div class = "relative " >
22- { label ( @ form , @ key , @ name , class: "block text-sm font-medium #{ @ labelClass } " ) }
27+ { label ( @ form , @ key , @ label , class: "block text-sm font-medium #{ @ labelClass } " ) }
2328 < div class = "mt-1 " >
2429 { text_input ( @ form , @ key ,
2530 required: @ required ,
@@ -103,6 +108,23 @@ defmodule ClaperWeb.Component.Input do
103108 """
104109 end
105110
111+ attr :form , Phoenix.HTML.Form , required: true
112+ attr :key , :atom , required: true
113+ attr :label , :string , default: nil
114+ attr :labelClass , :string , default: nil
115+
116+ def toggle ( assigns ) do
117+ ~H"""
118+ < div >
119+ { @ label &&
120+ PhoenixHTMLHelpers.Form . label ( @ form , @ key , @ label ,
121+ class: [ "block text-sm font-medium" , @ labelClass || "text-gray-700" ]
122+ ) }
123+ { PhoenixHTMLHelpers.Form . checkbox ( @ form , @ key , class: "toggle" ) }
124+ </ div >
125+ """
126+ end
127+
106128 def check ( assigns ) do
107129 assigns =
108130 assigns
@@ -269,13 +291,17 @@ defmodule ClaperWeb.Component.Input do
269291 |> assign_new ( :autofocus , fn -> false end )
270292 |> assign_new ( :readonly , fn -> false end )
271293 |> assign_new ( :placeholder , fn -> false end )
294+ |> assign_new ( :label , fn
295+ % { required: false , name: name } -> ~s/ #{ name } #{ gettext ( "(optional)" ) } /
296+ % { name: name } -> name
297+ end )
272298 |> assign_new ( :labelClass , fn -> "text-gray-700" end )
273299 |> assign_new ( :fieldClass , fn -> "bg-white" end )
274300 |> assign_new ( :value , fn -> input_value ( assigns . form , assigns . key ) end )
275301
276302 ~H"""
277303 < div class = "relative " x-data = { "{input: '#{ assigns . value } '}" } >
278- { label ( @ form , @ key , @ name , class: "block text-sm font-medium #{ @ labelClass } " ) }
304+ { label ( @ form , @ key , @ label , class: "block text-sm font-medium #{ @ labelClass } " ) }
279305 < div class = "mt-1 " >
280306 { email_input ( @ form , @ key ,
281307 required: @ required ,
0 commit comments