@@ -11,7 +11,7 @@ import {
1111 hasStatistics as seriesHasStatistics ,
1212} from "../../../../selectors/seriesDetailsSelectors" ;
1313import { getOrgProperties , getUserInformation } from "../../../../selectors/userInfoSelectors" ;
14- import { hasAccess } from "../../../../utils/utils" ;
14+ import { confirmUnsaved , hasAccess } from "../../../../utils/utils" ;
1515import SeriesDetailsAccessTab from "../ModalTabsAndPages/SeriesDetailsAccessTab" ;
1616import SeriesDetailsThemeTab from "../ModalTabsAndPages/SeriesDetailsThemeTab" ;
1717import SeriesDetailsStatisticTab from "../ModalTabsAndPages/SeriesDetailsStatisticTab" ;
@@ -28,6 +28,7 @@ import DetailsTobiraTab from "../ModalTabsAndPages/DetailsTobiraTab";
2828import ButtonLikeAnchor from "../../../shared/ButtonLikeAnchor" ;
2929import { removeNotificationWizardTobira } from "../../../../slices/notificationSlice" ;
3030import { ParseKeys } from "i18next" ;
31+ import { FormikProps } from "formik" ;
3132
3233/**
3334 * This component manages the tabs of the series details modal
@@ -36,10 +37,12 @@ const SeriesDetails = ({
3637 seriesId,
3738 policyChanged,
3839 setPolicyChanged,
40+ formikRef,
3941} : {
4042 seriesId : string
4143 policyChanged : boolean
4244 setPolicyChanged : ( policyChanged : boolean ) => void
45+ formikRef : React . RefObject < FormikProps < any > | null >
4346} ) => {
4447 const { t } = useTranslation ( ) ;
4548 const dispatch = useAppDispatch ( ) ;
@@ -110,7 +113,15 @@ const SeriesDetails = ({
110113 ] ;
111114
112115 const openTab = ( tabNr : number ) => {
113- setPage ( tabNr ) ;
116+ let isUnsavedChanges = false ;
117+ isUnsavedChanges = policyChanged ;
118+ if ( formikRef . current && formikRef . current . dirty !== undefined && formikRef . current . dirty ) {
119+ isUnsavedChanges = true ;
120+ }
121+
122+ if ( ! isUnsavedChanges || confirmUnsaved ( t ) ) {
123+ setPage ( tabNr ) ;
124+ }
114125 } ;
115126
116127 return (
@@ -136,6 +147,7 @@ const SeriesDetails = ({
136147 metadata = { [ metadataFields ] }
137148 updateResource = { updateSeriesMetadata }
138149 editAccessRole = "ROLE_UI_SERIES_DETAILS_METADATA_EDIT"
150+ formikRef = { formikRef }
139151 header = { tabs [ page ] . tabNameTranslation }
140152 />
141153 ) }
@@ -145,6 +157,7 @@ const SeriesDetails = ({
145157 metadata = { extendedMetadata }
146158 updateResource = { updateExtendedSeriesMetadata }
147159 editAccessRole = "ROLE_UI_SERIES_DETAILS_METADATA_EDIT"
160+ formikRef = { formikRef }
148161 />
149162 ) }
150163 { page === 2 && (
0 commit comments