Skip to content

Commit 6c12ea3

Browse files
committed
Improve page URL fetching
1 parent edcf95a commit 6c12ea3

File tree

2 files changed

+30
-16
lines changed

2 files changed

+30
-16
lines changed

src/RenderlessPagination.vue

+24-12
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,12 @@ export default {
2727
: this.data.current_page ?? null;
2828
},
2929
firstPageUrl() {
30-
return this.isApiResource
31-
? this.data.links.first
32-
: this.data.first_page_url ?? null;
30+
return (
31+
this.data.first_page_url ??
32+
this.data.meta?.first_page_url ??
33+
this.data.links?.first ??
34+
null
35+
);
3336
},
3437
from() {
3538
return this.isApiResource
@@ -42,24 +45,33 @@ export default {
4245
: this.data.last_page ?? null;
4346
},
4447
lastPageUrl() {
45-
return this.isApiResource
46-
? this.data.links.last
47-
: this.data.last_page_url ?? null;
48+
return (
49+
this.data.last_page_url ??
50+
this.data.meta?.last_page_url ??
51+
this.data.links?.last ??
52+
null
53+
);
4854
},
4955
nextPageUrl() {
50-
return this.isApiResource
51-
? this.data.links.next
52-
: this.data.next_page_url ?? null;
56+
return (
57+
this.data.next_page_url ??
58+
this.data.meta?.next_page_url ??
59+
this.data.links?.next ??
60+
null
61+
);
5362
},
5463
perPage() {
5564
return this.isApiResource
5665
? this.data.meta.per_page
5766
: this.data.per_page ?? null;
5867
},
5968
prevPageUrl() {
60-
return this.isApiResource
61-
? this.data.links.prev
62-
: this.data.prev_page_url ?? null;
69+
return (
70+
this.data.prev_page_url ??
71+
this.data.meta?.prev_page_url ??
72+
this.data.links?.prev ??
73+
null
74+
);
6375
},
6476
to() {
6577
return this.isApiResource

tests/unit/RenderlessPagination.spec.mjs

+6-4
Original file line numberDiff line numberDiff line change
@@ -216,13 +216,15 @@ test('parses paginate data', function () {
216216

217217
expect(wrapper.vm.isApiResource).toEqual(true);
218218
expect(wrapper.vm.currentPage).toEqual(dataPaginateData.meta.current_page);
219-
expect(wrapper.vm.firstPageUrl).toEqual(dataPaginateData.links.first);
219+
expect(wrapper.vm.firstPageUrl).toEqual(
220+
dataPaginateData.meta.first_page_url
221+
);
220222
expect(wrapper.vm.from).toEqual(dataPaginateData.meta.from);
221223
expect(wrapper.vm.lastPage).toEqual(dataPaginateData.meta.last_page);
222-
expect(wrapper.vm.lastPageUrl).toEqual(dataPaginateData.links.last);
223-
expect(wrapper.vm.nextPageUrl).toEqual(dataPaginateData.links.next);
224+
expect(wrapper.vm.lastPageUrl).toEqual(dataPaginateData.meta.last_page_url);
225+
expect(wrapper.vm.nextPageUrl).toEqual(dataPaginateData.meta.next_page_url);
224226
expect(wrapper.vm.perPage).toEqual(dataPaginateData.meta.per_page);
225-
expect(wrapper.vm.prevPageUrl).toEqual(dataPaginateData.links.prev);
227+
expect(wrapper.vm.prevPageUrl).toEqual(dataPaginateData.meta.prev_page_url);
226228
expect(wrapper.vm.to).toEqual(dataPaginateData.meta.to);
227229
expect(wrapper.vm.total).toEqual(dataPaginateData.meta.total);
228230
expect(wrapper.vm.pageRange).toEqual(10);

0 commit comments

Comments
 (0)