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