diff --git a/frontend/src/pages/ApplicationsPage.tsx b/frontend/src/pages/ApplicationsPage.tsx index e7d73cd..edbd1a3 100644 --- a/frontend/src/pages/ApplicationsPage.tsx +++ b/frontend/src/pages/ApplicationsPage.tsx @@ -1,4 +1,4 @@ -import { useMemo, useState, type FormEvent } from 'react'; +import { useEffect, useMemo, useState, type FormEvent } from 'react'; import { useNavigate } from 'react-router-dom'; import { ApplicationForm } from '@/components/forms/ApplicationForm'; @@ -43,6 +43,35 @@ export function ApplicationsPage() { const [importUrl, setImportUrl] = useState(''); const [importError, setImportError] = useState(null); + useEffect(() => { + function handleKeyDown(event: KeyboardEvent) { + const target = event.target; + + if ( + !(target instanceof HTMLElement) || + target.matches('input, textarea, select') || + target.isContentEditable || + event.altKey || + event.ctrlKey || + event.metaKey || + event.key.toLowerCase() !== 'n' || + creating || + importing + ) { + return; + } + + event.preventDefault(); + setCreating(true); + } + + window.addEventListener('keydown', handleKeyDown); + + return () => { + window.removeEventListener('keydown', handleKeyDown); + }; + }, [creating, importing]); + const { data, isLoading, isError, refetch } = useApplications({ q: debouncedSearch || undefined, page_size: 100,