From 16823fa84a8d4c01a7e361c53a1ebb99d5cddb09 Mon Sep 17 00:00:00 2001 From: rstubryan Date: Fri, 24 Oct 2025 09:00:29 +0700 Subject: [PATCH] refactor(FE-114): implement custom handlers for vaccination stock and mortality count input parsing --- .../recording/form/RecordingForm.tsx | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/components/pages/production/recording/form/RecordingForm.tsx b/src/components/pages/production/recording/form/RecordingForm.tsx index 45f0cbf5..b9136262 100644 --- a/src/components/pages/production/recording/form/RecordingForm.tsx +++ b/src/components/pages/production/recording/form/RecordingForm.tsx @@ -509,6 +509,22 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => { [handleAverageWeightChange] ); + const handleVaccinationStockChangeWrapper = useCallback( + (idx: number) => (e: React.ChangeEvent) => { + const value = parseFloat(e.target.value.replace(/[^\d,.-]/g, '').replace(/,/g, '')) || 0; + formik.setFieldValue(`vaccination.${idx}.used_stock`, value); + }, + [formik] + ); + + const handleMortalityCountChangeWrapper = useCallback( + (idx: number) => (e: React.ChangeEvent) => { + const value = parseFloat(e.target.value.replace(/[^\d,.-]/g, '').replace(/,/g, '')) || 0; + formik.setFieldValue(`mortality.${idx}.count`, value); + }, + [formik] + ); + const removeBodyWeight = (idx: number) => { const updatedBodyWeight = formik.values.body_weight?.filter( (_, i) => i !== idx @@ -1422,7 +1438,7 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => { required name={`vaccination.${idx}.used_stock`} value={vaccine.used_stock} - onChange={formik.handleChange} + onChange={handleVaccinationStockChangeWrapper(idx)} onBlur={formik.handleBlur} maskType='number' decimals={0} @@ -1630,7 +1646,7 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => { required name={`mortality.${idx}.count`} value={mortality.count} - onChange={formik.handleChange} + onChange={handleMortalityCountChangeWrapper(idx)} onBlur={formik.handleBlur} maskType='number' decimals={0}