'use client' import { useEffect } from 'react' import Image from 'next/image' import { Button, ControlledCheckbox, TextField, UploadImage } from 'components' import { useForm } from 'react-hook-form' import { yupResolver } from '@hookform/resolvers/yup' import { sliderSchema } from 'utils' const SliderForm = props => { //? Props const { mode, createHandler, updateHandler, deleteHandler, isLoadingCreate, isLoadingDelete, isLoadingUpdate, selectedSlider, } = props //? Assets const defaultValues = { image: { url: '' }, title: '', uri: '', isPublic: true, } //? Hook Form const { control, getValues, reset, setValue, handleSubmit, watch, formState: { errors: formErrors }, } = useForm({ defaultValues, resolver: yupResolver(sliderSchema), }) //? Handlers const handleAddUploadedImageUrl = url => setValue('image.url', url) //? Re-Renders useEffect(() => { if (selectedSlider && mode === 'edit') { const { image, title, uri, isPublic } = selectedSlider reset({ image, title, uri, isPublic }) } }, [selectedSlider]) return (
{sliderSchema.isValidSync(watch()) && (
{getValues('image.url') && ( banner image )}
)}
{mode === 'edit' ? ( <> ) : ( )}
) } export default SliderForm