diff --git a/client/app/components/modals/MergeModal.tsx b/client/app/components/modals/MergeModal.tsx index d034a52..ff1079b 100644 --- a/client/app/components/modals/MergeModal.tsx +++ b/client/app/components/modals/MergeModal.tsx @@ -57,7 +57,7 @@ export default function MergeModal(props: Props) { .then(r => { if (r.ok) { if (mergeOrderReversed) { - navigate(`/${props.type.toLowerCase()}/${mergeTarget}`) + navigate(`/${props.type.toLowerCase()}/${mergeTarget.id}`) closeMergeModal() } else { window.location.reload() diff --git a/client/app/components/sidebar/SidebarSearch.tsx b/client/app/components/sidebar/SidebarSearch.tsx index dca2cca..00acb93 100644 --- a/client/app/components/sidebar/SidebarSearch.tsx +++ b/client/app/components/sidebar/SidebarSearch.tsx @@ -12,11 +12,19 @@ export default function SidebarSearch({ size } : Props) { useEffect(() => { const handleKeyDown = (e: KeyboardEvent) => { - if (e.key === '/' && !open) { + const active = document.activeElement; + const isTyping = active && ( + active.tagName === 'INPUT' || + active.tagName === 'TEXTAREA' || + (active as HTMLElement).isContentEditable + ); + + if (!isTyping && e.key === '/') { e.preventDefault(); - setModalOpen(true); + setModalOpen(!open); } }; + document.addEventListener('keydown', handleKeyDown); return () => document.removeEventListener('keydown', handleKeyDown); }, [open]); diff --git a/client/app/components/sidebar/SidebarSettings.tsx b/client/app/components/sidebar/SidebarSettings.tsx index d2ff503..0486062 100644 --- a/client/app/components/sidebar/SidebarSettings.tsx +++ b/client/app/components/sidebar/SidebarSettings.tsx @@ -11,12 +11,20 @@ export default function SidebarSettings({ size }: Props) { const [open, setOpen] = useState(false); useEffect(() => { - const handleKeyDown= (e: KeyboardEvent) => { - if (e.key === '\\' && !open) { + const handleKeyDown = (e: KeyboardEvent) => { + const active = document.activeElement; + const isTyping = active && ( + active.tagName === 'INPUT' || + active.tagName === 'TEXTAREA' || + (active as HTMLElement).isContentEditable + ); + + if (!isTyping && e.key === '\\') { e.preventDefault(); - setOpen(true); + setOpen(!open); } }; + document.addEventListener('keydown', handleKeyDown); return () => document.removeEventListener('keydown', handleKeyDown); }, [open]);