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"
>
-
+
+
+
{{ __(element.label) }}
-
@@ -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"
>
-
+
+
+
-
+
+
+
@@ -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==