Skip to content

Commit 4ce3217

Browse files
authored
[JENKINS-75635] Fix dropdown menu close when hover on sub dropdown (#10667)
2 parents b7ce450 + 94e3b36 commit 4ce3217

File tree

1 file changed

+25
-0
lines changed
  • src/main/js/components/dropdowns

1 file changed

+25
-0
lines changed

src/main/js/components/dropdowns/utils.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,23 @@ function generateDropdown(element, callback, immediate, options = {}) {
4242
}
4343
});
4444

45+
instance.popper.addEventListener("mouseenter", () => {
46+
const handleMouseMove = () => {
47+
const dropdowns =
48+
document.querySelectorAll("[data-tippy-root]");
49+
const isMouseOverAnyDropdown = Array.from(dropdowns).some(
50+
(dropdown) => dropdown.matches(":hover"),
51+
);
52+
53+
if (!isMouseOverAnyDropdown) {
54+
instance.hide();
55+
document.removeEventListener("mousemove", handleMouseMove);
56+
}
57+
};
58+
59+
document.addEventListener("mousemove", handleMouseMove);
60+
});
61+
4562
callback(instance);
4663
};
4764
if (immediate) {
@@ -52,6 +69,14 @@ function generateDropdown(element, callback, immediate, options = {}) {
5269
});
5370
}
5471
},
72+
onHide() {
73+
const dropdowns = document.querySelectorAll("[data-tippy-root]");
74+
const isMouseOverAnyDropdown = Array.from(dropdowns).some(
75+
(dropdown) => dropdown.matches(":hover"),
76+
);
77+
78+
return !isMouseOverAnyDropdown;
79+
},
5580
},
5681
options,
5782
),

0 commit comments

Comments
 (0)