diff --git a/crm/fcrm/doctype/crm_view_settings/crm_view_settings.json b/crm/fcrm/doctype/crm_view_settings/crm_view_settings.json index e0ac969d..3da7ac69 100644 --- a/crm/fcrm/doctype/crm_view_settings/crm_view_settings.json +++ b/crm/fcrm/doctype/crm_view_settings/crm_view_settings.json @@ -6,6 +6,7 @@ "engine": "InnoDB", "field_order": [ "label", + "icon", "user", "is_default", "column_break_zacm", @@ -111,11 +112,16 @@ "fieldname": "is_default", "fieldtype": "Check", "label": "Is Default" + }, + { + "fieldname": "icon", + "fieldtype": "Data", + "label": "Icon" } ], "index_web_pages_for_search": 1, "links": [], - "modified": "2024-02-03 18:38:09.412745", + "modified": "2024-05-20 17:24:18.662389", "modified_by": "Administrator", "module": "FCRM", "name": "CRM View Settings", diff --git a/crm/fcrm/doctype/crm_view_settings/crm_view_settings.py b/crm/fcrm/doctype/crm_view_settings/crm_view_settings.py index f7792250..c560b94e 100644 --- a/crm/fcrm/doctype/crm_view_settings/crm_view_settings.py +++ b/crm/fcrm/doctype/crm_view_settings/crm_view_settings.py @@ -27,6 +27,7 @@ def create(view): doc = frappe.new_doc("CRM View Settings") doc.name = view.label doc.label = view.label + doc.icon = view.icon doc.dt = view.doctype doc.user = frappe.session.user doc.route_name = view.route_name or "" @@ -52,6 +53,7 @@ def update(view): doc = frappe.get_doc("CRM View Settings", view.name) doc.label = view.label + doc.icon = view.icon doc.route_name = view.route_name or "" doc.load_default_columns = view.load_default_columns or False doc.filters = json.dumps(filters) diff --git a/frontend/src/components/Filter.vue b/frontend/src/components/Filter.vue index 2f83f434..077e3d0b 100644 --- a/frontend/src/components/Filter.vue +++ b/frontend/src/components/Filter.vue @@ -18,7 +18,7 @@ @@ -423,7 +423,7 @@ function removeFilter(index) { function clearfilter(close) { filters.value.clear() apply() - close() + close && close() } function updateValue(value, filter) { diff --git a/frontend/src/components/IconPicker.vue b/frontend/src/components/IconPicker.vue index c1249d25..29fee1b7 100644 --- a/frontend/src/components/IconPicker.vue +++ b/frontend/src/components/IconPicker.vue @@ -66,7 +66,7 @@ diff --git a/frontend/src/components/Layouts/AppSidebar.vue b/frontend/src/components/Layouts/AppSidebar.vue index 890a53fd..dde14d02 100644 --- a/frontend/src/components/Layouts/AppSidebar.vue +++ b/frontend/src/components/Layouts/AppSidebar.vue @@ -115,7 +115,7 @@ import { viewsStore } from '@/stores/views' import { notificationsStore } from '@/stores/notifications' import { FeatherIcon } from 'frappe-ui' import { useStorage } from '@vueuse/core' -import { computed } from 'vue' +import { computed, h } from 'vue' const { getPinnedViews, getPublicViews } = viewsStore() const { toggle: toggleNotificationPanel } = notificationsStore() @@ -196,7 +196,7 @@ function parseView(views) { return views.map((view) => { return { label: view.label, - icon: getIcon(view.route_name), + icon: getIcon(view.route_name, view.icon), to: { name: view.route_name, query: { view: view.name }, @@ -205,7 +205,9 @@ function parseView(views) { }) } -function getIcon(routeName) { +function getIcon(routeName, icon) { + if (icon) return h('div', { class: 'size-auto' }, icon) + switch (routeName) { case 'Leads': return LeadsIcon diff --git a/frontend/src/components/Modals/ViewModal.vue b/frontend/src/components/Modals/ViewModal.vue index 0f3ac126..5ac333c0 100644 --- a/frontend/src/components/Modals/ViewModal.vue +++ b/frontend/src/components/Modals/ViewModal.vue @@ -21,20 +21,35 @@ }" > - + + {{ __('View Name') }} + + + + + + +