@utilityjs/use-on-outside-click
Version:
A React hook that invokes a callback when user clicks outside of the target element.
26 lines (25 loc) • 1.15 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var use_get_latest_1 = __importDefault(require("@utilityjs/use-get-latest"));
var use_event_listener_1 = __importDefault(require("@utilityjs/use-event-listener"));
var useOnOutsideClick = function (target, callback, extendCondition) {
if (extendCondition === void 0) { extendCondition = function () { return true; }; }
var cachedCallback = (0, use_get_latest_1.default)(callback);
(0, use_event_listener_1.default)({
target: typeof window === "undefined" ? null : document,
eventType: "click",
handler: function (event) {
var element = target && "current" in target ? target.current : target;
if (element !== null &&
element !== event.target &&
!element.contains(event.target) &&
extendCondition(event)) {
cachedCallback.current(event);
}
}
});
};
exports.default = useOnOutsideClick;