@atlaskit/spotlight
Version:
A spotlight introduces users to points of interest, from focused messages to multi-step tours.
37 lines (36 loc) • 1.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useOnClickOutside = void 0;
var _react = require("react");
var _bindEventListener = require("bind-event-listener");
var _browserApis = require("@atlaskit/browser-apis");
var _context = require("../../controllers/context");
var useOnClickOutside = exports.useOnClickOutside = function useOnClickOutside(onClickOutside) {
var _useContext = (0, _react.useContext)(_context.SpotlightContext),
card = _useContext.card;
var ref = card.ref;
(0, _react.useEffect)(function () {
var doc = (0, _browserApis.getDocument)();
if (!doc) {
return;
}
var unbindMouseUp = (0, _bindEventListener.bind)(doc, {
type: 'mouseup',
listener: function listener(event) {
if (!ref || !ref.current) {
return;
}
var target = event.target instanceof Node ? event.target : null;
if (ref.current.contains(target)) {
return;
}
onClickOutside(event);
}
});
return function () {
unbindMouseUp();
};
}, [onClickOutside, ref]);
};