"use client" import { useState } from "react" import { useFieldArray, useForm } from "react-hook-form" import { zodResolver } from "@hookform/resolvers/zod" 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 { DateTimePicker } from "@/components/ui/date-time-picker" import { useUpdateUserMutation } from "@/pages/users/update/queries" import { userUpdateSchema, type UserUpdate } from "@/pages/users/update/schema" import PageAddUserSelections from "../selections/addPage" const UserForm = ({ refetchTable, initData, selectedUuid }: { refetchTable: () => void, initData: any, selectedUuid: string }) => { const form = useForm({ resolver: zodResolver(userUpdateSchema), defaultValues: { expiryStarts: initData.expiryStarts, expiryEnds: initData.expiryEnds, isConfirmed: initData.isConfirmed, isNotificationSend: initData.isNotificationSend, tag: initData.tag, email: initData.email, phone: initData.phone, }, }) const { handleSubmit } = form const [defaultSelection, setDefaultSelection] = useState(initData.collectionTokens.defaultSelection) const [selectedBuildIDS, setSelectedBuildIDS] = useState(initData.collectionTokens.selectedBuildIDS) const [selectedCompanyIDS, setSelectedCompanyIDS] = useState(initData.collectionTokens.selectedCompanyIDS) const [personID, setPersonID] = useState(initData.person) const appendBuildID = (id: string) => setSelectedBuildIDS((prev) => (id && !selectedBuildIDS.includes(id) ? [...prev, id] : prev)) const appendCompanyID = (id: string) => setSelectedCompanyIDS((prev) => (id && !selectedCompanyIDS.includes(id) ? [...prev, id] : prev)) const removeBuildID = (id: string) => setSelectedBuildIDS((prev) => prev.filter((item) => item !== id)) const removeCompanyID = (id: string) => setSelectedCompanyIDS((prev) => prev.filter((item) => item !== id)) const mutation = useUpdateUserMutation(); function onSubmit(values: UserUpdate) { mutation.mutate({ data: values as any || initData, uuid: selectedUuid, selectedBuildIDS, selectedCompanyIDS, defaultSelection, personID, refetchTable }) } return (
{/* BASIC INFO */}
( Email )} /> ( Phone )} />
{/* PASSWORD / TAG */}
( Tag )} /> {/* SWITCHES */}
( Confirmed )} /> ( Send Notification )} />
{/* DATES */}
( Expiry Starts )} /> ( Expiry Ends )} />
) } export { UserForm }