From ba7db17fb533f82e45b257a726082c15f514e1bf Mon Sep 17 00:00:00 2001 From: Simon Green Date: Sat, 14 Sep 2024 13:09:27 -0600 Subject: [PATCH] fix divider showing for single page gap --- package.json | 2 +- src/lib/pages.test.ts | 34 +++++++++++++++++++++++++++++++++- src/lib/pages.ts | 3 ++- 3 files changed, 36 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 9a0499c..ecee5bb 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "svelte-page-links", "description": "Generate pagination links for svelte", - "version": "0.0.3", + "version": "0.0.4", "keywords": [ "svelte", "page", diff --git a/src/lib/pages.test.ts b/src/lib/pages.test.ts index 74fedc2..026e333 100644 --- a/src/lib/pages.test.ts +++ b/src/lib/pages.test.ts @@ -22,7 +22,7 @@ function render(links: Generator) { return results.join() } -describe('pages', () => { +describe('10 pages, 2 end, 1 adjacent', () => { test.each([ { page: 1, @@ -78,3 +78,35 @@ describe('pages', () => { expect(render(pages(page, total, 2))).deep.eq(expected) }) }) + +describe('5 pages, 2 end, 0 adjacent', () => { + test.each([ + { + page: 1, + total: 5, + expected: '<1,1,2,3,4,5,2>', + }, + { + page: 2, + total: 5, + expected: '<1,1,2,3,4,5,3>', + }, + { + page: 3, + total: 5, + expected: '<2,1,2,3,4,5,4>', + }, + { + page: 4, + total: 5, + expected: '<3,1,2,3,4,5,5>', + }, + { + page: 5, + total: 5, + expected: '<4,1,2,3,4,5,5>', + }, + ])('pages($page, $total) -> $expected', ({ page, total, expected }) => { + expect(render(pages(page, total, 2, 0))).deep.eq(expected) + }) +}) diff --git a/src/lib/pages.ts b/src/lib/pages.ts index 3de4b09..7c55674 100644 --- a/src/lib/pages.ts +++ b/src/lib/pages.ts @@ -31,7 +31,8 @@ export function* pages(page: number, total: number, ends = 1, adjacent = 1): Gen (p >= left && p <= right) || // avoid dividers if it's a single page (p === left - 1 && p === first + 1) || - (p === right + 1 && p === last - 1) + (p === right + 1 && p === last - 1) || + (p == first + 1 && p === last - 1) ) { yield { page: p, type: 'link', active: p === page, disabled: p === page } p++