fix: add focus trap to the selectionoverlay too

pull/3061/head
Audric Ackermann 2 months ago
parent ce1dfd2875
commit dca7469974

@ -63,19 +63,16 @@ export const SessionWrapperModal = (props: SessionWrapperModalType) => {
}
};
const fallbackFocusId = 'session-wrapper-modal';
return (
<FocusTrap focusTrapOptions={{ initialFocus: '#focus-trap-start-wrapper' }}>
<FocusTrap focusTrapOptions={{ fallbackFocus: `#${fallbackFocusId}`, allowOutsideClick: true }}>
<div
className={classNames('loki-dialog modal', additionalClassName || null)}
onClick={handleClick}
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 ref={modalRef} className="session-modal">
{showHeader ? (

@ -1,6 +1,8 @@
import FocusTrap from 'focus-trap-react';
import React from 'react';
import { useDispatch, useSelector } from 'react-redux';
import useKey from 'react-use/lib/useKey';
import {
deleteMessagesById,
deleteMessagesByIdForEveryone,
@ -73,32 +75,36 @@ export const SelectionOverlay = () => {
const isOnlyServerDeletable = isPublic;
const classNameAndId = 'message-selection-overlay';
return (
<div className="message-selection-overlay">
<div className="close-button">
<SessionIconButton iconType="exit" iconSize="medium" onClick={onCloseOverlay} />
</div>
<FocusTrap focusTrapOptions={{ fallbackFocus: `#${classNameAndId}`, allowOutsideClick: true }}>
<div className={classNameAndId} id={classNameAndId}>
<div className="close-button">
<SessionIconButton iconType="exit" iconSize="medium" onClick={onCloseOverlay} />
</div>
<div className="button-group">
<SessionButton
buttonColor={SessionButtonColor.Danger}
buttonShape={SessionButtonShape.Square}
buttonType={SessionButtonType.Solid}
text={window.i18n('delete')}
onClick={() => {
if (selectedConversationKey) {
if (isOnlyServerDeletable) {
void onDeleteSelectedMessagesForEveryone(
selectedConversationKey,
selectedMessageIds
);
} else {
void deleteMessagesById(selectedMessageIds, selectedConversationKey);
<div className="button-group">
<SessionButton
buttonColor={SessionButtonColor.Danger}
buttonShape={SessionButtonShape.Square}
buttonType={SessionButtonType.Solid}
text={window.i18n('delete')}
onClick={() => {
if (selectedConversationKey) {
if (isOnlyServerDeletable) {
void onDeleteSelectedMessagesForEveryone(
selectedConversationKey,
selectedMessageIds
);
} else {
void deleteMessagesById(selectedMessageIds, selectedConversationKey);
}
}
}
}}
/>
}}
/>
</div>
</div>
</div>
</FocusTrap>
);
};

Loading…
Cancel
Save