@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
|
@@ -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 {
|
|
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
|
-
|
|
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
|
-
|
|
4409
|
-
|
|
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.
|
|
4510
|
+
this.interrupt.next();
|
|
4419
4511
|
(_a = this.overlayRef) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
4420
4512
|
this.isVisible = false;
|
|
4421
|
-
this.
|
|
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
|
-
|
|
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.
|
|
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']
|