From 2e3a3016dbfff54d813d9a71c1949d11335b1aff Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Sat, 3 May 2025 15:35:10 +0530 Subject: [PATCH] fix: handle onchange of grid row field in modal (cherry picked from commit 2d484c1ad2a7c70af1bb593bad1b9ee0a7bef54f) --- frontend/src/components/Controls/Grid.vue | 7 +----- .../src/components/Controls/GridRowModal.vue | 8 +++++- frontend/src/components/FieldLayout/Field.vue | 19 +++++++++++--- .../components/FieldLayout/FieldLayout.vue | 5 ++++ frontend/src/data/document.js | 25 +++++++++---------- 5 files changed, 40 insertions(+), 24 deletions(-) diff --git a/frontend/src/components/Controls/Grid.vue b/frontend/src/components/Controls/Grid.vue index 7f879bd2..c5b79e9c 100644 --- a/frontend/src/components/Controls/Grid.vue +++ b/frontend/src/components/Controls/Grid.vue @@ -327,7 +327,6 @@ const props = defineProps({ }) const triggerOnChange = inject('triggerOnChange') -const fieldname = inject('fieldname') const { getGridViewSettings, @@ -426,11 +425,7 @@ const deleteRows = () => { function fieldChange(value, field, row) { row[field.fieldname] = value - triggerOnChange(field.fieldname, { - fieldname: fieldname, - dt: props.doctype, - dn: row.name, - }) + triggerOnChange(field.fieldname, row) } diff --git a/frontend/src/components/Controls/GridRowModal.vue b/frontend/src/components/Controls/GridRowModal.vue index 74e17db6..ef2bc854 100644 --- a/frontend/src/components/Controls/GridRowModal.vue +++ b/frontend/src/components/Controls/GridRowModal.vue @@ -23,7 +23,13 @@
- +
diff --git a/frontend/src/components/FieldLayout/Field.vue b/frontend/src/components/FieldLayout/Field.vue index 044d3494..5e52c3ba 100644 --- a/frontend/src/components/FieldLayout/Field.vue +++ b/frontend/src/components/FieldLayout/Field.vue @@ -213,16 +213,23 @@ const props = defineProps({ const data = inject('data') const doctype = inject('doctype') const preview = inject('preview') +const isGridRow = inject('isGridRow') const { getFormattedPercent, getFormattedFloat, getFormattedCurrency } = getMeta(doctype) const { getUser } = usersStore() -const { triggerOnChange } = useDocument(doctype, data.value.name) +let triggerOnChange -provide('triggerOnChange', triggerOnChange) -provide('fieldname', props.field.fieldname) +if (!isGridRow) { + const { triggerOnChange: trigger } = useDocument(doctype, data.value.name) + triggerOnChange = trigger + + provide('triggerOnChange', triggerOnChange) +} else { + triggerOnChange = inject('triggerOnChange') +} const field = computed(() => { let field = props.field @@ -283,7 +290,11 @@ const getPlaceholder = (field) => { function fieldChange(value, df) { data.value[df.fieldname] = value - triggerOnChange(df.fieldname) + if (isGridRow) { + triggerOnChange(df.fieldname, data.value) + } else { + triggerOnChange(df.fieldname) + } }