UNPKG

@duyvu-fsdev/ng-tooltip-directive

Version:
1 lines 23.6 kB
{"version":3,"file":"duyvu-fsdev-ng-tooltip-directive.mjs","sources":["../../../projects/ng-tooltip-directive/src/lib/ng-tooltip.component.ts","../../../projects/ng-tooltip-directive/src/lib/ng-tooltip.component.html","../../../projects/ng-tooltip-directive/src/lib/ng-tooltip.directive.ts","../../../projects/ng-tooltip-directive/src/lib/ng-tooltip.module.ts","../../../projects/ng-tooltip-directive/src/public-api.ts","../../../projects/ng-tooltip-directive/src/duyvu-fsdev-ng-tooltip-directive.ts"],"sourcesContent":["import { Component, Input } from \"@angular/core\";\r\nimport { Position } from \"./ng-tooltip.model\";\r\n\r\n@Component({\r\n selector: \"ng-tooltip\",\r\n templateUrl: \"./ng-tooltip.component.html\",\r\n styleUrls: [\"./ng-tooltip.scss\"],\r\n})\r\nexport class TooltipComponent {\r\n @Input() position: Position = \"bottom\";\r\n @Input() top!: string;\r\n @Input() left!: string;\r\n @Input() visible: boolean = false;\r\n @Input() text: string = \"\";\r\n}\r\n","<div\n class=\"app-tooltip tooltip-container {{ position }}\"\n [ngStyle]=\"{\n top: top,\n left: left,\n visibility: visible ? 'visible' : 'hidden'\n }\"\n>\n <div class=\"tooltip-arrow\"></div>\n <div class=\"tooltip-content\">{{ text }}</div>\n</div>\n","import { DOCUMENT } from \"@angular/common\";\r\nimport { AfterViewInit, ComponentRef, Directive, ElementRef, HostListener, Inject, Input, ViewContainerRef } from \"@angular/core\";\r\nimport { TooltipComponent } from \"./ng-tooltip.component\";\r\nimport { Option, Position } from \"./ng-tooltip.model\";\r\n\r\n@Directive({\r\n selector: \"[tooltip]\",\r\n})\r\nexport class TooltipDirective implements AfterViewInit {\r\n @Input(\"tooltipOption\") option!: Option;\r\n\r\n private tooltipComponentRef!: ComponentRef<TooltipComponent>;\r\n\r\n constructor(private el: ElementRef, private viewContainerRef: ViewContainerRef, @Inject(DOCUMENT) private document: Document) {}\r\n\r\n ngAfterViewInit() {\r\n this.option.position = this.option.position ?? \"bottom\";\r\n this.option.class = this.option.class ?? \"\";\r\n }\r\n\r\n @HostListener(\"mouseenter\") onMouseEnter() {\r\n this.showTooltip();\r\n }\r\n @HostListener(\"mouseleave\") onMouseLeave() {\r\n this.hideTooltip();\r\n }\r\n\r\n private getHostPosition(hostEl: HTMLElement): { w: number; h: number; l: number; t: number } {\r\n if (!hostEl) return { h: 0, w: 0, l: 0, t: 0 };\r\n const styles = getComputedStyle(hostEl);\r\n const { left, top, height, width } = hostEl.getBoundingClientRect();\r\n const l = styles.left === \"auto\" ? left : left + parseFloat(styles.marginLeft);\r\n const t = styles.top === \"auto\" ? top : top + parseFloat(styles.marginTop);\r\n const w = styles.width === \"auto\" ? width : parseFloat(styles.width);\r\n const h = styles.height === \"auto\" ? height : parseFloat(styles.height);\r\n return { w, h, l, t };\r\n }\r\n\r\n getStandardPosition(p: Position): { top: number; left: number } {\r\n const { h, w, l, t } = this.getHostPosition(this.el.nativeElement);\r\n if (p === \"top\") return { left: l + w / 2, top: t - 6 };\r\n if (p === \"left\") return { left: l - 6, top: t + h / 2 };\r\n if (p === \"right\") return { left: l + w + 6, top: t + h / 2 };\r\n else return { left: l + w / 2, top: t + h + 6 };\r\n }\r\n\r\n private showTooltip() {\r\n const factory = this.viewContainerRef.createComponent(TooltipComponent);\r\n this.tooltipComponentRef = factory;\r\n const tooltipInstance = this.tooltipComponentRef.instance;\r\n const tooltipEl = this.tooltipComponentRef.location.nativeElement;\r\n this.document.body.appendChild(tooltipEl);\r\n const { left, top } = this.getStandardPosition(this.option.position ?? \"bottom\");\r\n tooltipInstance.position = this.option.position ?? \"bottom\";\r\n tooltipInstance.text = this.option.text;\r\n tooltipInstance.left = `${left}px`;\r\n tooltipInstance.top = `${top}px`;\r\n tooltipInstance.visible = false;\r\n\r\n setTimeout(() => {\r\n const tooltipEl = this.tooltipComponentRef.location.nativeElement.querySelector(\".tooltip-container\") as HTMLElement;\r\n if (this.option.class) tooltipEl.classList.add(this.option.class);\r\n this.adjustPosition(tooltipEl).then((position) => {\r\n const { left, top } = this.getStandardPosition(position);\r\n tooltipInstance.position = position;\r\n tooltipInstance.left = `${left}px`;\r\n tooltipInstance.top = `${top}px`;\r\n tooltipInstance.visible = true;\r\n });\r\n }, 1);\r\n }\r\n\r\n private adjustPosition(initTooltipEl: HTMLElement): Promise<Position> {\r\n return new Promise((resolve) => {\r\n const { left, right, top, bottom } = initTooltipEl.getBoundingClientRect();\r\n const windowWidth = document.documentElement.clientWidth;\r\n const windowHeight = document.documentElement.clientHeight;\r\n const isOverLeft = left < 0;\r\n const isOverRight = right > windowWidth;\r\n const isOverTop = top < 0;\r\n const isOverBottom = bottom > windowHeight;\r\n if (!isOverLeft && !isOverRight && !isOverBottom && !isOverTop) resolve(this.option.position ?? \"bottom\");\r\n else if (isOverLeft && isOverRight && isOverBottom && isOverTop) resolve(\"bottom\");\r\n else if (this.option.position === \"top\") {\r\n if (isOverLeft && !isOverRight && !isOverBottom && !isOverTop) resolve(\"right\");\r\n if (!isOverLeft && isOverRight && !isOverBottom && !isOverTop) resolve(\"left\");\r\n if (!isOverLeft && !isOverRight && isOverBottom && !isOverTop) resolve(\"top\");\r\n if (!isOverLeft && !isOverRight && !isOverBottom && isOverTop) resolve(\"bottom\");\r\n if (isOverLeft && isOverRight && !isOverBottom && !isOverTop) resolve(\"top\");\r\n if (isOverLeft && !isOverRight && isOverBottom && !isOverTop) resolve(\"right\");\r\n if (isOverLeft && !isOverRight && !isOverBottom && isOverTop) resolve(\"right\");\r\n if (!isOverLeft && isOverRight && isOverBottom && !isOverTop) resolve(\"left\");\r\n if (!isOverLeft && isOverRight && !isOverBottom && isOverTop) resolve(\"left\");\r\n if (!isOverLeft && !isOverRight && isOverBottom && isOverTop) resolve(\"left\");\r\n if (isOverLeft && isOverRight && isOverBottom && !isOverTop) resolve(\"top\");\r\n if (isOverLeft && isOverRight && !isOverBottom && isOverTop) resolve(\"bottom\");\r\n if (isOverLeft && !isOverRight && isOverBottom && isOverTop) resolve(\"right\");\r\n if (!isOverLeft && isOverRight && isOverBottom && isOverTop) resolve(\"left\");\r\n } else if (this.option.position === \"left\") {\r\n if (isOverLeft && !isOverRight && !isOverBottom && !isOverTop) resolve(\"right\");\r\n if (!isOverLeft && isOverRight && !isOverBottom && !isOverTop) resolve(\"left\");\r\n if (!isOverLeft && !isOverRight && isOverBottom && !isOverTop) resolve(\"left\");\r\n if (!isOverLeft && !isOverRight && !isOverBottom && isOverTop) resolve(\"left\");\r\n if (isOverLeft && isOverRight && !isOverBottom && !isOverTop) resolve(\"bottom\");\r\n if (isOverLeft && !isOverRight && isOverBottom && !isOverTop) resolve(\"right\");\r\n if (isOverLeft && !isOverRight && !isOverBottom && isOverTop) resolve(\"right\");\r\n if (!isOverLeft && isOverRight && isOverBottom && !isOverTop) resolve(\"left\");\r\n if (!isOverLeft && isOverRight && !isOverBottom && isOverTop) resolve(\"left\");\r\n if (!isOverLeft && !isOverRight && isOverBottom && isOverTop) resolve(\"left\");\r\n if (isOverLeft && isOverRight && isOverBottom && !isOverTop) resolve(\"top\");\r\n if (isOverLeft && isOverRight && !isOverBottom && isOverTop) resolve(\"bottom\");\r\n if (isOverLeft && !isOverRight && isOverBottom && isOverTop) resolve(\"right\");\r\n if (!isOverLeft && isOverRight && isOverBottom && isOverTop) resolve(\"left\");\r\n } else if (this.option.position === \"right\") {\r\n if (isOverLeft && !isOverRight && !isOverBottom && !isOverTop) resolve(\"right\");\r\n if (!isOverLeft && isOverRight && !isOverBottom && !isOverTop) resolve(\"left\");\r\n if (!isOverLeft && !isOverRight && isOverBottom && !isOverTop) resolve(\"right\");\r\n if (!isOverLeft && !isOverRight && !isOverBottom && isOverTop) resolve(\"right\");\r\n if (isOverLeft && isOverRight && !isOverBottom && !isOverTop) resolve(\"bottom\");\r\n if (isOverLeft && !isOverRight && isOverBottom && !isOverTop) resolve(\"right\");\r\n if (isOverLeft && !isOverRight && !isOverBottom && isOverTop) resolve(\"right\");\r\n if (!isOverLeft && isOverRight && isOverBottom && !isOverTop) resolve(\"left\");\r\n if (!isOverLeft && isOverRight && !isOverBottom && isOverTop) resolve(\"left\");\r\n if (!isOverLeft && !isOverRight && isOverBottom && isOverTop) resolve(\"right\");\r\n if (isOverLeft && isOverRight && isOverBottom && !isOverTop) resolve(\"top\");\r\n if (isOverLeft && isOverRight && !isOverBottom && isOverTop) resolve(\"bottom\");\r\n if (isOverLeft && !isOverRight && isOverBottom && isOverTop) resolve(\"right\");\r\n if (!isOverLeft && isOverRight && isOverBottom && isOverTop) resolve(\"left\");\r\n } else if (this.option.position === \"bottom\") {\r\n if (isOverLeft && !isOverRight && !isOverBottom && !isOverTop) resolve(\"right\");\r\n if (!isOverLeft && isOverRight && !isOverBottom && !isOverTop) resolve(\"left\");\r\n if (!isOverLeft && !isOverRight && isOverBottom && !isOverTop) resolve(\"top\");\r\n if (!isOverLeft && !isOverRight && !isOverBottom && isOverTop) resolve(\"bottom\");\r\n if (isOverLeft && isOverRight && !isOverBottom && !isOverTop) resolve(\"bottom\");\r\n if (isOverLeft && !isOverRight && isOverBottom && !isOverTop) resolve(\"right\");\r\n if (isOverLeft && !isOverRight && !isOverBottom && isOverTop) resolve(\"right\");\r\n if (!isOverLeft && isOverRight && isOverBottom && !isOverTop) resolve(\"right\");\r\n if (!isOverLeft && isOverRight && !isOverBottom && isOverTop) resolve(\"left\");\r\n if (!isOverLeft && !isOverRight && isOverBottom && isOverTop) resolve(\"right\");\r\n if (isOverLeft && isOverRight && isOverBottom && !isOverTop) resolve(\"top\");\r\n if (isOverLeft && isOverRight && !isOverBottom && isOverTop) resolve(\"bottom\");\r\n if (isOverLeft && !isOverRight && isOverBottom && isOverTop) resolve(\"right\");\r\n if (!isOverLeft && isOverRight && isOverBottom && isOverTop) resolve(\"left\");\r\n }\r\n });\r\n }\r\n private hideTooltip() {\r\n if (this.tooltipComponentRef) {\r\n const tooltipInstance = this.tooltipComponentRef.instance;\r\n tooltipInstance.visible = false;\r\n this.tooltipComponentRef.destroy();\r\n }\r\n }\r\n}\r\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { ReactiveFormsModule, FormsModule } from \"@angular/forms\";\nimport { TooltipComponent } from \"./ng-tooltip.component\";\nimport { TooltipDirective } from \"./ng-tooltip.directive\";\n\n@NgModule({\n imports: [CommonModule, FormsModule, ReactiveFormsModule],\n declarations: [TooltipComponent, TooltipDirective],\n exports: [TooltipDirective],\n})\nexport class TooltipModule {}\n","/*\r\n * Public API Surface of ng-tooltip-directive\r\n */\r\n\r\nexport * from \"./lib/ng-tooltip.module\";\r\nexport * from \"./lib/ng-tooltip.component\";\r\nexport * from \"./lib/ng-tooltip.model\";\r\nexport * from \"./lib/ng-tooltip.directive\";\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}