svelte-common 6.15.64 → 6.17.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.
- package/package.json +10 -10
- package/src/pagination.mjs +39 -18
- package/types/pagination.d.mts +13 -4
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "svelte-common",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.17.0",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public",
|
|
6
6
|
"provenance": true
|
|
@@ -48,28 +48,28 @@
|
|
|
48
48
|
"preview": "vite preview"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"pacc": "^3.
|
|
52
|
-
"svelte-command": "^3.0.
|
|
53
|
-
"svelte-entitlement": "^2.0.
|
|
51
|
+
"pacc": "^3.3.0",
|
|
52
|
+
"svelte-command": "^3.0.22",
|
|
53
|
+
"svelte-entitlement": "^2.0.31"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
56
|
"@semantic-release/commit-analyzer": "^13.0.1",
|
|
57
|
-
"@semantic-release/exec": "^
|
|
57
|
+
"@semantic-release/exec": "^7.0.3",
|
|
58
58
|
"@semantic-release/github": "^11.0.1",
|
|
59
59
|
"@semantic-release/release-notes-generator": "^14.0.3",
|
|
60
60
|
"@sveltejs/vite-plugin-svelte": "^5.0.3",
|
|
61
61
|
"ava": "^6.2.0",
|
|
62
62
|
"c8": "^10.1.3",
|
|
63
63
|
"documentation": "^14.0.3",
|
|
64
|
-
"mf-styling": "^3.2.
|
|
64
|
+
"mf-styling": "^3.2.11",
|
|
65
65
|
"npm-pkgbuild": "^15.6.11",
|
|
66
|
-
"semantic-release": "^24.2.
|
|
66
|
+
"semantic-release": "^24.2.2",
|
|
67
67
|
"stylelint": "^16.14.1",
|
|
68
68
|
"stylelint-config-standard": "^37.0.0",
|
|
69
|
-
"svelte": "^5.19.
|
|
69
|
+
"svelte": "^5.19.10",
|
|
70
70
|
"testcafe": "^3.7.1",
|
|
71
71
|
"typescript": "^5.7.3",
|
|
72
|
-
"vite": "^6.0
|
|
72
|
+
"vite": "^6.1.0",
|
|
73
73
|
"vite-plugin-compression2": "^1.3.3"
|
|
74
74
|
},
|
|
75
75
|
"peerDependencies": {
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
},
|
|
78
78
|
"optionalDependencies": {
|
|
79
79
|
"mf-hosting-cloudflare": "^1.0.7",
|
|
80
|
-
"mf-hosting-frontend": "^3.
|
|
80
|
+
"mf-hosting-frontend": "^3.9.1"
|
|
81
81
|
},
|
|
82
82
|
"repository": {
|
|
83
83
|
"type": "git",
|
package/src/pagination.mjs
CHANGED
|
@@ -219,7 +219,7 @@ export class Pagination {
|
|
|
219
219
|
* @see https://getbootstrap.com/docs/4.0/components/pagination
|
|
220
220
|
* @see https://a11y-style-guide.com/style-guide/section-navigation.html#kssref-navigation-pagination
|
|
221
221
|
*/
|
|
222
|
-
|
|
222
|
+
pageNavigationElement(options) {
|
|
223
223
|
const nav = document.createElement("nav");
|
|
224
224
|
nav.setAttribute("tabindex", "0");
|
|
225
225
|
nav.setAttribute("aria-label", "pagination");
|
|
@@ -287,35 +287,56 @@ export class Pagination {
|
|
|
287
287
|
}
|
|
288
288
|
|
|
289
289
|
export function pageNavigation(elem, pg) {
|
|
290
|
-
elem.replaceChildren(pg.pageNavigationElement);
|
|
290
|
+
elem.replaceChildren(pg.pageNavigationElement());
|
|
291
291
|
|
|
292
292
|
// TODO destroy
|
|
293
293
|
}
|
|
294
294
|
|
|
295
|
+
export const defaultNavigationItemOptions = {
|
|
296
|
+
numberOfItems: 7,
|
|
297
|
+
spreads: [[0], [1, 5, 25, 125, 625, 3125, 15625], [2, 3, 4, 10, 50, 100, 500]]
|
|
298
|
+
};
|
|
299
|
+
|
|
295
300
|
/**
|
|
296
|
-
*
|
|
301
|
+
* Generate actual sequence of page numbers to navigate to.
|
|
297
302
|
* @param {number} numberOfPages
|
|
298
303
|
* @param {number} currentPage
|
|
299
|
-
* @param {
|
|
304
|
+
* @param {Object} options
|
|
305
|
+
* @param {Number} options.numberOfItems
|
|
306
|
+
* @param {Number[][]} options.spreads
|
|
300
307
|
* @return {Iterable<number>}
|
|
301
308
|
*/
|
|
302
|
-
export function
|
|
309
|
+
export function navigationItems(
|
|
303
310
|
numberOfPages,
|
|
304
311
|
currentPage,
|
|
305
|
-
|
|
312
|
+
options = defaultNavigationItemOptions
|
|
306
313
|
) {
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
314
|
+
if (numberOfPages === 0) {
|
|
315
|
+
return [];
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
const items = new Set();
|
|
319
|
+
|
|
320
|
+
const spread = (n, sides) => {
|
|
321
|
+
for (const side of sides) {
|
|
322
|
+
if (items.size === options.numberOfItems) {
|
|
323
|
+
return true;
|
|
324
|
+
}
|
|
325
|
+
if (n - side >= 1) {
|
|
326
|
+
items.add(n - side);
|
|
327
|
+
}
|
|
328
|
+
if (n + side <= numberOfPages) {
|
|
329
|
+
items.add(n + side);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
return false;
|
|
333
|
+
};
|
|
334
|
+
|
|
335
|
+
for (const s of options.spreads) {
|
|
336
|
+
if (spread(currentPage, s) || spread(1, s) || spread(numberOfPages, s)) {
|
|
337
|
+
break;
|
|
319
338
|
}
|
|
320
339
|
}
|
|
340
|
+
|
|
341
|
+
return [...items].sort((a, b) => (a > b ? 1 : a < b ? -1 : 0));
|
|
321
342
|
}
|
package/types/pagination.d.mts
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
export function pageNavigation(elem: any, pg: any): void;
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Generate actual sequence of page numbers to navigate to.
|
|
4
4
|
* @param {number} numberOfPages
|
|
5
5
|
* @param {number} currentPage
|
|
6
|
-
* @param {
|
|
6
|
+
* @param {Object} options
|
|
7
|
+
* @param {Number} options.numberOfItems
|
|
8
|
+
* @param {Number[][]} options.spreads
|
|
7
9
|
* @return {Iterable<number>}
|
|
8
10
|
*/
|
|
9
|
-
export function navigationItems(numberOfPages: number, currentPage: number,
|
|
11
|
+
export function navigationItems(numberOfPages: number, currentPage: number, options?: {
|
|
12
|
+
numberOfItems: number;
|
|
13
|
+
spreads: number[][];
|
|
14
|
+
}): Iterable<number>;
|
|
10
15
|
/**
|
|
11
16
|
* Pagination support store.
|
|
12
17
|
* Pages go from 1 ... numberOfPages
|
|
@@ -68,7 +73,11 @@ export class Pagination {
|
|
|
68
73
|
* @see https://getbootstrap.com/docs/4.0/components/pagination
|
|
69
74
|
* @see https://a11y-style-guide.com/style-guide/section-navigation.html#kssref-navigation-pagination
|
|
70
75
|
*/
|
|
71
|
-
|
|
76
|
+
pageNavigationElement(options: any): HTMLElement;
|
|
72
77
|
[Symbol.iterator](): Generator<any, void, unknown>;
|
|
73
78
|
#private;
|
|
74
79
|
}
|
|
80
|
+
export namespace defaultNavigationItemOptions {
|
|
81
|
+
let numberOfItems: number;
|
|
82
|
+
let spreads: number[][];
|
|
83
|
+
}
|