fix: add focus trap to the selectionoverlay too

pull/3061/head
Audric Ackermann 1 year ago
parent ce1dfd2875
commit dca7469974

@ -63,19 +63,16 @@ export const SessionWrapperModal = (props: SessionWrapperModalType) => {
} }
}; };
const fallbackFocusId = 'session-wrapper-modal';
return ( return (
<FocusTrap focusTrapOptions={{ initialFocus: '#focus-trap-start-wrapper' }}> <FocusTrap focusTrapOptions={{ fallbackFocus: `#${fallbackFocusId}`, allowOutsideClick: true }}>
<div <div
className={classNames('loki-dialog modal', additionalClassName || null)} className={classNames('loki-dialog modal', additionalClassName || null)}
onClick={handleClick} onClick={handleClick}
role="dialog" role="dialog"
id={fallbackFocusId}
> >
{/* FocusTrap needs a button always mounted as a start, which is apparently not our case */}
<div
role="button"
id="focus-trap-start-wrapper"
style={{ opacity: 0, width: 0, height: 0 }}
/>
<div className="session-confirm-wrapper"> <div className="session-confirm-wrapper">
<div ref={modalRef} className="session-modal"> <div ref={modalRef} className="session-modal">
{showHeader ? ( {showHeader ? (

@ -1,6 +1,8 @@
import FocusTrap from 'focus-trap-react';
import React from 'react'; import React from 'react';
import { useDispatch, useSelector } from 'react-redux'; import { useDispatch, useSelector } from 'react-redux';
import useKey from 'react-use/lib/useKey'; import useKey from 'react-use/lib/useKey';
import { import {
deleteMessagesById, deleteMessagesById,
deleteMessagesByIdForEveryone, deleteMessagesByIdForEveryone,
@ -73,8 +75,11 @@ export const SelectionOverlay = () => {
const isOnlyServerDeletable = isPublic; const isOnlyServerDeletable = isPublic;
const classNameAndId = 'message-selection-overlay';
return ( return (
<div className="message-selection-overlay"> <FocusTrap focusTrapOptions={{ fallbackFocus: `#${classNameAndId}`, allowOutsideClick: true }}>
<div className={classNameAndId} id={classNameAndId}>
<div className="close-button"> <div className="close-button">
<SessionIconButton iconType="exit" iconSize="medium" onClick={onCloseOverlay} /> <SessionIconButton iconType="exit" iconSize="medium" onClick={onCloseOverlay} />
</div> </div>
@ -100,5 +105,6 @@ export const SelectionOverlay = () => {
/> />
</div> </div>
</div> </div>
</FocusTrap>
); );
}; };

Loading…
Cancel
Save