diff --git a/frontend/src/components/NewDeal.vue b/frontend/src/components/NewDeal.vue index b9d3b324..95f6d225 100644 --- a/frontend/src/components/NewDeal.vue +++ b/frontend/src/components/NewDeal.vue @@ -11,7 +11,9 @@ v-model="newDeal[field.name]" > - - - diff --git a/frontend/src/components/NewLead.vue b/frontend/src/components/NewLead.vue index 79c21dc9..05ccf6ca 100644 --- a/frontend/src/components/NewLead.vue +++ b/frontend/src/components/NewLead.vue @@ -11,7 +11,7 @@ v-model="newLead[field.name]" > - - - diff --git a/frontend/src/pages/Contact.vue b/frontend/src/pages/Contact.vue index d37044a9..9ab75e2b 100644 --- a/frontend/src/pages/Contact.vue +++ b/frontend/src/pages/Contact.vue @@ -390,7 +390,7 @@ function getLeadRowObject(lead) { }, status: { label: lead.status, - color: getLeadStatus(lead.status)?.color, + color: getLeadStatus(lead.status)?.iconColorClass, }, email: lead.email, mobile_no: lead.mobile_no, @@ -415,7 +415,7 @@ function getDealRowObject(deal) { annual_revenue: formatNumberIntoCurrency(deal.annual_revenue), status: { label: deal.status, - color: getDealStatus(deal.status)?.color, + color: getDealStatus(deal.status)?.iconColorClass, }, email: deal.email, mobile_no: deal.mobile_no, diff --git a/frontend/src/pages/Deal.vue b/frontend/src/pages/Deal.vue index 40a74aee..8b72fdd0 100644 --- a/frontend/src/pages/Deal.vue +++ b/frontend/src/pages/Deal.vue @@ -20,14 +20,17 @@ diff --git a/frontend/src/pages/Leads.vue b/frontend/src/pages/Leads.vue index 37684eb6..587d8609 100644 --- a/frontend/src/pages/Leads.vue +++ b/frontend/src/pages/Leads.vue @@ -152,7 +152,7 @@ const rows = computed(() => { } else if (row == 'status') { _rows[row] = { label: lead.status, - color: getLeadStatus(lead.status)?.color, + color: getLeadStatus(lead.status)?.iconColorClass, } } else if (row == 'lead_owner') { _rows[row] = { diff --git a/frontend/src/pages/Organization.vue b/frontend/src/pages/Organization.vue index 87810ba9..41f96d29 100644 --- a/frontend/src/pages/Organization.vue +++ b/frontend/src/pages/Organization.vue @@ -454,7 +454,7 @@ function getLeadRowObject(lead) { }, status: { label: lead.status, - color: getLeadStatus(lead.status)?.color, + color: getLeadStatus(lead.status)?.iconColorClass, }, email: lead.email, mobile_no: lead.mobile_no, @@ -479,7 +479,7 @@ function getDealRowObject(deal) { annual_revenue: formatNumberIntoCurrency(deal.annual_revenue), status: { label: deal.status, - color: getDealStatus(deal.status)?.color, + color: getDealStatus(deal.status)?.iconColorClass, }, email: deal.email, mobile_no: deal.mobile_no, diff --git a/frontend/src/stores/statuses.js b/frontend/src/stores/statuses.js index fc9d840c..e38a8ff1 100644 --- a/frontend/src/stores/statuses.js +++ b/frontend/src/stores/statuses.js @@ -16,10 +16,8 @@ export const statusesStore = defineStore('crm-statuses', () => { auto: true, transform(statuses) { for (let status of statuses) { - status.color = - status.color == 'black' - ? '!text-gray-900' - : `!text-${status.color}-600` + status.colorClass = colorClasses(status.color) + status.iconColorClass = colorClasses(status.color, true) leadStatusesByName[status.name] = status } return statuses @@ -35,16 +33,27 @@ export const statusesStore = defineStore('crm-statuses', () => { auto: true, transform(statuses) { for (let status of statuses) { - status.color = - status.color == 'black' - ? '!text-gray-900' - : `!text-${status.color}-600` + status.colorClass = colorClasses(status.color) + status.iconColorClass = colorClasses(status.color, true) dealStatusesByName[status.name] = status } return statuses }, }) + function colorClasses(color, onlyIcon = false) { + let textColor = `!text-${color}-600` + if (color == 'black') { + textColor = '!text-gray-900' + } else if (['gray', 'green'].includes(color)) { + textColor = `!text-${color}-700` + } + + let bgColor = `!bg-${color}-100 hover:!bg-${color}-200 active:!bg-${color}-300` + + return [textColor, onlyIcon ? '' : bgColor] + } + function getLeadStatus(name) { return leadStatusesByName[name] } @@ -60,7 +69,10 @@ export const statusesStore = defineStore('crm-statuses', () => { for (const status in statusesByName) { options.push({ label: statusesByName[status].name, - icon: () => h(IndicatorIcon, { class: statusesByName[status].color }), + icon: () => + h(IndicatorIcon, { + class: statusesByName[status].iconColorClass, + }), onClick: () => { action && action('status', statusesByName[status].name) }, diff --git a/frontend/tailwind.config.js b/frontend/tailwind.config.js index 704f5c8c..16d3d191 100644 --- a/frontend/tailwind.config.js +++ b/frontend/tailwind.config.js @@ -6,7 +6,7 @@ module.exports = { './node_modules/frappe-ui/src/components/**/*.{vue,js,ts,jsx,tsx}', '../node_modules/frappe-ui/src/components/**/*.{vue,js,ts,jsx,tsx}', ], - safelist: [{ pattern: /!text-/ }], + safelist: [{ pattern: /(!text|!bg|hover:!bg)-/ }], theme: { extend: {}, },