feat(template): create template via GUI

This commit is contained in:
Leons Aleksandrovs
2025-07-10 19:11:21 +03:00
parent 938c9a66e5
commit 9f99f6a4a9
+18 -2
View File
@@ -2,7 +2,8 @@ import Template from "@/components/Template";
import { Button } from "@/components/ui/button"; import { Button } from "@/components/ui/button";
import { useAppForm } from "@/hooks/formHook"; import { useAppForm } from "@/hooks/formHook";
import Authorised from "@/layouts/Authorised"; import Authorised from "@/layouts/Authorised";
import { createFileRoute } from "@tanstack/react-router"; import requests from "@/lib/requests";
import { createFileRoute, useNavigate } from "@tanstack/react-router";
import { useState } from "react"; import { useState } from "react";
import * as z from "zod/v4"; import * as z from "zod/v4";
@@ -16,11 +17,12 @@ const TemplateSchema = z.object({
.nonempty("Name is required") .nonempty("Name is required")
.min(2, "Name is too short") .min(2, "Name is too short")
.max(50, "Name is too long (max 50)"), .max(50, "Name is too long (max 50)"),
template: z.string().nonempty("Template is required"), template: z.string().nonempty("Template is required").min(50, "Template is too short"),
}); });
function RouteComponent() { function RouteComponent() {
const loading = useState(false); const loading = useState(false);
const navigate = useNavigate();
const createForm = useAppForm({ const createForm = useAppForm({
defaultValues: { defaultValues: {
name: "", name: "",
@@ -29,6 +31,20 @@ function RouteComponent() {
validators: { validators: {
onBlur: TemplateSchema, onBlur: TemplateSchema,
}, },
onSubmit: ({ value }) => {
requests.post("/templates", {
before() {
loading[1](true);
},
finally() {
loading[1](false);
},
success() {
navigate({ to: "/templates" });
},
data: value,
});
},
}); });
return ( return (