aboutsummaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorFuwn <[email protected]>2024-04-15 19:04:24 -0700
committerFuwn <[email protected]>2024-04-15 19:04:24 -0700
commit06be27c3fd2ba7a7f22d4a66d6562ecf8aa1fbd4 (patch)
tree1fa648bc03c36b1279f26467add1042ef058373f /src/lib
parentfeat(badges): fade hidden badges in edit mode (diff)
downloaddue.moe-06be27c3fd2ba7a7f22d4a66d6562ecf8aa1fbd4.tar.xz
due.moe-06be27c3fd2ba7a7f22d4a66d6562ecf8aa1fbd4.zip
feat(tooltip): pinning
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/Tooltip/tooltip.ts24
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;