UNPKG

@ngx-performance-ui/ui

Version:
136 lines 13 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, ElementRef, ChangeDetectorRef, ViewChild, } from '@angular/core'; export class TooltipComponent { /** * @param {?} tooltip * @param {?} cdRef */ constructor(tooltip, cdRef) { this.tooltip = tooltip; this.cdRef = cdRef; this.style = { position: 'fixed', visibility: 'hidden' }; this.arrowPart = 5; } /** * @return {?} */ get classes() { return `tooltip bs-tooltip-${this.tooltip.placement} show`; } /** * @return {?} */ ngAfterViewInit() { setTimeout((/** * @return {?} */ () => { this.setPosition(); this.style = Object.assign({}, this.style, { visibility: 'visible' }); this.cdRef.detectChanges(); }), 0); } /** * @return {?} */ setPosition() { const { left, right, top, bottom, width, height } = this.tooltip.element.getBoundingClientRect(); const { width: hostWidth, height: hostHeight } = this.container.nativeElement.getBoundingClientRect(); const { innerHeight, innerWidth } = window; switch (this.tooltip.placement) { case 'top': if (top - hostHeight - this.arrowPart < 0) this.tooltip.placement = 'bottom'; this.setY(left, top, bottom, width, hostHeight, hostWidth); break; case 'bottom': if (bottom + hostHeight + this.arrowPart > innerHeight) this.tooltip.placement = 'top'; this.setY(left, top, bottom, width, hostHeight, hostWidth); break; case 'left': if (left - hostWidth - this.arrowPart < 0) this.tooltip.placement = 'right'; this.setX(left, top, right, height, hostHeight, hostWidth); break; case 'right': if (right + hostWidth + this.arrowPart > innerWidth) this.tooltip.placement = 'left'; this.setX(left, top, right, height, hostHeight, hostWidth); break; } } /** * @param {?} left * @param {?} top * @param {?} bottom * @param {?} width * @param {?} hostHeight * @param {?} hostWidth * @return {?} */ setY(left, top, bottom, width, hostHeight, hostWidth) { this.style.left = left + (width - hostWidth) / 2 + 'px'; this.tooltip.placement === 'top' ? (this.style.top = top - hostHeight - this.arrowPart + 'px') : (this.style.top = bottom + this.arrowPart + 'px'); } /** * @param {?} left * @param {?} top * @param {?} right * @param {?} height * @param {?} hostHeight * @param {?} hostWidth * @return {?} */ setX(left, top, right, height, hostHeight, hostWidth) { this.style.top = top + (height - hostHeight) / 2 + 'px'; this.tooltip.placement === 'left' ? (this.style.left = left - hostWidth - this.arrowPart + 'px') : (this.style.left = right + this.arrowPart + 'px'); } } TooltipComponent.decorators = [ { type: Component, args: [{ selector: 'p-tooltip', host: { role: 'tooltip', }, template: ` <div #container class="{{ classes }}" [ngStyle]="style"> <div class="tooltip-arrow arrow"></div> <div class="tooltip-inner"><ng-content></ng-content></div> </div> `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None }] } ]; /** @nocollapse */ TooltipComponent.ctorParameters = () => [ { type: undefined, decorators: [{ type: Inject, args: ['TOOLTIP_PROVIDER',] }] }, { type: ChangeDetectorRef } ]; TooltipComponent.propDecorators = { container: [{ type: ViewChild, args: ['container',] }] }; if (false) { /** @type {?} */ TooltipComponent.prototype.style; /** @type {?} */ TooltipComponent.prototype.container; /** @type {?} */ TooltipComponent.prototype.arrowPart; /** @type {?} */ TooltipComponent.prototype.tooltip; /** * @type {?} * @protected */ TooltipComponent.prototype.cdRef; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4LXBlcmZvcm1hbmNlLXVpL3VpLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvdG9vbHRpcC90b29sdGlwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLE1BQU0sRUFFTixVQUFVLEVBQ1YsaUJBQWlCLEVBQ2pCLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQWlCdkIsTUFBTSxPQUFPLGdCQUFnQjs7Ozs7SUFVM0IsWUFBK0MsT0FBdUIsRUFBWSxLQUF3QjtRQUEzRCxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUFZLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBTjFHLFVBQUssR0FBdUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQztRQUl4RixjQUFTLEdBQVcsQ0FBQyxDQUFDO0lBRXVGLENBQUM7Ozs7SUFUOUcsSUFBSSxPQUFPO1FBQ1QsT0FBTyxzQkFBc0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLE9BQU8sQ0FBQztJQUM3RCxDQUFDOzs7O0lBU0QsZUFBZTtRQUNiLFVBQVU7OztRQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsS0FBSyxxQkFBUSxJQUFJLENBQUMsS0FBSyxJQUFFLFVBQVUsRUFBRSxTQUFTLEdBQUUsQ0FBQztZQUN0RCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzdCLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7Ozs7SUFFRCxXQUFXO2NBQ0gsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxP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LEdBQUcsSUFBSSxHQUFHLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUM5RCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUN4RCxDQUFDOzs7WUF6RUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxXQUFXO2dCQUNyQixJQUFJLEVBQUU7b0JBQ0osSUFBSSxFQUFFLFNBQVM7aUJBQ2hCO2dCQUNELFFBQVEsRUFBRTs7Ozs7R0FLVDtnQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtnQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7Ozs7NENBV2MsTUFBTSxTQUFDLGtCQUFrQjtZQTdCdEMsaUJBQWlCOzs7d0JBeUJoQixTQUFTLFNBQUMsV0FBVzs7OztJQUZ0QixpQ0FBd0Y7O0lBRXhGLHFDQUE4Qzs7SUFFOUMscUNBQXNCOztJQUVWLG1DQUEwRDs7Ozs7SUFBRSxpQ0FBa0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgSW5qZWN0LFxuICBBZnRlclZpZXdJbml0LFxuICBFbGVtZW50UmVmLFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwLXRvb2x0aXAnLFxuICBob3N0OiB7XG4gICAgcm9sZTogJ3Rvb2x0aXAnLFxuICB9LFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgI2NvbnRhaW5lciBjbGFzcz1cInt7IGNsYXNzZXMgfX1cIiBbbmdTdHlsZV09XCJzdHlsZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInRvb2x0aXAtYXJyb3cgYXJyb3dcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0b29sdGlwLWlubmVyXCI+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PjwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgVG9vbHRpcENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBnZXQgY2xhc3NlcygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgdG9vbHRpcCBicy10b29sdGlwLSR7dGhpcy50b29sdGlwLnBsYWNlbWVudH0gc2hvd2A7XG4gIH1cbiAgc3R5bGU6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIH0gPSB7IHBvc2l0aW9uOiAnZml4ZWQnLCB2aXNpYmlsaXR5OiAnaGlkZGVuJyB9O1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicpIGNvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICBhcnJvd1BhcnQ6IG51bWJlciA9IDU7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdCgnVE9PTFRJUF9QUk9WSURFUicpIHB1YmxpYyB0b29sdGlwOiBUb29sdGlwLkNvbmZpZywgcHJvdGVjdGVkIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNldFBvc2l0aW9uKCk7XG4gICAgICB0aGlzLnN0eWxlID0geyAuLi50aGlzLnN0eWxlLCB2aXNpYmlsaXR5OiAndmlzaWJsZScgfTtcbiAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgc2V0UG9zaXRpb24oKSB7XG4gICAgY29uc3QgeyBsZWZ0LCByaWdodCwgdG9wLCBib3R0b20sIHdpZHRoLCBoZWlnaHQgfSA9IHRoaXMudG9vbHRpcC5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHsgd2lkdGg6IGhvc3RXaWR0aCwgaGVpZ2h0OiBob3N0SGVpZ2h0IH0gPSB0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHsgaW5uZXJIZWlnaHQsIGlubmVyV2lkdGggfSA9IHdpbmRvdztcblxuICAgIHN3aXRjaCAodGhpcy50b29sdGlwLnBsYWNlbWVudCkge1xuICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgaWYgKHRvcCAtIGhvc3RIZWlnaHQgLSB0aGlzLmFycm93UGFydCA8IDApIHRoaXMudG9vbHRpcC5wbGFjZW1lbnQgPSAnYm90dG9tJztcbiAgICAgICAgdGhpcy5zZXRZKGxlZnQsIHRvcCwgYm90dG9tLCB3aWR0aCwgaG9zdEhlaWdodCwgaG9zdFdpZHRoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICBpZiAoYm90dG9tICsgaG9zdEhlaWdodCArIHRoaXMuYXJyb3dQYXJ0ID4gaW5uZXJIZWlnaHQpIHRoaXMudG9vbHRpcC5wbGFjZW1lbnQgPSAndG9wJztcbiAgICAgICAgdGhpcy5zZXRZKGxlZnQsIHRvcCwgYm90dG9tLCB3aWR0aCwgaG9zdEhlaWdodCwgaG9zdFdpZHRoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgaWYgKGxlZnQgLSBob3N0V2lkdGggLSB0aGlzLmFycm93UGFydCA8IDApIHRoaXMudG9vbHRpcC5wbGFjZW1lbnQgPSAncmlnaHQnO1xuICAgICAgICB0aGlzLnNldFgobGVmdCwgdG9wLCByaWdodCwgaGVpZ2h0LCBob3N0SGVpZ2h0LCBob3N0V2lkdGgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgaWYgKHJpZ2h0ICsgaG9zdFdpZHRoICsgdGhpcy5hcnJvd1BhcnQgPiBpbm5lcldpZHRoKSB0aGlzLnRvb2x0aXAucGxhY2VtZW50ID0gJ2xlZnQnO1xuICAgICAgICB0aGlzLnNldFgobGVmdCwgdG9wLCByaWdodCwgaGVpZ2h0LCBob3N0SGVpZ2h0LCBob3N0V2lkdGgpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBzZXRZKGxlZnQ6IG51bWJlciwgdG9wOiBudW1iZXIsIGJvdHRvbTogbnVtYmVyLCB3aWR0aDogbnVtYmVyLCBob3N0SGVpZ2h0OiBudW1iZXIsIGhvc3RXaWR0aDogbnVtYmVyKSB7XG4gICAgdGhpcy5zdHlsZS5sZWZ0ID0gbGVmdCArICh3aWR0aCAtIGhvc3RXaWR0aCkgLyAyICsgJ3B4JztcblxuICAgIHRoaXMudG9vbHRpcC5wbGFjZW1lbnQgPT09ICd0b3AnXG4gICAgICA/ICh0aGlzLnN0eWxlLnRvcCA9IHRvcCAtIGhvc3RIZWlnaHQgLSB0aGlzLmFycm93UGFydCArICdweCcpXG4gICAgICA6ICh0aGlzLnN0eWxlLnRvcCA9IGJvdHRvbSArIHRoaXMuYXJyb3dQYXJ0ICsgJ3B4Jyk7XG4gIH1cblxuICBzZXRYKGxlZnQ6IG51bWJlciwgdG9wOiBudW1iZXIsIHJpZ2h0OiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCBob3N0SGVpZ2h0OiBudW1iZXIsIGhvc3RXaWR0aDogbnVtYmVyKSB7XG4gICAgdGhpcy5zdHlsZS50b3AgPSB0b3AgKyAoaGVpZ2h0IC0gaG9zdEhlaWdodCkgLyAyICsgJ3B4JztcblxuICAgIHRoaXMudG9vbHRpcC5wbGFjZW1lbnQgPT09ICdsZWZ0J1xuICAgICAgPyAodGhpcy5zdHlsZS5sZWZ0ID0gbGVmdCAtIGhvc3RXaWR0aCAtIHRoaXMuYXJyb3dQYXJ0ICsgJ3B4JylcbiAgICAgIDogKHRoaXMuc3R5bGUubGVmdCA9IHJpZ2h0ICsgdGhpcy5hcnJvd1BhcnQgKyAncHgnKTtcbiAgfVxufVxuIl19