gitlab-org--gitlab-foss/app/assets/javascripts/vue_pagination/index.js.es6

67 lines
1.8 KiB
JavaScript
Raw Normal View History

/* global Vue, gl */
/* eslint-disable no-param-reassign */
((gl) => {
gl.VueGlPagination = Vue.extend({
props: [
'changepage',
'pages',
'count',
'pagenum',
],
methods: {
pagenumberstatus(n) {
2016-11-03 13:42:12 -04:00
if (n - 1 === +this.pagenum) return 'active';
return '';
},
prevstatus() {
if (+this.pagenum > 1) return '';
return 'prev disabled';
},
},
computed: {
2016-11-03 13:34:18 -04:00
last() {
return Math.ceil(+this.count / 5);
2016-11-03 13:34:18 -04:00
},
lastpage() {
return `pipelines?p=${this.last}`;
},
upcount() {
return +this.last + 1;
},
prev() {
if (this.pagenum === 1) return 1;
return this.pagenum - 1;
},
},
template: `
<div class="gl-pagination">
2016-11-03 13:34:18 -04:00
<ul class="pagination clearfix" v-for='n in upcount'>
<li :class='prevstatus(n)' v-if='n === 1'>
<span @click='changepage($event, {where: pagenum - 1})'>Prev</span>
</li>
<li :class='pagenumberstatus(n)' v-else>
<span @click='changepage($event)'>{{(n - 1)}}</span>
</li>
<!--
take a slice of current array (up to 5)
if at end make dots dissapear
if in second slice or more make dots appear in the front
-->
<li v-if='n === upcount && upcount > 4'>
2016-11-03 13:42:12 -04:00
<span class="gap"></span>
2016-11-03 13:32:22 -04:00
</li>
<li class="next" v-if='n === upcount && pagenum !== last'>
<span @click='changepage($event, {where: pagenum + 1})'>
Next
</span>
</li>
2016-11-03 13:32:22 -04:00
<li class="last" v-if='n === upcount && pagenum !== last'>
<span @click='changepage($event, {last: last})'>Last »</span>
</li>
</ul>
</div>
`,
});
})(window.gl || (window.gl = {}));