@energycap/components 0.32.19 → 0.32.20

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.
@@ -19,7 +19,7 @@ import { __awaiter } from 'tslib';
19
19
  import moment from 'moment';
20
20
  import Popper from 'popper.js';
21
21
  import { cloneDeep, uniqueId, isEqual, sortBy, orderBy, get, upperFirst } from 'lodash';
22
- import { TemplatePortal, ComponentPortal } from '@angular/cdk/portal';
22
+ import { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';
23
23
 
24
24
  class CacheService {
25
25
  constructor() {
@@ -4281,6 +4281,98 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
4281
4281
  args: ['textbox', { static: true }]
4282
4282
  }] } });
4283
4283
 
4284
+ class TooltipComponent {
4285
+ constructor() {
4286
+ this.position = 'top-center';
4287
+ this.dismissible = false;
4288
+ this.onHide = new EventEmitter();
4289
+ }
4290
+ hide() {
4291
+ var _a;
4292
+ this.onHide.next();
4293
+ (_a = this.overlayRef) === null || _a === void 0 ? void 0 : _a.dispose();
4294
+ }
4295
+ }
4296
+ TooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4297
+ TooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: TooltipComponent, selector: "ec-tooltip", host: { properties: { "style.--ec-tooltip-background-color": "this.backgroundColor" } }, ngImport: i0, template: "<article id=\"{{id}}\" class=\"py-3 position-{{position}}\">\r\n <header *ngIf=\"title || subtitle\" class=\"mb-3\">\r\n <h1 class=\"text-heading-2 px-3 mb-0\">{{title}}</h1>\r\n <p class=\"text-caption-1 px-3 mb-0\">{{subtitle}}</p>\r\n </header>\r\n \r\n <ng-container *ngIf=\"customContent; else textTemplate\">\r\n <ng-container *ngTemplateOutlet=\"customContent\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-template #textTemplate>\r\n <div class=\"text-body-1 px-3\" [innerHTML]=\"text\"></div>\r\n </ng-template>\r\n \r\n <ec-button *ngIf=\"dismissible\" id=\"tooltipDismiss\" type=\"icon\" icon=\"icon-cancel\" (clicked)=\"hide()\" style=\"--ec-button-color-icon: var(--ec-color-secondary-light);\"></ec-button>\r\n</article>", styles: [":host{display:block;padding:.75rem}article{background-color:var(--ec-tooltip-background-color, #162F3B);color:var(--ec-tooltip-color, var(--ec-color-primary-light));border-radius:var(--ec-border-radius-card);position:relative;box-shadow:var(--ec-box-shadow-overlay);--ec-color-interactive: var(--ec-color-interactive-light)}article:after{content:\"\";height:0;width:0;border:.625rem solid transparent;display:block;position:absolute;pointer-events:none}article.position-top-left:after,article.position-top-center:after,article.position-top-right:after{bottom:-1.25rem;border-top-color:var(--ec-tooltip-background-color, #162F3B)}article.position-bottom-left:after,article.position-bottom-center:after,article.position-bottom-right:after{top:-1.25rem;border-bottom-color:var(--ec-tooltip-background-color, #162F3B)}article.position-top-left:after,article.position-bottom-left:after{right:1rem}article.position-top-right:after,article.position-bottom-right:after{left:1rem}article.position-top-center:after,article.position-bottom-center:after{right:50%;transform:translate(50%)}article.position-right-top:after,article.position-right-center:after,article.position-right-bottom:after{left:-1.25rem;border-right-color:var(--ec-tooltip-background-color, #162F3B)}article.position-left-top:after,article.position-left-center:after,article.position-left-bottom:after{right:-1.25rem;border-left-color:var(--ec-tooltip-background-color, #162F3B)}article.position-left-top:after,article.position-right-top:after{top:1rem}article.position-left-bottom:after,article.position-right-bottom:after{bottom:1rem}article.position-left-center:after,article.position-right-center:after{bottom:50%;transform:translateY(50%)}.text-heading-2,.text-body-1{color:var(--ec-color-primary-light)}.text-body-1 ::ng-deep p:last-child{margin-bottom:0}.text-body-1 ::ng-deep a{font-weight:var(--ec-font-weight-bold)}.text-caption-1{color:var(--ec-color-secondary-light)}ec-button{position:absolute;top:.25rem;right:.25rem}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ButtonComponent, selector: "ec-button", inputs: ["id", "disabled", "icon", "label", "badge", "tabindex", "type", "pending", "pendingIcon", "customTemplate", "isSubmit", "autofocus"], outputs: ["clicked"] }] });
4298
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TooltipComponent, decorators: [{
4299
+ type: Component,
4300
+ args: [{ selector: 'ec-tooltip', template: "<article id=\"{{id}}\" class=\"py-3 position-{{position}}\">\r\n <header *ngIf=\"title || subtitle\" class=\"mb-3\">\r\n <h1 class=\"text-heading-2 px-3 mb-0\">{{title}}</h1>\r\n <p class=\"text-caption-1 px-3 mb-0\">{{subtitle}}</p>\r\n </header>\r\n \r\n <ng-container *ngIf=\"customContent; else textTemplate\">\r\n <ng-container *ngTemplateOutlet=\"customContent\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-template #textTemplate>\r\n <div class=\"text-body-1 px-3\" [innerHTML]=\"text\"></div>\r\n </ng-template>\r\n \r\n <ec-button *ngIf=\"dismissible\" id=\"tooltipDismiss\" type=\"icon\" icon=\"icon-cancel\" (clicked)=\"hide()\" style=\"--ec-button-color-icon: var(--ec-color-secondary-light);\"></ec-button>\r\n</article>", styles: [":host{display:block;padding:.75rem}article{background-color:var(--ec-tooltip-background-color, #162F3B);color:var(--ec-tooltip-color, var(--ec-color-primary-light));border-radius:var(--ec-border-radius-card);position:relative;box-shadow:var(--ec-box-shadow-overlay);--ec-color-interactive: var(--ec-color-interactive-light)}article:after{content:\"\";height:0;width:0;border:.625rem solid transparent;display:block;position:absolute;pointer-events:none}article.position-top-left:after,article.position-top-center:after,article.position-top-right:after{bottom:-1.25rem;border-top-color:var(--ec-tooltip-background-color, #162F3B)}article.position-bottom-left:after,article.position-bottom-center:after,article.position-bottom-right:after{top:-1.25rem;border-bottom-color:var(--ec-tooltip-background-color, #162F3B)}article.position-top-left:after,article.position-bottom-left:after{right:1rem}article.position-top-right:after,article.position-bottom-right:after{left:1rem}article.position-top-center:after,article.position-bottom-center:after{right:50%;transform:translate(50%)}article.position-right-top:after,article.position-right-center:after,article.position-right-bottom:after{left:-1.25rem;border-right-color:var(--ec-tooltip-background-color, #162F3B)}article.position-left-top:after,article.position-left-center:after,article.position-left-bottom:after{right:-1.25rem;border-left-color:var(--ec-tooltip-background-color, #162F3B)}article.position-left-top:after,article.position-right-top:after{top:1rem}article.position-left-bottom:after,article.position-right-bottom:after{bottom:1rem}article.position-left-center:after,article.position-right-center:after{bottom:50%;transform:translateY(50%)}.text-heading-2,.text-body-1{color:var(--ec-color-primary-light)}.text-body-1 ::ng-deep p:last-child{margin-bottom:0}.text-body-1 ::ng-deep a{font-weight:var(--ec-font-weight-bold)}.text-caption-1{color:var(--ec-color-secondary-light)}ec-button{position:absolute;top:.25rem;right:.25rem}\n"] }]
4301
+ }], propDecorators: { backgroundColor: [{
4302
+ type: HostBinding,
4303
+ args: ['style.--ec-tooltip-background-color']
4304
+ }] } });
4305
+
4306
+ class TooltipService {
4307
+ constructor(overlay) {
4308
+ this.overlay = overlay;
4309
+ this.positions = {
4310
+ 'top-left': { originX: 'center', originY: 'top', overlayX: 'end', overlayY: 'bottom', offsetX: 38 },
4311
+ 'top-center': { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom' },
4312
+ 'top-right': { originX: 'center', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetX: -38 },
4313
+ 'bottom-left': { originX: 'center', originY: 'bottom', overlayX: 'end', overlayY: 'top', offsetX: 38 },
4314
+ 'bottom-center': { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top' },
4315
+ 'bottom-right': { originX: 'center', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetX: -38 },
4316
+ 'left-top': { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'top', offsetY: -38 },
4317
+ 'left-center': { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center' },
4318
+ 'left-bottom': { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'bottom', offsetY: 38 },
4319
+ 'right-top': { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'top', offsetY: -38 },
4320
+ 'right-center': { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center' },
4321
+ 'right-bottom': { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'bottom', offsetY: 38 }
4322
+ };
4323
+ }
4324
+ /**
4325
+ * Show a tooltip attached to a specified element
4326
+ */
4327
+ show(anchor, position = 'top-center', options) {
4328
+ const overlayConfig = this.getOverlayConfig(anchor, this.positions[position], options === null || options === void 0 ? void 0 : options.width, options === null || options === void 0 ? void 0 : options.maxWidth);
4329
+ const overlayRef = this.overlay.create(overlayConfig);
4330
+ const contentPortal = new ComponentPortal(TooltipComponent);
4331
+ const contentViewRef = overlayRef.attach(contentPortal);
4332
+ contentViewRef.instance.position = position;
4333
+ contentViewRef.instance.id = options === null || options === void 0 ? void 0 : options.id;
4334
+ contentViewRef.instance.title = options === null || options === void 0 ? void 0 : options.title;
4335
+ contentViewRef.instance.subtitle = options === null || options === void 0 ? void 0 : options.subtitle;
4336
+ contentViewRef.instance.text = options === null || options === void 0 ? void 0 : options.text;
4337
+ contentViewRef.instance.customContent = options === null || options === void 0 ? void 0 : options.customContent;
4338
+ contentViewRef.instance.dismissible = (options === null || options === void 0 ? void 0 : options.dismissible) || false;
4339
+ contentViewRef.instance.backgroundColor = options === null || options === void 0 ? void 0 : options.backgroundColor;
4340
+ contentViewRef.instance.overlayRef = overlayRef;
4341
+ return contentViewRef.instance;
4342
+ }
4343
+ onMove(event, contentRect) {
4344
+ let callCallback = false;
4345
+ if (contentRect) {
4346
+ if (event.clientX > contentRect.right
4347
+ || event.clientX < contentRect.left
4348
+ || event.clientY > contentRect.bottom
4349
+ || event.clientY < contentRect.top) {
4350
+ callCallback = true;
4351
+ }
4352
+ }
4353
+ return callCallback;
4354
+ }
4355
+ getOverlayConfig(element, position, width, maxWidth) {
4356
+ const positionStrategy = this.overlay.position()
4357
+ .flexibleConnectedTo(element)
4358
+ .withPositions([position]);
4359
+ const config = new OverlayConfig({
4360
+ positionStrategy: positionStrategy,
4361
+ width: width,
4362
+ maxWidth: maxWidth
4363
+ });
4364
+ return config;
4365
+ }
4366
+ }
4367
+ TooltipService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TooltipService, deps: [{ token: i1$2.Overlay }], target: i0.ɵɵFactoryTarget.Injectable });
4368
+ TooltipService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TooltipService, providedIn: 'root' });
4369
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TooltipService, decorators: [{
4370
+ type: Injectable,
4371
+ args: [{
4372
+ providedIn: 'root'
4373
+ }]
4374
+ }], ctorParameters: function () { return [{ type: i1$2.Overlay }]; } });
4375
+
4284
4376
  class TagsComponent {
4285
4377
  constructor() {
4286
4378
  /**The ID of this set of tags */
@@ -4355,10 +4447,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
4355
4447
  }] } });
4356
4448
 
4357
4449
  class PopoverComponent {
4358
- constructor(overlay, viewContainerRef, elementRef) {
4450
+ constructor(overlay, viewContainerRef, elementRef, tooltipService) {
4359
4451
  this.overlay = overlay;
4360
4452
  this.viewContainerRef = viewContainerRef;
4361
4453
  this.elementRef = elementRef;
4454
+ this.tooltipService = tooltipService;
4362
4455
  /** An optional icon that, if provided, enables the popover to use it as the anchor element */
4363
4456
  this.icon = '';
4364
4457
  this.contentPosition = 'top-left';
@@ -4382,12 +4475,16 @@ class PopoverComponent {
4382
4475
  this.hide();
4383
4476
  }
4384
4477
  show() {
4478
+ var _a;
4385
4479
  if (!this.isVisible) {
4386
4480
  const overlayConfig = this.getOverlayConfig();
4387
4481
  this.overlayRef = this.overlay.create(overlayConfig);
4388
4482
  const contentPortal = new TemplatePortal(this.content, this.viewContainerRef);
4389
4483
  this.contentViewRef = this.overlayRef.attach(contentPortal);
4390
4484
  this.isVisible = true;
4485
+ //contentRect will be assing only after showing a tooltip/popover and it will be
4486
+ //reset after hide the same tooltip/popover
4487
+ this.contentRect = (_a = this.contentViewRef) === null || _a === void 0 ? void 0 : _a.rootNodes[0].getBoundingClientRect();
4391
4488
  }
4392
4489
  }
4393
4490
  onMouseOver() {
@@ -4400,25 +4497,20 @@ class PopoverComponent {
4400
4497
  * Hides the popover if the mouse moves outside of the popover content
4401
4498
  */
4402
4499
  onMouseMove(event) {
4403
- var _a;
4404
- if (!this.contentRect) {
4405
- this.contentRect = (_a = this.contentViewRef) === null || _a === void 0 ? void 0 : _a.rootNodes[0].getBoundingClientRect();
4406
- }
4500
+ let callCallback = false;
4407
4501
  if (this.contentRect) {
4408
- if (event.clientX > this.contentRect.right
4409
- || event.clientX < this.contentRect.left
4410
- || event.clientY > this.contentRect.bottom
4411
- || event.clientY < this.contentRect.top) {
4502
+ callCallback = this.tooltipService.onMove(event, this.contentRect);
4503
+ if (callCallback) {
4412
4504
  this.hide();
4413
4505
  }
4414
4506
  }
4415
4507
  }
4416
4508
  hide() {
4417
4509
  var _a;
4418
- this.contentRect = undefined;
4510
+ this.interrupt.next();
4419
4511
  (_a = this.overlayRef) === null || _a === void 0 ? void 0 : _a.dispose();
4420
4512
  this.isVisible = false;
4421
- this.interrupt.next();
4513
+ this.contentRect = undefined;
4422
4514
  }
4423
4515
  getOverlayConfig() {
4424
4516
  const position = this.getPosition();
@@ -4437,12 +4529,12 @@ class PopoverComponent {
4437
4529
  return { originX: overlayX, originY: overlayY, overlayX: overlayX, overlayY: overlayY };
4438
4530
  }
4439
4531
  }
4440
- PopoverComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: PopoverComponent, deps: [{ token: i1$2.Overlay }, { token: i0.ViewContainerRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
4532
+ PopoverComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: PopoverComponent, deps: [{ token: i1$2.Overlay }, { token: i0.ViewContainerRef }, { token: i0.ElementRef }, { token: TooltipService }], target: i0.ɵɵFactoryTarget.Component });
4441
4533
  PopoverComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: PopoverComponent, selector: "ec-popover", inputs: { icon: "icon", tag: "tag", tagHoverType: "tagHoverType", contentPosition: "contentPosition", iconHoverClass: "iconHoverClass" }, host: { listeners: { "mouseover": "onMouseOver()", "mouseleave": "onLeave()" } }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true }], ngImport: i0, template: "<!-- Before hover state -->\r\n<div class=\"p-2\">\r\n <i *ngIf=\"!tag\" class=\"ec-icon {{icon}} ec-icon-sm\"></i>\r\n <ec-tags *ngIf=\"tag\"\r\n [isCondensed] = \"true\"\r\n [tags]=\"tag\">\r\n </ec-tags>\r\n</div>\r\n<!-- ./Before hover state -->\r\n\r\n<!-- Hover state -->\r\n<ng-template #content>\r\n <article class=\"popover-content\"\r\n (document:mousemove)=\"onMouseMove($event)\">\r\n <ng-content></ng-content>\r\n </article>\r\n <div class=\"p-2 {{contentPosition}}\">\r\n <i *ngIf=\"!tag\" class=\"ec-icon {{icon}} ec-icon-sm {{iconHoverClass}}\"></i>\r\n <ec-tags *ngIf=\"tag\"\r\n [isCondensed]=\"true\"\r\n [tags]=\"hoverTag\">\r\n </ec-tags>\r\n </div>\r\n</ng-template>\r\n<!-- ./Hover state -->\r\n", styles: [":host{line-height:.75rem;display:inline-block}.popover-content{border-radius:var(--ec-border-radius);box-shadow:0 3px 6px #1a1a231f;overflow:hidden;position:relative}.popover-content+div{position:absolute;line-height:.75rem}.popover-content+div.top-left{top:0;left:0}.popover-content+div.top-right{top:0;right:0}.popover-content+div.bottom-right{bottom:0;right:0}.popover-content+div.bottom-left{bottom:0;left:0}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TagsComponent, selector: "ec-tags", inputs: ["id", "tags", "wrap", "isCondensed"], outputs: ["tagClosed"] }] });
4442
4534
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: PopoverComponent, decorators: [{
4443
4535
  type: Component,
4444
4536
  args: [{ selector: 'ec-popover', template: "<!-- Before hover state -->\r\n<div class=\"p-2\">\r\n <i *ngIf=\"!tag\" class=\"ec-icon {{icon}} ec-icon-sm\"></i>\r\n <ec-tags *ngIf=\"tag\"\r\n [isCondensed] = \"true\"\r\n [tags]=\"tag\">\r\n </ec-tags>\r\n</div>\r\n<!-- ./Before hover state -->\r\n\r\n<!-- Hover state -->\r\n<ng-template #content>\r\n <article class=\"popover-content\"\r\n (document:mousemove)=\"onMouseMove($event)\">\r\n <ng-content></ng-content>\r\n </article>\r\n <div class=\"p-2 {{contentPosition}}\">\r\n <i *ngIf=\"!tag\" class=\"ec-icon {{icon}} ec-icon-sm {{iconHoverClass}}\"></i>\r\n <ec-tags *ngIf=\"tag\"\r\n [isCondensed]=\"true\"\r\n [tags]=\"hoverTag\">\r\n </ec-tags>\r\n </div>\r\n</ng-template>\r\n<!-- ./Hover state -->\r\n", styles: [":host{line-height:.75rem;display:inline-block}.popover-content{border-radius:var(--ec-border-radius);box-shadow:0 3px 6px #1a1a231f;overflow:hidden;position:relative}.popover-content+div{position:absolute;line-height:.75rem}.popover-content+div.top-left{top:0;left:0}.popover-content+div.top-right{top:0;right:0}.popover-content+div.bottom-right{bottom:0;right:0}.popover-content+div.bottom-left{bottom:0;left:0}\n"] }]
4445
- }], ctorParameters: function () { return [{ type: i1$2.Overlay }, { type: i0.ViewContainerRef }, { type: i0.ElementRef }]; }, propDecorators: { icon: [{
4537
+ }], ctorParameters: function () { return [{ type: i1$2.Overlay }, { type: i0.ViewContainerRef }, { type: i0.ElementRef }, { type: TooltipService }]; }, propDecorators: { icon: [{
4446
4538
  type: Input
4447
4539
  }], tag: [{
4448
4540
  type: Input
@@ -8982,28 +9074,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
8982
9074
  type: Input
8983
9075
  }] } });
8984
9076
 
8985
- class TooltipComponent {
8986
- constructor() {
8987
- this.position = 'top-center';
8988
- this.dismissible = false;
8989
- this.onHide = new EventEmitter();
8990
- }
8991
- hide() {
8992
- var _a;
8993
- this.onHide.next();
8994
- (_a = this.overlayRef) === null || _a === void 0 ? void 0 : _a.dispose();
8995
- }
8996
- }
8997
- TooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8998
- TooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: TooltipComponent, selector: "ec-tooltip", host: { properties: { "style.--ec-tooltip-background-color": "this.backgroundColor" } }, ngImport: i0, template: "<article id=\"{{id}}\" class=\"py-3 position-{{position}}\">\r\n <header *ngIf=\"title || subtitle\" class=\"mb-3\">\r\n <h1 class=\"text-heading-2 px-3 mb-0\">{{title}}</h1>\r\n <p class=\"text-caption-1 px-3 mb-0\">{{subtitle}}</p>\r\n </header>\r\n \r\n <ng-container *ngIf=\"customContent; else textTemplate\">\r\n <ng-container *ngTemplateOutlet=\"customContent\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-template #textTemplate>\r\n <div class=\"text-body-1 px-3\" [innerHTML]=\"text\"></div>\r\n </ng-template>\r\n \r\n <ec-button *ngIf=\"dismissible\" id=\"tooltipDismiss\" type=\"icon\" icon=\"icon-cancel\" (clicked)=\"hide()\" style=\"--ec-button-color-icon: var(--ec-color-secondary-light);\"></ec-button>\r\n</article>", styles: [":host{display:block;padding:.75rem}article{background-color:var(--ec-tooltip-background-color, #162F3B);color:var(--ec-tooltip-color, var(--ec-color-primary-light));border-radius:var(--ec-border-radius-card);position:relative;box-shadow:var(--ec-box-shadow-overlay);--ec-color-interactive: var(--ec-color-interactive-light)}article:after{content:\"\";height:0;width:0;border:.625rem solid transparent;display:block;position:absolute;pointer-events:none}article.position-top-left:after,article.position-top-center:after,article.position-top-right:after{bottom:-1.25rem;border-top-color:var(--ec-tooltip-background-color, #162F3B)}article.position-bottom-left:after,article.position-bottom-center:after,article.position-bottom-right:after{top:-1.25rem;border-bottom-color:var(--ec-tooltip-background-color, #162F3B)}article.position-top-left:after,article.position-bottom-left:after{right:1rem}article.position-top-right:after,article.position-bottom-right:after{left:1rem}article.position-top-center:after,article.position-bottom-center:after{right:50%;transform:translate(50%)}article.position-right-top:after,article.position-right-center:after,article.position-right-bottom:after{left:-1.25rem;border-right-color:var(--ec-tooltip-background-color, #162F3B)}article.position-left-top:after,article.position-left-center:after,article.position-left-bottom:after{right:-1.25rem;border-left-color:var(--ec-tooltip-background-color, #162F3B)}article.position-left-top:after,article.position-right-top:after{top:1rem}article.position-left-bottom:after,article.position-right-bottom:after{bottom:1rem}article.position-left-center:after,article.position-right-center:after{bottom:50%;transform:translateY(50%)}.text-heading-2,.text-body-1{color:var(--ec-color-primary-light)}.text-body-1 ::ng-deep p:last-child{margin-bottom:0}.text-body-1 ::ng-deep a{font-weight:var(--ec-font-weight-bold)}.text-caption-1{color:var(--ec-color-secondary-light)}ec-button{position:absolute;top:.25rem;right:.25rem}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ButtonComponent, selector: "ec-button", inputs: ["id", "disabled", "icon", "label", "badge", "tabindex", "type", "pending", "pendingIcon", "customTemplate", "isSubmit", "autofocus"], outputs: ["clicked"] }] });
8999
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TooltipComponent, decorators: [{
9000
- type: Component,
9001
- args: [{ selector: 'ec-tooltip', template: "<article id=\"{{id}}\" class=\"py-3 position-{{position}}\">\r\n <header *ngIf=\"title || subtitle\" class=\"mb-3\">\r\n <h1 class=\"text-heading-2 px-3 mb-0\">{{title}}</h1>\r\n <p class=\"text-caption-1 px-3 mb-0\">{{subtitle}}</p>\r\n </header>\r\n \r\n <ng-container *ngIf=\"customContent; else textTemplate\">\r\n <ng-container *ngTemplateOutlet=\"customContent\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-template #textTemplate>\r\n <div class=\"text-body-1 px-3\" [innerHTML]=\"text\"></div>\r\n </ng-template>\r\n \r\n <ec-button *ngIf=\"dismissible\" id=\"tooltipDismiss\" type=\"icon\" icon=\"icon-cancel\" (clicked)=\"hide()\" style=\"--ec-button-color-icon: var(--ec-color-secondary-light);\"></ec-button>\r\n</article>", styles: [":host{display:block;padding:.75rem}article{background-color:var(--ec-tooltip-background-color, #162F3B);color:var(--ec-tooltip-color, var(--ec-color-primary-light));border-radius:var(--ec-border-radius-card);position:relative;box-shadow:var(--ec-box-shadow-overlay);--ec-color-interactive: var(--ec-color-interactive-light)}article:after{content:\"\";height:0;width:0;border:.625rem solid transparent;display:block;position:absolute;pointer-events:none}article.position-top-left:after,article.position-top-center:after,article.position-top-right:after{bottom:-1.25rem;border-top-color:var(--ec-tooltip-background-color, #162F3B)}article.position-bottom-left:after,article.position-bottom-center:after,article.position-bottom-right:after{top:-1.25rem;border-bottom-color:var(--ec-tooltip-background-color, #162F3B)}article.position-top-left:after,article.position-bottom-left:after{right:1rem}article.position-top-right:after,article.position-bottom-right:after{left:1rem}article.position-top-center:after,article.position-bottom-center:after{right:50%;transform:translate(50%)}article.position-right-top:after,article.position-right-center:after,article.position-right-bottom:after{left:-1.25rem;border-right-color:var(--ec-tooltip-background-color, #162F3B)}article.position-left-top:after,article.position-left-center:after,article.position-left-bottom:after{right:-1.25rem;border-left-color:var(--ec-tooltip-background-color, #162F3B)}article.position-left-top:after,article.position-right-top:after{top:1rem}article.position-left-bottom:after,article.position-right-bottom:after{bottom:1rem}article.position-left-center:after,article.position-right-center:after{bottom:50%;transform:translateY(50%)}.text-heading-2,.text-body-1{color:var(--ec-color-primary-light)}.text-body-1 ::ng-deep p:last-child{margin-bottom:0}.text-body-1 ::ng-deep a{font-weight:var(--ec-font-weight-bold)}.text-caption-1{color:var(--ec-color-secondary-light)}ec-button{position:absolute;top:.25rem;right:.25rem}\n"] }]
9002
- }], propDecorators: { backgroundColor: [{
9003
- type: HostBinding,
9004
- args: ['style.--ec-tooltip-background-color']
9005
- }] } });
9006
-
9007
9077
  class Tour {
9008
9078
  constructor() {
9009
9079
  /** Unique identifier for the tour */
@@ -9104,64 +9174,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
9104
9174
  }]
9105
9175
  }], ctorParameters: function () { return [{ type: CacheService }]; } });
9106
9176
 
9107
- class TooltipService {
9108
- constructor(overlay) {
9109
- this.overlay = overlay;
9110
- this.positions = {
9111
- 'top-left': { originX: 'center', originY: 'top', overlayX: 'end', overlayY: 'bottom', offsetX: 38 },
9112
- 'top-center': { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom' },
9113
- 'top-right': { originX: 'center', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetX: -38 },
9114
- 'bottom-left': { originX: 'center', originY: 'bottom', overlayX: 'end', overlayY: 'top', offsetX: 38 },
9115
- 'bottom-center': { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top' },
9116
- 'bottom-right': { originX: 'center', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetX: -38 },
9117
- 'left-top': { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'top', offsetY: -38 },
9118
- 'left-center': { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center' },
9119
- 'left-bottom': { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'bottom', offsetY: 38 },
9120
- 'right-top': { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'top', offsetY: -38 },
9121
- 'right-center': { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center' },
9122
- 'right-bottom': { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'bottom', offsetY: 38 }
9123
- };
9124
- }
9125
- /**
9126
- * Show a tooltip attached to a specified element
9127
- */
9128
- show(anchor, position = 'top-center', options) {
9129
- const overlayConfig = this.getOverlayConfig(anchor, this.positions[position], options === null || options === void 0 ? void 0 : options.width, options === null || options === void 0 ? void 0 : options.maxWidth);
9130
- const overlayRef = this.overlay.create(overlayConfig);
9131
- const contentPortal = new ComponentPortal(TooltipComponent);
9132
- const contentViewRef = overlayRef.attach(contentPortal);
9133
- contentViewRef.instance.position = position;
9134
- contentViewRef.instance.id = options === null || options === void 0 ? void 0 : options.id;
9135
- contentViewRef.instance.title = options === null || options === void 0 ? void 0 : options.title;
9136
- contentViewRef.instance.subtitle = options === null || options === void 0 ? void 0 : options.subtitle;
9137
- contentViewRef.instance.text = options === null || options === void 0 ? void 0 : options.text;
9138
- contentViewRef.instance.customContent = options === null || options === void 0 ? void 0 : options.customContent;
9139
- contentViewRef.instance.dismissible = (options === null || options === void 0 ? void 0 : options.dismissible) || false;
9140
- contentViewRef.instance.backgroundColor = options === null || options === void 0 ? void 0 : options.backgroundColor;
9141
- contentViewRef.instance.overlayRef = overlayRef;
9142
- return contentViewRef.instance;
9143
- }
9144
- getOverlayConfig(element, position, width, maxWidth) {
9145
- const positionStrategy = this.overlay.position()
9146
- .flexibleConnectedTo(element)
9147
- .withPositions([position]);
9148
- const config = new OverlayConfig({
9149
- positionStrategy: positionStrategy,
9150
- width: width,
9151
- maxWidth: maxWidth
9152
- });
9153
- return config;
9154
- }
9155
- }
9156
- TooltipService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TooltipService, deps: [{ token: i1$2.Overlay }], target: i0.ɵɵFactoryTarget.Injectable });
9157
- TooltipService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TooltipService, providedIn: 'root' });
9158
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TooltipService, decorators: [{
9159
- type: Injectable,
9160
- args: [{
9161
- providedIn: 'root'
9162
- }]
9163
- }], ctorParameters: function () { return [{ type: i1$2.Overlay }]; } });
9164
-
9165
9177
  class TourComponent {
9166
9178
  constructor(tourService, tooltipService, telemetryService, cacheService, dialogService, translateService, document) {
9167
9179
  this.tourService = tourService;
@@ -9642,6 +9654,19 @@ class TooltipDirective {
9642
9654
  console.error('There are too many parameters or none parameter to config the tooltip options');
9643
9655
  }
9644
9656
  }
9657
+ //Detects where the mouse is to trigger the leave/hide process
9658
+ onMouseMove(event) {
9659
+ let callCallback = false;
9660
+ if (this.contentRect) {
9661
+ callCallback = this.tooltipService.onMove(event, this.contentRect);
9662
+ if (callCallback) {
9663
+ //trigger on hide process
9664
+ this.interrupt.next();
9665
+ //reset the contentRec for a new tooltip
9666
+ this.contentRect = undefined;
9667
+ }
9668
+ }
9669
+ }
9645
9670
  //Trigger the process to show the tooltip
9646
9671
  onMouseOver() {
9647
9672
  this.mouseOver.next();
@@ -9692,8 +9717,13 @@ class TooltipDirective {
9692
9717
  show() {
9693
9718
  //Reference to the element where to tooltip is attached
9694
9719
  const element = this.element.nativeElement;
9720
+ //contentRect will be assing only after showing a tooltip/popover and it will be
9721
+ //reset after hide the same tooltip/popover
9722
+ this.contentRect = this.element.nativeElement.getBoundingClientRect();
9695
9723
  //tooltipPosition is never undefined, default value = "top-center"
9696
- this.tooltip = this.tooltipService.show(element, this.tooltipPosition, this.tooltipOptions);
9724
+ if (!this.tooltip) {
9725
+ this.tooltip = this.tooltipService.show(element, this.tooltipPosition, this.tooltipOptions);
9726
+ }
9697
9727
  }
9698
9728
  hide() {
9699
9729
  //There is a timing issue between the show - hide with
@@ -9702,6 +9732,7 @@ class TooltipDirective {
9702
9732
  if (this.tooltip) {
9703
9733
  //Call the hide() from the tooltip component
9704
9734
  this.tooltip.hide();
9735
+ this.tooltip = undefined;
9705
9736
  }
9706
9737
  //Interrupt the flow of mouseover with a delay and triggers the
9707
9738
  //flow to hide the tooltip with a delay
@@ -9712,11 +9743,11 @@ class TooltipDirective {
9712
9743
  //When the element where the tooltip is attached disappears
9713
9744
  //the tooltip should be destroy as well
9714
9745
  ngOnDestroy() {
9715
- this.onLeave();
9746
+ this.interrupt.next();
9716
9747
  }
9717
9748
  }
9718
9749
  TooltipDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TooltipDirective, deps: [{ token: TooltipService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
9719
- TooltipDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: TooltipDirective, selector: "[ecTooltip]", inputs: { tooltipConfig: "tooltipConfig", tooltipText: "tooltipText", tooltipCustomContent: "tooltipCustomContent", tooltipPosition: "tooltipPosition" }, host: { listeners: { "mouseover": "onMouseOver()", "mouseleave": "onLeave()" } }, ngImport: i0 });
9750
+ TooltipDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: TooltipDirective, selector: "[ecTooltip]", inputs: { tooltipConfig: "tooltipConfig", tooltipText: "tooltipText", tooltipCustomContent: "tooltipCustomContent", tooltipPosition: "tooltipPosition" }, host: { listeners: { "document:mousemove": "onMouseMove($event)", "mouseover": "onMouseOver()", "mouseleave": "onLeave()" } }, ngImport: i0 });
9720
9751
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TooltipDirective, decorators: [{
9721
9752
  type: Directive,
9722
9753
  args: [{
@@ -9730,6 +9761,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
9730
9761
  type: Input
9731
9762
  }], tooltipPosition: [{
9732
9763
  type: Input
9764
+ }], onMouseMove: [{
9765
+ type: HostListener,
9766
+ args: ['document:mousemove', ['$event']]
9733
9767
  }], onMouseOver: [{
9734
9768
  type: HostListener,
9735
9769
  args: ['mouseover']