UNPKG

@junte/ui

Version:

Quality Angular UI components kit

136 lines 14.4 kB
import { __decorate, __metadata } from "tslib"; import { Directive, ElementRef, EventEmitter, HostListener, Input, NgZone, OnDestroy, OnInit, Output, Renderer2 } from '@angular/core'; import { filter, takeWhile } from 'rxjs/operators'; import { Triggers } from '../../core/enums/triggers'; import { PopoverOptions } from './popover.component'; import { PopoverInstance, PopoverService } from './popover.service'; var PopoverDirective = /** @class */ (function () { function PopoverDirective(popover, hostRef, renderer, zone) { this.popover = popover; this.hostRef = hostRef; this.renderer = renderer; this.zone = zone; this.destroyed = false; this.listeners = []; this.attached = new EventEmitter(); this.removed = new EventEmitter(); } Object.defineProperty(PopoverDirective.prototype, "instance", { get: function () { return this._instance; }, set: function (instance) { this._instance = instance; if (!instance) { this.removed.emit(); } else { this.attached.emit(instance); } }, enumerable: true, configurable: true }); Object.defineProperty(PopoverDirective.prototype, "__options__", { set: function (options) { this.options = new PopoverOptions(options); }, enumerable: true, configurable: true }); PopoverDirective.prototype.mouseEnter = function () { if (this.options.trigger === Triggers.hover) { this.show(); } }; PopoverDirective.prototype.click = function () { if (this.options.trigger === Triggers.click) { !this.instance ? this.show() : this.hide(); } }; PopoverDirective.prototype.ngOnInit = function () { var _this = this; this.popover.attached.pipe(takeWhile((function () { return !_this.destroyed; })), filter(function (target) { return !!_this.instance && target !== _this.hostRef; })).subscribe(function () { return _this.instance = null; }); this.zone.runOutsideAngular(function () { _this.listeners.push(_this.renderer.listen('document', 'mousemove', function (_a) { var path = _a.path; if (!!_this.instance && _this.options.trigger === Triggers.hover && !_this.picked(path)) { _this.hide(path); } })); _this.listeners.push(_this.renderer.listen('document', 'click', function (_a) { var path = _a.path; if (!!_this.instance && _this.options.trigger === Triggers.click && !_this.picked(path)) { _this.hide(path); } })); }); }; PopoverDirective.prototype.ngOnDestroy = function () { this.destroyed = true; if (!!this.instance) { this.instance.hide(); this.instance = null; } this.listeners.forEach(function (listener) { return listener(); }); }; PopoverDirective.prototype.picked = function (elements) { return elements.indexOf(this.hostRef.nativeElement) !== -1; }; PopoverDirective.prototype.show = function () { if ((this.options.content || this.options.contentTemplate) && !this.options.disabled) { this.instance = this.popover.show(this.hostRef, this.options); } }; PopoverDirective.prototype.hide = function (path) { if (path === void 0) { path = []; } if (!!this.instance && !this.instance.picked(path)) { this.instance.hide(); this.instance = null; } }; PopoverDirective.ctorParameters = function () { return [ { type: PopoverService }, { type: ElementRef }, { type: Renderer2 }, { type: NgZone } ]; }; __decorate([ Input('jntPopover'), __metadata("design:type", Object), __metadata("design:paramtypes", [Object]) ], PopoverDirective.prototype, "__options__", null); __decorate([ Output(), __metadata("design:type", Object) ], PopoverDirective.prototype, "attached", void 0); __decorate([ Output(), __metadata("design:type", Object) ], PopoverDirective.prototype, "removed", void 0); __decorate([ HostListener('mouseenter'), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", void 0) ], PopoverDirective.prototype, "mouseEnter", null); __decorate([ HostListener('click'), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", void 0) ], PopoverDirective.prototype, "click", null); PopoverDirective = __decorate([ Directive({ selector: '[jntPopover]', exportAs: 'jntPopover' }), __metadata("design:paramtypes", [PopoverService, ElementRef, Renderer2, NgZone]) ], PopoverDirective); return PopoverDirective; }()); export { PopoverDirective }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AanVudGUvdWkvIiwic291cmNlcyI6WyJsaWIvb3ZlcmxheXMvcG9wb3Zlci9wb3BvdmVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQU1wRTtJQTZDRSwwQkFBb0IsT0FBdUIsRUFDdkIsT0FBbUIsRUFDbkIsUUFBbUIsRUFDbkIsSUFBWTtRQUhaLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDbkIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBNUN4QixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGNBQVMsR0FBZSxFQUFFLENBQUM7UUFxQm5DLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztRQUcvQyxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQW9CN0IsQ0FBQztJQTFDRCxzQkFBSSxzQ0FBUTthQVNaO1lBQ0UsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3hCLENBQUM7YUFYRCxVQUFhLFFBQXlCO1lBQ3BDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1lBQzFC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QjtRQUo1QixTQUFTLENBQUM7WUFDVCxRQUFRLEVBQUUsY0FBYztZQUN4QixRQUFRLEVBQUUsWUFBWTtTQUN2QixDQUFDO3lDQThDNkIsY0FBYztZQUNkLFVBQVU7WUFDVCxTQUFTO1lBQ2IsTUFBTTtPQWhEckIsZ0JBQWdCLENBZ0c1QjtJQUFELHVCQUFDO0NBQUEsQUFoR0QsSUFnR0M7U0FoR1ksZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlV2hpbGUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUcmlnZ2VycyB9IGZyb20gJy4uLy4uL2NvcmUvZW51bXMvdHJpZ2dlcnMnO1xuaW1wb3J0IHsgUG9wb3Zlck9wdGlvbnMgfSBmcm9tICcuL3BvcG92ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFBvcG92ZXJJbnN0YW5jZSwgUG9wb3ZlclNlcnZpY2UgfSBmcm9tICcuL3BvcG92ZXIuc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tqbnRQb3BvdmVyXScsXG4gIGV4cG9ydEFzOiAnam50UG9wb3Zlcidcbn0pXG5leHBvcnQgY2xhc3MgUG9wb3ZlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBwcml2YXRlIG9wdGlvbnM6IFBvcG92ZXJPcHRpb25zO1xuICBwcml2YXRlIF9pbnN0YW5jZTogUG9wb3Zlckluc3RhbmNlO1xuICBwcml2YXRlIGRlc3Ryb3llZCA9IGZhbHNlO1xuICBwcml2YXRlIGxpc3RlbmVyczogRnVuY3Rpb25bXSA9IFtdO1xuXG4gIHNldCBpbnN0YW5jZShpbnN0YW5jZTogUG9wb3Zlckluc3RhbmNlKSB7XG4gICAgdGhpcy5faW5zdGFuY2UgPSBpbnN0YW5jZTtcbiAgICBpZiAoIWluc3RhbmNlKSB7XG4gICAgICB0aGlzLnJlbW92ZWQuZW1pdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmF0dGFjaGVkLmVtaXQoaW5zdGFuY2UpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBpbnN0YW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5faW5zdGFuY2U7XG4gIH1cblxuICBASW5wdXQoJ2pudFBvcG92ZXInKVxuICBzZXQgX19vcHRpb25zX18ob3B0aW9uczogUGFydGlhbDxQb3BvdmVyT3B0aW9ucz4pIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBuZXcgUG9wb3Zlck9wdGlvbnMob3B0aW9ucyk7XG4gIH1cblxuICBAT3V0cHV0KClcbiAgYXR0YWNoZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFBvcG92ZXJJbnN0YW5jZT4oKTtcblxuICBAT3V0cHV0KClcbiAgcmVtb3ZlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJylcbiAgbW91c2VFbnRlcigpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zLnRyaWdnZXIgPT09IFRyaWdnZXJzLmhvdmVyKSB7XG4gICAgICB0aGlzLnNob3coKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIGNsaWNrKCkge1xuICAgIGlmICh0aGlzLm9wdGlvbnMudHJpZ2dlciA9PT0gVHJpZ2dlcnMuY2xpY2spIHtcbiAgICAgICF0aGlzLmluc3RhbmNlID8gdGhpcy5zaG93KCkgOiB0aGlzLmhpZGUoKTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBvcG92ZXI6IFBvcG92ZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGhvc3RSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgICAgICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUpIHtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucG9wb3Zlci5hdHRhY2hlZC5waXBlKFxuICAgICAgdGFrZVdoaWxlKCgoKSA9PiAhdGhpcy5kZXN0cm95ZWQpKSxcbiAgICAgIGZpbHRlcih0YXJnZXQgPT4gISF0aGlzLmluc3RhbmNlICYmIHRhcmdldCAhPT0gdGhpcy5ob3N0UmVmKVxuICAgICkuc3Vic2NyaWJlKCgpID0+IHRoaXMuaW5zdGFuY2UgPSBudWxsKTtcblxuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLmxpc3RlbmVycy5wdXNoKHRoaXMucmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdtb3VzZW1vdmUnLCAoe3BhdGh9KSA9PiB7XG4gICAgICAgIGlmICghIXRoaXMuaW5zdGFuY2UgJiYgdGhpcy5vcHRpb25zLnRyaWdnZXIgPT09IFRyaWdnZXJzLmhvdmVyICYmICF0aGlzLnBpY2tlZChwYXRoKSkge1xuICAgICAgICAgIHRoaXMuaGlkZShwYXRoKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgICAgdGhpcy5saXN0ZW5lcnMucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAnY2xpY2snLCAoe3BhdGh9KSA9PiB7XG4gICAgICAgIGlmICghIXRoaXMuaW5zdGFuY2UgJiYgdGhpcy5vcHRpb25zLnRyaWdnZXIgPT09IFRyaWdnZXJzLmNsaWNrICYmICF0aGlzLnBpY2tlZChwYXRoKSkge1xuICAgICAgICAgIHRoaXMuaGlkZShwYXRoKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQgPSB0cnVlO1xuICAgIGlmICghIXRoaXMuaW5zdGFuY2UpIHtcbiAgICAgIHRoaXMuaW5zdGFuY2UuaGlkZSgpO1xuICAgICAgdGhpcy5pbnN0YW5jZSA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMubGlzdGVuZXJzLmZvckVhY2gobGlzdGVuZXIgPT4gbGlzdGVuZXIoKSk7XG4gIH1cblxuICBwcml2YXRlIHBpY2tlZChlbGVtZW50czogSFRNTEVsZW1lbnRbXSkge1xuICAgIHJldHVybiBlbGVtZW50cy5pbmRleE9mKHRoaXMuaG9zdFJlZi5uYXRpdmVFbGVtZW50KSAhPT0gLTE7XG4gIH1cblxuICBwcml2YXRlIHNob3coKSB7XG4gICAgaWYgKCh0aGlzLm9wdGlvbnMuY29udGVudCB8fCB0aGlzLm9wdGlvbnMuY29udGVudFRlbXBsYXRlKSAmJiAhdGhpcy5vcHRpb25zLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmluc3RhbmNlID0gdGhpcy5wb3BvdmVyLnNob3codGhpcy5ob3N0UmVmLCB0aGlzLm9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGlkZShwYXRoOiBIVE1MRWxlbWVudFtdID0gW10pIHtcbiAgICBpZiAoISF0aGlzLmluc3RhbmNlICYmICF0aGlzLmluc3RhbmNlLnBpY2tlZChwYXRoKSkge1xuICAgICAgdGhpcy5pbnN0YW5jZS5oaWRlKCk7XG4gICAgICB0aGlzLmluc3RhbmNlID0gbnVsbDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==