diff --git a/app/javascript/dashboard/i18n/locale/en/labelsMgmt.json b/app/javascript/dashboard/i18n/locale/en/labelsMgmt.json
index cb98993bd..a24266fb4 100644
--- a/app/javascript/dashboard/i18n/locale/en/labelsMgmt.json
+++ b/app/javascript/dashboard/i18n/locale/en/labelsMgmt.json
@@ -3,13 +3,18 @@
"HEADER": "Labels",
"HEADER_BTN_TXT": "Add label",
"LOADING": "Fetching labels",
+ "DESCRIPTION": "Labels help you categorize and prioritize conversations and leads. You can assign a label to a conversation or contact using the side panel.",
+ "LEARN_MORE": "Learn more about labels",
"SEARCH_404": "There are no items matching this query",
- "SIDEBAR_TXT": "
Labels
Labels help you to categorize conversations and prioritize them. You can assign label to a conversation from the sidepanel.
Labels are tied to the account and can be used to create custom workflows in your organization. You can assign custom color to a label, it makes it easier to identify the label. You will be able to display the label on the sidebar to filter the conversations easily.
",
"LIST": {
"404": "There are no labels available in this account.",
"TITLE": "Manage labels",
"DESC": "Labels let you group the conversations together.",
- "TABLE_HEADER": ["Name", "Description", "Color"]
+ "TABLE_HEADER": [
+ "Name",
+ "Description",
+ "Color"
+ ]
},
"FORM": {
"NAME": {
diff --git a/app/javascript/dashboard/i18n/locale/en/teamsSettings.json b/app/javascript/dashboard/i18n/locale/en/teamsSettings.json
index c39c03569..6cbe55032 100644
--- a/app/javascript/dashboard/i18n/locale/en/teamsSettings.json
+++ b/app/javascript/dashboard/i18n/locale/en/teamsSettings.json
@@ -7,7 +7,8 @@
"LEARN_MORE": "Learn more about teams",
"LIST": {
"404": "There are no teams created on this account.",
- "EDIT_TEAM": "Edit team"
+ "EDIT_TEAM": "Edit team",
+ "NONE": "None"
},
"CREATE_FLOW": {
"CREATE": {
diff --git a/app/javascript/dashboard/mixins/conversation/teamMixin.js b/app/javascript/dashboard/mixins/conversation/teamMixin.js
deleted file mode 100644
index 745f91589..000000000
--- a/app/javascript/dashboard/mixins/conversation/teamMixin.js
+++ /dev/null
@@ -1,22 +0,0 @@
-import { mapGetters } from 'vuex';
-
-export default {
- computed: {
- ...mapGetters({ teams: 'teams/getTeams' }),
- hasAnAssignedTeam() {
- return !!this.currentChat?.meta?.team;
- },
- teamsList() {
- if (this.hasAnAssignedTeam) {
- return [
- {
- id: 0,
- name: 'None',
- },
- ...this.teams,
- ];
- }
- return this.teams;
- },
- },
-};
diff --git a/app/javascript/dashboard/routes/dashboard/commands/commandbar.vue b/app/javascript/dashboard/routes/dashboard/commands/commandbar.vue
index dff1f53f4..136295228 100644
--- a/app/javascript/dashboard/routes/dashboard/commands/commandbar.vue
+++ b/app/javascript/dashboard/routes/dashboard/commands/commandbar.vue
@@ -8,7 +8,6 @@ import goToCommandHotKeys from './goToCommandHotKeys';
import appearanceHotKeys from './appearanceHotKeys';
import agentMixin from 'dashboard/mixins/agentMixin';
import conversationLabelMixin from 'dashboard/mixins/conversation/labelMixin';
-import conversationTeamMixin from 'dashboard/mixins/conversation/teamMixin';
import { GENERAL_EVENTS } from '../../../helper/AnalyticsHelper/events';
export default {
@@ -18,7 +17,6 @@ export default {
bulkActionsHotKeysMixin,
inboxHotKeysMixin,
conversationLabelMixin,
- conversationTeamMixin,
appearanceHotKeys,
goToCommandHotKeys,
],
diff --git a/app/javascript/dashboard/routes/dashboard/commands/conversationHotKeys.js b/app/javascript/dashboard/routes/dashboard/commands/conversationHotKeys.js
index 9c4a638b6..c680788fd 100644
--- a/app/javascript/dashboard/routes/dashboard/commands/conversationHotKeys.js
+++ b/app/javascript/dashboard/routes/dashboard/commands/conversationHotKeys.js
@@ -65,6 +65,7 @@ export default {
currentChat: 'getSelectedChat',
replyMode: 'draftMessages/getReplyEditorMode',
contextMenuChatId: 'getContextMenuChatId',
+ teams: 'teams/getTeams',
}),
draftMessage() {
return this.$store.getters['draftMessages/get'](this.draftKey);
@@ -78,7 +79,18 @@ export default {
conversationId() {
return this.currentChat?.id;
},
-
+ hasAnAssignedTeam() {
+ return !!this.currentChat?.meta?.team;
+ },
+ teamsList() {
+ if (this.hasAnAssignedTeam) {
+ return [
+ { id: 0, name: this.$t('TEAMS_SETTINGS.LIST.NONE') },
+ ...this.teams,
+ ];
+ }
+ return this.teams;
+ },
statusActions() {
const isOpen =
this.currentChat?.status === wootConstants.STATUS_TYPE.OPEN;
diff --git a/app/javascript/dashboard/routes/dashboard/conversation/ConversationAction.vue b/app/javascript/dashboard/routes/dashboard/conversation/ConversationAction.vue
index 96b30d1fd..d718d3598 100644
--- a/app/javascript/dashboard/routes/dashboard/conversation/ConversationAction.vue
+++ b/app/javascript/dashboard/routes/dashboard/conversation/ConversationAction.vue
@@ -6,7 +6,6 @@ import ContactDetailsItem from './ContactDetailsItem.vue';
import MultiselectDropdown from 'shared/components/ui/MultiselectDropdown.vue';
import ConversationLabels from './labels/LabelBox.vue';
import agentMixin from 'dashboard/mixins/agentMixin';
-import teamMixin from 'dashboard/mixins/conversation/teamMixin';
import { CONVERSATION_PRIORITY } from '../../../../shared/constants/messages';
import { CONVERSATION_EVENTS } from '../../../helper/AnalyticsHelper/events';
@@ -16,7 +15,7 @@ export default {
MultiselectDropdown,
ConversationLabels,
},
- mixins: [agentMixin, teamMixin],
+ mixins: [agentMixin],
props: {
conversationId: {
type: [Number, String],
@@ -65,7 +64,20 @@ export default {
...mapGetters({
currentChat: 'getSelectedChat',
currentUser: 'getCurrentUser',
+ teams: 'teams/getTeams',
}),
+ hasAnAssignedTeam() {
+ return !!this.currentChat?.meta?.team;
+ },
+ teamsList() {
+ if (this.hasAnAssignedTeam) {
+ return [
+ { id: 0, name: this.$t('TEAMS_SETTINGS.LIST.NONE') },
+ ...this.teams,
+ ];
+ }
+ return this.teams;
+ },
assignedAgent: {
get() {
return this.currentChat.meta.assignee;
diff --git a/app/javascript/dashboard/routes/dashboard/settings/SettingsLayout.vue b/app/javascript/dashboard/routes/dashboard/settings/SettingsLayout.vue
index cfe642f54..916f821ad 100644
--- a/app/javascript/dashboard/routes/dashboard/settings/SettingsLayout.vue
+++ b/app/javascript/dashboard/routes/dashboard/settings/SettingsLayout.vue
@@ -4,21 +4,35 @@ defineProps({
type: Boolean,
default: false,
},
+ noRecordsFound: {
+ type: Boolean,
+ default: false,
+ },
loadingMessage: {
type: String,
default: '',
},
+ noRecordsMessage: {
+ type: String,
+ default: '',
+ },
});
-
-
-
-
-
-
+
+
+
+
+ {{ noRecordsMessage }}
+
+
+
+
diff --git a/app/javascript/dashboard/routes/dashboard/settings/labels/Index.vue b/app/javascript/dashboard/routes/dashboard/settings/labels/Index.vue
index 9aed65d00..0fdaf16e8 100644
--- a/app/javascript/dashboard/routes/dashboard/settings/labels/Index.vue
+++ b/app/javascript/dashboard/routes/dashboard/settings/labels/Index.vue
@@ -1,138 +1,137 @@
-
-
-
- {{ $t('LABEL_MGMT.HEADER_BTN_TXT') }}
-
-
-
-
+
+
+
+
+ {{ $t('LABEL_MGMT.HEADER_BTN_TXT') }}
+
+
+
+
+
+
+
+ |
+ {{ thHeader }}
+ |
+
+
- {{ $t('LABEL_MGMT.LIST.404') }}
-
-
-
-
- |
- {{ thHeader }}
- |
-
-
-
- |
- {{
- label.title
- }}
- |
- {{ label.description }} |
-
-
-
- {{ label.color }}
-
- |
-
+ |
+ |
+
+ {{ label.title }}
+
+ |
+ {{ label.description }} |
+
+
+
+ {{ label.color }}
+
+ |
+
+
- |
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
+
-
+
-
-
diff --git a/app/javascript/dashboard/routes/dashboard/settings/labels/labels.routes.js b/app/javascript/dashboard/routes/dashboard/settings/labels/labels.routes.js
index 088c565d0..9f5edc2dd 100644
--- a/app/javascript/dashboard/routes/dashboard/settings/labels/labels.routes.js
+++ b/app/javascript/dashboard/routes/dashboard/settings/labels/labels.routes.js
@@ -1,18 +1,13 @@
import { frontendURL } from '../../../../helper/URLHelper';
-const SettingsContent = () => import('../Wrapper.vue');
+const SettingsWrapper = () => import('../SettingsWrapper.vue');
const Index = () => import('./Index.vue');
export default {
routes: [
{
path: frontendURL('accounts/:accountId/settings/labels'),
- component: SettingsContent,
- props: {
- headerTitle: 'LABEL_MGMT.HEADER',
- icon: 'tag',
- showNewButton: false,
- },
+ component: SettingsWrapper,
children: [
{
path: '',