UNPKG

@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
"use strict"; 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;