diff --git a/crm/api/comment.py b/crm/api/comment.py index 7d78f0d4e..c3b7ca65a 100644 --- a/crm/api/comment.py +++ b/crm/api/comment.py @@ -5,6 +5,7 @@ from bs4 import BeautifulSoup from crm.fcrm.doctype.crm_notification.crm_notification import notify_user + def on_update(self, method): notify_mentions(self) @@ -24,25 +25,31 @@ def notify_mentions(doc): doctype = doc.reference_doctype if doctype.startswith("CRM "): doctype = doctype[4:].lower() - name = reference_doc.lead_name or name if doctype == "lead" else reference_doc.organization or reference_doc.lead_name or name + name = ( + reference_doc.lead_name + if doctype == "lead" + else reference_doc.organization or reference_doc.lead_name + ) notification_text = f""" -
- { owner } +
+ { owner } { _('mentioned you in {0}').format(doctype) } - { name } + { name }
""" - notify_user({ - "owner": doc.owner, - "assigned_to": mention.email, - "notification_type": "Mention", - "message": doc.content, - "notification_text": notification_text, - "reference_doctype": "Comment", - "reference_docname": doc.name, - "redirect_to_doctype": doc.reference_doctype, - "redirect_to_docname": doc.reference_name, - }) + notify_user( + { + "owner": doc.owner, + "assigned_to": mention.email, + "notification_type": "Mention", + "message": doc.content, + "notification_text": notification_text, + "reference_doctype": "Comment", + "reference_docname": doc.name, + "redirect_to_doctype": doc.reference_doctype, + "redirect_to_docname": doc.reference_name, + } + ) def extract_mentions(html): @@ -56,39 +63,42 @@ def extract_mentions(html): ) return mentions + @frappe.whitelist() def add_attachments(name: str, attachments: Iterable[str | dict]) -> None: - """Add attachments to the given Comment + """Add attachments to the given Comment - :param name: Comment name - :param attachments: File names or dicts with keys "fname" and "fcontent" - """ - # loop through attachments - for a in attachments: - if isinstance(a, str): - attach = frappe.db.get_value("File", {"name": a}, ["file_url", "is_private"], as_dict=1) - file_args = { - "file_url": attach.file_url, - "is_private": attach.is_private, - } - elif isinstance(a, dict) and "fcontent" in a and "fname" in a: - # dict returned by frappe.attach_print() - file_args = { - "file_name": a["fname"], - "content": a["fcontent"], - "is_private": 1, - } - else: - continue + :param name: Comment name + :param attachments: File names or dicts with keys "fname" and "fcontent" + """ + # loop through attachments + for a in attachments: + if isinstance(a, str): + attach = frappe.db.get_value( + "File", {"name": a}, ["file_url", "is_private"], as_dict=1 + ) + file_args = { + "file_url": attach.file_url, + "is_private": attach.is_private, + } + elif isinstance(a, dict) and "fcontent" in a and "fname" in a: + # dict returned by frappe.attach_print() + file_args = { + "file_name": a["fname"], + "content": a["fcontent"], + "is_private": 1, + } + else: + continue - file_args.update( - { - "attached_to_doctype": "Comment", - "attached_to_name": name, - "folder": "Home/Attachments", - } - ) + file_args.update( + { + "attached_to_doctype": "Comment", + "attached_to_name": name, + "folder": "Home/Attachments", + } + ) - _file = frappe.new_doc("File") - _file.update(file_args) - _file.save(ignore_permissions=True) \ No newline at end of file + _file = frappe.new_doc("File") + _file.update(file_args) + _file.save(ignore_permissions=True) diff --git a/crm/api/todo.py b/crm/api/todo.py index f30e19f41..dc9dcf28b 100644 --- a/crm/api/todo.py +++ b/crm/api/todo.py @@ -2,102 +2,131 @@ from frappe import _ from crm.fcrm.doctype.crm_notification.crm_notification import notify_user + def after_insert(doc, method): - if doc.reference_type in ["CRM Lead", "CRM Deal"] and doc.reference_name and doc.allocated_to: - fieldname = "lead_owner" if doc.reference_type == "CRM Lead" else "deal_owner" - lead_owner = frappe.db.get_value(doc.reference_type, doc.reference_name, fieldname) - if not lead_owner: - frappe.db.set_value(doc.reference_type, doc.reference_name, fieldname, doc.allocated_to) + if ( + doc.reference_type in ["CRM Lead", "CRM Deal"] + and doc.reference_name + and doc.allocated_to + ): + fieldname = "lead_owner" if doc.reference_type == "CRM Lead" else "deal_owner" + lead_owner = frappe.db.get_value( + doc.reference_type, doc.reference_name, fieldname + ) + if not lead_owner: + frappe.db.set_value( + doc.reference_type, doc.reference_name, fieldname, doc.allocated_to + ) + + if ( + doc.reference_type in ["CRM Lead", "CRM Deal", "CRM Task"] + and doc.reference_name + and doc.allocated_to + ): + notify_assigned_user(doc) - if doc.reference_type in ["CRM Lead", "CRM Deal", "CRM Task"] and doc.reference_name and doc.allocated_to: - notify_assigned_user(doc) def on_update(doc, method): - if doc.has_value_changed("status") and doc.status == "Cancelled" and doc.reference_type in ["CRM Lead", "CRM Deal", "CRM Task"] and doc.reference_name and doc.allocated_to: - notify_assigned_user(doc, is_cancelled=True) + if ( + doc.has_value_changed("status") + and doc.status == "Cancelled" + and doc.reference_type in ["CRM Lead", "CRM Deal", "CRM Task"] + and doc.reference_name + and doc.allocated_to + ): + notify_assigned_user(doc, is_cancelled=True) + def notify_assigned_user(doc, is_cancelled=False): - _doc = frappe.get_doc(doc.reference_type, doc.reference_name) - owner = frappe.get_cached_value("User", frappe.session.user, "full_name") - notification_text = get_notification_text(owner, doc, _doc, is_cancelled) - - message = _("Your assignment on {0} {1} has been removed by {2}").format( - doc.reference_type, - doc.reference_name, - owner - ) if is_cancelled else _("{0} assigned a {1} {2} to you").format( - owner, - doc.reference_type, - doc.reference_name - ) - - redirect_to_doctype, redirect_to_name = get_redirect_to_doc(doc) - - notify_user({ - "owner": frappe.session.user, - "assigned_to": doc.allocated_to, - "notification_type": "Assignment", - "message": message, - "notification_text": notification_text, - "reference_doctype": doc.reference_type, - "reference_docname": doc.reference_name, - "redirect_to_doctype": redirect_to_doctype, - "redirect_to_docname": redirect_to_name, - }) + _doc = frappe.get_doc(doc.reference_type, doc.reference_name) + owner = frappe.get_cached_value("User", frappe.session.user, "full_name") + notification_text = get_notification_text(owner, doc, _doc, is_cancelled) + + message = ( + _("Your assignment on {0} {1} has been removed by {2}").format( + doc.reference_type, doc.reference_name, owner + ) + if is_cancelled + else _("{0} assigned a {1} {2} to you").format( + owner, doc.reference_type, doc.reference_name + ) + ) + + redirect_to_doctype, redirect_to_name = get_redirect_to_doc(doc) + + notify_user( + { + "owner": frappe.session.user, + "assigned_to": doc.allocated_to, + "notification_type": "Assignment", + "message": message, + "notification_text": notification_text, + "reference_doctype": doc.reference_type, + "reference_docname": doc.reference_name, + "redirect_to_doctype": redirect_to_doctype, + "redirect_to_docname": redirect_to_name, + } + ) + def get_notification_text(owner, doc, reference_doc, is_cancelled=False): - name = doc.reference_name - doctype = doc.reference_type - - if doctype.startswith("CRM "): - doctype = doctype[4:].lower() - - if doctype in ["lead", "deal"]: - name = reference_doc.lead_name or name if doctype == "lead" else reference_doc.organization or reference_doc.lead_name or name - - if is_cancelled: - return f""" -
- { _('Your assignment on {0} {1} has been removed by {2}').format( - doctype, - f'{ name }', - f'{ owner }' - ) } -
- """ - - return f""" -
- { owner } - { _('assigned a {0} {1} to you').format( - doctype, - f'{ name }' - ) } -
- """ - - if doctype == "task": - if is_cancelled: - return f""" -
- { _('Your assignment on task {0} has been removed by {1}').format( - f'{ reference_doc.title }', - f'{ owner }' - ) } -
- """ - return f""" -
- { owner } - { _('assigned a new task {0} to you').format( - f'{ reference_doc.title }' - ) } -
- """ + name = doc.reference_name + doctype = doc.reference_type + + if doctype.startswith("CRM "): + doctype = doctype[4:].lower() + + if doctype in ["lead", "deal"]: + name = ( + reference_doc.lead_name or name + if doctype == "lead" + else reference_doc.organization or reference_doc.lead_name or name + ) + + if is_cancelled: + return f""" +
+ { _('Your assignment on {0} {1} has been removed by {2}').format( + doctype, + f'{ name }', + f'{ owner }' + ) } +
+ """ + + return f""" +
+ { owner } + { _('assigned a {0} {1} to you').format( + doctype, + f'{ name }' + ) } +
+ """ + + if doctype == "task": + if is_cancelled: + return f""" +
+ { _('Your assignment on task {0} has been removed by {1}').format( + f'{ reference_doc.title }', + f'{ owner }' + ) } +
+ """ + return f""" +
+ { owner } + { _('assigned a new task {0} to you').format( + f'{ reference_doc.title }' + ) } +
+ """ + def get_redirect_to_doc(doc): - if doc.reference_type == "CRM Task": - reference_doc = frappe.get_doc(doc.reference_type, doc.reference_name) - return reference_doc.reference_doctype, reference_doc.reference_docname + if doc.reference_type == "CRM Task": + reference_doc = frappe.get_doc(doc.reference_type, doc.reference_name) + return reference_doc.reference_doctype, reference_doc.reference_docname - return doc.reference_type, doc.reference_name + return doc.reference_type, doc.reference_name diff --git a/crm/api/whatsapp.py b/crm/api/whatsapp.py index a38c11949..3e04b5b62 100644 --- a/crm/api/whatsapp.py +++ b/crm/api/whatsapp.py @@ -30,25 +30,27 @@ def notify_agent(doc): if doctype.startswith("CRM "): doctype = doctype[4:].lower() notification_text = f""" -
- { _('You') } +
+ { _('You') } { _('received a whatsapp message in {0}').format(doctype) } - { doc.reference_name } + { doc.reference_name }
""" assigned_users = get_assigned_users(doc.reference_doctype, doc.reference_name) for user in assigned_users: - notify_user({ - "owner": doc.owner, - "assigned_to": user, - "notification_type": "WhatsApp", - "message": doc.message, - "notification_text": notification_text, - "reference_doctype": "WhatsApp Message", - "reference_docname": doc.name, - "redirect_to_doctype": doc.reference_doctype, - "redirect_to_docname": doc.reference_name, - }) + notify_user( + { + "owner": doc.owner, + "assigned_to": user, + "notification_type": "WhatsApp", + "message": doc.message, + "notification_text": notification_text, + "reference_doctype": "WhatsApp Message", + "reference_docname": doc.name, + "redirect_to_doctype": doc.reference_doctype, + "redirect_to_docname": doc.reference_name, + } + ) def get_lead_or_deal_from_number(number): @@ -92,6 +94,7 @@ def is_whatsapp_enabled(): return False return frappe.get_cached_value("WhatsApp Settings", "WhatsApp Settings", "enabled") + @frappe.whitelist() def is_whatsapp_installed(): if not frappe.db.exists("DocType", "WhatsApp Settings"): @@ -105,8 +108,8 @@ def get_whatsapp_messages(reference_doctype, reference_name): return [] messages = [] - if reference_doctype == 'CRM Deal': - lead = frappe.db.get_value(reference_doctype, reference_name, 'lead') + if reference_doctype == "CRM Deal": + lead = frappe.db.get_value(reference_doctype, reference_name, "lead") if lead: messages = frappe.get_all( "WhatsApp Message", diff --git a/frappe-ui b/frappe-ui index 594157546..82150c959 160000 --- a/frappe-ui +++ b/frappe-ui @@ -1 +1 @@ -Subproject commit 59415754663693989ae5144b43370f4b0426aa50 +Subproject commit 82150c9591a36abc5dc8667ae5873651d4b2cc0d diff --git a/frontend/package.json b/frontend/package.json index d4d3ce6fa..d354e80b3 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.81", + "frappe-ui": "^0.1.86", "gemoji": "^8.1.0", "lodash": "^4.17.21", "mime": "^4.0.1", diff --git a/frontend/src/assets/Inter/Inter-Black.woff b/frontend/src/assets/Inter/Inter-Black.woff deleted file mode 100644 index c7737ed3d..000000000 Binary files a/frontend/src/assets/Inter/Inter-Black.woff and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter-Black.woff2 b/frontend/src/assets/Inter/Inter-Black.woff2 deleted file mode 100644 index b16b995be..000000000 Binary files a/frontend/src/assets/Inter/Inter-Black.woff2 and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter-BlackItalic.woff b/frontend/src/assets/Inter/Inter-BlackItalic.woff deleted file mode 100644 index b5f144764..000000000 Binary files a/frontend/src/assets/Inter/Inter-BlackItalic.woff and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter-BlackItalic.woff2 b/frontend/src/assets/Inter/Inter-BlackItalic.woff2 deleted file mode 100644 index a3f1b70cd..000000000 Binary files a/frontend/src/assets/Inter/Inter-BlackItalic.woff2 and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter-Bold.woff b/frontend/src/assets/Inter/Inter-Bold.woff deleted file mode 100644 index e38455587..000000000 Binary files a/frontend/src/assets/Inter/Inter-Bold.woff and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter-Bold.woff2 b/frontend/src/assets/Inter/Inter-Bold.woff2 deleted file mode 100644 index 835dd4977..000000000 Binary files a/frontend/src/assets/Inter/Inter-Bold.woff2 and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter-BoldItalic.woff b/frontend/src/assets/Inter/Inter-BoldItalic.woff deleted file mode 100644 index ffac3f59b..000000000 Binary files a/frontend/src/assets/Inter/Inter-BoldItalic.woff and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter-BoldItalic.woff2 b/frontend/src/assets/Inter/Inter-BoldItalic.woff2 deleted file mode 100644 index 1a41a14ff..000000000 Binary files a/frontend/src/assets/Inter/Inter-BoldItalic.woff2 and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter-ExtraBold.woff b/frontend/src/assets/Inter/Inter-ExtraBold.woff deleted file mode 100644 index 885ac94fb..000000000 Binary files a/frontend/src/assets/Inter/Inter-ExtraBold.woff and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter-ExtraBold.woff2 b/frontend/src/assets/Inter/Inter-ExtraBold.woff2 deleted file mode 100644 index ae956b150..000000000 Binary files a/frontend/src/assets/Inter/Inter-ExtraBold.woff2 and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter-ExtraBoldItalic.woff b/frontend/src/assets/Inter/Inter-ExtraBoldItalic.woff deleted file mode 100644 index d6cf86233..000000000 Binary files a/frontend/src/assets/Inter/Inter-ExtraBoldItalic.woff and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter-ExtraBoldItalic.woff2 b/frontend/src/assets/Inter/Inter-ExtraBoldItalic.woff2 deleted file mode 100644 index 86578995d..000000000 Binary files a/frontend/src/assets/Inter/Inter-ExtraBoldItalic.woff2 and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter-ExtraLight.woff b/frontend/src/assets/Inter/Inter-ExtraLight.woff deleted file mode 100644 index ff7691932..000000000 Binary files a/frontend/src/assets/Inter/Inter-ExtraLight.woff and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter-ExtraLight.woff2 b/frontend/src/assets/Inter/Inter-ExtraLight.woff2 deleted file mode 100644 index 694b2df9f..000000000 Binary files a/frontend/src/assets/Inter/Inter-ExtraLight.woff2 and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter-ExtraLightItalic.woff b/frontend/src/assets/Inter/Inter-ExtraLightItalic.woff deleted file mode 100644 index c6ed13a4f..000000000 Binary files a/frontend/src/assets/Inter/Inter-ExtraLightItalic.woff and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter-ExtraLightItalic.woff2 b/frontend/src/assets/Inter/Inter-ExtraLightItalic.woff2 deleted file mode 100644 index 9a7bd1109..000000000 Binary files a/frontend/src/assets/Inter/Inter-ExtraLightItalic.woff2 and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter-Italic.woff b/frontend/src/assets/Inter/Inter-Italic.woff deleted file mode 100644 index 4fdb59dc2..000000000 Binary files a/frontend/src/assets/Inter/Inter-Italic.woff and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter-Italic.woff2 b/frontend/src/assets/Inter/Inter-Italic.woff2 deleted file mode 100644 index deca637d8..000000000 Binary files a/frontend/src/assets/Inter/Inter-Italic.woff2 and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter-Light.woff b/frontend/src/assets/Inter/Inter-Light.woff deleted file mode 100644 index 42850acc0..000000000 Binary files a/frontend/src/assets/Inter/Inter-Light.woff and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter-Light.woff2 b/frontend/src/assets/Inter/Inter-Light.woff2 deleted file mode 100644 index 65a7daddd..000000000 Binary files a/frontend/src/assets/Inter/Inter-Light.woff2 and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter-LightItalic.woff b/frontend/src/assets/Inter/Inter-LightItalic.woff deleted file mode 100644 index c4ed9a94f..000000000 Binary files a/frontend/src/assets/Inter/Inter-LightItalic.woff and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter-LightItalic.woff2 b/frontend/src/assets/Inter/Inter-LightItalic.woff2 deleted file mode 100644 index 555fc5595..000000000 Binary files a/frontend/src/assets/Inter/Inter-LightItalic.woff2 and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter-Medium.woff b/frontend/src/assets/Inter/Inter-Medium.woff deleted file mode 100644 index 495faef7f..000000000 Binary files a/frontend/src/assets/Inter/Inter-Medium.woff and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter-Medium.woff2 b/frontend/src/assets/Inter/Inter-Medium.woff2 deleted file mode 100644 index 871ce4ce5..000000000 Binary files a/frontend/src/assets/Inter/Inter-Medium.woff2 and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter-MediumItalic.woff b/frontend/src/assets/Inter/Inter-MediumItalic.woff deleted file mode 100644 index 389c7a2bf..000000000 Binary files a/frontend/src/assets/Inter/Inter-MediumItalic.woff and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter-MediumItalic.woff2 b/frontend/src/assets/Inter/Inter-MediumItalic.woff2 deleted file mode 100644 index aa8057992..000000000 Binary files a/frontend/src/assets/Inter/Inter-MediumItalic.woff2 and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter-Regular.woff b/frontend/src/assets/Inter/Inter-Regular.woff deleted file mode 100644 index fa7715d12..000000000 Binary files a/frontend/src/assets/Inter/Inter-Regular.woff and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter-Regular.woff2 b/frontend/src/assets/Inter/Inter-Regular.woff2 deleted file mode 100644 index b52dd0a0b..000000000 Binary files a/frontend/src/assets/Inter/Inter-Regular.woff2 and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter-SemiBold.woff b/frontend/src/assets/Inter/Inter-SemiBold.woff deleted file mode 100644 index 18d7749f5..000000000 Binary files a/frontend/src/assets/Inter/Inter-SemiBold.woff and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter-SemiBold.woff2 b/frontend/src/assets/Inter/Inter-SemiBold.woff2 deleted file mode 100644 index ece5204a1..000000000 Binary files a/frontend/src/assets/Inter/Inter-SemiBold.woff2 and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter-SemiBoldItalic.woff b/frontend/src/assets/Inter/Inter-SemiBoldItalic.woff deleted file mode 100644 index 8ee64396a..000000000 Binary files a/frontend/src/assets/Inter/Inter-SemiBoldItalic.woff and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter-SemiBoldItalic.woff2 b/frontend/src/assets/Inter/Inter-SemiBoldItalic.woff2 deleted file mode 100644 index b32c0ba3b..000000000 Binary files a/frontend/src/assets/Inter/Inter-SemiBoldItalic.woff2 and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter-Thin.woff b/frontend/src/assets/Inter/Inter-Thin.woff deleted file mode 100644 index 1a22286f6..000000000 Binary files a/frontend/src/assets/Inter/Inter-Thin.woff and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter-Thin.woff2 b/frontend/src/assets/Inter/Inter-Thin.woff2 deleted file mode 100644 index c56bc7ca6..000000000 Binary files a/frontend/src/assets/Inter/Inter-Thin.woff2 and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter-ThinItalic.woff b/frontend/src/assets/Inter/Inter-ThinItalic.woff deleted file mode 100644 index d8ec8373a..000000000 Binary files a/frontend/src/assets/Inter/Inter-ThinItalic.woff and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter-ThinItalic.woff2 b/frontend/src/assets/Inter/Inter-ThinItalic.woff2 deleted file mode 100644 index eca5608c0..000000000 Binary files a/frontend/src/assets/Inter/Inter-ThinItalic.woff2 and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter-italic.var.woff2 b/frontend/src/assets/Inter/Inter-italic.var.woff2 deleted file mode 100644 index 1f5d92611..000000000 Binary files a/frontend/src/assets/Inter/Inter-italic.var.woff2 and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter-roman.var.woff2 b/frontend/src/assets/Inter/Inter-roman.var.woff2 deleted file mode 100644 index 05621d8d1..000000000 Binary files a/frontend/src/assets/Inter/Inter-roman.var.woff2 and /dev/null differ diff --git a/frontend/src/assets/Inter/Inter.var.woff2 b/frontend/src/assets/Inter/Inter.var.woff2 deleted file mode 100644 index 46bb51539..000000000 Binary files a/frontend/src/assets/Inter/Inter.var.woff2 and /dev/null differ diff --git a/frontend/src/assets/Inter/inter.css b/frontend/src/assets/Inter/inter.css deleted file mode 100644 index 3ca1bbf65..000000000 --- a/frontend/src/assets/Inter/inter.css +++ /dev/null @@ -1,152 +0,0 @@ -@font-face { - font-family: 'Inter'; - font-style: normal; - font-weight: 100; - font-display: swap; - src: url("Inter-Thin.woff2?v=3.12") format("woff2"), - url("Inter-Thin.woff?v=3.12") format("woff"); -} -@font-face { - font-family: 'Inter'; - font-style: italic; - font-weight: 100; - font-display: swap; - src: url("Inter-ThinItalic.woff2?v=3.12") format("woff2"), - url("Inter-ThinItalic.woff?v=3.12") format("woff"); -} - -@font-face { - font-family: 'Inter'; - font-style: normal; - font-weight: 200; - font-display: swap; - src: url("Inter-ExtraLight.woff2?v=3.12") format("woff2"), - url("Inter-ExtraLight.woff?v=3.12") format("woff"); -} -@font-face { - font-family: 'Inter'; - font-style: italic; - font-weight: 200; - font-display: swap; - src: url("Inter-ExtraLightItalic.woff2?v=3.12") format("woff2"), - url("Inter-ExtraLightItalic.woff?v=3.12") format("woff"); -} - -@font-face { - font-family: 'Inter'; - font-style: normal; - font-weight: 300; - font-display: swap; - src: url("Inter-Light.woff2?v=3.12") format("woff2"), - url("Inter-Light.woff?v=3.12") format("woff"); -} -@font-face { - font-family: 'Inter'; - font-style: italic; - font-weight: 300; - font-display: swap; - src: url("Inter-LightItalic.woff2?v=3.12") format("woff2"), - url("Inter-LightItalic.woff?v=3.12") format("woff"); -} - -@font-face { - font-family: 'Inter'; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url("Inter-Regular.woff2?v=3.12") format("woff2"), - url("Inter-Regular.woff?v=3.12") format("woff"); -} -@font-face { - font-family: 'Inter'; - font-style: italic; - font-weight: 400; - font-display: swap; - src: url("Inter-Italic.woff2?v=3.12") format("woff2"), - url("Inter-Italic.woff?v=3.12") format("woff"); -} - -@font-face { - font-family: 'Inter'; - font-style: normal; - font-weight: 500; - font-display: swap; - src: url("Inter-Medium.woff2?v=3.12") format("woff2"), - url("Inter-Medium.woff?v=3.12") format("woff"); -} -@font-face { - font-family: 'Inter'; - font-style: italic; - font-weight: 500; - font-display: swap; - src: url("Inter-MediumItalic.woff2?v=3.12") format("woff2"), - url("Inter-MediumItalic.woff?v=3.12") format("woff"); -} - -@font-face { - font-family: 'Inter'; - font-style: normal; - font-weight: 600; - font-display: swap; - src: url("Inter-SemiBold.woff2?v=3.12") format("woff2"), - url("Inter-SemiBold.woff?v=3.12") format("woff"); -} -@font-face { - font-family: 'Inter'; - font-style: italic; - font-weight: 600; - font-display: swap; - src: url("Inter-SemiBoldItalic.woff2?v=3.12") format("woff2"), - url("Inter-SemiBoldItalic.woff?v=3.12") format("woff"); -} - -@font-face { - font-family: 'Inter'; - font-style: normal; - font-weight: 700; - font-display: swap; - src: url("Inter-Bold.woff2?v=3.12") format("woff2"), - url("Inter-Bold.woff?v=3.12") format("woff"); -} -@font-face { - font-family: 'Inter'; - font-style: italic; - font-weight: 700; - font-display: swap; - src: url("Inter-BoldItalic.woff2?v=3.12") format("woff2"), - url("Inter-BoldItalic.woff?v=3.12") format("woff"); -} - -@font-face { - font-family: 'Inter'; - font-style: normal; - font-weight: 800; - font-display: swap; - src: url("Inter-ExtraBold.woff2?v=3.12") format("woff2"), - url("Inter-ExtraBold.woff?v=3.12") format("woff"); -} -@font-face { - font-family: 'Inter'; - font-style: italic; - font-weight: 800; - font-display: swap; - src: url("Inter-ExtraBoldItalic.woff2?v=3.12") format("woff2"), - url("Inter-ExtraBoldItalic.woff?v=3.12") format("woff"); -} - -@font-face { - font-family: 'Inter'; - font-style: normal; - font-weight: 900; - font-display: swap; - src: url("Inter-Black.woff2?v=3.12") format("woff2"), - url("Inter-Black.woff?v=3.12") format("woff"); -} -@font-face { - font-family: 'Inter'; - font-style: italic; - font-weight: 900; - font-display: swap; - src: url("Inter-BlackItalic.woff2?v=3.12") format("woff2"), - url("Inter-BlackItalic.woff?v=3.12") format("woff"); -} diff --git a/frontend/src/components/Activities/Activities.vue b/frontend/src/components/Activities/Activities.vue index 2a3f3dd67..a7e434e9b 100644 --- a/frontend/src/components/Activities/Activities.vue +++ b/frontend/src/components/Activities/Activities.vue @@ -16,7 +16,7 @@ >
{{ __('Loading...') }} @@ -50,13 +50,13 @@ class="activity grid grid-cols-[30px_minmax(auto,_1fr)] gap-2 px-3 sm:gap-4 sm:px-10" >
- +
@@ -72,15 +72,15 @@ class="activity grid grid-cols-[30px_minmax(auto,_1fr)] gap-4 px-3 sm:px-10" >
@@ -185,10 +185,10 @@ >
{{ activity.owner_name }} - {{ __(activity.data.type) }} + {{ __(activity.data.type) }}
-
+
{{ __(timeAgo(activity.creation)) }}
@@ -225,7 +225,7 @@
{{ activity.show_others ? __('Hide') : __('Show') }} +{{ activity.other_versions.length + 1 }} @@ -243,22 +243,22 @@
- + {{ activity.owner_name }} {{ __(activity.type) }} {{ __(activity.data.field_label) }} {{ __(activity.value) }}
{{ __('to') }}
-
+
{{ __(timeAgo(activity.creation)) }}
@@ -305,23 +305,23 @@ v-for="activity in [activity, ...activity.other_versions]" class="flex items-start justify-stretch gap-2 py-1.5 text-base" > -
+
{{ __(activity.data.field_label) }} {{ startCase(__(activity.type)) }}
{{ __('to') }}
-
+
{{ __(timeAgo(activity.creation)) }}
@@ -368,7 +368,7 @@
{{ __(emptyText) }} @@ -758,7 +758,7 @@ const emptyTextIcon = computed(() => { } else if (title.value == 'WhatsApp') { icon = WhatsAppIcon } - return h(icon, { class: 'text-gray-500' }) + return h(icon, { class: 'text-ink-gray-4' }) }) function timelineIcon(activity_type, is_lead) { diff --git a/frontend/src/components/Activities/ActivityHeader.vue b/frontend/src/components/Activities/ActivityHeader.vue index 9f734d4ee..de7b812af 100644 --- a/frontend/src/components/Activities/ActivityHeader.vue +++ b/frontend/src/components/Activities/ActivityHeader.vue @@ -2,7 +2,7 @@
-
+
{{ __(title) }}
@@ -60,7 +60,7 @@ class="!size-5" @click.stop="() => deleteAttachment(attachment.name)" > - +
@@ -68,7 +68,7 @@
diff --git a/frontend/src/components/Activities/AudioPlayer.vue b/frontend/src/components/Activities/AudioPlayer.vue index 8ede3c026..2841e5bbc 100644 --- a/frontend/src/components/Activities/AudioPlayer.vue +++ b/frontend/src/components/Activities/AudioPlayer.vue @@ -1,15 +1,15 @@