@atlaskit/editor-plugin-mentions
Version:
Mentions plugin for @atlaskit/editor-core
44 lines (41 loc) • 1.24 kB
JavaScript
;
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]);
};