From ec95ddbdddc88dc94889812753fbcdd3e4d850dd Mon Sep 17 00:00:00 2001 From: rstubryan Date: Fri, 26 Dec 2025 22:05:36 +0700 Subject: [PATCH] refactor(FE-438): Add min validators and file error handling --- .../uniformity/form/UniformityForm.schema.ts | 3 +++ .../pages/uniformity/form/UniformityForm.tsx | 24 ++++++++++++++++--- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/components/pages/uniformity/form/UniformityForm.schema.ts b/src/components/pages/uniformity/form/UniformityForm.schema.ts index 819c6b7c..0625c2cf 100644 --- a/src/components/pages/uniformity/form/UniformityForm.schema.ts +++ b/src/components/pages/uniformity/form/UniformityForm.schema.ts @@ -49,6 +49,7 @@ export const UniformityFormSchema: Yup.ObjectSchema = label: Yup.string().required(), }).nullable(), location_id: Yup.number() + .min(1, 'Location wajib diisi!') .required('Location wajib diisi!') .typeError('Location wajib diisi!'), project_flock: Yup.object({ @@ -56,6 +57,7 @@ export const UniformityFormSchema: Yup.ObjectSchema = label: Yup.string().required(), }).nullable(), project_flock_id: Yup.number() + .min(1, 'Project flock wajib diisi!') .required('Project flock wajib diisi!') .typeError('Project flock wajib diisi!'), project_flock_kandang_id: Yup.number().optional().nullable().default(null), @@ -64,6 +66,7 @@ export const UniformityFormSchema: Yup.ObjectSchema = label: Yup.string().required(), }).nullable(), kandang_id: Yup.number() + .min(1, 'Kandang wajib diisi!') .required('Kandang wajib diisi!') .typeError('Kandang wajib diisi!'), files: FileSchema.required('File wajib diisi!'), diff --git a/src/components/pages/uniformity/form/UniformityForm.tsx b/src/components/pages/uniformity/form/UniformityForm.tsx index 919b28ff..1d558425 100644 --- a/src/components/pages/uniformity/form/UniformityForm.tsx +++ b/src/components/pages/uniformity/form/UniformityForm.tsx @@ -36,6 +36,7 @@ import { ProjectFlockKandangLookup } from '@/types/api/production/project-flock' import { Kandang } from '@/types/api/master-data/kandang'; import ExpandedDrawerForm from '@/components/pages/uniformity/form/ExpandedDrawerForm'; import useSWR from 'swr'; +import { cn } from '@/lib/helper'; interface UniformityFormProps { formType?: 'add' | 'edit'; @@ -303,6 +304,8 @@ const UniformityForm = ({ (e: React.ChangeEvent) => { const file = e.target.files?.[0]; + formik.setFieldTouched('files', true); + if (!file) { formik.setFieldValue('files', undefined); return; @@ -454,12 +457,21 @@ const UniformityForm = ({
+
document.getElementById('file-upload-input')?.click() } @@ -551,13 +563,19 @@ const UniformityForm = ({ onChange={handleFileChange} className='hidden' /> + + {formik.touched.files && formik.errors.files && ( +

+ {formik.errors.files as string} +

+ )}