@ngx-performance-ui/ui
Version:
Ngx Performance UI - UI
103 lines • 10.3 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { ChangeDetectorRef, Component, Inject } from '@angular/core';
import { TooltipComponent } from '../tooltip/tooltip.component';
export class PopoverComponent extends TooltipComponent {
/**
* @param {?} popover
* @param {?} cdRef
*/
constructor(popover, cdRef) {
super(popover, cdRef);
this.popover = popover;
this.cdRef = cdRef;
this.arrowStyle = {};
this.arrowPart = 10;
}
/**
* @return {?}
*/
get classes() {
return `popover fade bs-popover-${this.popover.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.popover.element.getBoundingClientRect();
const { width: hostWidth, height: hostHeight } = this.container.nativeElement.getBoundingClientRect();
const { innerHeight, innerWidth } = window;
switch (this.popover.placement) {
case 'top':
if (top - hostHeight - this.arrowPart < 0)
this.popover.placement = 'bottom';
this.setY(left, top, bottom, width, hostHeight, hostWidth);
this.arrowStyle.left = hostWidth / 2 - 12 + 'px';
break;
case 'bottom':
if (bottom + hostHeight + this.arrowPart > innerHeight)
this.popover.placement = 'top';
this.setY(left, top, bottom, width, hostHeight, hostWidth);
this.arrowStyle.left = hostWidth / 2 - 12 + 'px';
break;
case 'left':
if (left - hostWidth - this.arrowPart < 0)
this.popover.placement = 'right';
this.setX(left, top, right, height, hostHeight, hostWidth);
this.arrowStyle.top = hostHeight / 2 - 12 + 'px';
break;
case 'right':
if (right + hostWidth + this.arrowPart > innerWidth)
this.popover.placement = 'left';
this.setX(left, top, right, height, hostHeight, hostWidth);
this.arrowStyle.top = hostHeight / 2 - 12 + 'px';
break;
}
}
}
PopoverComponent.decorators = [
{ type: Component, args: [{
selector: 'p-popover',
template: `
<div #container [ngStyle]="style" class="{{ classes }}">
<div [ngStyle]="arrowStyle" class="arrow"></div>
<h3 class="popover-header"><ng-content></ng-content></h3>
<div class="popover-body"><ng-content></ng-content></div>
</div>
`
}] }
];
/** @nocollapse */
PopoverComponent.ctorParameters = () => [
{ type: undefined, decorators: [{ type: Inject, args: ['POPOVER_PROVIDER',] }] },
{ type: ChangeDetectorRef }
];
if (false) {
/** @type {?} */
PopoverComponent.prototype.arrowStyle;
/** @type {?} */
PopoverComponent.prototype.arrowPart;
/** @type {?} */
PopoverComponent.prototype.popover;
/**
* @type {?}
* @protected
*/
PopoverComponent.prototype.cdRef;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4LXBlcmZvcm1hbmNlLXVpL3VpLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvcG9wb3Zlci9wb3BvdmVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQXlCLE1BQU0sZUFBZSxDQUFDO0FBRTVGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBWWhFLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxnQkFBZ0I7Ozs7O0lBU3BELFlBQStDLE9BQXVCLEVBQVksS0FBd0I7UUFDeEcsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUR1QixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUFZLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBUjFHLGVBQVUsR0FBdUMsRUFBRSxDQUFDO1FBTXBELGNBQVMsR0FBVyxFQUFFLENBQUM7SUFJdkIsQ0FBQzs7OztJQVJELElBQUksT0FBTztRQUNULE9BQU8sMkJBQTJCLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxPQUFPLENBQUM7SUFDbEUsQ0FBQzs7OztJQVFELGVBQWU7UUFDYixVQUFVOzs7UUFBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLEtBQUsscUJBQVEsSUFBSSxDQUFDLEtBQUssSUFBRSxVQUFVLEVBQUUsU0FBUyxHQUFFLENBQUM7WUFDdEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM3QixDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDOzs7O0lBRUQsV0FBVztjQUNILEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRTtjQUMxRixFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFO2NBQy9GLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU07UUFFMUMsUUFBUSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtZQUM5QixLQUFLLEtBQUs7Z0JBQ1IsSUFBSSxHQUFHLEdBQUcsVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQztvQkFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7Z0JBQzdFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDM0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsU0FBUyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO2dCQUNqRCxNQUFNO1lBQ1IsS0FBSyxRQUFRO2dCQUNYLElBQUksTUFBTSxHQUFHLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLFdBQVc7b0JBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO2dCQUN2RixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQzNELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxHQUFHLFNBQVMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztnQkFDakQsTUFBTTtZQUNSLEtBQUssTUFBTTtnQkFDVCxJQUFJLElBQUksR0FBRyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDO29CQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQztnQkFDNUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUMzRCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsR0FBRyxVQUFVLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7Z0JBQ2pELE1BQU07WUFDUixLQUFLLE9BQU87Z0JBQ1YsSUFBSSxLQUFLLEdBQUcsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsVUFBVTtvQkFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7Z0JBQ3JGLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDM0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEdBQUcsVUFBVSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO2dCQUNqRCxNQUFNO1NBQ1Q7SUFDSCxDQUFDOzs7WUExREYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxXQUFXO2dCQUNyQixRQUFRLEVBQUU7Ozs7OztHQU1UO2FBQ0Y7Ozs7NENBVWMsTUFBTSxTQUFDLGtCQUFrQjtZQXZCL0IsaUJBQWlCOzs7O0lBZXhCLHNDQUFvRDs7SUFNcEQscUNBQXVCOztJQUVYLG1DQUEwRDs7Ozs7SUFBRSxpQ0FBa0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbmplY3QsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBUb29sdGlwQ29tcG9uZW50IH0gZnJvbSAnLi4vdG9vbHRpcC90b29sdGlwLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3AtcG9wb3ZlcicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiAjY29udGFpbmVyIFtuZ1N0eWxlXT1cInN0eWxlXCIgY2xhc3M9XCJ7eyBjbGFzc2VzIH19XCI+XG4gICAgICA8ZGl2IFtuZ1N0eWxlXT1cImFycm93U3R5bGVcIiBjbGFzcz1cImFycm93XCI+PC9kaXY+XG4gICAgICA8aDMgY2xhc3M9XCJwb3BvdmVyLWhlYWRlclwiPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L2gzPlxuICAgICAgPGRpdiBjbGFzcz1cInBvcG92ZXItYm9keVwiPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgUG9wb3ZlckNvbXBvbmVudCBleHRlbmRzIFRvb2x0aXBDb21wb25lbnQge1xuICBhcnJvd1N0eWxlOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB9ID0ge307XG5cbiAgZ2V0IGNsYXNzZXMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYHBvcG92ZXIgZmFkZSBicy1wb3BvdmVyLSR7dGhpcy5wb3BvdmVyLnBsYWNlbWVudH0gc2hvd2A7XG4gIH1cblxuICBhcnJvd1BhcnQ6IG51bWJlciA9IDEwO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoJ1BPUE9WRVJfUFJPVklERVInKSBwdWJsaWMgcG9wb3ZlcjogVG9vbHRpcC5Db25maWcsIHByb3RlY3RlZCBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICBzdXBlcihwb3BvdmVyLCBjZFJlZik7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNldFBvc2l0aW9uKCk7XG4gICAgICB0aGlzLnN0eWxlID0geyAuLi50aGlzLnN0eWxlLCB2aXNpYmlsaXR5OiAndmlzaWJsZScgfTtcbiAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgc2V0UG9zaXRpb24oKSB7XG4gICAgY29uc3QgeyBsZWZ0LCByaWdodCwgdG9wLCBib3R0b20sIHdpZHRoLCBoZWlnaHQgfSA9IHRoaXMucG9wb3Zlci5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHsgd2lkdGg6IGhvc3RXaWR0aCwgaGVpZ2h0OiBob3N0SGVpZ2h0IH0gPSB0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHsgaW5uZXJIZWlnaHQsIGlubmVyV2lkdGggfSA9IHdpbmRvdztcblxuICAgIHN3aXRjaCAodGhpcy5wb3BvdmVyLnBsYWNlbWVudCkge1xuICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgaWYgKHRvcCAtIGhvc3RIZWlnaHQgLSB0aGlzLmFycm93UGFydCA8IDApIHRoaXMucG9wb3Zlci5wbGFjZW1lbnQgPSAnYm90dG9tJztcbiAgICAgICAgdGhpcy5zZXRZKGxlZnQsIHRvcCwgYm90dG9tLCB3aWR0aCwgaG9zdEhlaWdodCwgaG9zdFdpZHRoKTtcbiAgICAgICAgdGhpcy5hcnJvd1N0eWxlLmxlZnQgPSBob3N0V2lkdGggLyAyIC0gMTIgKyAncHgnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgIGlmIChib3R0b20gKyBob3N0SGVpZ2h0ICsgdGhpcy5hcnJvd1BhcnQgPiBpbm5lckhlaWdodCkgdGhpcy5wb3BvdmVyLnBsYWNlbWVudCA9ICd0b3AnO1xuICAgICAgICB0aGlzLnNldFkobGVmdCwgdG9wLCBib3R0b20sIHdpZHRoLCBob3N0SGVpZ2h0LCBob3N0V2lkdGgpO1xuICAgICAgICB0aGlzLmFycm93U3R5bGUubGVmdCA9IGhvc3RXaWR0aCAvIDIgLSAxMiArICdweCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgIGlmIChsZWZ0IC0gaG9zdFdpZHRoIC0gdGhpcy5hcnJvd1BhcnQgPCAwKSB0aGlzLnBvcG92ZXIucGxhY2VtZW50ID0gJ3JpZ2h0JztcbiAgICAgICAgdGhpcy5zZXRYKGxlZnQsIHRvcCwgcmlnaHQsIGhlaWdodCwgaG9zdEhlaWdodCwgaG9zdFdpZHRoKTtcbiAgICAgICAgdGhpcy5hcnJvd1N0eWxlLnRvcCA9IGhvc3RIZWlnaHQgLyAyIC0gMTIgKyAncHgnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgaWYgKHJpZ2h0ICsgaG9zdFdpZHRoICsgdGhpcy5hcnJvd1BhcnQgPiBpbm5lcldpZHRoKSB0aGlzLnBvcG92ZXIucGxhY2VtZW50ID0gJ2xlZnQnO1xuICAgICAgICB0aGlzLnNldFgobGVmdCwgdG9wLCByaWdodCwgaGVpZ2h0LCBob3N0SGVpZ2h0LCBob3N0V2lkdGgpO1xuICAgICAgICB0aGlzLmFycm93U3R5bGUudG9wID0gaG9zdEhlaWdodCAvIDIgLSAxMiArICdweCc7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxufVxuIl19