From e9f57e16c549221cde29b215d3f6839048cf579e Mon Sep 17 00:00:00 2001 From: "konstantin.kireyev" Date: Tue, 1 Jul 2025 17:05:44 +0500 Subject: [PATCH] fix bug 75333 --- common/loginpage/src/menu.js | 21 ++++++++++++++++----- common/loginpage/src/panelrecent.js | 6 ++++++ 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/common/loginpage/src/menu.js b/common/loginpage/src/menu.js index 586226896..370b4aba3 100644 --- a/common/loginpage/src/menu.js +++ b/common/loginpage/src/menu.js @@ -134,13 +134,24 @@ Menu.prototype.showUnderElem = function(el, data, align) { let $el = $('#'+this.id); const $rel = $(el); - // const $rel.width(); const pos = $rel.offset(); - pos.top += $rel.height() + 2; - const $dd = $el.find('.dropdown-menu'); - if ( align == 'right' ) - pos.left -= $dd.outerWidth() - $rel.outerWidth(); + + let topPos = pos.top + $rel.outerHeight() + 2; + + const dropdownHeight = $dd.outerHeight(); + const viewportHeight = $(window).height(); + const scrollTop = $(window).scrollTop(); + + if ((topPos + dropdownHeight) > (viewportHeight + scrollTop)) { + topPos = pos.top - dropdownHeight - 2; + } + + pos.top = topPos; + + if (align === 'right') { + pos.left = pos.left - ($dd.outerWidth() - $rel.outerWidth()); + } $el.css(pos); $dd.dropdown('toggle'); diff --git a/common/loginpage/src/panelrecent.js b/common/loginpage/src/panelrecent.js index 5f7827ced..b3aa0a91b 100644 --- a/common/loginpage/src/panelrecent.js +++ b/common/loginpage/src/panelrecent.js @@ -330,6 +330,12 @@ function addContextMenuEventListener(collection, model, view, actionList) { $(`#${model.uid}-more-btn`, view).click((e) => { e.stopPropagation(); + + if (Menu.opened) { + Menu.closeAll(); + return; + } + ppmenu.actionlist = actionList; ppmenu.showUnderElem(e.currentTarget, model, $('body').hasClass('rtl') ? 'left' : 'right'); })