ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
185 lines • 13.9 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @license
* Copyright Alibaba.com All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
*/
import { EventEmitter, Output, TemplateRef } from '@angular/core';
import { getPlacementName, isNotNil, DEFAULT_TOOLTIP_POSITIONS } from 'ng-zorro-antd/core';
/**
* Tooltip component. Also the base component for legacy components.
* @abstract
*/
export class NzTooltipBaseComponent {
/**
* @param {?} cdr
* @param {?=} noAnimation
*/
constructor(cdr, noAnimation) {
this.cdr = cdr;
this.noAnimation = noAnimation;
this.nzVisibleChange = new EventEmitter();
this._classMap = {};
this._hasBackdrop = false;
this._prefix = 'ant-tooltip-placement';
this._visible = false;
this._positions = [...DEFAULT_TOOLTIP_POSITIONS];
this._placement = 'top';
this._trigger = 'hover';
}
/**
* @return {?}
*/
get content() {
return this.nzContent !== undefined ? this.nzContent : this.nzContentTemplate;
}
/**
* @return {?}
*/
get title() {
return this.nzTitle !== undefined ? this.nzTitle : this.nzTitleTemplate;
}
/**
* @return {?}
*/
show() {
if (this.nzVisible) {
return;
}
if (!this.isTitleEmpty() || !this.isContentEmpty()) {
this.nzVisible = true;
this.nzVisibleChange.emit(true);
this.cdr.detectChanges();
}
}
/**
* @return {?}
*/
hide() {
if (!this.nzVisible) {
return;
}
this.nzVisible = false;
this.nzVisibleChange.emit(false);
this.cdr.detectChanges();
}
/**
* @return {?}
*/
updateByDirective() {
this.setClassMap();
this.cdr.detectChanges();
Promise.resolve().then((/**
* @return {?}
*/
() => {
this.updatePosition();
}));
}
/**
* Force the component to update its position.
* @return {?}
*/
updatePosition() {
if (this.origin && this.overlay && this.overlay.overlayRef) {
this.overlay.overlayRef.updatePosition();
}
}
/**
* @param {?} position
* @return {?}
*/
onPositionChange(position) {
this._placement = (/** @type {?} */ (getPlacementName(position)));
this.setClassMap();
this.cdr.detectChanges();
}
/**
* @return {?}
*/
setClassMap() {
this._classMap = {
[this.nzOverlayClassName]: true,
[`${this._prefix}-${this._placement}`]: true
};
}
/**
* @param {?} origin
* @return {?}
*/
setOverlayOrigin(origin) {
this.origin = origin;
this.cdr.markForCheck();
}
/**
* @private
* @return {?}
*/
isTitleEmpty() {
return this.title instanceof TemplateRef ? false : this.title === '' || !isNotNil(this.title);
}
/**
* @private
* @return {?}
*/
isContentEmpty() {
return this.content instanceof TemplateRef ? false : this.content === '' || !isNotNil(this.content);
}
}
NzTooltipBaseComponent.propDecorators = {
nzVisibleChange: [{ type: Output }]
};
if (false) {
/** @type {?} */
NzTooltipBaseComponent.prototype.nzTitle;
/** @type {?} */
NzTooltipBaseComponent.prototype.nzContent;
/** @type {?} */
NzTooltipBaseComponent.prototype.nzVisible;
/** @type {?} */
NzTooltipBaseComponent.prototype.nzPlacement;
/** @type {?} */
NzTooltipBaseComponent.prototype.nzOverlayClassName;
/** @type {?} */
NzTooltipBaseComponent.prototype.nzOverlayStyle;
/** @type {?} */
NzTooltipBaseComponent.prototype.nzMouseEnterDelay;
/** @type {?} */
NzTooltipBaseComponent.prototype.nzMouseLeaveDelay;
/** @type {?} */
NzTooltipBaseComponent.prototype.nzTrigger;
/** @type {?} */
NzTooltipBaseComponent.prototype.nzTitleTemplate;
/** @type {?} */
NzTooltipBaseComponent.prototype.nzContentTemplate;
/** @type {?} */
NzTooltipBaseComponent.prototype.nzVisibleChange;
/** @type {?} */
NzTooltipBaseComponent.prototype.overlay;
/** @type {?} */
NzTooltipBaseComponent.prototype.origin;
/** @type {?} */
NzTooltipBaseComponent.prototype._classMap;
/** @type {?} */
NzTooltipBaseComponent.prototype._hasBackdrop;
/** @type {?} */
NzTooltipBaseComponent.prototype._prefix;
/** @type {?} */
NzTooltipBaseComponent.prototype._visible;
/** @type {?} */
NzTooltipBaseComponent.prototype._positions;
/** @type {?} */
NzTooltipBaseComponent.prototype._placement;
/** @type {?} */
NzTooltipBaseComponent.prototype._trigger;
/** @type {?} */
NzTooltipBaseComponent.prototype.cdr;
/** @type {?} */
NzTooltipBaseComponent.prototype.noAnimation;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnotdG9vbHRpcC1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQvdG9vbHRpcC8iLCJzb3VyY2VzIjpbImJhc2UvbnotdG9vbHRpcC1iYXNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQWNBLE9BQU8sRUFBcUIsWUFBWSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixRQUFRLEVBQ1IseUJBQXlCLEVBSzFCLE1BQU0sb0JBQW9CLENBQUM7Ozs7O0FBTzVCLE1BQU0sT0FBZ0Isc0JBQXNCOzs7OztJQWtDMUMsWUFBbUIsR0FBc0IsRUFBUyxXQUFvQztRQUFuRSxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUFTLGdCQUFXLEdBQVgsV0FBVyxDQUF5QjtRQXJCbkUsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBS2pFLGNBQVMsR0FBcUIsRUFBRSxDQUFDO1FBQ2pDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLFlBQU8sR0FBRyx1QkFBdUIsQ0FBQztRQUNsQyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGVBQVUsR0FBNkIsQ0FBQyxHQUFHLHlCQUF5QixDQUFDLENBQUM7UUFDdEUsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixhQUFRLEdBQXFCLE9BQU8sQ0FBQztJQVVvRCxDQUFDOzs7O0lBUjFGLElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNoRixDQUFDOzs7O0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFD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LDJDQUE0Qjs7SUFDNUIsaURBQW1DOztJQUNuQyxtREFBcUM7O0lBRXJDLGlEQUFpRTs7SUFFakUseUNBQTZCOztJQUM3Qix3Q0FBeUI7O0lBRXpCLDJDQUFpQzs7SUFDakMsOENBQXFCOztJQUNyQix5Q0FBa0M7O0lBQ2xDLDBDQUFpQjs7SUFDakIsNENBQXNFOztJQUN0RSw0Q0FBbUI7O0lBQ25CLDBDQUFxQzs7SUFVekIscUNBQTZCOztJQUFFLDZDQUEyQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQge1xuICBDZGtDb25uZWN0ZWRPdmVybGF5LFxuICBDZGtPdmVybGF5T3JpZ2luLFxuICBDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25DaGFuZ2UsXG4gIENvbm5lY3Rpb25Qb3NpdGlvblBhaXJcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgZ2V0UGxhY2VtZW50TmFtZSxcbiAgaXNOb3ROaWwsXG4gIERFRkFVTFRfVE9PTFRJUF9QT1NJVElPTlMsXG4gIE5nQ2xhc3NJbnRlcmZhY2UsXG4gIE5nU3R5bGVJbnRlcmZhY2UsXG4gIE56Tm9BbmltYXRpb25EaXJlY3RpdmUsXG4gIE56VFNUeXBlXG59IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZSc7XG5cbmltcG9ydCB7IE56VG9vbHRpcFRyaWdnZXIgfSBmcm9tICcuLi9uei10b29sdGlwLmRlZmluaXRpb25zJztcblxuLyoqXG4gKiBUb29sdGlwIGNvbXBvbmVudC4gQWxzbyB0aGUgYmFzZSBjb21wb25lbnQgZm9yIGxlZ2FjeSBjb21wb25lbnRzLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTnpUb29sdGlwQmFzZUNvbXBvbmVudCB7XG4gIG56VGl0bGU6IE56VFNUeXBlIHwgbnVsbDtcbiAgbnpDb250ZW50OiBOelRTVHlwZSB8IG51bGw7XG4gIG56VmlzaWJsZTogYm9vbGVhbjtcbiAgbnpQbGFjZW1lbnQ6IHN0cmluZztcbiAgbnpPdmVybGF5Q2xhc3NOYW1lOiBzdHJpbmc7XG4gIG56T3ZlcmxheVN0eWxlOiBOZ1N0eWxlSW50ZXJmYWNlO1xuICBuek1vdXNlRW50ZXJEZWxheTogbnVtYmVyO1xuICBuek1vdXNlTGVhdmVEZWxheTogbnVtYmVyO1xuICBuelRyaWdnZXI6IE56VG9vbHRpcFRyaWdnZXI7XG4gIG56VGl0bGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dm9pZD47XG4gIG56Q29udGVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx2b2lkPjtcblxuICBAT3V0cHV0KCkgcmVhZG9ubHkgbnpWaXNpYmxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIG92ZXJsYXk6IENka0Nvbm5lY3RlZE92ZXJsYXk7XG4gIG9yaWdpbjogQ2RrT3ZlcmxheU9yaWdpbjtcblxuICBfY2xhc3NNYXA6IE5nQ2xhc3NJbnRlcmZhY2UgPSB7fTtcbiAgX2hhc0JhY2tkcm9wID0gZmFsc2U7XG4gIF9wcmVmaXggPSAnYW50LXRvb2x0aXAtcGxhY2VtZW50JztcbiAgX3Zpc2libGUgPSBmYWxzZTtcbiAgX3Bvc2l0aW9uczogQ29ubmVjdGlvblBvc2l0aW9uUGFpcltdID0gWy4uLkRFRkFVTFRfVE9PTFRJUF9QT1NJVElPTlNdO1xuICBfcGxhY2VtZW50ID0gJ3RvcCc7XG4gIF90cmlnZ2VyOiBOelRvb2x0aXBUcmlnZ2VyID0gJ2hvdmVyJztcblxuICBnZXQgY29udGVudCgpOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx2b2lkPiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLm56Q29udGVudCAhPT0gdW5kZWZpbmVkID8gdGhpcy5uekNvbnRlbnQgOiB0aGlzLm56Q29udGVudFRlbXBsYXRlO1xuICB9XG5cbiAgZ2V0IHRpdGxlKCk6IHN0cmluZyB8IFRlbXBsYXRlUmVmPHZvaWQ+IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMubnpUaXRsZSAhPT0gdW5kZWZpbmVkID8gdGhpcy5uelRpdGxlIDogdGhpcy5uelRpdGxlVGVtcGxhdGU7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHVibGljIG5vQW5pbWF0aW9uPzogTnpOb0FuaW1hdGlvbkRpcmVjdGl2ZSkge31cblxuICBzaG93KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm56VmlzaWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5pc1RpdGxlRW1wdHkoKSB8fCAhdGhpcy5pc0NvbnRlbnRFbXB0eSgpKSB7XG4gICAgICB0aGlzLm56VmlzaWJsZSA9IHRydWU7XG4gICAgICB0aGlzLm56VmlzaWJsZUNoYW5nZS5lbWl0KHRydWUpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIGhpZGUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm56VmlzaWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubnpWaXNpYmxlID0gZmFsc2U7XG4gICAgdGhpcy5uelZpc2libGVDaGFuZ2UuZW1pdChmYWxzZSk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgdXBkYXRlQnlEaXJlY3RpdmUoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRDbGFzc01hcCgpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcblxuICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVQb3NpdGlvbigpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcmNlIHRoZSBjb21wb25lbnQgdG8gdXBkYXRlIGl0cyBwb3NpdGlvbi5cbiAgICovXG4gIHVwZGF0ZVBvc2l0aW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm9yaWdpbiAmJiB0aGlzLm92ZXJsYXkgJiYgdGhpcy5vdmVybGF5Lm92ZXJsYXlSZWYpIHtcbiAgICAgIHRoaXMub3ZlcmxheS5vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgb25Qb3NpdGlvbkNoYW5nZShwb3NpdGlvbjogQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uQ2hhbmdlKTogdm9pZCB7XG4gICAgdGhpcy5fcGxhY2VtZW50ID0gZ2V0UGxhY2VtZW50TmFtZShwb3NpdGlvbikhO1xuICAgIHRoaXMuc2V0Q2xhc3NNYXAoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBzZXRDbGFzc01hcCgpOiB2b2lkIHtcbiAgICB0aGlzLl9jbGFzc01hcCA9IHtcbiAgICAgIFt0aGlzLm56T3ZlcmxheUNsYXNzTmFtZV06IHRydWUsXG4gICAgICBbYCR7dGhpcy5fcHJlZml4fS0ke3RoaXMuX3BsYWNlbWVudH1gXTogdHJ1ZVxuICAgIH07XG4gIH1cblxuICBzZXRPdmVybGF5T3JpZ2luKG9yaWdpbjogQ2RrT3ZlcmxheU9yaWdpbik6IHZvaWQge1xuICAgIHRoaXMub3JpZ2luID0gb3JpZ2luO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1RpdGxlRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudGl0bGUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZiA/IGZhbHNlIDogdGhpcy50aXRsZSA9PT0gJycgfHwgIWlzTm90TmlsKHRoaXMudGl0bGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0NvbnRlbnRFbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZW50IGluc3RhbmNlb2YgVGVtcGxhdGVSZWYgPyBmYWxzZSA6IHRoaXMuY29udGVudCA9PT0gJycgfHwgIWlzTm90TmlsKHRoaXMuY29udGVudCk7XG4gIH1cbn1cbiJdfQ==