From c925bd1dc559a12fb8d65ae09641e3871c1ca2ac Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Thu, 19 Feb 2026 23:17:39 +0000 Subject: [PATCH 1/3] Remove focus conflicts and add enforceFocus={false} to Dialog Co-authored-by: Trang Doan --- apps/roam/src/components/FuzzySelectInput.tsx | 1 - apps/roam/src/components/ModifyNodeDialog.tsx | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/roam/src/components/FuzzySelectInput.tsx b/apps/roam/src/components/FuzzySelectInput.tsx index 16acdca1a..76d771bf8 100644 --- a/apps/roam/src/components/FuzzySelectInput.tsx +++ b/apps/roam/src/components/FuzzySelectInput.tsx @@ -62,7 +62,6 @@ const FuzzySelectInput = ({ setQuery(item.text); setValue(item); setIsOpen(false); - requestAnimationFrame(() => inputRef.current?.focus()); } }, [mode, initialUid, setValue, onLockedChange], diff --git a/apps/roam/src/components/ModifyNodeDialog.tsx b/apps/roam/src/components/ModifyNodeDialog.tsx index ebd84e473..288a9ebd5 100644 --- a/apps/roam/src/components/ModifyNodeDialog.tsx +++ b/apps/roam/src/components/ModifyNodeDialog.tsx @@ -491,6 +491,7 @@ const ModifyNodeDialog = ({ onClose={onClose} canEscapeKeyClose autoFocus={false} + enforceFocus={false} className={"roamjs-canvas-dialog"} >
Date: Thu, 19 Feb 2026 23:18:49 +0000 Subject: [PATCH 2/3] Add focus management to move to Confirm button after node selection Co-authored-by: Trang Doan --- apps/roam/src/components/FuzzySelectInput.tsx | 6 +++++- apps/roam/src/components/ModifyNodeDialog.tsx | 8 ++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/apps/roam/src/components/FuzzySelectInput.tsx b/apps/roam/src/components/FuzzySelectInput.tsx index 76d771bf8..c732cfe38 100644 --- a/apps/roam/src/components/FuzzySelectInput.tsx +++ b/apps/roam/src/components/FuzzySelectInput.tsx @@ -21,6 +21,7 @@ type FuzzySelectInputProps = { placeholder?: string; autoFocus?: boolean; initialIsLocked?: boolean; + onSelectComplete?: () => void; }; const FuzzySelectInput = ({ @@ -33,6 +34,7 @@ const FuzzySelectInput = ({ placeholder = "Enter value", autoFocus, initialIsLocked, + onSelectComplete, }: FuzzySelectInputProps) => { const [isLocked, setIsLocked] = useState(initialIsLocked || false); const [query, setQuery] = useState(() => value?.text || ""); @@ -58,13 +60,15 @@ const FuzzySelectInput = ({ setValue(item); setIsOpen(false); onLockedChange?.(true); + onSelectComplete?.(); } else { setQuery(item.text); setValue(item); setIsOpen(false); + onSelectComplete?.(); } }, - [mode, initialUid, setValue, onLockedChange], + [mode, initialUid, setValue, onLockedChange, onSelectComplete], ); const handleClear = useCallback(() => { diff --git a/apps/roam/src/components/ModifyNodeDialog.tsx b/apps/roam/src/components/ModifyNodeDialog.tsx index 288a9ebd5..5f6ecfc21 100644 --- a/apps/roam/src/components/ModifyNodeDialog.tsx +++ b/apps/roam/src/components/ModifyNodeDialog.tsx @@ -102,6 +102,7 @@ const ModifyNodeDialog = ({ const contentRequestIdRef = useRef(0); const referencedNodeRequestIdRef = useRef(0); const [error, setError] = useState(""); + const confirmButtonRef = useRef(null); const discourseNodes = useMemo(() => { const allNodes = getDiscourseNodes(); @@ -235,6 +236,10 @@ const ModifyNodeDialog = ({ setReferencedNodeValue(r); }, []); + const handleSelectComplete = useCallback(() => { + confirmButtonRef.current?.focus(); + }, []); + const onCancelClick = useCallback(() => { onClose(); }, [onClose]); @@ -540,6 +545,7 @@ const ModifyNodeDialog = ({ mode={mode} initialUid={content.uid} autoFocus + onSelectComplete={handleSelectComplete} />
@@ -556,6 +562,7 @@ const ModifyNodeDialog = ({ initialUid={referencedNodeValue.uid} initialIsLocked={isReferencedNodeLocked} autoFocus={false} + onSelectComplete={handleSelectComplete} /> )} @@ -571,6 +578,7 @@ const ModifyNodeDialog = ({ onClick={() => void onSubmit()} disabled={loading || !content.text.trim()} className="flex-shrink-0" + elementRef={confirmButtonRef} />