UNPKG

fabric8-planner

Version:
46 lines 1.76 kB
import { Directive, ElementRef, EventEmitter, HostListener, Input, Output } from '@angular/core'; var ClickOutDirective = /** @class */ (function () { function ClickOutDirective(element) { this.element = element; this.clickOut = new EventEmitter(); this.isExcluded = false; } ClickOutDirective.prototype.onClick = function (event, target) { if (!target) { return; } var clickedInside = this.element.nativeElement.contains(target); if (this.exclude) { this.isExcluded = this.excludeCheck(target); } if (!clickedInside && !this.isExcluded) { this.clickOut.emit(event); } }; ClickOutDirective.prototype.excludeCheck = function (target) { var excludeElements = Array.from(document.querySelectorAll(this.exclude)); for (var _i = 0, excludeElements_1 = excludeElements; _i < excludeElements_1.length; _i++) { var element = excludeElements_1[_i]; if (element.contains(target)) { return true; } } }; ClickOutDirective.decorators = [ { type: Directive, args: [{ selector: '[clickOut]' },] }, ]; /** @nocollapse */ ClickOutDirective.ctorParameters = function () { return [ { type: ElementRef, }, ]; }; ClickOutDirective.propDecorators = { 'exclude': [{ type: Input, args: ['exclude',] },], 'clickOut': [{ type: Output, args: ['clickOut',] },], 'onClick': [{ type: HostListener, args: ['document:click', ['$event', '$event.target'],] },], }; return ClickOutDirective; }()); export { ClickOutDirective }; //# sourceMappingURL=clickout.directive.js.map