defmodule Moon.Components.Select do
@moduledoc false
use Moon.StatelessComponent
alias Moon.Components.FieldLabel
prop(field, :atom)
prop(label, :string)
prop(options, :any, default: [])
prop(value, :any)
prop(prompt, :string)
prop(error, :string)
prop(rounded, :boolean, default: true)
prop(disabled, :boolean)
prop(required, :boolean)
prop(flex, :boolean)
prop(input_grow, :boolean)
prop(icon, :string)
prop(full_width, :boolean)
prop(class, :string)
def render(assigns) do
options_with_selected =
Enum.map(assigns.options, fn row ->
[
key: row[:key],
value: row[:value],
selected: row[:value] == assigns.value,
disabled: row[:disabled]
]
end)
select = ~F"""
"""
~F"""
{#if @label}
{select}
{#else}
{select}
{/if}
"""
end
end