UNPKG

@ipi-soft/ng-components

Version:

Custom Angular Components

1 lines 20.9 kB
{"version":3,"file":"ipi-soft-ng-components-tooltip.mjs","sources":["../../../../projects/ipi-soft/ng-components/tooltip/src/tooltip.directive.ts","../../../../projects/ipi-soft/ng-components/tooltip/ipi-soft-ng-components-tooltip.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\n\nimport { Directive, Input, ElementRef, Inject, HostListener } from '@angular/core';\n\nimport { OSService, MobileOS, OverlayService } from '@ipi-soft/ng-components/services';\n\nexport enum TooltipPosition {\n Before,\n After,\n Above,\n Below\n}\n\n@Directive({\n standalone: true,\n selector: '[ipiTooltip]'\n})\n\nexport class IpiTooltipDirective {\n\n constructor(\n private osService: OSService,\n private elementRef: ElementRef,\n private overlayService: OverlayService,\n @Inject(DOCUMENT) private document: Document) {\n this.platform = this.osService.mobileOS;\n }\n\n @Input() ipiTooltip = '';\n @Input() tooltipPosition = TooltipPosition.Before;\n\n private platform;\n\n private tooltip!: HTMLElement;\n private triangle!: HTMLElement;\n private tooltipWrapper!: HTMLElement;\n\n private isActivated = false;\n\n private triangleWidth = 8;\n private tooltipWidth!: number;\n private parentElementPos!: DOMRect;\n\n private errorMargin = 2;\n\n public ngOnDestroy(): void {\n this.onMouseLeave();\n }\n\n @HostListener('mouseenter')\n onMouseEnter(): void {\n (this.elementRef.nativeElement as HTMLElement).style.touchAction = 'manipulation';\n this.parentElementPos = this.getParentElementPosition();\n this.openToolTip();\n }\n\n @HostListener('mouseleave')\n onMouseLeave(): void {\n (this.elementRef.nativeElement as HTMLElement).style.touchAction = 'auto';\n this.closeToolTip();\n }\n\n @HostListener('window:resize')\n onResize() {\n this.closeToolTip();\n }\n\n @HostListener('touchstart', ['$event'])\n onTouchStart(event: TouchEvent): void {\n event.preventDefault();\n\n (this.elementRef.nativeElement as HTMLElement).style.userSelect = 'none';\n this.parentElementPos = this.getParentElementPosition();\n this.openToolTip();\n }\n\n @HostListener('touchend')\n onTouchEnd(): void {\n this.closeToolTip();\n }\n\n @HostListener('touchcancel')\n onTouchCancel(): void {\n this.closeToolTip();\n }\n\n @HostListener('window:scroll', ['$event'])\n onScroll(): void {\n if (this.isActivated) {\n this.parentElementPos = this.getParentElementPosition();\n\n let parentPosTop = this.parentElementPos.top;\n\n const tooltipElement = document.querySelector('.tooltip-wrapper') as HTMLElement;\n\n if (this.platform === MobileOS.iOS) {\n parentPosTop += window.visualViewport!.offsetTop;\n }\n\n tooltipElement.style.top = `${parentPosTop}px`;\n }\n }\n\n private getParentElementPosition(): DOMRect {\n return this.elementRef.nativeElement.getBoundingClientRect();\n }\n\n private openToolTip(): void {\n this.createTooltip();\n this.createTriangle();\n this.createTooltipWrapper();\n\n this.tooltipWrapper.appendChild(this.tooltip);\n this.tooltipWrapper.appendChild(this.triangle);\n\n this.overlayService.appendToOverlay(this.tooltipWrapper);\n\n this.positionTooltip();\n\n this.isActivated = true;\n }\n\n private closeToolTip(): void {\n if (this.tooltipWrapper) {\n this.overlayService.removeFromOverlay(this.tooltipWrapper);\n\n this.isActivated = false;\n }\n }\n\n private createTooltip(): void {\n this.tooltip = this.document.createElement('div');\n this.tooltip.classList.add('tooltip');\n\n this.tooltip.innerHTML = this.ipiTooltip;\n\n this.tooltip.style.gap = '10px';\n this.tooltip.style.color = 'white';\n this.tooltip.style.minWidth = '50px';\n this.tooltip.style.minHeight = '10px';\n this.tooltip.style.fontSize = '12px';\n this.tooltip.style.fontWeight = '400';\n this.tooltip.style.maxWidth = '200px';\n this.tooltip.style.lineHeight = '16px';\n this.tooltip.style.padding = '4px 8px';\n this.tooltip.style.textAlign = 'center';\n this.tooltip.style.borderRadius = '4px';\n this.tooltip.style.whiteSpace = 'pre-wrap';\n this.tooltip.style.wordBreak = 'break-word';\n this.tooltip.style.backgroundColor = '#0B1222';\n }\n\n private createTriangle(): void {\n this.triangle = this.document.createElement('div');\n this.triangle.classList.add('triangle');\n\n this.triangle.style.width = '0';\n this.triangle.style.height = '0';\n this.triangle.style.content = '';\n this.triangle.style.borderRight = '8px solid #0B1222';\n this.triangle.style.borderTop = '5px solid transparent';\n this.triangle.style.borderBottom = '5px solid transparent';\n }\n\n private createTooltipWrapper(): void {\n this.tooltipWrapper = this.document.createElement('div');\n this.tooltipWrapper.classList.add('tooltip-wrapper');\n\n this.tooltipWrapper.style.display = 'flex';\n this.tooltipWrapper.style.position = 'absolute';\n this.tooltipWrapper.style.alignItems = 'center';\n\n const keyframes = [\n { opacity: 0 },\n { opacity: 1 }\n ];\n\n this.tooltipWrapper.animate(keyframes, {\n duration: 400,\n easing: 'ease'\n });\n }\n\n private positionTooltip(): void {\n if (this.overlayService.overlay) {\n this.tooltipWidth = this.overlayService.overlay.querySelector('.tooltip-wrapper')?.firstElementChild?.clientWidth || 0;\n }\n\n switch (this.tooltipPosition) {\n case TooltipPosition.Before:\n this.positionBefore();\n break;\n case TooltipPosition.After:\n this.positionAfter();\n break;\n case TooltipPosition.Above:\n this.positionAbove();\n break;\n case TooltipPosition.Below:\n this.positionBelow();\n break;\n }\n\n this.repositionTooltip();\n }\n\n private positionBefore(): void {\n let parentPosTop = this.parentElementPos.top;\n let parentPosLeft = this.parentElementPos.left;\n\n this.tooltipWrapper.style.flexDirection = 'row';\n this.triangle.style.transform = 'rotate(180deg)';\n this.tooltipWrapper.style.transform = `translateY(${this.parentElementPos.height / 2}px) translateY(-50%)`;\n\n if (this.platform === MobileOS.iOS) {\n parentPosTop += window.visualViewport!.offsetTop;\n parentPosLeft += window.visualViewport!.offsetLeft;\n }\n\n this.tooltipWrapper.style.left = `${parentPosLeft - this.tooltipWidth - this.triangleWidth}px`;\n this.tooltipWrapper.style.top = `${parentPosTop}px`;\n }\n\n private positionAfter(): void {\n let parentPosTop = this.parentElementPos.top;\n let parentPosRight = this.parentElementPos.right;\n\n this.triangle.style.transform = 'rotate(0deg)';\n this.tooltipWrapper.style.flexDirection = 'row-reverse';\n this.tooltipWrapper.style.transform = `translateY(${this.parentElementPos.height / 2}px) translateY(-50%)`;\n\n if (this.platform === MobileOS.iOS) {\n parentPosTop += window.visualViewport!.offsetTop;\n parentPosRight += window.visualViewport!.offsetLeft;\n }\n\n this.tooltipWrapper.style.top = `${parentPosTop}px`;\n this.tooltipWrapper.style.left = `${parentPosRight}px`;\n }\n\n private positionAbove(): void {\n let parentPosTop = this.parentElementPos.top;\n let parentPosLeft = this.parentElementPos.left;\n\n this.tooltipWrapper.style.flexDirection = 'column';\n this.tooltipWrapper.style.transform = 'translateY(-100%)';\n this.tooltipWrapper.style.transform = 'translateY(-100%)';\n\n if (this.platform === MobileOS.iOS) { \n parentPosTop += window.visualViewport!.offsetTop;\n parentPosLeft += window.visualViewport!.offsetLeft;\n }\n\n this.tooltipWrapper.style.top = `${parentPosTop}px`;\n this.tooltipWrapper.style.left = ` ${ (parentPosLeft + this.parentElementPos.width / 2) - this.tooltipWidth / 2 }px`;\n\n\n this.triangle.style.transform = 'rotate(-90deg) translateX(1px)';\n }\n\n private positionBelow(): void {\n let parentPosTop = this.parentElementPos.top;\n let parentPosLeft = this.parentElementPos.left;\n\n this.tooltipWrapper.style.flexDirection = 'column-reverse';\n this.triangle.style.transform = 'rotate(90deg) translateX(1px)';\n this.tooltipWrapper.style.transform = `translateY(${this.parentElementPos.height}px)`;\n\n if (this.platform === MobileOS.iOS) { \n parentPosTop += window.visualViewport!.offsetTop;\n parentPosLeft += window.visualViewport!.offsetLeft;\n }\n\n this.tooltipWrapper.style.top = ` ${parentPosTop}px`;\n this.tooltipWrapper.style.left = ` ${ (parentPosLeft + this.parentElementPos.width / 2) - this.tooltipWidth / 2 }px`; \n }\n\n private repositionTooltip(): void {\n const tooltipPosition = this.tooltipWrapper.getBoundingClientRect();\n\n let tooltipX = tooltipPosition.x;\n\n if (this.platform === MobileOS.iOS) {\n tooltipX += window.visualViewport!.offsetLeft;\n }\n\n switch (this.tooltipPosition) {\n case TooltipPosition.Before:\n if (tooltipPosition.x < 0) {\n this.positionAfter();\n }\n\n if (window.innerWidth - tooltipPosition.right <= tooltipPosition.width) {\n this.positionAbove();\n }\n\n break;\n case TooltipPosition.After:\n \n if (window.innerWidth < tooltipX + tooltipPosition.width) {\n this.positionBefore();\n }\n\n if (tooltipPosition.width > this.parentElementPos.left) {\n this.positionAbove();\n }\n\n break;\n case TooltipPosition.Above:\n if (tooltipX < 0) {\n this.positionAfter();\n\n break;\n }\n\n if (tooltipPosition.left > window.innerWidth / 2 && (tooltipPosition.left + tooltipPosition.width / 2) + this.errorMargin < this.parentElementPos.left + this.parentElementPos.width / 2) {\n this.positionBefore();\n\n break;\n }\n\n if (this.parentElementPos.top < tooltipPosition.height) {\n this.positionBelow();\n }\n\n break;\n case TooltipPosition.Below:\n if (tooltipX < 0) {\n this.positionAfter();\n\n break;\n }\n\n if (tooltipPosition.left > window.innerWidth / 2 && (tooltipPosition.left + tooltipPosition.width / 2) + this.errorMargin < this.parentElementPos.left + this.parentElementPos.width / 2) {\n this.positionBefore();\n\n break;\n }\n\n if (window.innerHeight - this.parentElementPos.bottom < tooltipPosition.height) {\n this.positionAbove();\n }\n\n break;\n }\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}