Current section
Files
Jump to
Current section
Files
lib/spike/live_view/errors.ex
defmodule Spike.LiveView.Errors do
use Phoenix.Component
def errors(%{errors: _, form_data: _, key: _} = assigns) do
assigns =
assigns
|> assign_new(:dirty_fields, fn -> Spike.dirty_fields(assigns.form_data) end)
field_errors = field_errors(assigns)
if field_errors != [] do
~H"""
<%= render_slot(@inner_block, field_errors) %>
"""
else
~H"""
"""
end
end
defp field_errors(%{errors: errors, form_data: form_data, key: key, dirty_fields: dirty_fields}) do
if errors[form_data.ref] && errors[form_data.ref] |> Map.get(key) &&
dirty_fields[form_data.ref] && key in dirty_fields[form_data.ref] do
errors[form_data.ref][key]
else
[]
end
end
end