Rollup merge of #104577 - GuillaumeGomez:remove-focus-on-blur, r=notriddle
Don't focus on notable trait parent when hiding it I clicked on a notable trait icon so the popup remained and then clicked on the settings menu. When the settings menu was blurred, it scrolled back to when the notable trait was, which isn't great. r? `@notriddle`
This commit is contained in:
commit
e2dcc28d3c
@ -1 +1 @@
|
|||||||
0.13.1
|
0.13.2
|
@ -795,7 +795,7 @@ function loadCss(cssUrl) {
|
|||||||
// This means when the window is resized, we need to redo the layout.
|
// This means when the window is resized, we need to redo the layout.
|
||||||
const base = window.CURRENT_NOTABLE_ELEMENT.NOTABLE_BASE;
|
const base = window.CURRENT_NOTABLE_ELEMENT.NOTABLE_BASE;
|
||||||
const force_visible = base.NOTABLE_FORCE_VISIBLE;
|
const force_visible = base.NOTABLE_FORCE_VISIBLE;
|
||||||
hideNotable();
|
hideNotable(false);
|
||||||
if (force_visible) {
|
if (force_visible) {
|
||||||
showNotable(base);
|
showNotable(base);
|
||||||
base.NOTABLE_FORCE_VISIBLE = true;
|
base.NOTABLE_FORCE_VISIBLE = true;
|
||||||
@ -846,7 +846,7 @@ function loadCss(cssUrl) {
|
|||||||
// Make this function idempotent.
|
// Make this function idempotent.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
hideNotable();
|
hideNotable(false);
|
||||||
const ty = e.getAttribute("data-ty");
|
const ty = e.getAttribute("data-ty");
|
||||||
const wrapper = document.createElement("div");
|
const wrapper = document.createElement("div");
|
||||||
wrapper.innerHTML = "<div class=\"docblock\">" + window.NOTABLE_TRAITS[ty] + "</div>";
|
wrapper.innerHTML = "<div class=\"docblock\">" + window.NOTABLE_TRAITS[ty] + "</div>";
|
||||||
@ -883,7 +883,7 @@ function loadCss(cssUrl) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!e.NOTABLE_FORCE_VISIBLE && !elemIsInParent(event.relatedTarget, e)) {
|
if (!e.NOTABLE_FORCE_VISIBLE && !elemIsInParent(event.relatedTarget, e)) {
|
||||||
hideNotable();
|
hideNotable(true);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@ -903,14 +903,16 @@ function loadCss(cssUrl) {
|
|||||||
// To work around this, make sure the click finishes being dispatched before
|
// To work around this, make sure the click finishes being dispatched before
|
||||||
// hiding the popover. Since `hideNotable()` is idempotent, this makes Safari behave
|
// hiding the popover. Since `hideNotable()` is idempotent, this makes Safari behave
|
||||||
// consistently with the other two.
|
// consistently with the other two.
|
||||||
setTimeout(hideNotable, 0);
|
setTimeout(() => hideNotable(false), 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function hideNotable() {
|
function hideNotable(focus) {
|
||||||
if (window.CURRENT_NOTABLE_ELEMENT) {
|
if (window.CURRENT_NOTABLE_ELEMENT) {
|
||||||
if (window.CURRENT_NOTABLE_ELEMENT.NOTABLE_BASE.NOTABLE_FORCE_VISIBLE) {
|
if (window.CURRENT_NOTABLE_ELEMENT.NOTABLE_BASE.NOTABLE_FORCE_VISIBLE) {
|
||||||
window.CURRENT_NOTABLE_ELEMENT.NOTABLE_BASE.focus();
|
if (focus) {
|
||||||
|
window.CURRENT_NOTABLE_ELEMENT.NOTABLE_BASE.focus();
|
||||||
|
}
|
||||||
window.CURRENT_NOTABLE_ELEMENT.NOTABLE_BASE.NOTABLE_FORCE_VISIBLE = false;
|
window.CURRENT_NOTABLE_ELEMENT.NOTABLE_BASE.NOTABLE_FORCE_VISIBLE = false;
|
||||||
}
|
}
|
||||||
const body = document.getElementsByTagName("body")[0];
|
const body = document.getElementsByTagName("body")[0];
|
||||||
@ -923,7 +925,7 @@ function loadCss(cssUrl) {
|
|||||||
e.onclick = function() {
|
e.onclick = function() {
|
||||||
this.NOTABLE_FORCE_VISIBLE = this.NOTABLE_FORCE_VISIBLE ? false : true;
|
this.NOTABLE_FORCE_VISIBLE = this.NOTABLE_FORCE_VISIBLE ? false : true;
|
||||||
if (window.CURRENT_NOTABLE_ELEMENT && !this.NOTABLE_FORCE_VISIBLE) {
|
if (window.CURRENT_NOTABLE_ELEMENT && !this.NOTABLE_FORCE_VISIBLE) {
|
||||||
hideNotable();
|
hideNotable(true);
|
||||||
} else {
|
} else {
|
||||||
showNotable(this);
|
showNotable(this);
|
||||||
window.CURRENT_NOTABLE_ELEMENT.setAttribute("tabindex", "0");
|
window.CURRENT_NOTABLE_ELEMENT.setAttribute("tabindex", "0");
|
||||||
@ -946,7 +948,7 @@ function loadCss(cssUrl) {
|
|||||||
}
|
}
|
||||||
if (!this.NOTABLE_FORCE_VISIBLE &&
|
if (!this.NOTABLE_FORCE_VISIBLE &&
|
||||||
!elemIsInParent(event.relatedTarget, window.CURRENT_NOTABLE_ELEMENT)) {
|
!elemIsInParent(event.relatedTarget, window.CURRENT_NOTABLE_ELEMENT)) {
|
||||||
hideNotable();
|
hideNotable(true);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
@ -1057,7 +1059,7 @@ function loadCss(cssUrl) {
|
|||||||
onEachLazy(document.querySelectorAll(".search-form .popover"), elem => {
|
onEachLazy(document.querySelectorAll(".search-form .popover"), elem => {
|
||||||
elem.style.display = "none";
|
elem.style.display = "none";
|
||||||
});
|
});
|
||||||
hideNotable();
|
hideNotable(false);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -219,3 +219,33 @@ press-key: "Tab"
|
|||||||
press-key: "Tab"
|
press-key: "Tab"
|
||||||
press-key: "Tab"
|
press-key: "Tab"
|
||||||
assert-count: ("//*[@class='notable popover']", 0)
|
assert-count: ("//*[@class='notable popover']", 0)
|
||||||
|
assert: "#method\.create_an_iterator_from_read .notable-traits:focus"
|
||||||
|
|
||||||
|
// Now we check that the focus isn't given back to the wrong item when opening
|
||||||
|
// another popover.
|
||||||
|
store-window-property: (scroll, "scrollY")
|
||||||
|
click: "#method\.create_an_iterator_from_read .fnname"
|
||||||
|
// We ensure that the scroll position changed.
|
||||||
|
assert-window-property-false: {"scrollY": |scroll|}
|
||||||
|
// Store the new position.
|
||||||
|
store-window-property: (scroll, "scrollY")
|
||||||
|
click: "//*[@id='method.create_an_iterator_from_read']//*[@class='notable-traits']"
|
||||||
|
wait-for: "//*[@class='notable popover']"
|
||||||
|
click: "#settings-menu a"
|
||||||
|
click: ".search-input"
|
||||||
|
// We ensure we didn't come back to the previous focused item.
|
||||||
|
assert-window-property-false: {"scrollY": |scroll|}
|
||||||
|
|
||||||
|
// Same but with Escape handling.
|
||||||
|
store-window-property: (scroll, "scrollY")
|
||||||
|
click: "#method\.create_an_iterator_from_read .fnname"
|
||||||
|
// We ensure that the scroll position changed.
|
||||||
|
assert-window-property-false: {"scrollY": |scroll|}
|
||||||
|
// Store the new position.
|
||||||
|
store-window-property: (scroll, "scrollY")
|
||||||
|
click: "//*[@id='method.create_an_iterator_from_read']//*[@class='notable-traits']"
|
||||||
|
wait-for: "//*[@class='notable popover']"
|
||||||
|
click: "#settings-menu a"
|
||||||
|
press-key: "Escape"
|
||||||
|
// We ensure we didn't come back to the previous focused item.
|
||||||
|
assert-window-property-false: {"scrollY": |scroll|}
|
||||||
|
Loading…
Reference in New Issue
Block a user