refactor(FE-114): ensure fields are marked as touched on change for better validation handling

This commit is contained in:
rstubryan
2025-10-21 13:01:56 +07:00
parent 25a97e34c7
commit 0740f2d094
@@ -568,7 +568,11 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
required
label='Lokasi'
value={formik.values.location ?? undefined}
onChange={locationChangeHandler}
onChange={(val) => {
formik.setFieldTouched('location', true);
formik.setFieldTouched('location_id', true);
locationChangeHandler(val);
}}
options={locationOptions}
onInputChange={setLocationSelectInputValue}
isLoading={isLoadingLocations}
@@ -613,7 +617,11 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
required
label='Flock'
value={formik.values.flock ?? undefined}
onChange={flockChangeHandler}
onChange={(val) => {
formik.setFieldTouched('flock', true);
formik.setFieldTouched('flock_id', true);
flockChangeHandler(val);
}}
options={flockOptions}
onInputChange={setFlockSelectInputValue}
isLoading={isLoadingFlocks}
@@ -635,7 +643,11 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
required
label='Kandang'
value={formik.values.coop ?? undefined}
onChange={coopChangeHandler}
onChange={(val) => {
formik.setFieldTouched('coop', true);
formik.setFieldTouched('coop_id', true);
coopChangeHandler(val);
}}
options={coopOptions}
isError={
formik.touched.coop_id && Boolean(formik.errors.coop_id)
@@ -737,6 +749,14 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
) ?? '')
: '';
formik.setFieldTouched(
`feed_data.${idx}.feed`,
true
);
formik.setFieldTouched(
`feed_data.${idx}.feed_id`,
true
);
formik.setFieldValue(
`feed_data.${idx}.feed`,
val
@@ -1193,6 +1213,14 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
productWarehouseId as number
) ?? '')
: '';
formik.setFieldTouched(
`vaccination.${idx}.vaccine`,
true
);
formik.setFieldTouched(
`vaccination.${idx}.vaccine_id`,
true
);
formik.setFieldValue(
`vaccination.${idx}.vaccine`,
val
@@ -1413,6 +1441,10 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
(opt) => opt.value === mortality.condition
)}
onChange={(val) => {
formik.setFieldTouched(
`mortality.${idx}.condition`,
true
);
formik.setFieldValue(
`mortality.${idx}.condition`,
(val as OptionType)?.value