feat: added trigger function on row add & remove
(cherry picked from commit 336083a00f3e71c8cc07477f6bf98131d7400f41)
This commit is contained in:
parent
0a1546348e
commit
4e6577bb4d
@ -327,9 +327,15 @@ const props = defineProps({
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
parentFieldname: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
})
|
||||
|
||||
const triggerOnChange = inject('triggerOnChange')
|
||||
const triggerOnRowAdd = inject('triggerOnRowAdd')
|
||||
const triggerOnRowRemove = inject('triggerOnRowRemove')
|
||||
|
||||
const {
|
||||
getGridViewSettings,
|
||||
@ -419,11 +425,16 @@ const addRow = () => {
|
||||
newRow['__islocal'] = true
|
||||
newRow['idx'] = rows.value.length + 1
|
||||
newRow['doctype'] = props.doctype
|
||||
newRow['parentfield'] = props.parentFieldname
|
||||
newRow['parenttype'] = props.parentDoctype
|
||||
rows.value.push(newRow)
|
||||
triggerOnRowAdd(newRow)
|
||||
}
|
||||
|
||||
const deleteRows = () => {
|
||||
rows.value = rows.value.filter((row) => !selectedRows.has(row.name))
|
||||
triggerOnRowRemove(selectedRows, rows.value)
|
||||
|
||||
showRowList.value.pop()
|
||||
selectedRows.clear()
|
||||
}
|
||||
|
||||
@ -26,6 +26,7 @@
|
||||
v-model="data[field.fieldname]"
|
||||
:doctype="field.options"
|
||||
:parentDoctype="doctype"
|
||||
:parentFieldname="field.fieldname"
|
||||
/>
|
||||
<FormControl
|
||||
v-else-if="field.fieldtype === 'Select'"
|
||||
@ -226,10 +227,16 @@ const { getUser } = usersStore()
|
||||
let triggerOnChange
|
||||
|
||||
if (!isGridRow) {
|
||||
const { triggerOnChange: trigger } = useDocument(doctype, data.value.name)
|
||||
const {
|
||||
triggerOnChange: trigger,
|
||||
triggerOnRowAdd,
|
||||
triggerOnRowRemove,
|
||||
} = useDocument(doctype, data.value.name)
|
||||
triggerOnChange = trigger
|
||||
|
||||
provide('triggerOnChange', triggerOnChange)
|
||||
provide('triggerOnRowAdd', triggerOnRowAdd)
|
||||
provide('triggerOnRowRemove', triggerOnRowRemove)
|
||||
} else {
|
||||
triggerOnChange = inject('triggerOnChange')
|
||||
}
|
||||
|
||||
@ -101,6 +101,7 @@
|
||||
v-model="settings.doc.dropdown_items"
|
||||
doctype="CRM Dropdown Item"
|
||||
parentDoctype="FCRM Settings"
|
||||
parentFieldname="dropdown_items"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -83,6 +83,36 @@ export function useDocument(doctype, docname) {
|
||||
return await c[fieldname]?.()
|
||||
}
|
||||
|
||||
async function triggerOnRowAdd(row) {
|
||||
const dt = row?.doctype ? row.doctype : doctype
|
||||
const c = getController(dt)
|
||||
if (!c) return
|
||||
|
||||
c.currentRowIdx = row.idx
|
||||
c.value = row
|
||||
|
||||
return await c[row.parentfield + '_add']?.()
|
||||
}
|
||||
|
||||
async function triggerOnRowRemove(selectedRows, rows) {
|
||||
if (!selectedRows) return
|
||||
const dt = rows[0]?.doctype ? rows[0].doctype : doctype
|
||||
const c = getController(dt)
|
||||
if (!c) return
|
||||
|
||||
if (selectedRows.size === 1) {
|
||||
const selectedRow = Array.from(selectedRows)[0]
|
||||
c.currentRowIdx = rows.find((r) => r.name === selectedRow).idx
|
||||
} else {
|
||||
delete c.currentRowIdx
|
||||
}
|
||||
|
||||
c.selectedRows = Array.from(selectedRows)
|
||||
c.rows = rows
|
||||
|
||||
return await c[rows[0].parentfield + '_remove']?.()
|
||||
}
|
||||
|
||||
function getOldValue(fieldname, row) {
|
||||
if (!documentsCache[doctype][docname]) return ''
|
||||
|
||||
@ -103,6 +133,8 @@ export function useDocument(doctype, docname) {
|
||||
actions: computed(() => getActions()),
|
||||
getOldValue,
|
||||
triggerOnChange,
|
||||
triggerOnRowAdd,
|
||||
triggerOnRowRemove,
|
||||
triggerOnRefresh,
|
||||
setupFormScript,
|
||||
}
|
||||
|
||||
@ -163,8 +163,6 @@ export function getScript(doctype, view = 'Form') {
|
||||
}
|
||||
|
||||
row.parent = row.parent || data.name
|
||||
row.parentype = row.parenttype || data.doctype
|
||||
row.parentfield = row.parentfield || parentField
|
||||
|
||||
return createDocProxy(row, instance)
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user