mirror of
https://github.com/lingble/chatwoot.git
synced 2025-10-31 19:17:48 +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>
172 lines
4.1 KiB
Vue
172 lines
4.1 KiB
Vue
<template>
|
|
<footer
|
|
v-if="isFooterVisible"
|
|
class="bg-white dark:bg-slate-800 h-[60px] border-t border-solid border-slate-75 dark:border-slate-700/50 flex items-center justify-between py-0 px-4"
|
|
>
|
|
<div class="left-aligned-wrap">
|
|
<div class="text-xs text-slate-600 dark:text-slate-200">
|
|
<strong>{{ firstIndex }}</strong>
|
|
- <strong>{{ lastIndex }}</strong> of
|
|
<strong>{{ totalCount }}</strong> items
|
|
</div>
|
|
</div>
|
|
<div class="right-aligned-wrap">
|
|
<div
|
|
v-if="totalCount"
|
|
class="primary button-group pagination-button-group"
|
|
>
|
|
<woot-button
|
|
size="small"
|
|
variant="smooth"
|
|
color-scheme="secondary"
|
|
class-names="goto-first"
|
|
:is-disabled="hasFirstPage"
|
|
@click="onFirstPage"
|
|
>
|
|
<fluent-icon icon="chevron-left" size="18" />
|
|
<fluent-icon
|
|
icon="chevron-left"
|
|
size="18"
|
|
:class="pageFooterIconClass"
|
|
/>
|
|
</woot-button>
|
|
<woot-button
|
|
size="small"
|
|
variant="smooth"
|
|
color-scheme="secondary"
|
|
:is-disabled="hasPrevPage"
|
|
@click="onPrevPage"
|
|
>
|
|
<fluent-icon icon="chevron-left" size="18" />
|
|
</woot-button>
|
|
<woot-button
|
|
size="small"
|
|
variant="smooth"
|
|
color-scheme="secondary"
|
|
@click.prevent
|
|
>
|
|
{{ currentPage }}
|
|
</woot-button>
|
|
<woot-button
|
|
size="small"
|
|
variant="smooth"
|
|
color-scheme="secondary"
|
|
:is-disabled="hasNextPage"
|
|
@click="onNextPage"
|
|
>
|
|
<fluent-icon icon="chevron-right" size="18" />
|
|
</woot-button>
|
|
<woot-button
|
|
size="small"
|
|
variant="smooth"
|
|
color-scheme="secondary"
|
|
class-names="goto-last"
|
|
:is-disabled="hasLastPage"
|
|
@click="onLastPage"
|
|
>
|
|
<fluent-icon icon="chevron-right" size="18" />
|
|
<fluent-icon
|
|
icon="chevron-right"
|
|
size="18"
|
|
:class="pageFooterIconClass"
|
|
/>
|
|
</woot-button>
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
</template>
|
|
|
|
<script>
|
|
import rtlMixin from 'shared/mixins/rtlMixin';
|
|
|
|
export default {
|
|
components: {},
|
|
mixins: [rtlMixin],
|
|
props: {
|
|
currentPage: {
|
|
type: Number,
|
|
default: 1,
|
|
},
|
|
pageSize: {
|
|
type: Number,
|
|
default: 25,
|
|
},
|
|
totalCount: {
|
|
type: Number,
|
|
default: 0,
|
|
},
|
|
},
|
|
computed: {
|
|
pageFooterIconClass() {
|
|
return this.isRTLView ? '-mr-3' : '-ml-3';
|
|
},
|
|
isFooterVisible() {
|
|
return this.totalCount && !(this.firstIndex > this.totalCount);
|
|
},
|
|
firstIndex() {
|
|
return this.pageSize * (this.currentPage - 1) + 1;
|
|
},
|
|
lastIndex() {
|
|
return Math.min(this.totalCount, this.pageSize * this.currentPage);
|
|
},
|
|
searchButtonClass() {
|
|
return this.searchQuery !== '' ? 'show' : '';
|
|
},
|
|
hasLastPage() {
|
|
return !!Math.ceil(this.totalCount / this.pageSize);
|
|
},
|
|
hasFirstPage() {
|
|
return this.currentPage === 1;
|
|
},
|
|
hasNextPage() {
|
|
return this.currentPage === Math.ceil(this.totalCount / this.pageSize);
|
|
},
|
|
hasPrevPage() {
|
|
return this.currentPage === 1;
|
|
},
|
|
},
|
|
methods: {
|
|
onNextPage() {
|
|
if (this.hasNextPage) {
|
|
return;
|
|
}
|
|
const newPage = this.currentPage + 1;
|
|
this.onPageChange(newPage);
|
|
},
|
|
onPrevPage() {
|
|
if (this.hasPrevPage) {
|
|
return;
|
|
}
|
|
const newPage = this.currentPage - 1;
|
|
this.onPageChange(newPage);
|
|
},
|
|
onFirstPage() {
|
|
if (this.hasFirstPage) {
|
|
return;
|
|
}
|
|
const newPage = 1;
|
|
this.onPageChange(newPage);
|
|
},
|
|
onLastPage() {
|
|
if (this.hasLastPage) {
|
|
return;
|
|
}
|
|
const newPage = Math.ceil(this.totalCount / this.pageSize);
|
|
this.onPageChange(newPage);
|
|
},
|
|
onPageChange(page) {
|
|
this.$emit('page-change', page);
|
|
},
|
|
},
|
|
};
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.goto-first,
|
|
.goto-last {
|
|
i:last-child {
|
|
@apply -ml-1;
|
|
}
|
|
}
|
|
</style>
|