diff --git a/rsconcept/frontend/src/components/RefsInput/RefsInput.tsx b/rsconcept/frontend/src/components/RefsInput/RefsInput.tsx index 309622f8..d22ae75a 100644 --- a/rsconcept/frontend/src/components/RefsInput/RefsInput.tsx +++ b/rsconcept/frontend/src/components/RefsInput/RefsInput.tsx @@ -15,6 +15,7 @@ import DlgEditReference from '@/dialogs/DlgEditReference'; import { ReferenceType } from '@/models/language'; import { IRSForm } from '@/models/rsform'; import { CodeMirrorWrapper } from '@/utils/codemirror'; +import { PARAMETER } from '@/utils/constants'; import { NaturalLanguage, ReferenceTokens } from './parse'; import { RefEntity } from './parse/parser.terms'; @@ -165,12 +166,17 @@ const RefsInput = forwardRef( [thisRef] ); + const hideEditReference = useCallback(() => { + setShowEditor(false); + setTimeout(() => thisRef.current?.view?.focus(), PARAMETER.refreshTimeout); + }, [thisRef]); + return (
{showEditor && schema ? ( setShowEditor(false)} + hideWindow={hideEditReference} schema={schema} initial={{ type: currentType, @@ -193,7 +199,7 @@ const RefsInput = forwardRef( value={isFocused ? value : value !== initialValue || showEditor ? value : resolved} indentWithTab={false} onChange={handleChange} - editable={!disabled} + editable={!disabled && !showEditor} onKeyDown={handleInput} onFocus={handleFocusIn} onBlur={handleFocusOut} diff --git a/rsconcept/frontend/src/pages/RSFormPage/RSTabs.tsx b/rsconcept/frontend/src/pages/RSFormPage/RSTabs.tsx index aaf2eee1..a165a401 100644 --- a/rsconcept/frontend/src/pages/RSFormPage/RSTabs.tsx +++ b/rsconcept/frontend/src/pages/RSFormPage/RSTabs.tsx @@ -145,9 +145,11 @@ function RSTabs() { const onOpenCst = useCallback( (cstID: ConstituentaID) => { - navigateTab(RSTabID.CST_EDIT, cstID); + if (cstID !== activeCst?.id) { + navigateTab(RSTabID.CST_EDIT, cstID); + } }, - [navigateTab] + [navigateTab, activeCst] ); const onDestroySchema = useCallback(() => { diff --git a/rsconcept/frontend/src/utils/constants.ts b/rsconcept/frontend/src/utils/constants.ts index 078bf71b..36750dba 100644 --- a/rsconcept/frontend/src/utils/constants.ts +++ b/rsconcept/frontend/src/utils/constants.ts @@ -16,6 +16,7 @@ export const PARAMETER = { smallScreen: 640, // == tailwind:xs smallTreeNodes: 50, // amount of nodes threshold for size increase for large graphs refreshTimeout: 100, // milliseconds delay for post-refresh actions + minimalTimeout: 10, // milliseconds delay for fast updates graphRefreshDelay: 10, // milliseconds delay for graph viewpoint reset logicLabel: 'LOGIC'