diff --git a/crm/fcrm/doctype/crm_deal/crm_deal.json b/crm/fcrm/doctype/crm_deal/crm_deal.json index 10e56be4..bbef186d 100644 --- a/crm/fcrm/doctype/crm_deal/crm_deal.json +++ b/crm/fcrm/doctype/crm_deal/crm_deal.json @@ -94,7 +94,7 @@ { "fieldname": "close_date", "fieldtype": "Date", - "label": "Expected Closure Date" + "label": "Close Date" }, { "fieldname": "next_step", @@ -396,7 +396,7 @@ "grid_page_length": 50, "index_web_pages_for_search": 1, "links": [], - "modified": "2025-06-11 12:58:22.439045", + "modified": "2025-06-16 11:42:49.413483", "modified_by": "Administrator", "module": "FCRM", "name": "CRM Deal", diff --git a/frontend/components.d.ts b/frontend/components.d.ts index c83cddab..d7d6057c 100644 --- a/frontend/components.d.ts +++ b/frontend/components.d.ts @@ -151,10 +151,7 @@ declare module 'vue' { ListIcon: typeof import('./src/components/Icons/ListIcon.vue')['default'] ListRows: typeof import('./src/components/ListViews/ListRows.vue')['default'] LoadingIndicator: typeof import('./src/components/Icons/LoadingIndicator.vue')['default'] - LucideCalendar: typeof import('~icons/lucide/calendar')['default'] - LucideInfo: typeof import('~icons/lucide/info')['default'] LucidePlus: typeof import('~icons/lucide/plus')['default'] - LucideSearch: typeof import('~icons/lucide/search')['default'] MarkAsDoneIcon: typeof import('./src/components/Icons/MarkAsDoneIcon.vue')['default'] MaximizeIcon: typeof import('./src/components/Icons/MaximizeIcon.vue')['default'] MenuIcon: typeof import('./src/components/Icons/MenuIcon.vue')['default'] diff --git a/frontend/package.json b/frontend/package.json index 40e1f47a..51a6ff41 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -13,7 +13,7 @@ "@tiptap/extension-paragraph": "^2.12.0", "@twilio/voice-sdk": "^2.10.2", "@vueuse/integrations": "^10.3.0", - "frappe-ui": "^0.1.145", + "frappe-ui": "^0.1.156", "gemoji": "^8.1.0", "lodash": "^4.17.21", "mime": "^4.0.1", diff --git a/frontend/src/components/Activities/Activities.vue b/frontend/src/components/Activities/Activities.vue index d4b670e1..1c420e04 100644 --- a/frontend/src/components/Activities/Activities.vue +++ b/frontend/src/components/Activities/Activities.vue @@ -806,5 +806,5 @@ const callActions = computed(() => { ) }) -defineExpose({ emailBox, all_activities }) +defineExpose({ emailBox, all_activities, changeTabTo }) diff --git a/frontend/src/components/Activities/DataFields.vue b/frontend/src/components/Activities/DataFields.vue index b3aecff4..5b97e80a 100644 --- a/frontend/src/components/Activities/DataFields.vue +++ b/frontend/src/components/Activities/DataFields.vue @@ -16,7 +16,9 @@ v-if="isManager() && !isMobileView" @click="showDataFieldsModal = true" > - + @@ -215,7 +219,9 @@ const fields = computed(() => { }) function addColumn(c) { - let align = ['Float', 'Int', 'Percent', 'Currency'].includes(c.type) ? 'right' : 'left' + let align = ['Float', 'Int', 'Percent', 'Currency'].includes(c.type) + ? 'right' + : 'left' let _column = { label: c.label, type: c.fieldtype, diff --git a/frontend/src/components/Controls/Grid.vue b/frontend/src/components/Controls/Grid.vue index 19240a86..dcfa2846 100644 --- a/frontend/src/components/Controls/Grid.vue +++ b/frontend/src/components/Controls/Grid.vue @@ -58,7 +58,9 @@ variant="outline" @click="showGridFieldsEditorModal = true" > - + @@ -281,7 +283,9 @@ variant="outline" @click="showRowList[index] = true" > - + - + diff --git a/frontend/src/components/DropdownItem.vue b/frontend/src/components/DropdownItem.vue index 8f2ed2da..d9592c13 100644 --- a/frontend/src/components/DropdownItem.vue +++ b/frontend/src/components/DropdownItem.vue @@ -31,7 +31,9 @@ class="opacity-0 hover:bg-surface-gray-4 group-hover:opacity-100" @click="option.onClick" > - + @@ -43,7 +45,9 @@ class="opacity-0 hover:bg-surface-gray-4 group-hover:opacity-100" @click="toggleEditMode" > - + diff --git a/frontend/src/components/Modals/AddressModal.vue b/frontend/src/components/Modals/AddressModal.vue index 6428c9a4..e7c4543f 100644 --- a/frontend/src/components/Modals/AddressModal.vue +++ b/frontend/src/components/Modals/AddressModal.vue @@ -15,10 +15,14 @@ class="w-7" @click="openQuickEntryModal" > - + diff --git a/frontend/src/components/Modals/CallLogDetailModal.vue b/frontend/src/components/Modals/CallLogDetailModal.vue index 04a30d5c..739f78ef 100644 --- a/frontend/src/components/Modals/CallLogDetailModal.vue +++ b/frontend/src/components/Modals/CallLogDetailModal.vue @@ -39,10 +39,14 @@ class="w-7" @click="openCallLogModal" > - + diff --git a/frontend/src/components/Modals/CallLogModal.vue b/frontend/src/components/Modals/CallLogModal.vue index d61dbc45..8ab881cd 100644 --- a/frontend/src/components/Modals/CallLogModal.vue +++ b/frontend/src/components/Modals/CallLogModal.vue @@ -16,10 +16,14 @@ class="w-7" @click="openQuickEntryModal" > - + diff --git a/frontend/src/components/Modals/ContactModal.vue b/frontend/src/components/Modals/ContactModal.vue index b275d574..25a0c022 100644 --- a/frontend/src/components/Modals/ContactModal.vue +++ b/frontend/src/components/Modals/ContactModal.vue @@ -15,10 +15,14 @@ class="w-7" @click="openQuickEntryModal" > - + diff --git a/frontend/src/components/Modals/CreateDocumentModal.vue b/frontend/src/components/Modals/CreateDocumentModal.vue index 05e277b9..be5bbf01 100644 --- a/frontend/src/components/Modals/CreateDocumentModal.vue +++ b/frontend/src/components/Modals/CreateDocumentModal.vue @@ -15,10 +15,14 @@ class="w-7" @click="openQuickEntryModal" > - + diff --git a/frontend/src/components/Modals/DealModal.vue b/frontend/src/components/Modals/DealModal.vue index e4ce7419..8bf9498b 100644 --- a/frontend/src/components/Modals/DealModal.vue +++ b/frontend/src/components/Modals/DealModal.vue @@ -15,10 +15,14 @@ class="w-7" @click="openQuickEntryModal" > - + diff --git a/frontend/src/components/Modals/LeadModal.vue b/frontend/src/components/Modals/LeadModal.vue index 1976ad3c..d82dbe52 100644 --- a/frontend/src/components/Modals/LeadModal.vue +++ b/frontend/src/components/Modals/LeadModal.vue @@ -15,10 +15,14 @@ class="w-7" @click="openQuickEntryModal" > - + diff --git a/frontend/src/components/Modals/OrganizationModal.vue b/frontend/src/components/Modals/OrganizationModal.vue index 1c8cf711..a0d12887 100644 --- a/frontend/src/components/Modals/OrganizationModal.vue +++ b/frontend/src/components/Modals/OrganizationModal.vue @@ -15,10 +15,14 @@ class="w-7" @click="openQuickEntryModal" > - + diff --git a/frontend/src/components/SidePanelLayout.vue b/frontend/src/components/SidePanelLayout.vue index e99d9725..aa42f49e 100644 --- a/frontend/src/components/SidePanelLayout.vue +++ b/frontend/src/components/SidePanelLayout.vue @@ -25,7 +25,9 @@ class="w-7 mr-2" @click="showSidePanelModal = true" > - + @@ -248,6 +250,7 @@ " :placeholder="field.placeholder" placement="left-start" + :hideIcon="true" @change="(v) => fieldChange(v, field)" /> @@ -261,6 +264,7 @@ :formatter="(date) => getFormat(date, '', true)" :placeholder="field.placeholder" placement="left-start" + :hideIcon="true" @change="(v) => fieldChange(v, field)" /> diff --git a/frontend/src/components/SidePanelLayoutEditor.vue b/frontend/src/components/SidePanelLayoutEditor.vue index 3b7ab0a3..09493c61 100644 --- a/frontend/src/components/SidePanelLayoutEditor.vue +++ b/frontend/src/components/SidePanelLayoutEditor.vue @@ -41,7 +41,9 @@ variant="ghost" @click="section.editingLabel = true" > - +
-
-
@@ -239,14 +247,18 @@ }) " > - + @@ -368,7 +380,7 @@ import { toast, } from 'frappe-ui' import { useOnboarding } from 'frappe-ui/frappe' -import { ref, computed, h, onMounted, onBeforeUnmount } from 'vue' +import { ref, computed, h, onMounted, onBeforeUnmount, nextTick } from 'vue' import { useRoute, useRouter } from 'vue-router' import { useActiveTabManager } from '@/composables/useActiveTabManager' @@ -730,7 +742,11 @@ async function deleteDeal(name) { const activities = ref(null) function openEmailBox() { - activities.value.emailBox.show = true + let currentTab = tabs.value[tabIndex.value] + if (!['Emails', 'Comments', 'Activities'].includes(currentTab.name)) { + activities.value.changeTabTo('emails') + } + nextTick(() => (activities.value.emailBox.show = true)) } const { assignees, document, triggerOnChange } = useDocument( diff --git a/frontend/src/pages/Lead.vue b/frontend/src/pages/Lead.vue index 17612e19..ac0ded63 100644 --- a/frontend/src/pages/Lead.vue +++ b/frontend/src/pages/Lead.vue @@ -142,42 +142,50 @@ : toast.error(__('No phone number set')) " > - +
-
-
@@ -238,14 +246,18 @@ class="w-7" @click="openQuickEntryModal" > - + @@ -386,7 +398,7 @@ import { toast, } from 'frappe-ui' import { useOnboarding } from 'frappe-ui/frappe' -import { ref, reactive, computed, onMounted, watch } from 'vue' +import { ref, reactive, computed, onMounted, watch, nextTick } from 'vue' import { useRouter, useRoute } from 'vue-router' import { useActiveTabManager } from '@/composables/useActiveTabManager' @@ -670,7 +682,11 @@ async function convertToDeal() { const activities = ref(null) function openEmailBox() { - activities.value.emailBox.show = true + let currentTab = tabs.value[tabIndex.value] + if (!['Emails', 'Comments', 'Activities'].includes(currentTab.name)) { + activities.value.changeTabTo('emails') + } + nextTick(() => (activities.value.emailBox.show = true)) } const deal = reactive({}) diff --git a/yarn.lock b/yarn.lock index 8862db5d..7a442893 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1320,6 +1320,11 @@ resolved "https://registry.yarnpkg.com/@tiptap/extension-heading/-/extension-heading-2.10.3.tgz#bf8efb3a580c75b86dce505a63f1ca7450a9aaea" integrity sha512-AlxXXPCWIvw8hQUDFRskasj32iMNB8Sb19VgyFWqwvntGs2/UffNu8VdsVqxD2HpZ0g5rLYCYtSW4wigs9R3og== +"@tiptap/extension-heading@^2.12.0": + version "2.14.0" + resolved "https://registry.yarnpkg.com/@tiptap/extension-heading/-/extension-heading-2.14.0.tgz#c5a9dc761712e9c87073ba8446548cbe4d403360" + integrity sha512-vM//6G3Ox3mxPv9eilhrDqylELCc8kEP1aQ4xUuOw7vCidjNtGggOa1ERnnpV2dCa2A9E8y4FHtN4Xh29stXQg== + "@tiptap/extension-highlight@^2.0.3": version "2.10.3" resolved "https://registry.yarnpkg.com/@tiptap/extension-highlight/-/extension-highlight-2.10.3.tgz#d94667d435d9dc556b06e7b764449dc2a6c18743" @@ -2565,10 +2570,10 @@ fraction.js@^4.3.7: resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== -frappe-ui@^0.1.145: - version "0.1.145" - resolved "https://registry.yarnpkg.com/frappe-ui/-/frappe-ui-0.1.145.tgz#19ec429badf85f3f2c45a85ec13c3c462ec11ee9" - integrity sha512-DnnSJREu/EpUAJGNFaXEUF3re0hQMmLBOX/MSW9AsQtnCJwXkO5VbH/dyVHAZjqdb9Do3CNQF33/HB4NibNI8Q== +frappe-ui@^0.1.156: + version "0.1.156" + resolved "https://registry.yarnpkg.com/frappe-ui/-/frappe-ui-0.1.156.tgz#1a476aec80b0e0f72470f9dc3990bb023b2ebb09" + integrity sha512-JsIODLL7YYFhKSYfWJJ9M1+VMmj8M0xZ1D5M7Cx0c+OWg5Qm0xda1592Tr+om1a7u0zWcfjuQnW9mHN1lW5HIA== dependencies: "@floating-ui/vue" "^1.1.6" "@headlessui/vue" "^1.7.14" @@ -2579,6 +2584,7 @@ frappe-ui@^0.1.145: "@tiptap/extension-code-block" "^2.11.9" "@tiptap/extension-code-block-lowlight" "^2.11.5" "@tiptap/extension-color" "^2.0.3" + "@tiptap/extension-heading" "^2.12.0" "@tiptap/extension-highlight" "^2.0.3" "@tiptap/extension-image" "^2.0.3" "@tiptap/extension-link" "^2.0.3" @@ -2599,6 +2605,7 @@ frappe-ui@^0.1.145: dayjs "^1.11.13" echarts "^5.6.0" feather-icons "^4.28.0" + highlight.js "^11.11.1" idb-keyval "^6.2.0" lowlight "^3.3.0" lucide-static "^0.479.0" @@ -2806,7 +2813,7 @@ hasown@^2.0.1, hasown@^2.0.2: dependencies: function-bind "^1.1.2" -highlight.js@~11.11.0: +highlight.js@^11.11.1, highlight.js@~11.11.0: version "11.11.1" resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-11.11.1.tgz#fca06fa0e5aeecf6c4d437239135fabc15213585" integrity sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==