diff --git a/webapp/src/main/webapp/js/tooltip/tooltip-utils.js b/webapp/src/main/webapp/js/tooltip/tooltip-utils.js index de7934d21a..094f3b5e5d 100644 --- a/webapp/src/main/webapp/js/tooltip/tooltip-utils.js +++ b/webapp/src/main/webapp/js/tooltip/tooltip-utils.js @@ -23,6 +23,17 @@ function setupTriggerHandlers(element, trigger, data) { } } +function isTooltipHidden(tooltip) { + // If tooltip is not defined or there are no tooltips in the document, it is hidden + if (!tooltip) return true; + + // Fallback if tooltip is defined but not in the document, it is hidden + if (document.querySelectorAll('.tooltip').length === 0) return true + + // Variable is deffined and there is at least one tooltip element in the document + return false; +} + function setupClickTrigger(element, data) { let tooltip; @@ -33,7 +44,7 @@ function setupClickTrigger(element, data) { }; element.addEventListener('click', () => { - if (!tooltip || document.querySelectorAll('.tooltip').length === 0) { + if (isTooltipHidden(tooltip)) { tooltip = setupTooltip(element, data); } else { tooltip = removeTooltip(tooltip); @@ -54,7 +65,7 @@ function setupHoverTrigger(element, data) { const showTooltip = () => { clearTimeout(timeout); - if (!tooltip || document.querySelectorAll('.tooltip').length === 0) { + if (isTooltipHidden(tooltip)) { tooltip = setupTooltip(element, data); tooltip.addEventListener('mouseenter', () => clearTimeout(timeout)); tooltip.addEventListener('mouseleave', () => timeout = setTimeout(() => {tooltip = removeTooltip(tooltip)}, 300));