# https://www.figma.com/file/aMBmdNX4cfv885xchXHIHo/Partners---Components-%7BMDS%7D?node-id=23443%3A818 defmodule Moon.Components.Select.Dropdown do @moduledoc false use Moon.StatelessComponent alias Moon.Components.ListItems.SingleLineItem alias Moon.Components.Select.Dropdown.Option alias Moon.Components.Select.Helpers, as: SelectHelpers alias __MODULE__.Icon alias Moon.Autolayouts.LeftToRight alias Moon.Components.Checkbox alias Moon.Components.RadioButton alias Moon.Components.TextInput prop(id, :string) prop(select_id, :string) prop(class, :css_class) prop(available_options, :any) prop(options, :any) prop(value, :any) prop(is_multi, :boolean) prop(disabled, :boolean, default: false) prop(on_search_change, :event) prop(search_string, :string) prop(on_option_clicked, :event) prop(with, :string, default: nil, values: ["checkbox", "radio"]) prop(content_class, :css_class, default: "max-h-[300px] overflow-hidden overflow-y-scroll") prop(field, :atom, from_context: {Surface.Components.Form.Field, :field}) prop(form, :form, from_context: {Surface.Components.Form, :form}) slot(default) slot(footer) slot(header) def render(assigns) do ~F"""
{#if !@select_id} {#if @with == "radio"} {Phoenix.HTML.Form.select( @form, @field, SelectHelpers.get_formatted_options(@available_options || @options), id: @id, class: "hidden", disabled: @disabled, selected: @value )} {#else} {Phoenix.HTML.Form.multiple_select( @form, @field, SelectHelpers.get_formatted_options(@available_options || @options), id: @id, class: "hidden", disabled: @disabled, selected: @value )} {/if} {/if} {#if @on_search_change} "-search"} field={:value} value={@search_string} keyup={@on_search_change} class="bg-red-500" > <:left_icon_slot> {/if} {#if slot_assigned?(:header)} <#slot {@header} /> {/if}
{#if slot_assigned?(:footer)}
<#slot {@footer} />
{/if}
""" end end