@lunaeme/circe-click-outside
Version:
Circe :: Angular Click Outside Directive
45 lines • 4.38 kB
JavaScript
import { __decorate } from "tslib";
import { Directive, ElementRef, EventEmitter, HostListener, Input, Output } from '@angular/core';
import { EventsService } from '@lunaeme/circe-core';
let ClickOutsideDirective = class ClickOutsideDirective {
constructor(_ev, _el) {
this._ev = _ev;
this._el = _el;
this.apply = true;
this.exceptions = [];
this.clickOutside = new EventEmitter();
this._host = this._el.nativeElement;
}
onMouseEnter(event) {
if (this.apply) {
this._ev.preventNoNeededEvent(event);
const _eventTarget = event.target;
if (!this._host.contains(_eventTarget) && (!this.exceptions.includes(_eventTarget.id))) {
this.clickOutside.emit();
}
}
}
};
ClickOutsideDirective.ctorParameters = () => [
{ type: EventsService },
{ type: ElementRef }
];
__decorate([
Input()
], ClickOutsideDirective.prototype, "apply", void 0);
__decorate([
Input()
], ClickOutsideDirective.prototype, "exceptions", void 0);
__decorate([
Output()
], ClickOutsideDirective.prototype, "clickOutside", void 0);
__decorate([
HostListener('document:click', ['$event'])
], ClickOutsideDirective.prototype, "onMouseEnter", null);
ClickOutsideDirective = __decorate([
Directive({
selector: '[ccClickOutside]'
})
], ClickOutsideDirective);
export { ClickOutsideDirective };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2stb3V0c2lkZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbHVuYWVtZS9jaXJjZS1jbGljay1vdXRzaWRlLyIsInNvdXJjZXMiOlsibGliL2NsaWNrLW91dHNpZGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBS3BELElBQWEscUJBQXFCLEdBQWxDLE1BQWEscUJBQXFCO0lBT2hDLFlBQ1UsR0FBa0IsRUFDbEIsR0FBNEI7UUFENUIsUUFBRyxHQUFILEdBQUcsQ0FBZTtRQUNsQixRQUFHLEdBQUgsR0FBRyxDQUF5QjtRQVI3QixVQUFLLEdBQVksSUFBSSxDQUFDO1FBQ3RCLGVBQVUsR0FBa0IsRUFBRSxDQUFDO1FBQzlCLGlCQUFZLEdBQTRCLElBQUksWUFBWSxFQUFFLENBQUM7UUFRbkUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQztJQUN0QyxDQUFDO0lBRTJDLFlBQVksQ0FBQyxLQUFZO1FBQ25FLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNkLElBQUksQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckMsTUFBTSxZQUFZLEdBQWdCLEtBQUssQ0FBQyxNQUFxQixDQUFDO1lBQzlELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3RGLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDMUI7U0FDRjtJQUNILENBQUM7Q0FDRixDQUFBOztZQWZnQixhQUFhO1lBQ2IsVUFBVTs7QUFSaEI7SUFBUixLQUFLLEVBQUU7b0RBQXVCO0FBQ3RCO0lBQVIsS0FBSyxFQUFFO3lEQUFnQztBQUM5QjtJQUFULE1BQU0sRUFBRTsyREFBNEQ7QUFXekI7SUFBM0MsWUFBWSxDQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7eURBUTFDO0FBdEJVLHFCQUFxQjtJQUhqQyxTQUFTLENBQUM7UUFDVCxRQUFRLEVBQUUsa0JBQWtCO0tBQzdCLENBQUM7R0FDVyxxQkFBcUIsQ0F1QmpDO1NBdkJZLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEV2ZW50c1NlcnZpY2UgfSBmcm9tICdAbHVuYWVtZS9jaXJjZS1jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2NjQ2xpY2tPdXRzaWRlXSdcbn0pXG5leHBvcnQgY2xhc3MgQ2xpY2tPdXRzaWRlRGlyZWN0aXZlIHtcbiAgQElucHV0KCkgYXBwbHk6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBleGNlcHRpb25zOiBBcnJheTxzdHJpbmc+ID0gW107XG4gIEBPdXRwdXQoKSBjbGlja091dHNpZGU6IEV2ZW50RW1pdHRlcjx1bmRlZmluZWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2hvc3Q6IEhUTUxFbGVtZW50O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2V2OiBFdmVudHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgX2VsOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICApIHtcbiAgICB0aGlzLl9ob3N0ID0gdGhpcy5fZWwubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSkgb25Nb3VzZUVudGVyKGV2ZW50OiBFdmVudCkge1xuICAgIGlmICh0aGlzLmFwcGx5KSB7XG4gICAgICB0aGlzLl9ldi5wcmV2ZW50Tm9OZWVkZWRFdmVudChldmVudCk7XG4gICAgICBjb25zdCBfZXZlbnRUYXJnZXQ6IEhUTUxFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgaWYgKCF0aGlzLl9ob3N0LmNvbnRhaW5zKF9ldmVudFRhcmdldCkgJiYgKCF0aGlzLmV4Y2VwdGlvbnMuaW5jbHVkZXMoX2V2ZW50VGFyZ2V0LmlkKSkpIHtcbiAgICAgICAgdGhpcy5jbGlja091dHNpZGUuZW1pdCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19