diff --git a/crm/api/__init__.py b/crm/api/__init__.py index 58739de0..f0dcf649 100644 --- a/crm/api/__init__.py +++ b/crm/api/__init__.py @@ -44,7 +44,7 @@ def get_user_signature(): if html_signature: _signature = html_signature.renderContents() content = "" - if (cstr(_signature) or signature): + if cstr(_signature) or signature: content = f'

{signature}

' return content @@ -64,14 +64,16 @@ def check_app_permission(): return True roles = frappe.get_roles() - if any(role in ["System Manager", "Sales User", "Sales Manager", "Sales Master Manager"] for role in roles): + if any( + role in ["System Manager", "Sales User", "Sales Manager", "Sales Master Manager"] for role in roles + ): return True return False @frappe.whitelist(allow_guest=True) -def accept_invitation(key: str = None): +def accept_invitation(key: str | None = None): if not key: frappe.throw("Invalid or expired key") @@ -91,6 +93,7 @@ def accept_invitation(key: str = None): @frappe.whitelist() def invite_by_email(emails: str, role: str): + frappe.only_for("Sales Manager") if not emails: return email_string = validate_email_address(emails, throw=False) @@ -120,8 +123,8 @@ def get_file_uploader_defaults(doctype: str): make_attachments_public = meta.get("make_attachments_public") return { - 'allowed_file_types': frappe.get_system_settings("allowed_file_extensions"), - 'max_file_size': get_max_file_size(), - 'max_number_of_files': max_number_of_files, - 'make_attachments_public': bool(make_attachments_public), - } \ No newline at end of file + "allowed_file_types": frappe.get_system_settings("allowed_file_extensions"), + "max_file_size": get_max_file_size(), + "max_number_of_files": max_number_of_files, + "make_attachments_public": bool(make_attachments_public), + } diff --git a/crm/api/onboarding.py b/crm/api/onboarding.py new file mode 100644 index 00000000..00d27b07 --- /dev/null +++ b/crm/api/onboarding.py @@ -0,0 +1,24 @@ +import frappe + + +@frappe.whitelist() +def get_first_lead(): + lead = frappe.get_all( + "CRM Lead", + filters={"converted": 0}, + fields=["name"], + order_by="creation", + limit=1, + ) + return lead[0].name if lead else None + + +@frappe.whitelist() +def get_first_deal(): + deal = frappe.get_all( + "CRM Deal", + fields=["name"], + order_by="creation", + limit=1, + ) + return deal[0].name if deal else None diff --git a/crm/locale/main.pot b/crm/locale/main.pot index 5c986c7d..93344b1f 100644 --- a/crm/locale/main.pot +++ b/crm/locale/main.pot @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Frappe CRM VERSION\n" "Report-Msgid-Bugs-To: shariq@frappe.io\n" -"POT-Creation-Date: 2025-03-09 09:34+0000\n" -"PO-Revision-Date: 2025-03-09 09:34+0000\n" +"POT-Creation-Date: 2025-03-16 09:34+0000\n" +"PO-Revision-Date: 2025-03-16 09:34+0000\n" "Last-Translator: shariq@frappe.io\n" "Language-Team: shariq@frappe.io\n" "MIME-Version: 1.0\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.13.1\n" -#: frontend/src/components/ViewControls.vue:1202 +#: frontend/src/components/ViewControls.vue:1206 msgid " (New)" msgstr "" @@ -159,13 +159,13 @@ msgid "Account SID" msgstr "" #: frontend/src/components/CustomActions.vue:73 -#: frontend/src/components/ViewControls.vue:666 -#: frontend/src/components/ViewControls.vue:1094 +#: frontend/src/components/ViewControls.vue:669 +#: frontend/src/components/ViewControls.vue:1098 msgid "Actions" msgstr "" -#: frontend/src/pages/Deal.vue:506 frontend/src/pages/Lead.vue:496 -#: frontend/src/pages/MobileDeal.vue:434 frontend/src/pages/MobileLead.vue:338 +#: frontend/src/pages/Deal.vue:513 frontend/src/pages/Lead.vue:501 +#: frontend/src/pages/MobileDeal.vue:441 frontend/src/pages/MobileLead.vue:344 msgid "Activity" msgstr "" @@ -258,9 +258,9 @@ msgstr "" msgid "All" msgstr "" -#: frontend/src/pages/Contact.vue:605 frontend/src/pages/MobileContact.vue:601 -#: frontend/src/pages/MobileOrganization.vue:487 -#: frontend/src/pages/Organization.vue:505 +#: frontend/src/pages/Contact.vue:611 frontend/src/pages/MobileContact.vue:607 +#: frontend/src/pages/MobileOrganization.vue:493 +#: frontend/src/pages/Organization.vue:511 msgid "Amount" msgstr "" @@ -323,12 +323,12 @@ msgstr "" msgid "Are you sure you want to delete this attachment?" msgstr "" -#: frontend/src/pages/Contact.vue:293 frontend/src/pages/MobileContact.vue:286 +#: frontend/src/pages/Contact.vue:299 frontend/src/pages/MobileContact.vue:292 msgid "Are you sure you want to delete this contact?" msgstr "" -#: frontend/src/pages/MobileOrganization.vue:280 -#: frontend/src/pages/Organization.vue:301 +#: frontend/src/pages/MobileOrganization.vue:286 +#: frontend/src/pages/Organization.vue:307 msgid "Are you sure you want to delete this organization?" msgstr "" @@ -385,8 +385,8 @@ msgstr "" msgid "Attach a file" msgstr "" -#: frontend/src/pages/Deal.vue:542 frontend/src/pages/Lead.vue:532 -#: frontend/src/pages/MobileDeal.vue:470 frontend/src/pages/MobileLead.vue:374 +#: frontend/src/pages/Deal.vue:549 frontend/src/pages/Lead.vue:537 +#: frontend/src/pages/MobileDeal.vue:477 frontend/src/pages/MobileLead.vue:380 msgid "Attachments" msgstr "" @@ -593,7 +593,7 @@ msgstr "" msgid "CRM View Settings" msgstr "" -#: frontend/src/components/ViewControls.vue:270 +#: frontend/src/components/ViewControls.vue:272 msgid "CSV" msgstr "" @@ -634,8 +634,8 @@ msgstr "" msgid "Calling..." msgstr "" -#: frontend/src/pages/Deal.vue:526 frontend/src/pages/Lead.vue:516 -#: frontend/src/pages/MobileDeal.vue:454 frontend/src/pages/MobileLead.vue:358 +#: frontend/src/pages/Deal.vue:533 frontend/src/pages/Lead.vue:521 +#: frontend/src/pages/MobileDeal.vue:461 frontend/src/pages/MobileLead.vue:364 msgid "Calls" msgstr "" @@ -760,8 +760,8 @@ msgstr "" msgid "Comment" msgstr "" -#: frontend/src/pages/Deal.vue:516 frontend/src/pages/Lead.vue:506 -#: frontend/src/pages/MobileDeal.vue:444 frontend/src/pages/MobileLead.vue:348 +#: frontend/src/pages/Deal.vue:523 frontend/src/pages/Lead.vue:511 +#: frontend/src/pages/MobileDeal.vue:451 frontend/src/pages/MobileLead.vue:354 msgid "Comments" msgstr "" @@ -809,7 +809,7 @@ msgstr "" msgid "Contact" msgstr "" -#: crm/fcrm/doctype/crm_lead/crm_lead.py:194 +#: crm/fcrm/doctype/crm_lead/crm_lead.py:212 msgid "Contact Already Exists" msgstr "" @@ -817,15 +817,15 @@ msgstr "" msgid "Contact Us" msgstr "" -#: frontend/src/pages/Deal.vue:625 frontend/src/pages/MobileDeal.vue:553 +#: frontend/src/pages/Deal.vue:633 frontend/src/pages/MobileDeal.vue:560 msgid "Contact added" msgstr "" -#: frontend/src/pages/Deal.vue:611 frontend/src/pages/MobileDeal.vue:539 +#: frontend/src/pages/Deal.vue:619 frontend/src/pages/MobileDeal.vue:546 msgid "Contact already added" msgstr "" -#: crm/fcrm/doctype/crm_lead/crm_lead.py:193 +#: crm/fcrm/doctype/crm_lead/crm_lead.py:211 msgid "Contact already exists with {0}" msgstr "" @@ -833,7 +833,7 @@ msgstr "" msgid "Contact not found" msgstr "" -#: frontend/src/pages/Deal.vue:640 frontend/src/pages/MobileDeal.vue:568 +#: frontend/src/pages/Deal.vue:648 frontend/src/pages/MobileDeal.vue:575 msgid "Contact removed" msgstr "" @@ -842,8 +842,8 @@ msgstr "" #. Label of a shortcut in the Frappe CRM Workspace #: crm/fcrm/doctype/crm_deal/crm_deal.json #: crm/fcrm/workspace/frappe_crm/frappe_crm.json -#: frontend/src/pages/Contact.vue:242 frontend/src/pages/MobileContact.vue:235 -#: frontend/src/pages/MobileOrganization.vue:367 +#: frontend/src/pages/Contact.vue:243 frontend/src/pages/MobileContact.vue:236 +#: frontend/src/pages/MobileOrganization.vue:373 msgid "Contacts" msgstr "" @@ -932,7 +932,7 @@ msgid "Create Task" msgstr "" #: frontend/src/components/Modals/ViewModal.vue:9 -#: frontend/src/components/ViewControls.vue:670 +#: frontend/src/components/ViewControls.vue:673 msgid "Create View" msgstr "" @@ -953,17 +953,17 @@ msgstr "" msgid "Currency" msgstr "" -#: frontend/src/pages/Deal.vue:399 +#: frontend/src/pages/Deal.vue:401 msgid "Customer created successfully" msgstr "" -#: frontend/src/components/ViewControls.vue:209 +#: frontend/src/components/ViewControls.vue:211 msgid "Customize quick filters" msgstr "" #: frontend/src/components/Activities/DataFields.vue:6 -#: frontend/src/pages/Deal.vue:521 frontend/src/pages/Lead.vue:511 -#: frontend/src/pages/MobileDeal.vue:449 frontend/src/pages/MobileLead.vue:353 +#: frontend/src/pages/Deal.vue:528 frontend/src/pages/Lead.vue:516 +#: frontend/src/pages/MobileDeal.vue:456 frontend/src/pages/MobileLead.vue:359 msgid "Data" msgstr "" @@ -997,21 +997,21 @@ msgstr "" msgid "Deal Statuses" msgstr "" -#: frontend/src/pages/Contact.vue:626 frontend/src/pages/MobileContact.vue:622 -#: frontend/src/pages/MobileOrganization.vue:508 -#: frontend/src/pages/Organization.vue:526 +#: frontend/src/pages/Contact.vue:632 frontend/src/pages/MobileContact.vue:628 +#: frontend/src/pages/MobileOrganization.vue:514 +#: frontend/src/pages/Organization.vue:532 msgid "Deal owner" msgstr "" -#: frontend/src/pages/Deal.vue:439 frontend/src/pages/MobileDeal.vue:361 +#: frontend/src/pages/Deal.vue:441 frontend/src/pages/MobileDeal.vue:363 msgid "Deal updated" msgstr "" #. Label of a shortcut in the Frappe CRM Workspace #: crm/fcrm/workspace/frappe_crm/frappe_crm.json -#: frontend/src/pages/Deal.vue:471 frontend/src/pages/MobileContact.vue:314 -#: frontend/src/pages/MobileDeal.vue:393 -#: frontend/src/pages/MobileOrganization.vue:361 +#: frontend/src/pages/Deal.vue:473 frontend/src/pages/MobileContact.vue:320 +#: frontend/src/pages/MobileDeal.vue:395 +#: frontend/src/pages/MobileOrganization.vue:367 msgid "Deals" msgstr "" @@ -1070,16 +1070,16 @@ msgstr "" #: frontend/src/components/ListBulkActions.vue:96 #: frontend/src/components/ListBulkActions.vue:104 #: frontend/src/components/ListBulkActions.vue:186 -#: frontend/src/components/ViewControls.vue:1146 -#: frontend/src/components/ViewControls.vue:1157 -#: frontend/src/pages/Contact.vue:105 frontend/src/pages/Contact.vue:296 +#: frontend/src/components/ViewControls.vue:1150 +#: frontend/src/components/ViewControls.vue:1161 +#: frontend/src/pages/Contact.vue:105 frontend/src/pages/Contact.vue:302 #: frontend/src/pages/MobileContact.vue:81 -#: frontend/src/pages/MobileContact.vue:289 -#: frontend/src/pages/MobileDeal.vue:519 +#: frontend/src/pages/MobileContact.vue:295 +#: frontend/src/pages/MobileDeal.vue:526 #: frontend/src/pages/MobileOrganization.vue:72 -#: frontend/src/pages/MobileOrganization.vue:283 +#: frontend/src/pages/MobileOrganization.vue:289 #: frontend/src/pages/Notes.vue:40 frontend/src/pages/Organization.vue:83 -#: frontend/src/pages/Organization.vue:304 frontend/src/pages/Tasks.vue:361 +#: frontend/src/pages/Organization.vue:310 frontend/src/pages/Tasks.vue:361 msgid "Delete" msgstr "" @@ -1091,8 +1091,8 @@ msgstr "" msgid "Delete Task" msgstr "" -#: frontend/src/components/ViewControls.vue:1142 -#: frontend/src/components/ViewControls.vue:1150 +#: frontend/src/components/ViewControls.vue:1146 +#: frontend/src/components/ViewControls.vue:1154 msgid "Delete View" msgstr "" @@ -1101,12 +1101,12 @@ msgstr "" msgid "Delete attachment" msgstr "" -#: frontend/src/pages/Contact.vue:292 frontend/src/pages/MobileContact.vue:285 +#: frontend/src/pages/Contact.vue:298 frontend/src/pages/MobileContact.vue:291 msgid "Delete contact" msgstr "" -#: frontend/src/pages/MobileOrganization.vue:279 -#: frontend/src/pages/Organization.vue:300 +#: frontend/src/pages/MobileOrganization.vue:285 +#: frontend/src/pages/Organization.vue:306 msgid "Delete organization" msgstr "" @@ -1130,9 +1130,9 @@ msgstr "" #. Label of the details (Text Editor) field in DocType 'CRM Lead Source' #: crm/fcrm/doctype/crm_lead/crm_lead.json #: crm/fcrm/doctype/crm_lead_source/crm_lead_source.json -#: frontend/src/pages/MobileContact.vue:309 -#: frontend/src/pages/MobileDeal.vue:428 frontend/src/pages/MobileLead.vue:332 -#: frontend/src/pages/MobileOrganization.vue:356 +#: frontend/src/pages/MobileContact.vue:315 +#: frontend/src/pages/MobileDeal.vue:435 frontend/src/pages/MobileLead.vue:338 +#: frontend/src/pages/MobileOrganization.vue:362 msgid "Details" msgstr "" @@ -1180,7 +1180,7 @@ msgid "Done" msgstr "" #: frontend/src/components/Activities/AudioPlayer.vue:166 -#: frontend/src/components/ViewControls.vue:252 +#: frontend/src/components/ViewControls.vue:254 msgid "Download" msgstr "" @@ -1203,7 +1203,7 @@ msgid "Due Date" msgstr "" #: frontend/src/components/Modals/ViewModal.vue:15 -#: frontend/src/components/ViewControls.vue:1098 +#: frontend/src/components/ViewControls.vue:1102 msgid "Duplicate" msgstr "" @@ -1259,7 +1259,7 @@ msgstr "" #: frontend/src/components/FieldLayoutEditor.vue:319 #: frontend/src/components/FieldLayoutEditor.vue:345 #: frontend/src/components/ListBulkActions.vue:179 -#: frontend/src/components/ViewControls.vue:1116 +#: frontend/src/components/ViewControls.vue:1120 msgid "Edit" msgstr "" @@ -1323,12 +1323,12 @@ msgstr "" #: crm/fcrm/doctype/crm_contacts/crm_contacts.json #: crm/fcrm/doctype/crm_deal/crm_deal.json #: crm/fcrm/doctype/crm_invitation/crm_invitation.json -#: crm/fcrm/doctype/crm_lead/crm_lead.json frontend/src/pages/Contact.vue:616 -#: frontend/src/pages/MobileContact.vue:612 -#: frontend/src/pages/MobileOrganization.vue:498 -#: frontend/src/pages/MobileOrganization.vue:526 -#: frontend/src/pages/Organization.vue:516 -#: frontend/src/pages/Organization.vue:544 +#: crm/fcrm/doctype/crm_lead/crm_lead.json frontend/src/pages/Contact.vue:622 +#: frontend/src/pages/MobileContact.vue:618 +#: frontend/src/pages/MobileOrganization.vue:504 +#: frontend/src/pages/MobileOrganization.vue:532 +#: frontend/src/pages/Organization.vue:522 +#: frontend/src/pages/Organization.vue:550 msgid "Email" msgstr "" @@ -1345,8 +1345,8 @@ msgstr "" msgid "Email from Lead" msgstr "" -#: frontend/src/pages/Deal.vue:511 frontend/src/pages/Lead.vue:501 -#: frontend/src/pages/MobileDeal.vue:439 frontend/src/pages/MobileLead.vue:343 +#: frontend/src/pages/Deal.vue:518 frontend/src/pages/Lead.vue:506 +#: frontend/src/pages/MobileDeal.vue:446 frontend/src/pages/MobileLead.vue:349 msgid "Emails" msgstr "" @@ -1410,28 +1410,28 @@ msgstr "" #: frontend/src/components/Settings/SettingsPage.vue:91 #: frontend/src/components/Settings/TelephonySettings.vue:131 #: frontend/src/components/Settings/TelephonySettings.vue:156 -#: frontend/src/pages/Lead.vue:600 frontend/src/pages/Lead.vue:610 -#: frontend/src/pages/MobileLead.vue:434 frontend/src/pages/MobileLead.vue:444 +#: frontend/src/pages/Lead.vue:603 frontend/src/pages/Lead.vue:613 +#: frontend/src/pages/MobileLead.vue:438 frontend/src/pages/MobileLead.vue:448 msgid "Error" msgstr "" -#: frontend/src/pages/Deal.vue:460 frontend/src/pages/MobileDeal.vue:382 +#: frontend/src/pages/Deal.vue:462 frontend/src/pages/MobileDeal.vue:384 msgid "Error Updating Deal" msgstr "" -#: frontend/src/pages/Lead.vue:450 frontend/src/pages/MobileLead.vue:286 +#: frontend/src/pages/Lead.vue:450 frontend/src/pages/MobileLead.vue:287 msgid "Error Updating Lead" msgstr "" -#: frontend/src/pages/Lead.vue:654 +#: frontend/src/pages/Lead.vue:636 msgid "Error converting to deal" msgstr "" -#: frontend/src/pages/Deal.vue:447 frontend/src/pages/MobileDeal.vue:369 +#: frontend/src/pages/Deal.vue:449 frontend/src/pages/MobileDeal.vue:371 msgid "Error updating deal" msgstr "" -#: frontend/src/pages/Lead.vue:437 frontend/src/pages/MobileLead.vue:273 +#: frontend/src/pages/Lead.vue:437 frontend/src/pages/MobileLead.vue:274 msgid "Error updating lead" msgstr "" @@ -1447,8 +1447,8 @@ msgstr "" msgid "Error while fetching customer in ERPNext, check error log for more details" msgstr "" -#: frontend/src/components/ViewControls.vue:266 -#: frontend/src/components/ViewControls.vue:275 +#: frontend/src/components/ViewControls.vue:268 +#: frontend/src/components/ViewControls.vue:277 msgid "Excel" msgstr "" @@ -1498,15 +1498,15 @@ msgid "Expired" msgstr "" #: frontend/src/components/ViewControls.vue:203 -#: frontend/src/components/ViewControls.vue:249 +#: frontend/src/components/ViewControls.vue:251 msgid "Export" msgstr "" -#: frontend/src/components/ViewControls.vue:280 +#: frontend/src/components/ViewControls.vue:282 msgid "Export All {0} Record(s)" msgstr "" -#: frontend/src/components/ViewControls.vue:262 +#: frontend/src/components/ViewControls.vue:264 msgid "Export Type" msgstr "" @@ -1695,8 +1695,8 @@ msgstr "" #. Label of the group_by_tab (Tab Break) field in DocType 'CRM View Settings' #: crm/fcrm/doctype/crm_view_settings/crm_view_settings.json -#: frontend/src/components/ViewControls.vue:376 -#: frontend/src/components/ViewControls.vue:594 frontend/src/utils/view.js:16 +#: frontend/src/components/ViewControls.vue:378 +#: frontend/src/components/ViewControls.vue:597 frontend/src/utils/view.js:16 msgid "Group By" msgstr "" @@ -1871,7 +1871,7 @@ msgstr "" msgid "Invite Members" msgstr "" -#: frontend/src/components/Settings/InviteMemberPage.vue:22 +#: frontend/src/components/Settings/InviteMemberPage.vue:23 msgid "Invite as" msgstr "" @@ -1947,8 +1947,8 @@ msgstr "" #. Label of the kanban_tab (Tab Break) field in DocType 'CRM View Settings' #: crm/fcrm/doctype/crm_view_settings/crm_view_settings.json -#: frontend/src/components/ViewControls.vue:381 -#: frontend/src/components/ViewControls.vue:583 frontend/src/utils/view.js:20 +#: frontend/src/components/ViewControls.vue:383 +#: frontend/src/components/ViewControls.vue:586 frontend/src/utils/view.js:20 msgid "Kanban" msgstr "" @@ -2013,11 +2013,11 @@ msgstr "" msgid "Last Year" msgstr "" -#: frontend/src/pages/Contact.vue:631 frontend/src/pages/MobileContact.vue:627 -#: frontend/src/pages/MobileOrganization.vue:513 -#: frontend/src/pages/MobileOrganization.vue:541 -#: frontend/src/pages/Organization.vue:531 -#: frontend/src/pages/Organization.vue:559 +#: frontend/src/pages/Contact.vue:637 frontend/src/pages/MobileContact.vue:633 +#: frontend/src/pages/MobileOrganization.vue:519 +#: frontend/src/pages/MobileOrganization.vue:547 +#: frontend/src/pages/Organization.vue:537 +#: frontend/src/pages/Organization.vue:565 msgid "Last modified" msgstr "" @@ -2062,13 +2062,13 @@ msgstr "" msgid "Lead Statuses" msgstr "" -#: frontend/src/pages/Lead.vue:429 frontend/src/pages/MobileLead.vue:265 +#: frontend/src/pages/Lead.vue:429 frontend/src/pages/MobileLead.vue:266 msgid "Lead updated" msgstr "" #. Label of a shortcut in the Frappe CRM Workspace #: crm/fcrm/workspace/frappe_crm/frappe_crm.json -#: frontend/src/pages/Lead.vue:461 frontend/src/pages/MobileLead.vue:297 +#: frontend/src/pages/Lead.vue:461 frontend/src/pages/MobileLead.vue:298 msgid "Leads" msgstr "" @@ -2102,8 +2102,8 @@ msgstr "" #. Label of the list_tab (Tab Break) field in DocType 'CRM View Settings' #: crm/fcrm/doctype/crm_form_script/crm_form_script.json #: crm/fcrm/doctype/crm_view_settings/crm_view_settings.json -#: frontend/src/components/ViewControls.vue:371 -#: frontend/src/components/ViewControls.vue:572 frontend/src/utils/view.js:12 +#: frontend/src/components/ViewControls.vue:373 +#: frontend/src/components/ViewControls.vue:575 frontend/src/utils/view.js:12 msgid "List" msgstr "" @@ -2157,11 +2157,11 @@ msgstr "" msgid "Make Call" msgstr "" -#: frontend/src/components/ViewControls.vue:1131 +#: frontend/src/components/ViewControls.vue:1135 msgid "Make Private" msgstr "" -#: frontend/src/components/ViewControls.vue:1131 +#: frontend/src/components/ViewControls.vue:1135 msgid "Make Public" msgstr "" @@ -2200,8 +2200,8 @@ msgstr "" msgid "Make {0} as default calling medium" msgstr "" -#: frontend/src/components/Settings/InviteMemberPage.vue:25 -#: frontend/src/components/Settings/InviteMemberPage.vue:106 +#: frontend/src/components/Settings/InviteMemberPage.vue:26 +#: frontend/src/components/Settings/InviteMemberPage.vue:107 msgid "Manager Access" msgstr "" @@ -2265,9 +2265,9 @@ msgstr "" msgid "Mobile Number Missing" msgstr "" -#: frontend/src/pages/Contact.vue:621 frontend/src/pages/MobileContact.vue:617 -#: frontend/src/pages/MobileOrganization.vue:503 -#: frontend/src/pages/Organization.vue:521 +#: frontend/src/pages/Contact.vue:627 frontend/src/pages/MobileContact.vue:623 +#: frontend/src/pages/MobileOrganization.vue:509 +#: frontend/src/pages/Organization.vue:527 msgid "Mobile no" msgstr "" @@ -2303,9 +2303,9 @@ msgstr "" #: crm/fcrm/doctype/crm_dropdown_item/crm_dropdown_item.json #: crm/fcrm/doctype/fcrm_settings/fcrm_settings.json #: frontend/src/components/Modals/EmailTemplateModal.vue:24 -#: frontend/src/components/ViewControls.vue:765 -#: frontend/src/pages/MobileOrganization.vue:521 -#: frontend/src/pages/Organization.vue:539 +#: frontend/src/components/ViewControls.vue:768 +#: frontend/src/pages/MobileOrganization.vue:527 +#: frontend/src/pages/Organization.vue:545 msgid "Name" msgstr "" @@ -2441,7 +2441,7 @@ msgstr "" msgid "No label" msgstr "" -#: frontend/src/pages/Deal.vue:685 +#: frontend/src/pages/Deal.vue:694 msgid "No mobile number set" msgstr "" @@ -2454,7 +2454,7 @@ msgstr "" msgid "No phone number set" msgstr "" -#: frontend/src/pages/Deal.vue:680 +#: frontend/src/pages/Deal.vue:689 msgid "No primary contact set" msgstr "" @@ -2533,7 +2533,7 @@ msgstr "" msgid "Not allowed to add contact to Deal" msgstr "" -#: crm/fcrm/doctype/crm_lead/crm_lead.py:390 +#: crm/fcrm/doctype/crm_lead/crm_lead.py:408 msgid "Not allowed to convert Lead to Deal" msgstr "" @@ -2550,8 +2550,8 @@ msgstr "" msgid "Note" msgstr "" -#: frontend/src/pages/Deal.vue:537 frontend/src/pages/Lead.vue:527 -#: frontend/src/pages/MobileDeal.vue:465 frontend/src/pages/MobileLead.vue:369 +#: frontend/src/pages/Deal.vue:544 frontend/src/pages/Lead.vue:532 +#: frontend/src/pages/MobileDeal.vue:472 frontend/src/pages/MobileLead.vue:375 msgid "Notes" msgstr "" @@ -2597,10 +2597,10 @@ msgstr "" msgid "Old Parent" msgstr "" -#: frontend/src/pages/Contact.vue:276 frontend/src/pages/Lead.vue:561 -#: frontend/src/pages/MobileContact.vue:269 -#: frontend/src/pages/MobileOrganization.vue:263 -#: frontend/src/pages/Organization.vue:284 +#: frontend/src/pages/Contact.vue:282 frontend/src/pages/Lead.vue:566 +#: frontend/src/pages/MobileContact.vue:275 +#: frontend/src/pages/MobileOrganization.vue:269 +#: frontend/src/pages/Organization.vue:290 msgid "Only PNG and JPG images are allowed" msgstr "" @@ -2649,13 +2649,13 @@ msgstr "" #. Label of the organization_tab (Tab Break) field in DocType 'CRM Deal' #. Label of the organization (Data) field in DocType 'CRM Lead' #: crm/fcrm/doctype/crm_deal/crm_deal.json -#: crm/fcrm/doctype/crm_lead/crm_lead.json frontend/src/pages/Contact.vue:600 -#: frontend/src/pages/Lead.vue:228 frontend/src/pages/MobileContact.vue:596 +#: crm/fcrm/doctype/crm_lead/crm_lead.json frontend/src/pages/Contact.vue:606 +#: frontend/src/pages/Lead.vue:228 frontend/src/pages/MobileContact.vue:602 #: frontend/src/pages/MobileLead.vue:106 -#: frontend/src/pages/MobileOrganization.vue:482 -#: frontend/src/pages/MobileOrganization.vue:536 -#: frontend/src/pages/Organization.vue:500 -#: frontend/src/pages/Organization.vue:554 +#: frontend/src/pages/MobileOrganization.vue:488 +#: frontend/src/pages/MobileOrganization.vue:542 +#: frontend/src/pages/Organization.vue:506 +#: frontend/src/pages/Organization.vue:560 msgid "Organization" msgstr "" @@ -2682,15 +2682,15 @@ msgstr "" msgid "Organization logo" msgstr "" -#: frontend/src/pages/MobileOrganization.vue:215 -#: frontend/src/pages/Organization.vue:236 +#: frontend/src/pages/MobileOrganization.vue:216 +#: frontend/src/pages/Organization.vue:237 msgid "Organization updated" msgstr "" #. Label of a shortcut in the Frappe CRM Workspace #: crm/fcrm/workspace/frappe_crm/frappe_crm.json -#: frontend/src/pages/MobileOrganization.vue:222 -#: frontend/src/pages/Organization.vue:243 +#: frontend/src/pages/MobileOrganization.vue:223 +#: frontend/src/pages/Organization.vue:244 msgid "Organizations" msgstr "" @@ -2755,8 +2755,8 @@ msgstr "" #: crm/fcrm/doctype/crm_deal/crm_deal.json #: crm/fcrm/doctype/crm_lead/crm_lead.json #: crm/fcrm/doctype/crm_telephony_agent/crm_telephony_agent.json -#: frontend/src/pages/MobileOrganization.vue:531 -#: frontend/src/pages/Organization.vue:549 +#: frontend/src/pages/MobileOrganization.vue:537 +#: frontend/src/pages/Organization.vue:555 msgid "Phone" msgstr "" @@ -2765,7 +2765,7 @@ msgstr "" msgid "Phone Numbers" msgstr "" -#: frontend/src/components/ViewControls.vue:1123 +#: frontend/src/components/ViewControls.vue:1127 msgid "Pin View" msgstr "" @@ -2774,7 +2774,7 @@ msgstr "" msgid "Pinned" msgstr "" -#: frontend/src/components/ViewControls.vue:660 +#: frontend/src/components/ViewControls.vue:663 msgid "Pinned Views" msgstr "" @@ -2790,11 +2790,11 @@ msgstr "" msgid "Please enter a valid URL" msgstr "" -#: frontend/src/pages/Lead.vue:601 frontend/src/pages/MobileLead.vue:435 +#: frontend/src/pages/Lead.vue:604 frontend/src/pages/MobileLead.vue:439 msgid "Please select an existing contact" msgstr "" -#: frontend/src/pages/Lead.vue:611 frontend/src/pages/MobileLead.vue:445 +#: frontend/src/pages/Lead.vue:614 frontend/src/pages/MobileLead.vue:449 msgid "Please select an existing organization" msgstr "" @@ -2809,11 +2809,15 @@ msgstr "" msgid "Position" msgstr "" +#: frontend/src/components/Settings/InviteMemberPage.vue:17 +msgid "Press enter to add email" +msgstr "" + #: frontend/src/pages/Deal.vue:198 frontend/src/pages/MobileDeal.vue:143 msgid "Primary" msgstr "" -#: frontend/src/pages/Deal.vue:655 frontend/src/pages/MobileDeal.vue:583 +#: frontend/src/pages/Deal.vue:663 frontend/src/pages/MobileDeal.vue:590 msgid "Primary contact set" msgstr "" @@ -2852,7 +2856,7 @@ msgstr "" msgid "Public" msgstr "" -#: frontend/src/components/ViewControls.vue:655 +#: frontend/src/components/ViewControls.vue:658 msgid "Public Views" msgstr "" @@ -2871,7 +2875,7 @@ msgstr "" msgid "Quick Filters" msgstr "" -#: frontend/src/components/ViewControls.vue:716 +#: frontend/src/components/ViewControls.vue:719 msgid "Quick Filters updated successfully" msgstr "" @@ -2930,8 +2934,8 @@ msgstr "" msgid "Refresh" msgstr "" -#: frontend/src/components/Settings/InviteMemberPage.vue:24 -#: frontend/src/components/Settings/InviteMemberPage.vue:105 +#: frontend/src/components/Settings/InviteMemberPage.vue:25 +#: frontend/src/components/Settings/InviteMemberPage.vue:106 msgid "Regular Access" msgstr "" @@ -2939,7 +2943,7 @@ msgstr "" msgid "Reject" msgstr "" -#: frontend/src/pages/Deal.vue:591 +#: frontend/src/pages/Deal.vue:599 msgid "Remove" msgstr "" @@ -3198,7 +3202,7 @@ msgstr "" msgid "Save Changes" msgstr "" -#: frontend/src/components/ViewControls.vue:650 +#: frontend/src/components/ViewControls.vue:653 msgid "Saved Views" msgstr "" @@ -3223,7 +3227,7 @@ msgstr "" msgid "Send" msgstr "" -#: frontend/src/components/Settings/InviteMemberPage.vue:72 +#: frontend/src/components/Settings/InviteMemberPage.vue:73 msgid "Send Invites" msgstr "" @@ -3261,11 +3265,11 @@ msgstr "" msgid "Set an organization" msgstr "" -#: frontend/src/pages/Deal.vue:599 frontend/src/pages/MobileDeal.vue:527 +#: frontend/src/pages/Deal.vue:607 frontend/src/pages/MobileDeal.vue:534 msgid "Set as Primary Contact" msgstr "" -#: frontend/src/components/ViewControls.vue:1108 +#: frontend/src/components/ViewControls.vue:1112 msgid "Set as default" msgstr "" @@ -3339,7 +3343,7 @@ msgstr "" msgid "Standard Form Scripts can not be modified, duplicate the Form Script instead." msgstr "" -#: frontend/src/components/ViewControls.vue:617 +#: frontend/src/components/ViewControls.vue:620 msgid "Standard Views" msgstr "" @@ -3373,10 +3377,10 @@ msgstr "" #: crm/fcrm/doctype/crm_invitation/crm_invitation.json #: crm/fcrm/doctype/crm_lead/crm_lead.json #: crm/fcrm/doctype/crm_lead_status/crm_lead_status.json -#: crm/fcrm/doctype/crm_task/crm_task.json frontend/src/pages/Contact.vue:611 -#: frontend/src/pages/MobileContact.vue:607 -#: frontend/src/pages/MobileOrganization.vue:493 -#: frontend/src/pages/Organization.vue:511 +#: crm/fcrm/doctype/crm_task/crm_task.json frontend/src/pages/Contact.vue:617 +#: frontend/src/pages/MobileContact.vue:613 +#: frontend/src/pages/MobileOrganization.vue:499 +#: frontend/src/pages/Organization.vue:517 msgid "Status" msgstr "" @@ -3449,8 +3453,8 @@ msgstr "" msgid "Task" msgstr "" -#: frontend/src/pages/Deal.vue:532 frontend/src/pages/Lead.vue:522 -#: frontend/src/pages/MobileDeal.vue:460 frontend/src/pages/MobileLead.vue:364 +#: frontend/src/pages/Deal.vue:539 frontend/src/pages/Lead.vue:527 +#: frontend/src/pages/MobileDeal.vue:467 frontend/src/pages/MobileLead.vue:370 msgid "Tasks" msgstr "" @@ -3673,11 +3677,11 @@ msgstr "" msgid "Unknown" msgstr "" -#: frontend/src/components/ViewControls.vue:1123 +#: frontend/src/components/ViewControls.vue:1127 msgid "Unpin View" msgstr "" -#: frontend/src/components/ViewControls.vue:960 +#: frontend/src/components/ViewControls.vue:964 msgid "Unsaved Changes" msgstr "" @@ -3686,10 +3690,6 @@ msgstr "" #: frontend/src/components/Modals/CallLogModal.vue:8 #: frontend/src/components/Section.vue:21 #: frontend/src/components/SidePanelLayoutEditor.vue:19 -#: frontend/src/pages/Deal.vue:65 frontend/src/pages/Deal.vue:73 -#: frontend/src/pages/Deal.vue:489 frontend/src/pages/Lead.vue:74 -#: frontend/src/pages/Lead.vue:115 frontend/src/pages/Lead.vue:479 -#: frontend/src/pages/MobileDeal.vue:411 frontend/src/pages/MobileLead.vue:315 msgid "Untitled" msgstr "" @@ -3703,7 +3703,7 @@ msgstr "" #: frontend/src/components/Settings/SettingsPage.vue:31 #: frontend/src/components/Settings/TelephonySettings.vue:70 #: frontend/src/components/Telephony/ExotelCallUI.vue:219 -#: frontend/src/components/ViewControls.vue:965 +#: frontend/src/components/ViewControls.vue:969 msgid "Update" msgstr "" @@ -3781,8 +3781,8 @@ msgstr "" msgid "Website" msgstr "" -#: frontend/src/pages/MobileOrganization.vue:302 -#: frontend/src/pages/Organization.vue:327 +#: frontend/src/pages/MobileOrganization.vue:308 +#: frontend/src/pages/Organization.vue:333 msgid "Website not found" msgstr "" @@ -3807,8 +3807,8 @@ msgstr "" #. Option for the 'Type' (Select) field in DocType 'CRM Notification' #: crm/fcrm/doctype/crm_notification/crm_notification.json #: frontend/src/components/Settings/Settings.vue:115 -#: frontend/src/pages/Deal.vue:547 frontend/src/pages/Lead.vue:537 -#: frontend/src/pages/MobileDeal.vue:475 frontend/src/pages/MobileLead.vue:379 +#: frontend/src/pages/Deal.vue:554 frontend/src/pages/Lead.vue:542 +#: frontend/src/pages/MobileDeal.vue:482 frontend/src/pages/MobileLead.vue:385 msgid "WhatsApp" msgstr "" @@ -3863,7 +3863,7 @@ msgstr "" msgid "You do not have mobile number set in your Telephony Agent" msgstr "" -#: frontend/src/components/ViewControls.vue:961 +#: frontend/src/components/ViewControls.vue:965 msgid "You have unsaved changes. Do you want to save them?" msgstr "" @@ -4051,8 +4051,8 @@ msgstr "" msgid "{0} assigned a {1} {2} to you" msgstr "" -#: frontend/src/pages/Deal.vue:461 frontend/src/pages/Lead.vue:451 -#: frontend/src/pages/MobileDeal.vue:383 frontend/src/pages/MobileLead.vue:287 +#: frontend/src/pages/Deal.vue:463 frontend/src/pages/Lead.vue:451 +#: frontend/src/pages/MobileDeal.vue:385 frontend/src/pages/MobileLead.vue:288 msgid "{0} is a required field" msgstr "" diff --git a/frappe-ui b/frappe-ui index 33c9907a..b6efd25b 160000 --- a/frappe-ui +++ b/frappe-ui @@ -1 +1 @@ -Subproject commit 33c9907aa9163d8d3b84f23dc2a2c829e4d8c6f1 +Subproject commit b6efd25b2122c2c1f3beeea1702788c5e6e5555f diff --git a/frontend/components.d.ts b/frontend/components.d.ts new file mode 100644 index 00000000..081f1074 --- /dev/null +++ b/frontend/components.d.ts @@ -0,0 +1,229 @@ +/* eslint-disable */ +// @ts-nocheck +// Generated by unplugin-vue-components +// Read more: https://github.com/vuejs/core/pull/3399 +// biome-ignore lint: disable +export {} + +/* prettier-ignore */ +declare module 'vue' { + export interface GlobalComponents { + Activities: typeof import('./src/components/Activities/Activities.vue')['default'] + ActivityHeader: typeof import('./src/components/Activities/ActivityHeader.vue')['default'] + ActivityIcon: typeof import('./src/components/Icons/ActivityIcon.vue')['default'] + AddressIcon: typeof import('./src/components/Icons/AddressIcon.vue')['default'] + AddressModal: typeof import('./src/components/Modals/AddressModal.vue')['default'] + AllModals: typeof import('./src/components/Activities/AllModals.vue')['default'] + AppHeader: typeof import('./src/components/Layouts/AppHeader.vue')['default'] + Apps: typeof import('./src/components/Apps.vue')['default'] + AppsIcon: typeof import('./src/components/Icons/AppsIcon.vue')['default'] + AppSidebar: typeof import('./src/components/Layouts/AppSidebar.vue')['default'] + ArrowUpRightIcon: typeof import('./src/components/Icons/ArrowUpRightIcon.vue')['default'] + AscendingIcon: typeof import('./src/components/Icons/AscendingIcon.vue')['default'] + AssignmentModal: typeof import('./src/components/Modals/AssignmentModal.vue')['default'] + AssignTo: typeof import('./src/components/AssignTo.vue')['default'] + AttachmentArea: typeof import('./src/components/Activities/AttachmentArea.vue')['default'] + AttachmentIcon: typeof import('./src/components/Icons/AttachmentIcon.vue')['default'] + AttachmentItem: typeof import('./src/components/AttachmentItem.vue')['default'] + AudioPlayer: typeof import('./src/components/Activities/AudioPlayer.vue')['default'] + Autocomplete: typeof import('./src/components/frappe-ui/Autocomplete.vue')['default'] + AvatarIcon: typeof import('./src/components/Icons/AvatarIcon.vue')['default'] + BrandLogo: typeof import('./src/components/BrandLogo.vue')['default'] + CalendarIcon: typeof import('./src/components/Icons/CalendarIcon.vue')['default'] + CallArea: typeof import('./src/components/Activities/CallArea.vue')['default'] + CallLogDetailModal: typeof import('./src/components/Modals/CallLogDetailModal.vue')['default'] + CallLogModal: typeof import('./src/components/Modals/CallLogModal.vue')['default'] + CallLogsListView: typeof import('./src/components/ListViews/CallLogsListView.vue')['default'] + CallUI: typeof import('./src/components/Telephony/CallUI.vue')['default'] + CameraIcon: typeof import('./src/components/Icons/CameraIcon.vue')['default'] + CertificateIcon: typeof import('./src/components/Icons/CertificateIcon.vue')['default'] + CheckCircleIcon: typeof import('./src/components/Icons/CheckCircleIcon.vue')['default'] + CheckIcon: typeof import('./src/components/Icons/CheckIcon.vue')['default'] + CollapseSidebar: typeof import('./src/components/Icons/CollapseSidebar.vue')['default'] + Column: typeof import('./src/components/FieldLayout/Column.vue')['default'] + ColumnSettings: typeof import('./src/components/ColumnSettings.vue')['default'] + ColumnsIcon: typeof import('./src/components/Icons/ColumnsIcon.vue')['default'] + CommentArea: typeof import('./src/components/Activities/CommentArea.vue')['default'] + CommentBox: typeof import('./src/components/CommentBox.vue')['default'] + CommentIcon: typeof import('./src/components/Icons/CommentIcon.vue')['default'] + CommunicationArea: typeof import('./src/components/CommunicationArea.vue')['default'] + ContactIcon: typeof import('./src/components/Icons/ContactIcon.vue')['default'] + ContactModal: typeof import('./src/components/Modals/ContactModal.vue')['default'] + ContactsIcon: typeof import('./src/components/Icons/ContactsIcon.vue')['default'] + ContactsListView: typeof import('./src/components/ListViews/ContactsListView.vue')['default'] + ConvertIcon: typeof import('./src/components/Icons/ConvertIcon.vue')['default'] + CountUpTimer: typeof import('./src/components/CountUpTimer.vue')['default'] + CRMLogo: typeof import('./src/components/Icons/CRMLogo.vue')['default'] + CustomActions: typeof import('./src/components/CustomActions.vue')['default'] + DashboardIcon: typeof import('./src/components/Icons/DashboardIcon.vue')['default'] + DataFields: typeof import('./src/components/Activities/DataFields.vue')['default'] + DataFieldsModal: typeof import('./src/components/Modals/DataFieldsModal.vue')['default'] + DealModal: typeof import('./src/components/Modals/DealModal.vue')['default'] + DealsIcon: typeof import('./src/components/Icons/DealsIcon.vue')['default'] + DealsListView: typeof import('./src/components/ListViews/DealsListView.vue')['default'] + DeclinedCallIcon: typeof import('./src/components/Icons/DeclinedCallIcon.vue')['default'] + DesendingIcon: typeof import('./src/components/Icons/DesendingIcon.vue')['default'] + DesktopLayout: typeof import('./src/components/Layouts/DesktopLayout.vue')['default'] + DetailsIcon: typeof import('./src/components/Icons/DetailsIcon.vue')['default'] + DialpadIcon: typeof import('./src/components/Icons/DialpadIcon.vue')['default'] + DocumentIcon: typeof import('./src/components/Icons/DocumentIcon.vue')['default'] + DotIcon: typeof import('./src/components/Icons/DotIcon.vue')['default'] + DoubleCheckIcon: typeof import('./src/components/Icons/DoubleCheckIcon.vue')['default'] + DragIcon: typeof import('./src/components/Icons/DragIcon.vue')['default'] + DragVerticalIcon: typeof import('./src/components/Icons/DragVerticalIcon.vue')['default'] + Dropdown: typeof import('./src/components/frappe-ui/Dropdown.vue')['default'] + DropdownItem: typeof import('./src/components/DropdownItem.vue')['default'] + DuplicateIcon: typeof import('./src/components/Icons/DuplicateIcon.vue')['default'] + DurationIcon: typeof import('./src/components/Icons/DurationIcon.vue')['default'] + EditIcon: typeof import('./src/components/Icons/EditIcon.vue')['default'] + EditValueModal: typeof import('./src/components/Modals/EditValueModal.vue')['default'] + Email2Icon: typeof import('./src/components/Icons/Email2Icon.vue')['default'] + EmailArea: typeof import('./src/components/Activities/EmailArea.vue')['default'] + EmailAtIcon: typeof import('./src/components/Icons/EmailAtIcon.vue')['default'] + EmailContent: typeof import('./src/components/Activities/EmailContent.vue')['default'] + EmailEditor: typeof import('./src/components/EmailEditor.vue')['default'] + EmailIcon: typeof import('./src/components/Icons/EmailIcon.vue')['default'] + EmailTemplateModal: typeof import('./src/components/Modals/EmailTemplateModal.vue')['default'] + EmailTemplateSelectorModal: typeof import('./src/components/Modals/EmailTemplateSelectorModal.vue')['default'] + EmailTemplatesListView: typeof import('./src/components/ListViews/EmailTemplatesListView.vue')['default'] + ERPNextIcon: typeof import('./src/components/Icons/ERPNextIcon.vue')['default'] + ERPNextSettings: typeof import('./src/components/Settings/ERPNextSettings.vue')['default'] + ExotelCallUI: typeof import('./src/components/Telephony/ExotelCallUI.vue')['default'] + ExportIcon: typeof import('./src/components/Icons/ExportIcon.vue')['default'] + ExternalLinkIcon: typeof import('./src/components/Icons/ExternalLinkIcon.vue')['default'] + FadedScrollableDiv: typeof import('./src/components/FadedScrollableDiv.vue')['default'] + Field: typeof import('./src/components/FieldLayout/Field.vue')['default'] + FieldLayout: typeof import('./src/components/FieldLayout/FieldLayout.vue')['default'] + FieldLayoutEditor: typeof import('./src/components/FieldLayoutEditor.vue')['default'] + FileAudioIcon: typeof import('./src/components/Icons/FileAudioIcon.vue')['default'] + FileIcon: typeof import('./src/components/Icons/FileIcon.vue')['default'] + FileImageIcon: typeof import('./src/components/Icons/FileImageIcon.vue')['default'] + FileSpreadsheetIcon: typeof import('./src/components/Icons/FileSpreadsheetIcon.vue')['default'] + FilesUploader: typeof import('./src/components/FilesUploader/FilesUploader.vue')['default'] + FilesUploaderArea: typeof import('./src/components/FilesUploader/FilesUploaderArea.vue')['default'] + FileTextIcon: typeof import('./src/components/Icons/FileTextIcon.vue')['default'] + FileTypeIcon: typeof import('./src/components/Icons/FileTypeIcon.vue')['default'] + FileVideoIcon: typeof import('./src/components/Icons/FileVideoIcon.vue')['default'] + Filter: typeof import('./src/components/Filter.vue')['default'] + FilterIcon: typeof import('./src/components/Icons/FilterIcon.vue')['default'] + FrappeCloudIcon: typeof import('./src/components/Icons/FrappeCloudIcon.vue')['default'] + GenderIcon: typeof import('./src/components/Icons/GenderIcon.vue')['default'] + GeneralSettings: typeof import('./src/components/Settings/GeneralSettings.vue')['default'] + GoogleIcon: typeof import('./src/components/Icons/GoogleIcon.vue')['default'] + Grid: typeof import('./src/components/Controls/Grid.vue')['default'] + GridFieldsEditorModal: typeof import('./src/components/Controls/GridFieldsEditorModal.vue')['default'] + GridRowFieldsModal: typeof import('./src/components/Controls/GridRowFieldsModal.vue')['default'] + GridRowModal: typeof import('./src/components/Controls/GridRowModal.vue')['default'] + GroupBy: typeof import('./src/components/GroupBy.vue')['default'] + GroupByIcon: typeof import('./src/components/Icons/GroupByIcon.vue')['default'] + HeartIcon: typeof import('./src/components/Icons/HeartIcon.vue')['default'] + HelpIcon: typeof import('./src/components/Icons/HelpIcon.vue')['default'] + Icon: typeof import('./src/components/Icon.vue')['default'] + IconPicker: typeof import('./src/components/IconPicker.vue')['default'] + ImageUploader: typeof import('./src/components/Controls/ImageUploader.vue')['default'] + InboundCallIcon: typeof import('./src/components/Icons/InboundCallIcon.vue')['default'] + InboxIcon: typeof import('./src/components/Icons/InboxIcon.vue')['default'] + IndicatorIcon: typeof import('./src/components/Icons/IndicatorIcon.vue')['default'] + InviteIcon: typeof import('./src/components/Icons/InviteIcon.vue')['default'] + InviteMemberPage: typeof import('./src/components/Settings/InviteMemberPage.vue')['default'] + KanbanIcon: typeof import('./src/components/Icons/KanbanIcon.vue')['default'] + KanbanSettings: typeof import('./src/components/Kanban/KanbanSettings.vue')['default'] + KanbanView: typeof import('./src/components/Kanban/KanbanView.vue')['default'] + LayoutHeader: typeof import('./src/components/LayoutHeader.vue')['default'] + LeadModal: typeof import('./src/components/Modals/LeadModal.vue')['default'] + LeadsIcon: typeof import('./src/components/Icons/LeadsIcon.vue')['default'] + LeadsListView: typeof import('./src/components/ListViews/LeadsListView.vue')['default'] + LightningIcon: typeof import('./src/components/Icons/LightningIcon.vue')['default'] + Link: typeof import('./src/components/Controls/Link.vue')['default'] + LinkIcon: typeof import('./src/components/Icons/LinkIcon.vue')['default'] + ListBulkActions: typeof import('./src/components/ListBulkActions.vue')['default'] + 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'] + 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'] + MinimizeIcon: typeof import('./src/components/Icons/MinimizeIcon.vue')['default'] + MissedCallIcon: typeof import('./src/components/Icons/MissedCallIcon.vue')['default'] + MobileAppHeader: typeof import('./src/components/Mobile/MobileAppHeader.vue')['default'] + MobileLayout: typeof import('./src/components/Layouts/MobileLayout.vue')['default'] + MobileSidebar: typeof import('./src/components/Mobile/MobileSidebar.vue')['default'] + MoneyIcon: typeof import('./src/components/Icons/MoneyIcon.vue')['default'] + MultipleAvatar: typeof import('./src/components/MultipleAvatar.vue')['default'] + MultiselectInput: typeof import('./src/components/Controls/MultiselectInput.vue')['default'] + MultiValueInput: typeof import('./src/components/Controls/MultiValueInput.vue')['default'] + MuteIcon: typeof import('./src/components/Icons/MuteIcon.vue')['default'] + NestedPopover: typeof import('./src/components/NestedPopover.vue')['default'] + NoteArea: typeof import('./src/components/Activities/NoteArea.vue')['default'] + NoteIcon: typeof import('./src/components/Icons/NoteIcon.vue')['default'] + NoteModal: typeof import('./src/components/Modals/NoteModal.vue')['default'] + Notifications: typeof import('./src/components/Notifications.vue')['default'] + NotificationsIcon: typeof import('./src/components/Icons/NotificationsIcon.vue')['default'] + OrganizationModal: typeof import('./src/components/Modals/OrganizationModal.vue')['default'] + OrganizationsIcon: typeof import('./src/components/Icons/OrganizationsIcon.vue')['default'] + OrganizationsListView: typeof import('./src/components/ListViews/OrganizationsListView.vue')['default'] + OutboundCallIcon: typeof import('./src/components/Icons/OutboundCallIcon.vue')['default'] + PauseIcon: typeof import('./src/components/Icons/PauseIcon.vue')['default'] + PhoneIcon: typeof import('./src/components/Icons/PhoneIcon.vue')['default'] + PinIcon: typeof import('./src/components/Icons/PinIcon.vue')['default'] + PlaybackSpeedIcon: typeof import('./src/components/Icons/PlaybackSpeedIcon.vue')['default'] + PlaybackSpeedOption: typeof import('./src/components/Activities/PlaybackSpeedOption.vue')['default'] + PlayIcon: typeof import('./src/components/Icons/PlayIcon.vue')['default'] + Popover: typeof import('./src/components/frappe-ui/Popover.vue')['default'] + ProfileImageEditor: typeof import('./src/components/Settings/ProfileImageEditor.vue')['default'] + ProfileSettings: typeof import('./src/components/Settings/ProfileSettings.vue')['default'] + QuickEntryModal: typeof import('./src/components/Modals/QuickEntryModal.vue')['default'] + QuickFilterField: typeof import('./src/components/QuickFilterField.vue')['default'] + QuickFilterIcon: typeof import('./src/components/Icons/QuickFilterIcon.vue')['default'] + ReactIcon: typeof import('./src/components/Icons/ReactIcon.vue')['default'] + RefreshIcon: typeof import('./src/components/Icons/RefreshIcon.vue')['default'] + ReloadIcon: typeof import('./src/components/Icons/ReloadIcon.vue')['default'] + ReplyAllIcon: typeof import('./src/components/Icons/ReplyAllIcon.vue')['default'] + ReplyIcon: typeof import('./src/components/Icons/ReplyIcon.vue')['default'] + Resizer: typeof import('./src/components/Resizer.vue')['default'] + RightSideLayoutIcon: typeof import('./src/components/Icons/RightSideLayoutIcon.vue')['default'] + RouterLink: typeof import('vue-router')['RouterLink'] + RouterView: typeof import('vue-router')['RouterView'] + Section: typeof import('./src/components/FieldLayout/Section.vue')['default'] + SelectIcon: typeof import('./src/components/Icons/SelectIcon.vue')['default'] + Settings: typeof import('./src/components/Settings/Settings.vue')['default'] + SettingsIcon: typeof import('./src/components/Icons/SettingsIcon.vue')['default'] + SettingsPage: typeof import('./src/components/Settings/SettingsPage.vue')['default'] + SidebarLink: typeof import('./src/components/SidebarLink.vue')['default'] + SidePanelLayout: typeof import('./src/components/SidePanelLayout.vue')['default'] + SidePanelLayoutEditor: typeof import('./src/components/SidePanelLayoutEditor.vue')['default'] + SidePanelModal: typeof import('./src/components/Modals/SidePanelModal.vue')['default'] + SignupBanner: typeof import('./src/components/SignupBanner.vue')['default'] + SLASection: typeof import('./src/components/SLASection.vue')['default'] + SmileIcon: typeof import('./src/components/Icons/SmileIcon.vue')['default'] + SortBy: typeof import('./src/components/SortBy.vue')['default'] + SortIcon: typeof import('./src/components/Icons/SortIcon.vue')['default'] + StepsIcon: typeof import('./src/components/Icons/StepsIcon.vue')['default'] + SuccessIcon: typeof import('./src/components/Icons/SuccessIcon.vue')['default'] + TableMultiselectInput: typeof import('./src/components/Controls/TableMultiselectInput.vue')['default'] + TaskArea: typeof import('./src/components/Activities/TaskArea.vue')['default'] + TaskIcon: typeof import('./src/components/Icons/TaskIcon.vue')['default'] + TaskModal: typeof import('./src/components/Modals/TaskModal.vue')['default'] + TaskPanel: typeof import('./src/components/Telephony/TaskPanel.vue')['default'] + TaskPriorityIcon: typeof import('./src/components/Icons/TaskPriorityIcon.vue')['default'] + TasksListView: typeof import('./src/components/ListViews/TasksListView.vue')['default'] + TaskStatusIcon: typeof import('./src/components/Icons/TaskStatusIcon.vue')['default'] + TelephonySettings: typeof import('./src/components/Settings/TelephonySettings.vue')['default'] + TerritoryIcon: typeof import('./src/components/Icons/TerritoryIcon.vue')['default'] + TwilioCallUI: typeof import('./src/components/Telephony/TwilioCallUI.vue')['default'] + UnpinIcon: typeof import('./src/components/Icons/UnpinIcon.vue')['default'] + UserAvatar: typeof import('./src/components/UserAvatar.vue')['default'] + UserDropdown: typeof import('./src/components/UserDropdown.vue')['default'] + ViewBreadcrumbs: typeof import('./src/components/ViewBreadcrumbs.vue')['default'] + ViewControls: typeof import('./src/components/ViewControls.vue')['default'] + ViewModal: typeof import('./src/components/Modals/ViewModal.vue')['default'] + VolumnHighIcon: typeof import('./src/components/Icons/VolumnHighIcon.vue')['default'] + VolumnLowIcon: typeof import('./src/components/Icons/VolumnLowIcon.vue')['default'] + WebsiteIcon: typeof import('./src/components/Icons/WebsiteIcon.vue')['default'] + WhatsAppArea: typeof import('./src/components/Activities/WhatsAppArea.vue')['default'] + WhatsAppBox: typeof import('./src/components/Activities/WhatsAppBox.vue')['default'] + WhatsAppIcon: typeof import('./src/components/Icons/WhatsAppIcon.vue')['default'] + WhatsAppSettings: typeof import('./src/components/Settings/WhatsAppSettings.vue')['default'] + WhatsappTemplateSelectorModal: typeof import('./src/components/Modals/WhatsappTemplateSelectorModal.vue')['default'] + } +} diff --git a/frontend/package.json b/frontend/package.json index bb53389b..37c2025e 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -14,7 +14,7 @@ "@vueuse/core": "^10.3.0", "@vueuse/integrations": "^10.3.0", "feather-icons": "^4.28.0", - "frappe-ui": "^0.1.111", + "frappe-ui": "^0.1.118", "gemoji": "^8.1.0", "lodash": "^4.17.21", "mime": "^4.0.1", diff --git a/frontend/src/components/CommunicationArea.vue b/frontend/src/components/CommunicationArea.vue index 2bfb77ab..d262a3de 100644 --- a/frontend/src/components/CommunicationArea.vue +++ b/frontend/src/components/CommunicationArea.vue @@ -4,7 +4,9 @@