@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.
- package/esm2020/lib/controls/popover/popover.component.mjs +17 -16
- package/esm2020/lib/display/tooltip/tooltip.service.mjs +13 -1
- package/esm2020/lib/display/tooltip-directive/tooltip.directive.mjs +26 -4
- package/fesm2015/energycap-components.mjs +131 -97
- package/fesm2015/energycap-components.mjs.map +1 -1
- package/fesm2020/energycap-components.mjs +129 -95
- package/fesm2020/energycap-components.mjs.map +1 -1
- package/lib/controls/popover/popover.component.d.ts +4 -2
- package/lib/display/tooltip/tooltip.service.d.ts +1 -0
- package/lib/display/tooltip-directive/tooltip.directive.d.ts +3 -1
- package/package.json +1 -1
|
@@ -18,7 +18,7 @@ import { takeUntil, distinctUntilChanged, filter, take, debounceTime, switchMap,
|
|
|
18
18
|
import moment from 'moment';
|
|
19
19
|
import Popper from 'popper.js';
|
|
20
20
|
import { cloneDeep, uniqueId, isEqual, sortBy, orderBy, get, upperFirst } from 'lodash';
|
|
21
|
-
import {
|
|
21
|
+
import { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';
|
|
22
22
|
|
|
23
23
|
class CacheService {
|
|
24
24
|
constructor() {
|
|
@@ -4252,6 +4252,97 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
|
|
|
4252
4252
|
args: ['textbox', { static: true }]
|
|
4253
4253
|
}] } });
|
|
4254
4254
|
|
|
4255
|
+
class TooltipComponent {
|
|
4256
|
+
constructor() {
|
|
4257
|
+
this.position = 'top-center';
|
|
4258
|
+
this.dismissible = false;
|
|
4259
|
+
this.onHide = new EventEmitter();
|
|
4260
|
+
}
|
|
4261
|
+
hide() {
|
|
4262
|
+
this.onHide.next();
|
|
4263
|
+
this.overlayRef?.dispose();
|
|
4264
|
+
}
|
|
4265
|
+
}
|
|
4266
|
+
TooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4267
|
+
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"] }] });
|
|
4268
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TooltipComponent, decorators: [{
|
|
4269
|
+
type: Component,
|
|
4270
|
+
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"] }]
|
|
4271
|
+
}], propDecorators: { backgroundColor: [{
|
|
4272
|
+
type: HostBinding,
|
|
4273
|
+
args: ['style.--ec-tooltip-background-color']
|
|
4274
|
+
}] } });
|
|
4275
|
+
|
|
4276
|
+
class TooltipService {
|
|
4277
|
+
constructor(overlay) {
|
|
4278
|
+
this.overlay = overlay;
|
|
4279
|
+
this.positions = {
|
|
4280
|
+
'top-left': { originX: 'center', originY: 'top', overlayX: 'end', overlayY: 'bottom', offsetX: 38 },
|
|
4281
|
+
'top-center': { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom' },
|
|
4282
|
+
'top-right': { originX: 'center', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetX: -38 },
|
|
4283
|
+
'bottom-left': { originX: 'center', originY: 'bottom', overlayX: 'end', overlayY: 'top', offsetX: 38 },
|
|
4284
|
+
'bottom-center': { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top' },
|
|
4285
|
+
'bottom-right': { originX: 'center', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetX: -38 },
|
|
4286
|
+
'left-top': { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'top', offsetY: -38 },
|
|
4287
|
+
'left-center': { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center' },
|
|
4288
|
+
'left-bottom': { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'bottom', offsetY: 38 },
|
|
4289
|
+
'right-top': { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'top', offsetY: -38 },
|
|
4290
|
+
'right-center': { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center' },
|
|
4291
|
+
'right-bottom': { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'bottom', offsetY: 38 }
|
|
4292
|
+
};
|
|
4293
|
+
}
|
|
4294
|
+
/**
|
|
4295
|
+
* Show a tooltip attached to a specified element
|
|
4296
|
+
*/
|
|
4297
|
+
show(anchor, position = 'top-center', options) {
|
|
4298
|
+
const overlayConfig = this.getOverlayConfig(anchor, this.positions[position], options?.width, options?.maxWidth);
|
|
4299
|
+
const overlayRef = this.overlay.create(overlayConfig);
|
|
4300
|
+
const contentPortal = new ComponentPortal(TooltipComponent);
|
|
4301
|
+
const contentViewRef = overlayRef.attach(contentPortal);
|
|
4302
|
+
contentViewRef.instance.position = position;
|
|
4303
|
+
contentViewRef.instance.id = options?.id;
|
|
4304
|
+
contentViewRef.instance.title = options?.title;
|
|
4305
|
+
contentViewRef.instance.subtitle = options?.subtitle;
|
|
4306
|
+
contentViewRef.instance.text = options?.text;
|
|
4307
|
+
contentViewRef.instance.customContent = options?.customContent;
|
|
4308
|
+
contentViewRef.instance.dismissible = options?.dismissible || false;
|
|
4309
|
+
contentViewRef.instance.backgroundColor = options?.backgroundColor;
|
|
4310
|
+
contentViewRef.instance.overlayRef = overlayRef;
|
|
4311
|
+
return contentViewRef.instance;
|
|
4312
|
+
}
|
|
4313
|
+
onMove(event, contentRect) {
|
|
4314
|
+
let callCallback = false;
|
|
4315
|
+
if (contentRect) {
|
|
4316
|
+
if (event.clientX > contentRect.right
|
|
4317
|
+
|| event.clientX < contentRect.left
|
|
4318
|
+
|| event.clientY > contentRect.bottom
|
|
4319
|
+
|| event.clientY < contentRect.top) {
|
|
4320
|
+
callCallback = true;
|
|
4321
|
+
}
|
|
4322
|
+
}
|
|
4323
|
+
return callCallback;
|
|
4324
|
+
}
|
|
4325
|
+
getOverlayConfig(element, position, width, maxWidth) {
|
|
4326
|
+
const positionStrategy = this.overlay.position()
|
|
4327
|
+
.flexibleConnectedTo(element)
|
|
4328
|
+
.withPositions([position]);
|
|
4329
|
+
const config = new OverlayConfig({
|
|
4330
|
+
positionStrategy: positionStrategy,
|
|
4331
|
+
width: width,
|
|
4332
|
+
maxWidth: maxWidth
|
|
4333
|
+
});
|
|
4334
|
+
return config;
|
|
4335
|
+
}
|
|
4336
|
+
}
|
|
4337
|
+
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 });
|
|
4338
|
+
TooltipService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TooltipService, providedIn: 'root' });
|
|
4339
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TooltipService, decorators: [{
|
|
4340
|
+
type: Injectable,
|
|
4341
|
+
args: [{
|
|
4342
|
+
providedIn: 'root'
|
|
4343
|
+
}]
|
|
4344
|
+
}], ctorParameters: function () { return [{ type: i1$2.Overlay }]; } });
|
|
4345
|
+
|
|
4255
4346
|
class TagsComponent {
|
|
4256
4347
|
constructor() {
|
|
4257
4348
|
/**The ID of this set of tags */
|
|
@@ -4326,10 +4417,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
|
|
|
4326
4417
|
}] } });
|
|
4327
4418
|
|
|
4328
4419
|
class PopoverComponent {
|
|
4329
|
-
constructor(overlay, viewContainerRef, elementRef) {
|
|
4420
|
+
constructor(overlay, viewContainerRef, elementRef, tooltipService) {
|
|
4330
4421
|
this.overlay = overlay;
|
|
4331
4422
|
this.viewContainerRef = viewContainerRef;
|
|
4332
4423
|
this.elementRef = elementRef;
|
|
4424
|
+
this.tooltipService = tooltipService;
|
|
4333
4425
|
/** An optional icon that, if provided, enables the popover to use it as the anchor element */
|
|
4334
4426
|
this.icon = '';
|
|
4335
4427
|
this.contentPosition = 'top-left';
|
|
@@ -4359,6 +4451,9 @@ class PopoverComponent {
|
|
|
4359
4451
|
const contentPortal = new TemplatePortal(this.content, this.viewContainerRef);
|
|
4360
4452
|
this.contentViewRef = this.overlayRef.attach(contentPortal);
|
|
4361
4453
|
this.isVisible = true;
|
|
4454
|
+
//contentRect will be assing only after showing a tooltip/popover and it will be
|
|
4455
|
+
//reset after hide the same tooltip/popover
|
|
4456
|
+
this.contentRect = this.contentViewRef?.rootNodes[0].getBoundingClientRect();
|
|
4362
4457
|
}
|
|
4363
4458
|
}
|
|
4364
4459
|
onMouseOver() {
|
|
@@ -4371,23 +4466,19 @@ class PopoverComponent {
|
|
|
4371
4466
|
* Hides the popover if the mouse moves outside of the popover content
|
|
4372
4467
|
*/
|
|
4373
4468
|
onMouseMove(event) {
|
|
4374
|
-
|
|
4375
|
-
this.contentRect = this.contentViewRef?.rootNodes[0].getBoundingClientRect();
|
|
4376
|
-
}
|
|
4469
|
+
let callCallback = false;
|
|
4377
4470
|
if (this.contentRect) {
|
|
4378
|
-
|
|
4379
|
-
|
|
4380
|
-
|| event.clientY > this.contentRect.bottom
|
|
4381
|
-
|| event.clientY < this.contentRect.top) {
|
|
4471
|
+
callCallback = this.tooltipService.onMove(event, this.contentRect);
|
|
4472
|
+
if (callCallback) {
|
|
4382
4473
|
this.hide();
|
|
4383
4474
|
}
|
|
4384
4475
|
}
|
|
4385
4476
|
}
|
|
4386
4477
|
hide() {
|
|
4387
|
-
this.
|
|
4478
|
+
this.interrupt.next();
|
|
4388
4479
|
this.overlayRef?.dispose();
|
|
4389
4480
|
this.isVisible = false;
|
|
4390
|
-
this.
|
|
4481
|
+
this.contentRect = undefined;
|
|
4391
4482
|
}
|
|
4392
4483
|
getOverlayConfig() {
|
|
4393
4484
|
const position = this.getPosition();
|
|
@@ -4406,12 +4497,12 @@ class PopoverComponent {
|
|
|
4406
4497
|
return { originX: overlayX, originY: overlayY, overlayX: overlayX, overlayY: overlayY };
|
|
4407
4498
|
}
|
|
4408
4499
|
}
|
|
4409
|
-
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 });
|
|
4500
|
+
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 });
|
|
4410
4501
|
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"] }] });
|
|
4411
4502
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: PopoverComponent, decorators: [{
|
|
4412
4503
|
type: Component,
|
|
4413
4504
|
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"] }]
|
|
4414
|
-
}], ctorParameters: function () { return [{ type: i1$2.Overlay }, { type: i0.ViewContainerRef }, { type: i0.ElementRef }]; }, propDecorators: { icon: [{
|
|
4505
|
+
}], ctorParameters: function () { return [{ type: i1$2.Overlay }, { type: i0.ViewContainerRef }, { type: i0.ElementRef }, { type: TooltipService }]; }, propDecorators: { icon: [{
|
|
4415
4506
|
type: Input
|
|
4416
4507
|
}], tag: [{
|
|
4417
4508
|
type: Input
|
|
@@ -8918,27 +9009,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
|
|
|
8918
9009
|
type: Input
|
|
8919
9010
|
}] } });
|
|
8920
9011
|
|
|
8921
|
-
class TooltipComponent {
|
|
8922
|
-
constructor() {
|
|
8923
|
-
this.position = 'top-center';
|
|
8924
|
-
this.dismissible = false;
|
|
8925
|
-
this.onHide = new EventEmitter();
|
|
8926
|
-
}
|
|
8927
|
-
hide() {
|
|
8928
|
-
this.onHide.next();
|
|
8929
|
-
this.overlayRef?.dispose();
|
|
8930
|
-
}
|
|
8931
|
-
}
|
|
8932
|
-
TooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8933
|
-
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"] }] });
|
|
8934
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TooltipComponent, decorators: [{
|
|
8935
|
-
type: Component,
|
|
8936
|
-
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"] }]
|
|
8937
|
-
}], propDecorators: { backgroundColor: [{
|
|
8938
|
-
type: HostBinding,
|
|
8939
|
-
args: ['style.--ec-tooltip-background-color']
|
|
8940
|
-
}] } });
|
|
8941
|
-
|
|
8942
9012
|
class Tour {
|
|
8943
9013
|
constructor() {
|
|
8944
9014
|
/** Unique identifier for the tour */
|
|
@@ -9039,64 +9109,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
|
|
|
9039
9109
|
}]
|
|
9040
9110
|
}], ctorParameters: function () { return [{ type: CacheService }]; } });
|
|
9041
9111
|
|
|
9042
|
-
class TooltipService {
|
|
9043
|
-
constructor(overlay) {
|
|
9044
|
-
this.overlay = overlay;
|
|
9045
|
-
this.positions = {
|
|
9046
|
-
'top-left': { originX: 'center', originY: 'top', overlayX: 'end', overlayY: 'bottom', offsetX: 38 },
|
|
9047
|
-
'top-center': { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom' },
|
|
9048
|
-
'top-right': { originX: 'center', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetX: -38 },
|
|
9049
|
-
'bottom-left': { originX: 'center', originY: 'bottom', overlayX: 'end', overlayY: 'top', offsetX: 38 },
|
|
9050
|
-
'bottom-center': { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top' },
|
|
9051
|
-
'bottom-right': { originX: 'center', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetX: -38 },
|
|
9052
|
-
'left-top': { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'top', offsetY: -38 },
|
|
9053
|
-
'left-center': { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center' },
|
|
9054
|
-
'left-bottom': { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'bottom', offsetY: 38 },
|
|
9055
|
-
'right-top': { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'top', offsetY: -38 },
|
|
9056
|
-
'right-center': { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center' },
|
|
9057
|
-
'right-bottom': { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'bottom', offsetY: 38 }
|
|
9058
|
-
};
|
|
9059
|
-
}
|
|
9060
|
-
/**
|
|
9061
|
-
* Show a tooltip attached to a specified element
|
|
9062
|
-
*/
|
|
9063
|
-
show(anchor, position = 'top-center', options) {
|
|
9064
|
-
const overlayConfig = this.getOverlayConfig(anchor, this.positions[position], options?.width, options?.maxWidth);
|
|
9065
|
-
const overlayRef = this.overlay.create(overlayConfig);
|
|
9066
|
-
const contentPortal = new ComponentPortal(TooltipComponent);
|
|
9067
|
-
const contentViewRef = overlayRef.attach(contentPortal);
|
|
9068
|
-
contentViewRef.instance.position = position;
|
|
9069
|
-
contentViewRef.instance.id = options?.id;
|
|
9070
|
-
contentViewRef.instance.title = options?.title;
|
|
9071
|
-
contentViewRef.instance.subtitle = options?.subtitle;
|
|
9072
|
-
contentViewRef.instance.text = options?.text;
|
|
9073
|
-
contentViewRef.instance.customContent = options?.customContent;
|
|
9074
|
-
contentViewRef.instance.dismissible = options?.dismissible || false;
|
|
9075
|
-
contentViewRef.instance.backgroundColor = options?.backgroundColor;
|
|
9076
|
-
contentViewRef.instance.overlayRef = overlayRef;
|
|
9077
|
-
return contentViewRef.instance;
|
|
9078
|
-
}
|
|
9079
|
-
getOverlayConfig(element, position, width, maxWidth) {
|
|
9080
|
-
const positionStrategy = this.overlay.position()
|
|
9081
|
-
.flexibleConnectedTo(element)
|
|
9082
|
-
.withPositions([position]);
|
|
9083
|
-
const config = new OverlayConfig({
|
|
9084
|
-
positionStrategy: positionStrategy,
|
|
9085
|
-
width: width,
|
|
9086
|
-
maxWidth: maxWidth
|
|
9087
|
-
});
|
|
9088
|
-
return config;
|
|
9089
|
-
}
|
|
9090
|
-
}
|
|
9091
|
-
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 });
|
|
9092
|
-
TooltipService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TooltipService, providedIn: 'root' });
|
|
9093
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TooltipService, decorators: [{
|
|
9094
|
-
type: Injectable,
|
|
9095
|
-
args: [{
|
|
9096
|
-
providedIn: 'root'
|
|
9097
|
-
}]
|
|
9098
|
-
}], ctorParameters: function () { return [{ type: i1$2.Overlay }]; } });
|
|
9099
|
-
|
|
9100
9112
|
class TourComponent {
|
|
9101
9113
|
constructor(tourService, tooltipService, telemetryService, cacheService, dialogService, translateService, document) {
|
|
9102
9114
|
this.tourService = tourService;
|
|
@@ -9548,6 +9560,19 @@ class TooltipDirective {
|
|
|
9548
9560
|
console.error('There are too many parameters or none parameter to config the tooltip options');
|
|
9549
9561
|
}
|
|
9550
9562
|
}
|
|
9563
|
+
//Detects where the mouse is to trigger the leave/hide process
|
|
9564
|
+
onMouseMove(event) {
|
|
9565
|
+
let callCallback = false;
|
|
9566
|
+
if (this.contentRect) {
|
|
9567
|
+
callCallback = this.tooltipService.onMove(event, this.contentRect);
|
|
9568
|
+
if (callCallback) {
|
|
9569
|
+
//trigger on hide process
|
|
9570
|
+
this.interrupt.next();
|
|
9571
|
+
//reset the contentRec for a new tooltip
|
|
9572
|
+
this.contentRect = undefined;
|
|
9573
|
+
}
|
|
9574
|
+
}
|
|
9575
|
+
}
|
|
9551
9576
|
//Trigger the process to show the tooltip
|
|
9552
9577
|
onMouseOver() {
|
|
9553
9578
|
this.mouseOver.next();
|
|
@@ -9597,8 +9622,13 @@ class TooltipDirective {
|
|
|
9597
9622
|
show() {
|
|
9598
9623
|
//Reference to the element where to tooltip is attached
|
|
9599
9624
|
const element = this.element.nativeElement;
|
|
9625
|
+
//contentRect will be assing only after showing a tooltip/popover and it will be
|
|
9626
|
+
//reset after hide the same tooltip/popover
|
|
9627
|
+
this.contentRect = this.element.nativeElement.getBoundingClientRect();
|
|
9600
9628
|
//tooltipPosition is never undefined, default value = "top-center"
|
|
9601
|
-
|
|
9629
|
+
if (!this.tooltip) {
|
|
9630
|
+
this.tooltip = this.tooltipService.show(element, this.tooltipPosition, this.tooltipOptions);
|
|
9631
|
+
}
|
|
9602
9632
|
}
|
|
9603
9633
|
hide() {
|
|
9604
9634
|
//There is a timing issue between the show - hide with
|
|
@@ -9607,6 +9637,7 @@ class TooltipDirective {
|
|
|
9607
9637
|
if (this.tooltip) {
|
|
9608
9638
|
//Call the hide() from the tooltip component
|
|
9609
9639
|
this.tooltip.hide();
|
|
9640
|
+
this.tooltip = undefined;
|
|
9610
9641
|
}
|
|
9611
9642
|
//Interrupt the flow of mouseover with a delay and triggers the
|
|
9612
9643
|
//flow to hide the tooltip with a delay
|
|
@@ -9617,11 +9648,11 @@ class TooltipDirective {
|
|
|
9617
9648
|
//When the element where the tooltip is attached disappears
|
|
9618
9649
|
//the tooltip should be destroy as well
|
|
9619
9650
|
ngOnDestroy() {
|
|
9620
|
-
this.
|
|
9651
|
+
this.interrupt.next();
|
|
9621
9652
|
}
|
|
9622
9653
|
}
|
|
9623
9654
|
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 });
|
|
9624
|
-
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 });
|
|
9655
|
+
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 });
|
|
9625
9656
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TooltipDirective, decorators: [{
|
|
9626
9657
|
type: Directive,
|
|
9627
9658
|
args: [{
|
|
@@ -9635,6 +9666,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
|
|
|
9635
9666
|
type: Input
|
|
9636
9667
|
}], tooltipPosition: [{
|
|
9637
9668
|
type: Input
|
|
9669
|
+
}], onMouseMove: [{
|
|
9670
|
+
type: HostListener,
|
|
9671
|
+
args: ['document:mousemove', ['$event']]
|
|
9638
9672
|
}], onMouseOver: [{
|
|
9639
9673
|
type: HostListener,
|
|
9640
9674
|
args: ['mouseover']
|