From 0aebdb6c71adabd7258e8fe2ada89a8de79b09c7 Mon Sep 17 00:00:00 2001 From: kaarleol Date: Sat, 16 Nov 2024 16:14:12 +0200 Subject: [PATCH] Updation validation errors when a ref type changes --- .../Reference/Tabs/ReferenceTab.tsx | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/frontend/src/components/Reference/Tabs/ReferenceTab.tsx b/frontend/src/components/Reference/Tabs/ReferenceTab.tsx index 79db6078..8a2f1190 100644 --- a/frontend/src/components/Reference/Tabs/ReferenceTab.tsx +++ b/frontend/src/components/Reference/Tabs/ReferenceTab.tsx @@ -5,11 +5,30 @@ import { useGetReferenceTypesQuery } from '@/redux/referenceReducer' import { CircularProgress } from '@mui/material' import { AuthorTab } from './AuthorTab' import { JournalTab } from './JournalTab' +import { useEffect } from 'react' export const ReferenceTab = () => { - const { dropdown, data, editData, mode, textField, bigTextField } = useDetailContext() + const { dropdown, data, editData, mode, textField, bigTextField, fieldsWithErrors, validator, setFieldsWithErrors } = + useDetailContext() const { data: referenceTypes } = useGetReferenceTypesQuery() + useEffect(() => { + if (mode.option === 'edit' || mode.option === 'new') { + for (const field in editData) { + const fieldAsKey = field as keyof typeof editData + const fieldAsString = String(fieldAsKey) + const { error } = validator(editData, fieldAsKey) + + if (error && !fieldsWithErrors.includes(fieldAsString)) { + setFieldsWithErrors(prevErrors => [...prevErrors, fieldAsString]) + } else if (!error && fieldsWithErrors.includes(fieldAsString)) { + setFieldsWithErrors(prevErrors => prevErrors.filter(err => err !== fieldAsString)) + } + } + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [editData.ref_type_id]) + if (!referenceTypes) return const referenceTypeOptions = referenceTypes