From 42650fffc46bb29bc26b4e4d1c2eda8d866a66ba Mon Sep 17 00:00:00 2001 From: vseventer Date: Sun, 24 May 2020 09:17:01 -0400 Subject: [PATCH] Pass data to pagination before callback. --- src/Plugins/Pagination.js | 2 +- test/PaginationTest.js | 12 ++++++++++++ test/stubs/paged/paged-before-metadata.njk | 14 ++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 test/stubs/paged/paged-before-metadata.njk diff --git a/src/Plugins/Pagination.js b/src/Plugins/Pagination.js index d94d4e61a..74470a71f 100644 --- a/src/Plugins/Pagination.js +++ b/src/Plugins/Pagination.js @@ -120,7 +120,7 @@ class Pagination { typeof this.data.pagination.before === "function" ) { // we don’t need to make a copy of this because we already .filter() above - result = this.data.pagination.before(result); + result = this.data.pagination.before(result, this.data); } if (this.data.pagination.reverse === true) { diff --git a/test/PaginationTest.js b/test/PaginationTest.js index f0e807cb2..1bd4f967e 100644 --- a/test/PaginationTest.js +++ b/test/PaginationTest.js @@ -606,6 +606,18 @@ test("Pagination `before` Callback", async t => { t.deepEqual(templates[0].data.myalias, "item6"); }); +test("Pagination `before` Callback with metadata", async t => { + let tmpl = new Template( + "./test/stubs/paged/paged-before-metadata.njk", + "./test/stubs/", + "./dist" + ); + + let data = await tmpl.getData(); + let templates = await tmpl.getTemplates(data); + t.deepEqual(templates[0].data.pagination.items, ["item3"]); +}); + test("Pagination `before` Callback with a Filter", async t => { let tmpl = new Template( "./test/stubs/paged/paged-before-filter.njk", diff --git a/test/stubs/paged/paged-before-metadata.njk b/test/stubs/paged/paged-before-metadata.njk new file mode 100644 index 000000000..62a857056 --- /dev/null +++ b/test/stubs/paged/paged-before-metadata.njk @@ -0,0 +1,14 @@ +---js +{ + keyword: "item3", + pagination: { + data: "items", + size: 1, + before: function(data, metadata) { + return data.filter(el => el === metadata.keyword); + } + }, + items: ["item1", "item2", "item3", "item4", "item5", "item6"] +} +--- +
    {% for item in pagination.items %}
  1. {{ item }}
  2. {% endfor %}