From 0db4b446a7d1acbe51e07d23dd857569192b8c0e Mon Sep 17 00:00:00 2001 From: Jan Faracik <43062514+janfaracik@users.noreply.github.com> Date: Mon, 2 Jun 2025 11:27:51 +0100 Subject: [PATCH 01/11] Init --- .../main/resources/jenkins/model/Jenkins/configure.jelly | 2 +- .../resources/lib/form/breadcrumb-config-outline.jelly | 2 +- core/src/main/resources/lib/layout/breadcrumb.jelly | 2 +- src/main/js/components/dropdowns/inpage-jumplist.js | 8 ++------ src/main/js/components/dropdowns/jumplists.js | 6 +++--- 5 files changed, 8 insertions(+), 12 deletions(-) diff --git a/core/src/main/resources/jenkins/model/Jenkins/configure.jelly b/core/src/main/resources/jenkins/model/Jenkins/configure.jelly index 7b7ce31aed..91d01c69f5 100644 --- a/core/src/main/resources/jenkins/model/Jenkins/configure.jelly +++ b/core/src/main/resources/jenkins/model/Jenkins/configure.jelly @@ -29,7 +29,7 @@ THE SOFTWARE. - + diff --git a/core/src/main/resources/lib/form/breadcrumb-config-outline.jelly b/core/src/main/resources/lib/form/breadcrumb-config-outline.jelly index 7a5f4d3b20..9c730d1941 100644 --- a/core/src/main/resources/lib/form/breadcrumb-config-outline.jelly +++ b/core/src/main/resources/lib/form/breadcrumb-config-outline.jelly @@ -32,5 +32,5 @@ THE SOFTWARE. - + diff --git a/core/src/main/resources/lib/layout/breadcrumb.jelly b/core/src/main/resources/lib/layout/breadcrumb.jelly index d0284e4b37..1f3d10e7bb 100644 --- a/core/src/main/resources/lib/layout/breadcrumb.jelly +++ b/core/src/main/resources/lib/layout/breadcrumb.jelly @@ -51,7 +51,7 @@ THE SOFTWARE.
  • - ${attrs.title} + ${attrs.title} diff --git a/src/main/js/components/dropdowns/inpage-jumplist.js b/src/main/js/components/dropdowns/inpage-jumplist.js index d912b77330..d1b9a4cdd6 100644 --- a/src/main/js/components/dropdowns/inpage-jumplist.js +++ b/src/main/js/components/dropdowns/inpage-jumplist.js @@ -5,12 +5,10 @@ import { toId } from "@/util/dom"; * sections on the page (if using ) */ function init() { - const inpageNavigationBreadcrumb = document.querySelector("#inpage-nav"); + const inpageNavigationBreadcrumb = document.querySelector("#inpage-nav span"); if (inpageNavigationBreadcrumb) { - const chevron = document.createElement("li"); - chevron.classList.add("children"); - chevron.items = Array.from( + inpageNavigationBreadcrumb.items = Array.from( document.querySelectorAll( "form > div > .jenkins-section > .jenkins-section__title", ), @@ -18,8 +16,6 @@ function init() { section.id = toId(section.textContent); return { label: section.textContent, url: "#" + section.id }; }); - - inpageNavigationBreadcrumb.after(chevron); } } diff --git a/src/main/js/components/dropdowns/jumplists.js b/src/main/js/components/dropdowns/jumplists.js index 1ee97588c8..f861b483e7 100644 --- a/src/main/js/components/dropdowns/jumplists.js +++ b/src/main/js/components/dropdowns/jumplists.js @@ -38,13 +38,13 @@ function generateDropdowns() { Utils.generateDropdown( element, (instance) => { - const href = element.href; - if (element.items) { instance.setContent(Utils.generateDropdownItems(element.items)); return; } + const href = element.href; + const hasModelLink = element.classList.contains( "hoverable-model-link", ); @@ -105,7 +105,7 @@ function generateDropdowns() { instance.loaded = true; }); }, - false, + element.items != null, { trigger: "mouseenter", offset: [-16, 10], From 51423137c36104c2cd5d596aaadbbb102b421d96 Mon Sep 17 00:00:00 2001 From: Jan Faracik <43062514+janfaracik@users.noreply.github.com> Date: Wed, 2 Jul 2025 17:06:12 +0100 Subject: [PATCH 02/11] _Hopefully_ simplify menu show/hide logic --- .../js/components/dropdowns/autocomplete.js | 1 - src/main/js/components/dropdowns/utils.js | 42 +++++++------------ 2 files changed, 14 insertions(+), 29 deletions(-) diff --git a/src/main/js/components/dropdowns/autocomplete.js b/src/main/js/components/dropdowns/autocomplete.js index 068313f84b..d4d37fd779 100644 --- a/src/main/js/components/dropdowns/autocomplete.js +++ b/src/main/js/components/dropdowns/autocomplete.js @@ -93,7 +93,6 @@ function init() { 0, function (e) { e.setAttribute("autocomplete", "off"); - e.dataset["hideOnClick"] = "false"; // form field with auto-completion support e.style.position = "relative"; // otherwise menu won't hide on tab with nothing selected diff --git a/src/main/js/components/dropdowns/utils.js b/src/main/js/components/dropdowns/utils.js index 8ae6634d1b..b152375e34 100644 --- a/src/main/js/components/dropdowns/utils.js +++ b/src/main/js/components/dropdowns/utils.js @@ -22,8 +22,6 @@ function generateDropdown(element, callback, immediate, options = {}) { {}, Templates.dropdown(), { - hideOnClick: - element.dataset["hideOnClick"] !== "false" ? "toggle" : false, onCreate(instance) { const onload = () => { if (instance.loaded) { @@ -31,34 +29,16 @@ function generateDropdown(element, callback, immediate, options = {}) { } document.addEventListener("click", (event) => { - const isClickInAnyDropdown = - !!event.target.closest("[data-tippy-root]"); const isClickOnReference = instance.reference.contains( event.target, ); - if (!isClickInAnyDropdown && !isClickOnReference) { + if (!isClickOnReference) { + instance.clickToHide = true; instance.hide(); } }); - instance.popper.addEventListener("mouseenter", () => { - const handleMouseMove = () => { - const dropdowns = - document.querySelectorAll("[data-tippy-root]"); - const isMouseOverAnyDropdown = Array.from(dropdowns).some( - (dropdown) => dropdown.matches(":hover"), - ); - - if (!isMouseOverAnyDropdown) { - instance.hide(); - document.removeEventListener("mousemove", handleMouseMove); - } - }; - - document.addEventListener("mousemove", handleMouseMove); - }); - callback(instance); }; if (immediate) { @@ -69,13 +49,19 @@ function generateDropdown(element, callback, immediate, options = {}) { }); } }, - onHide() { - const dropdowns = document.querySelectorAll("[data-tippy-root]"); - const isMouseOverAnyDropdown = Array.from(dropdowns).some( - (dropdown) => dropdown.matches(":hover"), - ); + onHide(instance) { + if ( + instance.props.trigger === "mouseenter" && + !instance.clickToHide + ) { + const dropdowns = document.querySelectorAll("[data-tippy-root]"); + const isMouseOverAnyDropdown = Array.from(dropdowns).some( + (dropdown) => dropdown.matches(":hover"), + ); - return !isMouseOverAnyDropdown; + return !isMouseOverAnyDropdown; + } + instance.clickToHide = false; }, }, options, From fe5825d79d03d63f5d78f691bbd25e3091e17330 Mon Sep 17 00:00:00 2001 From: Jan Faracik <43062514+janfaracik@users.noreply.github.com> Date: Wed, 9 Jul 2025 10:28:17 +0100 Subject: [PATCH 03/11] Apply suggestions, fix submenus --- .../main/resources/lib/layout/breadcrumb.jelly | 2 +- src/main/js/components/dropdowns/templates.js | 18 ++++++++++-------- src/main/js/components/dropdowns/utils.js | 2 ++ 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/core/src/main/resources/lib/layout/breadcrumb.jelly b/core/src/main/resources/lib/layout/breadcrumb.jelly index 1f3d10e7bb..7d41ad3164 100644 --- a/core/src/main/resources/lib/layout/breadcrumb.jelly +++ b/core/src/main/resources/lib/layout/breadcrumb.jelly @@ -48,7 +48,7 @@ THE SOFTWARE. -
  • +
  • ${attrs.title} diff --git a/src/main/js/components/dropdowns/templates.js b/src/main/js/components/dropdowns/templates.js index 25047a3861..acc391c273 100644 --- a/src/main/js/components/dropdowns/templates.js +++ b/src/main/js/components/dropdowns/templates.js @@ -37,14 +37,16 @@ function dropdown() { duration: 250, onShow: (instance) => { // Make sure only one instance is visible at all times - const dropdowns = document.querySelectorAll("[data-tippy-root]"); - Array.from(dropdowns).forEach((element) => { - // Check if the Tippy.js instance exists - if (element && element._tippy) { - // To just hide the dropdown - element._tippy.hide(); - } - }); + if (!instance.reference.closest("[data-tippy-root]")) { + const dropdowns = document.querySelectorAll("[data-tippy-root]"); + Array.from(dropdowns).forEach((element) => { + // Check if the Tippy.js instance exists + if (element && element._tippy) { + // To just hide the dropdown + element._tippy.hide(); + } + }); + } const referenceParent = instance.reference.parentNode; if (referenceParent.classList.contains("model-link")) { diff --git a/src/main/js/components/dropdowns/utils.js b/src/main/js/components/dropdowns/utils.js index 991bcea473..d3af3f744e 100644 --- a/src/main/js/components/dropdowns/utils.js +++ b/src/main/js/components/dropdowns/utils.js @@ -61,7 +61,9 @@ function generateDropdown(element, callback, immediate, options = {}) { return !isMouseOverAnyDropdown; } + instance.clickToHide = false; + return true; }, }, options, From 31b610d900e7fdaa040a7de61c8c7069c5d7bca2 Mon Sep 17 00:00:00 2001 From: Jan Faracik <43062514+janfaracik@users.noreply.github.com> Date: Wed, 9 Jul 2025 10:33:39 +0100 Subject: [PATCH 04/11] Update _core.scss --- src/main/scss/base/_core.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/scss/base/_core.scss b/src/main/scss/base/_core.scss index ad90d35e8f..944e1945ef 100644 --- a/src/main/scss/base/_core.scss +++ b/src/main/scss/base/_core.scss @@ -3,6 +3,7 @@ html { box-sizing: border-box; -webkit-tap-highlight-color: transparent; color: var(--text-color); + scroll-padding-top: calc(var(--header-height) + var(--section-padding)); } body { From e6920f1902726bf2f6cec256986594d7778f4066 Mon Sep 17 00:00:00 2001 From: Stefan Spieker Date: Sat, 12 Jul 2025 18:43:17 +0200 Subject: [PATCH 05/11] reduce jquery usage --- src/main/js/util/jenkins.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/js/util/jenkins.js b/src/main/js/util/jenkins.js index f3fede3e70..e313e2124c 100644 --- a/src/main/js/util/jenkins.js +++ b/src/main/js/util/jenkins.js @@ -10,7 +10,8 @@ var jenkins = {}; // gets the base Jenkins URL including context path jenkins.baseUrl = function () { - var u = $("head").attr("data-rooturl"); + const head = document.querySelector("head"); + let u = head ? head.getAttribute("data-rooturl") : ""; if (!u) { u = ""; } From fad94a3b582b957a4f1099f8e0917e12cfadad3f Mon Sep 17 00:00:00 2001 From: Jan Faracik <43062514+janfaracik@users.noreply.github.com> Date: Wed, 16 Jul 2025 10:00:15 +0100 Subject: [PATCH 06/11] Update utils.js --- src/main/js/components/dropdowns/utils.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/js/components/dropdowns/utils.js b/src/main/js/components/dropdowns/utils.js index d3af3f744e..c226c962de 100644 --- a/src/main/js/components/dropdowns/utils.js +++ b/src/main/js/components/dropdowns/utils.js @@ -32,8 +32,10 @@ function generateDropdown(element, callback, immediate, options = {}) { const isClickOnReference = instance.reference.contains( event.target, ); + // Don't close the dropdown if the user is interacting with a SELECT menu inside of it + const isSelect = event.target.tagName === "SELECT"; - if (!isClickOnReference) { + if (!isClickOnReference && !isSelect) { instance.clickToHide = true; instance.hide(); } From b56c6bd523d2a72949ff0e6900abc6f16d679787 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 16 Jul 2025 08:31:51 -0700 Subject: [PATCH 07/11] Update dependency org.apache.maven:maven-core to v3.9.11 (#10842) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .gitpod/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitpod/Dockerfile b/.gitpod/Dockerfile index 34914a0658..82b57207fe 100644 --- a/.gitpod/Dockerfile +++ b/.gitpod/Dockerfile @@ -1,6 +1,6 @@ FROM gitpod/workspace-full:latest ARG JAVA_VERSION=21.0.6-tem -ARG MAVEN_VERSION=3.9.10 +ARG MAVEN_VERSION=3.9.11 # Install Java 21, Maven and GitHub CLI RUN bash -c ". /home/gitpod/.sdkman/bin/sdkman-init.sh && \ sdk install java ${JAVA_VERSION} && \ From fdbbc9d580b8ab515054033b6c76985013c818f2 Mon Sep 17 00:00:00 2001 From: Stefan Spieker Date: Wed, 16 Jul 2025 19:40:34 +0200 Subject: [PATCH 08/11] applied suggestion --- src/main/js/util/jenkins.js | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/main/js/util/jenkins.js b/src/main/js/util/jenkins.js index e313e2124c..a7028c0073 100644 --- a/src/main/js/util/jenkins.js +++ b/src/main/js/util/jenkins.js @@ -10,12 +10,7 @@ var jenkins = {}; // gets the base Jenkins URL including context path jenkins.baseUrl = function () { - const head = document.querySelector("head"); - let u = head ? head.getAttribute("data-rooturl") : ""; - if (!u) { - u = ""; - } - return u; + return document.head.dataset.rooturl; }; /** From d7c31c7d6ec2c063d9940d48a3cd961a40f50ddd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 17 Jul 2025 09:41:19 -0700 Subject: [PATCH 09/11] Update jenkins/ath Docker tag to v6300 (#10848) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- ath.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ath.sh b/ath.sh index 0212bd9fd2..69ce41c1fa 100644 --- a/ath.sh +++ b/ath.sh @@ -6,7 +6,7 @@ set -o xtrace cd "$(dirname "$0")" # https://github.com/jenkinsci/acceptance-test-harness/releases -export ATH_VERSION=6294.v8837063f315d +export ATH_VERSION=6300.v12732144c83f if [[ $# -eq 0 ]]; then export JDK=17 From 73c4d7100d1c0877f4cc3fbaa04f47375398f0e9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 17 Jul 2025 09:41:35 -0700 Subject: [PATCH 10/11] Update dependency org.jenkins-ci.main:remoting to v3327 (#10846) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 8eba39c4db..a5bbfd111c 100644 --- a/pom.xml +++ b/pom.xml @@ -87,7 +87,7 @@ THE SOFTWARE. https://www.jenkins.io/changelog - 3324.vea_eda_e98cd69 + 3327.v868139a_d00e0 Max Medium From 177995e59fb7b0f449a47de645768437ccce37e0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 17 Jul 2025 09:41:57 -0700 Subject: [PATCH 11/11] Update dependency org.springframework:spring-framework-bom to v6.2.9 (#10849) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- bom/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bom/pom.xml b/bom/pom.xml index c2b98be9b7..4d9e3297f9 100644 --- a/bom/pom.xml +++ b/bom/pom.xml @@ -63,7 +63,7 @@ THE SOFTWARE. org.springframework spring-framework-bom - 6.2.8 + 6.2.9 pom import