1- import React , { useState } from "react" ;
1+ import React , { useRef , useState } from "react" ;
22import { useTranslation } from "react-i18next" ;
33import SeriesDetails from "./SeriesDetails" ;
44import { removeNotificationWizardForm } from "../../../../slices/notificationSlice" ;
55import { useAppDispatch } from "../../../../store" ;
66import { Modal , ModalHandle } from "../../../shared/modals/Modal" ;
7+ import { FormikProps } from "formik" ;
78
89/**
910 * This component renders the modal for displaying series details
@@ -22,13 +23,20 @@ const SeriesDetailsModal = ({
2223
2324 // tracks, whether the policies are different to the initial value
2425 const [ policyChanged , setPolicyChanged ] = useState ( false ) ;
26+ const formikRef = useRef < FormikProps < any > > ( null ) ;
2527
2628 const confirmUnsaved = ( ) => {
2729 return window . confirm ( t ( "CONFIRMATIONS.WARNINGS.UNSAVED_CHANGES" ) ) ;
2830 } ;
2931
3032 const close = ( ) => {
31- if ( ! policyChanged || confirmUnsaved ( ) ) {
33+ let isUnsavedChanges = false ;
34+ isUnsavedChanges = policyChanged ;
35+ if ( formikRef . current && formikRef . current . dirty !== undefined && formikRef . current . dirty ) {
36+ isUnsavedChanges = true ;
37+ }
38+
39+ if ( ! isUnsavedChanges || confirmUnsaved ( ) ) {
3240 setPolicyChanged ( false ) ;
3341 dispatch ( removeNotificationWizardForm ( ) ) ;
3442 return true ;
@@ -47,6 +55,7 @@ const SeriesDetailsModal = ({
4755 seriesId = { seriesId }
4856 policyChanged = { policyChanged }
4957 setPolicyChanged = { value => setPolicyChanged ( value ) }
58+ formikRef = { formikRef }
5059 />
5160 </ Modal >
5261 ) ;
0 commit comments