From 8dcb77634bf85ae98c428272ac7de8fb221ea19a Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Wed, 4 Jun 2025 19:14:15 +0530 Subject: [PATCH] fix: moved quick entry modal related logic to modals.js & GlobalModals for all pages --- .../src/components/Modals/CallLogModal.vue | 26 +++++-------------- .../src/components/Modals/ContactModal.vue | 3 ++- .../components/Modals/CreateDocumentModal.vue | 10 +++---- frontend/src/components/Modals/DealModal.vue | 8 +++--- .../src/components/Modals/GlobalModals.vue | 18 +++++-------- frontend/src/components/Modals/LeadModal.vue | 8 +++--- .../components/Modals/OrganizationModal.vue | 3 ++- frontend/src/composables/modals.js | 3 +++ frontend/src/pages/Contacts.vue | 9 +------ frontend/src/pages/Deals.vue | 8 ------ frontend/src/pages/Lead.vue | 14 ++++------ frontend/src/pages/Leads.vue | 4 --- frontend/src/pages/Organization.vue | 7 ----- frontend/src/pages/Organizations.vue | 9 +------ frontend/src/pages/Welcome.vue | 9 +------ 15 files changed, 38 insertions(+), 101 deletions(-) diff --git a/frontend/src/components/Modals/CallLogModal.vue b/frontend/src/components/Modals/CallLogModal.vue index 66c3ef07..ef25389f 100644 --- a/frontend/src/components/Modals/CallLogModal.vue +++ b/frontend/src/components/Modals/CallLogModal.vue @@ -46,29 +46,18 @@ - diff --git a/frontend/src/components/Modals/ContactModal.vue b/frontend/src/components/Modals/ContactModal.vue index 9238b422..43520af0 100644 --- a/frontend/src/components/Modals/ContactModal.vue +++ b/frontend/src/components/Modals/ContactModal.vue @@ -49,6 +49,7 @@ import FieldLayout from '@/components/FieldLayout/FieldLayout.vue' import EditIcon from '@/components/Icons/EditIcon.vue' import { usersStore } from '@/stores/users' import { isMobileView } from '@/composables/settings' +import { showQuickEntryModal, quickEntryProps } from '@/composables/modals' import { useDocument } from '@/data/document' import { capture } from '@/telemetry' import { call, createResource } from 'frappe-ui' @@ -157,10 +158,10 @@ const tabs = createResource({ onMounted(() => { Object.assign(_contact.doc, props.contact.data || props.contact || {}) }) -const showQuickEntryModal = defineModel('showQuickEntryModal') function openQuickEntryModal() { showQuickEntryModal.value = true + quickEntryProps.value = { doctype: 'Contact' } nextTick(() => (show.value = false)) } diff --git a/frontend/src/components/Modals/CreateDocumentModal.vue b/frontend/src/components/Modals/CreateDocumentModal.vue index 0c3e5eb1..05e277b9 100644 --- a/frontend/src/components/Modals/CreateDocumentModal.vue +++ b/frontend/src/components/Modals/CreateDocumentModal.vue @@ -48,6 +48,7 @@ import FieldLayout from '@/components/FieldLayout/FieldLayout.vue' import EditIcon from '@/components/Icons/EditIcon.vue' import { usersStore } from '@/stores/users' import { isMobileView } from '@/composables/settings' +import { showQuickEntryModal, quickEntryProps } from '@/composables/modals' import { FeatherIcon, createResource, ErrorMessage, call } from 'frappe-ui' import { ref, nextTick, watch, computed } from 'vue' @@ -62,7 +63,7 @@ const props = defineProps({ }, }) -const emit = defineEmits(['showQuickEntryModal', 'callback']) +const emit = defineEmits(['callback']) const { isManager } = usersStore() @@ -139,9 +140,8 @@ watch( ) function openQuickEntryModal() { - emit('showQuickEntryModal', props.doctype) - nextTick(() => { - show.value = false - }) + showQuickEntryModal.value = true + quickEntryProps.value = { doctype: props.doctype } + nextTick(() => (show.value = false)) } diff --git a/frontend/src/components/Modals/DealModal.vue b/frontend/src/components/Modals/DealModal.vue index bf08bdd0..e84e1a8e 100644 --- a/frontend/src/components/Modals/DealModal.vue +++ b/frontend/src/components/Modals/DealModal.vue @@ -76,6 +76,7 @@ import FieldLayout from '@/components/FieldLayout/FieldLayout.vue' import { usersStore } from '@/stores/users' import { statusesStore } from '@/stores/statuses' import { isMobileView } from '@/composables/settings' +import { showQuickEntryModal, quickEntryProps } from '@/composables/modals' import { useDocument } from '@/data/document' import { capture } from '@/telemetry' import { Switch, createResource } from 'frappe-ui' @@ -233,13 +234,10 @@ function createDeal() { }) } -const showQuickEntryModal = defineModel('quickEntry') - function openQuickEntryModal() { showQuickEntryModal.value = true - nextTick(() => { - show.value = false - }) + quickEntryProps.value = { doctype: 'CRM Deal' } + nextTick(() => (show.value = false)) } onMounted(() => { diff --git a/frontend/src/components/Modals/GlobalModals.vue b/frontend/src/components/Modals/GlobalModals.vue index 79facc48..e31a825b 100644 --- a/frontend/src/components/Modals/GlobalModals.vue +++ b/frontend/src/components/Modals/GlobalModals.vue @@ -4,13 +4,12 @@ v-model="showCreateDocumentModal" :doctype="createDocumentDoctype" :data="createDocumentData" - @showQuickEntryModal="(dt) => openQuickEntryModal(dt)" @callback="(data) => createDocumentCallback(data)" /> @@ -24,14 +23,9 @@ import { createDocumentData, createDocumentCallback, } from '@/composables/document' -import { showAboutModal } from '@/composables/modals' -import { ref } from 'vue' - -const showQuickEntryModal = ref(false) -const quickEntryDoctype = ref('') - -function openQuickEntryModal(dt) { - showQuickEntryModal.value = true - quickEntryDoctype.value = dt -} +import { + showQuickEntryModal, + quickEntryProps, + showAboutModal, +} from '@/composables/modals' diff --git a/frontend/src/components/Modals/LeadModal.vue b/frontend/src/components/Modals/LeadModal.vue index f0aab83b..bbc1adb5 100644 --- a/frontend/src/components/Modals/LeadModal.vue +++ b/frontend/src/components/Modals/LeadModal.vue @@ -48,6 +48,7 @@ import { usersStore } from '@/stores/users' import { statusesStore } from '@/stores/statuses' import { sessionStore } from '@/stores/session' import { isMobileView } from '@/composables/settings' +import { showQuickEntryModal, quickEntryProps } from '@/composables/modals' import { capture } from '@/telemetry' import { createResource } from 'frappe-ui' import { useOnboarding } from 'frappe-ui/frappe' @@ -178,13 +179,10 @@ function createNewLead() { }) } -const showQuickEntryModal = defineModel('quickEntry') - function openQuickEntryModal() { showQuickEntryModal.value = true - nextTick(() => { - show.value = false - }) + quickEntryProps.value = { doctype: 'CRM Lead' } + nextTick(() => (show.value = false)) } onMounted(() => { diff --git a/frontend/src/components/Modals/OrganizationModal.vue b/frontend/src/components/Modals/OrganizationModal.vue index e652f6a6..cc01ce6c 100644 --- a/frontend/src/components/Modals/OrganizationModal.vue +++ b/frontend/src/components/Modals/OrganizationModal.vue @@ -50,6 +50,7 @@ import FieldLayout from '@/components/FieldLayout/FieldLayout.vue' import EditIcon from '@/components/Icons/EditIcon.vue' import { usersStore } from '@/stores/users' import { isMobileView } from '@/composables/settings' +import { showQuickEntryModal, quickEntryProps } from '@/composables/modals' import { useDocument } from '@/data/document' import { capture } from '@/telemetry' import { call, FeatherIcon, createResource } from 'frappe-ui' @@ -160,10 +161,10 @@ onMounted(() => { organization.value?.doc || organization.value || {}, ) }) -const showQuickEntryModal = defineModel('showQuickEntryModal') function openQuickEntryModal() { showQuickEntryModal.value = true + quickEntryProps.value = { doctype: 'CRM Organization' } nextTick(() => (show.value = false)) } diff --git a/frontend/src/composables/modals.js b/frontend/src/composables/modals.js index 446c0485..145d2f80 100644 --- a/frontend/src/composables/modals.js +++ b/frontend/src/composables/modals.js @@ -1,3 +1,6 @@ import { ref } from 'vue'; +export const showQuickEntryModal = ref(false); +export const quickEntryProps = ref({}); + export const showAboutModal = ref(false); \ No newline at end of file diff --git a/frontend/src/pages/Contacts.vue b/frontend/src/pages/Contacts.vue index 905a00b5..14d58aeb 100644 --- a/frontend/src/pages/Contacts.vue +++ b/frontend/src/pages/Contacts.vue @@ -63,16 +63,11 @@ - @@ -82,7 +77,6 @@ import CustomActions from '@/components/CustomActions.vue' import ContactsIcon from '@/components/Icons/ContactsIcon.vue' import LayoutHeader from '@/components/LayoutHeader.vue' import ContactModal from '@/components/Modals/ContactModal.vue' -import QuickEntryModal from '@/components/Modals/QuickEntryModal.vue' import AddressModal from '@/components/Modals/AddressModal.vue' import ContactsListView from '@/components/ListViews/ContactsListView.vue' import ViewControls from '@/components/ViewControls.vue' @@ -97,7 +91,6 @@ const { getFormattedPercent, getFormattedFloat, getFormattedCurrency } = const { getOrganization } = organizationsStore() const showContactModal = ref(false) -const showQuickEntryModal = ref(false) const showAddressModal = ref(false) const contactsListView = ref(null) diff --git a/frontend/src/pages/Deals.vue b/frontend/src/pages/Deals.vue index 9da55bad..e7ee7955 100644 --- a/frontend/src/pages/Deals.vue +++ b/frontend/src/pages/Deals.vue @@ -241,7 +241,6 @@ - diff --git a/frontend/src/pages/Leads.vue b/frontend/src/pages/Leads.vue index d1141c92..d099bfea 100644 --- a/frontend/src/pages/Leads.vue +++ b/frontend/src/pages/Leads.vue @@ -267,7 +267,6 @@ -