From 747c2a1d308865ef90d1ff9fc2d4cab6d06b661e Mon Sep 17 00:00:00 2001 From: Guillaume Thibault Date: Sun, 21 Apr 2024 13:02:37 -0400 Subject: [PATCH] [stu-346-placeholder-test] chore: placeholder test => Using form --- .../modals/CreatePlaceholderTestModal.tsx | 164 +++++++++++------- 1 file changed, 104 insertions(+), 60 deletions(-) diff --git a/src/renderer/routes/test_sequencer_panel/components/modals/CreatePlaceholderTestModal.tsx b/src/renderer/routes/test_sequencer_panel/components/modals/CreatePlaceholderTestModal.tsx index b2465ad57..2b4b90a74 100644 --- a/src/renderer/routes/test_sequencer_panel/components/modals/CreatePlaceholderTestModal.tsx +++ b/src/renderer/routes/test_sequencer_panel/components/modals/CreatePlaceholderTestModal.tsx @@ -1,12 +1,21 @@ import { Button } from "@/renderer/components/ui/button"; import { Dialog, DialogContent } from "@/renderer/components/ui/dialog"; +import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from "@/renderer/components/ui/form"; import { Input } from "@/renderer/components/ui/input"; import { createNewTest, useDisplayedSequenceState, } from "@/renderer/hooks/useTestSequencerState"; -import { useState } from "react"; -import { toast } from "sonner"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { useForm } from "react-hook-form"; +import { z } from "zod" + +const formSchema = z.object({ + name: z.string().min(1).regex(/\S/), + min: z.coerce.number().optional(), + max: z.coerce.number().optional(), + unit: z.string().optional(), +}) export const CreatePlaceholderTestModal = ({ isModalOpen, @@ -15,35 +24,37 @@ export const CreatePlaceholderTestModal = ({ isModalOpen: boolean; setModalOpen: (value: boolean) => void; }) => { - const [name, setName] = useState(""); - const [min, setMin] = useState(0); - const [max, setMax] = useState(0); - const [unit, setUnit] = useState(""); - const { addNewElems } = useDisplayedSequenceState(); - const handleCreate = async () => { - if (name === "") { - toast.error("Please enter a test name"); - } + const form = useForm>({ + resolver: zodResolver(formSchema), + defaultValues: { + name: "", + unit: undefined, + min: undefined, + max: undefined, + }, + }) + + async function onSubmit(values: z.infer) { const res = await addNewElems([ createNewTest( - name, + values.name, "", "placeholder", false, undefined, undefined, - min, - max, - unit, + values.min, + values.max, + values.unit, ), ]); if (res.isErr()) { return; } setModalOpen(false); - }; + } return ( @@ -57,55 +68,88 @@ export const CreatePlaceholderTestModal = ({ value without being link to any code. The code can be added later.

-
-

Test Name

- setName(e.target.value)} - /> -
+
+ + ( + + Test Name + + + + + + )} + /> -
-

Expected Value

-
-

Mininum

- { - setMin(parseFloat(e.target.value)); - }} - /> -
+

Expected Value

+
+
+ ( + + Minimum + + + + + + )} + /> +
-
-

Maximum

- { - setMax(parseFloat(e.target.value)); - }} - /> -
+
+ ( + + Maximun + + + + + + )} + /> +
-
-

Displayed Unit

- { - setUnit(e.target.value); - }} - /> +
+ ( + + Displayed Unit + + + + + + )} + /> +
+
-
-
- + + +
);