UNPKG

@ngx-performance-ui/ui

Version:
103 lines 10.3 kB
/** * @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