chore: Improve article list pagination logic (#7737)
This commit is contained in:
@@ -6,7 +6,7 @@
|
|||||||
<router-link :to="articleUrl(id)">
|
<router-link :to="articleUrl(id)">
|
||||||
<h6
|
<h6
|
||||||
:title="title"
|
:title="title"
|
||||||
class="text-base text-slate-800 dark:text-slate-100 mb-0 leading-6 h-6 hover:underline overflow-hidden whitespace-nowrap text-ellipsis"
|
class="text-base ltr:text-left rtl:text-right text-slate-800 dark:text-slate-100 mb-0 leading-6 h-6 hover:underline overflow-hidden whitespace-nowrap text-ellipsis"
|
||||||
>
|
>
|
||||||
{{ title }}
|
{{ title }}
|
||||||
</h6>
|
</h6>
|
||||||
|
|||||||
@@ -1,28 +1,38 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="article-container">
|
<div class="w-full">
|
||||||
<div
|
<div
|
||||||
class="article-container--header"
|
class="my-0 py-0 px-4 grid grid-cols-6 md:grid-cols-7 lg:grid-cols-8 gap-4 border-b border-slate-100 dark:border-slate-700 sticky top-16 bg-white dark:bg-slate-900"
|
||||||
:class="{ draggable: onCategoryPage }"
|
:class="{ draggable: onCategoryPage }"
|
||||||
>
|
>
|
||||||
<div class="heading-item heading-title">
|
<div
|
||||||
|
class="font-semibold capitalize text-sm py-2 px-0 text-slate-700 dark:text-slate-100 ltr:text-left rtl:text-right col-span-4"
|
||||||
|
>
|
||||||
{{ $t('HELP_CENTER.TABLE.HEADERS.TITLE') }}
|
{{ $t('HELP_CENTER.TABLE.HEADERS.TITLE') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="heading-item heading-category">
|
<div
|
||||||
|
class="font-semibold capitalize text-sm py-2 px-0 text-slate-700 dark:text-slate-100 text-right"
|
||||||
|
>
|
||||||
{{ $t('HELP_CENTER.TABLE.HEADERS.CATEGORY') }}
|
{{ $t('HELP_CENTER.TABLE.HEADERS.CATEGORY') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="heading-item heading-read-count">
|
<div
|
||||||
|
class="font-semibold capitalize text-sm py-2 px-0 text-slate-700 dark:text-slate-100 text-right hidden lg:block"
|
||||||
|
>
|
||||||
{{ $t('HELP_CENTER.TABLE.HEADERS.READ_COUNT') }}
|
{{ $t('HELP_CENTER.TABLE.HEADERS.READ_COUNT') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="heading-item heading-status">
|
<div
|
||||||
|
class="font-semibold capitalize text-sm py-2 px-0 text-slate-700 dark:text-slate-100 text-right"
|
||||||
|
>
|
||||||
{{ $t('HELP_CENTER.TABLE.HEADERS.STATUS') }}
|
{{ $t('HELP_CENTER.TABLE.HEADERS.STATUS') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="heading-item heading-last-edited">
|
<div
|
||||||
|
class="font-semibold capitalize text-sm py-2 px-0 text-slate-700 dark:text-slate-100 text-right hidden md:block"
|
||||||
|
>
|
||||||
{{ $t('HELP_CENTER.TABLE.HEADERS.LAST_EDITED') }}
|
{{ $t('HELP_CENTER.TABLE.HEADERS.LAST_EDITED') }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<draggable
|
<draggable
|
||||||
tag="div"
|
tag="div"
|
||||||
class="border-t-0"
|
class="border-t-0 px-4"
|
||||||
:disabled="!dragEnabled"
|
:disabled="!dragEnabled"
|
||||||
:list="localArticles"
|
:list="localArticles"
|
||||||
ghost-class="article-ghost-class"
|
ghost-class="article-ghost-class"
|
||||||
@@ -44,11 +54,11 @@
|
|||||||
</draggable>
|
</draggable>
|
||||||
|
|
||||||
<table-footer
|
<table-footer
|
||||||
v-if="articles.length"
|
v-if="showArticleFooter"
|
||||||
:current-page="currentPage"
|
:current-page="currentPage"
|
||||||
:total-count="totalCount"
|
:total-count="totalCount"
|
||||||
:page-size="pageSize"
|
:page-size="pageSize"
|
||||||
class="dark:bg-slate-900 border-t-0 pl-0 pr-0"
|
class="dark:bg-slate-900 sticky bottom-0 border-t-0 px-4"
|
||||||
@page-change="onPageChange"
|
@page-change="onPageChange"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -98,6 +108,11 @@ export default {
|
|||||||
onCategoryPage() {
|
onCategoryPage() {
|
||||||
return this.$route.name === 'show_category';
|
return this.$route.name === 'show_category';
|
||||||
},
|
},
|
||||||
|
showArticleFooter() {
|
||||||
|
return this.currentPage === 1
|
||||||
|
? this.totalCount > 25
|
||||||
|
: this.articles.length > 0;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
articles() {
|
articles() {
|
||||||
@@ -140,53 +155,6 @@ export default {
|
|||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.article-container {
|
|
||||||
@apply w-full;
|
|
||||||
|
|
||||||
.article-container--header {
|
|
||||||
@apply my-0 -mx-4 py-0 px-4 grid grid-cols-8 gap-4 border-b border-slate-100 dark:border-slate-700;
|
|
||||||
|
|
||||||
@media (max-width: 1024px) {
|
|
||||||
@apply grid-cols-7;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: 768px) {
|
|
||||||
@apply grid-cols-6;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.draggable {
|
|
||||||
div.heading-item.heading-title {
|
|
||||||
@apply py-2 px-3.5;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
div.heading-item {
|
|
||||||
@apply font-semibold capitalize text-sm text-right py-2 px-0 text-slate-700 dark:text-slate-100;
|
|
||||||
|
|
||||||
&.heading-title {
|
|
||||||
@apply text-left col-span-4;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: 1024px) {
|
|
||||||
&.heading-read-count {
|
|
||||||
@apply hidden;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: 768px) {
|
|
||||||
&.heading-read-count,
|
|
||||||
&.heading-last-edited {
|
|
||||||
@apply hidden;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.footer {
|
|
||||||
@apply p-0 border-0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.article-ghost-class {
|
.article-ghost-class {
|
||||||
@apply opacity-50 bg-slate-50 dark:bg-slate-800;
|
@apply opacity-50 bg-slate-50 dark:bg-slate-800;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="flex items-center justify-between w-full h-16 pt-2">
|
<div
|
||||||
|
class="flex px-4 items-center justify-between w-full h-16 pt-2 sticky top-0 bg-white dark:bg-slate-900"
|
||||||
|
>
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
<woot-sidemenu-icon />
|
<woot-sidemenu-icon />
|
||||||
<div class="flex items-center my-0 mx-2">
|
<div class="flex items-center my-0 mx-2">
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="py-0 px-4 w-full max-w-full overflow-auto">
|
<div
|
||||||
|
class="py-0 px-0 w-full max-w-full overflow-auto bg-white dark:bg-slate-900"
|
||||||
|
>
|
||||||
<article-header
|
<article-header
|
||||||
:header-title="headerTitle"
|
:header-title="headerTitle"
|
||||||
:count="meta.count"
|
:count="meta.count"
|
||||||
|
|||||||
Reference in New Issue
Block a user