From 185a122ec754dec6b38cdfb1cfe8dde4784245a1 Mon Sep 17 00:00:00 2001 From: Muhsin Keloth Date: Fri, 6 Sep 2024 13:41:48 +0530 Subject: [PATCH] fix: Contact filter attribute groups (#10080) --- .../widgets/conversation/ConversationAdvancedFilter.vue | 6 +++++- .../dashboard/i18n/locale/en/advancedFilters.json | 3 +++ .../dashboard/i18n/locale/en/contactFilters.json | 3 +++ .../contacts/components/ContactsAdvancedFilters.vue | 6 +++++- app/javascript/shared/composables/useFilter.js | 8 +++++++- 5 files changed, 23 insertions(+), 3 deletions(-) diff --git a/app/javascript/dashboard/components/widgets/conversation/ConversationAdvancedFilter.vue b/app/javascript/dashboard/components/widgets/conversation/ConversationAdvancedFilter.vue index 7bd5fdb13..7de6b1f06 100644 --- a/app/javascript/dashboard/components/widgets/conversation/ConversationAdvancedFilter.vue +++ b/app/javascript/dashboard/components/widgets/conversation/ConversationAdvancedFilter.vue @@ -338,7 +338,11 @@ export default { :show-query-operator="i !== appliedFilters.length - 1" :show-user-input="showUserInput(appliedFilters[i].filter_operator)" grouped-filters - :error-message="validationErrors[`filter_${i}`]" + :error-message=" + validationErrors[`filter_${i}`] + ? $t(`CONTACTS_FILTER.ERRORS.VALUE_REQUIRED`) + : '' + " @resetFilter="resetFilter(i, appliedFilters[i])" @removeFilter="removeFilter(i)" /> diff --git a/app/javascript/dashboard/i18n/locale/en/advancedFilters.json b/app/javascript/dashboard/i18n/locale/en/advancedFilters.json index 564bd161b..a382aec2e 100644 --- a/app/javascript/dashboard/i18n/locale/en/advancedFilters.json +++ b/app/javascript/dashboard/i18n/locale/en/advancedFilters.json @@ -55,6 +55,9 @@ "CREATED_AT": "Created at", "LAST_ACTIVITY": "Last activity" }, + "ERRORS": { + "VALUE_REQUIRED": "Value is required" + }, "GROUPS": { "STANDARD_FILTERS": "Standard filters", "ADDITIONAL_FILTERS": "Additional filters", diff --git a/app/javascript/dashboard/i18n/locale/en/contactFilters.json b/app/javascript/dashboard/i18n/locale/en/contactFilters.json index 02d5dcf89..bb3221c6e 100644 --- a/app/javascript/dashboard/i18n/locale/en/contactFilters.json +++ b/app/javascript/dashboard/i18n/locale/en/contactFilters.json @@ -30,6 +30,9 @@ "is_lesser_than": "Is lesser than", "days_before": "Is x days before" }, + "ERRORS": { + "VALUE_REQUIRED": "Value is required" + }, "ATTRIBUTES": { "NAME": "Name", "EMAIL": "Email", diff --git a/app/javascript/dashboard/routes/dashboard/contacts/components/ContactsAdvancedFilters.vue b/app/javascript/dashboard/routes/dashboard/contacts/components/ContactsAdvancedFilters.vue index 2339f3be7..e07580b0c 100644 --- a/app/javascript/dashboard/routes/dashboard/contacts/components/ContactsAdvancedFilters.vue +++ b/app/javascript/dashboard/routes/dashboard/contacts/components/ContactsAdvancedFilters.vue @@ -308,7 +308,11 @@ export default { :dropdown-values="getDropdownValues(appliedFilters[i].attribute_key)" :show-query-operator="i !== appliedFilters.length - 1" :show-user-input="showUserInput(appliedFilters[i].filter_operator)" - :error-message="validationErrors[`filter_${i}`]" + :error-message=" + validationErrors[`filter_${i}`] + ? $t(`CONTACTS_FILTER.ERRORS.VALUE_REQUIRED`) + : '' + " @resetFilter="resetFilter(i, appliedFilters[i])" @removeFilter="removeFilter(i)" /> diff --git a/app/javascript/shared/composables/useFilter.js b/app/javascript/shared/composables/useFilter.js index 903269ffb..656b76339 100644 --- a/app/javascript/shared/composables/useFilter.js +++ b/app/javascript/shared/composables/useFilter.js @@ -1,7 +1,8 @@ import wootConstants from 'dashboard/constants/globals'; import { useStore } from 'dashboard/composables/store'; import { useI18n } from 'dashboard/composables/useI18n'; -import { filterAttributeGroups } from 'dashboard/components/widgets/conversation/advancedFilterItems'; +import { filterAttributeGroups as conversationFilterAttributeGroups } from 'dashboard/components/widgets/conversation/advancedFilterItems'; +import { filterAttributeGroups as contactFilterAttributeGroups } from 'dashboard/routes/dashboard/contacts/contactFilterItems'; import * as OPERATORS from 'dashboard/components/widgets/FilterInput/FilterOperatorTypes.js'; const customAttributeInputType = key => { @@ -42,6 +43,11 @@ export const useFilter = ({ filteri18nKey, attributeModel }) => { const { t: $t } = useI18n(); const { getters } = useStore(); + const filterAttributeGroups = + attributeModel === 'contact_attribute' + ? contactFilterAttributeGroups + : conversationFilterAttributeGroups; + const setFilterAttributes = () => { const allCustomAttributes = getters['attributes/getAttributesByModel'](attributeModel);