@nl-rvo/css-page-number-navigation 1.3.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +39 -38
  3. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # `@nl-rvo/css-pagination`
2
2
 
3
+ ## 1.4.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 8b8710c: Update page number navigation: always show 5 items from page 1 and 5 items before the last page (with ellipses between ranges when needed).
8
+
9
+ ## 1.3.1
10
+
11
+ ### Patch Changes
12
+
13
+ - 11eb258: Update imports to support storybook v10
14
+
3
15
  ## 1.3.0
4
16
 
5
17
  ### Minor Changes
package/README.md CHANGED
@@ -21,58 +21,59 @@
21
21
 
22
22
  ## Voor ontwikkelaars
23
23
 
24
- De functie voor deze logica kan als volgt worden geschreven:
24
+ De logica voor het genereren van paginanummers met ellipsen kan als volgt worden geïmplementeerd.
25
25
 
26
26
  ```js
27
- const generatePageNumberMarkup = () => "";
28
- const generateEllipsisMarkup = () => "";
27
+ const generatePageNumberMarkup = (page, activePage) => {
28
+ return page === activePage ? `[${page}]` : `${page}`;
29
+ };
30
+
31
+ const generateEllipsisMarkup = () => "…";
29
32
 
30
33
  const generatePageNumbers = (totalPages, activePage) => {
31
34
  const pages = [];
32
-
33
- // Always add the first page
34
- pages.push(generatePageNumberMarkup(1, activePage));
35
-
36
- // Add ellipses if the active page is more than 4
37
- if (activePage > 4) {
38
- pages.push(generateEllipsisMarkup());
39
- }
40
- if (activePage === 4) {
41
- pages.push(generatePageNumberMarkup(2, activePage));
42
- }
43
-
44
- // Add the page before the active page if it's more than 2
45
- if (activePage > 2) {
46
- pages.push(generatePageNumberMarkup(activePage - 1, activePage));
35
+ const windowSize = 5;
36
+
37
+ const addRange = (from, to) => {
38
+ for (let i = from; i <= to; i++) {
39
+ pages.push(generatePageNumberMarkup(i, activePage));
40
+ }
41
+ };
42
+
43
+ // Toon alle pagina's als het totaal klein is
44
+ if (totalPages <= windowSize) {
45
+ addRange(1, totalPages);
46
+ return pages;
47
47
  }
48
48
 
49
- // Add the active page if it's not the first or last page
50
- if (activePage > 1 && activePage < totalPages) {
51
- pages.push(generatePageNumberMarkup(activePage, activePage));
52
- }
53
-
54
- // Add the page after the active page if it's less than total pages minus 1 and not the last page
55
- if (activePage < totalPages - 1 && activePage !== totalPages - 2) {
56
- pages.push(generatePageNumberMarkup(activePage + 1, activePage));
57
- }
58
-
59
- // Add ellipses if the active page is less than the total pages minus 3
60
- if (activePage < totalPages - 3) {
49
+ // Begin van de paginering
50
+ // Voorbeeld: [1] 2 3 4 5 … 100
51
+ if (activePage <= 4) {
52
+ addRange(1, 5);
61
53
  pages.push(generateEllipsisMarkup());
54
+ pages.push(generatePageNumberMarkup(totalPages, activePage));
55
+ return pages;
62
56
  }
63
57
 
64
- // Add the second last page if the active page is less than the total pages minus 1 and greater than or equal to total pages minus 3
65
- if (activePage < totalPages - 1 && activePage >= totalPages - 3) {
66
- pages.push(generatePageNumberMarkup(totalPages - 1, activePage));
58
+ // Einde van de paginering
59
+ // Voorbeeld: 1 … 96 97 98 [99] 100
60
+ if (activePage >= totalPages - 3) {
61
+ pages.push(generatePageNumberMarkup(1, activePage));
62
+ pages.push(generateEllipsisMarkup());
63
+ addRange(totalPages - 4, totalPages);
64
+ return pages;
67
65
  }
68
66
 
69
- // Always add the last page
70
- if (totalPages !== 1) {
71
- pages.push(generatePageNumberMarkup(totalPages, activePage));
72
- }
67
+ // Midden van de paginering
68
+ // Voorbeeld: 1 … 4 [5] 6 … 100
69
+ pages.push(generatePageNumberMarkup(1, activePage));
70
+ pages.push(generateEllipsisMarkup());
71
+ addRange(activePage - 1, activePage + 1);
72
+ pages.push(generateEllipsisMarkup());
73
+ pages.push(generatePageNumberMarkup(totalPages, activePage));
73
74
 
74
75
  return pages;
75
76
  };
76
77
 
77
- generatePageNumbers(5, 30);
78
+ generatePageNumbers(100, 1);
78
79
  ```
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.3.0",
2
+ "version": "1.4.0",
3
3
  "author": "Community for NL Design System",
4
4
  "license": "CC0-1.0",
5
5
  "name": "@nl-rvo/css-page-number-navigation",
@@ -25,7 +25,7 @@
25
25
  "directory": "components/page-number-navigation"
26
26
  },
27
27
  "devDependencies": {
28
- "@nl-rvo/build-utils-css": "0.0.1"
28
+ "@nl-rvo/build-utils-css": "0.1.0"
29
29
  },
30
30
  "scripts": {
31
31
  "build": "build-css-package",