Packages
moon
2.79.3
2.90.5
retired
2.90.4
2.90.3
2.90.2
2.90.1
2.90.0
2.89.4
2.89.1
2.89.0
2.88.0
2.87.11
2.87.10
2.87.9
2.87.8
2.87.7
2.87.6
2.87.5
2.87.4
2.87.3
2.87.2
2.87.1
2.87.0
2.86.1
2.86.0
2.85.1
2.85.0
2.84.0
2.83.0
2.82.0
2.81.4
2.81.3
2.81.2
2.81.1
2.81.0
2.80.2
2.80.1
2.80.0
2.79.13
2.79.12
2.79.11
2.79.10
2.79.9
2.79.8
2.79.7
2.79.6
2.79.5
2.79.4
2.79.3
2.79.2
2.79.1
2.79.0
2.78.4
2.78.3
2.78.2
2.78.1
2.78.0
2.77.0
2.76.5
2.76.4
2.76.3
2.76.2
2.76.1
2.76.0
2.75.0
2.74.1
2.74.0
2.73.8
2.73.7
2.73.6
2.73.5
2.73.4
2.73.3
2.73.2
2.73.1
2.73.0
2.72.5
2.72.4
2.72.3
2.72.2
2.72.1
2.72.0
2.71.1
2.71.0
2.70.0
2.69.2
2.69.1
2.69.0
2.68.11
2.68.10
Components-based design system written in elixir
Current section
Files
Jump to
Current section
Files
lib/moon/components/select/helpers.ex
defmodule Moon.Components.Select.Helpers do
@moduledoc false
def get_formatted_options(options, current_value \\ "") do
formatted_options =
Enum.map(options, fn option ->
{option.label, option.value}
end)
if current_value == "" do
[{"", ""}] ++ formatted_options
else
formatted_options
end
end
# this is copy-paste and a bit modified from: https://github.com/phoenixframework/phoenix_html/blob/v3.2.0/lib/phoenix_html/form.ex#L1272
def get_normalized_value(form, field, is_multi, opts) do
value = get_value(form, field, opts)
normalize_value(value, is_multi)
end
def normalize_value(value, is_multi) do
if is_multi do
if value do
Enum.map(value, fn x -> "#{x}" end)
else
[]
end
else
"#{value}"
end
end
def get_value(form, field, opts) do
{value, _opts} = Keyword.pop(opts, :value)
if value != nil do
value
else
param = "#{field}"
case form do
%{params: %{^param => sent}} ->
sent
_ ->
Phoenix.HTML.Form.input_value(form, field)
end
end
end
def get_option(options, v) do
Enum.find(options, fn option -> "#{option.value}" == "#{v}" end)
end
def get_active_border_color(class) do
Regex.run(~r(\bfocus:border.*\b), class)
|> List.first()
|> String.split(" ")
|> List.first()
|> String.split(":")
|> List.last()
end
# TODO - remove
def innerlabel_font_class(size) do
case size do
"small" -> "uppercase text-moon-10"
"medium" -> "text-moon-12"
"large" -> "text-moon-14"
"xlarge" -> "text-moon-16"
end
end
def get_padding(size) do
case size do
"sm" -> "p-2 h-8"
"md" -> "p-3 h-10"
"lg" -> "p-3 h-12"
_ -> "p-4 h-14"
end
end
# TODO - remove
def label_font_class(size) do
case size do
"small" -> "text-moon-12"
"medium" -> "text-moon-14"
"large" -> "text-moon-16"
"xlarge" -> "text-moon-18"
end
end
# TODO - remove
def prompt_font_class(size), do: label_font_class(size)
end