feat: Allow users to create dashboard apps to give agents more context (#4761)

This commit is contained in:
Pranav Raj S 2022-06-01 11:13:10 +05:30 committed by GitHub
parent 55f7be4ffc
commit b9aa4444b3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
26 changed files with 585 additions and 21 deletions

View file

@ -6,7 +6,20 @@
:is-contact-panel-open="isContactPanelOpen"
@contact-panel-toggle="onToggleContactPanel"
/>
<div class="messages-and-sidebar">
<woot-tabs
v-if="dashboardApps.length && currentChat.id"
:index="activeIndex"
class="dashboard-app--tabs"
@change="onDashboardAppTabChange"
>
<woot-tabs-item
v-for="tab in dashboardAppTabs"
:key="tab.key"
:name="tab.name"
:show-badge="false"
/>
</woot-tabs>
<div v-if="!activeIndex" class="messages-and-sidebar">
<messages-view
v-if="currentChat.id"
:inbox-id="inboxId"
@ -14,7 +27,6 @@
@contact-panel-toggle="onToggleContactPanel"
/>
<empty-state v-else />
<div v-show="showContactPanel" class="conversation-sidebar-wrap">
<contact-panel
v-if="showContactPanel"
@ -24,21 +36,29 @@
/>
</div>
</div>
<dashboard-app-frame
v-else
:key="currentChat.id"
:config="dashboardApps[activeIndex - 1].content"
:current-chat="currentChat"
/>
</div>
</template>
<script>
import { mapGetters } from 'vuex';
import ContactPanel from 'dashboard/routes/dashboard/conversation/ContactPanel';
import ConversationHeader from './ConversationHeader';
import DashboardAppFrame from '../DashboardApp/Frame.vue';
import EmptyState from './EmptyState';
import MessagesView from './MessagesView';
export default {
components: {
EmptyState,
MessagesView,
ContactPanel,
ConversationHeader,
DashboardAppFrame,
EmptyState,
MessagesView,
},
props: {
@ -52,8 +72,26 @@ export default {
default: true,
},
},
data() {
return { activeIndex: 0 };
},
computed: {
...mapGetters({ currentChat: 'getSelectedChat' }),
...mapGetters({
currentChat: 'getSelectedChat',
dashboardApps: 'dashboardApps/getRecords',
}),
dashboardAppTabs() {
return [
{
key: 'messages',
name: this.$t('CONVERSATION.DASHBOARD_APP_TAB_MESSAGES'),
},
...this.dashboardApps.map(dashboardApp => ({
key: `dashboard-${dashboardApp.id}`,
name: dashboardApp.title,
})),
];
},
showContactPanel() {
return this.isContactPanelOpen && this.currentChat.id;
},
@ -70,6 +108,7 @@ export default {
},
mounted() {
this.fetchLabels();
this.$store.dispatch('dashboardApps/get');
},
methods: {
fetchLabels() {
@ -81,6 +120,9 @@ export default {
onToggleContactPanel() {
this.$emit('contact-panel-toggle');
},
onDashboardAppTabChange(index) {
this.activeIndex = index;
},
},
};
</script>
@ -96,6 +138,11 @@ export default {
background: var(--color-background-light);
}
.dashboard-app--tabs {
background: var(--white);
margin-top: -1px;
}
.messages-and-sidebar {
display: flex;
background: var(--color-background-light);