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: '', + }, }); 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 @@ - - - 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: '',