diff --git a/chrome/content/zotero/elements/editableText.js b/chrome/content/zotero/elements/editableText.js index a134bcd42a..6218252b20 100644 --- a/chrome/content/zotero/elements/editableText.js +++ b/chrome/content/zotero/elements/editableText.js @@ -43,6 +43,10 @@ get noWrap() { return this.hasAttribute('nowrap'); } + + set noWrap(noWrap) { + this.toggleAttribute('nowrap', noWrap); + } get multiline() { return this.hasAttribute('multiline'); @@ -134,7 +138,7 @@ } sizeToContent = () => { - // Add a temp span, fetch it's width with current paddings and set max-width based on that + // Add a temp span, fetch its width with current paddings and set max-width based on that let span = document.createElement("span"); span.innerText = this.value; this.append(span); diff --git a/chrome/content/zotero/elements/tagsBox.js b/chrome/content/zotero/elements/tagsBox.js index 1545e41404..8d4ed4fc22 100644 --- a/chrome/content/zotero/elements/tagsBox.js +++ b/chrome/content/zotero/elements/tagsBox.js @@ -440,11 +440,17 @@ }; makeMultiline(editable, value) { + editable.noWrap = false; editable.multiline = true; editable.value = value; // Move cursor to end editable.ref.selectionStart = value.length; } + + makeSingleLine(editable) { + editable.noWrap = true; + editable.multiline = false; + } saveTag = async (event) => { var textbox = event.currentTarget; @@ -467,6 +473,7 @@ // If row hasn't changed, we're done if (oldValue == value) { + this.makeSingleLine(textbox); return; } @@ -546,6 +553,11 @@ throw e; } } + + // If we didn't remove the textbox, make it single-line + if (textbox.parentElement) { + this.makeSingleLine(textbox); + } }; newTag() {