diff --git a/src/app/components/FireCalculatorForm.tsx b/src/app/components/FireCalculatorForm.tsx index 26f9818..ec79a03 100644 --- a/src/app/components/FireCalculatorForm.tsx +++ b/src/app/components/FireCalculatorForm.tsx @@ -120,7 +120,7 @@ export default function FireCalculatorForm() { const [showing4percent, setShowing4percent] = useState(false); // Initialize form with default values - const form = useForm({ + const form = useForm, undefined, FormValues>({ resolver: zodResolver(formSchema), defaultValues: { startingCapital: 50000, @@ -258,11 +258,18 @@ export default function FireCalculatorForm() { { - field.onChange(value); + value={field.value as number | string | undefined} + onChange={(e) => { + field.onChange( + e.target.value === "" + ? undefined + : Number(e.target.value), + ); void form.handleSubmit(onSubmit)(); }} + onBlur={field.onBlur} + name={field.name} + ref={field.ref} /> @@ -279,11 +286,18 @@ export default function FireCalculatorForm() { { - field.onChange(value); + value={field.value as number | string | undefined} + onChange={(e) => { + field.onChange( + e.target.value === "" + ? undefined + : Number(e.target.value), + ); void form.handleSubmit(onSubmit)(); }} + onBlur={field.onBlur} + name={field.name} + ref={field.ref} /> @@ -300,11 +314,18 @@ export default function FireCalculatorForm() { { - field.onChange(value); + value={field.value as number | string | undefined} + onChange={(e) => { + field.onChange( + e.target.value === "" + ? undefined + : Number(e.target.value), + ); void form.handleSubmit(onSubmit)(); }} + onBlur={field.onBlur} + name={field.name} + ref={field.ref} /> @@ -321,11 +342,18 @@ export default function FireCalculatorForm() { { - field.onChange(value); + value={field.value as number | string | undefined} + onChange={(e) => { + field.onChange( + e.target.value === "" + ? undefined + : Number(e.target.value), + ); void form.handleSubmit(onSubmit)(); }} + onBlur={field.onBlur} + name={field.name} + ref={field.ref} /> @@ -343,11 +371,18 @@ export default function FireCalculatorForm() { placeholder="e.g., 7" type="number" step="0.1" - {...field} - onChange={(value) => { - field.onChange(value); + value={field.value as number | string | undefined} + onChange={(e) => { + field.onChange( + e.target.value === "" + ? undefined + : Number(e.target.value), + ); void form.handleSubmit(onSubmit)(); }} + onBlur={field.onBlur} + name={field.name} + ref={field.ref} /> @@ -365,11 +400,18 @@ export default function FireCalculatorForm() { placeholder="e.g., 2" type="number" step="0.1" - {...field} - onChange={(value) => { - field.onChange(value); + value={field.value as number | string | undefined} + onChange={(e) => { + field.onChange( + e.target.value === "" + ? undefined + : Number(e.target.value), + ); void form.handleSubmit(onSubmit)(); }} + onBlur={field.onBlur} + name={field.name} + ref={field.ref} /> @@ -388,11 +430,18 @@ export default function FireCalculatorForm() { { - field.onChange(value); + value={field.value as number | string | undefined} + onChange={(e) => { + field.onChange( + e.target.value === "" + ? undefined + : Number(e.target.value), + ); void form.handleSubmit(onSubmit)(); }} + onBlur={field.onBlur} + name={field.name} + ref={field.ref} /> @@ -406,11 +455,13 @@ export default function FireCalculatorForm() { name="retirementAge" render={({ field }) => ( - Retirement Age: {field.value} + + Retirement Age: {field.value as number} +

- {form.getValues("lifeExpectancy") - - form.getValues("retirementAge")} + {Number(form.getValues("lifeExpectancy")) - + Number(form.getValues("retirementAge"))}

@@ -674,7 +725,7 @@ export default function FireCalculatorForm() {

- {form.getValues("lifeExpectancy") - + {Number(form.getValues("lifeExpectancy")) - (result.retirementAge4percent ?? 0)}