Item/attachment box: Prevent default label focus/blur behavior

Since ceb1dd7da3 added a tabindex on
#zotero-view-item, clicking anywhere outside a field in the pane will
blur the active field. That's an improvement, but it conflicted with our
custom label behavior - when an active field's label is clicked, we want
to blur it and keep it blurred, but the default behavior is to re-focus
it on mouseup.

Fix by preventing the default focus behavior on mousedown/click.
This commit is contained in:
Abe Jellinek 2024-02-09 14:38:56 -05:00
parent 6a39980a97
commit 872e7b2427
2 changed files with 16 additions and 2 deletions

View file

@ -264,7 +264,11 @@
}
});
this.querySelectorAll(".meta-label").forEach(label => label.addEventListener("click", this._handleMetaLabelClick));
for (let label of this.querySelectorAll(".meta-label")) {
// Prevent default focus/blur behavior - we implement our own below
label.addEventListener("mousedown", event => event.preventDefault());
label.addEventListener("click", this._handleMetaLabelClick);
}
}
destroy() {
@ -625,6 +629,8 @@
}
_handleMetaLabelClick = (event) => {
event.preventDefault();
let labelWrapper = event.target.closest(".meta-label");
if (labelWrapper.nextSibling.contains(document.activeElement)) {
document.activeElement.blur();

View file

@ -854,7 +854,15 @@
if (!this.editable) {
break;
}
label.addEventListener('click', (_) => {
label.addEventListener('mousedown', (event) => {
// Prevent default focus/blur behavior - we implement our own below
event.preventDefault();
});
label.addEventListener('click', (event) => {
event.preventDefault();
let labelWrapper = label.closest(".meta-label");
if (labelWrapper.nextSibling.contains(document.activeElement)) {
document.activeElement.blur();