diff --git a/source/compose.manager/include/ComposeManager.php b/source/compose.manager/include/ComposeManager.php index 2e0258d2..6845fd9f 100755 --- a/source/compose.manager/include/ComposeManager.php +++ b/source/compose.manager/include/ComposeManager.php @@ -236,10 +236,11 @@ function compose_manager_cpu_spec_count($cpuSpec) z-index: 100 !important; } - /* Keep long context menus visible above fixed bottom UI bars */ + /* Keep context menus above the fixed footer (z-index must out-rank the + .dropdown-menu !important rule above); the scroll spacer appended in + fixContextDropdownOverflow() keeps them reachable (unraid/webgui#2639) */ .dropdown-context:not(.dropdown-context-sub) { - max-height: calc(100vh - 72px); - overflow-y: auto; + z-index: 10001 !important; } /* CPU & Memory load display (matches Docker manager usage-disk style) */ diff --git a/source/compose.manager/javascript/composeManagerMain.js b/source/compose.manager/javascript/composeManagerMain.js index 8ea6981c..89171d09 100644 --- a/source/compose.manager/javascript/composeManagerMain.js +++ b/source/compose.manager/javascript/composeManagerMain.js @@ -6218,6 +6218,13 @@ function updateParentStackFromContainers(stackId, project) { } // Attach context menu to container icon (like Docker tab's addDockerContainerContext) +// Keep a context dropdown above the footer and extend the scrollable area so it stays reachable +// (same fix as unraid/webgui#2639) +function fixContextDropdownOverflow(elementId) { + $('#dropdown-' + elementId).css('z-index', 10001) + .append('
'); +} + function addComposeContainerContext(elementId) { var $el = $('#' + elementId); var containerName = $el.data('name'); @@ -6348,6 +6355,7 @@ function addComposeContainerContext(elementId) { // Ensure stale menu bindings don't persist across state transitions $el.off('contextmenu'); context.attach('#' + elementId, opts); + fixContextDropdownOverflow(elementId); } function containerAction(containerName, action, stackId) { @@ -6828,6 +6836,7 @@ function addComposeStackContext(elementId) { context.destroy('#' + elementId); context.attach('#' + elementId, opts); + fixContextDropdownOverflow(elementId); } // Event delegation for docker-style container actions