com.phloxui
Version:
PhloxUI Ng2+ Framework
852 lines (851 loc) • 76.3 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, ElementRef, Input, Output, EventEmitter } from '@angular/core';
import { AbstractHasData } from './AbstractHasData';
import { ComponentPopoverModel } from './model/models';
import { NeedFocusService } from '../service/NeedFocusService.service';
import { Option } from '../decorator/Option.decorator';
import { EventUtils } from '../share/utils/EventUtils';
import { SHOW_EVENT, BEFORE_SHOW_EVENT, HIDE_EVENT, BEFORE_HIDE_EVENT } from '../share/CustomEventType';
const /** @type {?} */ HIDE_ON_CLICK_DELAY = 100;
const /** @type {?} */ TYPE_NAME = "phx-component-popover";
const /** @type {?} */ LEFT = 'left';
const /** @type {?} */ RIGHT = 'right';
const /** @type {?} */ TOP = 'top';
const /** @type {?} */ BOTTOM = 'bottom';
export class ComponentPopover extends AbstractHasData {
/**
* @param {?} elementRef
* @param {?} needFocusService
*/
constructor(elementRef, needFocusService) {
super(elementRef);
this.ARROW_GAP = 5;
this.MIN_HEIGHT = 40;
this.needFocusService = needFocusService;
this._show = false;
this.defaultArrowTop = 10;
this.showEvent = new EventEmitter();
this.beforeShowEvent = new EventEmitter();
this.hideEvent = new EventEmitter();
this.beforeHideEvent = new EventEmitter();
this._compClicked = false;
// when wrapper finished render
this._componentHandler = (result) => {
let /** @type {?} */ comInstance = null;
if (result !== null && typeof result !== 'undefined') {
comInstance = result.instance;
}
if (this.data !== null && typeof this.data !== 'undefined' && comInstance !== null) {
if (typeof comInstance.setData === 'function') {
comInstance.setData(this.data);
}
}
if (typeof comInstance.getBeforeClickEvent === 'function' && typeof comInstance.getClickEvent === 'function') {
// If the component has before/after click implemented, use them.
comInstance.getBeforeClickEvent().subscribe(() => {
this._compClicked = true;
});
comInstance.getClickEvent().subscribe(() => {
if (this.hideOnClick && this.needFocusService) {
this.hide();
}
});
}
else if (comInstance.elementRef && comInstance.elementRef.nativeElement) {
// Else, use jquery event.
let /** @type {?} */ comp = $(comInstance.elementRef.nativeElement);
comp.mousedown(() => {
this._compClicked = true;
});
}
if (this.componentHandler !== null && this.componentHandler !== undefined) {
this.componentHandler.call(this, result);
}
this.compoWrapInstance = comInstance;
};
if (window.history && window.history.pushState) {
$(window).on('popstate', (event) => {
this.hide();
});
}
}
/**
* @return {?}
*/
ngOnInit() {
super.ngOnInit();
if (this.position === null || typeof this.position === 'undefined') {
this.position = LEFT;
}
if (this.autoFocus === null || typeof this.autoFocus === 'undefined') {
this.autoFocus = true;
}
if (this.hideOnClick === null || typeof this.hideOnClick === 'undefined') {
this.hideOnClick = false;
}
// this.render();
this.showPopover(this._show);
}
/**
* @param {?} changes
* @return {?}
*/
ngOnChanges(changes) {
if (changes['position'] !== null && typeof changes['position'] !== 'undefined') {
let /** @type {?} */ oldVal = changes['position'].previousValue;
let /** @type {?} */ newVal = changes['position'].currentValue;
if (oldVal !== newVal) {
this.render();
}
}
}
/**
* @return {?}
*/
render() {
// force show to save width and height before detach
$(this.elementRef.nativeElement).children().first().addClass('show');
this._popoverWidth = 0;
this._popoverHeight = 0;
let /** @type {?} */ popoverElement = $(this.elementRef.nativeElement);
if (popoverElement !== undefined) {
this._popoverWidth = popoverElement.children().first().outerWidth();
this._popoverHeight = popoverElement.children().first().outerHeight();
}
// remove dom and save them in RAM
this.nativeElement = $(this.elementRef.nativeElement).detach();
}
/**
* @param {?} isShow
* @param {?=} $event
* @param {?=} fireEvent
* @return {?}
*/
showPopover(isShow, $event, fireEvent) {
if (fireEvent === null || fireEvent === undefined) {
fireEvent = true;
}
if (isShow) {
EventUtils.handleBrowserEvent(this, 'beforeShowEvent', $event, fireEvent, ($event) => {
// doEvent
this._show = isShow;
$(this.nativeElement).children().first().addClass('show');
// append dom
$("body").append(this.nativeElement);
if (this.needFocusService !== null) {
if (this.autoFocus) {
this.needFocusService.setFocusingComponent(this);
}
}
}, ($event) => {
// emitBeforeEvent
this.emitBeforeShowEvent($event);
}, ($event) => {
// emitAfterEvent
this.emitShowEvent($event);
}, ($event) => {
// doPrevented
});
}
else {
EventUtils.handleBrowserEvent(this, 'beforeHideEvent', $event, fireEvent, ($event) => {
// doEvent
this._show = isShow;
$(this.nativeElement).children().first().removeClass('show');
if (this.needFocusService !== null) {
if (this.autoFocus && this.needFocusService.getFocusingComponent() === this) {
this.needFocusService.resetFocusingComponent();
}
}
}, ($event) => {
// emitBeforeEvent
this.emitBeforeHideEvent($event);
}, ($event) => {
// emitAfterEvent
this.emitHideEvent($event);
}, ($event) => {
// doPrevented
});
}
}
/**
* @param {?=} $event
* @return {?}
*/
emitBeforeShowEvent($event) {
let /** @type {?} */ eventData = null;
// emit event
let /** @type {?} */ data = eventData;
let /** @type {?} */ ev = EventUtils.newCustomEvent(BEFORE_SHOW_EVENT, this, data, $event);
if (this.beforeShowEvent !== null && this.beforeShowEvent !== undefined) {
this.beforeShowEvent.emit(ev);
}
}
/**
* @param {?=} $event
* @return {?}
*/
emitShowEvent($event) {
let /** @type {?} */ eventData = null;
// emit event
let /** @type {?} */ data = eventData;
let /** @type {?} */ ev = EventUtils.newCustomEvent(SHOW_EVENT, this, data, $event);
if (this.showEvent !== null && this.showEvent !== undefined) {
this.showEvent.emit(ev);
}
}
/**
* @param {?=} $event
* @return {?}
*/
emitBeforeHideEvent($event) {
let /** @type {?} */ eventData = null;
// emit event
let /** @type {?} */ data = eventData;
let /** @type {?} */ ev = EventUtils.newCustomEvent(BEFORE_HIDE_EVENT, this, data, $event);
if (this.beforeHideEvent !== null && this.beforeHideEvent !== undefined) {
this.beforeHideEvent.emit(ev);
}
}
/**
* @param {?=} $event
* @return {?}
*/
emitHideEvent($event) {
let /** @type {?} */ eventData = null;
// emit event
let /** @type {?} */ data = eventData;
let /** @type {?} */ ev = EventUtils.newCustomEvent(HIDE_EVENT, this, data, $event);
if (this.hideEvent !== null && this.hideEvent !== undefined) {
this.hideEvent.emit(ev);
}
}
/**
* @param {?} $event
* @return {?}
*/
_doFocus($event) {
// do something when focus
}
/**
* @param {?} $event
* @return {?}
*/
_doLostFocus($event) {
if (this.compoWrapInstance !== null && this.compoWrapInstance !== undefined) {
// If the component has click event, we've to wait for click event to be completely performed before hide.
if (typeof this.compoWrapInstance.getBeforeClickEvent === 'function' && typeof this.compoWrapInstance.getClickEvent === 'function') {
// The component has click event implemented. We'll use before/after click events.
setTimeout(() => {
if (!this._compClicked) {
// Auto hide this popup if it wasn't blurred from component clicked.
this.hide();
}
else {
$(this.nativeElement).find(".fake").focus();
this._compClicked = false;
}
}, HIDE_ON_CLICK_DELAY);
}
else {
// If not, use jquery event.
setTimeout(() => {
if (!this._compClicked) {
// Auto hide this popup if it wasn't blurred from component clicked.
this.hide();
}
else {
if (this.hideOnClick) {
this.hide();
}
else {
$(this.nativeElement).find(".fake").focus();
}
this._compClicked = false;
}
}, HIDE_ON_CLICK_DELAY);
}
}
else {
// Else, hide it immediately.
this.hide();
}
}
/**
* @param {?} event
* @return {?}
*/
onFocus(event) {
$(this.nativeElement).find(".fake").focus();
}
/**
* @param {?} event
* @return {?}
*/
onLostFocus(event) {
$(this.nativeElement).find(".fake").blur();
}
/**
* @return {?}
*/
isModelEmpty() {
if (this.model === null || typeof this.model === 'undefined') {
return true;
}
return false;
}
/**
* @param {?} top
* @return {?}
*/
setArrowTop(top) {
if (top === null || typeof top === 'undefined') {
return;
}
let /** @type {?} */ contWrapElement = $(this.nativeElement).find('.container-wrapper');
if (typeof contWrapElement !== 'undefined') {
if (typeof $(contWrapElement).find('.container-after') !== 'undefined') {
$(contWrapElement).find('.container-after').css("top", top);
}
if (typeof $(contWrapElement).find('.container-before') !== 'undefined') {
$(contWrapElement).find('.container-before').css("top", top - 1);
}
}
}
/**
* @param {?} left
* @return {?}
*/
setArrowLeft(left) {
if (left === null || typeof left === 'undefined') {
return;
}
let /** @type {?} */ contWrapElement = $(this.nativeElement).find('.container-wrapper');
if (typeof contWrapElement !== 'undefined') {
if (typeof $(contWrapElement).find('.container-after') !== 'undefined') {
$(contWrapElement).find('.container-after').css("left", left);
}
if (typeof $(contWrapElement).find('.container-before') !== 'undefined') {
$(contWrapElement).find('.container-before').css("left", left - 1);
}
}
}
/**
* @return {?}
*/
getPosition() {
if (this.position !== null && typeof this.position !== 'undefined') {
if (LEFT === this.position) {
return LEFT;
}
else if (RIGHT === this.position) {
return RIGHT;
}
else if (BOTTOM === this.position) {
return BOTTOM;
}
else if (TOP === this.position) {
return TOP;
}
}
// default is left
return LEFT;
}
/**
* @param {?} positionX
* @param {?} positionY
* @param {?=} $event
* @param {?=} fireEvent
* @return {?}
*/
showAt(positionX, positionY, $event, fireEvent) {
if (positionX == null && positionY == null) {
return;
}
if (positionX == null) {
positionX = 0;
}
if (positionY == null) {
positionY = 0;
}
$(this.nativeElement).children().first().css('top', positionX);
$(this.nativeElement).children().first().css('left', positionY);
this.showPopover(true, $event, fireEvent);
// let data: any = null;
// let ev = EventUtils.newCustomEvent(POPOVER_SHOW_EVENT, this, data, null);
//
// this.showEvent.emit(ev);
}
/**
* @param {?=} $event
* @param {?=} fireEvent
* @return {?}
*/
show($event, fireEvent) {
let /** @type {?} */ byPassModel = false;
if (this.anchor !== null && typeof this.anchor !== 'undefined') {
let /** @type {?} */ anchorElement = $(this.anchor);
if (anchorElement !== null && typeof anchorElement !== 'undefined') {
let /** @type {?} */ top = 0;
let /** @type {?} */ left = 0;
let /** @type {?} */ height = 0;
let /** @type {?} */ width = 0;
if (typeof anchorElement.offset() !== 'undefined') {
top = anchorElement.offset().top;
left = anchorElement.offset().left;
height = anchorElement.outerHeight();
width = anchorElement.outerWidth();
}
let /** @type {?} */ halfHeight = height / 2;
let /** @type {?} */ finalTop = top;
let /** @type {?} */ finalLeft = left;
if (this.position === LEFT) {
// arrow right popover left
finalLeft = left - this._popoverWidth - this.ARROW_GAP - 10;
finalTop = top - halfHeight;
}
else if (this.position === RIGHT) {
// arrow left popover right
finalLeft = left + width + this.ARROW_GAP + 10;
finalTop = top - halfHeight;
}
else if (this.position === TOP) {
// arrow bottom popover top
finalLeft = finalLeft + 15;
finalTop = top - this._popoverHeight - this.ARROW_GAP - 9;
}
else if (this.position === BOTTOM) {
// arrow top popover bottom
finalLeft = finalLeft + 15;
finalTop = top + height + this.ARROW_GAP + 9.5;
}
$(this.nativeElement).children().first().css('top', finalTop);
$(this.nativeElement).children().first().css('left', finalLeft);
byPassModel = true;
}
}
if (this.model !== null && typeof this.model !== 'undefined' && !byPassModel) {
if (this.model.top != null) {
$(this.nativeElement).children().first().css('top', this.model.top);
}
if (this.model.left != null) {
$(this.nativeElement).children().first().css('left', this.model.left);
}
}
this.showPopover(true, $event, fireEvent);
}
/**
* @param {?=} $event
* @param {?=} fireEvent
* @return {?}
*/
hide($event, fireEvent) {
this.showPopover(false, $event, fireEvent);
}
/**
* @return {?}
*/
getData() {
return this.data;
}
/**
* @param {?} data
* @return {?}
*/
setData(data) {
this.data = data;
}
/**
* @return {?}
*/
getModel() {
return this.model;
}
/**
* @param {?} model
* @return {?}
*/
setModel(model) {
this.model = model;
}
/**
* @return {?}
*/
isShow() {
return this._show;
}
/**
* @return {?}
*/
isSelfDataDirty() {
return false;
}
/**
* @param {?} data
* @return {?}
*/
selfSaveData(data) {
}
/**
* @return {?}
*/
selfResetData() {
}
/**
* @return {?}
*/
getShowEvent() {
return this.showEvent;
}
/**
* @param {?} event
* @return {?}
*/
setShowEvent(event) {
this.showEvent = event;
}
/**
* @return {?}
*/
getHideEvent() {
return this.hideEvent;
}
/**
* @param {?} event
* @return {?}
*/
setHideEvent(event) {
this.hideEvent = event;
}
/**
* @param {?} autoFocus
* @return {?}
*/
setAutoFocus(autoFocus) {
this.autoFocus = autoFocus;
}
/**
* @return {?}
*/
isAutoFocus() {
return this.autoFocus;
}
/**
* @param {?} hideOnClick
* @return {?}
*/
setHideOnClick(hideOnClick) {
this.hideOnClick = hideOnClick;
}
/**
* @return {?}
*/
isHideOnClick() {
return this.hideOnClick;
}
/**
* @param {?} componentHandler
* @return {?}
*/
setComponentHandler(componentHandler) {
this.componentHandler = componentHandler;
}
/**
* @return {?}
*/
getComponentHandler() {
return this.componentHandler;
}
/**
* @return {?}
*/
getI18NKey() {
return "componentPopover";
}
/**
* @return {?}
*/
doPreload() { return new Promise((resolve, reject) => { resolve(null); }); }
/**
* @return {?}
*/
doLoaded() {
}
/**
* @return {?}
*/
getPopoverWidth() {
return this.model.popoverWidth;
}
/**
* @return {?}
*/
getPopoverHeight() {
return this.model.popoverHeight ? this.model.popoverHeight : this.MIN_HEIGHT + 'pt';
}
/**
* @return {?}
*/
isShowArrow() {
return this.model.showArrow;
}
/**
* @return {?}
*/
getComponentInstance() {
return this.compoWrapInstance;
}
/**
* @return {?}
*/
getStyleClasses() {
if (this.model !== null && this.model !== undefined) {
if (this.model.styleClasses !== null && this.model.styleClasses !== undefined) {
return this.model.styleClasses;
}
}
return [];
}
}
ComponentPopover.TYPE_NAME = TYPE_NAME;
ComponentPopover.LEFT = LEFT;
ComponentPopover.RIGHT = RIGHT;
ComponentPopover.TOP = TOP;
ComponentPopover.BOTTOM = BOTTOM;
ComponentPopover.decorators = [
{ type: Component, args: [{
moduleId: module.id,
selector: TYPE_NAME,
template: `<div class="phx-component-popover" [ngClass]="getStyleClasses()" [style.width]="getPopoverWidth()" [style.height]="getPopoverHeight()" [class.show]="isShow()" [class.left]="getPosition() === 'left'" [class.right]="getPosition() === 'right'"
[class.top]="getPosition() === 'top'" [class.bottom]="getPosition() === 'bottom'">
<div class="container-wrapper" [style.width]="getPopoverWidth()" [style.height]="getPopoverHeight()">
<div class="container">
<phx-component-wrapper *ngIf="!isModelEmpty()" [type]="getModel().type" [data]="getData()" [handler]="_componentHandler" [dataParent]="this" [model]="getModel().model"></phx-component-wrapper>
</div>
<div *ngIf="isShowArrow()" class="container-before"></div>
<div *ngIf="isShowArrow()" class="container-after"></div>
</div>
<button type="button" class="fake" (focusin)="_doFocus($event)" (blur)="_doLostFocus($event)"></button>
</div>
`
},] },
];
/** @nocollapse */
ComponentPopover.ctorParameters = () => [
{ type: ElementRef, },
{ type: NeedFocusService, },
];
ComponentPopover.propDecorators = {
"dataParent": [{ type: Input },],
"ignoreParentData": [{ type: Input },],
"data": [{ type: Input },],
"ignoreParentDisabled": [{ type: Input },],
"delegateHistory": [{ type: Input },],
"onDisabled": [{ type: Input },],
"onEnabled": [{ type: Input },],
"loadingEnabled": [{ type: Input },],
"i18nKey": [{ type: Input },],
"bypass": [{ type: Input, args: ['i18nBypass',] },],
"options": [{ type: Input },],
"disabled": [{ type: Input },],
"styleClasses": [{ type: Input },],
"model": [{ type: Input },],
"position": [{ type: Input },],
"anchor": [{ type: Input },],
"autoFocus": [{ type: Input },],
"hideOnClick": [{ type: Input },],
"componentHandler": [{ type: Input },],
"loadEvent": [{ type: Output, args: ['phxLoad',] },],
"beforeShowEvent": [{ type: Output, args: ['phxBeforeShow',] },],
"showEvent": [{ type: Output, args: ['phxShow',] },],
"beforeHideEvent": [{ type: Output, args: ['phxBeforeHide',] },],
"hideEvent": [{ type: Output, args: ['phxHide',] },],
};
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], ComponentPopover.prototype, "dataParent", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], ComponentPopover.prototype, "ignoreParentData", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], ComponentPopover.prototype, "data", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], ComponentPopover.prototype, "ignoreParentDisabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], ComponentPopover.prototype, "delegateHistory", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Function)
], ComponentPopover.prototype, "onDisabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Function)
], ComponentPopover.prototype, "onEnabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], ComponentPopover.prototype, "loadingEnabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], ComponentPopover.prototype, "i18nKey", void 0);
tslib_1.__decorate([
Option('i18nBypass'),
tslib_1.__metadata("design:type", Boolean)
], ComponentPopover.prototype, "bypass", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], ComponentPopover.prototype, "disabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Array)
], ComponentPopover.prototype, "styleClasses", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", ComponentPopoverModel)
], ComponentPopover.prototype, "model", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], ComponentPopover.prototype, "position", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], ComponentPopover.prototype, "anchor", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], ComponentPopover.prototype, "autoFocus", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], ComponentPopover.prototype, "hideOnClick", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Function)
], ComponentPopover.prototype, "componentHandler", void 0);
tslib_1.__decorate([
Option('load'),
tslib_1.__metadata("design:type", EventEmitter)
], ComponentPopover.prototype, "loadEvent", void 0);
tslib_1.__decorate([
Option('beforeShow'),
tslib_1.__metadata("design:type", EventEmitter)
], ComponentPopover.prototype, "beforeShowEvent", void 0);
tslib_1.__decorate([
Option('show'),
tslib_1.__metadata("design:type", EventEmitter)
], ComponentPopover.prototype, "showEvent", void 0);
tslib_1.__decorate([
Option('beforeHide'),
tslib_1.__metadata("design:type", EventEmitter)
], ComponentPopover.prototype, "beforeHideEvent", void 0);
tslib_1.__decorate([
Option('hide'),
tslib_1.__metadata("design:type", EventEmitter)
], ComponentPopover.prototype, "hideEvent", void 0);
function ComponentPopover_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
ComponentPopover.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
ComponentPopover.ctorParameters;
/** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
ComponentPopover.propDecorators;
/** @type {?} */
ComponentPopover.TYPE_NAME;
/** @type {?} */
ComponentPopover.LEFT;
/** @type {?} */
ComponentPopover.RIGHT;
/** @type {?} */
ComponentPopover.TOP;
/** @type {?} */
ComponentPopover.BOTTOM;
/** @type {?} */
ComponentPopover.prototype.dataParent;
/** @type {?} */
ComponentPopover.prototype.ignoreParentData;
/** @type {?} */
ComponentPopover.prototype.data;
/** @type {?} */
ComponentPopover.prototype.ignoreParentDisabled;
/** @type {?} */
ComponentPopover.prototype.delegateHistory;
/** @type {?} */
ComponentPopover.prototype.onDisabled;
/** @type {?} */
ComponentPopover.prototype.onEnabled;
/** @type {?} */
ComponentPopover.prototype.loadingEnabled;
/** @type {?} */
ComponentPopover.prototype.i18nKey;
/** @type {?} */
ComponentPopover.prototype.bypass;
/** @type {?} */
ComponentPopover.prototype.options;
/** @type {?} */
ComponentPopover.prototype.disabled;
/** @type {?} */
ComponentPopover.prototype.styleClasses;
/** @type {?} */
ComponentPopover.prototype.model;
/** @type {?} */
ComponentPopover.prototype.position;
/** @type {?} */
ComponentPopover.prototype.anchor;
/** @type {?} */
ComponentPopover.prototype.autoFocus;
/** @type {?} */
ComponentPopover.prototype.hideOnClick;
/** @type {?} */
ComponentPopover.prototype.componentHandler;
/** @type {?} */
ComponentPopover.prototype.ARROW_GAP;
/** @type {?} */
ComponentPopover.prototype.MIN_HEIGHT;
/** @type {?} */
ComponentPopover.prototype.loadEvent;
/** @type {?} */
ComponentPopover.prototype.beforeShowEvent;
/** @type {?} */
ComponentPopover.prototype.showEvent;
/** @type {?} */
ComponentPopover.prototype.beforeHideEvent;
/** @type {?} */
ComponentPopover.prototype.hideEvent;
/** @type {?} */
ComponentPopover.prototype._show;
/** @type {?} */
ComponentPopover.prototype.defaultArrowTop;
/** @type {?} */
ComponentPopover.prototype.compoWrapInstance;
/** @type {?} */
ComponentPopover.prototype.needFocusService;
/** @type {?} */
ComponentPopover.prototype.nativeElement;
/** @type {?} */
ComponentPopover.prototype._popoverWidth;
/** @type {?} */
ComponentPopover.prototype._popoverHeight;
/** @type {?} */
ComponentPopover.prototype._compClicked;
/** @type {?} */
ComponentPopover.prototype._componentHandler;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tcG9uZW50UG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9jb20ucGhsb3h1aS8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnQvQ29tcG9uZW50UG9wb3Zlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFzQixZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0csT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXBELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUl4Ryx1QkFBTSxtQkFBbUIsR0FBVyxHQUFHLENBQUM7QUFDeEMsdUJBQU0sU0FBUyxHQUFXLHVCQUF1QixDQUFDO0FBRWxELHVCQUFNLElBQUksR0FBVyxNQUFNLENBQUM7QUFDNUIsdUJBQU0sS0FBSyxHQUFXLE9BQU8sQ0FBQztBQUM5Qix1QkFBTSxHQUFHLEdBQVcsS0FBSyxDQUFDO0FBQzFCLHVCQUFNLE1BQU0sR0FBVyxRQUFRLENBQUM7QUFvQmhDLE1BQU0sdUJBQXdCLFNBQVEsZUFBZTs7Ozs7SUF3R25ELFlBQVksVUFBc0IsRUFBRSxnQkFBa0M7UUFDcEUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO3lCQWpDUSxDQUFDOzBCQUNBLEVBQUU7UUFpQzdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FB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