fix: improve amount validation, layout, and remove duplicate button
- Add oninput validation for amount field to catch invalid input immediately - Fix Current Cycle layout with whitespace-nowrap and wider width - Remove duplicate Regenerate Missing Cycles button (same functionality) - Add tooltip to Regenerate Cycles button explaining functionality
This commit is contained in:
parent
461b8d9c2a
commit
03aacefb6e
3 changed files with 5 additions and 14 deletions
|
|
@ -184,7 +184,7 @@ defmodule MvWeb.MemberLive.Show do
|
||||||
value={MembershipFeeHelpers.format_interval(@member.membership_fee_type.interval)}
|
value={MembershipFeeHelpers.format_interval(@member.membership_fee_type.interval)}
|
||||||
class="w-28"
|
class="w-28"
|
||||||
/>
|
/>
|
||||||
<.data_field label={gettext("Last Cycle")} class="w-28">
|
<.data_field label={gettext("Last Cycle")} class="w-28 whitespace-nowrap">
|
||||||
<%= if @member.last_cycle_status do %>
|
<%= if @member.last_cycle_status do %>
|
||||||
<% status = @member.last_cycle_status %>
|
<% status = @member.last_cycle_status %>
|
||||||
<span class={["badge", MembershipFeeHelpers.status_color(status)]}>
|
<span class={["badge", MembershipFeeHelpers.status_color(status)]}>
|
||||||
|
|
@ -194,7 +194,7 @@ defmodule MvWeb.MemberLive.Show do
|
||||||
<span class="badge badge-ghost">{gettext("No cycles")}</span>
|
<span class="badge badge-ghost">{gettext("No cycles")}</span>
|
||||||
<% end %>
|
<% end %>
|
||||||
</.data_field>
|
</.data_field>
|
||||||
<.data_field label={gettext("Current Cycle")} class="w-28">
|
<.data_field label={gettext("Current Cycle")} class="w-32 whitespace-nowrap">
|
||||||
<%= if @member.current_cycle_status do %>
|
<%= if @member.current_cycle_status do %>
|
||||||
<% status = @member.current_cycle_status %>
|
<% status = @member.current_cycle_status %>
|
||||||
<span class={["badge", MembershipFeeHelpers.status_color(status)]}>
|
<span class={["badge", MembershipFeeHelpers.status_color(status)]}>
|
||||||
|
|
|
||||||
|
|
@ -49,18 +49,11 @@ defmodule MvWeb.MemberLive.Show.MembershipFeesComponent do
|
||||||
phx-click="regenerate_cycles"
|
phx-click="regenerate_cycles"
|
||||||
phx-target={@myself}
|
phx-target={@myself}
|
||||||
class={["btn btn-sm btn-outline", if(@regenerating, do: "btn-disabled", else: "")]}
|
class={["btn btn-sm btn-outline", if(@regenerating, do: "btn-disabled", else: "")]}
|
||||||
|
title={gettext("Generate cycles from the last existing cycle to today")}
|
||||||
>
|
>
|
||||||
<.icon name="hero-arrow-path" class="size-4" />
|
<.icon name="hero-arrow-path" class="size-4" />
|
||||||
{if(@regenerating, do: gettext("Regenerating..."), else: gettext("Regenerate Cycles"))}
|
{if(@regenerating, do: gettext("Regenerating..."), else: gettext("Regenerate Cycles"))}
|
||||||
</.button>
|
</.button>
|
||||||
<.button
|
|
||||||
phx-click="regenerate_missing_cycles"
|
|
||||||
phx-target={@myself}
|
|
||||||
class={["btn btn-sm btn-outline", if(@regenerating, do: "btn-disabled", else: "")]}
|
|
||||||
>
|
|
||||||
<.icon name="hero-plus-circle" class="size-4" />
|
|
||||||
{gettext("Regenerate Missing Cycles")}
|
|
||||||
</.button>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<%!-- Cycles Table --%>
|
<%!-- Cycles Table --%>
|
||||||
|
|
@ -431,10 +424,6 @@ defmodule MvWeb.MemberLive.Show.MembershipFeesComponent do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def handle_event("regenerate_missing_cycles", _params, socket) do
|
|
||||||
# Same as regenerate_cycles - CycleGenerator already handles missing cycles only
|
|
||||||
handle_event("regenerate_cycles", %{}, socket)
|
|
||||||
end
|
|
||||||
|
|
||||||
def handle_event("edit_cycle_amount", %{"cycle_id" => cycle_id}, socket) do
|
def handle_event("edit_cycle_amount", %{"cycle_id" => cycle_id}, socket) do
|
||||||
cycle = find_cycle(socket.assigns.cycles, cycle_id)
|
cycle = find_cycle(socket.assigns.cycles, cycle_id)
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,8 @@ defmodule MvWeb.MembershipFeeTypeLive.Form do
|
||||||
step="0.01"
|
step="0.01"
|
||||||
min="0"
|
min="0"
|
||||||
pattern="[0-9]+(\.[0-9]{1,2})?"
|
pattern="[0-9]+(\.[0-9]{1,2})?"
|
||||||
|
phx-debounce="blur"
|
||||||
|
oninput="this.setCustomValidity(''); if (!this.validity.valid) { this.setCustomValidity('Please enter a valid number'); }"
|
||||||
required
|
required
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue