pagy 5.7.1 → 5.7.2
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.
- checksums.yaml +4 -4
- data/lib/config/pagy.rb +1 -1
- data/lib/javascripts/pagy-dev.js +121 -0
- data/lib/javascripts/pagy.js +1 -3
- data/lib/pagy/extras/bootstrap.rb +3 -3
- data/lib/pagy/extras/bulma.rb +4 -3
- data/lib/pagy/extras/foundation.rb +3 -3
- data/lib/pagy/extras/items.rb +1 -1
- data/lib/pagy/extras/materialize.rb +3 -3
- data/lib/pagy/extras/navs.rb +3 -3
- data/lib/pagy/extras/semantic.rb +3 -3
- data/lib/pagy/extras/uikit.rb +3 -3
- data/lib/pagy.rb +1 -1
- metadata +3 -3
- data/lib/javascripts/pagy.js.map +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 38c707df42d0be0b796b5f5127521dc98876c36ddd2f59f4b15b58cdcbb39365
|
4
|
+
data.tar.gz: 67297b4ade3bb8c07e56c2a9640fd9fbec48b7f3bb3c59c690bc4c78051a396b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f5e068d8a5e139859dabf10e281bf83eb2245f439b145559d0ee50e63632d4c8de6edf16c7aa9140aa8c0a39453e596f6e84c5e65714866d08ea1887cf9106db
|
7
|
+
data.tar.gz: 0cfa89dcde19e35efa752aaf8374fe2335576c6a7ac25b5453a7b513e07e50f7057f169cac1835298ddf2774d6a5db0e7c4684803983d16130720b77a692da7a
|
data/lib/config/pagy.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# Pagy initializer file (5.7.
|
3
|
+
# Pagy initializer file (5.7.2)
|
4
4
|
# Customize only what you really need and notice that the core Pagy works also without any of the following lines.
|
5
5
|
# Should you just cherry pick part of this file, please maintain the require-order of the extras
|
6
6
|
|
@@ -0,0 +1,121 @@
|
|
1
|
+
"use strict";
|
2
|
+
// The Pagy object
|
3
|
+
const Pagy = {
|
4
|
+
version: "5.7.2",
|
5
|
+
// Scan for "data-pagy-json" elements, parse their JSON content and call their init functions
|
6
|
+
init(arg) {
|
7
|
+
const target = arg instanceof Element ? arg : document;
|
8
|
+
const elements = target.querySelectorAll("[data-pagy-json]");
|
9
|
+
const warn = (el, err) => console.warn("Pagy.init() skipped element: %o\n%s", el, err);
|
10
|
+
for (const element of elements) {
|
11
|
+
const json = element.getAttribute("data-pagy-json");
|
12
|
+
try {
|
13
|
+
const [keyword, ...args] = JSON.parse(json);
|
14
|
+
if (keyword === "nav") {
|
15
|
+
Pagy.initNav(element, args);
|
16
|
+
}
|
17
|
+
else if (keyword === "combo") {
|
18
|
+
Pagy.initCombo(element, args);
|
19
|
+
}
|
20
|
+
else if (keyword === "selector") {
|
21
|
+
Pagy.initSelector(element, args);
|
22
|
+
}
|
23
|
+
else {
|
24
|
+
warn(element, `Illegal PagyJSON keyword: expected "nav"|"combo"|"selector", got "${keyword}"`);
|
25
|
+
}
|
26
|
+
}
|
27
|
+
catch (err) {
|
28
|
+
warn(element, err);
|
29
|
+
}
|
30
|
+
}
|
31
|
+
},
|
32
|
+
// Init the *_nav_js helpers
|
33
|
+
initNav(el, [tags, sequels, labelSequels, trimParam]) {
|
34
|
+
const container = el.parentElement ?? el;
|
35
|
+
const widths = Object.getOwnPropertyNames(sequels).map(w => parseInt(w)).sort((a, b) => b - a);
|
36
|
+
let lastWidth = -1;
|
37
|
+
const fillIn = (link, page, label) => link.replace(/__pagy_page__/g, page).replace(/__pagy_label__/g, label);
|
38
|
+
(el.pagyRender = function () {
|
39
|
+
const width = widths.find(w => w < container.clientWidth) || 0;
|
40
|
+
if (width === lastWidth) {
|
41
|
+
return;
|
42
|
+
} // no change: abort
|
43
|
+
let html = tags.before;
|
44
|
+
const series = sequels[width.toString()];
|
45
|
+
const labels = labelSequels?.[width.toString()] ?? series.map(l => l.toString());
|
46
|
+
for (const i in series) {
|
47
|
+
const item = series[i];
|
48
|
+
const label = labels[i];
|
49
|
+
if (typeof trimParam === "string" && item === 1) {
|
50
|
+
html += Pagy.trim(fillIn(tags.link, item.toString(), label), trimParam);
|
51
|
+
}
|
52
|
+
else if (typeof item === "number") {
|
53
|
+
html += fillIn(tags.link, item.toString(), label);
|
54
|
+
}
|
55
|
+
else if (item === "gap") {
|
56
|
+
html += tags.gap;
|
57
|
+
}
|
58
|
+
else { // active page
|
59
|
+
html += fillIn(tags.active, item, label);
|
60
|
+
}
|
61
|
+
}
|
62
|
+
html += tags.after; // eslint-disable-line align-assignments/align-assignments
|
63
|
+
el.innerHTML = "";
|
64
|
+
el.insertAdjacentHTML("afterbegin", html);
|
65
|
+
lastWidth = width;
|
66
|
+
})();
|
67
|
+
if (el.classList.contains("pagy-rjs")) {
|
68
|
+
Pagy.rjsObserver.observe(container);
|
69
|
+
}
|
70
|
+
},
|
71
|
+
// The observer instance for responsive navs
|
72
|
+
rjsObserver: new ResizeObserver(entries => {
|
73
|
+
entries.filter(e => e.contentBoxSize)
|
74
|
+
.forEach(e => e.target.querySelectorAll(".pagy-rjs")
|
75
|
+
.forEach(rjs => rjs.pagyRender()));
|
76
|
+
}),
|
77
|
+
// Init the *_combo_nav_js helpers
|
78
|
+
initCombo(el, [link, trimParam]) {
|
79
|
+
Pagy.initInput(el, inputValue => [inputValue, link.replace(/__pagy_page__/, inputValue)], trimParam);
|
80
|
+
},
|
81
|
+
// Init the items_selector_js helper
|
82
|
+
initSelector(el, [from, link, trimParam]) {
|
83
|
+
Pagy.initInput(el, inputValue => {
|
84
|
+
const page = Math.max(Math.ceil(from / parseInt(inputValue)), 1).toString();
|
85
|
+
const html = link.replace(/__pagy_page__/, page).replace(/__pagy_items__/, inputValue);
|
86
|
+
return [page, html];
|
87
|
+
}, trimParam);
|
88
|
+
},
|
89
|
+
// Init the input element
|
90
|
+
initInput(el, getVars, trimParam) {
|
91
|
+
const input = el.querySelector("input");
|
92
|
+
const initial = input.value;
|
93
|
+
const action = function () {
|
94
|
+
if (input.value === initial) {
|
95
|
+
return;
|
96
|
+
} // not changed
|
97
|
+
const [min, val, max] = [input.min, input.value, input.max].map(n => parseInt(n) || 0);
|
98
|
+
if (val < min || val > max) { // reset invalid/out-of-range
|
99
|
+
input.value = initial;
|
100
|
+
input.select();
|
101
|
+
return;
|
102
|
+
}
|
103
|
+
let [page, html] = getVars(input.value); // eslint-disable-line prefer-const
|
104
|
+
if (typeof trimParam === "string" && page === "1") {
|
105
|
+
html = Pagy.trim(html, trimParam);
|
106
|
+
}
|
107
|
+
el.insertAdjacentHTML("afterbegin", html);
|
108
|
+
el.querySelector("a").click();
|
109
|
+
};
|
110
|
+
["change", "focus"].forEach(e => input.addEventListener(e, input.select)); // auto-select
|
111
|
+
input.addEventListener("focusout", action); // trigger action
|
112
|
+
input.addEventListener("keypress", e => { if (e.key === "Enter") {
|
113
|
+
action();
|
114
|
+
} }); // trigger action
|
115
|
+
},
|
116
|
+
// Trim the ${page-param}=1 params in links
|
117
|
+
trim: (link, param) => link.replace(new RegExp(`[?&]${param}=1\\b(?!&)|\\b${param}=1&`), "")
|
118
|
+
};
|
119
|
+
// Toplevel var (needed for generating the production file)
|
120
|
+
window.Pagy = Pagy;
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFneS1kZXYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFneS1kZXYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQWlCQSxrQkFBa0I7QUFDbEIsTUFBTSxJQUFJLEdBQUc7SUFDVCxPQUFPLEVBQUUsT0FBTztJQUVoQiw2RkFBNkY7SUFDN0YsSUFBSSxDQUFDLEdBQWtCO1FBQ25CLE1BQU0sTUFBTSxHQUFLLEdBQUcsWUFBWSxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQ3pELE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzdELE1BQU0sSUFBSSxHQUFPLENBQUMsRUFBVSxFQUFFLEdBQVcsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxxQ0FBcUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDM0csS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUU7WUFDNUIsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBVyxDQUFDO1lBQzlELElBQUk7Z0JBQ0EsTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFhLENBQUM7Z0JBQ3hELElBQUksT0FBTyxLQUFLLEtBQUssRUFBRTtvQkFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFxQixFQUFFLElBQWUsQ0FBQyxDQUFDO2lCQUN4RDtxQkFBTSxJQUFJLE9BQU8sS0FBSyxPQUFPLEVBQUU7b0JBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQWlCLENBQUMsQ0FBQztpQkFDOUM7cUJBQU0sSUFBSSxPQUFPLEtBQUssVUFBVSxFQUFFO29CQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxJQUFvQixDQUFD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dGVyZmFjZXMgZnJvbSBkYXRhLXBhZ3ktanNvblxudHlwZSBQYWd5SlNPTiAgICAgPSByZWFkb25seSBbXCJuYXZcIiwgLi4uTmF2QXJnc10gfCBbXCJjb21ib1wiLCAuLi5Db21ib0FyZ3NdIHwgW1wic2VsZWN0b3JcIiwgLi4uU2VsZWN0b3JBcmdzXVxudHlwZSBOYXZBcmdzICAgICAgPSByZWFkb25seSBbVGFncywgU2VxdWVscywgbnVsbHxMYWJlbFNlcXVlbHMsIHN0cmluZz9dXG50eXBlIENvbWJvQXJncyAgICA9IHJlYWRvbmx5IFtzdHJpbmcsIHN0cmluZz9dXG50eXBlIFNlbGVjdG9yQXJncyA9IHJlYWRvbmx5IFtudW1iZXIsIHN0cmluZywgc3RyaW5nP11cbmludGVyZmFjZSBUYWdzIHtcbiAgICByZWFkb25seSBiZWZvcmU6IHN0cmluZ1xuICAgIHJlYWRvbmx5IGxpbms6ICAgc3RyaW5nXG4gICAgcmVhZG9ubHkgYWN0aXZlOiBzdHJpbmdcbiAgICByZWFkb25seSBnYXA6ICAgIHN0cmluZ1xuICAgIHJlYWRvbmx5IGFmdGVyOiAgc3RyaW5nXG59XG5pbnRlcmZhY2UgU2VxdWVscyAgICAgIHsgcmVhZG9ubHkgW3dpZHRoOnN0cmluZ106IChzdHJpbmd8bnVtYmVyfFwiZ2FwXCIpW10gfVxuaW50ZXJmYWNlIExhYmVsU2VxdWVscyB7IHJlYWRvbmx5IFt3aWR0aDpzdHJpbmddOiBzdHJpbmdbXSB9XG5pbnRlcmZhY2UgV2luZG93ICAgICAgIHsgUGFneTogdHlwZW9mIFBhZ3kgfSAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5pbnRlcmZhY2UgTmF2RWxlbWVudCBleHRlbmRzIEVsZW1lbnQgeyBwYWd5UmVuZGVyKCk6IHZvaWQgfVxuXG4vLyBUaGUgUGFneSBvYmplY3RcbmNvbnN0IFBhZ3kgPSB7XG4gICAgdmVyc2lvbjogXCI1LjcuMlwiLFxuXG4gICAgLy8gU2NhbiBmb3IgXCJkYXRhLXBhZ3ktanNvblwiIGVsZW1lbnRzLCBwYXJzZSB0aGVpciBKU09OIGNvbnRlbnQgYW5kIGNhbGwgdGhlaXIgaW5pdCBmdW5jdGlvbnNcbiAgICBpbml0KGFyZz86RWxlbWVudHxuZXZlcikge1xuICAgICAgICBjb25zdCB0YXJnZXQgICA9IGFyZyBpbnN0YW5jZW9mIEVsZW1lbnQgPyBhcmcgOiBkb2N1bWVudDtcbiAgICAgICAgY29uc3QgZWxlbWVudHMgPSB0YXJnZXQucXVlcnlTZWxlY3RvckFsbChcIltkYXRhLXBhZ3ktanNvbl1cIik7XG4gICAgICAgIGNvbnN0IHdhcm4gICAgID0gKGVsOkVsZW1lbnQsIGVycjp1bmtub3duKSA9PiBjb25zb2xlLndhcm4oXCJQYWd5LmluaXQoKSBza2lwcGVkIGVsZW1lbnQ6ICVvXFxuJXNcIiwgZWwsIGVycik7XG4gICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBlbGVtZW50cykge1xuICAgICAgICAgICAgY29uc3QganNvbiA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKFwiZGF0YS1wYWd5LWpzb25cIikgYXMgc3RyaW5nO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBba2V5d29yZCwgLi4uYXJnc10gPSBKU09OLnBhcnNlKGpzb24pIGFzIFBhZ3lKU09OO1xuICAgICAgICAgICAgICAgIGlmIChrZXl3b3JkID09PSBcIm5hdlwiKSB7XG4gICAgICAgICAgICAgICAgICAgIFBhZ3kuaW5pdE5hdihlbGVtZW50IGFzIE5hdkVsZW1lbnQsIGFyZ3MgYXMgTmF2QXJncyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrZXl3b3JkID09PSBcImNvbWJvXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgUGFneS5pbml0Q29tYm8oZWxlbWVudCwgYXJncyBhcyBDb21ib0FyZ3MpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5d29yZCA9PT0gXCJzZWxlY3RvclwiKSB7XG4gICAgICAgICAgICAgICAgICAgIFBhZ3kuaW5pdFNlbGVjdG9yKGVsZW1lbnQsIGFyZ3MgYXMgU2VsZWN0b3JBcmdzKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB3YXJuKGVsZW1lbnQsIGBJbGxlZ2FsIFBhZ3lKU09OIGtleXdvcmQ6IGV4cGVjdGVkIFwibmF2XCJ8XCJjb21ib1wifFwic2VsZWN0b3JcIiwgZ290IFwiJHtrZXl3b3JkfVwiYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7IHdhcm4oZWxlbWVudCwgZXJyKSB9XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgLy8gSW5pdCB0aGUgKl9uYXZfanMgaGVscGVyc1xuICAgIGluaXROYXYoZWw6TmF2RWxlbWVudCwgW3RhZ3MsIHNlcXVlbHMsIGxhYmVsU2VxdWVscywgdHJpbVBhcmFtXTpOYXZBcmdzKSB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGVsLnBhcmVudEVsZW1lbnQgPz8gZWw7XG4gICAgICAgIGNvbnN0IHdpZHRocyAgICA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHNlcXVlbHMpLm1hcCh3ID0+IHBhcnNlSW50KHcpKS5zb3J0KChhLCBiKSA9PiBiIC0gYSk7XG4gICAgICAgIGxldCBsYXN0V2lkdGggICA9IC0xO1xuICAgICAgICBjb25zdCBmaWxsSW4gICAgPSAobGluazpzdHJpbmcsIHBhZ2U6c3RyaW5nLCBsYWJlbDpzdHJpbmcpOnN0cmluZyA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluay5yZXBsYWNlKC9fX3BhZ3lfcGFnZV9fL2csIHBhZ2UpLnJlcGxhY2UoL19fcGFneV9sYWJlbF9fL2csIGxhYmVsKTtcbiAgICAgICAgKGVsLnBhZ3lSZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gd2lkdGhzLmZpbmQodyA9PiB3IDwgY29udGFpbmVyLmNsaWVudFdpZHRoKSB8fCAwO1xuICAgICAgICAgICAgaWYgKHdpZHRoID09PSBsYXN0V2lkdGgpIHsgcmV0dXJuIH0gLy8gbm8gY2hhbmdlOiBhYm9ydFxuICAgICAgICAgICAgbGV0IGh0bWwgICAgID0gdGFncy5iZWZvcmU7XG4gICAgICAgICAgICBjb25zdCBzZXJpZXMgPSBzZXF1ZWxzW3dpZHRoLnRvU3RyaW5nKCldO1xuICAgICAgICAgICAgY29uc3QgbGFiZWxzID0gbGFiZWxTZXF1ZWxzPy5bd2lkdGgudG9TdHJpbmcoKV0gPz8gc2VyaWVzLm1hcChsID0+IGwudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGkgaW4gc2VyaWVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbSAgPSBzZXJpZXNbaV07XG4gICAgICAgICAgICAgICAgY29uc3QgbGFiZWwgPSBsYWJlbHNbaV07XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0cmltUGFyYW0gPT09IFwic3RyaW5nXCIgJiYgaXRlbSA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICBodG1sICs9IFBhZ3kudHJpbShmaWxsSW4odGFncy5saW5rLCBpdGVtLnRvU3RyaW5nKCksIGxhYmVsKSwgdHJpbVBhcmFtKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBpdGVtID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gZmlsbEluKHRhZ3MubGluaywgaXRlbS50b1N0cmluZygpLCBsYWJlbCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSBcImdhcFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gdGFncy5nYXA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHsgLy8gYWN0aXZlIHBhZ2VcbiAgICAgICAgICAgICAgICAgICAgaHRtbCArPSBmaWxsSW4odGFncy5hY3RpdmUsIGl0ZW0sIGxhYmVsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBodG1sICs9IHRhZ3MuYWZ0ZXI7ICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBhbGlnbi1hc3NpZ25tZW50cy9hbGlnbi1hc3NpZ25tZW50c1xuICAgICAgICAgICAgZWwuaW5uZXJIVE1MID0gXCJcIjtcbiAgICAgICAgICAgIGVsLmluc2VydEFkamFjZW50SFRNTChcImFmdGVyYmVnaW5cIiwgaHRtbCk7XG4gICAgICAgICAgICBsYXN0V2lkdGggPSB3aWR0aDtcbiAgICAgICAgfSkoKTtcbiAgICAgICAgaWYgKGVsLmNsYXNzTGlzdC5jb250YWlucyhcInBhZ3ktcmpzXCIpKSB7IFBhZ3kucmpzT2JzZXJ2ZXIub2JzZXJ2ZShjb250YWluZXIpIH1cbiAgICB9LFxuXG4gICAgLy8gVGhlIG9ic2VydmVyIGluc3RhbmNlIGZvciByZXNwb25zaXZlIG5hdnNcbiAgICByanNPYnNlcnZlcjogbmV3IFJlc2l6ZU9ic2VydmVyKGVudHJpZXMgPT4ge1xuICAgICAgICBlbnRyaWVzLmZpbHRlcihlID0+IGUuY29udGVudEJveFNpemUpXG4gICAgICAgICAgICAgICAuZm9yRWFjaChlID0+IGUudGFyZ2V0LnF1ZXJ5U2VsZWN0b3JBbGw8TmF2RWxlbWVudD4oXCIucGFneS1yanNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaChyanMgPT4gcmpzLnBhZ3lSZW5kZXIoKSkpO1xuICAgIH0pLFxuXG4gICAgLy8gSW5pdCB0aGUgKl9jb21ib19uYXZfanMgaGVscGVyc1xuICAgIGluaXRDb21ibyhlbDpFbGVtZW50LCBbbGluaywgdHJpbVBhcmFtXTpDb21ib0FyZ3MpIHtcbiAgICAgICAgUGFneS5pbml0SW5wdXQoZWwsIGlucHV0VmFsdWUgPT4gW2lucHV0VmFsdWUsIGxpbmsucmVwbGFjZSgvX19wYWd5X3BhZ2VfXy8sIGlucHV0VmFsdWUpXSwgdHJpbVBhcmFtKTtcbiAgICB9LFxuXG4gICAgLy8gSW5pdCB0aGUgaXRlbXNfc2VsZWN0b3JfanMgaGVscGVyXG4gICAgaW5pdFNlbGVjdG9yKGVsOkVsZW1lbnQsIFtmcm9tLCBsaW5rLCB0cmltUGFyYW1dOlNlbGVjdG9yQXJncykge1xuICAgICAgICBQYWd5LmluaXRJbnB1dChlbCwgaW5wdXRWYWx1ZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYWdlID0gTWF0aC5tYXgoTWF0aC5jZWlsKGZyb20gLyBwYXJzZUludChpbnB1dFZhbHVlKSksIDEpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICBjb25zdCBodG1sID0gbGluay5yZXBsYWNlKC9fX3BhZ3lfcGFnZV9fLywgcGFnZSkucmVwbGFjZSgvX19wYWd5X2l0ZW1zX18vLCBpbnB1dFZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiBbcGFnZSwgaHRtbF07XG4gICAgICAgIH0sIHRyaW1QYXJhbSk7XG4gICAgfSxcblxuICAgIC8vIEluaXQgdGhlIGlucHV0IGVsZW1lbnRcbiAgICBpbml0SW5wdXQoZWw6RWxlbWVudCwgZ2V0VmFyczoodjpzdHJpbmcpPT5bc3RyaW5nLCBzdHJpbmddLCB0cmltUGFyYW0/OnN0cmluZykge1xuICAgICAgICBjb25zdCBpbnB1dCAgID0gZWwucXVlcnlTZWxlY3RvcihcImlucHV0XCIpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGluaXRpYWwgPSBpbnB1dC52YWx1ZTtcbiAgICAgICAgY29uc3QgYWN0aW9uICA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgaWYgKGlucHV0LnZhbHVlID09PSBpbml0aWFsKSB7IHJldHVybiB9ICAvLyBub3QgY2hhbmdlZFxuICAgICAgICAgICAgY29uc3QgW21pbiwgdmFsLCBtYXhdID0gW2lucHV0Lm1pbiwgaW5wdXQudmFsdWUsIGlucHV0Lm1heF0ubWFwKG4gPT4gcGFyc2VJbnQobikgfHwgMCk7XG4gICAgICAgICAgICBpZiAodmFsIDwgbWluIHx8IHZhbCA+IG1heCkgeyAgLy8gcmVzZXQgaW52YWxpZC9vdXQtb2YtcmFuZ2VcbiAgICAgICAgICAgICAgICBpbnB1dC52YWx1ZSA9IGluaXRpYWw7XG4gICAgICAgICAgICAgICAgaW5wdXQuc2VsZWN0KCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IFtwYWdlLCBodG1sXSA9IGdldFZhcnMoaW5wdXQudmFsdWUpOyAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcHJlZmVyLWNvbnN0XG4gICAgICAgICAgICBpZiAodHlwZW9mIHRyaW1QYXJhbSA9PT0gXCJzdHJpbmdcIiAmJiBwYWdlID09PSBcIjFcIikgeyBodG1sID0gUGFneS50cmltKGh0bWwsIHRyaW1QYXJhbSkgfVxuICAgICAgICAgICAgZWwuaW5zZXJ0QWRqYWNlbnRIVE1MKFwiYWZ0ZXJiZWdpblwiLCBodG1sKTtcbiAgICAgICAgICAgIChlbC5xdWVyeVNlbGVjdG9yKFwiYVwiKSBhcyBIVE1MQW5jaG9yRWxlbWVudCkuY2xpY2soKTtcbiAgICAgICAgfTtcbiAgICAgICAgW1wiY2hhbmdlXCIsIFwiZm9jdXNcIl0uZm9yRWFjaChlID0+IGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoZSwgaW5wdXQuc2VsZWN0KSk7ICAgICAgICAvLyBhdXRvLXNlbGVjdFxuICAgICAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNvdXRcIiwgYWN0aW9uKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmlnZ2VyIGFjdGlvblxuICAgICAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKFwia2V5cHJlc3NcIiwgZSA9PiB7IGlmIChlLmtleSA9PT0gXCJFbnRlclwiKSB7IGFjdGlvbigpIH0gfSk7IC8vIHRyaWdnZXIgYWN0aW9uXG4gICAgfSxcblxuICAgIC8vIFRyaW0gdGhlICR7cGFnZS1wYXJhbX09MSBwYXJhbXMgaW4gbGlua3NcbiAgICB0cmltOiAobGluazpzdHJpbmcsIHBhcmFtOnN0cmluZykgPT4gbGluay5yZXBsYWNlKG5ldyBSZWdFeHAoYFs/Jl0ke3BhcmFtfT0xXFxcXGIoPyEmKXxcXFxcYiR7cGFyYW19PTEmYCksIFwiXCIpXG59O1xuXG4vLyBUb3BsZXZlbCB2YXIgKG5lZWRlZCBmb3IgZ2VuZXJhdGluZyB0aGUgcHJvZHVjdGlvbiBmaWxlKVxud2luZG93LlBhZ3kgPSBQYWd5O1xuIl19
|
data/lib/javascripts/pagy.js
CHANGED
@@ -1,3 +1 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
//# sourceMappingURL=pagy.js.map
|
1
|
+
!function(){function t(t){if(Array.isArray(t))return t}function n(t){if(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t))return Array.from(t)}function e(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}function r(r,i){return t(r)||n(r)||e()}var i={version:"5.7.2",init:function(r){var a,o=(r instanceof Element?r:document).querySelectorAll("[data-pagy-json]"),c=function(t,n){return console.warn("Pagy.init() skipped element: %o\n%s",t,n)},u=!0,l=!1,f=void 0;try{for(var p,s=o[Symbol.iterator]();!(u=(p=s.next()).done);u=!0){var v=p.value,g=v.getAttribute("data-pagy-json");try{var y=t(a=JSON.parse(g))||n(a)||e(),d=y[0],m=y.slice(1);"nav"===d?i.initNav(v,m):"combo"===d?i.initCombo(v,m):"selector"===d?i.initSelector(v,m):c(v,'Illegal PagyJSON keyword: expected "nav"|"combo"|"selector", got "'.concat(d,'"'))}catch(t){c(v,t)}}}catch(t){l=!0,f=t}finally{try{u||null==s.return||s.return()}finally{if(l)throw f}}},initNav:function(t,n){var e,a=r(n),o=a[0],c=a[1],u=a[2],l=a[3],f=null!==(e=t.parentElement)&&void 0!==e?e:t,p=Object.getOwnPropertyNames(c).map((function(t){return parseInt(t)})).sort((function(t,n){return n-t})),s=-1,v=function(t,n,e){return t.replace(/__pagy_page__/g,n).replace(/__pagy_label__/g,e)};(t.pagyRender=function(){var n=p.find((function(t){return t<f.clientWidth}))||0;if(n!==s){var e,r=o.before,a=c[n.toString()],g=null!==(e=null==u?void 0:u[n.toString()])&&void 0!==e?e:a.map((function(t){return t.toString()}));for(var y in a){var d=a[y],m=g[y];r+="string"==typeof l&&1===d?i.trim(v(o.link,d.toString(),m),l):"number"==typeof d?v(o.link,d.toString(),m):"gap"===d?o.gap:v(o.active,d,m)}r+=o.after,t.innerHTML="",t.insertAdjacentHTML("afterbegin",r),s=n}})(),t.classList.contains("pagy-rjs")&&i.rjsObserver.observe(f)},rjsObserver:new ResizeObserver((function(t){t.filter((function(t){return t.contentBoxSize})).forEach((function(t){return t.target.querySelectorAll(".pagy-rjs").forEach((function(t){return t.pagyRender()}))}))})),initCombo:function(t,n){var e=r(n),a=e[0],o=e[1];i.initInput(t,(function(t){return[t,a.replace(/__pagy_page__/,t)]}),o)},initSelector:function(t,n){var e=r(n),a=e[0],o=e[1],c=e[2];i.initInput(t,(function(t){var n=Math.max(Math.ceil(a/parseInt(t)),1).toString();return[n,o.replace(/__pagy_page__/,n).replace(/__pagy_items__/,t)]}),c)},initInput:function(t,n,e){var a=t.querySelector("input"),o=a.value,c=function(){if(a.value!==o){var c=r([a.min,a.value,a.max].map((function(t){return parseInt(t)||0}))),u=c[0],l=c[1],f=c[2];if(l<u||l>f)return a.value=o,void a.select();var p=r(n(a.value)),s=p[0],v=p[1];"string"==typeof e&&"1"===s&&(v=i.trim(v,e)),t.insertAdjacentHTML("afterbegin",v),t.querySelector("a").click()}};["change","focus"].forEach((function(t){return a.addEventListener(t,a.select)})),a.addEventListener("focusout",c),a.addEventListener("keypress",(function(t){"Enter"===t.key&&c()}))},trim:function(t,n){return t.replace(new RegExp("[?&]".concat(n,"=1\\b(?!&)|\\b").concat(n,"=1&")),"")}};window.Pagy=i}();
|
@@ -29,7 +29,7 @@ class Pagy # :nodoc:
|
|
29
29
|
html << %(</ul></nav>)
|
30
30
|
end
|
31
31
|
|
32
|
-
# Javascript pagination for bootstrap: it returns a nav and a JSON tag used by the
|
32
|
+
# Javascript pagination for bootstrap: it returns a nav and a JSON tag used by the pagy.js file
|
33
33
|
def pagy_bootstrap_nav_js(pagy, pagy_id: nil, link_extra: '', **vars)
|
34
34
|
sequels = pagy.sequels(**vars)
|
35
35
|
p_id = %( id="#{pagy_id}") if pagy_id
|
@@ -44,7 +44,7 @@ class Pagy # :nodoc:
|
|
44
44
|
pagy_json_attr(pagy, :nav, tags, sequels, pagy.label_sequels(sequels))}></nav>)
|
45
45
|
end
|
46
46
|
|
47
|
-
# Javascript combo pagination for bootstrap: it returns a nav and a JSON tag used by the
|
47
|
+
# Javascript combo pagination for bootstrap: it returns a nav and a JSON tag used by the pagy.js file
|
48
48
|
def pagy_bootstrap_combo_nav_js(pagy, pagy_id: nil, link_extra: '')
|
49
49
|
p_id = %( id="#{pagy_id}") if pagy_id
|
50
50
|
link = pagy_link_proc(pagy, link_extra: link_extra)
|
@@ -55,7 +55,7 @@ class Pagy # :nodoc:
|
|
55
55
|
p_pages.to_s.length + 1}rem;">)
|
56
56
|
|
57
57
|
%(<nav#{p_id} class="pagy-bootstrap-combo-nav-js pagination" aria-label="pager"><div class="btn-group" role="group" #{
|
58
|
-
pagy_json_attr pagy, :
|
58
|
+
pagy_json_attr pagy, :combo, pagy_marked_link(link)}>#{
|
59
59
|
if (p_prev = pagy.prev)
|
60
60
|
link.call p_prev, pagy_t('pagy.nav.prev'), 'aria-label="previous" class="prev btn btn-primary"'
|
61
61
|
else
|
data/lib/pagy/extras/bulma.rb
CHANGED
@@ -7,7 +7,7 @@ class Pagy # :nodoc:
|
|
7
7
|
# Frontend modules are specially optimized for performance.
|
8
8
|
# The resulting code may not look very elegant, but produces the best benchmarks
|
9
9
|
module BulmaExtra
|
10
|
-
# Pagination for
|
10
|
+
# Pagination for bulma: it returns the html with the series of links to the pages
|
11
11
|
def pagy_bulma_nav(pagy, pagy_id: nil, link_extra: '', **vars)
|
12
12
|
p_id = %( id="#{pagy_id}") if pagy_id
|
13
13
|
link = pagy_link_proc(pagy, link_extra: link_extra)
|
@@ -30,6 +30,7 @@ class Pagy # :nodoc:
|
|
30
30
|
html << %(</ul></nav>)
|
31
31
|
end
|
32
32
|
|
33
|
+
# Javascript pagination for bulma: it returns a nav and a JSON tag used by the Pagy.nav javascript
|
33
34
|
def pagy_bulma_nav_js(pagy, pagy_id: nil, link_extra: '', **vars)
|
34
35
|
sequels = pagy.sequels(**vars)
|
35
36
|
p_id = %( id="#{pagy_id}") if pagy_id
|
@@ -47,7 +48,7 @@ class Pagy # :nodoc:
|
|
47
48
|
pagy_json_attr(pagy, :nav, tags, sequels, pagy.label_sequels(sequels))}></nav>)
|
48
49
|
end
|
49
50
|
|
50
|
-
# Javascript combo pagination for
|
51
|
+
# Javascript combo pagination for bulma: it returns a nav and a JSON tag used by the pagy.js file
|
51
52
|
def pagy_bulma_combo_nav_js(pagy, pagy_id: nil, link_extra: '')
|
52
53
|
p_id = %( id="#{pagy_id}") if pagy_id
|
53
54
|
link = pagy_link_proc(pagy, link_extra: link_extra)
|
@@ -58,7 +59,7 @@ class Pagy # :nodoc:
|
|
58
59
|
|
59
60
|
html = %(<nav#{p_id} class="pagy-bulma-combo-nav-js" aria-label="pagination">)
|
60
61
|
%(#{html}<div class="field is-grouped is-grouped-centered" role="group" #{
|
61
|
-
pagy_json_attr pagy, :
|
62
|
+
pagy_json_attr pagy, :combo, pagy_marked_link(link)}>#{
|
62
63
|
if (p_prev = pagy.prev)
|
63
64
|
%(<p class="control">#{link.call p_prev, pagy_t('pagy.nav.prev'), 'class="button" aria-label="previous page"'}</p>)
|
64
65
|
else
|
@@ -26,7 +26,7 @@ class Pagy # :nodoc:
|
|
26
26
|
html << %(</ul></nav>)
|
27
27
|
end
|
28
28
|
|
29
|
-
# Javascript pagination for foundation: it returns a nav and a JSON tag used by the
|
29
|
+
# Javascript pagination for foundation: it returns a nav and a JSON tag used by the pagy.js file
|
30
30
|
def pagy_foundation_nav_js(pagy, pagy_id: nil, link_extra: '', **vars)
|
31
31
|
sequels = pagy.sequels(**vars)
|
32
32
|
p_id = %( id="#{pagy_id}") if pagy_id
|
@@ -41,7 +41,7 @@ class Pagy # :nodoc:
|
|
41
41
|
pagy_json_attr(pagy, :nav, tags, sequels, pagy.label_sequels(sequels))}></nav>)
|
42
42
|
end
|
43
43
|
|
44
|
-
# Javascript combo pagination for Foundation: it returns a nav and a JSON tag used by the
|
44
|
+
# Javascript combo pagination for Foundation: it returns a nav and a JSON tag used by the pagy.js file
|
45
45
|
def pagy_foundation_combo_nav_js(pagy, pagy_id: nil, link_extra: '')
|
46
46
|
p_id = %( id="#{pagy_id}") if pagy_id
|
47
47
|
link = pagy_link_proc(pagy, link_extra: link_extra)
|
@@ -52,7 +52,7 @@ class Pagy # :nodoc:
|
|
52
52
|
p_pages.to_s.length + 1}rem; padding: 0 0.3rem; margin: 0 0.3rem;">)
|
53
53
|
|
54
54
|
%(<nav#{p_id} class="pagy-foundation-combo-nav-js" aria-label="Pagination"><div class="input-group" #{
|
55
|
-
pagy_json_attr pagy, :
|
55
|
+
pagy_json_attr pagy, :combo, pagy_marked_link(link)}>#{
|
56
56
|
if (p_prev = pagy.prev)
|
57
57
|
link.call p_prev, pagy_t('pagy.nav.prev'),
|
58
58
|
'style="margin-bottom: 0" aria-label="previous" class="prev button primary"'
|
data/lib/pagy/extras/items.rb
CHANGED
@@ -39,7 +39,7 @@ class Pagy # :nodoc:
|
|
39
39
|
link = pagy_marked_link(pagy_link_proc(pagy, link_extra: link_extra))
|
40
40
|
p_vars[:items] = p_items # restore the items
|
41
41
|
|
42
|
-
html = +%(<span#{p_id} class="pagy-items-selector-js" #{pagy_json_attr pagy, :
|
42
|
+
html = +%(<span#{p_id} class="pagy-items-selector-js" #{pagy_json_attr pagy, :selector, pagy.from, link}>)
|
43
43
|
input = %(<input type="number" min="1" max="#{p_vars[:max_items]}" value="#{
|
44
44
|
p_items}" style="padding: 0; text-align: center; width: #{p_items.to_s.length + 1}rem;">)
|
45
45
|
html << pagy_t('pagy.items_selector_js', item_name: item_name || pagy_t(i18n_key || p_vars[:i18n_key], count: p_items),
|
@@ -26,7 +26,7 @@ class Pagy # :nodoc:
|
|
26
26
|
html << %(</ul></div>)
|
27
27
|
end
|
28
28
|
|
29
|
-
# Javascript pagination for materialize: it returns a nav and a JSON tag used by the
|
29
|
+
# Javascript pagination for materialize: it returns a nav and a JSON tag used by the pagy.js file
|
30
30
|
def pagy_materialize_nav_js(pagy, pagy_id: nil, link_extra: '', **vars)
|
31
31
|
sequels = pagy.sequels(**vars)
|
32
32
|
p_id = %( id="#{pagy_id}") if pagy_id
|
@@ -42,7 +42,7 @@ class Pagy # :nodoc:
|
|
42
42
|
pagy_json_attr(pagy, :nav, tags, sequels, pagy.label_sequels(sequels))}></div>)
|
43
43
|
end
|
44
44
|
|
45
|
-
# Javascript combo pagination for materialize: it returns a nav and a JSON tag used by the
|
45
|
+
# Javascript combo pagination for materialize: it returns a nav and a JSON tag used by the pagy.js file
|
46
46
|
def pagy_materialize_combo_nav_js(pagy, pagy_id: nil, link_extra: '')
|
47
47
|
p_id = %( id="#{pagy_id}") if pagy_id
|
48
48
|
link = pagy_link_proc(pagy, link_extra: link_extra)
|
@@ -54,7 +54,7 @@ class Pagy # :nodoc:
|
|
54
54
|
|
55
55
|
html = %(<ul#{p_id} class="pagy-materialize-combo-nav-js pagination chip" role="navigation")
|
56
56
|
%(#{html} aria-label="pager" style="padding-right: 0" #{
|
57
|
-
pagy_json_attr pagy, :
|
57
|
+
pagy_json_attr pagy, :combo, pagy_marked_link(link)}>#{
|
58
58
|
pagy_materialize_prev_html pagy, link, style}<li class="pagy-combo-input">#{
|
59
59
|
pagy_t 'pagy.combo_nav_js', page_input: input, count: p_page, pages: p_pages}</li>#{
|
60
60
|
pagy_materialize_next_html pagy, link, style}</ul>)
|
data/lib/pagy/extras/navs.rb
CHANGED
@@ -7,7 +7,7 @@ class Pagy # :nodoc:
|
|
7
7
|
# Frontend modules are specially optimized for performance.
|
8
8
|
# The resulting code may not look very elegant, but produces the best benchmarks
|
9
9
|
module NavsExtra
|
10
|
-
# Javascript pagination: it returns a nav and a JSON tag used by the
|
10
|
+
# Javascript pagination: it returns a nav and a JSON tag used by the pagy.js file
|
11
11
|
def pagy_nav_js(pagy, pagy_id: nil, link_extra: '', **vars)
|
12
12
|
sequels = pagy.sequels(**vars)
|
13
13
|
p_id = %( id="#{pagy_id}") if pagy_id
|
@@ -22,7 +22,7 @@ class Pagy # :nodoc:
|
|
22
22
|
pagy_json_attr(pagy, :nav, tags, sequels, pagy.label_sequels(sequels))}></nav>)
|
23
23
|
end
|
24
24
|
|
25
|
-
# Javascript combo pagination: it returns a nav and a JSON tag used by the
|
25
|
+
# Javascript combo pagination: it returns a nav and a JSON tag used by the pagy.js file
|
26
26
|
def pagy_combo_nav_js(pagy, pagy_id: nil, link_extra: '')
|
27
27
|
p_id = %( id="#{pagy_id}") if pagy_id
|
28
28
|
link = pagy_link_proc(pagy, link_extra: link_extra)
|
@@ -32,7 +32,7 @@ class Pagy # :nodoc:
|
|
32
32
|
p_page}" style="padding: 0; text-align: center; width: #{p_pages.to_s.length + 1}rem;">)
|
33
33
|
|
34
34
|
%(<nav#{p_id} class="pagy-combo-nav-js pagination" aria-label="pager" #{
|
35
|
-
pagy_json_attr pagy, :
|
35
|
+
pagy_json_attr pagy, :combo, pagy_marked_link(link)}>#{
|
36
36
|
pagy_nav_prev_html pagy, link
|
37
37
|
}<span class="pagy-combo-input" style="margin: 0 0.6rem;">#{
|
38
38
|
pagy_t 'pagy.combo_nav_js', page_input: input, count: p_page, pages: p_pages
|
data/lib/pagy/extras/semantic.rb
CHANGED
@@ -26,7 +26,7 @@ class Pagy # :nodoc:
|
|
26
26
|
html << %(</div>)
|
27
27
|
end
|
28
28
|
|
29
|
-
# Javascript pagination for semantic: it returns a nav and a JSON tag used by the
|
29
|
+
# Javascript pagination for semantic: it returns a nav and a JSON tag used by the pagy.js file
|
30
30
|
def pagy_semantic_nav_js(pagy, pagy_id: nil, link_extra: '', **vars)
|
31
31
|
sequels = pagy.sequels(**vars)
|
32
32
|
p_id = %( id="#{pagy_id}") if pagy_id
|
@@ -41,7 +41,7 @@ class Pagy # :nodoc:
|
|
41
41
|
pagy_json_attr(pagy, :nav, tags, sequels, pagy.label_sequels(sequels))}></div>)
|
42
42
|
end
|
43
43
|
|
44
|
-
# Combo pagination for semantic: it returns a nav and a JSON tag used by the
|
44
|
+
# Combo pagination for semantic: it returns a nav and a JSON tag used by the pagy.js file
|
45
45
|
def pagy_semantic_combo_nav_js(pagy, pagy_id: nil, link_extra: '')
|
46
46
|
p_id = %( id="#{pagy_id}") if pagy_id
|
47
47
|
link = pagy_link_proc(pagy, link_extra: %(class="item" #{link_extra}))
|
@@ -51,7 +51,7 @@ class Pagy # :nodoc:
|
|
51
51
|
p_page}" style="padding: 0; text-align: center; width: #{p_pages.to_s.length + 1}rem; margin: 0 0.3rem">)
|
52
52
|
|
53
53
|
%(<div#{p_id} class="pagy-semantic-combo-nav-js ui compact menu" role="navigation" #{
|
54
|
-
pagy_json_attr pagy, :
|
54
|
+
pagy_json_attr pagy, :combo, pagy_marked_link(link)}>#{
|
55
55
|
pagy_semantic_prev_html pagy, link
|
56
56
|
}<div class="pagy-combo-input item">#{
|
57
57
|
pagy_t 'pagy.combo_nav_js', page_input: input, count: p_page, pages: p_pages
|
data/lib/pagy/extras/uikit.rb
CHANGED
@@ -25,7 +25,7 @@ class Pagy # :nodoc:
|
|
25
25
|
html << %(</ul>)
|
26
26
|
end
|
27
27
|
|
28
|
-
# Javascript pagination for uikit: it returns a nav and a JSON tag used by the
|
28
|
+
# Javascript pagination for uikit: it returns a nav and a JSON tag used by the pagy.js file
|
29
29
|
def pagy_uikit_nav_js(pagy, pagy_id: nil, link_extra: '', **vars)
|
30
30
|
sequels = pagy.sequels(**vars)
|
31
31
|
p_id = %( id="#{pagy_id}") if pagy_id
|
@@ -40,7 +40,7 @@ class Pagy # :nodoc:
|
|
40
40
|
pagy_json_attr(pagy, :nav, tags, sequels, pagy.label_sequels(sequels))}></ul>)
|
41
41
|
end
|
42
42
|
|
43
|
-
# Javascript combo pagination for uikit: it returns a nav and a JSON tag used by the
|
43
|
+
# Javascript combo pagination for uikit: it returns a nav and a JSON tag used by the pagy.js file
|
44
44
|
def pagy_uikit_combo_nav_js(pagy, pagy_id: nil, link_extra: '')
|
45
45
|
p_id = %( id="#{pagy_id}") if pagy_id
|
46
46
|
link = pagy_link_proc(pagy, link_extra: link_extra)
|
@@ -50,7 +50,7 @@ class Pagy # :nodoc:
|
|
50
50
|
p_page}" style="text-align: center; width: #{p_pages.to_s.length + 1}rem;">)
|
51
51
|
|
52
52
|
%(<ul#{p_id} class="pagy-uikit-combo-nav-js uk-button-group uk-pagination uk-flex-center" #{
|
53
|
-
pagy_json_attr pagy, :
|
53
|
+
pagy_json_attr pagy, :combo, pagy_marked_link(link)
|
54
54
|
}>#{
|
55
55
|
pagy_uikit_prev_html pagy, link
|
56
56
|
}<li>#{
|
data/lib/pagy.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pagy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.7.
|
4
|
+
version: 5.7.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Domizio Demichelis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-01-
|
11
|
+
date: 2022-01-11 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Agnostic pagination in plain ruby. It does it all. Better.
|
14
14
|
email:
|
@@ -19,8 +19,8 @@ extra_rdoc_files: []
|
|
19
19
|
files:
|
20
20
|
- LICENSE.txt
|
21
21
|
- lib/config/pagy.rb
|
22
|
+
- lib/javascripts/pagy-dev.js
|
22
23
|
- lib/javascripts/pagy.js
|
23
|
-
- lib/javascripts/pagy.js.map
|
24
24
|
- lib/locales/ar.yml
|
25
25
|
- lib/locales/bg.yml
|
26
26
|
- lib/locales/bs.yml
|
data/lib/javascripts/pagy.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../src/pagy.ts"],"names":[],"mappings":"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","file":"pagy.js","sourcesContent":["// This file is the source that generates pagy.js, polyfilled with the `@babel/preset-env` `\"useBuiltIns\": \"entry\"`.\n// You can generate a custom targeted javascript file for the browsers you need by changing that settings in package.json,\n// then compile it with `npm run compile -w src`.\n\n// Args types and interfaces from data-pagy-json\ntype PagyJSON = readonly [\"nav\", ...NavArgs] | [\"combo_nav\", ...ComboNavArgs] | [\"items_selector\", ...ItemsSelectorArgs]\ntype NavArgs = readonly [NavTags, NavSequels, null|NavLabelSequels, string?]\ntype ComboNavArgs = readonly [string, string?]\ntype ItemsSelectorArgs = readonly [number, string, string?]\n\ninterface NavTags {\n readonly before: string\n readonly link: string\n readonly active: string\n readonly gap: string\n readonly after: string\n}\ninterface NavSequels { readonly [width:string]: (string|number|\"gap\")[] }\ninterface NavLabelSequels { readonly [width:string]: string[] }\ninterface Element { pagyRender(): void }\n\n// The Pagy object\nconst Pagy = {\n version: \"5.7.1\",\n\n // Scan for \"data-pagy-json\" elements, parse their JSON content and call their init functions\n init(arg?:Element|never) {\n const target = arg instanceof Element ? arg : document;\n const elements = target.querySelectorAll(\"[data-pagy-json]\");\n const warn = (el:Element, err:unknown) => console.warn(\"Pagy.init() skipped element: %o\\n%s\", el, err);\n for (const element of elements) {\n const json = element.getAttribute(\"data-pagy-json\") as string;\n try {\n const [keyword, ...args] = JSON.parse(json) as PagyJSON;\n if (keyword === \"nav\") {\n Pagy.initNav(element, args as NavArgs);\n } else if (keyword === \"combo_nav\") {\n Pagy.initComboNav(element, args as ComboNavArgs);\n } else if (keyword === \"items_selector\") {\n Pagy.initItemsSelector(element, args as ItemsSelectorArgs);\n } else {\n warn(element, `Illegal PagyJSON keyword: expected \"nav\"|\"combo_nav\"|\"items_selector\" got \"${keyword}\"`);\n }\n } catch (err) { warn(element, err) }\n }\n },\n\n // Init the *_nav_js helpers\n initNav(el:Element, [tags, sequels, labelSequels, trimParam]:NavArgs) {\n const container = el.parentElement ?? el;\n const widths = Object.getOwnPropertyNames(sequels).map(w => parseInt(w)).sort((a, b) => b - a);\n let lastWidth = -1;\n const fillIn = (link:string, page:string, label:string):string =>\n link.replace(/__pagy_page__/g, page).replace(/__pagy_label__/g, label);\n (el.pagyRender = function() {\n const width = widths.find(w => w < container.clientWidth) || 0;\n if (width === lastWidth) { return } // no change: abort\n let html = tags.before;\n const series = sequels[width.toString()];\n const labels = labelSequels?.[width.toString()] ?? series.map(l => l.toString());\n for (const i in series) {\n const item = series[i];\n const label = labels[i];\n if (typeof trimParam === \"string\" && item === 1) {\n html += Pagy.trim(fillIn(tags.link, item.toString(), label), trimParam);\n } else if (typeof item === \"number\") {\n html += fillIn(tags.link, item.toString(), label);\n } else if (item === \"gap\") {\n html += tags.gap;\n } else { // active page\n html += fillIn(tags.active, item, label);\n }\n }\n html += tags.after; // eslint-disable-line align-assignments/align-assignments\n el.innerHTML = \"\";\n el.insertAdjacentHTML(\"afterbegin\", html);\n lastWidth = width;\n })();\n if (el.classList.contains(\"pagy-rjs\")) { Pagy.rjsObserver.observe(container) }\n },\n\n // The observer instance for responsive navs\n rjsObserver: new ResizeObserver(entries => {\n entries.filter(e => e.contentBoxSize)\n .forEach(e => e.target.querySelectorAll(\".pagy-rjs\")\n .forEach(rjs => rjs.pagyRender()));\n }),\n\n // Init the *_combo_nav_js helpers\n initComboNav(el:Element, [link, trimParam]:ComboNavArgs) {\n Pagy.initInput(el, inputValue => [inputValue, link.replace(/__pagy_page__/, inputValue)], trimParam);\n },\n\n // Init the items_selector_js helper\n initItemsSelector(el:Element, [from, link, trimParam]:ItemsSelectorArgs) {\n Pagy.initInput(el, inputValue => {\n const page = Math.max(Math.ceil(from / parseInt(inputValue)), 1).toString();\n const html = link.replace(/__pagy_page__/, page).replace(/__pagy_items__/, inputValue);\n return [page, html];\n }, trimParam);\n },\n\n // Init the input element\n initInput(el:Element, getVars:(v:string)=>[string, string], trimParam?:string) {\n const input = el.querySelector(\"input\") as HTMLInputElement;\n const initial = input.value;\n const action = function() {\n if (input.value === initial) { return } // not changed\n const [min, val, max] = [input.min, input.value, input.max].map(n => parseInt(n) || 0);\n if (val < min || val > max) { // reset invalid/out-of-range\n input.value = initial;\n input.select();\n return;\n }\n let [page, html] = getVars(input.value); // eslint-disable-line prefer-const\n if (typeof trimParam === \"string\" && page === \"1\") { html = Pagy.trim(html, trimParam) }\n el.insertAdjacentHTML(\"afterbegin\", html);\n (el.querySelector(\"a\") as HTMLAnchorElement).click();\n };\n [\"change\", \"focus\"].forEach(e => input.addEventListener(e, input.select)); // auto-select\n input.addEventListener(\"focusout\", action); // trigger action\n input.addEventListener(\"keypress\", e => { if (e.key === \"Enter\") { action() } }); // trigger action\n },\n\n // Trim the ${page-param}=1 params in links\n trim: (link:string, param:string) => link.replace(new RegExp(`[?&]${param}=1\\\\b(?!&)|\\\\b${param}=1&`), \"\")\n};\n"]}
|