UNPKG

@atlaskit/editor-plugin-mentions

Version:

Mentions plugin for @atlaskit/editor-core

44 lines (41 loc) 1.24 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.useFocusTrap = void 0; var _react = require("react"); var _focusTrap = _interopRequireDefault(require("focus-trap")); /** * Custom hook to add focus trap * used for focus trap in ReactionPicker * copied from useFocusManager in @atlaskit/popup */ var useFocusTrap = exports.useFocusTrap = function useFocusTrap(_ref) { var targetRef = _ref.targetRef; (0, _react.useEffect)(function () { if (!targetRef) { return; } var trapConfig = { clickOutsideDeactivates: true, escapeDeactivates: true, initialFocus: targetRef, fallbackFocus: targetRef, returnFocusOnDeactivate: true }; var focusTrap = (0, _focusTrap.default)(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]); };