diff --git a/BTCPayServer/Views/Shared/TemplateEditor.cshtml b/BTCPayServer/Views/Shared/TemplateEditor.cshtml
index d5a891cc8..fca2340a0 100644
--- a/BTCPayServer/Views/Shared/TemplateEditor.cshtml
+++ b/BTCPayServer/Views/Shared/TemplateEditor.cshtml
@@ -153,17 +153,11 @@
diff --git a/BTCPayServer/wwwroot/js/template-editor.js b/BTCPayServer/wwwroot/js/template-editor.js
index 9eb1cbf4e..d4aa0131b 100644
--- a/BTCPayServer/wwwroot/js/template-editor.js
+++ b/BTCPayServer/wwwroot/js/template-editor.js
@@ -235,7 +235,8 @@ document.addEventListener('DOMContentLoaded', () => {
return {
items,
selectedItem: null,
- editorOffcanvas: null
+ selectedItemInitial: null,
+ editorOffcanvas: null,
}
},
computed: {
@@ -247,6 +248,19 @@ document.addEventListener('DOMContentLoaded', () => {
(item.categories || []).forEach(category => { res.add(category); });
return res;
}, new Set()));
+ },
+ itemChanged() {
+ return this.selectedItem && this.selectedItemInitial && (
+ this.selectedItem.id !== this.selectedItemInitial.id ||
+ this.selectedItem.title !== this.selectedItemInitial.title ||
+ this.selectedItem.price !== this.selectedItemInitial.price ||
+ this.selectedItem.image !== this.selectedItemInitial.image ||
+ this.selectedItem.disabled !== this.selectedItemInitial.disabled ||
+ this.selectedItem.inventory !== this.selectedItemInitial.inventory ||
+ this.selectedItem.priceType !== this.selectedItemInitial.priceType ||
+ this.selectedItem.categories !== this.selectedItemInitial.categories ||
+ this.selectedItem.description !== this.selectedItemInitial.description
+ )
}
},
methods: {
@@ -254,7 +268,7 @@ document.addEventListener('DOMContentLoaded', () => {
const items = parseConfig(event.target.value)
if (!items) return
this.items = items
- this.selectedItem = null
+ this.selectedItem = this.selectedItemInitial = null
},
addItem(event) {
const length = this.items.push({
@@ -268,16 +282,16 @@ document.addEventListener('DOMContentLoaded', () => {
inventory: null,
disabled: false
})
- this.selectedItem = this.items[length - 1]
- this.showOffcanvas()
+ this.selectItem(null, length - 1)
},
selectItem(event, index) {
this.selectedItem = this.items[index]
+ this.selectedItemInitial = { ...this.selectedItem } // pristine copy
this.showOffcanvas()
},
removeItem(event, index) {
this.items.splice(index, 1)
- this.selectedItem = null
+ this.selectedItem = this.selectedItemInitial = null
},
sortItems(event) {
const { newIndex, oldIndex } = event