mirror of
https://github.com/lux-tel/session-desktop.git
synced 2026-10-30 20:33:24 +00:00
32 lines
744 B
TypeScript
32 lines
744 B
TypeScript
import { FocusTrap } from 'focus-trap-react';
|
|
import { ReactNode } from 'react';
|
|
import type { CSSProperties } from 'styled-components';
|
|
|
|
/**
|
|
* Focus trap which activates on mount.
|
|
*/
|
|
export function SessionFocusTrap({
|
|
children,
|
|
allowOutsideClick = true,
|
|
initialFocus,
|
|
containerDivStyle,
|
|
}: {
|
|
children: ReactNode;
|
|
allowOutsideClick?: boolean;
|
|
initialFocus: () => HTMLElement | null;
|
|
containerDivStyle?: CSSProperties;
|
|
}) {
|
|
return (
|
|
<FocusTrap
|
|
active={true}
|
|
focusTrapOptions={{
|
|
initialFocus,
|
|
allowOutsideClick,
|
|
}}
|
|
>
|
|
{/* Note: not too sure why, but without this div, the focus trap doesn't work */}
|
|
<div style={containerDivStyle}>{children}</div>
|
|
</FocusTrap>
|
|
);
|
|
}
|