Skip to content

Commit

Permalink
Pagination: add pageOnEmptyData option
Browse files Browse the repository at this point in the history
  • Loading branch information
Jaza committed Mar 22, 2021
1 parent e3729ec commit d7db502
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 1 deletion.
6 changes: 5 additions & 1 deletion src/Plugins/Pagination.js
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,11 @@ class Pagination {
let hrefs = [];
let overrides = [];

for (let pageNumber = 0, k = items.length; pageNumber < k; pageNumber++) {
const totalPages =
items.length ? items.length : (
this.data.pagination.pageOnEmptyData ? 1 : 0);

for (let pageNumber = 0; pageNumber < totalPages; pageNumber++) {
let cloned = tmpl.clone();

// TODO maybe also move this permalink additions up into the pagination class
Expand Down
40 changes: 40 additions & 0 deletions test/PaginationTest.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,46 @@ test("No pagination", async (t) => {
t.is((await paging.getPageTemplates()).length, 0);
});

test("Empty paged data", async (t) => {
let eleventyConfig = new TemplateConfig();
let tmpl = getNewTemplate(
"./test/stubs/paged/paged-empty.njk",
"./test/stubs/",
"./dist",
null,
null,
eleventyConfig
);

let data = await tmpl.getData();
let paging = new Pagination(data, tmpl.config);
paging.setTemplate(tmpl);

t.is(paging.getPageCount(), 0);
t.is(paging.pagedItems.length, 0);
t.is((await paging.getPageTemplates()).length, 0);
});

test("Empty paged data with pageOnEmptyData enabled", async (t) => {
let eleventyConfig = new TemplateConfig();
let tmpl = getNewTemplate(
"./test/stubs/paged/paged-empty-pageonemptydata.njk",
"./test/stubs/",
"./dist",
null,
null,
eleventyConfig
);

let data = await tmpl.getData();
let paging = new Pagination(data, tmpl.config);
paging.setTemplate(tmpl);

t.is(paging.getPageCount(), 0);
t.is(paging.pagedItems.length, 0);
t.is((await paging.getPageTemplates()).length, 1);
});

test("Pagination enabled in frontmatter", async (t) => {
let eleventyConfig = new TemplateConfig();
let tmpl = getNewTemplate(
Expand Down
8 changes: 8 additions & 0 deletions test/stubs/paged/paged-empty-pageonemptydata.njk
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
pagination:
data: items
size: 1
pageOnEmptyData: true
items: []
---
<ol>{% for item in pagination.items %}<li>{{ item }}</li>{% endfor %}</ol>
7 changes: 7 additions & 0 deletions test/stubs/paged/paged-empty.njk
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
pagination:
data: items
size: 1
items: []
---
<ol>{% for item in pagination.items %}<li>{{ item }}</li>{% endfor %}</ol>

0 comments on commit d7db502

Please sign in to comment.