"use client" import { useFieldArray, useForm } from "react-hook-form" import { zodResolver } from "@hookform/resolvers/zod" import { userAddSchema, type UserAdd } from "./schema" import { Form, FormField, FormItem, FormLabel, FormControl, FormMessage } from "@/components/ui/form" import { Input } from "@/components/ui/input" import { Button } from "@/components/ui/button" import { Checkbox } from "@/components/ui/checkbox" import { Separator } from "@/components/ui/separator" import { useAddUserMutation } from "./queries" import { DateTimePicker } from "@/components/ui/date-time-picker" const UserForm = ({ refetchTable }: { refetchTable: () => void }) => { const form = useForm({ resolver: zodResolver(userAddSchema), defaultValues: { expiryStarts: "", expiryEnds: "", isConfirmed: false, isNotificationSend: false, password: "", rePassword: "", tag: "", email: "", phone: "", collectionTokens: { default: "", tokens: [], }, }, }) const { control, handleSubmit } = form const { fields, append, remove } = useFieldArray({ control, name: "collectionTokens.tokens" }) const mutation = useAddUserMutation(); function onSubmit(values: UserAdd) { mutation.mutate(values as any); setTimeout(() => refetchTable(), 400) } return (
{/* BASIC INFO */}
( Email )} /> ( Phone )} />
{/* PASSWORD / TAG */}
( Password )} /> ( Re-Password )} /> ( Tag )} />
{/* DATES */}
( Expiry Starts )} /> ( Expiry Ends )} />
{/* SWITCHES */}
( Confirmed )} /> ( Send Notification )} />
{/* COLLECTION TOKENS */} ( Default Token )} />
Tokens
{fields.length === 0 && (

No tokens added.

)} {fields.map((fieldItem, i) => (
( Prefix )} />
( Token )} />
))}
) } export { UserForm }