@atlaskit/editor-plugin-mentions
Version:
Mentions plugin for @atlaskit/editor-core
36 lines (35 loc) • 984 B
JavaScript
/**
* 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]);
};