Item box: Fix missing Copy/Paste menuitems on URL fields (#5001)

This commit is contained in:
Abe Jellinek 2025-01-28 00:48:41 -05:00 committed by Dan Stillman
parent 62d46d337a
commit 569bd1ffae
2 changed files with 16 additions and 14 deletions

View file

@ -63,6 +63,7 @@
this._selectFieldSelection = null;
this._addCreatorRow = false;
this._switchedModeOfCreator = null;
this._popupNode = null;
this._lastUpdateCustomRows = "";
// Keep in sync with itemPaneManager.js
@ -125,7 +126,7 @@
init() {
this.initCollapsibleSection();
this._creatorTypeMenu.addEventListener('command', async (event) => {
var typeBox = document.popupNode;
var typeBox = this._popupNode;
var index = parseInt(typeBox.getAttribute('fieldname').split('-')[1]);
var typeID = event.explicitOriginalTarget.getAttribute('typeid');
@ -144,7 +145,7 @@
});
this._id('zotero-creator-transform-menu').addEventListener('popupshowing', (_event) => {
var row = document.popupNode.closest('.meta-row');
var row = this._popupNode.closest('.meta-row');
var typeBox = row.querySelector('.creator-type-label').parentNode;
var index = parseInt(typeBox.getAttribute('fieldname').split('-')[1]);
var item = this.item;
@ -182,7 +183,7 @@
});
this._id('zotero-creator-transform-menu').addEventListener('command', async (event) => {
var row = document.popupNode.closest('.meta-row');
var row = this._popupNode.closest('.meta-row');
var typeBox = row.querySelector('.creator-type-label').parentNode;
var index = parseInt(typeBox.getAttribute('fieldname').split('-')[1]);
@ -666,12 +667,13 @@
}
if (addLinkContextMenu) {
rowData.oncontextmenu = (event) => {
this._linkMenu.dataset.link = link;
this._linkMenu.dataset.val = val;
document.popupNode = rowLabel.parentElement;
let menupopup = this._linkMenu;
menupopup.dataset.link = link;
menupopup.dataset.val = val;
this._popupNode = rowLabel.parentElement;
let menupopup = this._id('zotero-link-menu');
Zotero.Utilities.Internal.updateEditContextMenu(menupopup, event.target.closest('input'));
Zotero.Utilities.Internal.updateEditContextMenu(menupopup, event.target);
this.handlePopupOpening(event, menupopup);
};
}
@ -1189,7 +1191,7 @@
span.className = 'creator-type-dropmarker';
labelWrapper.appendChild(span);
labelWrapper.addEventListener('click', (e) => {
document.popupNode = rowLabel;
this._popupNode = rowLabel;
this._creatorTypeMenu.openPopup(rowLabel);
// If the creator menu is opened via mouse-click, add a special attribute to
// blur the focused field so that icons do not show up after the menu is closed.
@ -1296,7 +1298,7 @@
optionsButton.setAttribute('id', `creator-${rowIndex}-options`);
optionsButton.setAttribute('data-l10n-id', "itembox-button-options");
let triggerPopup = (e) => {
document.popupNode = firstlast;
this._popupNode = firstlast;
let menupopup = this._id('zotero-creator-transform-menu');
Zotero.Utilities.Internal.updateEditContextMenu(menupopup, e.target.closest('input'));
@ -2390,7 +2392,7 @@
* @return {Promise}
*/
async swapNames(_event) {
var row = document.popupNode.closest('.meta-row');
var row = this._popupNode.closest('.meta-row');
var typeBox = row.querySelector('[fieldname]');
var creatorIndex = parseInt(typeBox.getAttribute('fieldname').split('-')[1]);
var fields = this.getCreatorFields(row);
@ -2415,7 +2417,7 @@
* @return {Promise}
*/
async capitalizeCreatorName(_event) {
var row = document.popupNode.closest('.meta-row');
var row = this._popupNode.closest('.meta-row');
let label = row.querySelector('.meta-label');
var creatorIndex = parseInt(label.getAttribute('fieldname').split('-')[1]);
let [lastName, firstName] = [...row.querySelectorAll("editable-text")];

View file

@ -269,7 +269,7 @@ describe("Item pane", function () {
var menupopup = itemBox.querySelector('#zotero-creator-transform-menu');
// Fake a right-click
doc.popupNode = parent;
itemBox._popupNode = parent;
menupopup.openPopup(
parent, "after_start", 0, 0, true, false, new MouseEvent('click', { button: 2 })
);
@ -298,7 +298,7 @@ describe("Item pane", function () {
var firstlast = label.closest('.creator-type-value');
var menupopup = itemBox.querySelector('#zotero-creator-transform-menu');
// Fake a right-click
doc.popupNode = firstlast;
itemBox._popupNode = firstlast;
menupopup.openPopup(
firstlast, "after_start", 0, 0, true, false, new MouseEvent('click', { button: 2 })
);