fix: wip pagination
This commit is contained in:
parent
c2ba6cf36f
commit
0bc5deb958
49
components/global/Pagination.vue
Normal file
49
components/global/Pagination.vue
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
<template>
|
||||||
|
<nav class="pagination is-rounded" role="navigation" aria-label="pagination">
|
||||||
|
<a class="pagination-previous">Previous</a>
|
||||||
|
<a class="pagination-next">Next page</a>
|
||||||
|
<ul class="pagination-list">
|
||||||
|
<li>
|
||||||
|
Page {{ currentPage }} / {{ totalPage }}
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import { Vue, Component, Prop } from 'nuxt-property-decorator'
|
||||||
|
@Component
|
||||||
|
export default class Pagination extends Vue {
|
||||||
|
@Prop({ type: Number }) total
|
||||||
|
|
||||||
|
@Prop({ type: Number }) perPage
|
||||||
|
|
||||||
|
get totalPage () {
|
||||||
|
return Math.ceil(this.total / this.perPage)
|
||||||
|
}
|
||||||
|
|
||||||
|
get currentPage () {
|
||||||
|
return Number(this.$route.query.page) || 1
|
||||||
|
}
|
||||||
|
|
||||||
|
get nextPage () {
|
||||||
|
return (this.currentPage <= this.totalPage) ? this.currentPage + 1 : this.currentPage
|
||||||
|
}
|
||||||
|
|
||||||
|
get prevPage () {
|
||||||
|
return (this.currentPage >= 1) ? this.currentPage - 1 : this.currentPage
|
||||||
|
}
|
||||||
|
|
||||||
|
get isFirstPage () {
|
||||||
|
return this.currentPage === 1
|
||||||
|
}
|
||||||
|
|
||||||
|
get isLastPage () {
|
||||||
|
return this.currentPage === this.totalPage
|
||||||
|
}
|
||||||
|
|
||||||
|
mounted () {
|
||||||
|
console.log('Total page: ' + this.totalPage)
|
||||||
|
console.log('Current page: ' + this.currentPage)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
@ -24,7 +24,7 @@
|
|||||||
</p>
|
</p>
|
||||||
<br>
|
<br>
|
||||||
<NuxtLink :to="{name: 'blog-slug', params: { slug: firstBlog.slug }}" class="button is-primary">
|
<NuxtLink :to="{name: 'blog-slug', params: { slug: firstBlog.slug }}" class="button is-primary">
|
||||||
Read More
|
Đọc thêm
|
||||||
</NuxtLink>
|
</NuxtLink>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -26,10 +26,10 @@
|
|||||||
</p>
|
</p>
|
||||||
<br>
|
<br>
|
||||||
<NuxtLink
|
<NuxtLink
|
||||||
:to="blog.path"
|
:to="{ name: 'blog-slug', params: { slug: blog.slug }}"
|
||||||
class="button is-primary"
|
class="button is-primary"
|
||||||
>
|
>
|
||||||
Read More
|
Đọc thêm
|
||||||
</NuxtLink>
|
</NuxtLink>
|
||||||
</div>
|
</div>
|
||||||
</article>
|
</article>
|
||||||
|
@ -8,6 +8,14 @@
|
|||||||
<ListBlog :list-blogs="paginatedArticles" />
|
<ListBlog :list-blogs="paginatedArticles" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="columns">
|
||||||
|
<div class="column is-10 is-offset-1">
|
||||||
|
<Pagination
|
||||||
|
:total="allArticles.length"
|
||||||
|
:per-page="perPage"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</template>
|
</template>
|
||||||
@ -24,12 +32,13 @@ import ListBlog from '@/components/organisms/ListBlog.vue'
|
|||||||
ListBlog
|
ListBlog
|
||||||
},
|
},
|
||||||
async asyncData ({ $content, params, error }) {
|
async asyncData ({ $content, params, error }) {
|
||||||
|
const perPage = 8
|
||||||
const content = await getContent($content, params, error, 'blog')
|
const content = await getContent($content, params, error, 'blog')
|
||||||
|
|
||||||
console.log(content)
|
|
||||||
return {
|
return {
|
||||||
allArticles: content.allArticles,
|
allArticles: content.allArticles,
|
||||||
paginatedArticles: content.paginatedArticles
|
paginatedArticles: content.paginatedArticles,
|
||||||
|
perPage
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
head () {
|
head () {
|
||||||
@ -65,6 +74,10 @@ export default class PageBlog extends Vue {
|
|||||||
padding: 1.5rem;
|
padding: 1.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.blog-posts nav {
|
||||||
|
padding: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
.blog-posts .post img {
|
.blog-posts .post img {
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user