UNPKG

@atlaskit/editor-plugin-mentions

Version:

Mentions plugin for @atlaskit/editor-core

36 lines (35 loc) 984 B
/** * Custom hook to add focus trap * used for focus trap in ReactionPicker * copied from useFocusManager in @atlaskit/popup */ import { useEffect } from 'react'; import createFocusTrap from 'focus-trap'; export var useFocusTrap = function useFocusTrap(_ref) { var targetRef = _ref.targetRef; useEffect(function () { if (!targetRef) { return; } var trapConfig = { clickOutsideDeactivates: true, escapeDeactivates: true, initialFocus: targetRef, fallbackFocus: targetRef, returnFocusOnDeactivate: true }; var focusTrap = createFocusTrap(targetRef, trapConfig); // wait for the popup to reposition itself before we focus var frameId = requestAnimationFrame(function () { frameId = null; focusTrap.activate(); }); return function () { if (frameId !== null) { cancelAnimationFrame(frameId); frameId = null; } focusTrap.deactivate(); }; }, [targetRef]); };