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