File tree 8 files changed +75
-4
lines changed
8 files changed +75
-4
lines changed Original file line number Diff line number Diff line change 8
8
class="mb-0"
9
9
:data="laravelData"
10
10
:limit="limit"
11
+ :keep-length="keepLength"
11
12
:show-disabled="showDisabled"
12
13
:size="size"
13
14
:align="align"
23
24
class="mb-0"
24
25
:data="laravelData"
25
26
:limit="limit"
27
+ :keep-length="keepLength"
26
28
:show-disabled="showDisabled"
27
29
:size="size"
28
30
:align="align"
36
38
<TailwindPagination
37
39
:data="laravelData"
38
40
:limit="limit"
41
+ :keep-length="keepLength"
39
42
@pagination-change-page="getResults"
40
43
/>
41
44
</RenderToIFrame >
@@ -81,6 +84,7 @@ export default {
81
84
laravelResourceData: {},
82
85
style: ' bootstrap4' ,
83
86
limit: 2 ,
87
+ keepLength: false ,
84
88
showDisabled: false ,
85
89
size: ' default' ,
86
90
align: ' left'
@@ -143,6 +147,9 @@ export default {
143
147
this .limit = 0 ;
144
148
}
145
149
},
150
+ keepLength (newVal ) {
151
+ this .keepLength = Boolean (newVal);
152
+ },
146
153
},
147
154
}
148
155
</script >
@@ -155,4 +162,4 @@ iframe {
155
162
height : 4rem ;
156
163
background-color : transparent ;
157
164
}
158
- </style >
165
+ </style >
Original file line number Diff line number Diff line change @@ -11,6 +11,7 @@ Below is an example of how you might use the `RenderlessPagination` component to
11
11
<RenderlessPagination
12
12
:data="data"
13
13
:limit="limit"
14
+ :keep-length="keepLength"
14
15
@pagination-change-page="onPaginationChangePage"
15
16
v-slot="slotProps"
16
17
>
@@ -70,6 +71,10 @@ export default {
70
71
type: Number,
71
72
default: 0
72
73
},
74
+ keepLength: {
75
+ type: Boolean,
76
+ default: false
77
+ },
73
78
},
74
79
75
80
methods: {
@@ -92,6 +97,10 @@ The `data` prop that was passed to the `RenderlessPagination` component.
92
97
93
98
The ` limit ` prop that was passed to the ` RenderlessPagination ` component.
94
99
100
+ ### keepLength
101
+
102
+ The ` keepLength ` prop that was passed to the ` RenderlessPagination ` component.
103
+
95
104
### computed
96
105
97
106
Some computed properties that are used by the ` RenderlessPagination ` component:
@@ -125,4 +134,4 @@ An object containing the event listeners for the next button:
125
134
126
135
An function containing the event listeners for a page button. Takes the ` page ` number as an argument:
127
136
128
- * ` click ` - Event listener for the ` click ` event
137
+ * ` click ` - Event listener for the ` click ` event
Original file line number Diff line number Diff line change @@ -14,3 +14,8 @@ An object containing the structure of a [Laravel paginator](https://laravel.com/
14
14
15
15
Limit of pages to be rendered. ` 0 ` shows all pages (default). ` -1 ` will hide numeric pages and leave only arrow navigation. Any positive integer (e.g. ` 2 ` ) will define how many pages should be shown on either side of the current page when only a range of pages are shown.
16
16
17
+ ## keepLength
18
+
19
+ * ` Boolean ` (optional)
20
+
21
+ When ` true ` , the pagination component will keep the same length regardless of the position of the page number. This is useful when you want to keep the pagination component always the same size and not vary at the first or last pages. It does uses the ` limit ` to determine the length of the pagination component.
Original file line number Diff line number Diff line change 2
2
<RenderlessPagination
3
3
:data =" data"
4
4
:limit =" limit"
5
+ :keep-length =" keepLength"
5
6
@pagination-change-page =" onPaginationChangePage"
6
7
v-slot =" slotProps"
7
8
>
@@ -70,6 +71,10 @@ export default {
70
71
type: Number ,
71
72
default: 0
72
73
},
74
+ keepLength: {
75
+ type: Boolean ,
76
+ default: false
77
+ },
73
78
showDisabled: {
74
79
type: Boolean ,
75
80
default: false
Original file line number Diff line number Diff line change 2
2
<RenderlessPagination
3
3
:data =" data"
4
4
:limit =" limit"
5
+ :keep-length =" keepLength"
5
6
@pagination-change-page =" onPaginationChangePage"
6
7
v-slot =" slotProps"
7
8
>
@@ -71,6 +72,10 @@ export default {
71
72
type: Boolean ,
72
73
default: false
73
74
},
75
+ keepLength: {
76
+ type: Boolean ,
77
+ default: false
78
+ },
74
79
size: {
75
80
type: String ,
76
81
default: ' default' ,
Original file line number Diff line number Diff line change @@ -11,6 +11,10 @@ export default {
11
11
type: Number ,
12
12
default: 0
13
13
},
14
+ keepLength: {
15
+ type: Boolean ,
16
+ default: false
17
+ },
14
18
},
15
19
16
20
computed: {
@@ -57,16 +61,32 @@ export default {
57
61
}
58
62
59
63
var current = this .currentPage ;
64
+ var size = this .keepLength ;
60
65
var last = this .lastPage ;
61
66
var delta = this .limit ;
62
67
var left = current - delta;
63
- var right = current + delta + 1 ;
68
+ var right = current + delta;
69
+ var leftPad = (delta + 2 ) * 2 ;
70
+ var rightPad = ((delta + 2 ) * 2 ) - 1 ;
64
71
var range = [];
65
72
var pages = [];
66
73
var l;
67
74
68
75
for (var i = 1 ; i <= last; i++ ) {
69
- if (i === 1 || i === last || (i >= left && i < right)) {
76
+ // Item is first or last
77
+ if (i === 1 || i === last) {
78
+ range .push (i);
79
+ }
80
+ // Item is within the delta
81
+ else if (i >= left && i <= right) {
82
+ range .push (i);
83
+ }
84
+ // Item is before max left padding
85
+ else if (size && i < leftPad && current < leftPad - 2 ) {
86
+ range .push (i);
87
+ }
88
+ // Item is after max right padding
89
+ else if (size && i > last - rightPad && current > last - rightPad + 2 ) {
70
90
range .push (i);
71
91
}
72
92
}
Original file line number Diff line number Diff line change 2
2
<RenderlessPagination
3
3
:data =" data"
4
4
:limit =" limit"
5
+ :keep-length =" keepLength"
5
6
@pagination-change-page =" onPaginationChangePage"
6
7
v-slot =" slotProps"
7
8
>
@@ -87,6 +88,10 @@ export default {
87
88
type: Number ,
88
89
default: 0
89
90
},
91
+ keepLength: {
92
+ type: Boolean ,
93
+ default: false
94
+ },
90
95
itemClasses: {
91
96
type: Array ,
92
97
default : () => [
Original file line number Diff line number Diff line change 24
24
</select >
25
25
</div >
26
26
</div >
27
+ <div class =" row" >
28
+ <div class =" col" >
29
+ <div class =" form-check" >
30
+ <input class =" form-check-input" type =" checkbox" id =" keep-length" v-model =" keepLength" >
31
+ <label class =" form-check-label" for =" keep-length" >Keep Length</label >
32
+ </div >
33
+ </div >
34
+ </div >
27
35
<div class =" row" >
28
36
<div class =" col" >
29
37
<div class =" form-check" >
43
51
class =" mb-0"
44
52
:data =" laravelData"
45
53
:limit =" limit"
54
+ :keep-length =" keepLength"
46
55
:show-disabled =" showDisabled"
47
56
:size =" size"
48
57
:align =" align"
57
66
class =" mb-0"
58
67
:data =" laravelData"
59
68
:limit =" limit"
69
+ :keep-length =" keepLength"
60
70
:show-disabled =" showDisabled"
61
71
:size =" size"
62
72
:align =" align"
69
79
<TailwindPagination
70
80
:data =" laravelData"
71
81
:limit =" limit"
82
+ :keep-length =" keepLength"
72
83
@pagination-change-page =" getResults"
73
84
/>
74
85
</RenderToIFrame >
@@ -119,6 +130,7 @@ export default {
119
130
laravelResourceData: {},
120
131
style: ' bootstrap4' ,
121
132
limit: 2 ,
133
+ keepLength: false ,
122
134
showDisabled: false ,
123
135
size: ' default' ,
124
136
align: ' left'
@@ -181,6 +193,9 @@ export default {
181
193
this .limit = 0 ;
182
194
}
183
195
},
196
+ keepLength (newVal ) {
197
+ this .keepLength = Boolean (newVal);
198
+ },
184
199
},
185
200
}
186
201
</script >
You can’t perform that action at this time.
0 commit comments