defmodule PainWeb.Components.Choices do use Surface.Component prop number, :integer prop choices, :map prop accion, :event prop name, :string prop class, :css_class prop enabled, :map, default: %{} prop labels, :map, default: %{} slot default slot summary def render(assigns) do ~F""" <#slot/> {#for num <- (1..@number)} Map.keys |> Enum.member?(num) && @choices[num] != @name } disabled={@enabled[num] == false} > {if @choices[num] == @name, do: yes(assigns), else: no(assigns)} {#if @labels[num]}{@labels[num]}{/if} {/for} <#slot {@summary} /> """ end def no(assigns) do ~F""" """ end def yes(assigns) do ~F""" """ end end