From e5d22682cbc13bc6345183d4c3e68f3be3c074aa Mon Sep 17 00:00:00 2001 From: Garrett Boone <47018474+garrettboone@users.noreply.github.com> Date: Sat, 11 Sep 2021 14:30:06 -0400 Subject: [PATCH] Fix tooltip shifting on long descriptions This puts the tooltip-container under the mouse even on scrollbar shift due to long descriptions. --- assets/js/app.min.js | 2 +- assets/js/core/tooltip.js | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/assets/js/app.min.js b/assets/js/app.min.js index 9d637ecd5..af5e97492 100644 --- a/assets/js/app.min.js +++ b/assets/js/app.min.js @@ -59,7 +59,7 @@ function destroyIfNotOnTooltip(){var div=document.getElementById("tooltip-contai function create(element){var contentElement=element.querySelector("script");if(contentElement){render(element,contentElement.innerHTML);return} var link=element.dataset.href;if(link){fetch(link,function(html){if(html){render(element,html)}})}} function fetch(url,callback){var request=new XMLHttpRequest();request.open("GET",url,!0);request.setRequestHeader("X-Requested-With","XMLHttpRequest");request.onreadystatechange=function(){if(request.readyState===XMLHttpRequest.DONE){if(request.status===200){callback(request.responseText)}}};request.send(null)} -function render(element,html){var containerElement=document.createElement("div");containerElement.id="tooltip-container";containerElement.innerHTML=html;containerElement.addEventListener("mouseleave",onMouseLeaveContainer,!1);containerElement.addEventListener("mouseenter",mouseOnTooltip,!1);containerElement.mouseOnTooltip=!1;var elementRect=element.getBoundingClientRect();var top=elementRect.top+window.scrollY+elementRect.height;containerElement.style.top=top+"px";if(elementRect.left>(window.innerWidth-600)){var right=window.innerWidth-elementRect.right-window.scrollX;containerElement.style.right=right+"px"}else{var left=elementRect.left+window.scrollX;containerElement.style.left=left+"px"} +function render(element,html){var containerElement=document.createElement("div");containerElement.id="tooltip-container";containerElement.innerHTML=html;containerElement.addEventListener("mouseleave",onMouseLeaveContainer,!1);containerElement.addEventListener("mouseenter",mouseOnTooltip,!1);containerElement.mouseOnTooltip=!1;var elementRect=element.getBoundingClientRect();var top=elementRect.top+window.scrollY+elementRect.height;containerElement.style.top=top-20+"px";if(elementRect.left>(window.innerWidth-600)){var right=window.innerWidth-elementRect.right-window.scrollX;containerElement.style.right=right-25+"px"}else{var left=elementRect.left+window.scrollX;containerElement.style.left=left-25+"px"} document.body.appendChild(containerElement);document.body.onclick=function(event){if(!containerElement.contains(event.target)){destroy()}}} function destroy(){var element=document.getElementById("tooltip-container");if(element){element.parentNode.removeChild(element)}} function exists(){return!!document.getElementById("tooltip-container")} diff --git a/assets/js/core/tooltip.js b/assets/js/core/tooltip.js index 0c82bc433..90ccf6dd0 100644 --- a/assets/js/core/tooltip.js +++ b/assets/js/core/tooltip.js @@ -63,14 +63,14 @@ KB.on('dom.ready', function() { var elementRect = element.getBoundingClientRect(); var top = elementRect.top + window.scrollY + elementRect.height; - containerElement.style.top = top + "px"; + containerElement.style.top = top - 20 + "px"; if (elementRect.left > (window.innerWidth - 600)) { var right = window.innerWidth - elementRect.right - window.scrollX; - containerElement.style.right = right + "px"; + containerElement.style.right = right - 25 + "px"; } else { var left = elementRect.left + window.scrollX; - containerElement.style.left = left + "px"; + containerElement.style.left = left - 25 + "px"; } document.body.appendChild(containerElement);