From cebfb8d3e3dc0c0d1118f5190db534a78876723f Mon Sep 17 00:00:00 2001 From: Sukhwinder Dhillon Date: Mon, 12 Jun 2023 13:12:28 +0200 Subject: [PATCH] Flyout menu: Render menu `bottom-up` if it exceeds the viewport height --- public/css/icinga/menu.less | 6 ++++++ public/js/icinga/behavior/navigation.js | 5 ++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/public/css/icinga/menu.less b/public/css/icinga/menu.less index 98650a237b..e9ed78808f 100644 --- a/public/css/icinga/menu.less +++ b/public/css/icinga/menu.less @@ -270,6 +270,12 @@ left: -.6em; z-index: -1; } + + &.bottom-up:after { + top: unset; + bottom: 1em; + } + > .nav-item { display: block; padding-left: 0; diff --git a/public/js/icinga/behavior/navigation.js b/public/js/icinga/behavior/navigation.js index df0e1e6d8c..31325a8e30 100644 --- a/public/js/icinga/behavior/navigation.js +++ b/public/js/icinga/behavior/navigation.js @@ -327,10 +327,13 @@ var rect = $flyout[0].getBoundingClientRect(); if (rect.y + rect.height > window.innerHeight) { + $flyout.addClass('bottom-up'); $flyout.css({ - bottom: 0, + bottom: window.innerHeight - ($target.offset().top + $target.find('> a')[0].offsetHeight), top: 'auto' }); + } else { + $flyout.removeClass('bottom-up'); } }, delay); };