diff options
| author | Fuwn <[email protected]> | 2024-04-15 19:04:24 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2024-04-15 19:04:24 -0700 |
| commit | 06be27c3fd2ba7a7f22d4a66d6562ecf8aa1fbd4 (patch) | |
| tree | 1fa648bc03c36b1279f26467add1042ef058373f /src/lib | |
| parent | feat(badges): fade hidden badges in edit mode (diff) | |
| download | due.moe-06be27c3fd2ba7a7f22d4a66d6562ecf8aa1fbd4.tar.xz due.moe-06be27c3fd2ba7a7f22d4a66d6562ecf8aa1fbd4.zip | |
feat(tooltip): pinning
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; |