5
5
* view the LICENSE file that was distributed with this source code.
6
6
*/
7
7
8
- import Vue , { CreateElement , VNode } from 'vue' ;
8
+ import { VNode , defineComponent , h } from 'vue' ;
9
9
10
10
export type PaginationMeta = {
11
11
limit ?: number ,
@@ -14,11 +14,7 @@ export type PaginationMeta = {
14
14
page ?: number
15
15
} ;
16
16
17
- export type PaginationProperties = PaginationMeta & {
18
- busy : boolean
19
- } ;
20
-
21
- export const Pagination = Vue . extend < any , any , any , PaginationProperties > ( {
17
+ export const Pagination = defineComponent ( {
22
18
props : {
23
19
total : {
24
20
type : Number ,
@@ -74,50 +70,43 @@ export const Pagination = Vue.extend<any, any, any, PaginationProperties>({
74
70
this . $emit ( 'load' , data ) ;
75
71
} ,
76
72
} ,
77
- render ( createElement : CreateElement ) : VNode {
73
+ render ( ) : VNode {
78
74
// eslint-disable-next-line @typescript-eslint/no-this-alias
79
75
const vm = this ;
80
- const h = createElement ;
81
76
82
- let prevPage = h ( ) ;
77
+ let prevPage = h ( '' ) ;
83
78
if ( vm . currentPage > 1 ) {
84
- prevPage = h ( 'li' , { staticClass : 'page-item' } , [
79
+ prevPage = h ( 'li' , { class : 'page-item' } , [
85
80
h ( 'button' , {
86
- staticClass : 'page-link' ,
87
- domProps : {
88
- disabled : vm . busy ,
89
- } ,
90
- on : {
91
- click ( $event : any ) {
92
- $event . preventDefault ( ) ;
81
+ class : 'page-link' ,
82
+ disabled : vm . busy ,
83
+ onClick ( $event : any ) {
84
+ $event . preventDefault ( ) ;
93
85
94
- // eslint-disable-next-line prefer-rest-params
95
- return vm . goTo ( vm . currentPage - 1 ) ;
96
- } ,
86
+ // eslint-disable-next-line prefer-rest-params
87
+ return vm . goTo ( vm . currentPage - 1 ) ;
97
88
} ,
98
89
} , [
99
- h ( 'i' , { staticClass : 'fa fa-chevron-left' } ) ,
90
+ h ( 'i' , { class : 'fa fa-chevron-left' } ) ,
100
91
] ) ,
101
92
] ) ;
102
93
}
103
94
104
95
const betweenPages = [ ] ;
105
96
106
97
for ( let i = 0 ; i < vm . pages . length ; i ++ ) {
107
- const node = h ( 'li' , { staticClass : 'page-item' } , [
98
+ const node = h ( 'li' , { class : 'page-item' } , [
108
99
h ( 'button' , {
109
- class : { active : vm . pages [ i ] === vm . currentPage } ,
110
- staticClass : 'page-link' ,
111
- domProps : {
112
- disabled : vm . busy ,
100
+ class : {
101
+ active : vm . pages [ i ] === vm . currentPage ,
102
+ 'page-link' : true ,
113
103
} ,
114
- on : {
115
- click ( $event : any ) {
116
- $event . preventDefault ( ) ;
104
+ disabled : vm . busy ,
105
+ onClick ( $event : any ) {
106
+ $event . preventDefault ( ) ;
117
107
118
- // eslint-disable-next-line prefer-rest-params
119
- return vm . goTo ( vm . pages [ i ] ) ;
120
- } ,
108
+ // eslint-disable-next-line prefer-rest-params
109
+ return vm . goTo ( vm . pages [ i ] ) ;
121
110
} ,
122
111
} , [
123
112
vm . pages [ i ] ,
@@ -127,29 +116,25 @@ export const Pagination = Vue.extend<any, any, any, PaginationProperties>({
127
116
betweenPages . push ( node ) ;
128
117
}
129
118
130
- let nextPage = h ( ) ;
119
+ let nextPage = h ( '' ) ;
131
120
if ( vm . currentPage < vm . totalPages ) {
132
- nextPage = h ( 'li' , { staticClass : 'page-item' } , [
121
+ nextPage = h ( 'li' , { class : 'page-item' } , [
133
122
h ( 'button' , {
134
- staticClass : 'page-link' ,
135
- domProps : {
136
- disabled : vm . busy ,
137
- } ,
138
- on : {
139
- click ( $event : any ) {
140
- $event . preventDefault ( ) ;
123
+ class : 'page-link' ,
124
+ disabled : vm . busy ,
125
+ onClick ( $event : any ) {
126
+ $event . preventDefault ( ) ;
141
127
142
- // eslint-disable-next-line prefer-rest-params
143
- return vm . goTo ( vm . currentPage + 1 ) ;
144
- } ,
128
+ // eslint-disable-next-line prefer-rest-params
129
+ return vm . goTo ( vm . currentPage + 1 ) ;
145
130
} ,
146
131
} , [
147
- h ( 'i' , { staticClass : 'fa fa-chevron-right' } ) ,
132
+ h ( 'i' , { class : 'fa fa-chevron-right' } ) ,
148
133
] ) ,
149
134
] ) ;
150
135
}
151
136
152
- return h ( 'ul' , { staticClass : 'pagination justify-content-center' } , [
137
+ return h ( 'ul' , { class : 'pagination justify-content-center' } , [
153
138
prevPage ,
154
139
betweenPages ,
155
140
nextPage ,
0 commit comments