style: apply fixes for eslint issues [cw-3590] (#10210)

These fixes are all auto generated and can be merged directly

Fixes the following issues

1. Event used on components should be hypenated
2. Attribute orders in components
3. Use `unmounted` instead of `destroyed`
4. Add explicit `emits` declarations for components, autofixed [using
this
script](https://gist.github.com/scmmishra/6f549109b96400006bb69bbde392eddf)


We ignore the top level v-if for now, we will fix it later
This commit is contained in:
Shivam Mishra
2024-10-03 15:02:12 +05:30
committed by GitHub
parent b8d0252511
commit c51a458c25
257 changed files with 1013 additions and 310 deletions

View File

@@ -769,11 +769,11 @@ watch(conversationFilters, (newVal, oldVal) => {
:has-applied-filters="hasAppliedFilters" :has-applied-filters="hasAppliedFilters"
:has-active-folders="hasActiveFolders" :has-active-folders="hasActiveFolders"
:active-status="activeStatus" :active-status="activeStatus"
@addFolders="onClickOpenAddFoldersModal" @add-folders="onClickOpenAddFoldersModal"
@deleteFolders="onClickOpenDeleteFoldersModal" @delete-folders="onClickOpenDeleteFoldersModal"
@filtersModal="onToggleAdvanceFiltersModal" @filters-modal="onToggleAdvanceFiltersModal"
@resetFilters="resetAndFetchData" @reset-filters="resetAndFetchData"
@basicFilterChange="onBasicFilterChange" @basic-filter-change="onBasicFilterChange"
/> />
<AddCustomViews <AddCustomViews
@@ -796,7 +796,7 @@ watch(conversationFilters, (newVal, oldVal) => {
v-if="!hasAppliedFiltersOrActiveFolders" v-if="!hasAppliedFiltersOrActiveFolders"
:items="assigneeTabItems" :items="assigneeTabItems"
:active-tab="activeAssigneeTab" :active-tab="activeAssigneeTab"
@chatTabChange="updateAssigneeTab" @chat-tab-change="updateAssigneeTab"
/> />
<p <p
@@ -813,11 +813,11 @@ watch(conversationFilters, (newVal, oldVal) => {
:show-open-action="allSelectedConversationsStatus('open')" :show-open-action="allSelectedConversationsStatus('open')"
:show-resolved-action="allSelectedConversationsStatus('resolved')" :show-resolved-action="allSelectedConversationsStatus('resolved')"
:show-snoozed-action="allSelectedConversationsStatus('snoozed')" :show-snoozed-action="allSelectedConversationsStatus('snoozed')"
@selectAllConversations="toggleSelectAll" @select-all-conversations="toggleSelectAll"
@assignAgent="onAssignAgent" @assign-agent="onAssignAgent"
@updateConversations="onUpdateConversations" @update-conversations="onUpdateConversations"
@assignLabels="onAssignLabels" @assign-labels="onAssignLabels"
@assignTeam="onAssignTeamsForBulk" @assign-team="onAssignTeamsForBulk"
/> />
<div <div
ref="conversationListRef" ref="conversationListRef"
@@ -854,8 +854,8 @@ watch(conversationFilters, (newVal, oldVal) => {
:folders-id="foldersId" :folders-id="foldersId"
:conversation-type="conversationType" :conversation-type="conversationType"
:show-assignee="showAssigneeInConversationCard" :show-assignee="showAssigneeInConversationCard"
@selectConversation="selectConversation" @select-conversation="selectConversation"
@deSelectConversation="deSelectConversation" @de-select-conversation="deSelectConversation"
/> />
</DynamicScrollerItem> </DynamicScrollerItem>
</template> </template>
@@ -889,8 +889,8 @@ watch(conversationFilters, (newVal, oldVal) => {
:active-folder-name="activeFolderName" :active-folder-name="activeFolderName"
:on-close="closeAdvanceFiltersModal" :on-close="closeAdvanceFiltersModal"
:is-folder-view="hasActiveFolders" :is-folder-view="hasActiveFolders"
@applyFilter="onApplyFilter" @apply-filter="onApplyFilter"
@updateFolder="onUpdateSavedFilter" @update-folder="onUpdateSavedFilter"
/> />
</woot-modal> </woot-modal>
</div> </div>

View File

@@ -108,7 +108,7 @@ const hasAppliedFiltersOrActiveFolders = computed(() => {
/> />
<ConversationBasicFilter <ConversationBasicFilter
v-if="!hasAppliedFiltersOrActiveFolders" v-if="!hasAppliedFiltersOrActiveFolders"
@changeFilter="onBasicFilterChange" @change-filter="onBasicFilterChange"
/> />
</div> </div>
</div> </div>

View File

@@ -56,14 +56,14 @@ export default {
:selected="isConversationSelected(source.id)" :selected="isConversationSelected(source.id)"
:show-assignee="showAssignee" :show-assignee="showAssignee"
enable-context-menu enable-context-menu
@selectConversation="selectConversation" @select-conversation="selectConversation"
@deSelectConversation="deSelectConversation" @de-select-conversation="deSelectConversation"
@assignAgent="assignAgent" @assign-agent="assignAgent"
@assignTeam="assignTeam" @assign-team="assignTeam"
@assignLabel="assignLabels" @assign-label="assignLabels"
@updateConversationStatus="updateConversationStatus" @update-conversation-status="updateConversationStatus"
@contextMenuToggle="toggleContextMenu" @context-menu-toggle="toggleContextMenu"
@markAsUnread="markAsUnread" @mark-as-unread="markAsUnread"
@assignPriority="assignPriority" @assign-priority="assignPriority"
/> />
</template> </template>

View File

@@ -31,6 +31,7 @@ export default {
attributeKey: { type: String, required: true }, attributeKey: { type: String, required: true },
contactId: { type: Number, default: null }, contactId: { type: Number, default: null },
}, },
emits: ['update', 'delete', 'copy'],
setup() { setup() {
return { v$: useVuelidate() }; return { v$: useVuelidate() };
}, },
@@ -138,7 +139,7 @@ export default {
this.editedValue = this.formattedValue; this.editedValue = this.formattedValue;
emitter.on(BUS_EVENTS.FOCUS_CUSTOM_ATTRIBUTE, this.onFocusAttribute); emitter.on(BUS_EVENTS.FOCUS_CUSTOM_ATTRIBUTE, this.onFocusAttribute);
}, },
destroyed() { unmounted() {
emitter.off(BUS_EVENTS.FOCUS_CUSTOM_ATTRIBUTE, this.onFocusAttribute); emitter.off(BUS_EVENTS.FOCUS_CUSTOM_ATTRIBUTE, this.onFocusAttribute);
}, },
methods: { methods: {

View File

@@ -18,6 +18,7 @@ const shouldShowContent = computed(
); );
</script> </script>
<!-- eslint-disable-next-line vue/no-root-v-if -->
<template> <template>
<div v-if="shouldShowContent"> <div v-if="shouldShowContent">
<slot /> <slot />

View File

@@ -5,6 +5,7 @@ export default {
components: { components: {
DatePicker, DatePicker,
}, },
emits: ['close', 'chooseTime'],
data() { data() {
return { return {

View File

@@ -79,6 +79,7 @@ export default {
}; };
</script> </script>
<!-- eslint-disable-next-line vue/no-root-v-if -->
<template> <template>
<Banner <Banner
v-if="shouldShowBanner" v-if="shouldShowBanner"
@@ -86,6 +87,6 @@ export default {
:banner-message="bannerMessage" :banner-message="bannerMessage"
:action-button-label="actionButtonMessage" :action-button-label="actionButtonMessage"
has-action-button has-action-button
@primaryAction="routeToBilling" @primary-action="routeToBilling"
/> />
</template> </template>

View File

@@ -28,6 +28,7 @@ export default {
}; };
</script> </script>
<!-- eslint-disable-next-line vue/no-root-v-if -->
<template> <template>
<Banner <Banner
v-if="shouldShowBanner" v-if="shouldShowBanner"
@@ -36,6 +37,6 @@ export default {
:action-button-label="actionButtonMessage" :action-button-label="actionButtonMessage"
action-button-icon="mail" action-button-icon="mail"
has-action-button has-action-button
@primaryAction="resendVerificationEmail" @primary-action="resendVerificationEmail"
/> />
</template> </template>

View File

@@ -67,6 +67,7 @@ export default {
}; };
</script> </script>
<!-- eslint-disable-next-line vue/no-root-v-if -->
<template> <template>
<Banner <Banner
v-if="shouldShowBanner" v-if="shouldShowBanner"

View File

@@ -81,6 +81,7 @@ export default {
}; };
</script> </script>
<!-- eslint-disable-next-line vue/no-root-v-if -->
<template> <template>
<Banner <Banner
v-if="shouldShowBanner" v-if="shouldShowBanner"
@@ -88,6 +89,6 @@ export default {
:banner-message="bannerMessage" :banner-message="bannerMessage"
:action-button-label="actionButtonMessage" :action-button-label="actionButtonMessage"
has-action-button has-action-button
@primaryAction="routeToBilling" @primary-action="routeToBilling"
/> />
</template> </template>

View File

@@ -22,11 +22,14 @@ export default {
type: Boolean, type: Boolean,
default: true, default: true,
}, },
hasBanner: {
type: Boolean,
default: false,
},
}, },
emits: [
'toggleAccountModal',
'showAddLabelPopup',
'openNotificationPanel',
'closeKeyShortcutModal',
'openKeyShortcutModal',
],
setup(props, { emit }) { setup(props, { emit }) {
const route = useRoute(); const route = useRoute();
const router = useRouter(); const router = useRouter();
@@ -217,9 +220,9 @@ export default {
:account-id="accountId" :account-id="accountId"
:menu-items="primaryMenuItems" :menu-items="primaryMenuItems"
:active-menu-item="activePrimaryMenu.key" :active-menu-item="activePrimaryMenu.key"
@toggleAccounts="toggleAccountModal" @toggle-accounts="toggleAccountModal"
@openKeyShortcutModal="toggleKeyShortcutModal" @open-key-shortcut-modal="toggleKeyShortcutModal"
@openNotificationPanel="openNotificationPanel" @open-notification-panel="openNotificationPanel"
/> />
<SecondarySidebar <SecondarySidebar
v-if="hasSecondarySidebar" v-if="hasSecondarySidebar"
@@ -231,8 +234,8 @@ export default {
:menu-config="activeSecondaryMenu" :menu-config="activeSecondaryMenu"
:current-user="currentUser" :current-user="currentUser"
:is-on-chatwoot-cloud="isOnChatwootCloud" :is-on-chatwoot-cloud="isOnChatwootCloud"
@addLabel="showAddLabelPopup" @add-label="showAddLabelPopup"
@toggleAccounts="toggleAccountModal" @toggle-accounts="toggleAccountModal"
/> />
</aside> </aside>
</template> </template>

View File

@@ -2,6 +2,7 @@
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
export default { export default {
emits: ['toggleAccounts'],
data() { data() {
return { showSwitchButton: false }; return { showSwitchButton: false };
}, },
@@ -25,6 +26,7 @@ export default {
}; };
</script> </script>
<!-- eslint-disable-next-line vue/no-root-v-if -->
<template> <template>
<div <div
v-if="showShowCurrentAccountContext" v-if="showShowCurrentAccountContext"

View File

@@ -7,7 +7,7 @@ export default {
default: true, default: true,
}, },
}, },
emits: ['closeAccountModal', 'showCreateAccountModal'],
computed: { computed: {
...mapGetters({ ...mapGetters({
accountId: 'getCurrentAccountId', accountId: 'getCurrentAccountId',

View File

@@ -15,6 +15,7 @@ export default {
default: true, default: true,
}, },
}, },
emits: ['closeAccountCreateModal'],
setup() { setup() {
return { v$: useVuelidate() }; return { v$: useVuelidate() };
}, },

View File

@@ -6,6 +6,7 @@ export default {
components: { components: {
Thumbnail, Thumbnail,
}, },
emits: ['toggleMenu'],
computed: { computed: {
...mapGetters({ ...mapGetters({
currentUser: 'getCurrentUser', currentUser: 'getCurrentUser',

View File

@@ -2,6 +2,8 @@
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
export default { export default {
emits: ['openNotificationPanel'],
computed: { computed: {
...mapGetters({ ...mapGetters({
notificationMetadata: 'notifications/getMeta', notificationMetadata: 'notifications/getMeta',

View File

@@ -17,6 +17,12 @@ export default {
default: false, default: false,
}, },
}, },
emits: [
'close',
'openKeyShortcutModal',
'toggleAccounts',
'showSupportChatWindow',
],
computed: { computed: {
...mapGetters({ ...mapGetters({
currentUser: 'getCurrentUser', currentUser: 'getCurrentUser',

View File

@@ -43,6 +43,7 @@ export default {
default: '', default: '',
}, },
}, },
emits: ['toggleAccounts', 'openNotificationPanel', 'openKeyShortcutModal'],
data() { data() {
return { return {
helpDocsURL: wootConstants.DOCS_URL, helpDocsURL: wootConstants.DOCS_URL,
@@ -96,13 +97,13 @@ export default {
open-in-new-page open-in-new-page
:to="helpDocsURL" :to="helpDocsURL"
/> />
<NotificationBell @openNotificationPanel="openNotificationPanel" /> <NotificationBell @open-notification-panel="openNotificationPanel" />
<AgentDetails @toggleMenu="toggleOptions" /> <AgentDetails @toggle-menu="toggleOptions" />
<OptionsMenu <OptionsMenu
:show="showOptionsMenu" :show="showOptionsMenu"
@toggleAccounts="toggleAccountModal" @toggle-accounts="toggleAccountModal"
@showSupportChatWindow="toggleSupportChatWindow" @show-support-chat-window="toggleSupportChatWindow"
@openKeyShortcutModal="$emit('openKeyShortcutModal')" @open-key-shortcut-modal="$emit('openKeyShortcutModal')"
@close="toggleOptions" @close="toggleOptions"
/> />
</div> </div>

View File

@@ -49,6 +49,7 @@ export default {
default: false, default: false,
}, },
}, },
emits: ['addLabel', 'toggleAccounts'],
computed: { computed: {
...mapGetters({ ...mapGetters({
isFeatureEnabledonAccount: 'accounts/isFeatureEnabledonAccount', isFeatureEnabledonAccount: 'accounts/isFeatureEnabledonAccount',
@@ -242,7 +243,7 @@ export default {
<div <div
class="flex flex-col w-48 h-full px-2 pb-8 overflow-auto text-sm bg-white border-r dark:bg-slate-900 dark:border-slate-800/50 rtl:border-r-0 rtl:border-l border-slate-50" class="flex flex-col w-48 h-full px-2 pb-8 overflow-auto text-sm bg-white border-r dark:bg-slate-900 dark:border-slate-800/50 rtl:border-r-0 rtl:border-l border-slate-50"
> >
<AccountContext @toggleAccounts="toggleAccountModal" /> <AccountContext @toggle-accounts="toggleAccountModal" />
<transition-group <transition-group
name="menu-list" name="menu-list"
tag="ul" tag="ul"
@@ -257,7 +258,7 @@ export default {
v-for="menuItem in additionalSecondaryMenuItems[menuConfig.parentNav]" v-for="menuItem in additionalSecondaryMenuItems[menuConfig.parentNav]"
:key="menuItem.key" :key="menuItem.key"
:menu-item="menuItem" :menu-item="menuItem"
@addLabel="showAddLabelPopup" @add-label="showAddLabelPopup"
/> />
</transition-group> </transition-group>
</div> </div>

View File

@@ -106,10 +106,11 @@ export default {
<span <span
v-if="showChildCount" v-if="showChildCount"
class="bg-slate-50 dark:bg-slate-700 rounded-full min-w-[18px] justify-center items-center flex text-xxs mx-1 py-0 px-1" class="bg-slate-50 dark:bg-slate-700 rounded-full min-w-[18px] justify-center items-center flex text-xxs mx-1 py-0 px-1"
:class="isCountZero :class="
isCountZero
? `text-slate-300 dark:text-slate-500` ? `text-slate-300 dark:text-slate-500`
: `text-slate-700 dark:text-slate-50` : `text-slate-700 dark:text-slate-50`
" "
> >
{{ childItemCount }} {{ childItemCount }}
</span> </span>

View File

@@ -22,6 +22,7 @@ export default {
default: () => ({}), default: () => ({}),
}, },
}, },
emits: ['addLabel', 'open'],
setup() { setup() {
const { isAdmin } = useAdmin(); const { isAdmin } = useAdmin();
const { isEnterprise } = useConfig(); const { isEnterprise } = useConfig();

View File

@@ -18,6 +18,7 @@ export default {
default: '', default: '',
}, },
}, },
emits: ['open', 'close'],
methods: { methods: {
onClickOpenPath() { onClickOpenPath() {
this.$emit('open'); this.$emit('open');

View File

@@ -38,6 +38,7 @@ export default {
default: false, default: false,
}, },
}, },
emits: ['primaryAction', 'close'],
computed: { computed: {
bannerClasses() { bannerClasses() {
const classList = [this.colorScheme]; const classList = [this.colorScheme];

View File

@@ -222,7 +222,7 @@ const emitDateRange = () => {
> >
<CalendarDateRange <CalendarDateRange
:selected-range="selectedRange" :selected-range="selectedRange"
@setRange="setDateRange" @set-range="setDateRange"
/> />
<div <div
class="flex flex-col w-[680px] ltr:border-l rtl:border-r border-slate-50 dark:border-slate-700/50" class="flex flex-col w-[680px] ltr:border-l rtl:border-r border-slate-50 dark:border-slate-700/50"
@@ -264,15 +264,15 @@ const emitDateRange = () => {
:calendar-type="calendar" :calendar-type="calendar"
:start-current-date="startCurrentDate" :start-current-date="startCurrentDate"
:end-current-date="endCurrentDate" :end-current-date="endCurrentDate"
@selectYear="openCalendar($event, calendar, YEAR)" @select-year="openCalendar($event, calendar, YEAR)"
/> />
<CalendarMonth <CalendarMonth
v-else-if="calendarViews[calendar] === MONTH" v-else-if="calendarViews[calendar] === MONTH"
:calendar-type="calendar" :calendar-type="calendar"
:start-current-date="startCurrentDate" :start-current-date="startCurrentDate"
:end-current-date="endCurrentDate" :end-current-date="endCurrentDate"
@selectMonth="openCalendar($event, calendar)" @select-month="openCalendar($event, calendar)"
@setView="setViewMode" @set-view="setViewMode"
@prev="moveCalendar(calendar, 'prev', YEAR)" @prev="moveCalendar(calendar, 'prev', YEAR)"
@next="moveCalendar(calendar, 'next', YEAR)" @next="moveCalendar(calendar, 'next', YEAR)"
/> />
@@ -286,9 +286,9 @@ const emitDateRange = () => {
:selected-end-date="selectedEndDate" :selected-end-date="selectedEndDate"
:selecting-end-date="selectingEndDate" :selecting-end-date="selectingEndDate"
:hovered-end-date="hoveredEndDate" :hovered-end-date="hoveredEndDate"
@updateHoveredEndDate="hoveredEndDate = $event" @update-hovered-end-date="hoveredEndDate = $event"
@selectDate="selectDate" @select-date="selectDate"
@setView="setViewMode" @set-view="setViewMode"
@prev="moveCalendar(calendar, 'prev')" @prev="moveCalendar(calendar, 'prev')"
@next="moveCalendar(calendar, 'next')" @next="moveCalendar(calendar, 'next')"
/> />

View File

@@ -1,5 +1,5 @@
<script setup> <script setup>
const emit = defineEmits(['clear', 'clear']); const emit = defineEmits(['clear', 'change']);
const onClickClear = () => { const onClickClear = () => {
emit('clear'); emit('clear');

View File

@@ -62,7 +62,7 @@ const selectMonth = index => {
MONTH MONTH
) )
" "
@setView="setViewMode" @set-view="setViewMode"
@prev="onClickPrev" @prev="onClickPrev"
@next="onClickNext" @next="onClickNext"
/> />

View File

@@ -139,7 +139,7 @@ const dayClasses = day => ({
" "
@prev="onClickPrev" @prev="onClickPrev"
@next="onClickNext" @next="onClickNext"
@setView="setViewMode" @set-view="setViewMode"
/> />
<CalendarWeekLabel /> <CalendarWeekLabel />
<div <div

View File

@@ -16,6 +16,7 @@ export default {
default: () => [], default: () => [],
}, },
}, },
emits: ['change'],
methods: { methods: {
handleChange(value) { handleChange(value) {
this.$emit('change', value); this.$emit('change', value);

View File

@@ -17,6 +17,7 @@ export default {
default: [], default: [],
}, },
}, },
emits: ['change'],
methods: { methods: {
handleChange(value) { handleChange(value) {

View File

@@ -38,7 +38,7 @@ const props = defineProps({
}, },
}); });
const emit = defineEmits(['onSearch', 'select']); const emit = defineEmits(['onSearch', 'select', 'removeFilter']);
const searchTerm = ref(''); const searchTerm = ref('');

View File

@@ -44,6 +44,7 @@ export default {
default: '', default: '',
}, },
}, },
emits: ['remove'],
computed: { computed: {
textColor() { textColor() {
if (this.variant === 'smooth') return ''; if (this.variant === 'smooth') return '';

View File

@@ -17,6 +17,7 @@ export default {
AICTAModal, AICTAModal,
AIAssistanceCTAButton, AIAssistanceCTAButton,
}, },
emits: ['replaceText'],
setup(props, { emit }) { setup(props, { emit }) {
const { uiSettings, updateUISettings } = useUISettings(); const { uiSettings, updateUISettings } = useUISettings();
@@ -142,7 +143,7 @@ export default {
> >
<AIAssistanceModal <AIAssistanceModal
:ai-option="aiOption" :ai-option="aiOption"
@applyText="insertText" @apply-text="insertText"
@close="hideAIAssistanceModal" @close="hideAIAssistanceModal"
/> />
</woot-modal> </woot-modal>

View File

@@ -1,5 +1,7 @@
<script> <script>
export default { export default {
emits: ['open'],
methods: { methods: {
onClick() { onClick() {
this.$emit('open'); this.$emit('open');

View File

@@ -13,6 +13,7 @@ export default {
required: true, required: true,
}, },
}, },
emits: ['close', 'applyText'],
setup() { setup() {
const { formatMessage } = useMessageFormatter(); const { formatMessage } = useMessageFormatter();
const { draftMessage, processEvent, recordAnalytics } = useAI(); const { draftMessage, processEvent, recordAnalytics } = useAI();

View File

@@ -7,6 +7,8 @@ import { useAI } from 'dashboard/composables/useAI';
import { OPEN_AI_EVENTS } from 'dashboard/helper/AnalyticsHelper/events'; import { OPEN_AI_EVENTS } from 'dashboard/helper/AnalyticsHelper/events';
export default { export default {
emits: ['close'],
setup() { setup() {
const { updateUISettings } = useUISettings(); const { updateUISettings } = useUISettings();
const { recordAnalytics } = useAI(); const { recordAnalytics } = useAI();

View File

@@ -11,6 +11,7 @@ export default {
default: '', default: '',
}, },
}, },
emits: ['update:modelValue'],
data() { data() {
return { return {
uploadState: 'idle', uploadState: 'idle',

View File

@@ -12,6 +12,7 @@ export default {
required: true, required: true,
}, },
}, },
emits: ['channelItemClick'],
computed: { computed: {
hasFbConfigured() { hasFbConfigured() {
return window.chatwootConfig?.fbAppId; return window.chatwootConfig?.fbAppId;

View File

@@ -11,6 +11,7 @@ export default {
default: '', default: '',
}, },
}, },
emits: ['update:modelValue'],
data() { data() {
return { return {
isPickerOpen: false, isPickerOpen: false,
@@ -45,7 +46,7 @@ export default {
disable-alpha disable-alpha
:model-value="modelValue" :model-value="modelValue"
class="colorpicker--chrome" class="colorpicker--chrome"
@update:modelValue="updateColor" @update:model-value="updateColor"
/> />
</div> </div>
</template> </template>

View File

@@ -80,6 +80,7 @@ export default {
}; };
</script> </script>
<!-- eslint-disable-next-line vue/no-root-v-if -->
<template> <template>
<div v-if="hasOpenedAtleastOnce" class="dashboard-app--container"> <div v-if="hasOpenedAtleastOnce" class="dashboard-app--container">
<div <div

View File

@@ -19,6 +19,7 @@ export default {
}; };
</script> </script>
<!-- eslint-disable-next-line vue/no-root-v-if -->
<template> <template>
<div v-if="isFeatureEnabled"> <div v-if="isFeatureEnabled">
<slot /> <slot />

View File

@@ -47,6 +47,7 @@ export default {
default: '', default: '',
}, },
}, },
emits: ['update:modelValue', 'removeFilter', 'resetFilter'],
computed: { computed: {
attributeKey: { attributeKey: {
get() { get() {

View File

@@ -5,7 +5,7 @@ export default {
props: { props: {
inbox: { inbox: {
type: Object, type: Object,
default: () => { }, default: () => {},
}, },
}, },
computed: { computed: {

View File

@@ -16,6 +16,8 @@ const props = defineProps({
default: 0, default: 0,
}, },
}); });
const emit = defineEmits(['pageChange']);
const totalPages = computed(() => Math.ceil(props.totalCount / props.pageSize)); const totalPages = computed(() => Math.ceil(props.totalCount / props.pageSize));
const firstIndex = computed(() => props.pageSize * (props.currentPage - 1) + 1); const firstIndex = computed(() => props.pageSize * (props.currentPage - 1) + 1);
const lastIndex = computed(() => const lastIndex = computed(() =>
@@ -26,6 +28,7 @@ const isFooterVisible = computed(
); );
</script> </script>
<!-- eslint-disable-next-line vue/no-root-v-if -->
<template> <template>
<footer <footer
v-if="isFooterVisible" v-if="isFooterVisible"
@@ -42,7 +45,7 @@ const isFooterVisible = computed(
:total-pages="totalPages" :total-pages="totalPages"
:total-count="totalCount" :total-count="totalCount"
:page-size="pageSize" :page-size="pageSize"
@pageChange="$emit('pageChange', $event)" @page-change="emit('pageChange', $event)"
/> />
</footer> </footer>
</template> </template>

View File

@@ -41,6 +41,7 @@ export default {
}; };
</script> </script>
<!-- eslint-disable-next-line vue/no-root-v-if -->
<template> <template>
<woot-button <woot-button
v-if="isVideoIntegrationEnabled" v-if="isVideoIntegrationEnabled"

View File

@@ -26,7 +26,7 @@ export default {
}, },
onSend: { onSend: {
type: Function, type: Function,
default: () => { }, default: () => {},
}, },
sendButtonText: { sendButtonText: {
type: String, type: String,
@@ -53,19 +53,19 @@ export default {
}, },
onFileUpload: { onFileUpload: {
type: Function, type: Function,
default: () => { }, default: () => {},
}, },
toggleEmojiPicker: { toggleEmojiPicker: {
type: Function, type: Function,
default: () => { }, default: () => {},
}, },
toggleAudioRecorder: { toggleAudioRecorder: {
type: Function, type: Function,
default: () => { }, default: () => {},
}, },
toggleAudioRecorderPlayPause: { toggleAudioRecorderPlayPause: {
type: Function, type: Function,
default: () => { }, default: () => {},
}, },
isRecordingAudio: { isRecordingAudio: {
type: Boolean, type: Boolean,
@@ -112,6 +112,12 @@ export default {
required: true, required: true,
}, },
}, },
emits: [
'replaceText',
'toggleInsertArticle',
'toggleEditor',
'selectWhatsappTemplate',
],
setup() { setup() {
const { setSignatureFlagForInbox, fetchSignatureFlagFromUISettings } = const { setSignatureFlagForInbox, fetchSignatureFlagFromUISettings } =
useUISettings(); useUISettings();
@@ -166,9 +172,9 @@ export default {
return false; return false;
} }
// Disable audio recorder for safari browser as recording is not supported // Disable audio recorder for safari browser as recording is not supported
const isSafari = /^((?!chrome|android|crios|fxios).)*safari/i.test( // const isSafari = /^((?!chrome|android|crios|fxios).)*safari/i.test(
navigator.userAgent // navigator.userAgent
); // );
return ( return (
this.isFeatureEnabledonAccount( this.isFeatureEnabledonAccount(
@@ -340,7 +346,7 @@ export default {
:conversation-id="conversationId" :conversation-id="conversationId"
:is-private-note="isOnPrivateNote" :is-private-note="isOnPrivateNote"
:message="message" :message="message"
@replaceText="replaceText" @replace-text="replaceText"
/> />
<transition name="modal-fade"> <transition name="modal-fade">
<div <div

View File

@@ -22,6 +22,7 @@ export default {
default: false, default: false,
}, },
}, },
emits: ['setReplyMode', 'togglePopout'],
setup(props, { emit }) { setup(props, { emit }) {
const setReplyMode = mode => { const setReplyMode = mode => {
emit('setReplyMode', mode); emit('setReplyMode', mode);

View File

@@ -48,7 +48,7 @@ onMounted(() => {
v-if="items.length" v-if="items.length"
type="emoji" type="emoji"
:items="items" :items="items"
@mentionSelect="handleMentionClick" @mention-select="handleMentionClick"
> >
<template #default="{ item, selected }"> <template #default="{ item, selected }">
<span <span

View File

@@ -10,6 +10,7 @@ export default {
default: '', default: '',
}, },
}, },
emits: ['replace'],
computed: { computed: {
...mapGetters({ ...mapGetters({
cannedMessages: 'getCannedResponses', cannedMessages: 'getCannedResponses',
@@ -46,6 +47,6 @@ export default {
<MentionBox <MentionBox
v-if="items.length" v-if="items.length"
:items="items" :items="items"
@mentionSelect="handleMentionClick" @mention-select="handleMentionClick"
/> />
</template> </template>

View File

@@ -37,6 +37,7 @@ export default {
default: false, default: false,
}, },
}, },
emits: ['applyFilter', 'updateFolder'],
setup() { setup() {
const { setFilterAttributes } = useFilter({ const { setFilterAttributes } = useFilter({
filteri18nKey: 'FILTER', filteri18nKey: 'FILTER',
@@ -363,8 +364,8 @@ export default {
? $t(`CONTACTS_FILTER.ERRORS.VALUE_REQUIRED`) ? $t(`CONTACTS_FILTER.ERRORS.VALUE_REQUIRED`)
: '' : ''
" "
@resetFilter="resetFilter(i, appliedFilters[i])" @reset-filter="resetFilter(i, appliedFilters[i])"
@removeFilter="removeFilter(i)" @remove-filter="removeFilter(i)"
/> />
<div class="mt-4"> <div class="mt-4">
<woot-button <woot-button

View File

@@ -27,6 +27,7 @@ export default {
components: { components: {
FilterItem, FilterItem,
}, },
emits: ['changeFilter'],
setup() { setup() {
const { updateUISettings } = useUISettings(); const { updateUISettings } = useUISettings();
@@ -107,7 +108,7 @@ export default {
:selected-value="chatStatus" :selected-value="chatStatus"
:items="chatStatusItems" :items="chatStatusItems"
path-prefix="CHAT_LIST.CHAT_STATUS_FILTER_ITEMS" path-prefix="CHAT_LIST.CHAT_STATUS_FILTER_ITEMS"
@onChangeFilter="onChangeFilter" @on-change-filter="onChangeFilter"
/> />
</div> </div>
<div class="flex items-center justify-between last:mt-4"> <div class="flex items-center justify-between last:mt-4">
@@ -119,7 +120,7 @@ export default {
:selected-value="sortFilter" :selected-value="sortFilter"
:items="chatSortItems" :items="chatSortItems"
path-prefix="CHAT_LIST.SORT_ORDER_ITEMS" path-prefix="CHAT_LIST.SORT_ORDER_ITEMS"
@onChangeFilter="onChangeFilter" @on-change-filter="onChangeFilter"
/> />
</div> </div>
</div> </div>

View File

@@ -34,6 +34,7 @@ export default {
default: true, default: true,
}, },
}, },
emits: ['contactPanelToggle'],
data() { data() {
return { activeIndex: 0 }; return { activeIndex: 0 };
}, },
@@ -103,7 +104,7 @@ export default {
:is-inbox-view="isInboxView" :is-inbox-view="isInboxView"
:is-contact-panel-open="isContactPanelOpen" :is-contact-panel-open="isContactPanelOpen"
:show-back-button="isOnExpandedLayout && !isInboxView" :show-back-button="isOnExpandedLayout && !isInboxView"
@contactPanelToggle="onToggleContactPanel" @contact-panel-toggle="onToggleContactPanel"
/> />
<woot-tabs <woot-tabs
v-if="dashboardApps.length && currentChat.id" v-if="dashboardApps.length && currentChat.id"
@@ -128,7 +129,7 @@ export default {
:inbox-id="inboxId" :inbox-id="inboxId"
:is-inbox-view="isInboxView" :is-inbox-view="isInboxView"
:is-contact-panel-open="isContactPanelOpen" :is-contact-panel-open="isContactPanelOpen"
@contactPanelToggle="onToggleContactPanel" @contact-panel-toggle="onToggleContactPanel"
/> />
<EmptyState <EmptyState
v-if="!currentChat.id && !isInboxView" v-if="!currentChat.id && !isInboxView"

View File

@@ -69,6 +69,15 @@ export default {
default: false, default: false,
}, },
}, },
emits: [
'contextMenuToggle',
'assignAgent',
'assignLabel',
'assignTeam',
'markAsUnread',
'assignPriority',
'updateConversationStatus',
],
data() { data() {
return { return {
hovered: false, hovered: false,
@@ -336,12 +345,12 @@ export default {
:priority="chat.priority" :priority="chat.priority"
:chat-id="chat.id" :chat-id="chat.id"
:has-unread-messages="hasUnread" :has-unread-messages="hasUnread"
@updateConversation="onUpdateConversation" @update-conversation="onUpdateConversation"
@assignAgent="onAssignAgent" @assign-agent="onAssignAgent"
@assignLabel="onAssignLabel" @assign-label="onAssignLabel"
@assignTeam="onAssignTeam" @assign-team="onAssignTeam"
@markAsUnread="markAsUnread" @mark-as-unread="markAsUnread"
@assignPriority="assignPriority" @assign-priority="assignPriority"
/> />
</ContextMenu> </ContextMenu>
</div> </div>

View File

@@ -41,6 +41,7 @@ export default {
default: false, default: false,
}, },
}, },
emits: ['contactPanelToggle'],
setup(props, { emit }) { setup(props, { emit }) {
const keyboardEvents = { const keyboardEvents = {
'Alt+KeyO': { 'Alt+KeyO': {

View File

@@ -18,6 +18,7 @@ export default {
required: true, required: true,
}, },
}, },
emits: ['onChangeFilter'],
data() { data() {
return { return {
activeValue: this.selectedValue, activeValue: this.selectedValue,

View File

@@ -439,6 +439,7 @@ export default {
}; };
</script> </script>
<!-- eslint-disable-next-line vue/no-root-v-if -->
<template> <template>
<li <li
v-if="shouldRenderMessage" v-if="shouldRenderMessage"
@@ -579,7 +580,7 @@ export default {
:message="data" :message="data"
@open="openContextMenu" @open="openContextMenu"
@close="closeContextMenu" @close="closeContextMenu"
@replyTo="handleReplyTo" @reply-to="handleReplyTo"
/> />
</div> </div>
</li> </li>

View File

@@ -52,6 +52,7 @@ export default {
default: false, default: false,
}, },
}, },
emits: ['contactPanelToggle'],
setup() { setup() {
const isPopOutReplyBox = ref(false); const isPopOutReplyBox = ref(false);
const { isEnterprise } = useConfig(); const { isEnterprise } = useConfig();

View File

@@ -28,7 +28,7 @@ export default {
emitter.on(CMD_UNMUTE_CONVERSATION, this.unmute); emitter.on(CMD_UNMUTE_CONVERSATION, this.unmute);
emitter.on(CMD_SEND_TRANSCRIPT, this.toggleEmailActionsModal); emitter.on(CMD_SEND_TRANSCRIPT, this.toggleEmailActionsModal);
}, },
destroyed() { unmounted() {
emitter.off(CMD_MUTE_CONVERSATION, this.mute); emitter.off(CMD_MUTE_CONVERSATION, this.mute);
emitter.off(CMD_UNMUTE_CONVERSATION, this.unmute); emitter.off(CMD_UNMUTE_CONVERSATION, this.unmute);
emitter.off(CMD_SEND_TRANSCRIPT, this.toggleEmailActionsModal); emitter.off(CMD_SEND_TRANSCRIPT, this.toggleEmailActionsModal);

View File

@@ -29,6 +29,7 @@ export default {
}; };
</script> </script>
<!-- eslint-disable-next-line vue/no-root-v-if -->
<template> <template>
<span <span
v-if="priority" v-if="priority"

View File

@@ -465,12 +465,10 @@ export default {
this.onNewConversationModalActive this.onNewConversationModalActive
); );
}, },
destroyed() { unmounted() {
document.removeEventListener('paste', this.onPaste); document.removeEventListener('paste', this.onPaste);
document.removeEventListener('keydown', this.handleKeyEvents); document.removeEventListener('keydown', this.handleKeyEvents);
emitter.off(BUS_EVENTS.TOGGLE_REPLY_TO_MESSAGE, this.fetchAndSetReplyTo); emitter.off(BUS_EVENTS.TOGGLE_REPLY_TO_MESSAGE, this.fetchAndSetReplyTo);
},
unmounted() {
emitter.off( emitter.off(
BUS_EVENTS.NEW_CONVERSATION_MODAL, BUS_EVENTS.NEW_CONVERSATION_MODAL,
this.onNewConversationModalActive this.onNewConversationModalActive
@@ -1128,9 +1126,9 @@ export default {
v-if="showAudioRecorderEditor" v-if="showAudioRecorderEditor"
ref="audioRecorderInput" ref="audioRecorderInput"
:audio-record-format="audioRecordFormat" :audio-record-format="audioRecordFormat"
@recorderProgressChanged="onRecordProgressChanged" @recorder-progress-changed="onRecordProgressChanged"
@stateRecorderChanged="onStateRecorderChanged" @state-recorder-changed="onStateRecorderChanged"
@finishRecord="onFinishRecorder" @finish-record="onFinishRecorder"
/> />
<ResizableTextArea <ResizableTextArea
v-else-if="!showRichContentEditor" v-else-if="!showRichContentEditor"
@@ -1142,8 +1140,8 @@ export default {
:signature="signatureToApply" :signature="signatureToApply"
allow-signature allow-signature
:send-with-signature="sendWithSignature" :send-with-signature="sendWithSignature"
@typingOff="onTypingOff" @typing-off="onTypingOff"
@typingOn="onTypingOn" @typing-on="onTypingOn"
@focus="onFocus" @focus="onFocus"
@blur="onBlur" @blur="onBlur"
/> />
@@ -1161,21 +1159,21 @@ export default {
:signature="signatureToApply" :signature="signatureToApply"
allow-signature allow-signature
:channel-type="channelType" :channel-type="channelType"
@typingOff="onTypingOff" @typing-off="onTypingOff"
@typingOn="onTypingOn" @typing-on="onTypingOn"
@focus="onFocus" @focus="onFocus"
@blur="onBlur" @blur="onBlur"
@toggleUserMention="toggleUserMention" @toggle-user-mention="toggleUserMention"
@toggleCannedMenu="toggleCannedMenu" @toggle-canned-menu="toggleCannedMenu"
@toggleVariablesMenu="toggleVariablesMenu" @toggle-variables-menu="toggleVariablesMenu"
@clearSelection="clearEditorSelection" @clear-selection="clearEditorSelection"
/> />
</div> </div>
<div v-if="hasAttachments" class="attachment-preview-box" @paste="onPaste"> <div v-if="hasAttachments" class="attachment-preview-box" @paste="onPaste">
<AttachmentPreview <AttachmentPreview
class="flex-col mt-4" class="flex-col mt-4"
:attachments="attachedFiles" :attachments="attachedFiles"
@removeAttachment="removeAttachment" @remove-attachment="removeAttachment"
/> />
</div> </div>
<MessageSignatureMissingAlert <MessageSignatureMissingAlert
@@ -1205,16 +1203,16 @@ export default {
:message="message" :message="message"
:portal-slug="connectedPortalSlug" :portal-slug="connectedPortalSlug"
:new-conversation-modal-active="newConversationModalActive" :new-conversation-modal-active="newConversationModalActive"
@selectWhatsappTemplate="openWhatsappTemplateModal" @select-whatsapp-template="openWhatsappTemplateModal"
@toggleEditor="toggleRichContentEditor" @toggle-editor="toggleRichContentEditor"
@replaceText="replaceText" @replace-text="replaceText"
@toggleInsertArticle="toggleInsertArticle" @toggle-insert-article="toggleInsertArticle"
/> />
<WhatsappTemplates <WhatsappTemplates
:inbox-id="inbox.id" :inbox-id="inbox.id"
:show="showWhatsAppTemplatesModal" :show="showWhatsAppTemplatesModal"
@close="hideWhatsappTemplatesModal" @close="hideWhatsappTemplatesModal"
@onSend="onSendWhatsAppReply" @on-send="onSendWhatsAppReply"
@cancel="hideWhatsappTemplatesModal" @cancel="hideWhatsappTemplatesModal"
/> />

View File

@@ -9,6 +9,7 @@ export default {
required: true, required: true,
}, },
}, },
emits: ['dismiss'],
}; };
</script> </script>

View File

@@ -11,6 +11,7 @@ export default {
default: '', default: '',
}, },
}, },
emits: ['selectVariable'],
computed: { computed: {
...mapGetters({ ...mapGetters({
customAttributes: 'attributes/getAttributes', customAttributes: 'attributes/getAttributes',
@@ -62,7 +63,7 @@ export default {
v-if="items.length" v-if="items.length"
type="variable" type="variable"
:items="items" :items="items"
@mentionSelect="handleVariableClick" @mention-select="handleVariableClick"
/> />
</template> </template>

View File

@@ -19,6 +19,7 @@ export default {
default: () => ({}), default: () => ({}),
}, },
}, },
emits: ['sendMessage', 'resetTemplate'],
setup(props, { emit }) { setup(props, { emit }) {
const processVariable = str => { const processVariable = str => {
return str.replace(/{{|}}/g, ''); return str.replace(/{{|}}/g, '');

View File

@@ -9,6 +9,7 @@ export default {
default: undefined, default: undefined,
}, },
}, },
emits: ['onSelect'],
data() { data() {
return { return {
query: '', query: '',

View File

@@ -7,6 +7,7 @@ export default {
required: true, required: true,
}, },
}, },
emits: ['error'],
data() { data() {
return { return {
show: false, show: false,

View File

@@ -21,6 +21,7 @@ export default {
required: true, required: true,
}, },
}, },
emits: ['error'],
data() { data() {
return { return {
show: false, show: false,

View File

@@ -15,6 +15,7 @@ export default {
default: '', default: '',
}, },
}, },
emits: ['error'],
data() { data() {
return { return {
hasImgStoryError: false, hasImgStoryError: false,

View File

@@ -31,6 +31,7 @@ export default {
}; };
</script> </script>
<!-- eslint-disable-next-line vue/no-root-v-if -->
<template> <template>
<DyteVideoCall <DyteVideoCall
v-if="showDyteIntegration" v-if="showDyteIntegration"

View File

@@ -45,6 +45,7 @@ export default {
}; };
</script> </script>
<!-- eslint-disable-next-line vue/no-root-v-if -->
<template> <template>
<div <div
v-if="showHead" v-if="showHead"

View File

@@ -10,6 +10,7 @@ export default {
default: '', default: '',
}, },
}, },
emits: ['close'],
computed: { computed: {
translationsAvailable() { translationsAvailable() {
return !!Object.keys(this.translations).length; return !!Object.keys(this.translations).length;

View File

@@ -6,6 +6,7 @@ export default {
required: true, required: true,
}, },
}, },
emits: ['error'],
data() { data() {
return { return {
show: false, show: false,

View File

@@ -103,6 +103,7 @@ export default {
}; };
</script> </script>
<!-- eslint-disable-next-line vue/no-root-v-if -->
<template> <template>
<div <div
v-if="hasSlaThreshold" v-if="hasSlaThreshold"

View File

@@ -37,6 +37,14 @@ export default {
default: null, default: null,
}, },
}, },
emits: [
'updateConversation',
'assignPriority',
'markAsUnread',
'assignAgent',
'assignTeam',
'assignLabel',
],
data() { data() {
return { return {
STATUS_TYPE: wootConstants.STATUS_TYPE, STATUS_TYPE: wootConstants.STATUS_TYPE,

View File

@@ -150,6 +150,7 @@ export default {
}; };
</script> </script>
<!-- eslint-disable-next-line vue/no-root-v-if -->
<template> <template>
<li <li
v-if="shouldShowSuggestions" v-if="shouldShowSuggestions"

View File

@@ -18,6 +18,7 @@ export default {
default: 0, default: 0,
}, },
}, },
emits: ['select', 'close'],
data() { data() {
return { return {
query: '', query: '',

View File

@@ -48,6 +48,14 @@ export default {
default: false, default: false,
}, },
}, },
emits: [
'selectAllConversations',
'assignAgent',
'updateConversations',
'assignLabels',
'assignTeam',
'resolveConversations',
],
data() { data() {
return { return {
showAgentsList: false, showAgentsList: false,
@@ -72,7 +80,7 @@ export default {
this.onCmdResolveConversation this.onCmdResolveConversation
); );
}, },
destroyed() { unmounted() {
emitter.off( emitter.off(
CMD_BULK_ACTION_SNOOZE_CONVERSATION, CMD_BULK_ACTION_SNOOZE_CONVERSATION,
this.onCmdSnoozeConversation this.onCmdSnoozeConversation
@@ -231,7 +239,7 @@ export default {
<TeamActions <TeamActions
v-if="showTeamsList" v-if="showTeamsList"
class="team-actions-box" class="team-actions-box"
@assignTeam="assignTeam" @assign-team="assignTeam"
@close="showTeamsList = false" @close="showTeamsList = false"
/> />
</transition> </transition>
@@ -245,7 +253,7 @@ export default {
> >
<CustomSnoozeModal <CustomSnoozeModal
@close="hideCustomSnoozeModal" @close="hideCustomSnoozeModal"
@chooseTime="customSnoozeTime" @choose-time="customSnoozeTime"
/> />
</woot-modal> </woot-modal>
</div> </div>

View File

@@ -2,6 +2,7 @@
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
export default { export default {
emits: ['update', 'close', 'assign'],
data() { data() {
return { return {
query: '', query: '',

View File

@@ -1,6 +1,8 @@
<script> <script>
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
export default { export default {
emits: ['assignTeam', 'close'],
data() { data() {
return { return {
query: '', query: '',

View File

@@ -63,7 +63,7 @@ const unlinkIssue = () => {
:identifier="issue.identifier" :identifier="issue.identifier"
:link-id="linkId" :link-id="linkId"
:issue-url="issue.url" :issue-url="issue.url"
@unlinkIssue="unlinkIssue" @unlink-issue="unlinkIssue"
/> />
<span class="mt-2 text-sm font-medium text-ash-900"> <span class="mt-2 text-sm font-medium text-ash-900">

View File

@@ -120,7 +120,7 @@ const linkIssue = async () => {
:loading-placeholder="$t('INTEGRATION_SETTINGS.LINEAR.LINK.LOADING')" :loading-placeholder="$t('INTEGRATION_SETTINGS.LINEAR.LINK.LOADING')"
enable-search enable-search
class="left-0 flex flex-col w-full overflow-y-auto h-fit !max-h-[160px] md:left-auto md:right-0 top-10" class="left-0 flex flex-col w-full overflow-y-auto h-fit !max-h-[160px] md:left-auto md:right-0 top-10"
@onSearch="onSearch" @on-search="onSearch"
@select="onSelectIssue" @select="onSelectIssue"
/> />
</template> </template>

View File

@@ -119,7 +119,7 @@ onMounted(() => {
:issue="linkedIssue.issue" :issue="linkedIssue.issue"
:link-id="linkedIssue.id" :link-id="linkedIssue.id"
class="absolute right-0 top-[40px] invisible group-hover:visible" class="absolute right-0 top-[40px] invisible group-hover:visible"
@unlinkIssue="unlinkIssue" @unlink-issue="unlinkIssue"
/> />
<woot-modal <woot-modal
v-model:show="shouldShowPopup" v-model:show="shouldShowPopup"

View File

@@ -18,6 +18,7 @@ export default {
default: false, default: false,
}, },
}, },
emits: ['onAvatarSelect', 'onAvatarDelete'],
watch: {}, watch: {},
methods: { methods: {
handleImageUpload(event) { handleImageUpload(event) {

View File

@@ -16,6 +16,8 @@ defineProps({
}, },
}); });
defineEmits(['close']);
const { t } = useI18n(); const { t } = useI18n();
const shortcutKeys = SHORTCUT_KEYS; const shortcutKeys = SHORTCUT_KEYS;

View File

@@ -16,6 +16,7 @@ export default {
required: true, required: true,
}, },
}, },
emits: ['close'],
setup() { setup() {
const show = defineModel('show', { type: Boolean, default: false }); const show = defineModel('show', { type: Boolean, default: false });

View File

@@ -12,6 +12,7 @@ export default {
value: { type: [String, Number], default: '' }, value: { type: [String, Number], default: '' },
showEdit: { type: Boolean, default: false }, showEdit: { type: Boolean, default: false },
}, },
emits: ['update'],
data() { data() {
return { return {
isEditing: false, isEditing: false,

View File

@@ -9,6 +9,7 @@ export default {
default: () => ({}), default: () => ({}),
}, },
}, },
emits: ['update', 'createAttribute'],
computed: { computed: {
additionalAttributes() { additionalAttributes() {

View File

@@ -13,6 +13,7 @@ export default {
default: () => ({}), default: () => ({}),
}, },
}, },
emits: ['edit', 'message'],
computed: { computed: {
additionalAttributes() { additionalAttributes() {

View File

@@ -77,7 +77,7 @@ export default {
<ContactFields <ContactFields
:contact="contact" :contact="contact"
@update="updateField" @update="updateField"
@createAttribute="toggleCustomAttributeModal" @create-attribute="toggleCustomAttributeModal"
/> />
<EditContact <EditContact
v-if="showEditModal" v-if="showEditModal"

View File

@@ -25,6 +25,7 @@ export default {
default: () => [], default: () => [],
}, },
}, },
emits: ['search', 'submit', 'cancel'],
setup() { setup() {
return { v$: useVuelidate() }; return { v$: useVuelidate() };
}, },
@@ -115,9 +116,11 @@ export default {
:phone-number="props.option.phone_number" :phone-number="props.option.phone_number"
/> />
</template> </template>
<span slot="noResult"> <template #noResult>
{{ $t('AGENT_MGMT.SEARCH.NO_RESULTS') }} <span>
</span> {{ $t('AGENT_MGMT.SEARCH.NO_RESULTS') }}
</span>
</template>
</multiselect> </multiselect>
<span v-if="v$.parentContact.$error" class="message"> <span v-if="v$.parentContact.$error" class="message">
{{ $t('MERGE_CONTACTS.FORM.CHILD_CONTACT.ERROR') }} {{ $t('MERGE_CONTACTS.FORM.CHILD_CONTACT.ERROR') }}

View File

@@ -13,6 +13,7 @@ export default {
}; };
</script> </script>
<!-- eslint-disable-next-line vue/no-root-v-if -->
<template> <template>
<div <div
v-if="parentContactName" v-if="parentContactName"

View File

@@ -39,6 +39,7 @@ export default {
default: () => ({}), default: () => ({}),
}, },
}, },
emits: ['open', 'close', 'replyTo'],
setup() { setup() {
const { getPlainText } = useMessageFormatter(); const { getPlainText } = useMessageFormatter();
return { return {

View File

@@ -25,6 +25,7 @@ export default {
default: 0, default: 0,
}, },
}, },
emits: ['delete'],
setup() { setup() {
const { formatMessage } = useMessageFormatter(); const { formatMessage } = useMessageFormatter();
return { return {

View File

@@ -20,6 +20,7 @@ export default {
default: false, default: false,
}, },
}, },
emits: ['add', 'edit', 'delete'],
methods: { methods: {
onAddNote(value) { onAddNote(value) {

View File

@@ -6,6 +6,7 @@ export default {
default: false, default: false,
}, },
}, },
emits: ['expand'],
}; };
</script> </script>

View File

@@ -1,5 +1,7 @@
<script> <script>
export default { export default {
emits: ['search'],
data() { data() {
return { return {
searchQuery: '', searchQuery: '',

View File

@@ -10,6 +10,7 @@ export default {
default: 0, default: 0,
}, },
}, },
emits: ['tabChange'],
data() { data() {
return { return {
activeTab: 0, activeTab: 0,

View File

@@ -220,7 +220,7 @@ export default {
v-if="query" v-if="query"
:tabs="tabs" :tabs="tabs"
:selected-tab="activeTabIndex" :selected-tab="activeTabIndex"
@tabChange="tab => (selectedTab = tab)" @tab-change="tab => (selectedTab = tab)"
/> />
</header> </header>
<div class="search-results"> <div class="search-results">

View File

@@ -159,23 +159,23 @@ export default {
:route="currentRoute" :route="currentRoute"
:has-banner="hasBanner" :has-banner="hasBanner"
:show-secondary-sidebar="isSidebarOpen" :show-secondary-sidebar="isSidebarOpen"
@openNotificationPanel="openNotificationPanel" @open-notification-panel="openNotificationPanel"
@toggleAccountModal="toggleAccountModal" @toggle-account-modal="toggleAccountModal"
@openKeyShortcutModal="toggleKeyShortcutModal" @open-key-shortcut-modal="toggleKeyShortcutModal"
@closeKeyShortcutModal="closeKeyShortcutModal" @close-key-shortcut-modal="closeKeyShortcutModal"
@showAddLabelPopup="showAddLabelPopup" @show-add-label-popup="showAddLabelPopup"
/> />
<main class="flex flex-1 h-full min-h-0 px-0 overflow-hidden"> <main class="flex flex-1 h-full min-h-0 px-0 overflow-hidden">
<router-view /> <router-view />
<CommandBar /> <CommandBar />
<AccountSelector <AccountSelector
:show-account-modal="showAccountModal" :show-account-modal="showAccountModal"
@closeAccountModal="toggleAccountModal" @close-account-modal="toggleAccountModal"
@showCreateAccountModal="openCreateAccountModal" @show-create-account-modal="openCreateAccountModal"
/> />
<AddAccountModal <AddAccountModal
:show="showCreateAccountModal" :show="showCreateAccountModal"
@closeAccountCreateModal="closeCreateAccountModal" @close-account-create-modal="closeCreateAccountModal"
/> />
<WootKeyShortcutModal <WootKeyShortcutModal
v-model:show="showShortcutModal" v-model:show="showShortcutModal"

View File

@@ -66,7 +66,7 @@ useEmitter(CMD_SNOOZE_CONVERSATION, onCmdSnoozeConversation);
> >
<CustomSnoozeModal <CustomSnoozeModal
@close="hideCustomSnoozeModal" @close="hideCustomSnoozeModal"
@chooseTime="chooseSnoozeTime" @choose-time="chooseSnoozeTime"
/> />
</woot-modal> </woot-modal>
</template> </template>

View File

@@ -6,6 +6,7 @@ export default {
default: () => [], default: () => [],
}, },
}, },
emits: ['add'],
data() { data() {
return { return {
content: '', content: '',

View File

@@ -86,8 +86,8 @@ export default {
:show-avatar="showAvatar" :show-avatar="showAvatar"
:contact="contact" :contact="contact"
close-icon-name="dismiss" close-icon-name="dismiss"
@panelClose="onClose" @panel-close="onClose"
@togglePanel="onClose" @toggle-panel="onClose"
/> />
<div class="list-group"> <div class="list-group">
<Draggable <Draggable

Some files were not shown because too many files have changed in this diff Show More