@pnp/spfx-controls-react
Version:
Reusable React controls for SharePoint Framework solutions
25 lines • 1.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useOnClickOutside = void 0;
/* eslint-disable @typescript-eslint/explicit-function-return-type */
/* eslint-disable @typescript-eslint/no-explicit-any */
var react_1 = require("react");
var useOnClickOutside = function (active, ref, callback) {
var handleClickOutside = (0, react_1.useCallback)(function (event) {
if (ref.current && !ref.current.contains(event.target) && active) {
callback();
}
}, [ref, callback, active]);
(0, react_1.useEffect)(function () {
// Bind the event listener
document.addEventListener("mousedown", handleClickOutside);
document.addEventListener("wheel", handleClickOutside);
return function () {
// Unbind the event listener on clean up
document.removeEventListener("mousedown", handleClickOutside);
document.removeEventListener("wheel", handleClickOutside);
};
}, [ref]);
};
exports.useOnClickOutside = useOnClickOutside;
//# sourceMappingURL=useOnClickOutside.js.map