From b82bc23aa9833aad0ea6240008809b661971ca84 Mon Sep 17 00:00:00 2001 From: Dzung Nguyen Date: Sat, 8 Jun 2024 09:32:46 +0700 Subject: [PATCH] Fix mixing string and integer for integer type --- lib/salad_ui/progress.ex | 12 ++++++++++++ lib/salad_ui/slider.ex | 14 ++++++++++++++ lib/salad_ui/textarea.ex | 10 ++-------- lib/salad_ui/tooltip.ex | 11 +++++++++++ 4 files changed, 39 insertions(+), 8 deletions(-) diff --git a/lib/salad_ui/progress.ex b/lib/salad_ui/progress.ex index 4b80177..9669490 100644 --- a/lib/salad_ui/progress.ex +++ b/lib/salad_ui/progress.ex @@ -16,6 +16,8 @@ defmodule SaladUI.Progress do attr(:rest, :global) def progress(assigns) do + assigns = assign(assigns, :value, normalize_integer(assigns[:value])) + ~H"""
""" end + + defp normalize_integer(value) do + case Integer.parse(value) do + {integer, _} -> + integer + + _ -> + nil + end + end end diff --git a/lib/salad_ui/slider.ex b/lib/salad_ui/slider.ex index fc88e19..31a2a69 100644 --- a/lib/salad_ui/slider.ex +++ b/lib/salad_ui/slider.ex @@ -20,6 +20,13 @@ defmodule SaladUI.Slider do attr(:rest, :global) def slider(assigns) do + assigns = + assigns + |> Map.put(:value, normalize_integer(assigns[:value])) + |> Map.put(:min, normalize_integer(assigns[:min])) + |> Map.put(:max, normalize_integer(assigns[:max])) + |> Map.put(:step, normalize_integer(assigns[:step])) + ~H"""
""" end + + defp normalize_integer(value) do + case Integer.parse(value) do + {:ok, integer} -> integer + _ -> nil + end + end end diff --git a/lib/salad_ui/textarea.ex b/lib/salad_ui/textarea.ex index d0b6ed0..087b439 100644 --- a/lib/salad_ui/textarea.ex +++ b/lib/salad_ui/textarea.ex @@ -14,19 +14,12 @@ defmodule SaladUI.Textarea do """ attr(:id, :any, default: nil) - attr(:name, :string) + attr(:name, :string, default: nil) attr(:value, :string) - - attr(:field, Phoenix.HTML.FormField, doc: "a form field struct retrieved from the form, for example: @form[:email]") - attr(:class, :string, default: nil) attr(:rest, :global) def textarea(assigns) do - assigns = prepare_assign(assigns) - rest = Map.merge(assigns.rest, Map.take(assigns, [:id, :name])) - assigns = assign(assigns, :rest, rest) - ~H""" """ diff --git a/lib/salad_ui/tooltip.ex b/lib/salad_ui/tooltip.ex index 4b076d4..4631c04 100644 --- a/lib/salad_ui/tooltip.ex +++ b/lib/salad_ui/tooltip.ex @@ -35,6 +35,17 @@ defmodule SaladUI.Tooltip do """ end + @doc """ + Render only for compatible with shad ui + """ + slot(:inner_block, required: true) + + def tooltip_trigger(assigns) do + ~H""" + <%= render_slot(@inner_block) %> + """ + end + @doc """ Render """