@dev-tcloud/tcloud-ui 0.0.97 → 0.0.98

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,52 +4,46 @@ export class TCloudUiTooltipDirective {
4
4
  constructor(el, renderer) {
5
5
  this.el = el;
6
6
  this.renderer = renderer;
7
- this._direction = 'top';
8
- // main
9
- this.el_height = 0;
10
- this.el_width = 0;
11
- this.el_center = 0;
12
- this.el_position = 0;
13
- // tooltip
14
- this.target_height = 0;
15
- this.target_width = 0;
16
- this.target_center = 0;
17
- this.ID = '';
18
7
  this.info_text = '';
8
+ this._direction = 'top';
19
9
  }
20
- onMouseOver() {
21
- if (this.getElement()) {
22
- this.renderer.addClass(this.el.nativeElement, 'main-tooltip');
23
- const el = this.getElement();
24
- el.style.display = 'inline';
25
- setTimeout(() => {
26
- switch (this._direction) {
27
- case 'top':
28
- this.to_top(el);
29
- break;
30
- case 'bottom':
31
- this.to_bottom(el);
32
- break;
33
- case 'left':
34
- this.to_left(el);
35
- break;
36
- case 'right':
37
- this.to_right(el);
38
- break;
39
- }
40
- });
10
+ onMouseOver(event) {
11
+ const scrollTop = window.scrollY || window.pageYOffset;
12
+ const tooltip = this.renderer.createElement('div');
13
+ const rect = this.el.nativeElement?.getBoundingClientRect();
14
+ const direction = this.el.nativeElement?.attributes['ng-reflect--t-cdirection']?.value || 'top';
15
+ const el_position_x = (rect?.left) ? parseInt(rect?.left) : 0;
16
+ const el_position_y = (rect?.top) ? parseInt(rect?.top + scrollTop) : 0;
17
+ let width = 0;
18
+ let height = 0;
19
+ if (event && event.target) {
20
+ const _event = event.target;
21
+ height = _event.offsetHeight;
22
+ width = _event.offsetWidth;
41
23
  }
24
+ const top = `${(el_position_y - ((height / 2) + 10))}px`;
25
+ const left = `${el_position_x + (width / 2)}px`;
26
+ this.renderer.setStyle(tooltip, 'top', '0px');
27
+ this.renderer.setStyle(tooltip, 'left', '0px');
28
+ this.renderer.setStyle(tooltip, 'opacity', '0');
29
+ this.renderer.addClass(tooltip, 'tc-directive-tooltip');
30
+ this.renderer.addClass(tooltip, `tc-directive-tooltip-${direction}`);
31
+ const id = this.generateID();
32
+ this.renderer.setAttribute(tooltip, 'id', id);
33
+ const textNode = this.renderer.createText(`${this.info_text}`);
34
+ this.renderer.appendChild(tooltip, textNode);
35
+ this.renderer.appendChild(document.body, tooltip);
36
+ this.start_tooltip(id, height, width, el_position_x, el_position_y, direction);
42
37
  }
43
- onMouseOut() {
44
- if (this.getElement()) {
45
- const el = this.getElement();
46
- el.style.display = 'none';
47
- this.renderer.removeClass(this.el.nativeElement, 'main-tooltip');
38
+ onMouseOut(event) {
39
+ const customDiv = document.querySelector('.tc-directive-tooltip');
40
+ if (customDiv) {
41
+ customDiv.remove();
48
42
  }
49
43
  }
50
44
  set TCtooltip(tooltip) {
51
45
  if (tooltip) {
52
- this.check(tooltip);
46
+ this.info_text = tooltip;
53
47
  }
54
48
  }
55
49
  set TCdirection(direction) {
@@ -57,51 +51,49 @@ export class TCloudUiTooltipDirective {
57
51
  this._direction = direction;
58
52
  }
59
53
  }
60
- ngOnInit() {
61
- }
62
- generateID() {
63
- return `tc-tooltip-${Math.floor(Math.random() * Math.floor(Math.random() * Date.now()))}`;
64
- }
65
- getElement() {
66
- return document.getElementById(this.ID) || undefined;
67
- }
68
- check(tooltip) {
69
- this.ID = this.generateID();
70
- this.info_text = tooltip;
71
- let el = this.el.nativeElement;
72
- this.main_el = el;
73
- if (el) {
74
- this.create_tooltip(tooltip, el);
75
- }
76
- else {
77
- console.log("TCL: tooltip -> el", this.el.nativeElement);
78
- }
79
- }
80
- create_tooltip(tip, el) {
81
- const tooltip = document.createElement("div");
82
- tooltip.setAttribute('id', this.ID);
83
- tooltip.innerHTML = tip;
84
- el.insertBefore(tooltip, null);
85
- }
86
- to_top(el) {
87
- const pos = this.el_center - (this.target_center);
88
- el.setAttribute('class', 'tc-directive-tooltip tc-directive-tooltip-top');
89
- }
90
- to_bottom(el) {
91
- const pos = this.el_center - (this.target_center);
92
- el.setAttribute('class', 'tc-directive-tooltip tc-directive-tooltip-bottom');
93
- }
94
- to_right(el) {
95
- const pos = this.el_width;
96
- el.setAttribute('class', 'tc-directive-tooltip tc-directive-tooltip-right');
54
+ generateID(target) {
55
+ const ref = (target) ? `-${target}` : '';
56
+ return `tc-tooltip-${Math.floor(Math.random() * Math.floor(Math.random() * Date.now()))}${ref}`;
97
57
  }
98
- to_left(el) {
99
- const pos = -((this.target_width));
100
- el.setAttribute('class', 'tc-directive-tooltip tc-directive-tooltip-left');
58
+ start_tooltip(id, height, width, el_position_x, el_position_y, direction) {
59
+ setTimeout(() => {
60
+ const tooltip = document.getElementById(id);
61
+ const tooltip_height = tooltip.clientHeight;
62
+ const tooltip_width = tooltip.clientWidth;
63
+ /*
64
+ console.log('altura do target: ', height);
65
+ console.log('largura do target: ', width);
66
+ console.log('el_position_x do target: ', el_position_x);
67
+ console.log('el_position_y do target: ', el_position_y);
68
+ console.log('direction do tooltip: ', direction);
69
+ */
70
+ let p_y = 0;
71
+ let p_x = 0;
72
+ const center_position = (el_position_x + (width / 2)) - (tooltip_width / 2);
73
+ if (direction === 'top') {
74
+ p_y = (el_position_y - tooltip_height) - 15;
75
+ p_x = center_position;
76
+ }
77
+ if (direction === 'bottom') {
78
+ p_y = (el_position_y + height) + 15;
79
+ p_x = center_position;
80
+ }
81
+ if (direction === 'left') {
82
+ p_y = el_position_y - (tooltip_height / 2) + (height / 2);
83
+ p_x = center_position - tooltip_width / 2 - width / 2 - 15;
84
+ }
85
+ if (direction === 'right') {
86
+ p_y = el_position_y - (tooltip_height / 2) + (height / 2);
87
+ p_x = center_position + tooltip_width / 2 + width / 2 + 15;
88
+ }
89
+ this.renderer.setStyle(tooltip, 'top', `${p_y}px`);
90
+ this.renderer.setStyle(tooltip, 'left', `${p_x}px`);
91
+ this.renderer.addClass(tooltip, 'tc-tooltip-fade-in');
92
+ });
101
93
  }
102
94
  }
103
95
  TCloudUiTooltipDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TCloudUiTooltipDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
104
- TCloudUiTooltipDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: TCloudUiTooltipDirective, selector: "[TCtooltip]", inputs: { TCtooltip: "TCtooltip", TCdirection: "TCdirection" }, host: { listeners: { "mouseover": "onMouseOver()", "mouseout": "onMouseOut()" } }, ngImport: i0 });
96
+ TCloudUiTooltipDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: TCloudUiTooltipDirective, selector: "[TCtooltip]", inputs: { TCtooltip: "TCtooltip", TCdirection: "TCdirection" }, host: { listeners: { "mouseover": "onMouseOver($event)", "mouseout": "onMouseOut($event)" } }, ngImport: i0 });
105
97
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TCloudUiTooltipDirective, decorators: [{
106
98
  type: Directive,
107
99
  args: [{
@@ -109,13 +101,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
109
101
  }]
110
102
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { onMouseOver: [{
111
103
  type: HostListener,
112
- args: ['mouseover']
104
+ args: ['mouseover', ['$event']]
113
105
  }], onMouseOut: [{
114
106
  type: HostListener,
115
- args: ['mouseout']
107
+ args: ['mouseout', ['$event']]
116
108
  }], TCtooltip: [{
117
109
  type: Input
118
110
  }], TCdirection: [{
119
111
  type: Input
120
112
  }] } });
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90Y2xvdWQtdWkvc3JjL2xpYi9fZGlyZWN0aXZlcy90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWlDLEtBQUssRUFBRSxZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBTTdGLE1BQU0sT0FBTyx3QkFBd0I7SUE4RG5DLFlBQ1UsRUFBYyxFQUNkLFFBQW1CO1FBRG5CLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBOURyQixlQUFVLEdBQXdDLEtBQUssQ0FBQztRQUloRSxPQUFPO1FBQ1AsY0FBUyxHQUFXLENBQUMsQ0FBQztRQUN0QixhQUFRLEdBQVcsQ0FBQyxDQUFDO1FBQ3JCLGNBQVMsR0FBVyxDQUFDLENBQUM7UUFDdEIsZ0JBQVcsR0FBVyxDQUFDLENBQUM7UUFHeEIsVUFBVTtRQUNWLGtCQUFhLEdBQVcsQ0FBQyxDQUFDO1FBQzFCLGlCQUFZLEdBQVcsQ0FBQyxDQUFDO1FBQ3pCLGtCQUFhLEdBQVcsQ0FBQyxDQUFDO1FBRTFCLE9BQUUsR0FBVyxFQUFFLENBQUM7UUE4QmhCLGNBQVMsR0FBVyxFQUFFLENBQUM7SUFpQmxCLENBQUM7SUE3Q3FCLFdBQVc7UUFDcEMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsY0FBYyxDQUFDLENBQUM7WUFFOUQsTUFBTSxFQUFFLEdBQVMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ25DLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQztZQUM1QixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUVkLFFB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SUFFM0UsQ0FBQztJQUVELFNBQVMsQ0FBQyxFQUFPO1FBQ2YsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBRTtRQUNuRCxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBQyxrREFBa0QsQ0FBQyxDQUFDO0lBRTlFLENBQUM7SUFFRCxRQUFRLENBQUMsRUFBTztRQUNkLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDMUIsRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUMsaURBQWlELENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsT0FBTyxDQUFDLEVBQU87UUFDYixNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUUsQ0FBQztRQUNyQyxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBQyxnREFBZ0QsQ0FBQyxDQUFDO0lBQzVFLENBQUM7O3NIQTFIVSx3QkFBd0I7MEdBQXhCLHdCQUF3Qjs0RkFBeEIsd0JBQXdCO2tCQUhwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxhQUFhO2lCQUN4Qjt5SEFxQjRCLFdBQVc7c0JBQXJDLFlBQVk7dUJBQUMsV0FBVztnQkFvQkMsVUFBVTtzQkFBbkMsWUFBWTt1QkFBQyxVQUFVO2dCQVVYLFNBQVM7c0JBQXJCLEtBQUs7Z0JBTU8sV0FBVztzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgT25Jbml0LCBSZW5kZXJlcjIsIElucHV0LCBIb3N0TGlzdGVuZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW1RDdG9vbHRpcF0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUQ2xvdWRVaVRvb2x0aXBEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXR7XHJcblxyXG4gIHByaXZhdGUgX2RpcmVjdGlvbjogJ3RvcCcgfCAnYm90dG9tJyB8ICdsZWZ0JyB8ICdyaWdodCcgPSAndG9wJztcclxuXHJcbiAgbWFpbl9lbDogYW55O1xyXG5cclxuICAvLyBtYWluXHJcbiAgZWxfaGVpZ2h0OiBudW1iZXIgPSAwO1xyXG4gIGVsX3dpZHRoOiBudW1iZXIgPSAwO1xyXG4gIGVsX2NlbnRlcjogbnVtYmVyID0gMDtcclxuICBlbF9wb3NpdGlvbjogbnVtYmVyID0gMDtcclxuXHJcbiAgXHJcbiAgLy8gdG9vbHRpcFxyXG4gIHRhcmdldF9oZWlnaHQ6IG51bWJlciA9IDA7IFxyXG4gIHRhcmdldF93aWR0aDogbnVtYmVyID0gMDsgXHJcbiAgdGFyZ2V0X2NlbnRlcjogbnVtYmVyID0gMDtcclxuXHJcbiAgSUQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICBASG9zdExpc3RlbmVyKCdtb3VzZW92ZXInKSBvbk1vdXNlT3ZlcigpIHtcclxuICAgIGlmKCB0aGlzLmdldEVsZW1lbnQoKSApe1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ21haW4tdG9vbHRpcCcpO1xyXG5cclxuICAgICAgY29uc3QgZWwgPSA8YW55PiB0aGlzLmdldEVsZW1lbnQoKTtcclxuICAgICAgZWwuc3R5bGUuZGlzcGxheSA9ICdpbmxpbmUnO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBcclxuICAgICAgICBzd2l0Y2ggKHRoaXMuX2RpcmVjdGlvbikge1xyXG4gICAgICAgICAgY2FzZSAndG9wJzogdGhpcy50b190b3AoZWwpOyBicmVhaztcclxuICAgICAgICAgIGNhc2UgJ2JvdHRvbSc6IHRoaXMudG9fYm90dG9tKGVsKTsgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdsZWZ0JzogdGhpcy50b19sZWZ0KGVsKTsgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdyaWdodCc6IHRoaXMudG9fcmlnaHQoZWwpOyBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBcclxuICAgICAgXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdtb3VzZW91dCcpIG9uTW91c2VPdXQoKSB7XHJcbiAgICBpZiggdGhpcy5nZXRFbGVtZW50KCkgKXtcclxuICAgICAgY29uc3QgZWwgPSA8YW55PiB0aGlzLmdldEVsZW1lbnQoKTtcclxuICAgICAgZWwuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdtYWluLXRvb2x0aXAnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluZm9fdGV4dDogc3RyaW5nID0gJyc7XHJcblxyXG4gIEBJbnB1dCgpIHNldCBUQ3Rvb2x0aXAgKHRvb2x0aXA6IGFueSl7XHJcbiAgICBpZiAodG9vbHRpcCl7XHJcbiAgICAgIHRoaXMuY2hlY2sodG9vbHRpcCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgVENkaXJlY3Rpb24gKGRpcmVjdGlvbjogYW55KXtcclxuICAgIGlmIChkaXJlY3Rpb24pe1xyXG4gICAgICB0aGlzLl9kaXJlY3Rpb24gPSBkaXJlY3Rpb247XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxyXG4gICAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIFxyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVJRCgpOiBzdHJpbmd7XHJcbiAgICByZXR1cm4gYHRjLXRvb2x0aXAtJHtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBEYXRlLm5vdygpKSl9YDtcclxuICB9XHJcblxyXG4gIGdldEVsZW1lbnQoKTogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWR7XHJcbiAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5JRCkgfHwgdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgY2hlY2sodG9vbHRpcDogYW55KXtcclxuICAgIHRoaXMuSUQgPSB0aGlzLmdlbmVyYXRlSUQoKTtcclxuXHJcbiAgICB0aGlzLmluZm9fdGV4dCA9IHRvb2x0aXA7XHJcblxyXG4gICAgbGV0IGVsID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5tYWluX2VsID0gZWw7XHJcbiAgICBpZiAoZWwpe1xyXG4gICAgICB0aGlzLmNyZWF0ZV90b29sdGlwKHRvb2x0aXAsIGVsKTsgICAgICAgIFxyXG4gICAgfWVsc2V7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiVENMOiB0b29sdGlwIC0+IGVsXCIsIHRoaXMuZWwubmF0aXZlRWxlbWVudClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNyZWF0ZV90b29sdGlwKHRpcDogYW55LCBlbDogYW55KXtcclxuXHJcbiAgICBjb25zdCB0b29sdGlwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgIHRvb2x0aXAuc2V0QXR0cmlidXRlKCdpZCcsIHRoaXMuSUQpO1xyXG4gICAgdG9vbHRpcC5pbm5lckhUTUwgPSB0aXA7IFxyXG4gICAgXHJcbiAgICBlbC5pbnNlcnRCZWZvcmUodG9vbHRpcCwgbnVsbCk7XHJcbiAgfVxyXG5cclxuICB0b190b3AoZWw6IGFueSl7XHJcbiAgICBjb25zdCBwb3MgPSB0aGlzLmVsX2NlbnRlciAtICh0aGlzLnRhcmdldF9jZW50ZXIpIDtcclxuICAgIGVsLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCd0Yy1kaXJlY3RpdmUtdG9vbHRpcCB0Yy1kaXJlY3RpdmUtdG9vbHRpcC10b3AnKTtcclxuICAgIFxyXG4gIH0gXHJcblxyXG4gIHRvX2JvdHRvbShlbDogYW55KXtcclxuICAgIGNvbnN0IHBvcyA9IHRoaXMuZWxfY2VudGVyIC0gKHRoaXMudGFyZ2V0X2NlbnRlcikgO1xyXG4gICAgZWwuc2V0QXR0cmlidXRlKCdjbGFzcycsJ3RjLWRpcmVjdGl2ZS10b29sdGlwIHRjLWRpcmVjdGl2ZS10b29sdGlwLWJvdHRvbScpO1xyXG4gICAgXHJcbiAgfVxyXG5cclxuICB0b19yaWdodChlbDogYW55KXtcclxuICAgIGNvbnN0IHBvcyA9IHRoaXMuZWxfd2lkdGg7XHJcbiAgICBlbC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywndGMtZGlyZWN0aXZlLXRvb2x0aXAgdGMtZGlyZWN0aXZlLXRvb2x0aXAtcmlnaHQnKTsgICAgXHJcbiAgfSBcclxuXHJcbiAgdG9fbGVmdChlbDogYW55KXtcclxuICAgIGNvbnN0IHBvcyA9IC0oICh0aGlzLnRhcmdldF93aWR0aCkgKTtcclxuICAgIGVsLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCd0Yy1kaXJlY3RpdmUtdG9vbHRpcCB0Yy1kaXJlY3RpdmUtdG9vbHRpcC1sZWZ0Jyk7ICAgIFxyXG4gIH1cclxuXHJcbn0iXX0=
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90Y2xvdWQtdWkvc3JjL2xpYi9fZGlyZWN0aXZlcy90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXlCLEtBQUssRUFBRSxZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBTXJGLE1BQU0sT0FBTyx3QkFBd0I7SUF5RG5DLFlBQ1UsRUFBYyxFQUNkLFFBQW1CO1FBRG5CLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBekQ3QixjQUFTLEdBQVcsRUFBRSxDQUFDO1FBZ0RmLGVBQVUsR0FBd0MsS0FBSyxDQUFDO0lBVTdELENBQUM7SUF4RG1DLFdBQVcsQ0FBQyxLQUFpQjtRQUVsRSxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFDdkQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkQsTUFBTSxJQUFJLEdBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUscUJBQXFCLEVBQUUsQ0FBQztRQUM3RCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsMEJBQTBCLENBQUMsRUFBRSxLQUFLLElBQUksS0FBSyxDQUFDO1FBQ2hHLE1BQU0sYUFBYSxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUQsTUFBTSxhQUFhLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFFLENBQUMsQ0FBQyxD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RyxFQUFFLENBQUM7YUFDeEQ7WUFFRCxJQUFJLFNBQVMsS0FBSyxPQUFPLEVBQUU7Z0JBQ3pCLEdBQUcsR0FBRyxhQUFhLEdBQUcsQ0FBQyxjQUFjLEdBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RELEdBQUcsR0FBRyxlQUFlLEdBQUcsYUFBYSxHQUFDLENBQUMsR0FBRyxLQUFLLEdBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQzthQUN4RDtZQUVELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBRXhELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7c0hBL0dVLHdCQUF3QjswR0FBeEIsd0JBQXdCOzRGQUF4Qix3QkFBd0I7a0JBSHBDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7aUJBQ3hCO3lIQUt3QyxXQUFXO3NCQUFqRCxZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFnQ0MsVUFBVTtzQkFBL0MsWUFBWTt1QkFBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBUXZCLFNBQVM7c0JBQXJCLEtBQUs7Z0JBT08sV0FBVztzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgUmVuZGVyZXIyLCBJbnB1dCwgSG9zdExpc3RlbmVyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tUQ3Rvb2x0aXBdJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVENsb3VkVWlUb29sdGlwRGlyZWN0aXZlIHtcclxuXHJcbiAgaW5mb190ZXh0OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignbW91c2VvdmVyJywgWyckZXZlbnQnXSkgb25Nb3VzZU92ZXIoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuXHJcbiAgICBjb25zdCBzY3JvbGxUb3AgPSB3aW5kb3cuc2Nyb2xsWSB8fCB3aW5kb3cucGFnZVlPZmZzZXQ7XHJcbiAgICBjb25zdCB0b29sdGlwID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIGNvbnN0IHJlY3QgID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IGRpcmVjdGlvbiA9IHRoaXMuZWwubmF0aXZlRWxlbWVudD8uYXR0cmlidXRlc1snbmctcmVmbGVjdC0tdC1jZGlyZWN0aW9uJ10/LnZhbHVlIHx8ICd0b3AnO1xyXG4gICAgY29uc3QgZWxfcG9zaXRpb25feCA9IChyZWN0Py5sZWZ0KSA/IHBhcnNlSW50KHJlY3Q/LmxlZnQpIDogMDtcclxuICAgIGNvbnN0IGVsX3Bvc2l0aW9uX3kgPSAocmVjdD8udG9wICkgPyBwYXJzZUludChyZWN0Py50b3AgICsgc2Nyb2xsVG9wKSA6IDA7XHJcblxyXG4gICAgbGV0IHdpZHRoID0gMDtcclxuICAgIGxldCBoZWlnaHQgPSAwO1xyXG4gICAgaWYoIGV2ZW50ICYmIGV2ZW50LnRhcmdldCApe1xyXG4gICAgICBjb25zdCBfZXZlbnQgPSBldmVudC50YXJnZXQgYXMgYW55O1xyXG4gICAgICBoZWlnaHQgID0gX2V2ZW50Lm9mZnNldEhlaWdodDtcclxuICAgICAgd2lkdGggICA9IF9ldmVudC5vZmZzZXRXaWR0aDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB0b3AgPSBgJHsoZWxfcG9zaXRpb25feSAtICgoaGVpZ2h0LzIpICsgMTApICl9cHhgO1xyXG4gICAgY29uc3QgbGVmdCA9IGAke2VsX3Bvc2l0aW9uX3ggKyAod2lkdGgvMikgfXB4YDtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodG9vbHRpcCwgJ3RvcCcsICcwcHgnKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodG9vbHRpcCwgJ2xlZnQnLCAnMHB4Jyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRvb2x0aXAsICdvcGFjaXR5JywgJzAnKTtcclxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModG9vbHRpcCwgJ3RjLWRpcmVjdGl2ZS10b29sdGlwJyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRvb2x0aXAsIGB0Yy1kaXJlY3RpdmUtdG9vbHRpcC0ke2RpcmVjdGlvbn1gKTtcclxuICAgIGNvbnN0IGlkID0gdGhpcy5nZW5lcmF0ZUlEKCk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0b29sdGlwLCAnaWQnLCBpZCk7XHJcbiAgICBjb25zdCB0ZXh0Tm9kZSA9IHRoaXMucmVuZGVyZXIuY3JlYXRlVGV4dChgJHt0aGlzLmluZm9fdGV4dH1gKTtcclxuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodG9vbHRpcCwgdGV4dE5vZGUpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChkb2N1bWVudC5ib2R5LCB0b29sdGlwKTsgICAgXHJcbiAgICB0aGlzLnN0YXJ0X3Rvb2x0aXAoaWQsIGhlaWdodCwgd2lkdGgsIGVsX3Bvc2l0aW9uX3gsIGVsX3Bvc2l0aW9uX3ksIGRpcmVjdGlvbik7XHJcbiAgfSAgXHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlb3V0JywgWyckZXZlbnQnXSkgb25Nb3VzZU91dChldmVudDogTW91c2VFdmVudCkgeyAgICBcclxuICAgIGNvbnN0IGN1c3RvbURpdiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy50Yy1kaXJlY3RpdmUtdG9vbHRpcCcpO1xyXG4gICAgaWYgKGN1c3RvbURpdikge1xyXG4gICAgICBjdXN0b21EaXYucmVtb3ZlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgQElucHV0KCkgc2V0IFRDdG9vbHRpcCAodG9vbHRpcDogYW55KXtcclxuICAgIGlmICh0b29sdGlwKXtcclxuICAgICAgdGhpcy5pbmZvX3RleHQgPSB0b29sdGlwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZGlyZWN0aW9uOiAndG9wJyB8ICdib3R0b20nIHwgJ2xlZnQnIHwgJ3JpZ2h0JyA9ICd0b3AnO1xyXG4gIEBJbnB1dCgpIHNldCBUQ2RpcmVjdGlvbiAoZGlyZWN0aW9uOiBhbnkpe1xyXG4gICAgaWYgKGRpcmVjdGlvbil7XHJcbiAgICAgIHRoaXMuX2RpcmVjdGlvbiA9IGRpcmVjdGlvbjtcclxuICAgIH1cclxuICB9XHJcbiAgXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyXHJcbiAgKSB7fVxyXG5cclxuXHJcbiAgZ2VuZXJhdGVJRCh0YXJnZXQ/OiBzdHJpbmcpOiBzdHJpbmd7XHJcbiAgICBjb25zdCByZWYgPSAodGFyZ2V0KSA/IGAtJHt0YXJnZXR9YCA6ICcnO1xyXG4gICAgcmV0dXJuIGB0Yy10b29sdGlwLSR7TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogRGF0ZS5ub3coKSkpfSR7cmVmfWA7XHJcbiAgfVxyXG5cclxuICBzdGFydF90b29sdGlwKGlkOiBzdHJpbmcsIGhlaWdodDogbnVtYmVyLCB3aWR0aDogbnVtYmVyLCBlbF9wb3NpdGlvbl94OiBudW1iZXIsIGVsX3Bvc2l0aW9uX3k6IG51bWJlciwgZGlyZWN0aW9uOiBzdHJpbmcpe1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7ICAgICAgXHJcbiAgICAgIGNvbnN0IHRvb2x0aXA6IGFueSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcclxuICAgICAgY29uc3QgdG9vbHRpcF9oZWlnaHQgPSB0b29sdGlwLmNsaWVudEhlaWdodDtcclxuICAgICAgY29uc3QgdG9vbHRpcF93aWR0aCA9IHRvb2x0aXAuY2xpZW50V2lkdGg7XHJcblxyXG4gICAgICAvKlxyXG4gICAgICBjb25zb2xlLmxvZygnYWx0dXJhIGRvIHRhcmdldDogJywgaGVpZ2h0KTtcclxuICAgICAgY29uc29sZS5sb2coJ2xhcmd1cmEgZG8gdGFyZ2V0OiAnLCB3aWR0aCk7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdlbF9wb3NpdGlvbl94IGRvIHRhcmdldDogJywgZWxfcG9zaXRpb25feCk7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdlbF9wb3NpdGlvbl95IGRvIHRhcmdldDogJywgZWxfcG9zaXRpb25feSk7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdkaXJlY3Rpb24gZG8gdG9vbHRpcDogJywgZGlyZWN0aW9uKTtcclxuICAgICAgKi9cclxuXHJcbiAgICAgIGxldCBwX3kgPSAwO1xyXG4gICAgICBsZXQgcF94ID0gMDtcclxuICAgICAgY29uc3QgY2VudGVyX3Bvc2l0aW9uID0gKGVsX3Bvc2l0aW9uX3ggKyAod2lkdGgvMikpIC0gKHRvb2x0aXBfd2lkdGgvMik7XHJcblxyXG4gICAgICBpZiggZGlyZWN0aW9uID09PSAndG9wJyApe1xyXG4gICAgICAgIHBfeSA9IChlbF9wb3NpdGlvbl95IC0gdG9vbHRpcF9oZWlnaHQpIC0gMTU7XHJcbiAgICAgICAgcF94ID0gY2VudGVyX3Bvc2l0aW9uO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiggZGlyZWN0aW9uID09PSAnYm90dG9tJyApe1xyXG4gICAgICAgIHBfeSA9IChlbF9wb3NpdGlvbl95ICsgaGVpZ2h0KSArIDE1O1xyXG4gICAgICAgIHBfeCA9IGNlbnRlcl9wb3NpdGlvbjtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYoIGRpcmVjdGlvbiA9PT0gJ2xlZnQnICl7XHJcbiAgICAgICAgcF95ID0gZWxfcG9zaXRpb25feSAtICh0b29sdGlwX2hlaWdodC8yKSArIChoZWlnaHQvMik7XHJcbiAgICAgICAgcF94ID0gY2VudGVyX3Bvc2l0aW9uIC0gdG9vbHRpcF93aWR0aC8yIC0gd2lkdGgvMiAtIDE1O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiggZGlyZWN0aW9uID09PSAncmlnaHQnICl7XHJcbiAgICAgICAgcF95ID0gZWxfcG9zaXRpb25feSAtICh0b29sdGlwX2hlaWdodC8yKSArIChoZWlnaHQvMik7XHJcbiAgICAgICAgcF94ID0gY2VudGVyX3Bvc2l0aW9uICsgdG9vbHRpcF93aWR0aC8yICsgd2lkdGgvMiArIDE1O1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRvb2x0aXAsICd0b3AnLCBgJHtwX3l9cHhgKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0b29sdGlwLCAnbGVmdCcsIGAke3BfeH1weGApO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRvb2x0aXAsICd0Yy10b29sdGlwLWZhZGUtaW4nKTtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG59Il19
@@ -4372,52 +4372,47 @@ class TCloudUiTooltipDirective {
4372
4372
  constructor(el, renderer) {
4373
4373
  this.el = el;
4374
4374
  this.renderer = renderer;
4375
- this._direction = 'top';
4376
- // main
4377
- this.el_height = 0;
4378
- this.el_width = 0;
4379
- this.el_center = 0;
4380
- this.el_position = 0;
4381
- // tooltip
4382
- this.target_height = 0;
4383
- this.target_width = 0;
4384
- this.target_center = 0;
4385
- this.ID = '';
4386
4375
  this.info_text = '';
4376
+ this._direction = 'top';
4387
4377
  }
4388
- onMouseOver() {
4389
- if (this.getElement()) {
4390
- this.renderer.addClass(this.el.nativeElement, 'main-tooltip');
4391
- const el = this.getElement();
4392
- el.style.display = 'inline';
4393
- setTimeout(() => {
4394
- switch (this._direction) {
4395
- case 'top':
4396
- this.to_top(el);
4397
- break;
4398
- case 'bottom':
4399
- this.to_bottom(el);
4400
- break;
4401
- case 'left':
4402
- this.to_left(el);
4403
- break;
4404
- case 'right':
4405
- this.to_right(el);
4406
- break;
4407
- }
4408
- });
4409
- }
4410
- }
4411
- onMouseOut() {
4412
- if (this.getElement()) {
4413
- const el = this.getElement();
4414
- el.style.display = 'none';
4415
- this.renderer.removeClass(this.el.nativeElement, 'main-tooltip');
4378
+ onMouseOver(event) {
4379
+ var _a, _b, _c;
4380
+ const scrollTop = window.scrollY || window.pageYOffset;
4381
+ const tooltip = this.renderer.createElement('div');
4382
+ const rect = (_a = this.el.nativeElement) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
4383
+ const direction = ((_c = (_b = this.el.nativeElement) === null || _b === void 0 ? void 0 : _b.attributes['ng-reflect--t-cdirection']) === null || _c === void 0 ? void 0 : _c.value) || 'top';
4384
+ const el_position_x = (rect === null || rect === void 0 ? void 0 : rect.left) ? parseInt(rect === null || rect === void 0 ? void 0 : rect.left) : 0;
4385
+ const el_position_y = (rect === null || rect === void 0 ? void 0 : rect.top) ? parseInt((rect === null || rect === void 0 ? void 0 : rect.top) + scrollTop) : 0;
4386
+ let width = 0;
4387
+ let height = 0;
4388
+ if (event && event.target) {
4389
+ const _event = event.target;
4390
+ height = _event.offsetHeight;
4391
+ width = _event.offsetWidth;
4392
+ }
4393
+ const top = `${(el_position_y - ((height / 2) + 10))}px`;
4394
+ const left = `${el_position_x + (width / 2)}px`;
4395
+ this.renderer.setStyle(tooltip, 'top', '0px');
4396
+ this.renderer.setStyle(tooltip, 'left', '0px');
4397
+ this.renderer.setStyle(tooltip, 'opacity', '0');
4398
+ this.renderer.addClass(tooltip, 'tc-directive-tooltip');
4399
+ this.renderer.addClass(tooltip, `tc-directive-tooltip-${direction}`);
4400
+ const id = this.generateID();
4401
+ this.renderer.setAttribute(tooltip, 'id', id);
4402
+ const textNode = this.renderer.createText(`${this.info_text}`);
4403
+ this.renderer.appendChild(tooltip, textNode);
4404
+ this.renderer.appendChild(document.body, tooltip);
4405
+ this.start_tooltip(id, height, width, el_position_x, el_position_y, direction);
4406
+ }
4407
+ onMouseOut(event) {
4408
+ const customDiv = document.querySelector('.tc-directive-tooltip');
4409
+ if (customDiv) {
4410
+ customDiv.remove();
4416
4411
  }
4417
4412
  }
4418
4413
  set TCtooltip(tooltip) {
4419
4414
  if (tooltip) {
4420
- this.check(tooltip);
4415
+ this.info_text = tooltip;
4421
4416
  }
4422
4417
  }
4423
4418
  set TCdirection(direction) {
@@ -4425,51 +4420,49 @@ class TCloudUiTooltipDirective {
4425
4420
  this._direction = direction;
4426
4421
  }
4427
4422
  }
4428
- ngOnInit() {
4429
- }
4430
- generateID() {
4431
- return `tc-tooltip-${Math.floor(Math.random() * Math.floor(Math.random() * Date.now()))}`;
4432
- }
4433
- getElement() {
4434
- return document.getElementById(this.ID) || undefined;
4435
- }
4436
- check(tooltip) {
4437
- this.ID = this.generateID();
4438
- this.info_text = tooltip;
4439
- let el = this.el.nativeElement;
4440
- this.main_el = el;
4441
- if (el) {
4442
- this.create_tooltip(tooltip, el);
4443
- }
4444
- else {
4445
- console.log("TCL: tooltip -> el", this.el.nativeElement);
4446
- }
4447
- }
4448
- create_tooltip(tip, el) {
4449
- const tooltip = document.createElement("div");
4450
- tooltip.setAttribute('id', this.ID);
4451
- tooltip.innerHTML = tip;
4452
- el.insertBefore(tooltip, null);
4453
- }
4454
- to_top(el) {
4455
- const pos = this.el_center - (this.target_center);
4456
- el.setAttribute('class', 'tc-directive-tooltip tc-directive-tooltip-top');
4423
+ generateID(target) {
4424
+ const ref = (target) ? `-${target}` : '';
4425
+ return `tc-tooltip-${Math.floor(Math.random() * Math.floor(Math.random() * Date.now()))}${ref}`;
4457
4426
  }
4458
- to_bottom(el) {
4459
- const pos = this.el_center - (this.target_center);
4460
- el.setAttribute('class', 'tc-directive-tooltip tc-directive-tooltip-bottom');
4461
- }
4462
- to_right(el) {
4463
- const pos = this.el_width;
4464
- el.setAttribute('class', 'tc-directive-tooltip tc-directive-tooltip-right');
4465
- }
4466
- to_left(el) {
4467
- const pos = -((this.target_width));
4468
- el.setAttribute('class', 'tc-directive-tooltip tc-directive-tooltip-left');
4427
+ start_tooltip(id, height, width, el_position_x, el_position_y, direction) {
4428
+ setTimeout(() => {
4429
+ const tooltip = document.getElementById(id);
4430
+ const tooltip_height = tooltip.clientHeight;
4431
+ const tooltip_width = tooltip.clientWidth;
4432
+ /*
4433
+ console.log('altura do target: ', height);
4434
+ console.log('largura do target: ', width);
4435
+ console.log('el_position_x do target: ', el_position_x);
4436
+ console.log('el_position_y do target: ', el_position_y);
4437
+ console.log('direction do tooltip: ', direction);
4438
+ */
4439
+ let p_y = 0;
4440
+ let p_x = 0;
4441
+ const center_position = (el_position_x + (width / 2)) - (tooltip_width / 2);
4442
+ if (direction === 'top') {
4443
+ p_y = (el_position_y - tooltip_height) - 15;
4444
+ p_x = center_position;
4445
+ }
4446
+ if (direction === 'bottom') {
4447
+ p_y = (el_position_y + height) + 15;
4448
+ p_x = center_position;
4449
+ }
4450
+ if (direction === 'left') {
4451
+ p_y = el_position_y - (tooltip_height / 2) + (height / 2);
4452
+ p_x = center_position - tooltip_width / 2 - width / 2 - 15;
4453
+ }
4454
+ if (direction === 'right') {
4455
+ p_y = el_position_y - (tooltip_height / 2) + (height / 2);
4456
+ p_x = center_position + tooltip_width / 2 + width / 2 + 15;
4457
+ }
4458
+ this.renderer.setStyle(tooltip, 'top', `${p_y}px`);
4459
+ this.renderer.setStyle(tooltip, 'left', `${p_x}px`);
4460
+ this.renderer.addClass(tooltip, 'tc-tooltip-fade-in');
4461
+ });
4469
4462
  }
4470
4463
  }
4471
4464
  TCloudUiTooltipDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TCloudUiTooltipDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
4472
- TCloudUiTooltipDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: TCloudUiTooltipDirective, selector: "[TCtooltip]", inputs: { TCtooltip: "TCtooltip", TCdirection: "TCdirection" }, host: { listeners: { "mouseover": "onMouseOver()", "mouseout": "onMouseOut()" } }, ngImport: i0 });
4465
+ TCloudUiTooltipDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: TCloudUiTooltipDirective, selector: "[TCtooltip]", inputs: { TCtooltip: "TCtooltip", TCdirection: "TCdirection" }, host: { listeners: { "mouseover": "onMouseOver($event)", "mouseout": "onMouseOut($event)" } }, ngImport: i0 });
4473
4466
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TCloudUiTooltipDirective, decorators: [{
4474
4467
  type: Directive,
4475
4468
  args: [{
@@ -4477,10 +4470,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
4477
4470
  }]
4478
4471
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { onMouseOver: [{
4479
4472
  type: HostListener,
4480
- args: ['mouseover']
4473
+ args: ['mouseover', ['$event']]
4481
4474
  }], onMouseOut: [{
4482
4475
  type: HostListener,
4483
- args: ['mouseout']
4476
+ args: ['mouseout', ['$event']]
4484
4477
  }], TCtooltip: [{
4485
4478
  type: Input
4486
4479
  }], TCdirection: [{