@@ -353,6 +353,25 @@ defmodule BitstylesPhoenix.Component.Form do
353353 """
354354 )
355355
356+ story (
357+ "Checkbox with label class" ,
358+ """
359+ iex> assigns=%{form: form()}
360+ ...> render ~H\" ""
361+ ...> <.ui_input form={@form} field={:accept} type={:checkbox} label_opts={[class: "extra"]} checked_value="123" unchecked_value="" />
362+ ...> \" ""
363+ """ ,
364+ """
365+ \" ""
366+ <label for="user_accept" class="extra">
367+ <input name="user[accept]" type="hidden" value=""/>
368+ <input id="user_accept" name="user[accept]" type="checkbox" value="123"/>
369+ Accept
370+ </label>
371+ \" ""
372+ """
373+ )
374+
356375 def ui_input ( assigns ) do
357376 extra = assigns_to_attributes ( assigns , @ wrapper_assigns_keys ++ [ :type ] )
358377
@@ -961,20 +980,33 @@ defmodule BitstylesPhoenix.Component.Form do
961980
962981 def ui_raw_input ( % { type: "checkbox" } = assigns ) do
963982 assigns =
964- assign_new ( assigns , :checked , fn ->
983+ assigns
984+ |> assign_new ( :checked , fn ->
965985 PhxForm . normalize_value ( "checkbox" , assigns [ :value ] )
966986 end )
987+ |> assign_new ( :checked_value , fn -> "true" end )
988+ |> assign_new ( :unchecked_value , fn -> "false" end )
989+
990+ extra =
991+ assigns_to_attributes ( assigns , [
992+ :id ,
993+ :name ,
994+ :checked ,
995+ :value ,
996+ :type ,
997+ :checked_value ,
998+ :unchecked_value
999+ ] )
9671000
968- extra = assigns_to_attributes ( assigns , [ :id , :name , :checked , :value , :type ] )
9691001 assigns = assign ( assigns , extra: extra )
9701002
9711003 ~H"""
972- < input name = { @ name } type = "hidden " value = " false " disabled = { @ extra [ :disabled ] } />
1004+ < input name = { @ name } type = "hidden " value = { @ unchecked_value } disabled = { @ extra [ :disabled ] } />
9731005 < input
9741006 id = { @ id }
9751007 name = { @ name }
9761008 type = "checkbox "
977- value = " true "
1009+ value = { @ checked_value }
9781010 checked = { @ checked }
9791011 { @ extra }
9801012 />
0 commit comments