|
9 | 9 | <CLink |
10 | 10 | class="c-page-link" |
11 | 11 | @click="setPage(1)" |
12 | | - :disabled="page === 1" |
| 12 | + :disabled="activePage === 1" |
13 | 13 | aria-label="Go to first page" |
14 | 14 | > |
15 | 15 | <span v-html="firstButtonHtml"></span> |
|
18 | 18 | <li v-if="!hideArrows" :class="firstClasses"> |
19 | 19 | <CLink |
20 | 20 | class="c-page-link" |
21 | | - @click="setPage(page - 1)" |
22 | | - :disabled="page === 1" |
| 21 | + @click="setPage(activePage - 1)" |
| 22 | + :disabled="activePage === 1" |
23 | 23 | aria-label="Go to previous page" |
24 | 24 | > |
25 | 25 | <span v-html="previousButtonHtml"></span> |
|
60 | 60 | > |
61 | 61 | <CLink |
62 | 62 | class="c-page-link" |
63 | | - @click="setPage(page + 1)" |
64 | | - :disabled="page === pages" |
| 63 | + @click="setPage(activePage + 1)" |
| 64 | + :disabled="activePage === pages" |
65 | 65 | aria-label="Go to next page" |
66 | 66 | > |
67 | 67 | <span v-html="nextButtonHtml"></span> |
|
71 | 71 | <CLink |
72 | 72 | class="c-page-link" |
73 | 73 | @click="setPage(pages)" |
74 | | - :disabled="page === pages" |
| 74 | + :disabled="activePage === pages" |
75 | 75 | aria-label="Go to last page" |
76 | 76 | > |
77 | 77 | <span v-html="lastButtonHtml"></span> |
|
85 | 85 |
|
86 | 86 | export default { |
87 | 87 | name: 'CPagination', |
| 88 | + props: { |
| 89 | + activePage: { |
| 90 | + type: Number, |
| 91 | + default: 1 |
| 92 | + }, |
| 93 | + pages: { |
| 94 | + type: Number, |
| 95 | + default: 10 |
| 96 | + }, |
| 97 | + size: { |
| 98 | + type: String, |
| 99 | + default: 'md', |
| 100 | + validator: val => ['sm', 'md', 'lg'].includes(val) |
| 101 | + }, |
| 102 | + align: { |
| 103 | + type: String, |
| 104 | + default: 'start', |
| 105 | + validator: val => ['start', 'center', 'end'].includes(val) |
| 106 | + }, |
| 107 | + limit: { |
| 108 | + type: Number, |
| 109 | + default: 5 |
| 110 | + }, |
| 111 | + hideDots: Boolean, |
| 112 | + hideArrows: Boolean, |
| 113 | + hideDoubleArrows: Boolean, |
| 114 | + firstButtonHtml: { |
| 115 | + type: String, |
| 116 | + default: '«' |
| 117 | + }, |
| 118 | + previousButtonHtml: { |
| 119 | + type: String, |
| 120 | + default: '‹' |
| 121 | + }, |
| 122 | + nextButtonHtml: { |
| 123 | + type: String, |
| 124 | + default: '›' |
| 125 | + }, |
| 126 | + lastButtonHtml: { |
| 127 | + type: String, |
| 128 | + default: '»' |
| 129 | + }, |
| 130 | + notResponsive: Boolean |
| 131 | + }, |
88 | 132 | data () { |
89 | 133 | return { |
90 | | - page: this.activePage, |
91 | 134 | showFirstDots: false, |
92 | 135 | showLastDots: false, |
93 | 136 | rwd: this.size, |
|
99 | 142 | // this.page = val |
100 | 143 | // }, |
101 | 144 | pages (val) { |
102 | | - if(val < this.activePage) |
| 145 | + if (val < this.activePage) { |
103 | 146 | this.$emit('update:activePage', val) |
| 147 | + } |
104 | 148 | } |
105 | 149 | }, |
106 | 150 | mounted () { |
107 | | - if (this.size !== 'sm' && !this.notResponsive) |
| 151 | + if (this.size !== 'sm' && !this.notResponsive) { |
108 | 152 | this.erd.listenTo(this.$el, this.onWrapperResize) |
| 153 | + } |
109 | 154 | }, |
110 | 155 | computed: { |
111 | 156 | firstClasses () { |
|
188 | 233 | } |
189 | 234 | return 'c-page-item' |
190 | 235 | } |
191 | | - }, |
192 | | - props: { |
193 | | - activePage: { |
194 | | - type: Number, |
195 | | - default: 1 |
196 | | - }, |
197 | | - pages: { |
198 | | - type: Number, |
199 | | - default: 10 |
200 | | - }, |
201 | | - size: { |
202 | | - type: String, |
203 | | - default: 'md', |
204 | | - validator: val => ['sm', 'md', 'lg'].includes(val) |
205 | | - }, |
206 | | - align: { |
207 | | - type: String, |
208 | | - default: 'start', |
209 | | - validator: val => ['start', 'center', 'end'].includes(val) |
210 | | - }, |
211 | | - limit: { |
212 | | - type: Number, |
213 | | - default: 5 |
214 | | - }, |
215 | | - hideDots: Boolean, |
216 | | - hideArrows: Boolean, |
217 | | - hideDoubleArrows: Boolean, |
218 | | - firstButtonHtml: { |
219 | | - type: String, |
220 | | - default: '«' |
221 | | - }, |
222 | | - previousButtonHtml: { |
223 | | - type: String, |
224 | | - default: '‹' |
225 | | - }, |
226 | | - nextButtonHtml: { |
227 | | - type: String, |
228 | | - default: '›' |
229 | | - }, |
230 | | - lastButtonHtml: { |
231 | | - type: String, |
232 | | - default: '»' |
233 | | - }, |
234 | | - notResponsive: Boolean |
235 | 236 | } |
236 | 237 | } |
237 | 238 | </script> |
238 | 239 |
|
239 | | -<style scoped lang="scss"> |
| 240 | +<style lang="scss"> |
240 | 241 | @import "~@coreui/coreui/scss/partials/pagination.scss"; |
241 | 242 | @import "~@coreui/coreui/scss/utilities/_flex.scss"; |
242 | 243 | .c-page-link:focus { |
|
0 commit comments