From 887db5398e633c8c6ae864b20ec187d28ccd7d95 Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Wed, 14 May 2025 14:04:25 +0530 Subject: [PATCH] feat: added callback to update link field value after creating new (cherry picked from commit 91ba11b5653a08a431e233c8d55297a5cec70277) --- frontend/src/components/Controls/Grid.vue | 11 +++++++++-- frontend/src/components/FieldLayout/Field.vue | 7 ++++++- .../src/components/Modals/CreateDocumentModal.vue | 7 ++++--- frontend/src/components/Modals/GlobalModals.vue | 2 ++ frontend/src/composables/document.js | 6 ++++-- 5 files changed, 25 insertions(+), 8 deletions(-) diff --git a/frontend/src/components/Controls/Grid.vue b/frontend/src/components/Controls/Grid.vue index 6b0f2f08..15fe4900 100644 --- a/frontend/src/components/Controls/Grid.vue +++ b/frontend/src/components/Controls/Grid.vue @@ -126,7 +126,9 @@ " :filters="field.filters" @change="(v) => fieldChange(v, field, row)" - :onCreate="field.create" + :onCreate=" + (value, close) => field.create(v, field, row, close) + " /> { function getFieldObj(field) { if (field.fieldtype === 'Link' && field.options !== 'User') { if (!field.create) { - field.create = (obj, close) => createDocument(field.options, obj, close) + field.create = (value, field, row, close) => { + const callback = (d) => { + if (d) fieldChange(d.name, field, row) + } + createDocument(field.options, value, close, callback) + } } } diff --git a/frontend/src/components/FieldLayout/Field.vue b/frontend/src/components/FieldLayout/Field.vue index 534a151e..a598bb39 100644 --- a/frontend/src/components/FieldLayout/Field.vue +++ b/frontend/src/components/FieldLayout/Field.vue @@ -275,7 +275,12 @@ const field = computed(() => { if (field.fieldtype === 'Link' && field.options !== 'User') { if (!field.create) { - field.create = (obj, close) => createDocument(field.options, obj, close) + field.create = (value, close) => { + const callback = (d) => { + if (d) fieldChange(d.name, field) + } + createDocument(field.options, value, close, callback) + } } } diff --git a/frontend/src/components/Modals/CreateDocumentModal.vue b/frontend/src/components/Modals/CreateDocumentModal.vue index 6c1ccaf8..0c3e5eb1 100644 --- a/frontend/src/components/Modals/CreateDocumentModal.vue +++ b/frontend/src/components/Modals/CreateDocumentModal.vue @@ -62,7 +62,7 @@ const props = defineProps({ }, }) -const emit = defineEmits(['showQuickEntryModal']) +const emit = defineEmits(['showQuickEntryModal', 'callback']) const { isManager } = usersStore() @@ -100,11 +100,11 @@ const tabs = createResource({ auto: true, }) -async function create(close) { +async function create() { loading.value = true error.value = null - await call( + let doc = await call( 'frappe.client.insert', { doc: { @@ -124,6 +124,7 @@ async function create(close) { loading.value = false show.value = false + emit('callback', doc) } watch( diff --git a/frontend/src/components/Modals/GlobalModals.vue b/frontend/src/components/Modals/GlobalModals.vue index c01dfd23..0c62c1b4 100644 --- a/frontend/src/components/Modals/GlobalModals.vue +++ b/frontend/src/components/Modals/GlobalModals.vue @@ -5,6 +5,7 @@ :doctype="createDocumentDoctype" :data="createDocumentData" @showQuickEntryModal="(dt) => openQuickEntryModal(dt)" + @callback="(data) => createDocumentCallback(data)" />