fix: apply ESLint rule vue/no-unused-properties

This commit is contained in:
iamsivin
2024-07-29 17:23:56 +05:30
parent 6aa03b3ce1
commit 743cb99d30
97 changed files with 90 additions and 377 deletions
-1
View File
@@ -47,7 +47,6 @@ export default {
...mapGetters({
getAccount: 'accounts/getAccount',
currentUser: 'getCurrentUser',
globalConfig: 'globalConfig/get',
authUIFlags: 'getAuthUIFlags',
accountUIFlags: 'accounts/getUIFlags',
currentAccountId: 'getCurrentAccountId',
@@ -131,20 +131,16 @@ export default {
},
computed: {
...mapGetters({
currentChat: 'getSelectedChat',
currentUser: 'getCurrentUser',
chatLists: 'getAllConversations',
mineChatsList: 'getMineChats',
allChatList: 'getAllStatusChats',
chatListFilters: 'getChatListFilters',
unAssignedChatsList: 'getUnAssignedChats',
chatListLoading: 'getChatListLoadingStatus',
currentUserID: 'getCurrentUserID',
activeInbox: 'getSelectedInbox',
conversationStats: 'conversationStats/getStats',
appliedFilters: 'getAppliedConversationFilters',
folders: 'customViews/getCustomViews',
inboxes: 'inboxes/getInboxes',
agentList: 'agents/getAgents',
teamsList: 'teams/getTeams',
inboxesList: 'inboxes/getInboxes',
@@ -28,7 +28,6 @@ export default {
default: null,
},
regexCue: { type: String, default: null },
regexEnabled: { type: Boolean, default: false },
attributeKey: { type: String, required: true },
contactId: { type: Number, default: null },
},
@@ -6,11 +6,6 @@ export default {
type: Object,
default: () => {},
},
showButton: Boolean,
duration: {
type: [String, Number],
default: 3000,
},
},
data() {
return {
@@ -27,14 +22,14 @@ export default {
<div
class="shadow-sm bg-slate-800 dark:bg-slate-700 rounded-[4px] items-center gap-3 inline-flex mb-2 max-w-[25rem] min-h-[1.875rem] min-w-[15rem] px-6 py-3 text-left"
>
<div class="text-white dark:text-white text-sm font-medium">
<div class="text-sm font-medium text-white dark:text-white">
{{ message }}
</div>
<div v-if="action">
<router-link
v-if="action.type == 'link'"
:to="action.to"
class="text-woot-500 dark:text-woot-500 cursor-pointer font-medium hover:text-woot-600 dark:hover:text-woot-600 select-none"
class="font-medium cursor-pointer select-none text-woot-500 dark:text-woot-500 hover:text-woot-600 dark:hover:text-woot-600"
>
{{ action.message }}
</router-link>
@@ -17,7 +17,6 @@ export default {
WootDropdownMenu,
},
mixins: [keyboardEventListenerMixins],
props: { conversationId: { type: [String, Number], required: true } },
data() {
return {
isLoading: false,
@@ -33,7 +33,6 @@ export default {
computed: {
...mapGetters({
accountId: 'getCurrentAccountId',
currentRole: 'getCurrentRole',
currentUser: 'getCurrentUser',
globalConfig: 'globalConfig/get',
inboxes: 'inboxes/getInboxes',
@@ -4,7 +4,6 @@ import { mapGetters } from 'vuex';
export default {
computed: {
...mapGetters({
accountId: 'getCurrentAccountId',
notificationMetadata: 'notifications/getMeta',
}),
unreadCount() {
@@ -13,10 +13,6 @@ export default {
type: Boolean,
default: false,
},
buttonText: {
type: String,
default: 'Active',
},
src: {
type: String,
default: '',
@@ -40,7 +36,7 @@ export default {
active,
}"
>
<div class="items-center flex font-medium p-1 text-sm">{{ heading }}</div>
<div class="flex items-center p-1 text-sm font-medium">{{ heading }}</div>
<fluent-icon
v-if="active"
icon="checkmark-circle"
@@ -5,7 +5,6 @@ import globalConfigMixin from 'shared/mixins/globalConfigMixin';
export default {
mixins: [globalConfigMixin],
props: {
isFullwidth: Boolean,
items: {
type: Array,
default: () => [],
@@ -51,7 +50,7 @@ export default {
</h3>
<span
v-if="isOver(item)"
class="text-green-500 dark:text-green-500 ml-1"
class="ml-1 text-green-500 dark:text-green-500"
>
<fluent-icon icon="checkmark" />
</span>
@@ -59,7 +58,7 @@ export default {
<span class="step">
{{ items.indexOf(item) + 1 }}
</span>
<p class="text-slate-600 dark:text-slate-300 text-sm m-0 pl-6">
<p class="pl-6 m-0 text-sm text-slate-600 dark:text-slate-300">
{{ item.body }}
</p>
</div>
@@ -34,7 +34,6 @@ export default {
}),
computed: {
...mapGetters({
currentChat: 'getSelectedChat',
isAChatwootInstance: 'globalConfig/isAChatwootInstance',
}),
isAICTAModalDismissed() {
@@ -1,5 +1,4 @@
<script>
import { mapGetters } from 'vuex';
import messageFormatterMixin from 'shared/mixins/messageFormatterMixin';
import AILoader from './AILoader.vue';
import aiMixin from 'dashboard/mixins/aiMixin';
@@ -23,9 +22,6 @@ export default {
};
},
computed: {
...mapGetters({
appIntegrations: 'integrations/getAppIntegrations',
}),
headerTitle() {
const translationKey = this.aiOption?.toUpperCase();
return translationKey
@@ -1,7 +1,6 @@
<script>
import { useVuelidate } from '@vuelidate/core';
import { required } from '@vuelidate/validators';
import { mapGetters } from 'vuex';
import { useAlert } from 'dashboard/composables';
import { useUISettings } from 'dashboard/composables/useUISettings';
import aiMixin from 'dashboard/mixins/aiMixin';
@@ -25,11 +24,6 @@ export default {
required,
},
},
computed: {
...mapGetters({
appIntegrations: 'integrations/getAppIntegrations',
}),
},
methods: {
onClose() {
this.$emit('close');
@@ -6,10 +6,6 @@ export default {
Spinner,
},
props: {
value: {
type: Array,
default: () => [],
},
initialFileName: {
type: String,
default: '',
@@ -13,10 +13,6 @@ export default {
type: String,
default: 'plain_text',
},
dataType: {
type: String,
default: 'plain_text',
},
operators: {
type: Array,
default: () => [],
@@ -7,10 +7,6 @@ const props = defineProps({
type: Number,
default: 1,
},
totalCount: {
type: Number,
default: 0,
},
totalPages: {
type: Number,
default: 0,
@@ -49,10 +49,6 @@ export default {
type: String,
default: AUDIO_FORMATS.WAV,
},
isAWhatsAppChannel: {
type: Boolean,
default: false,
},
},
data() {
return {
@@ -36,6 +36,9 @@ export default {
type: String,
default: '',
},
// inbox prop is used in /mixins/inboxMixin,
// remove this props when refactoring to composable if not needed
// eslint-disable-next-line vue/no-unused-properties
inbox: {
type: Object,
default: () => ({}),
@@ -52,10 +55,6 @@ export default {
type: Function,
default: () => {},
},
showEmojiPicker: {
type: Boolean,
default: false,
},
toggleEmojiPicker: {
type: Function,
default: () => {},
@@ -82,7 +82,6 @@ export default {
currentChat: 'getSelectedChat',
inboxesList: 'inboxes/getInboxes',
activeInbox: 'getSelectedInbox',
currentUser: 'getCurrentUser',
accountId: 'getCurrentAccountId',
}),
bulkActionCheck() {
@@ -44,7 +44,6 @@ export default {
},
computed: {
...mapGetters({
uiFlags: 'inboxAssignableAgents/getUIFlags',
currentChat: 'getSelectedChat',
accountId: 'getCurrentAccountId',
isFeatureEnabledonAccount: 'accounts/isFeatureEnabledonAccount',
@@ -61,10 +61,6 @@ export default {
type: Boolean,
default: false,
},
isWebWidgetInbox: {
type: Boolean,
default: false,
},
isAnEmailInbox: {
type: Boolean,
default: false,
@@ -68,14 +68,8 @@ export default {
computed: {
...mapGetters({
accountId: 'getCurrentAccountId',
currentChat: 'getSelectedChat',
allConversations: 'getAllConversations',
inboxesList: 'inboxes/getInboxes',
listLoadingStatus: 'getAllMessagesLoaded',
loadingChatList: 'getChatListLoadingStatus',
appIntegrations: 'integrations/getAppIntegrations',
isFeatureEnabledonAccount: 'accounts/isFeatureEnabledonAccount',
currentAccountId: 'getCurrentAccountId',
}),
isOpen() {
@@ -126,8 +126,6 @@ export default {
currentUser: 'getCurrentUser',
lastEmail: 'getLastEmailInSelectedChat',
globalConfig: 'globalConfig/get',
accountId: 'getCurrentAccountId',
isFeatureEnabledonAccount: 'accounts/isFeatureEnabledonAccount',
}),
currentContact() {
return this.$store.getters['contacts/getContact'](
@@ -1,7 +1,6 @@
<script>
import { MESSAGE_TYPE, MESSAGE_STATUS } from 'shared/constants/messages';
import inboxMixin from 'shared/mixins/inboxMixin';
import { mapGetters } from 'vuex';
import { messageTimestamp } from 'shared/helpers/timeHelper';
export default {
@@ -51,17 +50,12 @@ export default {
type: String,
default: '',
},
id: {
type: [String, Number],
default: '',
},
inboxId: {
type: [String, Number],
default: 0,
},
},
computed: {
...mapGetters({ currentChat: 'getSelectedChat' }),
inbox() {
return this.$store.getters['inboxes/getInbox'](this.inboxId);
},
@@ -28,7 +28,6 @@ export default {
computed: {
...mapGetters({
uiFlags: 'bulkActions/getUIFlags',
inboxes: 'inboxes/getInboxes',
assignableAgentsUiFlags: 'inboxAssignableAgents/getUIFlags',
}),
filteredAgents() {
@@ -6,14 +6,6 @@ import WootDropdownItem from 'shared/components/ui/dropdown/DropdownItem.vue';
import WootDropdownMenu from 'shared/components/ui/dropdown/DropdownMenu.vue';
const props = defineProps({
selectedInboxes: {
type: Array,
default: () => [],
},
conversationCount: {
type: Number,
default: 0,
},
showResolve: {
type: Boolean,
default: true,
@@ -3,10 +3,16 @@ import conversationLabelMixin from 'dashboard/mixins/conversation/labelMixin';
export default {
mixins: [conversationLabelMixin],
props: {
// conversationId prop is used in /conversation/labelMixin,
// remove this props when refactoring to composable if not needed
// eslint-disable-next-line vue/no-unused-properties
conversationId: {
type: Number,
required: true,
},
// conversationLabels prop is used in /conversation/labelMixin,
// remove this props when refactoring to composable if not needed
// eslint-disable-next-line vue/no-unused-properties
conversationLabels: {
type: String,
required: false,
@@ -9,10 +9,6 @@ import { parseLinearAPIErrorResponse } from 'dashboard/store/utils/api';
import SearchableDropdown from './SearchableDropdown.vue';
const props = defineProps({
accountId: {
type: [Number, String],
required: true,
},
conversationId: {
type: [Number, String],
required: true,
@@ -1,3 +1,4 @@
import { mapGetters } from 'vuex';
import { useAlert } from 'dashboard/composables';
import {
MAXIMUM_FILE_UPLOAD_SIZE,
@@ -7,6 +8,11 @@ import { checkFileSizeLimit } from 'shared/helpers/FileHelper';
import { DirectUpload } from 'activestorage';
export default {
computed: {
...mapGetters({
accountId: 'getCurrentAccountId',
}),
},
methods: {
onFileUpload(file) {
if (this.globalConfig.directUploadsEnabled) {
@@ -1,5 +1,13 @@
import { mapGetters } from 'vuex';
import { PRIORITY_CONDITION_VALUES } from 'dashboard/helper/automationHelper.js';
export default {
computed: {
...mapGetters({
labels: 'labels/getLabels',
teams: 'teams/getTeams',
agents: 'agents/getAgents',
}),
},
methods: {
getDropdownValues(type) {
switch (type) {
@@ -1,18 +1,3 @@
<script>
export default {
props: {
tabs: {
type: Array,
default: () => [],
},
},
data() {
return {};
},
methods: {},
};
</script>
<template>
<div class="search-input-box">
<woot-button
@@ -24,7 +9,7 @@ export default {
<div class="search-input">
<fluent-icon icon="search" size="14px" class="search--icon" />
<span
class="text-ellipsis overflow-hidden whitespace-nowrap search-placeholder"
class="overflow-hidden text-ellipsis whitespace-nowrap search-placeholder"
>
{{ $t('CONVERSATION.SEARCH_MESSAGES') }}
</span>
@@ -23,7 +23,6 @@ export default {
},
...mapGetters({
labelUiFlags: 'contactLabels/getUIFlags',
allLabels: 'labels/getLabels',
}),
},
@@ -33,10 +33,6 @@ export default {
type: Boolean,
default: false,
},
activeContactId: {
type: [String, Number],
default: '',
},
sortParam: {
type: String,
default: 'last_activity_at',
@@ -2,8 +2,6 @@
export default {
props: {
title: { type: String, required: true },
icon: { type: String, default: '' },
emoji: { type: String, default: '' },
value: { type: [String, Number], default: '' },
compact: { type: Boolean, default: false },
},
@@ -13,7 +11,7 @@ export default {
<template>
<div class="overflow-auto" :class="compact ? 'py-0 px-0' : 'py-3 px-4'">
<div class="items-center flex justify-between mb-1.5">
<span class="text-slate-800 font-medium dark:text-slate-100 text-sm">
<span class="text-sm font-medium text-slate-800 dark:text-slate-100">
{{ title }}
</span>
<slot name="button" />
@@ -62,8 +62,6 @@ export default {
computed: {
...mapGetters({
currentChat: 'getSelectedChat',
currentUser: 'getCurrentUser',
uiFlags: 'inboxAssignableAgents/getUIFlags',
}),
conversationAdditionalAttributes() {
return this.currentConversationMetaData.additional_attributes || {};
@@ -22,6 +22,9 @@ export default {
type: [Number, String],
required: true,
},
// inboxId prop is used in /mixins/agentMixin,
// remove this props when refactoring to composable if not needed
// eslint-disable-next-line vue/no-unused-properties
inboxId: {
type: Number,
default: undefined,
@@ -18,6 +18,9 @@ export default {
type: [Number, String],
required: true,
},
// inboxId prop is used in /mixins/agentMixin,
// remove this props when refactoring to composable if not needed
// eslint-disable-next-line vue/no-unused-properties
inboxId: {
type: Number,
default: undefined,
@@ -31,10 +31,6 @@ export default {
type: Object,
default: () => ({}),
},
channelType: {
type: String,
default: '',
},
showAvatar: {
type: Boolean,
default: true,
@@ -11,10 +11,6 @@ export default {
type: Boolean,
default: false,
},
contact: {
type: Object,
default: () => ({}),
},
},
computed: {
@@ -11,10 +11,6 @@ export default {
type: Number,
default: undefined,
},
show: {
type: Boolean,
default: true,
},
},
data() {
return {
@@ -16,6 +16,9 @@ export default {
mixins: [conversationLabelMixin, keyboardEventListenerMixins],
props: {
// conversationId prop is used in /conversation/labelMixin,
// remove this props when refactoring to composable if not needed
// eslint-disable-next-line vue/no-unused-properties
conversationId: {
type: Number,
required: true,
@@ -37,7 +40,6 @@ export default {
computed: {
...mapGetters({
conversationUiFlags: 'conversationLabels/getUIFlags',
labelUiFlags: 'conversationLabels/getUIFlags',
}),
},
methods: {
@@ -14,10 +14,6 @@ export default {
type: Object,
default: () => ({}),
},
isSettingsSidebarOpen: {
type: Boolean,
default: false,
},
},
data() {
return {
@@ -13,10 +13,6 @@ export default {
type: String,
default: 'Untitled',
},
body: {
type: String,
default: '',
},
url: {
type: String,
default: '',
@@ -19,10 +19,6 @@ export default {
type: String,
default: '',
},
portalSlug: {
type: String,
required: true,
},
},
computed: {
showNoResults() {
@@ -27,10 +27,6 @@ export default {
type: Boolean,
default: false,
},
shouldShowAddLocaleButton: {
type: Boolean,
default: false,
},
},
data() {
return {
@@ -55,7 +55,6 @@ export default {
portals: 'portals/allPortals',
categories: 'categories/allCategories',
meta: 'portals/getMeta',
isFetching: 'portals/isFetchingPortals',
isFeatureEnabledonAccount: 'accounts/isFeatureEnabledonAccount',
}),
@@ -31,7 +31,6 @@ export default {
computed: {
...mapGetters({
isFetching: 'articles/isFetching',
articles: 'articles/articles',
}),
article() {
return this.$store.getters['articles/articleById'](this.articleId);
@@ -23,7 +23,6 @@ export default {
...mapGetters({
articles: 'articles/allArticles',
categories: 'categories/allCategories',
uiFlags: 'articles/uiFlags',
meta: 'articles/getMeta',
isFetching: 'articles/isFetching',
currentUserId: 'getCurrentUserID',
@@ -25,7 +25,6 @@ export default {
computed: {
...mapGetters({
currentUserID: 'getCurrentUserID',
articles: 'articles/articles',
categories: 'categories/allCategories',
}),
articleId() {
@@ -1,5 +1,4 @@
<script>
import { mapGetters } from 'vuex';
import globalConfigMixin from 'shared/mixins/globalConfigMixin';
import SettingsHeader from 'dashboard/routes/dashboard/settings/SettingsHeader.vue';
import SettingIntroBanner from 'dashboard/components/widgets/SettingIntroBanner.vue';
@@ -11,9 +10,6 @@ export default {
},
mixins: [globalConfigMixin],
computed: {
...mapGetters({
globalConfig: 'globalConfig/get',
}),
currentPortal() {
const slug = this.$route.params.portalSlug;
if (slug) return this.$store.getters['portals/portalBySlug'](slug);
@@ -22,7 +22,6 @@ export default {
computed: {
...mapGetters({
portals: 'portals/allPortals',
meta: 'portals/getMeta',
isFetching: 'portals/isFetchingPortals',
}),
portalStatus() {
@@ -38,7 +38,6 @@ export default {
},
computed: {
...mapGetters({
accountId: 'getCurrentAccountId',
meta: 'notifications/getMeta',
uiFlags: 'notifications/getUIFlags',
notification: 'notifications/getFilteredNotifications',
@@ -28,7 +28,6 @@ export default {
},
computed: {
...mapGetters({
currentAccountId: 'getCurrentAccountId',
notification: 'notifications/getFilteredNotifications',
currentChat: 'getSelectedChat',
activeNotificationById: 'notifications/getNotificationById',
@@ -17,7 +17,6 @@ export default {
},
computed: {
...mapGetters({
accountId: 'getCurrentAccountId',
meta: 'notifications/getMeta',
records: 'notifications/getNotifications',
uiFlags: 'notifications/getUIFlags',
@@ -139,15 +138,15 @@ export default {
class="flex-col h-[90vh] w-[32.5rem] flex justify-between z-10 rounded-md shadow-md absolute bg-white dark:bg-slate-800 left-14 rtl:left-auto rtl:right-14 m-4"
>
<div
class="flex-row items-center border-b border-solid pt-5 pb-3 px-6 border-slate-50 dark:border-slate-700 w-full flex justify-between"
class="flex flex-row items-center justify-between w-full px-6 pt-5 pb-3 border-b border-solid border-slate-50 dark:border-slate-700"
>
<div class="items-center flex">
<div class="flex items-center">
<span class="text-xl font-bold text-slate-800 dark:text-slate-100">
{{ $t('NOTIFICATIONS_PAGE.UNREAD_NOTIFICATION.TITLE') }}
</span>
<span
v-if="totalUnreadNotifications"
class="py-1 px-2 font-semibold text-slate-700 dark:text-slate-200 rounded-md text-xxs ml-2 mr-2 bg-slate-50 dark:bg-slate-700"
class="px-2 py-1 ml-2 mr-2 font-semibold rounded-md text-slate-700 dark:text-slate-200 text-xxs bg-slate-50 dark:bg-slate-700"
>
{{ totalUnreadNotifications }}
</span>
@@ -188,7 +187,7 @@ export default {
/>
<div
v-if="records.length !== 0"
class="items-center py-1 px-5 flex justify-between"
class="flex items-center justify-between px-5 py-1"
>
<div class="flex">
<woot-button
@@ -214,7 +213,7 @@ export default {
@click="onClickPreviousPage"
/>
</div>
<span class="text-xxs font-semibold text-slate-500 dark:text-slate-400">
<span class="font-semibold text-xxs text-slate-500 dark:text-slate-400">
{{ currentPage }} - {{ lastPage }}
</span>
<div class="flex">
@@ -1,6 +1,4 @@
<script>
import { mapGetters } from 'vuex';
import Spinner from 'shared/components/Spinner.vue';
import EmptyState from 'dashboard/components/widgets/EmptyState.vue';
import NotificationPanelItem from './NotificationPanelItem.vue';
@@ -30,9 +28,6 @@ export default {
},
},
computed: {
...mapGetters({
notificationMetadata: 'notifications/getMeta',
}),
showEmptyResult() {
return !this.isLoading && this.notifications.length === 0;
},
@@ -1,5 +1,4 @@
<script>
import { mapGetters } from 'vuex';
import { useAdmin } from 'dashboard/composables/useAdmin';
import BackButton from '../../../components/widgets/BackButton.vue';
@@ -46,9 +45,6 @@ export default {
};
},
computed: {
...mapGetters({
currentUser: 'getCurrentUser',
}),
iconClass() {
return `icon ${this.icon} header--icon`;
},
@@ -3,11 +3,9 @@ import { useAlert } from 'dashboard/composables';
import Spinner from 'shared/components/Spinner.vue';
import CsmlBotEditor from '../components/CSMLBotEditor.vue';
import { mapGetters } from 'vuex';
export default {
components: { Spinner, CsmlBotEditor },
computed: {
...mapGetters({ uiFlags: 'agentBots/uiFlags' }),
agentBot() {
return this.$store.getters['agentBots/getBot'](this.$route.params.botId);
},
@@ -1,5 +1,4 @@
<script>
import { mapGetters } from 'vuex';
import { useVuelidate } from '@vuelidate/core';
import { useAlert } from 'dashboard/composables';
import { required, minLength } from '@vuelidate/validators';
@@ -56,9 +55,6 @@ export default {
},
},
computed: {
...mapGetters({
uiFlags: 'attributes/getUIFlags',
}),
setAttributeListValue() {
return this.selectedAttribute.attribute_values.map(values => ({
name: values,
@@ -26,7 +26,6 @@ export default {
computed: {
...mapGetters({
uiFlags: 'campaigns/getUIFlags',
labelList: 'labels/getLabels',
}),
campaigns() {
return this.$store.getters['campaigns/getCampaigns'](this.campaignType);
@@ -24,7 +24,6 @@ export default {
computed: {
...mapGetters({
uiFlags: 'inboxes/getUIFlags',
globalConfig: 'globalConfig/get',
}),
},
validations: {
@@ -61,7 +61,6 @@ export default {
return this.pageList.filter(item => !item.exists);
},
...mapGetters({
currentUser: 'getCurrentUser',
globalConfig: 'globalConfig/get',
}),
},
@@ -24,7 +24,6 @@ export default {
},
computed: {
...mapGetters({
globalConfig: 'globalConfig/get',
records: 'dashboardApps/getRecords',
uiFlags: 'dashboardApps/getUIFlags',
}),
@@ -11,7 +11,6 @@ export default {
type: [String, Number],
required: true,
},
integrationLogo: { type: String, default: '' },
integrationName: { type: String, default: '' },
integrationDescription: { type: String, default: '' },
integrationEnabled: { type: Boolean, default: false },
@@ -26,7 +25,6 @@ export default {
},
computed: {
...mapGetters({
currentUser: 'getCurrentUser',
accountId: 'getCurrentAccountId',
globalConfig: 'globalConfig/get',
}),
@@ -63,15 +61,15 @@ export default {
<template>
<div
class="flex flex-col md:flex-row justify-between items-start md:items-center"
class="flex flex-col items-start justify-between md:flex-row md:items-center"
>
<div class="flex items-center justify-start m-0 mx-4 flex-1">
<div class="flex items-center justify-start flex-1 m-0 mx-4">
<img
:src="`/dashboard/images/integrations/${integrationId}.png`"
class="p-2 h-16 w-16 mr-4"
class="w-16 h-16 p-2 mr-4"
/>
<div>
<h3 class="text-xl font-medium mb-1 text-slate-800 dark:text-slate-100">
<h3 class="mb-1 text-xl font-medium text-slate-800 dark:text-slate-100">
{{ integrationName }}
</h3>
<p class="text-slate-700 dark:text-slate-200">
@@ -112,7 +110,7 @@ export default {
</div>
</router-link>
<div v-if="!integrationEnabled">
<a :href="integrationAction" class="button success nice rounded">
<a :href="integrationAction" class="rounded button success nice">
{{ $t('INTEGRATION_SETTINGS.CONNECT.BUTTON_TEXT') }}
</a>
</div>
@@ -22,7 +22,6 @@ export default {
computed: {
...mapGetters({
uiFlags: 'integrations/getUIFlags',
websiteInboxes: 'inboxes/getWebsiteInboxes',
dialogFlowEnabledInboxes: 'inboxes/dialogFlowEnabledInboxes',
}),
inboxes() {
@@ -1,5 +1,4 @@
<script>
import { mapGetters } from 'vuex';
import globalConfigMixin from 'shared/mixins/globalConfigMixin';
import Integration from './Integration.vue';
import IntegrationHelpText from './IntegrationHelpText.vue';
@@ -16,7 +15,6 @@ export default {
type: [String, Number],
required: true,
},
code: { type: String, default: '' },
},
data() {
return {
@@ -29,11 +27,6 @@ export default {
this.integrationId
);
},
...mapGetters({
currentUser: 'getCurrentUser',
globalConfig: 'globalConfig/get',
accountId: 'getCurrentAccountId',
}),
},
mounted() {
this.fetchIntegrations();
@@ -54,13 +47,13 @@ export default {
</script>
<template>
<div class="flex-shrink flex-grow overflow-auto p-4">
<div class="flex-grow flex-shrink p-4 overflow-auto">
<div class="flex flex-col">
<div class="flex flex-col">
<div>
<div
v-if="integrationLoaded"
class="bg-white dark:bg-slate-800 border border-solid border-slate-75 dark:border-slate-700/50 rounded-sm mb-4 p-4"
class="p-4 mb-4 bg-white border border-solid rounded-sm dark:bg-slate-800 border-slate-75 dark:border-slate-700/50"
>
<Integration
:integration-id="integration.id"
@@ -73,7 +66,7 @@ export default {
</div>
<div
v-if="integration.enabled"
class="bg-white dark:bg-slate-800 border border-solid border-slate-75 dark:border-slate-700/50 rounded-sm mb-4 p-4"
class="p-4 mb-4 bg-white border border-solid rounded-sm dark:bg-slate-800 border-slate-75 dark:border-slate-700/50"
>
<IntegrationHelpText />
</div>
@@ -47,9 +47,6 @@ export default {
return this.$t('INTEGRATION_SETTINGS.SLACK.HELP_TEXT.SELECTED');
},
...mapGetters({
currentUser: 'getCurrentUser',
globalConfig: 'globalConfig/get',
accountId: 'getCurrentAccountId',
uiFlags: 'integrations/getUIFlags',
}),
@@ -84,7 +81,7 @@ export default {
class="flex flex-col flex-1 overflow-auto"
>
<div
class="bg-white dark:bg-slate-800 border-b border-solid border-slate-75 dark:border-slate-700/50 rounded-sm p-4"
class="p-4 bg-white border-b border-solid rounded-sm dark:bg-slate-800 border-slate-75 dark:border-slate-700/50"
>
<Integration
:integration-id="integration.id"
@@ -100,7 +97,7 @@ export default {
}"
/>
</div>
<div v-if="areHooksAvailable" class="p-6 flex-1">
<div v-if="areHooksAvailable" class="flex-1 p-6">
<SelectChannelWarning
v-if="!isIntegrationHookEnabled"
:has-connected-a-channel="hasConnectedAChannel"
@@ -108,7 +105,7 @@ export default {
<SlackIntegrationHelpText :selected-channel-name="selectedChannelName" />
</div>
</div>
<div v-else class="flex flex-1 items-center justify-center">
<div v-else class="flex items-center justify-center flex-1">
<Spinner size="" color-scheme="primary" />
</div>
</template>
@@ -26,9 +26,6 @@ export default {
computed: {
...mapGetters({
uiFlags: 'macros/getUIFlags',
labels: 'labels/getLabels',
agents: 'agents/getAgents',
teams: 'teams/getTeams',
}),
macroId() {
return this.$route.params.macroId;
@@ -2,7 +2,6 @@
import { inject } from 'vue';
import ActionInput from 'dashboard/components/widgets/AutomationActionInput.vue';
import macrosMixin from 'dashboard/mixins/macrosMixin';
import { mapGetters } from 'vuex';
export default {
components: {
@@ -22,10 +21,6 @@ export default {
type: String,
default: '',
},
index: {
type: Number,
default: 0,
},
fileName: {
type: String,
default: '',
@@ -36,11 +31,6 @@ export default {
return { macroActionTypes };
},
computed: {
...mapGetters({
labels: 'labels/getLabels',
teams: 'teams/getTeams',
agents: 'agents/getAgents',
}),
actionData: {
get() {
return this.value;
@@ -1,5 +1,4 @@
<script>
import { mapGetters } from 'vuex';
import { useAlert } from 'dashboard/composables';
import configMixin from 'shared/mixins/configMixin';
import { useUISettings } from 'dashboard/composables/useUISettings';
@@ -31,11 +30,6 @@ export default {
audioAlertConditions: [],
};
},
computed: {
...mapGetters({
accountId: 'getCurrentAccountId',
}),
},
watch: {
uiSettings(value) {
this.notificationUISettings(value);
@@ -1,5 +1,4 @@
<script>
import { mapGetters } from 'vuex';
import { useAlert } from 'dashboard/composables';
import BotMetrics from './components/BotMetrics.vue';
import ReportFilterSelector from './components/FilterSelector.vue';
@@ -29,9 +28,6 @@ export default {
};
},
computed: {
...mapGetters({
accountReport: 'getAccountReports',
}),
requestPayload() {
return {
from: this.from,
@@ -1,5 +1,4 @@
<script>
import { mapGetters } from 'vuex';
import { useAlert } from 'dashboard/composables';
import fromUnixTime from 'date-fns/fromUnixTime';
import format from 'date-fns/format';
@@ -34,12 +33,6 @@ export default {
businessHours: false,
};
},
computed: {
...mapGetters({
accountSummary: 'getAccountSummary',
accountReport: 'getAccountReports',
}),
},
methods: {
fetchAllData() {
this.fetchAccountSummary();
@@ -20,7 +20,6 @@ export default {
},
computed: {
...mapGetters({
uiFlags: 'csat/getUIFlags',
csatResponses: 'csat/getCSATResponses',
metrics: 'csat/getMetrics',
}),
@@ -23,10 +23,6 @@ export default {
ReportsFiltersRatings,
},
props: {
filterItemsList: {
type: Array,
default: () => [],
},
showGroupByFilter: {
type: Boolean,
default: false,
@@ -1,5 +1,4 @@
<script>
import { mapGetters } from 'vuex';
import { useAlert } from 'dashboard/composables';
import SlaForm from './SlaForm.vue';
@@ -7,11 +6,6 @@ export default {
components: {
SlaForm,
},
computed: {
...mapGetters({
uiFlags: 'sla/getUIFlags',
}),
},
methods: {
onClose() {
this.$emit('close');
@@ -33,7 +33,6 @@ export default {
},
computed: {
...mapGetters({
globalConfig: 'globalConfig/get',
isOnChatwootCloud: 'globalConfig/isOnChatwootCloud',
isFeatureEnabledonAccount: 'accounts/isFeatureEnabledonAccount',
records: 'sla/getSLA',
@@ -12,12 +12,6 @@ export default {
PageHeader,
AgentSelector,
},
props: {
team: {
type: Object,
default: () => {},
},
},
validations: {
selectedAgents: {
isEmpty() {
@@ -14,13 +14,6 @@ export default {
PageHeader,
AgentSelector,
},
props: {
team: {
type: Object,
default: () => {},
},
},
validations: {
selectedAgents: {
isEmpty() {
@@ -9,12 +9,6 @@ export default {
PublicSearchInput,
SearchSuggestions,
},
props: {
value: {
type: [String, Number],
default: '',
},
},
data() {
return {
searchTerm: '',
@@ -99,7 +93,7 @@ export default {
</script>
<template>
<div v-on-clickaway="closeSearch" class="max-w-5xl w-full relative my-4">
<div v-on-clickaway="closeSearch" class="relative w-full max-w-5xl my-4">
<PublicSearchInput
v-model="searchTerm"
:search-placeholder="searchTranslations.searchPlaceholder"
@@ -107,7 +101,7 @@ export default {
/>
<div
v-if="shouldShowSearchBox"
class="absolute top-14 w-full"
class="absolute w-full top-14"
@mouseover="openSearch"
>
<SearchSuggestions
@@ -17,18 +17,10 @@ export default {
type: String,
default: '',
},
searchPlaceholder: {
type: String,
default: '',
},
loadingPlaceholder: {
type: String,
default: '',
},
resultsTitle: {
type: String,
default: '',
},
searchTerm: {
type: String,
default: '',
@@ -76,24 +68,24 @@ export default {
<template>
<div
class="shadow-xl hover:shadow-lg bg-white dark:bg-slate-900 mt-2 max-h-96 scroll-py-2 p-5 overflow-y-auto text-sm text-slate-700 dark:text-slate-100 border border-solid border-slate-50 dark:border-slate-800 rounded-lg"
class="p-5 mt-2 overflow-y-auto text-sm bg-white border border-solid rounded-lg shadow-xl hover:shadow-lg dark:bg-slate-900 max-h-96 scroll-py-2 text-slate-700 dark:text-slate-100 border-slate-50 dark:border-slate-800"
>
<div
v-if="isLoading"
class="font-medium text-sm text-slate-400 dark:text-slate-700"
class="text-sm font-medium text-slate-400 dark:text-slate-700"
>
{{ loadingPlaceholder }}
</div>
<ul
v-if="shouldShowResults"
class="bg-white dark:bg-slate-900 gap-4 flex flex-col text-sm text-slate-700 dark:text-slate-100"
class="flex flex-col gap-4 text-sm bg-white dark:bg-slate-900 text-slate-700 dark:text-slate-100"
role="listbox"
>
<li
v-for="(article, index) in items"
:id="article.id"
:key="article.id"
class="group flex border border-solid hover:bg-slate-25 dark:hover:bg-slate-800 border-slate-100 dark:border-slate-800 rounded-lg cursor-pointer select-none items-center p-4"
class="flex items-center p-4 border border-solid rounded-lg cursor-pointer select-none group hover:bg-slate-25 dark:hover:bg-slate-800 border-slate-100 dark:border-slate-800"
:class="isSearchItemActive(index)"
role="option"
tabindex="-1"
@@ -106,11 +98,11 @@ export default {
>
<span
v-dompurify-html="prepareContent(article.title)"
class="flex-auto truncate text-base font-semibold leading-6 w-full overflow-hidden text-ellipsis whitespace-nowrap"
class="flex-auto w-full overflow-hidden text-base font-semibold leading-6 truncate text-ellipsis whitespace-nowrap"
/>
<div
v-dompurify-html="prepareContent(article.content)"
class="line-clamp-2 text-ellipsis whitespace-nowrap overflow-hidden text-slate-600 dark:text-slate-300 text-sm"
class="overflow-hidden text-sm line-clamp-2 text-ellipsis whitespace-nowrap text-slate-600 dark:text-slate-300"
/>
</a>
</li>
@@ -118,7 +110,7 @@ export default {
<div
v-if="showEmptyResults"
class="font-medium text-sm text-slate-400 dark:text-slate-700"
class="text-sm font-medium text-slate-400 dark:text-slate-700"
>
{{ emptyPlaceholder }}
</div>
@@ -24,7 +24,6 @@ export default {
type: Array,
default: () => [],
},
showAvatar: Boolean,
},
computed: {},
};
@@ -5,10 +5,6 @@ export default {
type: String,
default: '',
},
type: {
type: String,
default: 'text',
},
placeholder: {
type: String,
default: '',
@@ -43,7 +39,7 @@ export default {
{{ label }}
</div>
<textarea
class="resize-none border rounded w-full py-2 px-3 text-slate-700 leading-tight outline-none"
class="w-full px-3 py-2 leading-tight border rounded outline-none resize-none text-slate-700"
:class="{
'border-black-200 hover:border-black-300 focus:border-black-300':
!error,
@@ -53,7 +49,7 @@ export default {
:value="value"
@change="onChange"
/>
<div v-if="error" class="text-red-400 mt-2 text-xs font-medium">
<div v-if="error" class="mt-2 text-xs font-medium text-red-400">
{{ error }}
</div>
</label>
@@ -7,17 +7,13 @@ export default {
type: Boolean,
default: false,
},
className: {
type: String,
default: '',
},
},
};
</script>
<template>
<li
class="dropdown-menu__item list-none mb-1"
class="mb-1 list-none dropdown-menu__item"
:class="{
'is-disabled': disabled,
}"
+1 -11
View File
@@ -10,16 +10,6 @@ export default {
TextArea,
Spinner,
},
props: {
isUpdating: {
type: Boolean,
default: null,
},
isButtonDisabled: {
type: Boolean,
default: null,
},
},
data() {
return {
feedback: '',
@@ -44,7 +34,7 @@ export default {
class="my-5"
:placeholder="$t('SURVEY.FEEDBACK.PLACEHOLDER')"
/>
<div class="flex items-center font-medium float-right">
<div class="flex items-center float-right font-medium">
<CustomButton @click="onClick">
<Spinner v-if="feedback" class="p-0" />
{{ $t('SURVEY.FEEDBACK.BUTTON_TEXT') }}
-6
View File
@@ -18,12 +18,6 @@ export default {
Feedback,
},
mixins: [configMixin],
props: {
showHomePage: {
type: Boolean,
default: false,
},
},
data() {
return {
@@ -5,10 +5,6 @@ export default {
WithLabel,
},
props: {
id: {
type: String,
default: '',
},
options: {
type: Array,
default: () => [],
@@ -44,7 +40,7 @@ export default {
:has-error="hasError"
:error-message="errorMessage"
>
<div class="flex gap-2 flex-wrap">
<div class="flex flex-wrap gap-2">
<woot-button
v-for="option in options"
:key="option.value"
@@ -6,11 +6,6 @@ export default {
type: Object,
default: () => ({}),
},
showButton: Boolean,
duration: {
type: [String, Number],
default: 3000,
},
},
computed: {
isActionPresent() {
@@ -14,8 +14,6 @@ export default {
},
props: {
resetPasswordToken: { type: String, default: '' },
redirectUrl: { type: String, default: '' },
config: { type: String, default: '' },
},
setup() {
return { v$: useVuelidate() };
-1
View File
@@ -27,7 +27,6 @@ export default {
ssoAuthToken: { type: String, default: '' },
ssoAccountId: { type: String, default: '' },
ssoConversationId: { type: String, default: '' },
config: { type: String, default: '' },
email: { type: String, default: '' },
authError: { type: String, default: '' },
},
+2 -5
View File
@@ -37,10 +37,7 @@ export default {
computed: {
...mapGetters({
activeCampaign: 'campaign/getActiveCampaign',
campaigns: 'campaign/getCampaigns',
conversationSize: 'conversation/getConversationSize',
currentUser: 'contacts/getCurrentUser',
hasFetched: 'agent/getHasFetched',
hideMessageBubble: 'appConfig/getHideMessageBubble',
isFetchingList: 'conversation/getIsFetchingList',
isRightAligned: 'appConfig/isRightAligned',
@@ -91,7 +88,7 @@ export default {
'setBubbleVisibility',
'setColorScheme',
]),
...mapActions('conversation', ['fetchOldConversations', 'setUserLastSeen']),
...mapActions('conversation', ['fetchOldConversations']),
...mapActions('campaign', [
'initCampaigns',
'executeCampaign',
@@ -334,7 +331,7 @@ export default {
<template>
<div
v-if="!conversationSize && isFetchingList"
class="flex flex-1 items-center h-full bg-black-25 justify-center"
class="flex items-center justify-center flex-1 h-full bg-black-25"
:class="{ dark: prefersDarkMode }"
>
<Spinner size="" />
@@ -7,10 +7,6 @@ export default {
type: Array,
default: () => [],
},
categoryPath: {
type: String,
default: '',
},
},
methods: {
onArticleClick(link) {
@@ -17,12 +17,6 @@ export default {
FooterReplyTo,
},
mixins: [routerMixin],
props: {
msg: {
type: String,
default: '',
},
},
data() {
return {
inReplyTo: null,
@@ -1,6 +1,4 @@
<script>
import { mapGetters } from 'vuex';
import availabilityMixin from 'widget/mixins/availability';
import nextAvailabilityTime from 'widget/mixins/nextAvailabilityTime';
import FluentIcon from 'shared/components/FluentIcon/Index.vue';
@@ -38,9 +36,6 @@ export default {
},
},
computed: {
...mapGetters({
widgetColor: 'appConfig/getWidgetColor',
}),
isOnline() {
const { workingHoursEnabled } = this.channelConfig;
const anyAgentOnline = this.availableAgents.length > 0;
@@ -61,13 +56,13 @@ export default {
<template>
<header
class="flex justify-between p-5 w-full"
class="flex justify-between w-full p-5"
:class="$dm('bg-white', 'dark:bg-slate-900')"
>
<div class="flex items-center">
<button
v-if="showBackButton"
class="-ml-3 px-2"
class="px-2 -ml-3"
@click="onBackButtonClick"
>
<FluentIcon
@@ -78,13 +73,13 @@ export default {
</button>
<img
v-if="avatarUrl"
class="h-8 w-8 rounded-full mr-3"
class="w-8 h-8 mr-3 rounded-full"
:src="avatarUrl"
alt="avatar"
/>
<div>
<div
class="font-medium text-base leading-4 flex items-center"
class="flex items-center text-base font-medium leading-4"
:class="$dm('text-black-900', 'dark:text-slate-50')"
>
<span v-dompurify-html="title" class="mr-1" />
@@ -94,7 +89,7 @@ export default {
/>
</div>
<div
class="text-xs mt-1 leading-3"
class="mt-1 text-xs leading-3"
:class="$dm('text-black-700', 'dark:text-slate-400')"
>
{{ replyWaitMessage }}
@@ -7,10 +7,6 @@ export default {
type: String,
default: '',
},
type: {
type: String,
default: 'text',
},
placeholder: {
type: String,
default: '',
@@ -57,19 +53,19 @@ export default {
<label class="block">
<div
v-if="label"
class="mb-2 text-xs leading-3 font-medium"
class="mb-2 text-xs font-medium leading-3"
:class="labelClass"
>
{{ label }}
</div>
<textarea
class="resize-none border rounded w-full py-2 px-3 text-slate-700 leading-tight outline-none"
class="w-full px-3 py-2 leading-tight border rounded outline-none resize-none text-slate-700"
:class="isTextAreaHasError"
:placeholder="placeholder"
:value="value"
@change="onChange"
/>
<div v-if="error" class="text-red-400 mt-2 text-xs leading-3 font-medium">
<div v-if="error" class="mt-2 text-xs font-medium leading-3 text-red-400">
{{ error }}
</div>
</label>
@@ -25,10 +25,6 @@ export default {
type: Boolean,
default: false,
},
unreadCount: {
type: Number,
default: 0,
},
},
computed: {
@@ -10,10 +10,6 @@ export default {
type: String,
default: '',
},
status: {
type: String,
default: '',
},
widgetColor: {
type: String,
default: '',
@@ -28,7 +28,6 @@ export default {
...mapGetters({
appConfig: 'appConfig/getAppConfig',
availableAgents: 'agent/availableAgents',
widgetColor: 'appConfig/getWidgetColor',
}),
portal() {
return window.chatwootWebChannel.portal;
@@ -108,9 +107,9 @@ export default {
:class="{ 'overflow-auto': isOnHomeView }"
@keydown.esc="closeWindow"
>
<div class="flex flex-col h-full relative">
<div class="relative flex flex-col h-full">
<div
class="header-wrap sticky top-0 z-40 transition-all"
class="sticky top-0 z-40 transition-all header-wrap"
:class="{
expanded: !isHeaderCollapsed,
collapsed: isHeaderCollapsed,
-11
View File
@@ -16,20 +16,9 @@ export default {
ArticleCardSkeletonLoader,
},
mixins: [configMixin, routerMixin, darkModeMixin],
props: {
hasFetched: {
type: Boolean,
default: false,
},
isCampaignViewClicked: {
type: Boolean,
default: false,
},
},
computed: {
...mapGetters({
availableAgents: 'agent/availableAgents',
activeCampaign: 'campaign/getActiveCampaign',
conversationSize: 'conversation/getConversationSize',
unreadMessageCount: 'conversation/getUnreadMessageCount',
popularArticles: 'article/popularArticles',