diff --git a/package.json b/package.json index 7eda985..ac6007b 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "pocketbase": "^0.25.1", "react": "^19.0.0", "react-dom": "^19.0.0", + "react-hook-form": "^7.54.2", "react-router": "^7.1.5", "tailwindcss": "^4.0.6" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 19c455f..6b71be0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,6 +23,9 @@ importers: react-dom: specifier: ^19.0.0 version: 19.0.0(react@19.0.0) + react-hook-form: + specifier: ^7.54.2 + version: 7.54.2(react@19.0.0) react-router: specifier: ^7.1.5 version: 7.1.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -1282,6 +1285,12 @@ packages: peerDependencies: react: ^19.0.0 + react-hook-form@7.54.2: + resolution: {integrity: sha512-eHpAUgUjWbZocoQYUHposymRb4ZP6d0uwUnooL2uOybA9/3tPUvoAKqEWK1WaSiTxxOfTpffNZP7QwlnM3/gEg==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^16.8.0 || ^17 || ^18 || ^19 + react-router@7.1.5: resolution: {integrity: sha512-8BUF+hZEU4/z/JD201yK6S+UYhsf58bzYIDq2NS1iGpwxSXDu7F+DeGSkIXMFBuHZB21FSiCzEcUb18cQNdRkA==} engines: {node: '>=20.0.0'} @@ -2556,6 +2565,10 @@ snapshots: react: 19.0.0 scheduler: 0.25.0 + react-hook-form@7.54.2(react@19.0.0): + dependencies: + react: 19.0.0 + react-router@7.1.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@types/cookie': 0.6.0 diff --git a/src/QuoteAdd.tsx b/src/QuoteAdd.tsx index b50917b..592e86e 100644 --- a/src/QuoteAdd.tsx +++ b/src/QuoteAdd.tsx @@ -2,7 +2,7 @@ import { useEffect, useState } from "react"; import { Collections, IsoDateString, TypedPocketBase } from "./pocketbase-types"; import PocketBase from 'pocketbase' import { useNavigate } from "react-router"; - +import { useForm, SubmitHandler } from "react-hook-form" interface QuoteAddProps { quote: string; context?: string; @@ -17,39 +17,48 @@ export default function QuoteAdd() { const [date, setDate] = useState("") useEffect(() => { const d = new Date(); + d.setTime(d.getTime() + 60 * 60 * 1000) const formattedDate = d.toISOString().slice(0, 16) setDate(formattedDate) }, []); - async function submit(formData: FormData) { - console.log(formData) - const quote = { - "quote": formData.get("quote"), - "context": formData.get("context"), - "author": formData.get("author"), - "date": formData.get("date") + const { register, handleSubmit, watch, formState: { errors }, } = useForm() + + const onSubmit: SubmitHandler = async (data) => { + console.log(data) + console.log(date) + let formDate = new Date(date) + formDate.setTime(formDate.getTime() + 60 * 60 * 1000) + + console.log(date, formDate) + let quote = { + "quote": data.quote, + "context": data.context || "", + "author": data.author, + "date": formDate.toISOString().substring(0, 19) + "Z" } - console.log(formData.get("collection")) - await pb.collection(formData.get("collection") as string).create(quote) + console.log(quote) + await pb.collection(data.collection).create(quote) let navigate = useNavigate(); navigate("/") - } + return ( -
-