@lunaeme/circe-click-outside
Version:
Circe :: Angular Click Outside Directive
46 lines • 4.57 kB
JavaScript
import { __decorate } from "tslib";
import { Directive, ElementRef, EventEmitter, HostListener, Input, Output } from '@angular/core';
import { EventsService } 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;
}());
export { ClickOutsideDirective };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2stb3V0c2lkZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbHVuYWVtZS9jaXJjZS1jbGljay1vdXRzaWRlLyIsInNvdXJjZXMiOlsibGliL2NsaWNrLW91dHNpZGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBS3BEO0lBT0UsK0JBQ1UsR0FBa0IsRUFDbEIsR0FBNEI7UUFENUIsUUFBRyxHQUFILEdBQUcsQ0FBZTtRQUNsQixRQUFHLEdBQUgsR0FBRyxDQUF5QjtRQVI3QixVQUFLLEdBQVksSUFBSSxDQUFDO1FBQ3RCLGVBQVUsR0FBa0IsRUFBRSxDQUFDO1FBQzlCLGlCQUFZLEdBQTRCLElBQUksWUFBWSxFQUFFLENBQUM7UUFRbkUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQztJQUN0QyxDQUFDO0lBRTJDLDRDQUFZLEdBQVosVUFBYSxLQUFZO1FBQ25FLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNkLElBQUksQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckMsSUFBTSxZQUFZLEdBQWdCLEtBQUssQ0FBQyxNQUFxQixDQUFDO1lBQzlELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3RGLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDMUI7U0FDRjtJQUNILENBQUM7O2dCQWRjLGFBQWE7Z0JBQ2IsVUFBVTs7SUFSaEI7UUFBUixLQUFLLEVBQUU7d0RBQXVCO0lBQ3RCO1FBQVIsS0FBSyxFQUFFOzZEQUFnQztJQUM5QjtRQUFULE1BQU0sRUFBRTsrREFBNEQ7SUFXekI7UUFBM0MsWUFBWSxDQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7NkRBUTFDO0lBdEJVLHFCQUFxQjtRQUhqQyxTQUFTLENBQUM7WUFDVCxRQUFRLEVBQUUsa0JBQWtCO1NBQzdCLENBQUM7T0FDVyxxQkFBcUIsQ0F1QmpDO0lBQUQsNEJBQUM7Q0FBQSxBQXZCRCxJQXVCQztTQXZCWSxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFdmVudHNTZXJ2aWNlIH0gZnJvbSAnQGx1bmFlbWUvY2lyY2UtY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjY0NsaWNrT3V0c2lkZV0nXG59KVxuZXhwb3J0IGNsYXNzIENsaWNrT3V0c2lkZURpcmVjdGl2ZSB7XG4gIEBJbnB1dCgpIGFwcGx5OiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgZXhjZXB0aW9uczogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICBAT3V0cHV0KCkgY2xpY2tPdXRzaWRlOiBFdmVudEVtaXR0ZXI8dW5kZWZpbmVkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9ob3N0OiBIVE1MRWxlbWVudDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9ldjogRXZlbnRzU2VydmljZSxcbiAgICBwcml2YXRlIF9lbDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgKSB7XG4gICAgdGhpcy5faG9zdCA9IHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pIG9uTW91c2VFbnRlcihldmVudDogRXZlbnQpIHtcbiAgICBpZiAodGhpcy5hcHBseSkge1xuICAgICAgdGhpcy5fZXYucHJldmVudE5vTmVlZGVkRXZlbnQoZXZlbnQpO1xuICAgICAgY29uc3QgX2V2ZW50VGFyZ2V0OiBIVE1MRWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGlmICghdGhpcy5faG9zdC5jb250YWlucyhfZXZlbnRUYXJnZXQpICYmICghdGhpcy5leGNlcHRpb25zLmluY2x1ZGVzKF9ldmVudFRhcmdldC5pZCkpKSB7XG4gICAgICAgIHRoaXMuY2xpY2tPdXRzaWRlLmVtaXQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==