defmodule Moon.Components.CheckboxMultiselect do
@moduledoc false
use Moon.StatelessComponent
alias Moon.Components.Checkbox
alias Moon.Components.ListItems.SingleLineItem
prop(options, :list, required: true)
prop(values, :list, required: true)
prop(on_select, :event)
prop(testid, :string)
def render(assigns) do
~F"""
{#for option <- @options}
<:right_icon>
{get_label(option)}
{/for}
"""
end
def is_checked(values, option) do
Enum.member?(values, get_value(option)) || Enum.member?(values, "#{get_value(option)}")
end
def get_value(option) do
Map.get(option, :value) || Map.get(option, :id)
end
def get_label(option) do
Map.get(option, :label) || Map.get(option, :name)
end
def toggle_list_value(list, value) do
case Enum.member?(list, value) do
true ->
List.delete(list, value)
false ->
list ++ [value]
end
end
end