<%= case @type do %>
<% "checkbox" -> %>
<% "switch" -> %>
@@ -132,14 +135,26 @@ defmodule PetalComponents.Form do
- <%= @label %>
+ {@label}
<% "checkbox_group" -> %>
- <.form_label form={@form} label={@label} class={@label_class} />
+ <.form_label
+ form={@form}
+ field={@field}
+ label={@label}
+ class={@label_class}
+ compound={true}
+ />
<.checkbox_group form={@form} field={@field} {@rest} />
<% "radio_group" -> %>
- <.form_label form={@form} label={@label} class={@label_class} />
+ <.form_label
+ form={@form}
+ field={@field}
+ label={@label}
+ class={@label_class}
+ compound={true}
+ />
<.radio_group form={@form} field={@field} {@rest} />
<% "text_input" -> %>
<.form_label form={@form} field={@field} label={@label} class={@label_class} />
@@ -166,16 +181,34 @@ defmodule PetalComponents.Form do
<.form_label form={@form} field={@field} label={@label} class={@label_class} />
<.time_input form={@form} field={@field} {@rest} />
<% "time_select" -> %>
- <.form_label form={@form} label={@label} class={@label_class} />
+ <.form_label
+ form={@form}
+ field={@field}
+ label={@label}
+ class={@label_class}
+ compound={true}
+ />
<.time_select form={@form} field={@field} {@rest} />
<% "datetime_select" -> %>
- <.form_label form={@form} label={@label} class={@label_class} />
+ <.form_label
+ form={@form}
+ field={@field}
+ label={@label}
+ class={@label_class}
+ compound={true}
+ />
<.datetime_select form={@form} field={@field} {@rest} />
<% "datetime_local_input" -> %>
<.form_label form={@form} field={@field} label={@label} class={@label_class} />
<.datetime_local_input form={@form} field={@field} {@rest} />
<% "date_select" -> %>
- <.form_label form={@form} label={@label} class={@label_class} />
+ <.form_label
+ form={@form}
+ field={@field}
+ label={@label}
+ class={@label_class}
+ compound={true}
+ />
<.date_select form={@form} field={@field} {@rest} />
<% "date_input" -> %>
<.form_label form={@form} field={@field} label={@label} class={@label_class} />
@@ -210,15 +243,11 @@ defmodule PetalComponents.Form do
attr(:rest, :global, include: @form_attrs)
def text_input(assigns) do
- assigns = assign_defaults(assigns, text_input_classes(field_has_errors?(assigns)))
+ errors = used_input_errors(assigns)
+ assigns = assign_defaults(assigns, text_input_classes(errors))
~H"""
- <%= Form.text_input(
- @form,
- @field,
- [class: @classes, phx_feedback_for: Phoenix.HTML.Form.input_name(@form, @field)] ++
- Map.to_list(@rest)
- ) %>
+ {Form.text_input(@form, @field, [class: @classes] ++ Map.to_list(@rest))}
"""
end
@@ -229,15 +258,11 @@ defmodule PetalComponents.Form do
attr(:rest, :global, include: @form_attrs)
def email_input(assigns) do
- assigns = assign_defaults(assigns, text_input_classes(field_has_errors?(assigns)))
+ errors = used_input_errors(assigns)
+ assigns = assign_defaults(assigns, text_input_classes(errors))
~H"""
- <%= Form.email_input(
- @form,
- @field,
- [class: @classes, phx_feedback_for: Phoenix.HTML.Form.input_name(@form, @field)] ++
- Map.to_list(@rest)
- ) %>
+ {Form.email_input(@form, @field, [class: @classes] ++ Map.to_list(@rest))}
"""
end
@@ -248,15 +273,11 @@ defmodule PetalComponents.Form do
attr(:rest, :global, include: @form_attrs)
def number_input(assigns) do
- assigns = assign_defaults(assigns, text_input_classes(field_has_errors?(assigns)))
+ errors = used_input_errors(assigns)
+ assigns = assign_defaults(assigns, text_input_classes(errors))
~H"""
- <%= Form.number_input(
- @form,
- @field,
- [class: @classes, phx_feedback_for: Phoenix.HTML.Form.input_name(@form, @field)] ++
- Map.to_list(@rest)
- ) %>
+ {Form.number_input(@form, @field, [class: @classes] ++ Map.to_list(@rest))}
"""
end
@@ -267,15 +288,11 @@ defmodule PetalComponents.Form do
attr(:rest, :global, include: @form_attrs)
def password_input(assigns) do
- assigns = assign_defaults(assigns, text_input_classes(field_has_errors?(assigns)))
+ errors = used_input_errors(assigns)
+ assigns = assign_defaults(assigns, text_input_classes(errors))
~H"""
- <%= Form.password_input(
- @form,
- @field,
- [class: @classes, phx_feedback_for: Phoenix.HTML.Form.input_name(@form, @field)] ++
- Map.to_list(@rest)
- ) %>
+ {Form.password_input(@form, @field, [class: @classes] ++ Map.to_list(@rest))}
"""
end
@@ -286,15 +303,11 @@ defmodule PetalComponents.Form do
attr(:rest, :global, include: @form_attrs)
def search_input(assigns) do
- assigns = assign_defaults(assigns, text_input_classes(field_has_errors?(assigns)))
+ errors = used_input_errors(assigns)
+ assigns = assign_defaults(assigns, text_input_classes(errors))
~H"""
- <%= Form.search_input(
- @form,
- @field,
- [class: @classes, phx_feedback_for: Phoenix.HTML.Form.input_name(@form, @field)] ++
- Map.to_list(@rest)
- ) %>
+ {Form.search_input(@form, @field, [class: @classes] ++ Map.to_list(@rest))}
"""
end
@@ -305,15 +318,11 @@ defmodule PetalComponents.Form do
attr(:rest, :global, include: @form_attrs)
def telephone_input(assigns) do
- assigns = assign_defaults(assigns, text_input_classes(field_has_errors?(assigns)))
+ errors = used_input_errors(assigns)
+ assigns = assign_defaults(assigns, text_input_classes(errors))
~H"""
- <%= Form.telephone_input(
- @form,
- @field,
- [class: @classes, phx_feedback_for: Phoenix.HTML.Form.input_name(@form, @field)] ++
- Map.to_list(@rest)
- ) %>
+ {Form.telephone_input(@form, @field, [class: @classes] ++ Map.to_list(@rest))}
"""
end
@@ -324,15 +333,11 @@ defmodule PetalComponents.Form do
attr(:rest, :global, include: @form_attrs)
def url_input(assigns) do
- assigns = assign_defaults(assigns, text_input_classes(field_has_errors?(assigns)))
+ errors = used_input_errors(assigns)
+ assigns = assign_defaults(assigns, text_input_classes(errors))
~H"""
- <%= Form.url_input(
- @form,
- @field,
- [class: @classes, phx_feedback_for: Phoenix.HTML.Form.input_name(@form, @field)] ++
- Map.to_list(@rest)
- ) %>
+ {Form.url_input(@form, @field, [class: @classes] ++ Map.to_list(@rest))}
"""
end
@@ -343,15 +348,11 @@ defmodule PetalComponents.Form do
attr(:rest, :global, include: @form_attrs)
def time_input(assigns) do
- assigns = assign_defaults(assigns, text_input_classes(field_has_errors?(assigns)))
+ errors = used_input_errors(assigns)
+ assigns = assign_defaults(assigns, text_input_classes(errors))
~H"""
- <%= Form.time_input(
- @form,
- @field,
- [class: @classes, phx_feedback_for: Phoenix.HTML.Form.input_name(@form, @field)] ++
- Map.to_list(@rest)
- ) %>
+ {Form.time_input(@form, @field, [class: @classes, bob: "yo"] ++ Map.to_list(@rest))}
"""
end
@@ -362,16 +363,12 @@ defmodule PetalComponents.Form do
attr(:rest, :global, include: @form_attrs)
def time_select(assigns) do
- assigns = assign_defaults(assigns, text_input_classes(field_has_errors?(assigns)))
+ errors = used_input_errors(assigns)
+ assigns = assign_defaults(assigns, text_input_classes(errors))
~H"""
- <%= Form.time_select(
- @form,
- @field,
- [class: @classes, phx_feedback_for: Phoenix.HTML.Form.input_name(@form, @field)] ++
- Map.to_list(@rest)
- ) %>
+ {Form.time_select(@form, @field, [class: @classes] ++ Map.to_list(@rest))}
"""
end
@@ -383,15 +380,11 @@ defmodule PetalComponents.Form do
attr(:rest, :global, include: @form_attrs)
def datetime_local_input(assigns) do
- assigns = assign_defaults(assigns, text_input_classes(field_has_errors?(assigns)))
+ errors = used_input_errors(assigns)
+ assigns = assign_defaults(assigns, text_input_classes(errors))
~H"""
- <%= Form.datetime_local_input(
- @form,
- @field,
- [class: @classes, phx_feedback_for: Phoenix.HTML.Form.input_name(@form, @field)] ++
- Map.to_list(@rest)
- ) %>
+ {Form.datetime_local_input(@form, @field, [class: @classes] ++ Map.to_list(@rest))}
"""
end
@@ -402,16 +395,12 @@ defmodule PetalComponents.Form do
attr(:rest, :global, include: @form_attrs)
def datetime_select(assigns) do
- assigns = assign_defaults(assigns, text_input_classes(field_has_errors?(assigns)))
+ errors = used_input_errors(assigns)
+ assigns = assign_defaults(assigns, text_input_classes(errors))
~H"""
- <%= Form.datetime_select(
- @form,
- @field,
- [class: @classes, phx_feedback_for: Phoenix.HTML.Form.input_name(@form, @field)] ++
- Map.to_list(@rest)
- ) %>
+ {Form.datetime_select(@form, @field, [class: @classes] ++ Map.to_list(@rest))}
"""
end
@@ -423,16 +412,12 @@ defmodule PetalComponents.Form do
attr(:rest, :global, include: @form_attrs)
def date_select(assigns) do
- assigns = assign_defaults(assigns, text_input_classes(field_has_errors?(assigns)))
+ errors = used_input_errors(assigns)
+ assigns = assign_defaults(assigns, text_input_classes(errors))
~H"""
- <%= Form.date_select(
- @form,
- @field,
- [class: @classes, phx_feedback_for: Phoenix.HTML.Form.input_name(@form, @field)] ++
- Map.to_list(@rest)
- ) %>
+ {Form.date_select(@form, @field, [class: @classes] ++ Map.to_list(@rest))}
"""
end
@@ -444,15 +429,11 @@ defmodule PetalComponents.Form do
attr(:rest, :global, include: @form_attrs)
def date_input(assigns) do
- assigns = assign_defaults(assigns, text_input_classes(field_has_errors?(assigns)))
+ errors = used_input_errors(assigns)
+ assigns = assign_defaults(assigns, text_input_classes(errors))
~H"""
- <%= Form.date_input(
- @form,
- @field,
- [class: @classes, phx_feedback_for: Phoenix.HTML.Form.input_name(@form, @field)] ++
- Map.to_list(@rest)
- ) %>
+ {Form.date_input(@form, @field, [class: @classes] ++ Map.to_list(@rest))}
"""
end
@@ -463,15 +444,11 @@ defmodule PetalComponents.Form do
attr(:rest, :global, include: @form_attrs)
def color_input(assigns) do
- assigns = assign_defaults(assigns, color_input_classes(field_has_errors?(assigns)))
+ errors = used_input_errors(assigns)
+ assigns = assign_defaults(assigns, color_input_classes(errors))
~H"""
- <%= Form.color_input(
- @form,
- @field,
- [class: @classes, phx_feedback_for: Phoenix.HTML.Form.input_name(@form, @field)] ++
- Map.to_list(@rest)
- ) %>
+ {Form.color_input(@form, @field, [class: @classes] ++ Map.to_list(@rest))}
"""
end
@@ -482,15 +459,11 @@ defmodule PetalComponents.Form do
attr(:rest, :global, include: @form_attrs)
def file_input(assigns) do
- assigns = assign_defaults(assigns, file_input_classes(field_has_errors?(assigns)))
+ errors = used_input_errors(assigns)
+ assigns = assign_defaults(assigns, file_input_classes(errors))
~H"""
- <%= Form.file_input(
- @form,
- @field,
- [class: @classes, phx_feedback_for: Phoenix.HTML.Form.input_name(@form, @field)] ++
- Map.to_list(@rest)
- ) %>
+ {Form.file_input(@form, @field, [class: @classes] ++ Map.to_list(@rest))}
"""
end
@@ -501,15 +474,11 @@ defmodule PetalComponents.Form do
attr(:rest, :global, include: @form_attrs)
def range_input(assigns) do
- assigns = assign_defaults(assigns, range_input_classes(field_has_errors?(assigns)))
+ errors = used_input_errors(assigns)
+ assigns = assign_defaults(assigns, range_input_classes(errors))
~H"""
- <%= Form.range_input(
- @form,
- @field,
- [class: @classes, phx_feedback_for: Phoenix.HTML.Form.input_name(@form, @field)] ++
- Map.to_list(@rest)
- ) %>
+ {Form.range_input(@form, @field, [class: @classes] ++ Map.to_list(@rest))}
"""
end
@@ -520,15 +489,11 @@ defmodule PetalComponents.Form do
attr(:rest, :global, include: @form_attrs)
def textarea(assigns) do
- assigns = assign_defaults(assigns, text_input_classes(field_has_errors?(assigns)))
+ errors = used_input_errors(assigns)
+ assigns = assign_defaults(assigns, text_input_classes(errors))
~H"""
- <%= Form.textarea(
- @form,
- @field,
- [class: @classes, rows: "4", phx_feedback_for: Phoenix.HTML.Form.input_name(@form, @field)] ++
- Map.to_list(@rest)
- ) %>
+ {Form.textarea(@form, @field, [class: @classes, rows: "4"] ++ Map.to_list(@rest))}
"""
end
@@ -540,16 +505,11 @@ defmodule PetalComponents.Form do
attr(:rest, :global, include: @form_attrs)
def select(assigns) do
- assigns = assign_defaults(assigns, select_classes(field_has_errors?(assigns)))
+ errors = used_input_errors(assigns)
+ assigns = assign_defaults(assigns, select_classes(errors))
~H"""
- <%= Form.select(
- @form,
- @field,
- @options,
- [class: @classes, phx_feedback_for: Phoenix.HTML.Form.input_name(@form, @field)] ++
- Map.to_list(@rest)
- ) %>
+ {Form.select(@form, @field, @options, [class: @classes] ++ Map.to_list(@rest))}
"""
end
@@ -563,15 +523,11 @@ defmodule PetalComponents.Form do
)
def checkbox(assigns) do
- assigns = assign_defaults(assigns, checkbox_classes(field_has_errors?(assigns)))
+ errors = used_input_errors(assigns)
+ assigns = assign_defaults(assigns, checkbox_classes(errors))
~H"""
- <%= Form.checkbox(
- @form,
- @field,
- [class: @classes, phx_feedback_for: Phoenix.HTML.Form.input_name(@form, @field)] ++
- Map.to_list(@rest)
- ) %>
+ {Form.checkbox(@form, @field, [class: @classes] ++ Map.to_list(@rest))}
"""
end
@@ -585,9 +541,11 @@ defmodule PetalComponents.Form do
attr(:rest, :global, include: @form_attrs)
def checkbox_group(assigns) do
+ errors = used_input_errors(assigns)
+
assigns =
assigns
- |> assign_defaults(checkbox_classes(field_has_errors?(assigns)))
+ |> assign_defaults(checkbox_classes(errors))
|> assign_new(:checked, fn ->
values =
case Phoenix.HTML.Form.input_value(assigns[:form], assigns[:field]) do
@@ -604,10 +562,10 @@ defmodule PetalComponents.Form do
~H"""
- <%= Form.hidden_input(@form, @field,
+ {Form.hidden_input(@form, @field,
name: Phoenix.HTML.Form.input_name(@form, @field),
value: ""
- ) %>
+ )}
<%= for {label, value} <- @options do %>
<% end %>
@@ -639,26 +597,20 @@ defmodule PetalComponents.Form do
attr(:rest, :global, include: @checkbox_form_attrs)
def switch(assigns) do
- assigns = assign_defaults(assigns, switch_classes(field_has_errors?(assigns)))
+ errors = used_input_errors(assigns)
+ assigns = assign_defaults(assigns, switch_classes(errors))
~H"""
"""
end
- defp switch_classes(has_errors) do
- "#{if has_errors, do: "has-error", else: ""} sr-only peer"
+ defp switch_classes(errors) do
+ "#{if errors != [], do: "has-error", else: ""} sr-only peer"
end
attr(:form, :any, default: nil, doc: "")
@@ -669,16 +621,11 @@ defmodule PetalComponents.Form do
attr(:rest, :global, include: @form_attrs)
def radio(assigns) do
- assigns = assign_defaults(assigns, radio_classes(field_has_errors?(assigns)))
+ errors = used_input_errors(assigns)
+ assigns = assign_defaults(assigns, radio_classes(errors))
~H"""
- <%= Form.radio_button(
- @form,
- @field,
- @value,
- [class: @classes, phx_feedback_for: Phoenix.HTML.Form.input_name(@form, @field)] ++
- Map.to_list(@rest)
- ) %>
+ {Form.radio_button(@form, @field, @value, [class: @classes] ++ Map.to_list(@rest))}
"""
end
@@ -691,16 +638,18 @@ defmodule PetalComponents.Form do
attr(:rest, :global, include: @form_attrs)
def radio_group(assigns) do
+ errors = used_input_errors(assigns)
+
assigns =
assigns
- |> assign_defaults(radio_classes(field_has_errors?(assigns)))
+ |> assign_defaults(radio_classes(errors))
~H"""
<%= for {label, value} <- @options do %>
<% end %>
@@ -712,14 +661,11 @@ defmodule PetalComponents.Form do
attr(:rest, :global, include: @form_attrs)
def hidden_input(assigns) do
- assigns = assign_defaults(assigns, text_input_classes(field_has_errors?(assigns)))
+ errors = used_input_errors(assigns)
+ assigns = assign_defaults(assigns, text_input_classes(errors))
~H"""
- <%= Form.hidden_input(
- @form,
- @field,
- [phx_feedback_for: Phoenix.HTML.Form.input_name(@form, @field)] ++ Map.to_list(@rest)
- ) %>
+ {Form.hidden_input(@form, @field, Map.to_list(@rest))}
"""
end
@@ -730,21 +676,14 @@ defmodule PetalComponents.Form do
def form_field_error(assigns) do
assigns =
assigns
- |> assign(:translated_errors, generated_translated_errors(assigns.form, assigns.field))
+ |> assign(:translated_errors, generated_translated_errors(assigns))
~H"""
- <%= if field_has_errors?(assigns) do %>
-
- <%= for translated_error <- @translated_errors do %>
-
- <%= translated_error %>
-
- <% end %>
+
+
+ {translated_error}
- <% end %>
+
"""
end
@@ -756,15 +695,15 @@ defmodule PetalComponents.Form do
def form_help_text(assigns) do
~H"""
- <%= render_slot(@inner_block) || @help_text %>
+ {render_slot(@inner_block) || @help_text}
"""
end
- defp generated_translated_errors(form, field) do
+ defp generated_translated_errors(assigns) do
translate_error = translator_from_config() || (&translate_error/1)
- Keyword.get_values(form.errors || [], field)
+ used_input_errors(assigns)
|> Enum.map(fn error ->
translate_error.(error)
end)
@@ -814,6 +753,8 @@ defmodule PetalComponents.Form do
end
defp label_classes(assigns) do
+ errors = used_input_errors(assigns)
+
type_classes =
if Enum.member?(["checkbox", "radio"], assigns[:type]) do
"pc-label--for-checkbox"
@@ -821,31 +762,31 @@ defmodule PetalComponents.Form do
""
end
- "#{if field_has_errors?(assigns), do: "has-error", else: ""} #{type_classes} #{assigns[:class] || ""} pc-label"
+ "#{if errors != [], do: "has-error", else: ""} #{type_classes} #{assigns[:class] || ""} pc-label"
end
- defp text_input_classes(has_error) do
- "#{if has_error, do: "has-error", else: ""} pc-text-input"
+ defp text_input_classes(errors) do
+ "#{if errors != [], do: "has-error", else: ""} pc-text-input"
end
- defp select_classes(has_error) do
- "#{if has_error, do: "has-error", else: ""} pc-select"
+ defp select_classes(errors) do
+ "#{if errors != [], do: "has-error", else: ""} pc-select"
end
- defp file_input_classes(has_error) do
- "#{if has_error, do: "has-error", else: ""} pc-file-input"
+ defp file_input_classes(errors) do
+ "#{if errors != [], do: "has-error", else: ""} pc-file-input"
end
- defp color_input_classes(has_error) do
- "#{if has_error, do: "has-error", else: ""} pc-color-input"
+ defp color_input_classes(errors) do
+ "#{if errors != [], do: "has-error", else: ""} pc-color-input"
end
- defp range_input_classes(has_error) do
- "#{if has_error, do: "has-error", else: ""} pc-range-input"
+ defp range_input_classes(errors) do
+ "#{if errors != [], do: "has-error", else: ""} pc-range-input"
end
- defp checkbox_classes(has_error) do
- "#{if has_error, do: "has-error", else: ""} pc-checkbox"
+ defp checkbox_classes(errors) do
+ "#{if errors != [], do: "has-error", else: ""} pc-checkbox"
end
defp checkbox_group_layout_classes(assigns) do
@@ -888,16 +829,13 @@ defmodule PetalComponents.Form do
end
end
- defp radio_classes(has_error) do
- "#{if has_error, do: "has-error", else: ""} pc-radio"
+ defp radio_classes(errors) do
+ "#{if errors != [], do: "has-error", else: ""} pc-radio"
end
- defp field_has_errors?(%{form: form, field: field}) when is_map(form) do
- case Keyword.get_values(form.errors || [], field) do
- [] -> false
- _ -> true
- end
+ defp used_input_errors(%{form: form, field: field}) when not is_nil(form) do
+ if used_input?(form[field]), do: form[field].errors, else: []
end
- defp field_has_errors?(_), do: false
+ defp used_input_errors(_), do: []
end
diff --git a/lib/petal_components/icons/svg.ex b/lib/petal_components/icons/svg.ex
index 1c5c339d..03e575d2 100644
--- a/lib/petal_components/icons/svg.ex
+++ b/lib/petal_components/icons/svg.ex
@@ -7,7 +7,7 @@ defmodule PetalComponents.Svg do
def title(assigns) do
~H"""
<%= if not is_nil(@title) do %>
-
<%= @title %>
+
{@title}
<% end %>
"""
end
diff --git a/lib/petal_components/input.ex b/lib/petal_components/input.ex
index ee1d61f7..5cab40f5 100644
--- a/lib/petal_components/input.ex
+++ b/lib/petal_components/input.ex
@@ -59,8 +59,8 @@ defmodule PetalComponents.Input do
def input(%{type: "select"} = assigns) do
~H"""
"""
end
diff --git a/lib/petal_components/link.ex b/lib/petal_components/link.ex
index fec91ac9..cd1cedef 100644
--- a/lib/petal_components/link.ex
+++ b/lib/petal_components/link.ex
@@ -18,7 +18,7 @@ defmodule PetalComponents.Link do
~H"""
"""
end
@@ -31,7 +31,7 @@ defmodule PetalComponents.Link do
def a(%{link_type: "a"} = assigns) do
~H"""
<.link href={@to} class={@class} {@rest}>
- <%= if(@label, do: @label, else: render_slot(@inner_block)) %>
+ {if(@label, do: @label, else: render_slot(@inner_block))}
"""
end
@@ -39,7 +39,7 @@ defmodule PetalComponents.Link do
def a(%{link_type: "live_patch"} = assigns) do
~H"""
<.link patch={@to} class={@class} {@rest}>
- <%= if(@label, do: @label, else: render_slot(@inner_block)) %>
+ {if(@label, do: @label, else: render_slot(@inner_block))}
"""
end
@@ -47,7 +47,7 @@ defmodule PetalComponents.Link do
def a(%{link_type: "live_redirect"} = assigns) do
~H"""
<.link navigate={@to} class={@class} {@rest}>
- <%= if(@label, do: @label, else: render_slot(@inner_block)) %>
+ {if(@label, do: @label, else: render_slot(@inner_block))}
"""
end
@@ -55,7 +55,7 @@ defmodule PetalComponents.Link do
def a(%{link_type: "button"} = assigns) do
~H"""
"""
end
diff --git a/lib/petal_components/marquee.ex b/lib/petal_components/marquee.ex
index 4ae7beba..2adaa730 100644
--- a/lib/petal_components/marquee.ex
+++ b/lib/petal_components/marquee.ex
@@ -54,7 +54,7 @@ defmodule PetalComponents.Marquee do
]}
style={@reverse && "animation-direction: reverse;"}
>
- <%= render_slot(@inner_block) %>
+ {render_slot(@inner_block)}
<% end %>
diff --git a/lib/petal_components/menu.ex b/lib/petal_components/menu.ex
index ea92870c..9e0c35a8 100644
--- a/lib/petal_components/menu.ex
+++ b/lib/petal_components/menu.ex
@@ -176,7 +176,7 @@ defmodule PetalComponents.Menu do
~H"""
diff --git a/lib/petal_components/tabs.ex b/lib/petal_components/tabs.ex
index fbcebfa4..10cb7986 100644
--- a/lib/petal_components/tabs.ex
+++ b/lib/petal_components/tabs.ex
@@ -11,7 +11,7 @@ defmodule PetalComponents.Tabs do
def tabs(assigns) do
~H"""
"""
end
@@ -45,13 +45,13 @@ defmodule PetalComponents.Tabs do
{@rest}
>
<%= if @number do %>
- <%= render_slot(@inner_block) || @label %>
+ {render_slot(@inner_block) || @label}
<% else %>
- <%= render_slot(@inner_block) || @label %>
+ {render_slot(@inner_block) || @label}
<% end %>
"""
diff --git a/lib/petal_components/typography.ex b/lib/petal_components/typography.ex
index f6efdffd..9f0853f3 100644
--- a/lib/petal_components/typography.ex
+++ b/lib/petal_components/typography.ex
@@ -20,7 +20,7 @@ defmodule PetalComponents.Typography do
def h1(assigns) do
~H"""
"""
end
@@ -36,7 +36,7 @@ defmodule PetalComponents.Typography do
def h2(assigns) do
~H"""
"""
end
@@ -52,7 +52,7 @@ defmodule PetalComponents.Typography do
def h3(assigns) do
~H"""
"""
end
@@ -68,7 +68,7 @@ defmodule PetalComponents.Typography do
def h4(assigns) do
~H"""
"""
end
@@ -84,7 +84,7 @@ defmodule PetalComponents.Typography do
def h5(assigns) do
~H"""
"""
end
@@ -114,7 +114,7 @@ defmodule PetalComponents.Typography do
]}
{@rest}
>
- <%= render_slot(@inner_block) %>
+ {render_slot(@inner_block)}
"""
end
@@ -126,7 +126,7 @@ defmodule PetalComponents.Typography do
def prose(assigns) do
~H"""
- <%= render_slot(@inner_block) %>
+ {render_slot(@inner_block)}
"""
end
@@ -146,7 +146,7 @@ defmodule PetalComponents.Typography do
def ul(assigns) do
~H"""
"""
end
@@ -166,7 +166,7 @@ defmodule PetalComponents.Typography do
def ol(assigns) do
~H"""
"""
end
diff --git a/lib/petal_components/user_dropdown_menu.ex b/lib/petal_components/user_dropdown_menu.ex
index f728123d..426aa472 100644
--- a/lib/petal_components/user_dropdown_menu.ex
+++ b/lib/petal_components/user_dropdown_menu.ex
@@ -35,18 +35,18 @@ defmodule PetalComponents.UserDropdownMenu do
>
<%= cond do %>
<% is_function(menu_item.icon) -> %>
- <%= Phoenix.LiveView.TagEngine.component(
+ {Phoenix.LiveView.TagEngine.component(
menu_item.icon,
[class: "w-5 h-5 text-gray-500 dark:text-gray-400"],
{__ENV__.module, __ENV__.function, __ENV__.file, __ENV__.line}
- ) %>
+ )}
<% is_binary(menu_item.icon) && String.match?(menu_item.icon, ~r/svg|img/) -> %>
- <%= Phoenix.HTML.raw(menu_item.icon) %>
+ {Phoenix.HTML.raw(menu_item.icon)}
<% true -> %>
<.icon name={menu_item.icon} class="w-5 h-5 text-gray-500 dark:text-gray-400" />
<% end %>
- <%= menu_item.label %>
+ {menu_item.label}
<% end %>
diff --git a/lib/petal_components_web/a11y_live.ex b/lib/petal_components_web/a11y_live.ex
index 64deff5b..325d8f6d 100644
--- a/lib/petal_components_web/a11y_live.ex
+++ b/lib/petal_components_web/a11y_live.ex
@@ -274,7 +274,7 @@ defmodule PetalComponentsWeb.A11yLive do
<.table class="my-class" id="posts" row_id={fn post -> "row_#{post.id}" end} rows={@posts}>
- <:col :let={post} label="Name" class="col-class" row_class="row-class"><%= post.name %>
+ <:col :let={post} label="Name" class="col-class" row_class="row-class">{post.name}
<.tabs class="flex-col sm:flex-row space-x">
diff --git a/mix.exs b/mix.exs
index 1f35d970..7da1d02f 100644
--- a/mix.exs
+++ b/mix.exs
@@ -49,9 +49,9 @@ defmodule PetalComponents.MixProject do
{:wallaby, "~> 0.30.9", runtime: false, only: :test},
{:phoenix, "~> 1.7"},
{:phoenix_live_view, "~> 1.0"},
- {:phoenix_html, "~> 4.0"},
+ {:phoenix_html, "~> 4.1"},
{:phoenix_html_helpers, "~> 1.0"},
- {:jason, "~> 1.0", only: [:dev, :test]},
+ {:jason, "~> 1.2", only: [:dev, :test]},
{:ex_doc, "~> 0.24", only: :dev, runtime: false},
{:phoenix_ecto, "~> 4.4"},
{:credo, "~> 1.7", only: [:dev, :test], runtime: false},
diff --git a/test/petal/accordion_test.exs b/test/petal/accordion_test.exs
index 59c9755e..716b84cc 100644
--- a/test/petal/accordion_test.exs
+++ b/test/petal/accordion_test.exs
@@ -90,7 +90,7 @@ defmodule PetalComponents.AccordionTest do
html =
rendered_to_string(~H"""
<.accordion entries={@entries}>
- <:item :let={entry}><%= entry.content %>
+ <:item :let={entry}>{entry.content}
""")
diff --git a/test/petal/field_test.exs b/test/petal/field_test.exs
index 68bdf270..751b1ac9 100644
--- a/test/petal/field_test.exs
+++ b/test/petal/field_test.exs
@@ -27,7 +27,6 @@ defmodule PetalComponents.FieldTest do
assert html =~ "user[name]"
assert html =~ "itemid"
assert html =~ "something"
- assert html =~ "phx-feedback-for"
refute html =~ " disabled "
assert html =~ "pc-text-input"
assert html =~ "!w-max"
@@ -36,7 +35,7 @@ defmodule PetalComponents.FieldTest do
assert html =~ "label-class"
end
- test "field as text with field errors" do
+ test "Unedited field as text with field errors" do
assigns = %{
field: %Phoenix.HTML.FormField{
errors: [
@@ -47,7 +46,38 @@ defmodule PetalComponents.FieldTest do
value: "",
field: :name,
id: "name",
- form: %Phoenix.HTML.Form{}
+ form: %Phoenix.HTML.Form{
+ params: %{"_unused_name" => ""}
+ }
+ }
+ }
+
+ html =
+ rendered_to_string(~H"""
+ <.field field={@field} />
+ """)
+
+ assert html =~ "name"
+ assert html =~ "Name"
+ refute html =~ "pc-form-field-error"
+ refute html =~ html_escape("can't be blank")
+ refute html =~ html_escape("too short!")
+ end
+
+ test "Edited field as text with field errors" do
+ assigns = %{
+ field: %Phoenix.HTML.FormField{
+ errors: [
+ {"can't be blank", [validation: :required]},
+ {"too short!", [validation: :length]}
+ ],
+ name: "name",
+ value: "",
+ field: :name,
+ id: "name",
+ form: %Phoenix.HTML.Form{
+ params: %{"name" => ""}
+ }
}
}
@@ -157,7 +187,6 @@ defmodule PetalComponents.FieldTest do
assert html =~ "checkbox"
assert html =~ "user[read_terms]"
- assert html =~ "phx-feedback-for"
assert html =~ "itemid"
# It includes a hidden field for when the switch is not checked
@@ -185,7 +214,6 @@ defmodule PetalComponents.FieldTest do
assert html =~ "itemid"
assert html =~ "