@ng-doc/ui-kit
Version:
<!-- PROJECT LOGO --> <br /> <div align="center"> <a href="https://github.com/ng-doc/ng-doc"> <img src="https://ng-doc.com/assets/images/ng-doc.svg?raw=true" alt="Logo" height="150px"> </a>
1 lines • 13.2 kB
Source Map (JSON)
{"version":3,"file":"ng-doc-ui-kit-directives-tooltip.mjs","sources":["../../../../libs/ui-kit/directives/tooltip/tooltip.directive.ts","../../../../libs/ui-kit/directives/tooltip/ng-doc-ui-kit-directives-tooltip.ts"],"sourcesContent":["import {\n\tAfterViewInit,\n\tChangeDetectorRef,\n\tDirective,\n\tElementRef,\n\tEventEmitter,\n\tInput,\n\tNgZone,\n\tOnDestroy,\n\tOutput,\n\tViewContainerRef,\n} from '@angular/core';\nimport { asArray } from '@ng-doc/core/helpers/as-array';\nimport { isPresent } from '@ng-doc/core/helpers/is-present';\nimport { tooltipCloseAnimation, tooltipOpenAnimation } from '@ng-doc/ui-kit/animations';\nimport { NgDocOverlayRef } from '@ng-doc/ui-kit/classes/overlay-ref';\nimport { NgDocOverlayContainerComponent } from '@ng-doc/ui-kit/components/overlay-container';\nimport { toElement } from '@ng-doc/ui-kit/helpers';\nimport { ngDocZoneDetach, ngDocZoneOptimize } from '@ng-doc/ui-kit/observables';\nimport { NgDocOverlayService } from '@ng-doc/ui-kit/services';\nimport { NgDocOverlayStrategy } from '@ng-doc/ui-kit/services/overlay-strategy';\nimport { BaseElement, NgDocContent, NgDocOverlayPosition } from '@ng-doc/ui-kit/types';\nimport { NgDocOverlayUtils } from '@ng-doc/ui-kit/utils';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { EMPTY, fromEvent, merge, timer } from 'rxjs';\nimport { filter, switchMap, takeUntil } from 'rxjs/operators';\n\n@Directive({\n\tselector: '[ngDocTooltip]',\n\texportAs: 'ngDocTooltip',\n\tstandalone: true,\n})\n@UntilDestroy()\nexport class NgDocTooltipDirective implements AfterViewInit, OnDestroy {\n\t@Input('ngDocTooltip')\n\tcontent: NgDocContent = '';\n\n\t@Input()\n\tdelay: number = 1000;\n\n\t@Input()\n\tdisplayOrigin?: BaseElement<HTMLElement>;\n\n\t@Input()\n\tpointerOrigin?: BaseElement<HTMLElement>;\n\n\t@Input()\n\tpositions: NgDocOverlayPosition | NgDocOverlayPosition[] = [\n\t\t'top-center',\n\t\t'bottom-center',\n\t\t'right-center',\n\t\t'left-center',\n\t];\n\n\t@Input()\n\tcanOpen: boolean = true;\n\n\t@Input()\n\tpanelClass: string | string[] = '';\n\n\t@Input()\n\tminHeight: number | string = '';\n\n\t@Input()\n\tmaxHeight: number | string = '';\n\n\t@Input()\n\theight: number | string = '';\n\n\t@Input()\n\tminWidth: number | string = '';\n\n\t@Input()\n\tmaxWidth: number | string = '';\n\n\t@Input()\n\twidth: number | string = '';\n\n\t@Output()\n\tbeforeOpen: EventEmitter<void> = new EventEmitter<void>();\n\n\t@Output()\n\tafterOpen: EventEmitter<void> = new EventEmitter<void>();\n\n\t@Output()\n\tbeforeClose: EventEmitter<void> = new EventEmitter<void>();\n\n\t@Output()\n\tafterClose: EventEmitter<void> = new EventEmitter<void>();\n\n\toverlayRef: NgDocOverlayRef | null = null;\n\n\tconstructor(\n\t\tprivate readonly elementRef: ElementRef<HTMLElement>,\n\t\tprivate readonly changeDetectorRef: ChangeDetectorRef,\n\t\tprivate readonly viewContainerRef: ViewContainerRef,\n\t\tprivate readonly overlayService: NgDocOverlayService,\n\t\tprivate readonly ngZone: NgZone,\n\t\tprivate readonly scrollStrategy: NgDocOverlayStrategy,\n\t) {}\n\n\tngAfterViewInit(): void {\n\t\t// Opens tooltip with delay\n\t\tfromEvent(this.pointerOriginElement, 'mouseenter')\n\t\t\t.pipe(\n\t\t\t\tfilter(() => this.canOpen && !this.isOpened),\n\t\t\t\tswitchMap(() =>\n\t\t\t\t\ttimer(this.delay).pipe(takeUntil(fromEvent(this.pointerOriginElement, 'mouseleave'))),\n\t\t\t\t),\n\t\t\t\tngDocZoneOptimize(this.ngZone),\n\t\t\t\tuntilDestroyed(this),\n\t\t\t)\n\t\t\t.subscribe(() => this.show());\n\n\t\t// Closes tooltip when mouseleave was fired, and cancel closing if mouseenter was happened\n\t\tmerge(\n\t\t\tfromEvent(this.pointerOriginElement, 'mouseleave'),\n\t\t\tthis.beforeOpen.pipe(\n\t\t\t\tswitchMap(() =>\n\t\t\t\t\tisPresent(this.overlayRef)\n\t\t\t\t\t\t? fromEvent(this.overlayRef.overlayRef.overlayElement, 'mouseleave')\n\t\t\t\t\t\t: EMPTY,\n\t\t\t\t),\n\t\t\t),\n\t\t)\n\t\t\t.pipe(\n\t\t\t\tfilter(() => this.isOpened),\n\t\t\t\tswitchMap(() =>\n\t\t\t\t\ttimer(50).pipe(\n\t\t\t\t\t\ttakeUntil(fromEvent(this.pointerOriginElement, 'mouseenter')),\n\t\t\t\t\t\ttakeUntil(\n\t\t\t\t\t\t\tisPresent(this.overlayRef)\n\t\t\t\t\t\t\t\t? fromEvent(this.overlayRef.overlayRef.overlayElement, 'mouseenter')\n\t\t\t\t\t\t\t\t: EMPTY,\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t\tuntilDestroyed(this),\n\t\t\t\tngDocZoneOptimize(this.ngZone),\n\t\t\t)\n\t\t\t.subscribe(() => this.hide());\n\t}\n\n\tshow(): void {\n\t\tif (!this.isOpened) {\n\t\t\tthis.overlayRef = this.overlayService.open(this.content, {\n\t\t\t\torigin: this.displayOriginElement,\n\t\t\t\toverlayContainer: NgDocOverlayContainerComponent,\n\t\t\t\tpositionStrategy: this.overlayService.connectedPositionStrategy(\n\t\t\t\t\tthis.displayOriginElement,\n\t\t\t\t\tthis.getPositions(this.positions),\n\t\t\t\t),\n\t\t\t\tviewContainerRef: this.viewContainerRef,\n\t\t\t\twithPointer: true,\n\t\t\t\tcontactBorder: true,\n\t\t\t\tpanelClass: ['ng-doc-tooltip', ...asArray(this.panelClass)],\n\t\t\t\theight: this.height,\n\t\t\t\twidth: this.width,\n\t\t\t\tminHeight: this.minHeight,\n\t\t\t\tminWidth: this.minWidth,\n\t\t\t\tmaxHeight: this.maxHeight,\n\t\t\t\tmaxWidth: this.maxWidth,\n\t\t\t\tscrollStrategy: this.scrollStrategy,\n\t\t\t\tdisposeOnRouteNavigation: true,\n\t\t\t\topenAnimation: tooltipOpenAnimation,\n\t\t\t\tcloseAnimation: tooltipCloseAnimation,\n\t\t\t});\n\t\t\tthis.beforeOpen.emit();\n\n\t\t\tthis.overlayRef\n\t\t\t\t?.afterOpen()\n\t\t\t\t.pipe(ngDocZoneDetach(this.ngZone))\n\t\t\t\t.subscribe(() => this.afterOpen.emit());\n\n\t\t\tthis.overlayRef\n\t\t\t\t?.beforeClose()\n\t\t\t\t.pipe(ngDocZoneDetach(this.ngZone))\n\t\t\t\t.subscribe(() => this.beforeClose.emit());\n\n\t\t\tthis.overlayRef\n\t\t\t\t?.afterClose()\n\t\t\t\t.pipe(ngDocZoneDetach(this.ngZone))\n\t\t\t\t.subscribe(() => this.afterClose.emit());\n\n\t\t\tthis.overlayRef?.beforeClose().subscribe(() => this.hide());\n\n\t\t\tthis.changeDetectorRef.markForCheck();\n\t\t}\n\t}\n\n\thide(): void {\n\t\tif (this.isOpened) {\n\t\t\tthis.overlayRef?.close();\n\t\t\tthis.overlayRef = null;\n\t\t\tthis.changeDetectorRef.markForCheck();\n\t\t}\n\t}\n\n\tget isOpened(): boolean {\n\t\treturn !!this.overlayRef;\n\t}\n\n\tngOnDestroy(): void {\n\t\tif (this.overlayRef) {\n\t\t\tthis.overlayRef.overlayRef.dispose();\n\t\t}\n\t}\n\n\tprivate get pointerOriginElement(): HTMLElement {\n\t\treturn isPresent(this.pointerOrigin)\n\t\t\t? toElement(this.pointerOrigin)\n\t\t\t: toElement(this.elementRef);\n\t}\n\n\tprivate get displayOriginElement(): HTMLElement {\n\t\treturn isPresent(this.displayOrigin)\n\t\t\t? toElement(this.displayOrigin)\n\t\t\t: toElement(this.elementRef);\n\t}\n\n\tprivate getPositions(\n\t\tpositions: NgDocOverlayPosition | NgDocOverlayPosition[],\n\t): NgDocOverlayPosition[] {\n\t\treturn NgDocOverlayUtils.getConnectedPosition(\n\t\t\t!!positions && asArray(positions).length\n\t\t\t\t? positions\n\t\t\t\t: ['bottom-center', 'top-center', 'right-center', 'left-center'],\n\t\t\tthis.displayOriginElement,\n\t\t\t0,\n\t\t\ttrue,\n\t\t);\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAiCa,IAAA,qBAAqB,GAA3B,MAAM,qBAAqB,CAAA;IA2DjC,WACkB,CAAA,UAAmC,EACnC,iBAAoC,EACpC,gBAAkC,EAClC,cAAmC,EACnC,MAAc,EACd,cAAoC,EAAA;QALpC,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAc,CAAA,cAAA,GAAd,cAAc;QACd,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAc,CAAA,cAAA,GAAd,cAAc;QA/DhC,IAAO,CAAA,OAAA,GAAiB,EAAE;QAG1B,IAAK,CAAA,KAAA,GAAW,IAAI;AASpB,QAAA,IAAA,CAAA,SAAS,GAAkD;YAC1D,YAAY;YACZ,eAAe;YACf,cAAc;YACd,aAAa;SACb;QAGD,IAAO,CAAA,OAAA,GAAY,IAAI;QAGvB,IAAU,CAAA,UAAA,GAAsB,EAAE;QAGlC,IAAS,CAAA,SAAA,GAAoB,EAAE;QAG/B,IAAS,CAAA,SAAA,GAAoB,EAAE;QAG/B,IAAM,CAAA,MAAA,GAAoB,EAAE;QAG5B,IAAQ,CAAA,QAAA,GAAoB,EAAE;QAG9B,IAAQ,CAAA,QAAA,GAAoB,EAAE;QAG9B,IAAK,CAAA,KAAA,GAAoB,EAAE;AAG3B,QAAA,IAAA,CAAA,UAAU,GAAuB,IAAI,YAAY,EAAQ;AAGzD,QAAA,IAAA,CAAA,SAAS,GAAuB,IAAI,YAAY,EAAQ;AAGxD,QAAA,IAAA,CAAA,WAAW,GAAuB,IAAI,YAAY,EAAQ;AAG1D,QAAA,IAAA,CAAA,UAAU,GAAuB,IAAI,YAAY,EAAQ;QAEzD,IAAU,CAAA,UAAA,GAA2B,IAAI;;IAWzC,eAAe,GAAA;;AAEd,QAAA,SAAS,CAAC,IAAI,CAAC,oBAAoB,EAAE,YAAY;aAC/C,IAAI,CACJ,MAAM,CAAC,MAAM,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAC5C,SAAS,CAAC,MACT,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAC,CAAC,CACrF,EACD,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,EAC9B,cAAc,CAAC,IAAI,CAAC;aAEpB,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;;QAG9B,KAAK,CACJ,SAAS,CAAC,IAAI,CAAC,oBAAoB,EAAE,YAAY,CAAC,EAClD,IAAI,CAAC,UAAU,CAAC,IAAI,CACnB,SAAS,CAAC,MACT,SAAS,CAAC,IAAI,CAAC,UAAU;AACxB,cAAE,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,cAAc,EAAE,YAAY;AACnE,cAAE,KAAK,CACR,CACD;AAEA,aAAA,IAAI,CACJ,MAAM,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,EAC3B,SAAS,CAAC,MACT,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CACb,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAC,EAC7D,SAAS,CACR,SAAS,CAAC,IAAI,CAAC,UAAU;AACxB,cAAE,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,cAAc,EAAE,YAAY;AACnE,cAAE,KAAK,CACR,CACD,CACD,EACD,cAAc,CAAC,IAAI,CAAC,EACpB,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC;aAE9B,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;;IAG/B,IAAI,GAAA;AACH,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBACxD,MAAM,EAAE,IAAI,CAAC,oBAAoB;AACjC,gBAAA,gBAAgB,EAAE,8BAA8B;AAChD,gBAAA,gBAAgB,EAAE,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAC9D,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CACjC;gBACD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;AACvC,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,aAAa,EAAE,IAAI;gBACnB,UAAU,EAAE,CAAC,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC3D,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,cAAc,EAAE,IAAI,CAAC,cAAc;AACnC,gBAAA,wBAAwB,EAAE,IAAI;AAC9B,gBAAA,aAAa,EAAE,oBAAoB;AACnC,gBAAA,cAAc,EAAE,qBAAqB;AACrC,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AAEtB,YAAA,IAAI,CAAC;AACJ,kBAAE,SAAS;AACV,iBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;iBACjC,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AAExC,YAAA,IAAI,CAAC;AACJ,kBAAE,WAAW;AACZ,iBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;iBACjC,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;AAE1C,YAAA,IAAI,CAAC;AACJ,kBAAE,UAAU;AACX,iBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;iBACjC,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AAEzC,YAAA,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;AAE3D,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;;;IAIvC,IAAI,GAAA;AACH,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE;AACxB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;;;AAIvC,IAAA,IAAI,QAAQ,GAAA;AACX,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU;;IAGzB,WAAW,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE;;;AAItC,IAAA,IAAY,oBAAoB,GAAA;AAC/B,QAAA,OAAO,SAAS,CAAC,IAAI,CAAC,aAAa;AAClC,cAAE,SAAS,CAAC,IAAI,CAAC,aAAa;AAC9B,cAAE,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;;AAG9B,IAAA,IAAY,oBAAoB,GAAA;AAC/B,QAAA,OAAO,SAAS,CAAC,IAAI,CAAC,aAAa;AAClC,cAAE,SAAS,CAAC,IAAI,CAAC,aAAa;AAC9B,cAAE,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;;AAGtB,IAAA,YAAY,CACnB,SAAwD,EAAA;AAExD,QAAA,OAAO,iBAAiB,CAAC,oBAAoB,CAC5C,CAAC,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;AACjC,cAAE;AACF,cAAE,CAAC,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,CAAC,EACjE,IAAI,CAAC,oBAAoB,EACzB,CAAC,EACD,IAAI,CACJ;;8GArMU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,SAAA,CAAA,EAAA,KAAA,EAAA,OAAA,EAAA,aAAA,EAAA,eAAA,EAAA,aAAA,EAAA,eAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;AAArB,qBAAqB,GAAA,UAAA,CAAA;AADjC,IAAA,YAAY,EAAE;qCA6DgB,UAAU;QACH,iBAAiB;QAClB,gBAAgB;QAClB,mBAAmB;QAC3B,MAAM;QACE,oBAAoB,CAAA;AAjE1C,CAAA,EAAA,qBAAqB,CAuMjC;2FAvMY,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE,IAAI;AAChB,iBAAA;wOAIA,OAAO,EAAA,CAAA;sBADN,KAAK;uBAAC,cAAc;gBAIrB,KAAK,EAAA,CAAA;sBADJ;gBAID,aAAa,EAAA,CAAA;sBADZ;gBAID,aAAa,EAAA,CAAA;sBADZ;gBAID,SAAS,EAAA,CAAA;sBADR;gBASD,OAAO,EAAA,CAAA;sBADN;gBAID,UAAU,EAAA,CAAA;sBADT;gBAID,SAAS,EAAA,CAAA;sBADR;gBAID,SAAS,EAAA,CAAA;sBADR;gBAID,MAAM,EAAA,CAAA;sBADL;gBAID,QAAQ,EAAA,CAAA;sBADP;gBAID,QAAQ,EAAA,CAAA;sBADP;gBAID,KAAK,EAAA,CAAA;sBADJ;gBAID,UAAU,EAAA,CAAA;sBADT;gBAID,SAAS,EAAA,CAAA;sBADR;gBAID,WAAW,EAAA,CAAA;sBADV;gBAID,UAAU,EAAA,CAAA;sBADT;;;ACvFF;;AAEG;;;;"}