@tusharghoshbd/ngx-charts
Version:
Ngx charts is an angular library for presenting data in chart.
166 lines • 15.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Directive, Input, ElementRef, HostListener, Renderer2 } from '@angular/core';
var TooltipDirective = /** @class */ (function () {
function TooltipDirective(el, renderer) {
this.el = el;
this.renderer = renderer;
this.offset = 10;
}
/**
* @return {?}
*/
TooltipDirective.prototype.onMouseEnter = /**
* @return {?}
*/
function () {
// console.log("onMouseEnter")
if (!this.tooltip) {
this.show();
}
};
/**
* @return {?}
*/
TooltipDirective.prototype.onMouseLeave = /**
* @return {?}
*/
function () {
// console.log("onMouseLeave")
if (this.tooltip) {
this.hide();
}
};
/**
* @return {?}
*/
TooltipDirective.prototype.show = /**
* @return {?}
*/
function () {
this.create();
this.setPosition();
this.renderer.addClass(this.tooltip, 'ng-tooltip-show');
};
/**
* @return {?}
*/
TooltipDirective.prototype.hide = /**
* @return {?}
*/
function () {
var _this = this;
this.renderer.removeClass(this.tooltip, 'ng-tooltip-show');
window.setTimeout((/**
* @return {?}
*/
function () {
_this.renderer.removeChild(document.body, _this.tooltip);
_this.tooltip = null;
}), this.delay);
};
/**
* @return {?}
*/
TooltipDirective.prototype.create = /**
* @return {?}
*/
function () {
this.tooltip = this.renderer.createElement('span');
this.renderer.appendChild(this.tooltip, this.renderer.createText(this.tooltipTitle) // textNode
);
this.renderer.appendChild(document.body, this.tooltip);
// this.renderer.appendChild(this.el.nativeElement, this.tooltip);
this.renderer.addClass(this.tooltip, 'ng-tooltip');
this.renderer.addClass(this.tooltip, "ng-tooltip-" + this.placement);
this.renderer.setStyle(this.tooltip, 'border', "2px solid " + this.tooltipColor);
// delay 설정
this.renderer.setStyle(this.tooltip, '-webkit-transition', "opacity " + this.delay + "ms");
this.renderer.setStyle(this.tooltip, '-moz-transition', "opacity " + this.delay + "ms");
this.renderer.setStyle(this.tooltip, '-o-transition', "opacity " + this.delay + "ms");
this.renderer.setStyle(this.tooltip, 'transition', "opacity " + this.delay + "ms");
};
/**
* @return {?}
*/
TooltipDirective.prototype.setPosition = /**
* @return {?}
*/
function () {
/** @type {?} */
var hostPos = this.el.nativeElement.getBoundingClientRect();
/** @type {?} */
var tooltipPos = this.tooltip.getBoundingClientRect();
/** @type {?} */
var scrollPos = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
/** @type {?} */
var top;
/** @type {?} */
var left;
if (this.placement === 'top') {
top = hostPos.top - tooltipPos.height - this.offset;
left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;
}
if (this.placement === 'bottom') {
top = hostPos.bottom + this.offset;
left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;
}
if (this.placement === 'left') {
top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;
left = hostPos.left - tooltipPos.width - this.offset;
}
if (this.placement === 'right') {
top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;
left = hostPos.right + this.offset;
}
this.renderer.setStyle(this.tooltip, 'top', top + scrollPos + "px");
this.renderer.setStyle(this.tooltip, 'left', left + "px");
};
TooltipDirective.decorators = [
{ type: Directive, args: [{
selector: '[tooltip]'
},] }
];
/** @nocollapse */
TooltipDirective.ctorParameters = function () { return [
{ type: ElementRef },
{ type: Renderer2 }
]; };
TooltipDirective.propDecorators = {
tooltipTitle: [{ type: Input, args: ['tooltip',] }],
placement: [{ type: Input }],
delay: [{ type: Input }],
tooltipColor: [{ type: Input }],
onMouseEnter: [{ type: HostListener, args: ['mouseenter',] }],
onMouseLeave: [{ type: HostListener, args: ['mouseleave',] }]
};
return TooltipDirective;
}());
export { TooltipDirective };
if (false) {
/** @type {?} */
TooltipDirective.prototype.tooltipTitle;
/** @type {?} */
TooltipDirective.prototype.placement;
/** @type {?} */
TooltipDirective.prototype.delay;
/** @type {?} */
TooltipDirective.prototype.tooltipColor;
/** @type {?} */
TooltipDirective.prototype.tooltip;
/** @type {?} */
TooltipDirective.prototype.offset;
/**
* @type {?}
* @private
*/
TooltipDirective.prototype.el;
/**
* @type {?}
* @private
*/
TooltipDirective.prototype.renderer;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdHVzaGFyZ2hvc2hiZC9uZ3gtY2hhcnRzLyIsInNvdXJjZXMiOlsibGliL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXRGO0lBV0ksMEJBQW9CLEVBQWMsRUFBVSxRQUFtQjtRQUEzQyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUYvRCxXQUFNLEdBQUMsRUFBRSxDQUFDO0lBRXlELENBQUM7Ozs7SUFFeEMsdUNBQVk7OztJQUF4QztRQUNJLDhCQUE4QjtRQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUFFO0lBQ3ZDLENBQUM7Ozs7SUFFMkIsdUNBQVk7OztJQUF4QztRQUNJLDhCQUE4QjtRQUM5QixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7U0FBRTtJQUN0QyxDQUFDOzs7O0lBRUQsK0JBQUk7OztJQUFKO1FBQ0ksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2QsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUM1RCxDQUFDOzs7O0lBRUQsK0JBQUk7OztJQUFKO1FBQUEsaUJBTUM7UUFMRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDM0QsTUFBTSxDQUFDLFVBQVU7OztRQUFDO1lBQ2QsS0FB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Q3ZCLHdDQUE4Qjs7SUFDOUIsbUNBQXFCOztJQUNyQixrQ0FBVTs7Ozs7SUFFRSw4QkFBc0I7Ozs7O0lBQUUsb0NBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdbdG9vbHRpcF0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUb29sdGlwRGlyZWN0aXZlIHtcclxuICAgIEBJbnB1dCgndG9vbHRpcCcpIHRvb2x0aXBUaXRsZTogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgcGxhY2VtZW50OiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBkZWxheTogbnVtYmVyO1xyXG4gICAgQElucHV0KCkgdG9vbHRpcENvbG9yOiBudW1iZXI7XHJcbiAgICB0b29sdGlwOiBIVE1MRWxlbWVudDtcclxuICAgIG9mZnNldD0xMDtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHsgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlZW50ZXInKSBvbk1vdXNlRW50ZXIoKSB7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJvbk1vdXNlRW50ZXJcIilcclxuICAgICAgICBpZiAoIXRoaXMudG9vbHRpcCkgeyB0aGlzLnNob3coKTsgfVxyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnKSBvbk1vdXNlTGVhdmUoKSB7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJvbk1vdXNlTGVhdmVcIilcclxuICAgICAgICBpZiAodGhpcy50b29sdGlwKSB7IHRoaXMuaGlkZSgpOyB9XHJcbiAgICB9XHJcblxyXG4gICAgc2hvdygpIHtcclxuICAgICAgICB0aGlzLmNyZWF0ZSgpO1xyXG4gICAgICAgIHRoaXMuc2V0UG9zaXRpb24oKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMudG9vbHRpcCwgJ25nLXRvb2x0aXAtc2hvdycpO1xyXG4gICAgfVxyXG5cclxuICAgIGhpZGUoKSB7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLnRvb2x0aXAsICduZy10b29sdGlwLXNob3cnKTtcclxuICAgICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuYm9keSwgdGhpcy50b29sdGlwKTtcclxuICAgICAgICAgICAgdGhpcy50b29sdGlwPW51bGw7XHJcbiAgICAgICAgfSwgdGhpcy5kZWxheSk7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlKCkge1xyXG4gICAgICAgIHRoaXMudG9vbHRpcD10aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcclxuXHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChcclxuICAgICAgICAgICAgdGhpcy50b29sdGlwLFxyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmNyZWF0ZVRleHQodGhpcy50b29sdGlwVGl0bGUpIC8vIHRleHROb2RlXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChkb2N1bWVudC5ib2R5LCB0aGlzLnRvb2x0aXApO1xyXG4gICAgICAgIC8vIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5lbC5uYXRpdmVFbGVtZW50LCB0aGlzLnRvb2x0aXApO1xyXG5cclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMudG9vbHRpcCwgJ25nLXRvb2x0aXAnKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMudG9vbHRpcCwgYG5nLXRvb2x0aXAtJHt0aGlzLnBsYWNlbWVudH1gKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudG9vbHRpcCwgJ2JvcmRlcicsIFwiMnB4IHNvbGlkIFwiK3RoaXMudG9vbHRpcENvbG9yKTtcclxuICAgICAgICAvLyBkZWxheSDshKTsoJVcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudG9vbHRpcCwgJy13ZWJraXQtdHJhbnNpdGlvbicsIGBvcGFjaXR5ICR7dGhpcy5kZWxheX1tc2ApO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy50b29sdGlwLCAnLW1vei10cmFuc2l0aW9uJywgYG9wYWNpdHkgJHt0aGlzLmRlbGF5fW1zYCk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRvb2x0aXAsICctby10cmFuc2l0aW9uJywgYG9wYWNpdHkgJHt0aGlzLmRlbGF5fW1zYCk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRvb2x0aXAsICd0cmFuc2l0aW9uJywgYG9wYWNpdHkgJHt0aGlzLmRlbGF5fW1zYCk7XHJcbiAgICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgc2V0UG9zaXRpb24oKSB7XHJcbiAgICAgICAgY29uc3QgaG9zdFBvcz10aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblxyXG4gICAgICAgIGNvbnN0IHRvb2x0aXBQb3M9dGhpcy50b29sdGlwLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cclxuICAgICAgICBjb25zdCBzY3JvbGxQb3M9d2luZG93LnBhZ2VZT2Zmc2V0fHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wfHxkb2N1bWVudC5ib2R5LnNjcm9sbFRvcHx8MDtcclxuXHJcbiAgICAgICAgbGV0IHRvcCwgbGVmdDtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMucGxhY2VtZW50PT09J3RvcCcpIHtcclxuICAgICAgICAgICAgdG9wPWhvc3RQb3MudG9wLXRvb2x0aXBQb3MuaGVpZ2h0LXRoaXMub2Zmc2V0O1xyXG4gICAgICAgICAgICBsZWZ0PWhvc3RQb3MubGVmdCsoaG9zdFBvcy53aWR0aC10b29sdGlwUG9zLndpZHRoKS8yO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMucGxhY2VtZW50PT09J2JvdHRvbScpIHtcclxuICAgICAgICAgICAgdG9wPWhvc3RQb3MuYm90dG9tK3RoaXMub2Zmc2V0O1xyXG4gICAgICAgICAgICBsZWZ0PWhvc3RQb3MubGVmdCsoaG9zdFBvcy53aWR0aC10b29sdGlwUG9zLndpZHRoKS8yO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMucGxhY2VtZW50PT09J2xlZnQnKSB7XHJcbiAgICAgICAgICAgIHRvcD1ob3N0UG9zLnRvcCsoaG9zdFBvcy5oZWlnaHQtdG9vbHRpcFBvcy5oZWlnaHQpLzI7XHJcbiAgICAgICAgICAgIGxlZnQ9aG9zdFBvcy5sZWZ0LXRvb2x0aXBQb3Mud2lkdGgtdGhpcy5vZmZzZXQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5wbGFjZW1lbnQ9PT0ncmlnaHQnKSB7XHJcbiAgICAgICAgICAgIHRvcD1ob3N0UG9zLnRvcCsoaG9zdFBvcy5oZWlnaHQtdG9vbHRpcFBvcy5oZWlnaHQpLzI7XHJcbiAgICAgICAgICAgIGxlZnQ9aG9zdFBvcy5yaWdodCt0aGlzLm9mZnNldDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy50b29sdGlwLCAndG9wJywgYCR7dG9wK3Njcm9sbFBvc31weGApO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy50b29sdGlwLCAnbGVmdCcsIGAke2xlZnR9cHhgKTtcclxuICAgIH1cclxufVxyXG4iXX0=