diff --git a/apps/client/src/widgets/collections/board/index.tsx b/apps/client/src/widgets/collections/board/index.tsx index e11beb203..e868e5d30 100644 --- a/apps/client/src/widgets/collections/board/index.tsx +++ b/apps/client/src/widgets/collections/board/index.tsx @@ -228,6 +228,7 @@ export function TitleEditor({ currentValue, placeholder, save, dismiss, multilin }) { const inputRef = useRef(null); const dismissOnNextRefreshRef = useRef(false); + const shouldSave = useRef(false); useEffect(() => { inputRef.current?.focus(); @@ -251,20 +252,14 @@ export function TitleEditor({ currentValue, placeholder, save, dismiss, multilin autoComplete="trilium-title-entry" // forces the auto-fill off better than the "off" value. rows={multiline ? 4 : undefined} onKeyDown={(e: JSX.TargetedKeyboardEvent) => { - if (e.key === "Enter") { - const newValue = e.currentTarget?.value; - if (newValue.trim() && (newValue !== currentValue || isNewItem)) { - save(newValue); - dismissOnNextRefreshRef.current = true; - } - } - - if (e.key === "Escape") { - dismiss(); + if (e.key === "Enter" || e.key === "Escape") { + e.preventDefault(); + shouldSave.current = (e.key === "Enter"); + e.currentTarget.blur(); } }} onBlur={(newValue) => { - if (newValue.trim() && (newValue !== currentValue || isNewItem)) { + if (shouldSave.current && newValue.trim() && (newValue !== currentValue || isNewItem)) { save(newValue); dismissOnNextRefreshRef.current = true; } else {