UNPKG

@duoduo-oba/ng-devui

Version:

DevUI components based on Angular

161 lines 14.4 kB
/** * @fileoverview added by tsickle * Generated from: tooltip.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, ElementRef, HostBinding, HostListener, Input, Renderer2 } from '@angular/core'; import { PositionService } from '@duoduo-oba/ng-devui/position'; import { fromEvent } from 'rxjs'; import { directionFadeInOut } from '@duoduo-oba/ng-devui/utils'; export class TooltipComponent { /** * @param {?} positionService * @param {?} tooltip * @param {?} renderer2 */ constructor(positionService, tooltip, renderer2) { this.positionService = positionService; this.tooltip = tooltip; this.renderer2 = renderer2; this.position = 'bottom'; this.showAnimate = false; this.animateState = this.showAnimate ? 'void' : 'visible'; this.display = 'block'; } /** * @return {?} */ get class() { return 'devui-tooltip ' + this.position; } /** * @return {?} */ get state() { return this.animateState; } /** * @return {?} */ ngAfterViewInit() { this.updatePosition(); this.scrollElement = this.positionService.getScrollParent(this.triggerElementRef.nativeElement); this._onScroll = fromEvent((this.scrollElement || window), 'scroll') .subscribe((/** * @return {?} */ () => { this.updatePosition(); })); } /** * @return {?} */ ngOnDestroy() { if (this._onScroll) { this._onScroll.unsubscribe(); } } /** * @return {?} */ onShow() { this.animateState = this.position; } /** * @return {?} */ onHide() { this.animateState = 'void'; } // will be overwrite by tooltip directive /** * @return {?} */ onHidden() { } /** * @param {?} event * @return {?} */ onAnimationEnd(event) { if (event.toState === 'void') { this.onHidden(); } } /** * @return {?} */ updatePosition() { // 解决tooltip自身大小导致出现滚动条,影响位置计算 this.renderer2.setStyle(this.tooltip.nativeElement, 'visibility', 'hidden'); this.renderer2.setStyle(this.tooltip.nativeElement, 'transform', 'translate(0, -99999px)'); /** @type {?} */ const rect = this.positionService.positionElements(this.triggerElementRef.nativeElement, this.tooltip.nativeElement, this.position, true); this.renderer2.setStyle(this.tooltip.nativeElement, 'left', `${rect.left}px`); this.renderer2.setStyle(this.tooltip.nativeElement, 'top', `${rect.top}px`); // 移除样式 this.renderer2.setStyle(this.tooltip.nativeElement, 'visibility', null); this.renderer2.setStyle(this.tooltip.nativeElement, 'transform', null); } } TooltipComponent.decorators = [ { type: Component, args: [{ selector: 'd-tooltip', template: "<div class=\"devui-tooltip-arrow\"></div>\r\n<div class=\"devui-tooltip-inner\" [innerHTML]=\"content\"></div>\r\n", animations: [ directionFadeInOut ], styles: [":host-context(.devui-tooltip){position:absolute;z-index:1070;display:block;font-style:normal;font-weight:400;line-height:1.42857143;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:12px;opacity:1}:host-context(.devui-tooltip).top{margin-top:-5px;padding:0;box-shadow:-5px 5px 20px 0 rgba(37,43,58,.2)}:host-context(.devui-tooltip).top .devui-tooltip-arrow{bottom:-5px;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#464d6e}:host-context(.devui-tooltip).bottom{margin-top:5px;padding:0;box-shadow:5px -5px 20px 0 rgba(37,43,58,.2)}:host-context(.devui-tooltip).bottom .devui-tooltip-arrow{top:-5px;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#464d6e}:host-context(.devui-tooltip).left{margin-left:-5px;padding:0;box-shadow:5px -5px 20px 0 rgba(37,43,58,.2)}:host-context(.devui-tooltip).left .devui-tooltip-arrow{top:50%;right:-5px;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#464d6e}:host-context(.devui-tooltip).right{margin-left:5px;padding:0;box-shadow:-5px 5px 20px 0 rgba(37,43,58,.2)}:host-context(.devui-tooltip).right .devui-tooltip-arrow{top:50%;left:-5px;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#464d6e}:host-context(.devui-tooltip) .devui-tooltip-inner{max-width:200px;padding:5px 10px;font-size:14px;color:#dfe1e6;letter-spacing:0;line-height:20px;background:#464d6e;box-shadow:none;overflow-wrap:break-word;text-align:start}:host-context(.devui-tooltip) .devui-tooltip-arrow{display:block;position:absolute;width:0;height:0;border-color:transparent;border-style:solid}"] }] } ]; /** @nocollapse */ TooltipComponent.ctorParameters = () => [ { type: PositionService }, { type: ElementRef }, { type: Renderer2 } ]; TooltipComponent.propDecorators = { content: [{ type: Input }], position: [{ type: Input }], triggerElementRef: [{ type: Input }], showAnimate: [{ type: Input }], display: [{ type: HostBinding, args: ['style.display',] }], class: [{ type: HostBinding, args: ['class',] }], state: [{ type: HostBinding, args: ['@directionFadeInOut',] }], onAnimationEnd: [{ type: HostListener, args: ['@directionFadeInOut.done', ['$event'],] }] }; if (false) { /** @type {?} */ TooltipComponent.prototype.content; /** @type {?} */ TooltipComponent.prototype.position; /** @type {?} */ TooltipComponent.prototype.triggerElementRef; /** @type {?} */ TooltipComponent.prototype.showAnimate; /** @type {?} */ TooltipComponent.prototype.scrollElement; /** @type {?} */ TooltipComponent.prototype.animateState; /** @type {?} */ TooltipComponent.prototype.display; /** @type {?} */ TooltipComponent.prototype._onScroll; /** * @type {?} * @private */ TooltipComponent.prototype.positionService; /** * @type {?} * @private */ TooltipComponent.prototype.tooltip; /** * @type {?} * @private */ TooltipComponent.prototype.renderer2; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1kZXZ1aS90b29sdGlwLyIsInNvdXJjZXMiOlsidG9vbHRpcC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsU0FBUyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVlwRCxNQUFNLE9BQU8sZ0JBQWdCOzs7Ozs7SUFvQjNCLFlBQ1UsZUFBZ0MsRUFDaEMsT0FBbUIsRUFDbkIsU0FBb0I7UUFGcEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDbkIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQXJCckIsYUFBUSxHQUFpQixRQUFRLENBQUM7UUFFbEMsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFN0IsaUJBQVksR0FBVyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUUvQixZQUFPLEdBQUcsT0FBTyxDQUFDO0lBaUJoRCxDQUFDOzs7O0lBaEJELElBQTBCLEtBQUs7UUFDN0IsT0FBTyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQzFDLENBQUM7Ozs7SUFFRCxJQUF3QyxLQUFLO1FBQzNDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDOzs7O0lBWUQsZUFBZTtRQUNiLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxl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eEMsbUNBQTJCOzs7OztJQUMzQixxQ0FBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQb3NpdGlvblNlcnZpY2UgfSBmcm9tICduZy1kZXZ1aS9wb3NpdGlvbic7XHJcbmltcG9ydCB7IGZyb21FdmVudCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRpcmVjdGlvbkZhZGVJbk91dCB9IGZyb20gJ25nLWRldnVpL3V0aWxzJztcclxuaW1wb3J0IHsgUG9zaXRpb25UeXBlIH0gZnJvbSAnLi90b29sdGlwLnR5cGVzJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2QtdG9vbHRpcCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Rvb2x0aXAuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Rvb2x0aXAuY29tcG9uZW50LnNjc3MnXSxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICBkaXJlY3Rpb25GYWRlSW5PdXRcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVG9vbHRpcENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgY29udGVudDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHBvc2l0aW9uOiBQb3NpdGlvblR5cGUgPSAnYm90dG9tJztcclxuICBASW5wdXQoKSB0cmlnZ2VyRWxlbWVudFJlZjogRWxlbWVudFJlZjtcclxuICBASW5wdXQoKSBzaG93QW5pbWF0ZSA9IGZhbHNlO1xyXG4gIHNjcm9sbEVsZW1lbnQ6IEVsZW1lbnQ7XHJcbiAgYW5pbWF0ZVN0YXRlOiBzdHJpbmcgPSB0aGlzLnNob3dBbmltYXRlID8gJ3ZvaWQnIDogJ3Zpc2libGUnO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLmRpc3BsYXknKSBkaXNwbGF5ID0gJ2Jsb2NrJztcclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgZ2V0IGNsYXNzKCkge1xyXG4gICAgcmV0dXJuICdkZXZ1aS10b29sdGlwICcgKyB0aGlzLnBvc2l0aW9uO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdAZGlyZWN0aW9uRmFkZUluT3V0JykgZ2V0IHN0YXRlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYW5pbWF0ZVN0YXRlO1xyXG4gIH1cclxuXHJcblxyXG4gIF9vblNjcm9sbDogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcG9zaXRpb25TZXJ2aWNlOiBQb3NpdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRvb2x0aXA6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyMjogUmVuZGVyZXIyXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLnVwZGF0ZVBvc2l0aW9uKCk7XHJcbiAgICB0aGlzLnNjcm9sbEVsZW1lbnQgPSB0aGlzLnBvc2l0aW9uU2VydmljZS5nZXRTY3JvbGxQYXJlbnQodGhpcy50cmlnZ2VyRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcclxuICAgIHRoaXMuX29uU2Nyb2xsID0gZnJvbUV2ZW50KCh0aGlzLnNjcm9sbEVsZW1lbnQgfHwgd2luZG93KSwgJ3Njcm9sbCcpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudXBkYXRlUG9zaXRpb24oKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIGlmICh0aGlzLl9vblNjcm9sbCkge1xyXG4gICAgICB0aGlzLl9vblNjcm9sbC51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TaG93KCkge1xyXG4gICAgdGhpcy5hbmltYXRlU3RhdGUgPSB0aGlzLnBvc2l0aW9uIDtcclxuICB9XHJcblxyXG4gIG9uSGlkZSgpIHtcclxuICAgIHRoaXMuYW5pbWF0ZVN0YXRlID0gJ3ZvaWQnO1xyXG4gIH1cclxuXHJcbiAgLy8gd2lsbCBiZSBvdmVyd3JpdGUgYnkgdG9vbHRpcCBkaXJlY3RpdmVcclxuICBvbkhpZGRlbigpIHtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ0BkaXJlY3Rpb25GYWRlSW5PdXQuZG9uZScsIFsnJGV2ZW50J10pXHJcbiAgb25BbmltYXRpb25FbmQoZXZlbnQpIHtcclxuICAgIGlmIChldmVudC50b1N0YXRlID09PSAndm9pZCcpIHtcclxuICAgICAgdGhpcy5vbkhpZGRlbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHVwZGF0ZVBvc2l0aW9uKCkge1xyXG4gICAgLy8g6Kej5YazdG9vbHRpcOiHqui6q+Wkp+Wwj+WvvOiHtOWHuueOsOa7muWKqOadoe+8jOW9seWTjeS9jee9ruiuoeeul1xyXG4gICAgdGhpcy5yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy50b29sdGlwLm5hdGl2ZUVsZW1lbnQsICd2aXNpYmlsaXR5JywgJ2hpZGRlbicpO1xyXG4gICAgdGhpcy5yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy50b29sdGlwLm5hdGl2ZUVsZW1lbnQsICd0cmFuc2Zvcm0nLCAndHJhbnNsYXRlKDAsIC05OTk5OXB4KScpO1xyXG4gICAgY29uc3QgcmVjdCA9IHRoaXMucG9zaXRpb25TZXJ2aWNlLnBvc2l0aW9uRWxlbWVudHModGhpcy50cmlnZ2VyRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxyXG4gICAgICB0aGlzLnRvb2x0aXAubmF0aXZlRWxlbWVudCwgdGhpcy5wb3NpdGlvbiwgdHJ1ZSk7XHJcbiAgICB0aGlzLnJlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLnRvb2x0aXAubmF0aXZlRWxlbWVudCwgJ2xlZnQnLCBgJHtyZWN0LmxlZnR9cHhgKTtcclxuICAgIHRoaXMucmVuZGVyZXIyLnNldFN0eWxlKHRoaXMudG9vbHRpcC5uYXRpdmVFbGVtZW50LCAndG9wJywgYCR7cmVjdC50b3B9cHhgKTtcclxuICAgIC8vIOenu+mZpOagt+W8j1xyXG4gICAgdGhpcy5yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy50b29sdGlwLm5hdGl2ZUVsZW1lbnQsICd2aXNpYmlsaXR5JywgbnVsbCk7XHJcbiAgICB0aGlzLnJlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLnRvb2x0aXAubmF0aXZlRWxlbWVudCwgJ3RyYW5zZm9ybScsIG51bGwpO1xyXG4gIH1cclxufVxyXG5cclxuIl19