@atlaskit/drawer
Version:
A drawer is a panel that slides in from the left side of the screen.
44 lines (43 loc) • 1.74 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _reactFocusLock = _interopRequireDefault(require("react-focus-lock"));
/**
* __Focus lock__
*
* Thin wrapper around react-focus-lock.
*/
var FocusLock = function FocusLock(_ref) {
var _ref$isFocusLockEnabl = _ref.isFocusLockEnabled,
isFocusLockEnabled = _ref$isFocusLockEnabl === void 0 ? true : _ref$isFocusLockEnabl,
_ref$autoFocusFirstEl = _ref.autoFocusFirstElem,
autoFocusFirstElem = _ref$autoFocusFirstEl === void 0 ? true : _ref$autoFocusFirstEl,
_ref$shouldReturnFocu = _ref.shouldReturnFocus,
shouldReturnFocus = _ref$shouldReturnFocu === void 0 ? true : _ref$shouldReturnFocu,
children = _ref.children;
var getFocusTarget = function getFocusTarget() {
if (typeof shouldReturnFocus === 'boolean') {
return shouldReturnFocus;
}
return false;
};
var onDeactivation = function onDeactivation() {
if (typeof shouldReturnFocus !== 'boolean') {
window.setTimeout(function () {
var _shouldReturnFocus$cu;
shouldReturnFocus === null || shouldReturnFocus === void 0 || (_shouldReturnFocus$cu = shouldReturnFocus.current) === null || _shouldReturnFocus$cu === void 0 || _shouldReturnFocus$cu.focus();
}, 0);
}
};
return /*#__PURE__*/_react.default.createElement(_reactFocusLock.default, {
disabled: !isFocusLockEnabled,
autoFocus: autoFocusFirstElem,
returnFocus: getFocusTarget(),
onDeactivation: onDeactivation
}, children);
};
var _default = exports.default = FocusLock;