diff --git a/src/components/pages/inventory/movement/form/MovementForm.tsx b/src/components/pages/inventory/movement/form/MovementForm.tsx index bca69015..d9e1102e 100644 --- a/src/components/pages/inventory/movement/form/MovementForm.tsx +++ b/src/components/pages/inventory/movement/form/MovementForm.tsx @@ -1,6 +1,6 @@ 'use client'; -import { useEffect, useMemo, useState } from 'react'; +import { useCallback, useEffect, useMemo, useState } from 'react'; import { useFormik } from 'formik'; import useSWR from 'swr'; @@ -105,12 +105,20 @@ const MovementForm = ({ type = 'add', initialValues }: MovementFormProps) => { formik.setFieldValue('product', newProducts); }; - const removeProduct = (index: number) => { - const newProducts = formik.values.product?.filter( - (_, idx) => idx !== index - ); - formik.setFieldValue('product', newProducts); - }; + const removeProduct = useCallback( + (i: number) => { + const updatedProducts = + formik.values.product?.reduce((acc: ProductSchema[], item, index) => { + if (index !== i) { + acc.push(item); + } + return acc; + }, []) ?? []; + + formik.setFieldValue('product', updatedProducts); + }, + [formik] + ); const addEkspedisi = () => { const newEkspedisi = [ @@ -131,12 +139,23 @@ const MovementForm = ({ type = 'add', initialValues }: MovementFormProps) => { formik.setFieldValue('ekspedisi', newEkspedisi); }; - const removeEkspedisi = (index: number) => { - const newEkspedisi = formik.values.ekspedisi?.filter( - (_, idx) => idx !== index - ); - formik.setFieldValue('ekspedisi', newEkspedisi); - }; + const removeEkspedisi = useCallback( + (i: number) => { + const updatedEkspedisi = + formik.values.ekspedisi?.reduce( + (acc: EkspedisiSchema[], item, index) => { + if (index !== i) { + acc.push(item); + } + return acc; + }, + [] + ) ?? []; + + formik.setFieldValue('ekspedisi', updatedEkspedisi); + }, + [formik] + ); const isRepeaterInputError = ( arrayName: T, @@ -201,7 +220,7 @@ const MovementForm = ({ type = 'add', initialValues }: MovementFormProps) => { return ( <> -
+
{ {formik.values.product?.map((product, idx) => ( - + { {formik.values.ekspedisi?.map((ekspedisi, idx) => ( - +