UNPKG

@ngx-popovers/tooltip

Version:

The Tooltip component based on Angular 17+ and Floating-ui shows tooltips next to the trigger element

1 lines 25.1 kB
{"version":3,"file":"ngx-popovers-tooltip.mjs","sources":["../../../../packages/tooltip/src/lib/tooltip/core/tooltip-base.component.ts","../../../../packages/tooltip/src/lib/tooltip/core/tooltip-config.ts","../../../../packages/tooltip/src/lib/tooltip/core/tooltip.injections.ts","../../../../packages/tooltip/src/lib/tooltip/template/tooltip-template.component.ts","../../../../packages/tooltip/src/lib/tooltip/template/tooltip-template.component.html","../../../../packages/tooltip/src/lib/tooltip/tooltip.ts","../../../../packages/tooltip/src/lib/tooltip/tooltip.html","../../../../packages/tooltip/src/ngx-popovers-tooltip.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\n\n\n/**\n * Default tooltip component.\n *\n * It can be replaced with DI\n */\n@Component({\n standalone: true,\n styles: `\n .ngx-tooltip {\n padding: 4px 10px;\n background: #FFFFFF;\n border: 1px solid #DDDDDD;\n border-radius: 4px;\n }\n `,\n template: `\n <div class=\"ngx-tooltip\">\n {{ text }}\n </div>\n `\n})\nexport class TooltipBase {\n @Input()\n text = '';\n}\n","import { flip, FloatingConfig, MiddlewareList, NgxFloatingConfig, offset } from '@ngx-popovers/core';\n\nexport interface TooltipConfig extends FloatingConfig {\n debounce: number;\n arrow: boolean;\n arrowPadding: number;\n}\n\nexport class NgxTooltipConfig extends NgxFloatingConfig implements TooltipConfig {\n debounce = 100;\n arrow = false;\n arrowPadding = 2;\n\n override middleware: MiddlewareList = [\n offset(8),\n flip()\n ];\n\n constructor(\n config: Partial<TooltipConfig> = {}\n ) {\n super();\n Object.assign(this, config);\n }\n}\n","import { InjectionToken, Type } from '@angular/core';\nimport { TooltipBase } from './tooltip-base.component';\nimport { NgxTooltipConfig } from './tooltip-config';\n\nexport const NGX_TOOLTIP_CONFIG = new InjectionToken<NgxTooltipConfig>('NGX_TOOLTIP_CONFIG', {\n providedIn: 'root',\n factory: () => new NgxTooltipConfig()\n});\n\nexport const NGX_TOOLTIP_COMPONENT = new InjectionToken<Type<any>>('NGX-TOOLTIP_COMPONENT', {\n providedIn: 'root',\n factory: () => TooltipBase\n});\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostListener,\n inject,\n Input,\n Output,\n signal,\n TemplateRef\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NGX_TOOLTIP_COMPONENT } from '../core/tooltip.injections';\n\n@Component({\n selector: 'ngx-tooltip-template',\n imports: [CommonModule],\n templateUrl: './tooltip-template.component.html',\n styleUrl: './tooltip-template.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TooltipTemplate {\n @Input()\n text = '';\n\n @Input()\n component = inject(NGX_TOOLTIP_COMPONENT);\n\n @Input()\n template?: TemplateRef<void>;\n\n @Output()\n hovered = new EventEmitter<boolean>();\n\n isHovered = signal(false);\n\n @HostListener('mousemove', ['$event'])\n onMousemove() {\n if (!this.isHovered()) {\n this.isHovered.set(true);\n this.hovered.emit(true);\n }\n }\n\n @HostListener('mouseleave', ['$event'])\n onMouseleave() {\n if (this.isHovered()) {\n this.isHovered.set(false);\n this.hovered.emit(false);\n }\n }\n}\n","@if (template) {\n <ng-template\n [ngTemplateOutlet]=\"template\"\n />\n} @else {\n <ng-template\n [ngComponentOutlet]=\"component\"\n [ngComponentOutletInputs]=\"{text: text}\"\n />\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n inject,\n input,\n Input,\n numberAttribute,\n OnChanges,\n Output,\n signal,\n TemplateRef\n} from '@angular/core';\nimport { Arrow, FloatingComponent, MiddlewareList, Placement, PlatformService } from '@ngx-popovers/core';\nimport { debounceTime, filter, fromEvent, Subscription, tap } from 'rxjs';\nimport { TooltipTemplate } from './template/tooltip-template.component';\nimport { NGX_TOOLTIP_COMPONENT, NGX_TOOLTIP_CONFIG } from './core/tooltip.injections';\nimport { animate, AnimationEvent, style, transition, trigger } from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport { ComputePosition } from './types';\n\n@Component({\n selector: '[ngxTooltip]',\n imports: [\n TooltipTemplate,\n FloatingComponent,\n CommonModule,\n Arrow\n ],\n providers: [PlatformService],\n templateUrl: './tooltip.html',\n styleUrl: './tooltip.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('fadeInOut', [\n transition(':enter', [\n style({ opacity: 0, transform: 'scale(0.9)' }),\n animate(140, style({ opacity: 1, transform: 'scale(1)' }))\n ]),\n transition(':leave', [\n animate(100, style({ opacity: 0 }))\n ])\n ])\n ]\n})\nexport class NgxTooltip implements OnChanges {\n config = inject(NGX_TOOLTIP_CONFIG);\n cdRef = inject(ChangeDetectorRef);\n\n @Input('ngxTooltip')\n tooltipText = '';\n\n @Input()\n tooltipComponent = inject(NGX_TOOLTIP_COMPONENT);\n\n @Input()\n template?: TemplateRef<void>;\n\n @Input()\n placement: Placement = this.config.placement;\n\n @Input()\n middleware: MiddlewareList = this.config.middleware;\n\n strategy = input(this.config.strategy);\n\n private _ngxValue = false;\n\n @Input()\n set ngxValue(value: boolean) {\n this._ngxValue = value;\n if (value) {\n this.onShow();\n } else {\n this.onHide();\n }\n }\n\n get ngxValue() {\n return this._ngxValue;\n }\n\n @Output()\n ngxValueChange = new EventEmitter<boolean>();\n\n /**\n * Time delay before the tooltip is displayed\n */\n @Input({ transform: numberAttribute })\n debounce = this.config.debounce;\n\n /**\n * Show arrow or not\n */\n @Input({ transform: booleanAttribute })\n arrow = this.config.arrow;\n\n /**\n * Show arrow or not\n */\n @Input({ transform: numberAttribute })\n arrowPadding = this.config.arrowPadding;\n\n /**\n * Updates floating element automatically\n */\n @Input({ transform: booleanAttribute })\n autoUpdate = this.config.autoUpdate;\n\n /**\n * HTMLElement where floating renders\n */\n @Input()\n bindTo = this.config.bindTo;\n\n @Input({ transform: booleanAttribute })\n tooltipDisabled = false;\n\n @Input({ transform: booleanAttribute })\n animationDisabled = false;\n\n /**\n * Emits when tooltip shows\n */\n @Output()\n showEnd = new EventEmitter();\n\n /**\n * Emits when tooltip hides\n */\n @Output()\n hideEnd = new EventEmitter();\n\n @Output()\n animationStart = new EventEmitter<AnimationEvent>();\n\n @Output()\n animationDone = new EventEmitter<AnimationEvent>();\n\n @Output()\n clickedOutside = new EventEmitter<Element>();\n\n @Output()\n clickedInside = new EventEmitter<Element>();\n\n @Output()\n computePosition = new EventEmitter<ComputePosition>();\n\n isTooltipCreated = signal(false);\n isReferenceHovered = signal(false);\n isTooltipHovered = signal(false);\n isAnimating = signal(false);\n\n get reference() {\n return this.el.nativeElement as HTMLElement;\n }\n\n get fixedDebounce() {\n return this.fixDebounce(this.debounce);\n }\n\n constructor(\n private el: ElementRef\n ) {\n }\n\n ngOnChanges() {\n this.initListeners();\n }\n\n initListeners() {\n this.mouseMoveListener();\n this.mouseleaveListener();\n this.focusListener();\n this.blurListener();\n }\n\n private moveSubscriber$?: Subscription;\n\n mouseMoveListener() {\n this.moveSubscriber$?.unsubscribe();\n\n this.moveSubscriber$ = fromEvent(this.reference, 'mousemove').pipe(\n filter(() => !this.tooltipDisabled),\n tap(() => this.isReferenceHovered.set(true)),\n filter(() => !this.isTooltipCreated()),\n debounceTime(this.fixedDebounce),\n filter(() => this.isReferenceHovered())\n ).subscribe(() => {\n this.ngxValue = true;\n this.cdRef.detectChanges();\n });\n }\n\n private focusListener$?: Subscription;\n\n focusListener() {\n this.focusListener$?.unsubscribe();\n\n this.focusListener$ = fromEvent(this.reference, 'focus').pipe(\n filter(() => !this.tooltipDisabled),\n filter(() => !this.isTooltipCreated()),\n debounceTime(this.fixedDebounce)\n ).subscribe(() => {\n this.ngxValue = true;\n });\n }\n\n private leaveSubscriber$?: Subscription;\n\n mouseleaveListener() {\n this.leaveSubscriber$?.unsubscribe();\n\n this.leaveSubscriber$ = fromEvent(this.reference, 'mouseleave').pipe(\n filter(() => !this.tooltipDisabled),\n tap(() => this.isReferenceHovered.set(false)),\n filter(() => this.isTooltipCreated()),\n debounceTime(this.fixedDebounce),\n filter(() => !this.isTooltipHovered())\n ).subscribe(() => {\n this.ngxValue = false;\n this.cdRef.detectChanges();\n });\n }\n\n private blurListener$?: Subscription;\n\n blurListener() {\n this.blurListener$?.unsubscribe();\n\n this.blurListener$ = fromEvent(this.reference, 'blur').pipe(\n filter(() => !this.tooltipDisabled),\n filter(() => this.isTooltipCreated()),\n debounceTime(this.fixedDebounce),\n filter(() => !this.isTooltipHovered())\n ).subscribe(() => {\n this.ngxValue = false;\n });\n }\n\n onShow() {\n if (this.isTooltipCreated()) {\n return;\n }\n\n this.show();\n }\n\n onHide() {\n if (!this.isTooltipCreated()) {\n return;\n }\n\n this.hide();\n }\n\n show() {\n this.isAnimating.set(true);\n this.isTooltipCreated.set(true);\n this.showEnd.emit();\n this.ngxValueChange.emit(true);\n }\n\n hide() {\n this.isAnimating.set(true);\n this.isTooltipCreated.set(false);\n this.hideEnd.emit();\n this.ngxValueChange.emit(false);\n }\n\n setTooltipHovered($event: boolean) {\n if (!$event) {\n this.hide();\n }\n this.isTooltipHovered.set($event);\n }\n\n onClickedInside(element: Element) {\n this.clickedInside.emit(element);\n }\n\n /**\n * Check if user clicked outside the reference and the tooltip element.\n * Close tooltip if user clicks outside (actually for touch devices)\n */\n onClickedOutside(element: Element) {\n if (element !== this.reference) {\n this.ngxValue = false;\n }\n\n this.clickedOutside.emit(element);\n }\n\n onAnimationStart(event: AnimationEvent) {\n this.isAnimating.set(true);\n this.animationStart.emit(event);\n }\n\n onAnimationDone(event: AnimationEvent) {\n this.isAnimating.set(false);\n this.animationDone.emit(event);\n }\n\n onPositionReturn($event: ComputePosition) {\n this.computePosition.emit($event);\n }\n\n private fixDebounce(time: unknown) {\n if (typeof time === 'number') {\n return time >= 0 ? time : 0;\n }\n return 0;\n }\n}\n","<ng-content />\n\n@if ((isTooltipCreated() || isAnimating()) && reference.isConnected) {\n <ngx-floating\n [reference]=\"reference\"\n [placement]=\"placement\"\n [middleware]=\"middleware\"\n [autoUpdate]=\"autoUpdate\"\n [bindTo]=\"bindTo\"\n [strategy]=\"strategy()\"\n\n (clickedInside)=\"onClickedInside($event)\"\n (clickedOutside)=\"onClickedOutside($event)\"\n (computePositionReturn)=\"onPositionReturn($event)\"\n >\n @if (isTooltipCreated()) {\n <div\n @fadeInOut\n (@fadeInOut.start)=\"onAnimationStart($event)\"\n (@fadeInOut.done)=\"onAnimationDone($event)\"\n [@.disabled]=\"animationDisabled\"\n >\n <ngx-tooltip-template\n [template]=\"template\"\n [component]=\"tooltipComponent\"\n [text]=\"tooltipText\"\n (hovered)=\"setTooltipHovered($event)\"\n />\n\n @if (arrow) {\n <ngx-arrow [padding]=\"arrowPadding\" />\n }\n </div>\n }\n </ngx-floating>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}