B: Fix editor modified status
Some checks failed
Frontend CI / build (22.x) (push) Has been cancelled
Frontend CI / notify-failure (push) Has been cancelled

This commit is contained in:
Ivan 2025-09-23 16:19:23 +03:00
parent 12584e413b
commit 4f03f048aa
2 changed files with 5 additions and 7 deletions

View File

@ -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;

View File

@ -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) {