@ngx-performance-ui/ui
Version:
Ngx Performance UI - UI
136 lines • 13 kB
JavaScript
/**
* @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