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 (
-
-
Test Name
-
setName(e.target.value)}
- />
-
+
+
);