diff --git a/src/pages/RepositoriesPage.jsx b/src/pages/RepositoriesPage.jsx index f5884f4..527484d 100644 --- a/src/pages/RepositoriesPage.jsx +++ b/src/pages/RepositoriesPage.jsx @@ -22,6 +22,7 @@ export default function RepositoriesPage() { const [openInfo, setOpenInfo] = useState(false) const infoRef = useRef(null) + useEffect(() => { function handleClickOutside(event) { if ( @@ -31,11 +32,22 @@ export default function RepositoriesPage() { setOpenInfo(false) } } + + function handleEscape(event) { + if (event.key === 'Escape' && openInfo) { + setOpenInfo(false); + document.getElementById('info-button')?.focus(); + } + } + document.addEventListener('mousedown', handleClickOutside) + document.addEventListener('keydown', handleEscape) + return () => { document.removeEventListener('mousedown', handleClickOutside) + document.removeEventListener('keydown', handleEscape) } - }, []) + }, [openInfo]) const navigate = useNavigate() const allRepos = model?.totalRepos ?? [] @@ -54,7 +66,7 @@ export default function RepositoriesPage() { const { sorted, sortConfig, onSort } = useSortedData(filtered, 'healthScore', 'desc') const visible = sorted.slice(0, shown) - if(loading) return + if (loading) return if (!model) return null const TABLE_COLS = [ @@ -82,8 +94,21 @@ export default function RepositoriesPage() { Repository Explorer