mirror of
https://github.com/lingble/chatwoot.git
synced 2025-11-03 04:27:53 +00:00
* feat: Remove foundation * chore: Minor fix * Minor fix * Update _forms.scss * chore: More changes * chore: Minor fix * chore: Clean up * fix: font-weight * chore: More changes * chore: Setting page * chore: Editor fix * chore: Reports page * chore: More changes * chore: Minor changes * chore: More fixes * chore: More changes * chore: More changes * chore: More changes * chore: Minor fix * chore: More changes * chore: More changes * chore: More changes * chore: More changes * chore: Clean up * chore: Minor fix * chore: Clean ups * chore: Rename basic file * chore: Remove unused files * chore: Fix expanded input * Fix campaign rendering * chore: Clean up * chore: More changes * chore: Remove unused files * fix: Overflow issue * chore: Minor fix * chore: Clean up * chore: Minor fix * chore: Remove unused files * chore: Minor fix * chore: Minor fix * fix: autoprefixer start/end value has mixed support * chore: Minor fix * chore: Remove unused files * chore: Minor fix * chore: Minor fix * chore: Minor fix * Add responsive design to label settings * fix inbox view * chore: Minor fix * w-60% to w-2/3 * chore: Fix team * chore: Fix button * w-[34%] to w-1/3 * chore: Fix border * Add support mobile views in team page * chore: fix snackbar * chore: clean up * chore: Clean up * fix: loading state alignment * fix: alert styles * chore: Minor fix * fix: spacing for agent bot row * fix: layout * fix: layout for SLA * fix: checkbox * fix: SLA checkbox spacing * Update inbox settings pages * fix macros listing page layout * fix canned responses * chore: Fix bot page * chore: fix automation page * chore: fix agents page * chore: fix canned response editor * chore: Fix settings table * chore: fix settings layout * chore: Minor fix * fix: canned response table layou * fix: layout for table header for webhooks * fix: webhook row layout * fix: dashboard app modal layout * fix: add title to canned response truncated shortcode * fix: dashboard apps row layuot * fix: layouts hooks * fix: body color * fix: delete action color in portal locales * fix: text color for campagin title * fix: success button color --------- Co-authored-by: Pranav <pranav@chatwoot.com> Co-authored-by: Vishnu Narayanan <iamwishnu@gmail.com> Co-authored-by: Shivam Mishra <scm.mymail@gmail.com>
150 lines
3.4 KiB
Vue
150 lines
3.4 KiB
Vue
<template>
|
|
<div v-on-clickaway="onClose" class="actions-container">
|
|
<div class="triangle">
|
|
<svg height="12" viewBox="0 0 24 12" width="24">
|
|
<path d="M20 12l-8-8-12 12" fill-rule="evenodd" stroke-width="1px" />
|
|
</svg>
|
|
</div>
|
|
<div class="header flex items-center justify-between">
|
|
<span>{{ $t('BULK_ACTION.UPDATE.CHANGE_STATUS') }}</span>
|
|
<woot-button
|
|
size="tiny"
|
|
variant="clear"
|
|
color-scheme="secondary"
|
|
icon="dismiss"
|
|
@click="onClose"
|
|
/>
|
|
</div>
|
|
<div class="container">
|
|
<woot-dropdown-menu>
|
|
<template v-for="action in actions">
|
|
<woot-dropdown-item v-if="showAction(action.key)" :key="action.key">
|
|
<woot-button
|
|
variant="clear"
|
|
color-scheme="secondary"
|
|
size="small"
|
|
:icon="action.icon"
|
|
@click="updateConversations(action.key)"
|
|
>
|
|
{{ actionLabel(action.key) }}
|
|
</woot-button>
|
|
</woot-dropdown-item>
|
|
</template>
|
|
</woot-dropdown-menu>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import { mixin as clickaway } from 'vue-clickaway';
|
|
import WootDropdownItem from 'shared/components/ui/dropdown/DropdownItem.vue';
|
|
import WootDropdownMenu from 'shared/components/ui/dropdown/DropdownMenu.vue';
|
|
|
|
export default {
|
|
components: {
|
|
WootDropdownItem,
|
|
WootDropdownMenu,
|
|
},
|
|
mixins: [clickaway],
|
|
props: {
|
|
selectedInboxes: {
|
|
type: Array,
|
|
default: () => [],
|
|
},
|
|
conversationCount: {
|
|
type: Number,
|
|
default: 0,
|
|
},
|
|
showResolve: {
|
|
type: Boolean,
|
|
default: true,
|
|
},
|
|
showReopen: {
|
|
type: Boolean,
|
|
default: true,
|
|
},
|
|
showSnooze: {
|
|
type: Boolean,
|
|
default: true,
|
|
},
|
|
},
|
|
data() {
|
|
return {
|
|
query: '',
|
|
selectedAction: null,
|
|
actions: [
|
|
{
|
|
icon: 'checkmark',
|
|
key: 'resolved',
|
|
},
|
|
{
|
|
icon: 'arrow-redo',
|
|
key: 'open',
|
|
},
|
|
{
|
|
icon: 'send-clock',
|
|
key: 'snoozed',
|
|
},
|
|
],
|
|
};
|
|
},
|
|
methods: {
|
|
updateConversations(key) {
|
|
this.$emit('update', key);
|
|
},
|
|
goBack() {
|
|
this.selectedAgent = null;
|
|
},
|
|
onClose() {
|
|
this.$emit('close');
|
|
},
|
|
showAction(key) {
|
|
const actionsMap = {
|
|
resolved: this.showResolve,
|
|
open: this.showReopen,
|
|
snoozed: this.showSnooze,
|
|
};
|
|
return actionsMap[key] || false;
|
|
},
|
|
actionLabel(key) {
|
|
const labelsMap = {
|
|
resolved: this.$t('CONVERSATION.HEADER.RESOLVE_ACTION'),
|
|
open: this.$t('CONVERSATION.HEADER.REOPEN_ACTION'),
|
|
snoozed: this.$t('BULK_ACTION.UPDATE.SNOOZE_UNTIL_NEXT_REPLY'),
|
|
};
|
|
return labelsMap[key] || '';
|
|
},
|
|
},
|
|
};
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
.actions-container {
|
|
@apply absolute right-2 top-12 origin-top-right w-auto z-20 bg-white dark:bg-slate-800 rounded-lg border border-solid border-slate-50 dark:border-slate-700 shadow-md;
|
|
|
|
.header {
|
|
@apply p-2.5;
|
|
|
|
span {
|
|
@apply text-sm font-medium;
|
|
}
|
|
}
|
|
.container {
|
|
@apply px-2.5 pt-0 pb-2.5;
|
|
}
|
|
|
|
.triangle {
|
|
right: var(--triangle-position);
|
|
@apply block z-10 absolute text-left -top-3;
|
|
|
|
svg path {
|
|
@apply fill-white dark:fill-slate-800 stroke-slate-50 dark:stroke-slate-600/50;
|
|
}
|
|
}
|
|
}
|
|
|
|
ul {
|
|
@apply m-0 list-none;
|
|
}
|
|
</style>
|