fix: patch onSidebarDragStart to strip trailing whitespace nodes and prevent DOM injection errors

This commit is contained in:
Suherdy Yacob 2026-04-07 09:31:31 +07:00
parent bf48212bf3
commit 2ed12725fd

View File

@ -116,5 +116,30 @@ patch(SignTemplateBody.prototype, {
}
}
return [updatedSignItems, Id2UpdatedItem];
},
/**
* FIX: Odoo Core Bug where trailing whitespace on custom items causes target.lastChild to be a Text Node.
* This patch intercepts the insertAdjacentHTML during onSidebarDragStart to strip trailing whitespace nodes immediately,
* without modifying Odoo Enterprise source code.
*/
onSidebarDragStart(e) {
const firstPage = this.root.querySelector('.page[data-page-number="1"]');
if (firstPage && firstPage.insertAdjacentHTML) {
const originalInsert = firstPage.insertAdjacentHTML;
firstPage.insertAdjacentHTML = function(position, text) {
originalInsert.call(this, position, text.trim());
// Remove trailing whitespace nodes injected by QWeb
while (this.lastChild && this.lastChild.nodeType !== 1) { // 1 == ELEMENT_NODE
this.lastChild.remove();
}
};
try {
return super.onSidebarDragStart(...arguments);
} finally {
firstPage.insertAdjacentHTML = originalInsert;
}
}
return super.onSidebarDragStart(...arguments);
}
});