Membership Fee 6 - UI Components & LiveViews closes #280 #304
1 changed files with 28 additions and 0 deletions
|
|
@ -328,6 +328,34 @@ defmodule MvWeb.MembershipFeeTypeLive.Form do
|
||||||
assign(socket, form: to_form(form))
|
assign(socket, form: to_form(form))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Validates amount format and cleans invalid characters
|
||||||
|
defp validate_amount_format(params) do
|
||||||
|
case Map.get(params, "amount") do
|
||||||
|
nil -> params
|
||||||
|
"" -> params
|
||||||
|
amount_str when is_binary(amount_str) ->
|
||||||
|
# Check if it's a valid number format
|
||||||
|
case Decimal.parse(amount_str) do
|
||||||
|
{_decimal, ""} ->
|
||||||
|
# Valid decimal
|
||||||
|
params
|
||||||
|
|
||||||
|
{_decimal, _rest} ->
|
||||||
|
# Has trailing characters - invalid, but let Ash handle validation
|
||||||
|
params
|
||||||
|
|
||||||
|
:error ->
|
||||||
|
# Not a valid number - try to clean it up
|
||||||
|
# Remove non-numeric characters except decimal point
|
||||||
|
cleaned = String.replace(amount_str, ~r/[^\d.]/, "")
|
||||||
|
Map.put(params, "amount", cleaned)
|
||||||
|
end
|
||||||
|
|
||||||
|
_ ->
|
||||||
|
params
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
# Helper to extract existing form values to preserve them when only one field changes
|
# Helper to extract existing form values to preserve them when only one field changes
|
||||||
defp get_existing_form_values(form) do
|
defp get_existing_form_values(form) do
|
||||||
# Extract values directly from form fields to get current state
|
# Extract values directly from form fields to get current state
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue