diff --git a/rsconcept/frontend/src/features/rsform/pages/rsform-page/editor-constituenta/form-constituenta.tsx b/rsconcept/frontend/src/features/rsform/pages/rsform-page/editor-constituenta/form-constituenta.tsx index da0f366f..0e40e710 100644 --- a/rsconcept/frontend/src/features/rsform/pages/rsform-page/editor-constituenta/form-constituenta.tsx +++ b/rsconcept/frontend/src/features/rsform/pages/rsform-page/editor-constituenta/form-constituenta.tsx @@ -1,7 +1,7 @@ 'use no memo'; // TODO: remove when react hook forms are compliant with react compiler 'use client'; -import { useMemo, useRef, useState } from 'react'; +import { useLayoutEffect, useMemo, useRef, useState } from 'react'; import { Controller, useForm } from 'react-hook-form'; import { toast } from 'react-toastify'; import { zodResolver } from '@hookform/resolvers/zod'; @@ -145,6 +145,8 @@ export function FormConstituenta({ disabled, id, toggleReset, schema, activeCst, setLocalParse(null); } + useLayoutEffect(() => setIsModified(false), [activeCst.id, setIsModified]); + const prevDirty = useRef(isDirty); if (prevDirty.current !== isDirty) { prevDirty.current = isDirty; diff --git a/rsconcept/frontend/src/features/rsform/pages/rsform-page/rstabs.tsx b/rsconcept/frontend/src/features/rsform/pages/rsform-page/rstabs.tsx index 6d3c3e67..01d5451b 100644 --- a/rsconcept/frontend/src/features/rsform/pages/rsform-page/rstabs.tsx +++ b/rsconcept/frontend/src/features/rsform/pages/rsform-page/rstabs.tsx @@ -24,7 +24,6 @@ export function RSTabs({ activeID, activeTab }: RSTabsProps) { const router = useConceptNavigation(); const hideFooter = useAppLayoutStore(state => state.hideFooter); - const isModified = useModificationStore(state => state.isModified); const setIsModified = useModificationStore(state => state.setIsModified); const { schema, selected, setSelected, deselectAll, navigateRSForm } = useRSEdit(); @@ -40,10 +39,6 @@ export function RSTabs({ activeID, activeTab }: RSTabsProps) { const nextNoFooter = activeTab !== RSTabID.CARD; hideFooter(nextNoFooter); - if (isModified) { - setIsModified(false); - } - if (activeTab === RSTabID.CST_EDIT) { let nextSelected: number[] = []; if (activeID && schema.cstByID.has(activeID)) { @@ -65,7 +60,7 @@ export function RSTabs({ activeID, activeTab }: RSTabsProps) { } } } - }, [activeTab, activeID, selected, schema, hideFooter, isModified, setIsModified, setSelected, deselectAll]); + }, [activeTab, activeID, selected, schema, hideFooter, setSelected, deselectAll]); useLayoutEffect(() => { return () => hideFooter(false); @@ -75,6 +70,7 @@ export function RSTabs({ activeID, activeTab }: RSTabsProps) { if (last === index) { return; } + setIsModified(false); if (event.type == 'keydown') { const kbEvent = event as KeyboardEvent; if (kbEvent.altKey) {