fix: update and reset value in triggerOnChange method

(cherry picked from commit 7d79cbf5bdd664e76fb90b994d0d4f5c257c0ed0)
This commit is contained in:
Shariq Ansari 2025-06-11 14:18:25 +05:30 committed by Mergify
parent 1c7ea0b44b
commit b0474e8764
4 changed files with 17 additions and 16 deletions

View File

@ -509,8 +509,7 @@ const deleteRows = () => {
}
function fieldChange(value, field, row) {
row[field.fieldname] = value
triggerOnChange(field.fieldname, row)
triggerOnChange(field.fieldname, value, row)
}
function getDefaultValue(defaultValue, fieldtype) {

View File

@ -332,12 +332,10 @@ const getPlaceholder = (field) => {
}
function fieldChange(value, df) {
data.value[df.fieldname] = value
if (isGridRow) {
triggerOnChange(df.fieldname, data.value)
triggerOnChange(df.fieldname, value, data.value)
} else {
triggerOnChange(df.fieldname)
triggerOnChange(df.fieldname, value)
}
}

View File

@ -489,9 +489,7 @@ function parsedField(field) {
async function fieldChange(value, df) {
if (props.preview) return
document.doc[df.fieldname] = value
await triggerOnChange(df.fieldname)
await triggerOnChange(df.fieldname, value)
document.save.submit(null, {
onSuccess: () => {

View File

@ -117,20 +117,26 @@ export function useDocument(doctype, docname) {
await trigger(handler)
}
async function triggerOnChange(fieldname, row) {
async function triggerOnChange(fieldname, value, row) {
const oldValue = documentsCache[doctype][docname || ''].doc[fieldname]
documentsCache[doctype][docname || ''].doc[fieldname] = value
const handler = async function () {
this.value = value
this.oldValue = oldValue
if (row) {
this.currentRowIdx = row.idx
this.value = row[fieldname]
this.oldValue = getOldValue(fieldname, row)
} else {
this.value = documentsCache[doctype][docname || ''].doc[fieldname]
this.oldValue = getOldValue(fieldname)
}
await this[fieldname]?.()
}
await trigger(handler, row)
try {
await trigger(handler, row)
} catch (error) {
documentsCache[doctype][docname || ''].doc[fieldname] = oldValue
console.error(handler)
throw error
}
}
async function triggerOnRowAdd(row) {