@lunaeme/circe-click-outside
Version:
Circe :: Angular Click Outside Directive
70 lines (64 loc) • 2.21 kB
JavaScript
import { __decorate } from 'tslib';
import { EventEmitter, ElementRef, Input, Output, HostListener, Directive, NgModule } from '@angular/core';
import { EventsService, EventsModule } from '@lunaeme/circe-core';
var ClickOutsideDirective = /** @class */ (function () {
function ClickOutsideDirective(_ev, _el) {
this._ev = _ev;
this._el = _el;
this.apply = true;
this.exceptions = [];
this.clickOutside = new EventEmitter();
this._host = this._el.nativeElement;
}
ClickOutsideDirective.prototype.onMouseEnter = function (event) {
if (this.apply) {
this._ev.preventNoNeededEvent(event);
var _eventTarget = event.target;
if (!this._host.contains(_eventTarget) && (!this.exceptions.includes(_eventTarget.id))) {
this.clickOutside.emit();
}
}
};
ClickOutsideDirective.ctorParameters = function () { return [
{ 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);
return ClickOutsideDirective;
}());
var ClickOutsideModule = /** @class */ (function () {
function ClickOutsideModule() {
}
ClickOutsideModule = __decorate([
NgModule({
exports: [ClickOutsideDirective],
declarations: [ClickOutsideDirective],
imports: [EventsModule.forChild()]
})
], ClickOutsideModule);
return ClickOutsideModule;
}());
/*
* Public API Surface of click-outside
*/
/**
* Generated bundle index. Do not edit.
*/
export { ClickOutsideDirective, ClickOutsideModule };
//# sourceMappingURL=lunaeme-circe-click-outside.js.map