Fix registration form showing validation errors before submission

Only display field errors when the changeset has an action set,
preventing "can't be blank" messages from appearing on initial
page load.
This commit is contained in:
Graham McIntire 2026-02-19 09:20:21 -06:00
parent f94925407d
commit f591e15449
No known key found for this signature in database

View file

@ -48,12 +48,12 @@ defmodule AprsmeWeb.UserRegistrationLive do
value={Phoenix.HTML.Form.input_value(f, :email) || ""}
class={[
"input input-bordered w-full bg-base-100 text-base-content",
Keyword.has_key?(@changeset.errors, :email) && "input-error"
@changeset.action && Keyword.has_key?(@changeset.errors, :email) && "input-error"
]}
placeholder={gettext("Enter your email")}
required
/>
<label :if={Keyword.has_key?(@changeset.errors, :email)} class="label">
<label :if={@changeset.action && Keyword.has_key?(@changeset.errors, :email)} class="label">
<span class="label-text-alt text-error">
{translate_error(Keyword.get(@changeset.errors, :email))}
</span>
@ -70,12 +70,12 @@ defmodule AprsmeWeb.UserRegistrationLive do
value={Phoenix.HTML.Form.input_value(f, :callsign) || ""}
class={[
"input input-bordered w-full bg-base-100 text-base-content",
Keyword.has_key?(@changeset.errors, :callsign) && "input-error"
@changeset.action && Keyword.has_key?(@changeset.errors, :callsign) && "input-error"
]}
placeholder={gettext("Enter your amateur radio callsign")}
required
/>
<label :if={Keyword.has_key?(@changeset.errors, :callsign)} class="label">
<label :if={@changeset.action && Keyword.has_key?(@changeset.errors, :callsign)} class="label">
<span class="label-text-alt text-error">
{translate_error(Keyword.get(@changeset.errors, :callsign))}
</span>
@ -92,12 +92,12 @@ defmodule AprsmeWeb.UserRegistrationLive do
value={Phoenix.HTML.Form.input_value(f, :password) || ""}
class={[
"input input-bordered w-full bg-base-100 text-base-content",
Keyword.has_key?(@changeset.errors, :password) && "input-error"
@changeset.action && Keyword.has_key?(@changeset.errors, :password) && "input-error"
]}
placeholder={gettext("Enter your password")}
required
/>
<label :if={Keyword.has_key?(@changeset.errors, :password)} class="label">
<label :if={@changeset.action && Keyword.has_key?(@changeset.errors, :password)} class="label">
<span class="label-text-alt text-error">
{translate_error(Keyword.get(@changeset.errors, :password))}
</span>