Current section

Files

Jump to
corex lib components checkable helpers.ex
Raw

lib/components/checkable/helpers.ex

defmodule Corex.Checkable.Helpers do
@moduledoc false
def normalize_checked(true), do: true
def normalize_checked(false), do: false
def normalize_checked(:indeterminate), do: :indeterminate
def normalize_checked("indeterminate"), do: :indeterminate
def normalize_checked("true"), do: true
def normalize_checked("false"), do: false
def normalize_checked(nil), do: false
def normalize_checked(_), do: false
def checked_attr_value(true), do: "true"
def checked_attr_value(false), do: "false"
def checked_attr_value(:indeterminate), do: "indeterminate"
def checked_controlled_attr(controlled, checked) do
if controlled, do: checked_attr_value(normalize_checked(checked)), else: nil
end
def checked_default_attr(controlled, checked) do
c = normalize_checked(checked)
if controlled do
nil
else
if c == false, do: nil, else: checked_attr_value(c)
end
end
def checked_form_field_default_attr(checked) do
checked |> normalize_checked() |> checked_attr_value()
end
def native_checked(checked) do
normalize_checked(checked) == true
end
def visual_state(checked) do
case normalize_checked(checked) do
true -> "checked"
false -> "unchecked"
:indeterminate -> "indeterminate"
end
end
end