Skip to content

Commit 958e3e5

Browse files
committed
Merge branch '81' of github.com:kossiecoder/vue3-basic into main
2 parents 4a0a531 + 99ad9f1 commit 958e3e5

File tree

4 files changed

+102
-34
lines changed

4 files changed

+102
-34
lines changed

src/App.vue

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,5 @@
11
<template>
2-
<nav class="navbar navbar-expand-lg navbar-light bg-light">
3-
<router-link class="navbar-brand" :to="{ name: 'Home'}">
4-
Kossie Coder
5-
</router-link>
6-
7-
<ul class="navbar-nav mr-auto">
8-
<li class="nav-item active">
9-
<router-link class="nav-link" :to="{ name: 'Todos'}">
10-
Todos
11-
</router-link>
12-
</li>
13-
</ul>
14-
</nav>
2+
<Navbar />
153
<div class="container">
164
<router-view/>
175
</div>
@@ -21,10 +9,12 @@
219

2210
<script>
2311
import Toast from '@/components/Toast.vue';
12+
import Navbar from '@/components/Navbar.vue';
2413
2514
export default {
2615
components: {
27-
Toast
16+
Toast,
17+
Navbar
2818
},
2919
}
3020
</script>

src/components/Navbar.vue

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<template>
2+
<nav class="navbar navbar-expand-lg navbar-light bg-light">
3+
<router-link class="navbar-brand" :to="{ name: 'Home'}">
4+
Kossie Coder
5+
</router-link>
6+
7+
<ul class="navbar-nav mr-auto">
8+
<li class="nav-item active">
9+
<router-link class="nav-link" :to="{ name: 'Todos'}">
10+
Todos
11+
</router-link>
12+
</li>
13+
</ul>
14+
</nav>
15+
</template>
16+
17+
<script>
18+
export default {
19+
20+
}
21+
</script>
22+
23+
<style>
24+
25+
</style>

src/components/Pagination.vue

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
<template>
2+
<nav aria-label="Page navigation example">
3+
<ul class="pagination">
4+
<li v-if="currentPage !== 1" class="page-item">
5+
<a
6+
style="cursor: pointer"
7+
class="page-link"
8+
@click="onClick(currentPage - 1)"
9+
>
10+
Previous
11+
</a>
12+
</li>
13+
<li
14+
v-for="page in numberOfPages"
15+
:key="page"
16+
class="page-item"
17+
:class="currentPage === page ? 'active' : ''"
18+
>
19+
<a
20+
style="cursor: pointer"
21+
class="page-link"
22+
@click="onClick(page)"
23+
>{{page}}</a>
24+
</li>
25+
<li v-if="numberOfPages !== currentPage" class="page-item">
26+
<a
27+
style="cursor: pointer"
28+
class="page-link"
29+
@click="onClick(currentPage + 1)"
30+
>Next</a>
31+
</li>
32+
</ul>
33+
</nav>
34+
</template>
35+
36+
<script>
37+
import { useContext } from 'vue';
38+
export default {
39+
props: {
40+
numberOfPages: {
41+
type: Number,
42+
required: true
43+
},
44+
currentPage: {
45+
type: Number,
46+
required: true
47+
}
48+
},
49+
emits: ['click'],
50+
setup() {
51+
const { emit } = useContext();
52+
const onClick = (page) => {
53+
emit('click', page)
54+
};
55+
56+
return {
57+
onClick
58+
}
59+
}
60+
}
61+
</script>
62+
63+
<style>
64+
65+
</style>

src/pages/todos/index.vue

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -28,26 +28,12 @@
2828
@delete-todo="deleteTodo"
2929
/>
3030
<hr />
31-
<nav aria-label="Page navigation example">
32-
<ul class="pagination">
33-
<li v-if="currentPage !== 1" class="page-item">
34-
<a style="cursor: pointer" class="page-link" @click="getTodos(currentPage - 1)">
35-
Previous
36-
</a>
37-
</li>
38-
<li
39-
v-for="page in numberOfPages"
40-
:key="page"
41-
class="page-item"
42-
:class="currentPage === page ? 'active' : ''"
43-
>
44-
<a style="cursor: pointer" class="page-link" @click="getTodos(page)">{{page}}</a>
45-
</li>
46-
<li v-if="numberOfPages !== currentPage" class="page-item">
47-
<a style="cursor: pointer" class="page-link" @click="getTodos(currentPage + 1)">Next</a>
48-
</li>
49-
</ul>
50-
</nav>
31+
<Pagination
32+
v-if="todos.length"
33+
:numberOfPages="numberOfPages"
34+
:currentPage="currentPage"
35+
@click="getTodos"
36+
/>
5137
</div>
5238
</template>
5339

@@ -57,10 +43,12 @@ import TodoList from '@/components/TodoList.vue';
5743
import axios from '@/axios';
5844
import { useToast } from '@/composables/toast';
5945
import {useRouter} from 'vue-router';
46+
import Pagination from '@/components/Pagination.vue';
6047
6148
export default {
6249
components: {
6350
TodoList,
51+
Pagination
6452
},
6553
setup() {
6654
const router = useRouter();

0 commit comments

Comments
 (0)