refactor: make sure the gamepad modal focus is respected

This commit is contained in:
Timothy Z. 2026-04-29 16:48:53 +03:00
parent 7c3f79ac1a
commit 73a02564b3
2 changed files with 3 additions and 1 deletions

View file

@ -68,7 +68,7 @@ const GamepadModal = ({ onClose }: Props) => {
}, [gamepad]);
return createPortal((
<div className={styles['gamepad-modal']}>
<div className={styles['gamepad-modal']} data-gamepad-modal>
<div className={styles['backdrop']} onClick={onClose} />
<div className={styles['container']}>

View file

@ -6,6 +6,8 @@ import { useGamepad } from '../GamepadContext';
const FOCUSABLE = '[tabindex]:not([data-focus-guard])';
const getActiveScope = (fallback: HTMLDivElement | null): HTMLElement | null => {
if (document.querySelector('[data-gamepad-modal]')) return null;
const modals = document.querySelectorAll<HTMLElement>('.modals-container');
for (const modal of modals) {
if (modal.children.length > 0) return modal;