diff options
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/Tooltip/tooltip.ts | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/lib/Tooltip/tooltip.ts b/src/lib/Tooltip/tooltip.ts index 8f1d9988..2beb25d0 100644 --- a/src/lib/Tooltip/tooltip.ts +++ b/src/lib/Tooltip/tooltip.ts @@ -29,6 +29,30 @@ const tooltip = (element: HTMLElement) => { const updateTooltipPosition = (x: number, y: number) => { if (tooltipDiv) { + const tooltipPin = element.dataset.tooltippin; + + if (tooltipPin) { + const pinnedElement = document.getElementById(tooltipPin); + + if (pinnedElement) { + const rect = pinnedElement.getBoundingClientRect(); + const tooltipWidth = tooltipDiv.offsetWidth; + const tooltipHeight = tooltipDiv.offsetHeight; + let top = rect.top - tooltipHeight - offset; + let left = rect.left + rect.width / 2 - tooltipWidth / 2; + + if (left < 0) left = offset; + if (left + tooltipWidth > window.innerWidth) + left = window.innerWidth - tooltipWidth - offset; + if (top < 0) top = rect.top + rect.height + offset; + + tooltipDiv.style.left = `${left}px`; + tooltipDiv.style.top = `${top}px`; + + return; + } + } + const tooltipWidth = tooltipDiv.offsetWidth; const tooltipHeight = tooltipDiv.offsetHeight; let top = y - tooltipHeight - offset; |