From 604c00905987cf38336754aef408d837b368a8e5 Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Thu, 9 Dec 2021 15:28:39 +0100 Subject: [PATCH] luci-base: ui.js: avoid error tooltips overlapping dropdowns Fixes: #5588 Signed-off-by: Jo-Philipp Wich --- .../luci-base/htdocs/luci-static/resources/ui.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/modules/luci-base/htdocs/luci-static/resources/ui.js b/modules/luci-base/htdocs/luci-static/resources/ui.js index 9f3e74b935..ac158f5260 100644 --- a/modules/luci-base/htdocs/luci-static/resources/ui.js +++ b/modules/luci-base/htdocs/luci-static/resources/ui.js @@ -3250,7 +3250,8 @@ var UI = baseclass.extend(/** @lends LuCI.ui.prototype */ { var rect = target.getBoundingClientRect(), x = rect.left + window.pageXOffset, - y = rect.top + rect.height + window.pageYOffset; + y = rect.top + rect.height + window.pageYOffset, + above = false; tooltipDiv.className = 'cbi-tooltip'; tooltipDiv.innerHTML = '▲ '; @@ -3259,7 +3260,15 @@ var UI = baseclass.extend(/** @lends LuCI.ui.prototype */ { if (target.hasAttribute('data-tooltip-style')) tooltipDiv.classList.add(target.getAttribute('data-tooltip-style')); - if ((y + tooltipDiv.offsetHeight) > (window.innerHeight + window.pageYOffset)) { + if ((y + tooltipDiv.offsetHeight) > (window.innerHeight + window.pageYOffset)) + above = true; + + var dropdown = target.querySelector('ul.dropdown[style]:first-child'); + + if (dropdown && dropdown.style.top) + above = true; + + if (above) { y -= (tooltipDiv.offsetHeight + target.offsetHeight); tooltipDiv.firstChild.data = '▼ ' + tooltipDiv.firstChild.data.substr(2); } -- 2.30.2