Add required validation and error display for interval field

Show required asterisk and validation errors when interval is not selected
This commit is contained in:
Moritz 2025-12-22 17:19:24 +01:00
parent 75dc7056ae
commit 46af6bbbed
Signed by: moritz
GPG key ID: 1020A035E5DD0824

View file

@ -49,14 +49,24 @@ defmodule MvWeb.MembershipFeeTypeLive.Form do
<div class="form-control"> <div class="form-control">
<label class="label"> <label class="label">
<span class="label-text font-semibold">{gettext("Interval")}</span> <span class="label-text font-semibold">
{gettext("Interval")}
<span
:if={is_nil(@membership_fee_type)}
class="text-red-700 tooltip tooltip-right"
data-tip={gettext("This field cannot be empty")}
>*</span>
</span>
</label> </label>
<select <select
class="select select-bordered w-full" class={[
"select select-bordered w-full",
@form.errors[:interval] && "select-error"
]}
disabled={!is_nil(@membership_fee_type)} disabled={!is_nil(@membership_fee_type)}
name="membership_fee_type[interval]" name="membership_fee_type[interval]"
id="membership-fee-type-form_interval" id="membership-fee-type-form_interval"
phx-change="validate" required={is_nil(@membership_fee_type)}
> >
<option value="">{gettext("Select interval")}</option> <option value="">{gettext("Select interval")}</option>
<option <option
@ -86,6 +96,15 @@ defmodule MvWeb.MembershipFeeTypeLive.Form do
{gettext("Yearly")} {gettext("Yearly")}
</option> </option>
</select> </select>
<%= if @form.errors[:interval] do %>
<%= for error <- List.wrap(@form.errors[:interval]) do %>
<% {msg, _opts} = if is_tuple(error), do: error, else: {error, []} %>
<p class="mt-1.5 flex gap-2 items-center text-sm text-error">
<.icon name="hero-exclamation-circle" class="size-5" />
{msg}
</p>
<% end %>
<% end %>
<%= if !is_nil(@membership_fee_type) do %> <%= if !is_nil(@membership_fee_type) do %>
<label class="label"> <label class="label">
<span class="label-text-alt text-base-content/60"> <span class="label-text-alt text-base-content/60">