diff --git a/lib/salad_ui/helpers.ex b/lib/salad_ui/helpers.ex index 4b1ea3e..2cacfed 100644 --- a/lib/salad_ui/helpers.ex +++ b/lib/salad_ui/helpers.ex @@ -29,6 +29,16 @@ defmodule SaladUI.Helpers do def normalize_integer(_), do: nil + def normalize_boolean(value) do + case value do + "true" -> true + "false" -> false + true -> true + false -> false + _ -> false + end + end + @doc """ Variant helper for generating classes based on side and align """ diff --git a/lib/salad_ui/radio_group.ex b/lib/salad_ui/radio_group.ex new file mode 100644 index 0000000..b342a67 --- /dev/null +++ b/lib/salad_ui/radio_group.ex @@ -0,0 +1,54 @@ +defmodule SaladUI.RadioGroup do + @moduledoc false + use SaladUI, :component + + @doc """ + Radio input group component + + ## Examples: + """ + attr :name, :string, default: nil + attr :value, :any, default: nil + attr :class, :string, default: nil + slot :inner_block, required: true + + def radio_group(assigns) do + assigns = assign(assigns, :builder, %{name: assigns.name, value: assigns.value}) + + ~H""" +
+ <%= render_slot(@inner_block, @builder) %> +
+ """ + end + + attr :builder, :map, required: true + attr :class, :string, default: nil + attr :checked, :any, default: false + attr :value, :string, default: nil + attr :rest, :global + + def radio_group_item(assigns) do + ~H""" + + """ + end +end