Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b06c37affa |
@@ -750,8 +750,9 @@ function elementById(id) {
|
|||||||
const overflowOrder = [".operator-layout-picker", ".header-style-pick", "#theme-toggle"];
|
const overflowOrder = [".operator-layout-picker", ".header-style-pick", "#theme-toggle"];
|
||||||
function anchorMenu(button, menu) {
|
function anchorMenu(button, menu) {
|
||||||
const rect = button.getBoundingClientRect();
|
const rect = button.getBoundingClientRect();
|
||||||
|
if (menu.parentElement !== document.body) document.body.appendChild(menu);
|
||||||
menu.style.position = "fixed";
|
menu.style.position = "fixed";
|
||||||
menu.style.zIndex = "200";
|
menu.style.zIndex = "9700";
|
||||||
menu.style.top = "0px";
|
menu.style.top = "0px";
|
||||||
menu.style.bottom = "auto";
|
menu.style.bottom = "auto";
|
||||||
menu.style.right = "auto";
|
menu.style.right = "auto";
|
||||||
@@ -798,7 +799,11 @@ function elementById(id) {
|
|||||||
if (open) anchorMenu(button, menu);
|
if (open) anchorMenu(button, menu);
|
||||||
});
|
});
|
||||||
document.addEventListener("click", (event) => {
|
document.addEventListener("click", (event) => {
|
||||||
if (!(event.target instanceof Node) || !wrap.contains(event.target)) closeMenu();
|
if (!(event.target instanceof Node)) {
|
||||||
|
closeMenu();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!wrap.contains(event.target) && !menu.contains(event.target)) closeMenu();
|
||||||
});
|
});
|
||||||
document.addEventListener("keydown", (event) => {
|
document.addEventListener("keydown", (event) => {
|
||||||
if (event.key === "Escape") closeMenu();
|
if (event.key === "Escape") closeMenu();
|
||||||
|
|||||||
@@ -334,8 +334,14 @@ function elementById<T extends HTMLElement>(id: string): T {
|
|||||||
// edge.
|
// edge.
|
||||||
function anchorMenu(button: HTMLElement, menu: HTMLElement) {
|
function anchorMenu(button: HTMLElement, menu: HTMLElement) {
|
||||||
const rect = button.getBoundingClientRect();
|
const rect = button.getBoundingClientRect();
|
||||||
|
// Reparent to the body. Fixed positioning escapes clipping but not
|
||||||
|
// stacking: the header sets `z-index: 2`, which makes it a stacking
|
||||||
|
// context, so any z-index the menu carries is confined below every panel
|
||||||
|
// that paints above level 2 — the spectrum overlays reach 9600. Only
|
||||||
|
// leaving that subtree lets the menu sit above the page.
|
||||||
|
if (menu.parentElement !== document.body) document.body.appendChild(menu);
|
||||||
menu.style.position = "fixed";
|
menu.style.position = "fixed";
|
||||||
menu.style.zIndex = "200";
|
menu.style.zIndex = "9700";
|
||||||
menu.style.top = "0px";
|
menu.style.top = "0px";
|
||||||
menu.style.bottom = "auto";
|
menu.style.bottom = "auto";
|
||||||
// The stylesheet pins these menus to the right of their anchor; leaving
|
// The stylesheet pins these menus to the right of their anchor; leaving
|
||||||
@@ -386,7 +392,8 @@ function elementById<T extends HTMLElement>(id: string): T {
|
|||||||
if (open) anchorMenu(button, menu);
|
if (open) anchorMenu(button, menu);
|
||||||
});
|
});
|
||||||
document.addEventListener("click", (event) => {
|
document.addEventListener("click", (event) => {
|
||||||
if (!(event.target instanceof Node) || !wrap.contains(event.target)) closeMenu();
|
if (!(event.target instanceof Node)) { closeMenu(); return; }
|
||||||
|
if (!wrap.contains(event.target) && !menu.contains(event.target)) closeMenu();
|
||||||
});
|
});
|
||||||
document.addEventListener("keydown", (event) => { if (event.key === "Escape") closeMenu(); });
|
document.addEventListener("keydown", (event) => { if (event.key === "Escape") closeMenu(); });
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user