pagy 7.0.4 → 7.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/config/pagy.rb +1 -1
- data/lib/javascripts/pagy-dev.js +4 -4
- data/lib/javascripts/pagy-module.js +3 -3
- data/lib/javascripts/pagy.js +1 -1
- data/lib/pagy/extras/bootstrap.rb +11 -9
- data/lib/pagy/extras/bulma.rb +9 -7
- data/lib/pagy/extras/foundation.rb +2 -2
- data/lib/pagy/extras/frontend_helpers.rb +1 -1
- data/lib/pagy/extras/headers.rb +2 -2
- data/lib/pagy/extras/materialize.rb +7 -7
- data/lib/pagy/extras/metadata.rb +6 -6
- data/lib/pagy/extras/navs.rb +2 -2
- data/lib/pagy/extras/semantic.rb +3 -3
- data/lib/pagy/extras/uikit.rb +2 -2
- data/lib/pagy/frontend.rb +4 -4
- data/lib/pagy.rb +1 -1
- data/lib/stylesheets/pagy.css +58 -0
- data/lib/stylesheets/pagy.scss +47 -0
- data/lib/stylesheets/pagy.tailwind.scss +24 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 55a6e6520e065cd0f9a3b3c447ab341bb2afb2f384914403e6d7ad0a6cfba4b2
|
4
|
+
data.tar.gz: 2095efca3ce30c2eaa1c22aa9a7ce88a03e3a969603048270255c93c52e03df0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4c8da873858813f8bf0a5850da09d3b605792629122f01b0becfc9edab3188d6898d53bae4d632e1159a9071cb5415103d5fe491a784f72b2c4c0ae9fa6236a4
|
7
|
+
data.tar.gz: 107ba2bd9171337e23c2a9ab2b94fcab52a1bc62448c9ac21b4c2703e4a8ec25cffc77b75b7eb1ae9217b2d5be777e1a5a6d6f059d4f61ff25773814df1eb1e7
|
data/lib/config/pagy.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# Pagy initializer file (7.0.
|
3
|
+
# Pagy initializer file (7.0.6)
|
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
|
|
data/lib/javascripts/pagy-dev.js
CHANGED
@@ -13,13 +13,13 @@ window.Pagy = (() => {
|
|
13
13
|
if (width === lastWidth) {
|
14
14
|
return;
|
15
15
|
} // no change: abort
|
16
|
-
let html = tags.before;
|
16
|
+
let html = tags.before; // already trimmed in html
|
17
17
|
const series = sequels[width.toString()];
|
18
18
|
const labels = labelSequels?.[width.toString()] ?? series.map(l => l.toString());
|
19
19
|
for (const i in series) {
|
20
20
|
const item = series[i];
|
21
21
|
const label = labels[i];
|
22
|
-
if (typeof trimParam === "string" && item
|
22
|
+
if (typeof trimParam === "string" && item == 1) {
|
23
23
|
html += trim(fillIn(tags.link, item.toString(), label), trimParam);
|
24
24
|
}
|
25
25
|
else if (typeof item === "number") {
|
@@ -82,7 +82,7 @@ window.Pagy = (() => {
|
|
82
82
|
const trim = (link, param) => link.replace(new RegExp(`[?&]${param}=1\\b(?!&)|\\b${param}=1&`), "");
|
83
83
|
// Public interface
|
84
84
|
return {
|
85
|
-
version: "7.0.
|
85
|
+
version: "7.0.6",
|
86
86
|
// Scan for elements with a "data-pagy" attribute and call their init functions with the decoded args
|
87
87
|
init(arg) {
|
88
88
|
const target = arg instanceof Element ? arg : document;
|
@@ -111,4 +111,4 @@ window.Pagy = (() => {
|
|
111
111
|
}
|
112
112
|
};
|
113
113
|
})();
|
114
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFneS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInBhZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQWtCQSxNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsRUFBRTtJQUNmLDRDQUE0QztJQUM1QyxNQUFNLFdBQVcsR0FBRyxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUNOLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFhLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FDM0UsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFeEUsNEJBQTRCO0lBQzVCLE1BQU0sT0FBTyxHQUFHLENBQUMsRUFBYSxFQUFFLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxDQUFTLEVBQUUsRUFBRTtRQUNoRixNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQztRQUN6QyxNQUFNLE1BQU0sR0FBTSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNuRixJQUFJLFNBQVMsR0FBSyxDQUFDLENBQUMsQ0FBQztRQUNyQixNQUFNLE1BQU0sR0FBTSxDQUFDLElBQVcsRUFBRSxJQUFXLEVBQUUsS0FBWSxFQUFTLEVBQUUsQ0FDaEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDM0UsQ0FBQyxFQUFFLENB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QU8sR0FBRyxFQUFFLENBQUM7b0JBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxpQ0FBaUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUE7Z0JBQUMsQ0FBQztZQUM5RSxDQUFDO1FBQ0wsQ0FBQztLQUNKLENBQUM7QUFDTixDQUFDLENBQUMsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsidHlwZSBOYXZBcmdzID0gcmVhZG9ubHkgW1RhZ3MsIFNlcXVlbHMsIG51bGwgfCBMYWJlbFNlcXVlbHMsIHN0cmluZz9dXG50eXBlIENvbWJvQXJncyA9IHJlYWRvbmx5IFtzdHJpbmcsIHN0cmluZz9dXG50eXBlIFNlbGVjdG9yQXJncyA9IHJlYWRvbmx5IFtudW1iZXIsIHN0cmluZywgc3RyaW5nP11cblxuaW50ZXJmYWNlIFRhZ3Mge1xuICAgIHJlYWRvbmx5IGJlZm9yZTpzdHJpbmdcbiAgICByZWFkb25seSBsaW5rOnN0cmluZ1xuICAgIHJlYWRvbmx5IGFjdGl2ZTpzdHJpbmdcbiAgICByZWFkb25seSBnYXA6c3RyaW5nXG4gICAgcmVhZG9ubHkgYWZ0ZXI6c3RyaW5nXG59XG5cbmludGVyZmFjZSBTZXF1ZWxzIHtyZWFkb25seSBbd2lkdGg6c3RyaW5nXTooc3RyaW5nIHwgbnVtYmVyKVtdfVxuXG5pbnRlcmZhY2UgTGFiZWxTZXF1ZWxzIHtyZWFkb25seSBbd2lkdGg6c3RyaW5nXTpzdHJpbmdbXX1cblxuaW50ZXJmYWNlIE5hdkVsZW1lbnQgZXh0ZW5kcyBFbGVtZW50IHtwYWd5UmVuZGVyKCk6dm9pZH1cblxuY29uc3QgUGFneSA9ICgoKSA9PiB7XG4gICAgLy8gVGhlIG9ic2VydmVyIGluc3RhbmNlIGZvciByZXNwb25zaXZlIG5hdnNcbiAgICBjb25zdCByanNPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihlbnRyaWVzID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJpZXMuZm9yRWFjaChlID0+IGUudGFyZ2V0LnF1ZXJ5U2VsZWN0b3JBbGw8TmF2RWxlbWVudD4oXCIucGFneS1yanNcIikuZm9yRWFjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsID0+IGVsLnBhZ3lSZW5kZXIoKSkpKTtcblxuICAgIC8vIEluaXQgdGhlICpfbmF2X2pzIGhlbHBlcnNcbiAgICBjb25zdCBpbml0TmF2ID0gKGVsOk5hdkVsZW1lbnQsIFt0YWdzLCBzZXF1ZWxzLCBsYWJlbFNlcXVlbHMsIHRyaW1QYXJhbV06TmF2QXJncykgPT4ge1xuICAgICAgICBjb25zdCBjb250YWluZXIgPSBlbC5wYXJlbnRFbGVtZW50ID8/IGVsO1xuICAgICAgICBjb25zdCB3aWR0aHMgICAgPSBPYmplY3Qua2V5cyhzZXF1ZWxzKS5tYXAodyA9PiBwYXJzZUludCh3KSkuc29ydCgoYSwgYikgPT4gYiAtIGEpO1xuICAgICAgICBsZXQgbGFzdFdpZHRoICAgPSAtMTtcbiAgICAgICAgY29uc3QgZmlsbEluICAgID0gKGxpbms6c3RyaW5nLCBwYWdlOnN0cmluZywgbGFiZWw6c3RyaW5nKTpzdHJpbmcgPT5cbiAgICAgICAgICAgIGxpbmsucmVwbGFjZSgvX19wYWd5X3BhZ2VfXy9nLCBwYWdlKS5yZXBsYWNlKC9fX3BhZ3lfbGFiZWxfXy9nLCBsYWJlbCk7XG4gICAgICAgIChlbC5wYWd5UmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY29uc3Qgd2lkdGggPSB3aWR0aHMuZmluZCh3ID0+IHcgPCBjb250YWluZXIuY2xpZW50V2lkdGgpIHx8IDA7XG4gICAgICAgICAgICBpZiAod2lkdGggPT09IGxhc3RXaWR0aCkgeyByZXR1cm4gfSAvLyBubyBjaGFuZ2U6IGFib3J0XG4gICAgICAgICAgICBsZXQgaHRtbCAgICAgPSB0YWdzLmJlZm9yZTtcbiAgICAgICAgICAgIGNvbnN0IHNlcmllcyA9IHNlcXVlbHNbd2lkdGgudG9TdHJpbmcoKV07XG4gICAgICAgICAgICBjb25zdCBsYWJlbHMgPSBsYWJlbFNlcXVlbHM/Llt3aWR0aC50b1N0cmluZygpXSA/PyBzZXJpZXMubWFwKGwgPT4gbC50b1N0cmluZygpKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaSBpbiBzZXJpZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtICA9IHNlcmllc1tpXTtcbiAgICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IGxhYmVsc1tpXTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRyaW1QYXJhbSA9PT0gXCJzdHJpbmdcIiAmJiBpdGVtID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gdHJpbShmaWxsSW4odGFncy5saW5rLCBpdGVtLnRvU3RyaW5nKCksIGxhYmVsKSwgdHJpbVBhcmFtKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBpdGVtID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gZmlsbEluKHRhZ3MubGluaywgaXRlbS50b1N0cmluZygpLCBsYWJlbCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSBcImdhcFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gdGFncy5nYXA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHsgLy8gYWN0aXZlIHBhZ2VcbiAgICAgICAgICAgICAgICAgICAgaHRtbCArPSBmaWxsSW4odGFncy5hY3RpdmUsIGl0ZW0sIGxhYmVsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBodG1sICs9IHRhZ3MuYWZ0ZXI7ICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBhbGlnbi1hc3NpZ25tZW50cy9hbGlnbi1hc3NpZ25tZW50c1xuICAgICAgICAgICAgZWwuaW5uZXJIVE1MID0gXCJcIjtcbiAgICAgICAgICAgIGVsLmluc2VydEFkamFjZW50SFRNTChcImFmdGVyYmVnaW5cIiwgaHRtbCk7XG4gICAgICAgICAgICBsYXN0V2lkdGggPSB3aWR0aDtcbiAgICAgICAgfSkoKTtcbiAgICAgICAgaWYgKGVsLmNsYXNzTGlzdC5jb250YWlucyhcInBhZ3ktcmpzXCIpKSB7IHJqc09ic2VydmVyLm9ic2VydmUoY29udGFpbmVyKSB9XG4gICAgfTtcblxuICAgIC8vIEluaXQgdGhlICpfY29tYm9fbmF2X2pzIGhlbHBlcnNcbiAgICBjb25zdCBpbml0Q29tYm8gPSAoZWw6RWxlbWVudCwgW2xpbmssIHRyaW1QYXJhbV06Q29tYm9BcmdzKSA9PlxuICAgICAgICBpbml0SW5wdXQoZWwsIGlucHV0VmFsdWUgPT4gW2lucHV0VmFsdWUsIGxpbmsucmVwbGFjZSgvX19wYWd5X3BhZ2VfXy8sIGlucHV0VmFsdWUpXSwgdHJpbVBhcmFtKTtcblxuICAgIC8vIEluaXQgdGhlIGl0ZW1zX3NlbGVjdG9yX2pzIGhlbHBlclxuICAgIGNvbnN0IGluaXRTZWxlY3RvciA9IChlbDpFbGVtZW50LCBbZnJvbSwgbGluaywgdHJpbVBhcmFtXTpTZWxlY3RvckFyZ3MpID0+IHtcbiAgICAgICAgaW5pdElucHV0KGVsLCBpbnB1dFZhbHVlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhZ2UgPSBNYXRoLm1heChNYXRoLmNlaWwoZnJvbSAvIHBhcnNlSW50KGlucHV0VmFsdWUpKSwgMSkudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIGNvbnN0IGh0bWwgPSBsaW5rLnJlcGxhY2UoL19fcGFneV9wYWdlX18vLCBwYWdlKS5yZXBsYWNlKC9fX3BhZ3lfaXRlbXNfXy8sIGlucHV0VmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuIFtwYWdlLCBodG1sXTtcbiAgICAgICAgfSwgdHJpbVBhcmFtKTtcbiAgICB9O1xuXG4gICAgLy8gSW5pdCB0aGUgaW5wdXQgZWxlbWVudFxuICAgIGNvbnN0IGluaXRJbnB1dCA9IChlbDpFbGVtZW50LCBnZXRWYXJzOih2OnN0cmluZykgPT4gW3N0cmluZywgc3RyaW5nXSwgdHJpbVBhcmFtPzpzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgICA9IGVsLnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFwiKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICBjb25zdCBpbml0aWFsID0gaW5wdXQudmFsdWU7XG4gICAgICAgIGNvbnN0IGFjdGlvbiAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoaW5wdXQudmFsdWUgPT09IGluaXRpYWwpIHsgcmV0dXJuIH0gIC8vIG5vdCBjaGFuZ2VkXG4gICAgICAgICAgICBjb25zdCBbbWluLCB2YWwsIG1heF0gPSBbaW5wdXQubWluLCBpbnB1dC52YWx1ZSwgaW5wdXQubWF4XS5tYXAobiA9PiBwYXJzZUludChuKSB8fCAwKTtcbiAgICAgICAgICAgIGlmICh2YWwgPCBtaW4gfHwgdmFsID4gbWF4KSB7ICAvLyByZXNldCBpbnZhbGlkL291dC1vZi1yYW5nZVxuICAgICAgICAgICAgICAgIGlucHV0LnZhbHVlID0gaW5pdGlhbDtcbiAgICAgICAgICAgICAgICBpbnB1dC5zZWxlY3QoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgW3BhZ2UsIGh0bWxdID0gZ2V0VmFycyhpbnB1dC52YWx1ZSk7ICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBwcmVmZXItY29uc3RcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdHJpbVBhcmFtID09PSBcInN0cmluZ1wiICYmIHBhZ2UgPT09IFwiMVwiKSB7IGh0bWwgPSB0cmltKGh0bWwsIHRyaW1QYXJhbSkgfVxuICAgICAgICAgICAgZWwuaW5zZXJ0QWRqYWNlbnRIVE1MKFwiYWZ0ZXJiZWdpblwiLCBodG1sKTtcbiAgICAgICAgICAgIChlbC5xdWVyeVNlbGVjdG9yKFwiYVwiKSBhcyBIVE1MQW5jaG9yRWxlbWVudCkuY2xpY2soKTtcbiAgICAgICAgfTtcbiAgICAgICAgW1wiY2hhbmdlXCIsIFwiZm9jdXNcIl0uZm9yRWFjaChlID0+IGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoZSwgaW5wdXQuc2VsZWN0KSk7ICAgICAgICAvLyBhdXRvLXNlbGVjdFxuICAgICAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNvdXRcIiwgYWN0aW9uKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmlnZ2VyIGFjdGlvblxuICAgICAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKFwia2V5cHJlc3NcIiwgZSA9PiB7IGlmIChlLmtleSA9PT0gXCJFbnRlclwiKSB7IGFjdGlvbigpIH0gfSk7IC8vIHRyaWdnZXIgYWN0aW9uXG4gICAgfTtcblxuICAgIC8vIFRyaW0gdGhlICR7cGFnZS1wYXJhbX09MSBwYXJhbXMgaW4gbGlua3NcbiAgICBjb25zdCB0cmltID0gKGxpbms6c3RyaW5nLCBwYXJhbTpzdHJpbmcpID0+XG4gICAgICAgIGxpbmsucmVwbGFjZShuZXcgUmVnRXhwKGBbPyZdJHtwYXJhbX09MVxcXFxiKD8hJil8XFxcXGIke3BhcmFtfT0xJmApLCBcIlwiKTtcblxuICAgIC8vIFB1YmxpYyBpbnRlcmZhY2VcbiAgICByZXR1cm4ge1xuICAgICAgICB2ZXJzaW9uOiBcIjcuMC40XCIsXG5cbiAgICAgICAgLy8gU2NhbiBmb3IgZWxlbWVudHMgd2l0aCBhIFwiZGF0YS1wYWd5XCIgYXR0cmlidXRlIGFuZCBjYWxsIHRoZWlyIGluaXQgZnVuY3Rpb25zIHdpdGggdGhlIGRlY29kZWQgYXJnc1xuICAgICAgICBpbml0KGFyZz86RWxlbWVudCB8IG5ldmVyKSB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgICA9IGFyZyBpbnN0YW5jZW9mIEVsZW1lbnQgPyBhcmcgOiBkb2N1bWVudDtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzID0gdGFyZ2V0LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbZGF0YS1wYWd5XVwiKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZWwgb2YgZWxlbWVudHMpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OGFycmF5ICAgICAgICAgPSBVaW50OEFycmF5LmZyb20oYXRvYihlbC5nZXRBdHRyaWJ1dGUoXCJkYXRhLXBhZ3lcIikgYXMgc3RyaW5nKSwgYyA9PiBjLmNoYXJDb2RlQXQoMCkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBba2V5d29yZCwgLi4uYXJnc10gPSBKU09OLnBhcnNlKChuZXcgVGV4dERlY29kZXIoKSkuZGVjb2RlKHVpbnQ4YXJyYXkpKTsgLy8gYmFzZTY0LXV0ZjggLT4gSlNPTiAtPiBBcnJheVxuICAgICAgICAgICAgICAgICAgICBpZiAoa2V5d29yZCA9PT0gXCJuYXZcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdE5hdihlbCBhcyBOYXZFbGVtZW50LCBhcmdzIGFzIE5hdkFyZ3MpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtleXdvcmQgPT09IFwiY29tYm9cIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdENvbWJvKGVsLCBhcmdzIGFzIENvbWJvQXJncyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5d29yZCA9PT0gXCJzZWxlY3RvclwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0U2VsZWN0b3IoZWwsIGFyZ3MgYXMgU2VsZWN0b3JBcmdzKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIlNraXBwZWQgUGFneS5pbml0KCkgZm9yOiAlb1xcblVua25vd24ga2V5d29yZCAnJXMnXCIsIGVsLCBrZXl3b3JkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikgeyBjb25zb2xlLndhcm4oXCJTa2lwcGVkIFBhZ3kuaW5pdCgpIGZvcjogJW9cXG4lc1wiLCBlbCwgZXJyKSB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xufSkoKTtcbiJdfQ==
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFneS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInBhZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQWtCQSxNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsRUFBRTtJQUNmLDRDQUE0QztJQUM1QyxNQUFNLFdBQVcsR0FBRyxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUNOLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFhLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FDM0UsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFeEUsNEJBQTRCO0lBQzVCLE1BQU0sT0FBTyxHQUFHLENBQUMsRUFBYSxFQUFFLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxDQUFTLEVBQUUsRUFBRTtRQUNoRixNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQztRQUN6QyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNoRixJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNuQixNQUFNLE1BQU0sR0FBRyxDQUFDLElBQVcsRUFBRSxJQUFXLEVBQUUsS0FBWSxFQUFTLEVBQUUsQ0FDN0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDM0UsQ0FBQyxFQUFFLENB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QUFDO2dCQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7b0JBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxpQ0FBaUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUE7Z0JBQUMsQ0FBQztZQUM5RSxDQUFDO1FBQ0wsQ0FBQztLQUNKLENBQUM7QUFDTixDQUFDLENBQUMsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsidHlwZSBOYXZBcmdzID0gcmVhZG9ubHkgW1RhZ3MsIFNlcXVlbHMsIG51bGwgfCBMYWJlbFNlcXVlbHMsIHN0cmluZz9dXG50eXBlIENvbWJvQXJncyA9IHJlYWRvbmx5IFtzdHJpbmcsIHN0cmluZz9dXG50eXBlIFNlbGVjdG9yQXJncyA9IHJlYWRvbmx5IFtudW1iZXIsIHN0cmluZywgc3RyaW5nP11cblxuaW50ZXJmYWNlIFRhZ3Mge1xuICAgIHJlYWRvbmx5IGJlZm9yZTpzdHJpbmdcbiAgICByZWFkb25seSBsaW5rOnN0cmluZ1xuICAgIHJlYWRvbmx5IGFjdGl2ZTpzdHJpbmdcbiAgICByZWFkb25seSBnYXA6c3RyaW5nXG4gICAgcmVhZG9ubHkgYWZ0ZXI6c3RyaW5nXG59XG5cbmludGVyZmFjZSBTZXF1ZWxzIHtyZWFkb25seSBbd2lkdGg6c3RyaW5nXTooc3RyaW5nIHwgbnVtYmVyKVtdfVxuXG5pbnRlcmZhY2UgTGFiZWxTZXF1ZWxzIHtyZWFkb25seSBbd2lkdGg6c3RyaW5nXTpzdHJpbmdbXX1cblxuaW50ZXJmYWNlIE5hdkVsZW1lbnQgZXh0ZW5kcyBFbGVtZW50IHtwYWd5UmVuZGVyKCk6dm9pZH1cblxuY29uc3QgUGFneSA9ICgoKSA9PiB7XG4gICAgLy8gVGhlIG9ic2VydmVyIGluc3RhbmNlIGZvciByZXNwb25zaXZlIG5hdnNcbiAgICBjb25zdCByanNPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihlbnRyaWVzID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJpZXMuZm9yRWFjaChlID0+IGUudGFyZ2V0LnF1ZXJ5U2VsZWN0b3JBbGw8TmF2RWxlbWVudD4oXCIucGFneS1yanNcIikuZm9yRWFjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsID0+IGVsLnBhZ3lSZW5kZXIoKSkpKTtcblxuICAgIC8vIEluaXQgdGhlICpfbmF2X2pzIGhlbHBlcnNcbiAgICBjb25zdCBpbml0TmF2ID0gKGVsOk5hdkVsZW1lbnQsIFt0YWdzLCBzZXF1ZWxzLCBsYWJlbFNlcXVlbHMsIHRyaW1QYXJhbV06TmF2QXJncykgPT4ge1xuICAgICAgICBjb25zdCBjb250YWluZXIgPSBlbC5wYXJlbnRFbGVtZW50ID8/IGVsO1xuICAgICAgICBjb25zdCB3aWR0aHMgPSBPYmplY3Qua2V5cyhzZXF1ZWxzKS5tYXAodyA9PiBwYXJzZUludCh3KSkuc29ydCgoYSwgYikgPT4gYiAtIGEpO1xuICAgICAgICBsZXQgbGFzdFdpZHRoID0gLTE7XG4gICAgICAgIGNvbnN0IGZpbGxJbiA9IChsaW5rOnN0cmluZywgcGFnZTpzdHJpbmcsIGxhYmVsOnN0cmluZyk6c3RyaW5nID0+XG4gICAgICAgICAgICBsaW5rLnJlcGxhY2UoL19fcGFneV9wYWdlX18vZywgcGFnZSkucmVwbGFjZSgvX19wYWd5X2xhYmVsX18vZywgbGFiZWwpO1xuICAgICAgICAoZWwucGFneVJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gd2lkdGhzLmZpbmQodyA9PiB3IDwgY29udGFpbmVyLmNsaWVudFdpZHRoKSB8fCAwO1xuICAgICAgICAgICAgaWYgKHdpZHRoID09PSBsYXN0V2lkdGgpIHsgcmV0dXJuIH0gLy8gbm8gY2hhbmdlOiBhYm9ydFxuICAgICAgICAgICAgbGV0IGh0bWwgPSB0YWdzLmJlZm9yZTsgIC8vIGFscmVhZHkgdHJpbW1lZCBpbiBodG1sXG4gICAgICAgICAgICBjb25zdCBzZXJpZXMgPSBzZXF1ZWxzW3dpZHRoLnRvU3RyaW5nKCldO1xuICAgICAgICAgICAgY29uc3QgbGFiZWxzID0gbGFiZWxTZXF1ZWxzPy5bd2lkdGgudG9TdHJpbmcoKV0gPz8gc2VyaWVzLm1hcChsID0+IGwudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGkgaW4gc2VyaWVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IHNlcmllc1tpXTtcbiAgICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IGxhYmVsc1tpXTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRyaW1QYXJhbSA9PT0gXCJzdHJpbmdcIiAmJiBpdGVtID09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgaHRtbCArPSB0cmltKGZpbGxJbih0YWdzLmxpbmssIGl0ZW0udG9TdHJpbmcoKSwgbGFiZWwpLCB0cmltUGFyYW0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGl0ZW0gPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgaHRtbCArPSBmaWxsSW4odGFncy5saW5rLCBpdGVtLnRvU3RyaW5nKCksIGxhYmVsKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gPT09IFwiZ2FwXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgaHRtbCArPSB0YWdzLmdhcDtcbiAgICAgICAgICAgICAgICB9IGVsc2UgeyAvLyBhY3RpdmUgcGFnZVxuICAgICAgICAgICAgICAgICAgICBodG1sICs9IGZpbGxJbih0YWdzLmFjdGl2ZSwgaXRlbSwgbGFiZWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGh0bWwgKz0gdGFncy5hZnRlcjsgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGFsaWduLWFzc2lnbm1lbnRzL2FsaWduLWFzc2lnbm1lbnRzXG4gICAgICAgICAgICBlbC5pbm5lckhUTUwgPSBcIlwiO1xuICAgICAgICAgICAgZWwuaW5zZXJ0QWRqYWNlbnRIVE1MKFwiYWZ0ZXJiZWdpblwiLCBodG1sKTtcbiAgICAgICAgICAgIGxhc3RXaWR0aCA9IHdpZHRoO1xuICAgICAgICB9KSgpO1xuICAgICAgICBpZiAoZWwuY2xhc3NMaXN0LmNvbnRhaW5zKFwicGFneS1yanNcIikpIHsgcmpzT2JzZXJ2ZXIub2JzZXJ2ZShjb250YWluZXIpIH1cbiAgICB9O1xuXG4gICAgLy8gSW5pdCB0aGUgKl9jb21ib19uYXZfanMgaGVscGVyc1xuICAgIGNvbnN0IGluaXRDb21ibyA9IChlbDpFbGVtZW50LCBbbGluaywgdHJpbVBhcmFtXTpDb21ib0FyZ3MpID0+XG4gICAgICAgIGluaXRJbnB1dChlbCwgaW5wdXRWYWx1ZSA9PiBbaW5wdXRWYWx1ZSwgbGluay5yZXBsYWNlKC9fX3BhZ3lfcGFnZV9fLywgaW5wdXRWYWx1ZSldLCB0cmltUGFyYW0pO1xuXG4gICAgLy8gSW5pdCB0aGUgaXRlbXNfc2VsZWN0b3JfanMgaGVscGVyXG4gICAgY29uc3QgaW5pdFNlbGVjdG9yID0gKGVsOkVsZW1lbnQsIFtmcm9tLCBsaW5rLCB0cmltUGFyYW1dOlNlbGVjdG9yQXJncykgPT4ge1xuICAgICAgICBpbml0SW5wdXQoZWwsIGlucHV0VmFsdWUgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFnZSA9IE1hdGgubWF4KE1hdGguY2VpbChmcm9tIC8gcGFyc2VJbnQoaW5wdXRWYWx1ZSkpLCAxKS50b1N0cmluZygpO1xuICAgICAgICAgICAgY29uc3QgaHRtbCA9IGxpbmsucmVwbGFjZSgvX19wYWd5X3BhZ2VfXy8sIHBhZ2UpLnJlcGxhY2UoL19fcGFneV9pdGVtc19fLywgaW5wdXRWYWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gW3BhZ2UsIGh0bWxdO1xuICAgICAgICB9LCB0cmltUGFyYW0pO1xuICAgIH07XG5cbiAgICAvLyBJbml0IHRoZSBpbnB1dCBlbGVtZW50XG4gICAgY29uc3QgaW5pdElucHV0ID0gKGVsOkVsZW1lbnQsIGdldFZhcnM6KHY6c3RyaW5nKSA9PiBbc3RyaW5nLCBzdHJpbmddLCB0cmltUGFyYW0/OnN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IGVsLnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFwiKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICBjb25zdCBpbml0aWFsID0gaW5wdXQudmFsdWU7XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChpbnB1dC52YWx1ZSA9PT0gaW5pdGlhbCkgeyByZXR1cm4gfSAgLy8gbm90IGNoYW5nZWRcbiAgICAgICAgICAgIGNvbnN0IFttaW4sIHZhbCwgbWF4XSA9IFtpbnB1dC5taW4sIGlucHV0LnZhbHVlLCBpbnB1dC5tYXhdLm1hcChuID0+IHBhcnNlSW50KG4pIHx8IDApO1xuICAgICAgICAgICAgaWYgKHZhbCA8IG1pbiB8fCB2YWwgPiBtYXgpIHsgIC8vIHJlc2V0IGludmFsaWQvb3V0LW9mLXJhbmdlXG4gICAgICAgICAgICAgICAgaW5wdXQudmFsdWUgPSBpbml0aWFsO1xuICAgICAgICAgICAgICAgIGlucHV0LnNlbGVjdCgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBbcGFnZSwgaHRtbF0gPSBnZXRWYXJzKGlucHV0LnZhbHVlKTsgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHByZWZlci1jb25zdFxuICAgICAgICAgICAgaWYgKHR5cGVvZiB0cmltUGFyYW0gPT09IFwic3RyaW5nXCIgJiYgcGFnZSA9PT0gXCIxXCIpIHsgaHRtbCA9IHRyaW0oaHRtbCwgdHJpbVBhcmFtKSB9XG4gICAgICAgICAgICBlbC5pbnNlcnRBZGphY2VudEhUTUwoXCJhZnRlcmJlZ2luXCIsIGh0bWwpO1xuICAgICAgICAgICAgKGVsLnF1ZXJ5U2VsZWN0b3IoXCJhXCIpIGFzIEhUTUxBbmNob3JFbGVtZW50KS5jbGljaygpO1xuICAgICAgICB9O1xuICAgICAgICBbXCJjaGFuZ2VcIiwgXCJmb2N1c1wiXS5mb3JFYWNoKGUgPT4gaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcihlLCBpbnB1dC5zZWxlY3QpKTsgICAgICAgIC8vIGF1dG8tc2VsZWN0XG4gICAgICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c291dFwiLCBhY3Rpb24pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaWdnZXIgYWN0aW9uXG4gICAgICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlwcmVzc1wiLCBlID0+IHsgaWYgKGUua2V5ID09PSBcIkVudGVyXCIpIHsgYWN0aW9uKCkgfSB9KTsgLy8gdHJpZ2dlciBhY3Rpb25cbiAgICB9O1xuXG4gICAgLy8gVHJpbSB0aGUgJHtwYWdlLXBhcmFtfT0xIHBhcmFtcyBpbiBsaW5rc1xuICAgIGNvbnN0IHRyaW0gPSAobGluazpzdHJpbmcsIHBhcmFtOnN0cmluZykgPT5cbiAgICAgICAgbGluay5yZXBsYWNlKG5ldyBSZWdFeHAoYFs/Jl0ke3BhcmFtfT0xXFxcXGIoPyEmKXxcXFxcYiR7cGFyYW19PTEmYCksIFwiXCIpO1xuXG4gICAgLy8gUHVibGljIGludGVyZmFjZVxuICAgIHJldHVybiB7XG4gICAgICAgIHZlcnNpb246IFwiNy4wLjZcIixcblxuICAgICAgICAvLyBTY2FuIGZvciBlbGVtZW50cyB3aXRoIGEgXCJkYXRhLXBhZ3lcIiBhdHRyaWJ1dGUgYW5kIGNhbGwgdGhlaXIgaW5pdCBmdW5jdGlvbnMgd2l0aCB0aGUgZGVjb2RlZCBhcmdzXG4gICAgICAgIGluaXQoYXJnPzpFbGVtZW50IHwgbmV2ZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGFyZyBpbnN0YW5jZW9mIEVsZW1lbnQgPyBhcmcgOiBkb2N1bWVudDtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzID0gdGFyZ2V0LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbZGF0YS1wYWd5XVwiKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZWwgb2YgZWxlbWVudHMpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OGFycmF5ID0gVWludDhBcnJheS5mcm9tKGF0b2IoZWwuZ2V0QXR0cmlidXRlKFwiZGF0YS1wYWd5XCIpIGFzIHN0cmluZyksIGMgPT4gYy5jaGFyQ29kZUF0KDApKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgW2tleXdvcmQsIC4uLmFyZ3NdID0gSlNPTi5wYXJzZSgobmV3IFRleHREZWNvZGVyKCkpLmRlY29kZSh1aW50OGFycmF5KSk7IC8vIGJhc2U2NC11dGY4IC0+IEpTT04gLT4gQXJyYXlcbiAgICAgICAgICAgICAgICAgICAgaWYgKGtleXdvcmQgPT09IFwibmF2XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXROYXYoZWwgYXMgTmF2RWxlbWVudCwgYXJncyBhcyBOYXZBcmdzKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrZXl3b3JkID09PSBcImNvbWJvXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRDb21ibyhlbCwgYXJncyBhcyBDb21ib0FyZ3MpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtleXdvcmQgPT09IFwic2VsZWN0b3JcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdFNlbGVjdG9yKGVsLCBhcmdzIGFzIFNlbGVjdG9yQXJncyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJTa2lwcGVkIFBhZ3kuaW5pdCgpIGZvcjogJW9cXG5Vbmtub3duIGtleXdvcmQgJyVzJ1wiLCBlbCwga2V5d29yZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHsgY29uc29sZS53YXJuKFwiU2tpcHBlZCBQYWd5LmluaXQoKSBmb3I6ICVvXFxuJXNcIiwgZWwsIGVycikgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbn0pKCk7XG4iXX0=
|
@@ -12,13 +12,13 @@ const Pagy = (() => {
|
|
12
12
|
if (width === lastWidth) {
|
13
13
|
return;
|
14
14
|
} // no change: abort
|
15
|
-
let html = tags.before;
|
15
|
+
let html = tags.before; // already trimmed in html
|
16
16
|
const series = sequels[width.toString()];
|
17
17
|
const labels = labelSequels?.[width.toString()] ?? series.map(l => l.toString());
|
18
18
|
for (const i in series) {
|
19
19
|
const item = series[i];
|
20
20
|
const label = labels[i];
|
21
|
-
if (typeof trimParam === "string" && item
|
21
|
+
if (typeof trimParam === "string" && item == 1) {
|
22
22
|
html += trim(fillIn(tags.link, item.toString(), label), trimParam);
|
23
23
|
}
|
24
24
|
else if (typeof item === "number") {
|
@@ -81,7 +81,7 @@ const Pagy = (() => {
|
|
81
81
|
const trim = (link, param) => link.replace(new RegExp(`[?&]${param}=1\\b(?!&)|\\b${param}=1&`), "");
|
82
82
|
// Public interface
|
83
83
|
return {
|
84
|
-
version: "7.0.
|
84
|
+
version: "7.0.6",
|
85
85
|
// Scan for elements with a "data-pagy" attribute and call their init functions with the decoded args
|
86
86
|
init(arg) {
|
87
87
|
const target = arg instanceof Element ? arg : document;
|
data/lib/javascripts/pagy.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
!function(){let e=(()=>{let e=new ResizeObserver(e=>e.forEach(e=>e.target.querySelectorAll(".pagy-rjs").forEach(e=>e.pagyRender()))),t=(t,[r,n,a,i])=>{let l=t.parentElement??t,c=Object.keys(n).map(e=>parseInt(e)).sort((e,t)=>t-e),p=-1,s=(e,t,r)=>e.replace(/__pagy_page__/g,t).replace(/__pagy_label__/g,r);(t.pagyRender=function(){let e=c.find(e=>e<l.clientWidth)||0;if(e===p)return;let g=r.before,y=n[e.toString()],f=a?.[e.toString()]??y.map(e=>e.toString());for(let e in y){let t=y[e],n=f[e];"string"==typeof i&&1
|
1
|
+
!function(){let e=(()=>{let e=new ResizeObserver(e=>e.forEach(e=>e.target.querySelectorAll(".pagy-rjs").forEach(e=>e.pagyRender()))),t=(t,[r,n,a,i])=>{let l=t.parentElement??t,c=Object.keys(n).map(e=>parseInt(e)).sort((e,t)=>t-e),p=-1,s=(e,t,r)=>e.replace(/__pagy_page__/g,t).replace(/__pagy_label__/g,r);(t.pagyRender=function(){let e=c.find(e=>e<l.clientWidth)||0;if(e===p)return;let g=r.before,y=n[e.toString()],f=a?.[e.toString()]??y.map(e=>e.toString());for(let e in y){let t=y[e],n=f[e];"string"==typeof i&&1==t?g+=o(s(r.link,t.toString(),n),i):"number"==typeof t?g+=s(r.link,t.toString(),n):"gap"===t?g+=r.gap:g+=s(r.active,t,n)}g+=r.after,t.innerHTML="",t.insertAdjacentHTML("afterbegin",g),p=e})(),t.classList.contains("pagy-rjs")&&e.observe(l)},r=(e,[t,r])=>a(e,e=>[e,t.replace(/__pagy_page__/,e)],r),n=(e,[t,r,n])=>{a(e,e=>{let n=Math.max(Math.ceil(t/parseInt(e)),1).toString(),a=r.replace(/__pagy_page__/,n).replace(/__pagy_items__/,e);return[n,a]},n)},a=(e,t,r)=>{let n=e.querySelector("input"),a=n.value,i=function(){if(n.value===a)return;let[i,l,c]=[n.min,n.value,n.max].map(e=>parseInt(e)||0);if(l<i||l>c){n.value=a,n.select();return}let[p,s]=t(n.value);"string"==typeof r&&"1"===p&&(s=o(s,r)),e.insertAdjacentHTML("afterbegin",s),e.querySelector("a").click()};["change","focus"].forEach(e=>n.addEventListener(e,n.select)),n.addEventListener("focusout",i),n.addEventListener("keypress",e=>{"Enter"===e.key&&i()})},o=(e,t)=>e.replace(RegExp(`[?&]${t}=1\\b(?!&)|\\b${t}=1&`),"");return{version:"7.0.6",init(e){for(let a of(e instanceof Element?e:document).querySelectorAll("[data-pagy]"))try{let e=Uint8Array.from(atob(a.getAttribute("data-pagy")),e=>e.charCodeAt(0)),[o,...i]=JSON.parse(new TextDecoder().decode(e));"nav"===o?t(a,i):"combo"===o?r(a,i):"selector"===o?n(a,i):console.warn("Skipped Pagy.init() for: %o\nUnknown keyword '%s'",a,o)}catch(e){console.warn("Skipped Pagy.init() for: %o\n%s",a,e)}}}})();window.Pagy=e}();
|
@@ -21,9 +21,10 @@ class Pagy # :nodoc:
|
|
21
21
|
when Integer
|
22
22
|
%(<li class="page-item">#{link.call(item)}</li>)
|
23
23
|
when String
|
24
|
-
%(<li class="page-item active">#{
|
24
|
+
%(<li class="page-item active"><a role="link" class="page-link" aria-current="page" aria-disabled="true">#{
|
25
|
+
pagy.label_for(item)}</a></li>)
|
25
26
|
when :gap
|
26
|
-
%(<li class="page-item gap disabled"><a
|
27
|
+
%(<li class="page-item gap disabled"><a role="link" class="page-link" aria-disabled="true">#{
|
27
28
|
pagy_t 'pagy.gap'}</a></li>)
|
28
29
|
else raise InternalError, "expected item types in series to be Integer, String or :gap; got #{item.inspect}"
|
29
30
|
end
|
@@ -39,9 +40,10 @@ class Pagy # :nodoc:
|
|
39
40
|
p_id = %( id="#{pagy_id}") if pagy_id
|
40
41
|
link = pagy_link_proc(pagy, link_extra: %(class="page-link" #{link_extra}))
|
41
42
|
tags = { 'before' => %(<ul class="pagination">#{bootstrap_prev_html pagy, link}),
|
42
|
-
'link' => %(<li class="page-item">#{
|
43
|
-
'active' => %(<li class="page-item active"
|
44
|
-
|
43
|
+
'link' => %(<li class="page-item">#{link.call(PAGE_TOKEN, LABEL_TOKEN)}</li>),
|
44
|
+
'active' => %(<li class="page-item active"><a role="link" class="page-link" ) +
|
45
|
+
%(aria-current="page" aria-disabled="true">#{LABEL_TOKEN}</a></li>),
|
46
|
+
'gap' => %(<li class="page-item gap disabled"><a role="link" class="page-link" aria-disabled="true">#{
|
45
47
|
pagy_t 'pagy.gap'}</a></li>),
|
46
48
|
'after' => %(#{bootstrap_next_html pagy, link}</ul>) }
|
47
49
|
|
@@ -68,7 +70,7 @@ class Pagy # :nodoc:
|
|
68
70
|
if (p_prev = pagy.prev)
|
69
71
|
link.call(p_prev, pagy_t('pagy.prev'), %(class="prev btn btn-primary" #{prev_aria_label_attr}))
|
70
72
|
else
|
71
|
-
%(<a class="prev btn btn-primary disabled"
|
73
|
+
%(<a role="link" class="prev btn btn-primary disabled" aria-disabled="true" #{
|
72
74
|
prev_aria_label_attr}>#{pagy_t('pagy.prev')}</a>)
|
73
75
|
end
|
74
76
|
}<div class="pagy-combo-input btn btn-secondary" style="white-space: nowrap;">#{
|
@@ -76,7 +78,7 @@ class Pagy # :nodoc:
|
|
76
78
|
if (p_next = pagy.next)
|
77
79
|
link.call(p_next, pagy_t('pagy.next'), %(class="next btn btn-primary" #{next_aria_label_attr}))
|
78
80
|
else
|
79
|
-
%(<a class="next btn btn-primary disabled"
|
81
|
+
%(<a role="link" class="next btn btn-primary disabled" aria-disabled="true" #{
|
80
82
|
next_aria_label_attr}>#{pagy_t 'pagy.next'}</a>)
|
81
83
|
end
|
82
84
|
}</div></nav>)
|
@@ -88,7 +90,7 @@ class Pagy # :nodoc:
|
|
88
90
|
if (p_prev = pagy.prev)
|
89
91
|
%(<li class="page-item prev">#{link.call(p_prev, pagy_t('pagy.prev'), prev_aria_label_attr)}</li>)
|
90
92
|
else
|
91
|
-
%(<li class="page-item prev disabled"><a
|
93
|
+
%(<li class="page-item prev disabled"><a role="link"class="page-link" aria-disabled="true" #{
|
92
94
|
prev_aria_label_attr}>#{pagy_t('pagy.prev')}</a></li>)
|
93
95
|
end
|
94
96
|
end
|
@@ -97,7 +99,7 @@ class Pagy # :nodoc:
|
|
97
99
|
if (p_next = pagy.next)
|
98
100
|
%(<li class="page-item next">#{link.call p_next, pagy_t('pagy.next'), next_aria_label_attr}</li>)
|
99
101
|
else
|
100
|
-
%(<li class="page-item next disabled"><a
|
102
|
+
%(<li class="page-item next disabled"><a role="link" class="page-link" aria-disabled="true" #{
|
101
103
|
next_aria_label_attr}>#{pagy_t('pagy.next')}</a></li>)
|
102
104
|
end
|
103
105
|
end
|
data/lib/pagy/extras/bulma.rb
CHANGED
@@ -24,7 +24,8 @@ class Pagy # :nodoc:
|
|
24
24
|
when Integer
|
25
25
|
%(<li>#{link.call(item, pagy.label_for(item), %(class="pagination-link"))}</li>)
|
26
26
|
when String
|
27
|
-
%(<li
|
27
|
+
%(<li><a role="link" class="pagination-link is-current" aria-current="page" aria-disabled="true">#{
|
28
|
+
pagy.label_for(item)}</a></li>)
|
28
29
|
when :gap
|
29
30
|
%(<li><span class="pagination-ellipsis">#{pagy_t 'pagy.gap'}</span></li>)
|
30
31
|
else raise InternalError, "expected item types in series to be Integer, String or :gap; got #{item.inspect}"
|
@@ -40,8 +41,9 @@ class Pagy # :nodoc:
|
|
40
41
|
p_id = %( id="#{pagy_id}") if pagy_id
|
41
42
|
link = pagy_link_proc(pagy, link_extra:)
|
42
43
|
tags = { 'before' => %(#{bulma_prev_next_html(pagy, link)}<ul class="pagination-list">),
|
43
|
-
'link' => %(<li>#{link.call(
|
44
|
-
'active' => %(<li
|
44
|
+
'link' => %(<li>#{link.call(PAGE_TOKEN, LABEL_TOKEN, %(class="pagination-link"))}</li>),
|
45
|
+
'active' => %(<li><a role="link" class="pagination-link is-current" aria-current="page" aria-disabled="true">#{
|
46
|
+
LABEL_TOKEN}</a></li>),
|
45
47
|
'gap' => %(<li><span class="pagination-ellipsis">#{pagy_t 'pagy.gap'}</span></li>),
|
46
48
|
'after' => '</ul>' }
|
47
49
|
|
@@ -68,7 +70,7 @@ class Pagy # :nodoc:
|
|
68
70
|
if (p_prev = pagy.prev)
|
69
71
|
%(<p class="control">#{link.call(p_prev, pagy_t('pagy.prev'), %(class="button" #{prev_aria_label_attr}))}</p>)
|
70
72
|
else
|
71
|
-
%(<p class="control"><a class="button" disabled aria-disabled="true" #{
|
73
|
+
%(<p class="control"><a role="link" class="button" disabled aria-disabled="true" #{
|
72
74
|
prev_aria_label_attr}>#{pagy_t 'pagy.prev'}</a></p>)
|
73
75
|
end
|
74
76
|
}<div class="pagy-combo-input control level is-mobile">#{
|
@@ -76,7 +78,7 @@ class Pagy # :nodoc:
|
|
76
78
|
if (p_next = pagy.next)
|
77
79
|
%(<p class="control">#{link.call(p_next, pagy_t('pagy.next'), %(class="button" #{next_aria_label_attr}))}</p>)
|
78
80
|
else
|
79
|
-
%(<p class="control"><a class="button" disabled aria-disabled="true"#{
|
81
|
+
%(<p class="control"><a role="link" class="button" disabled aria-disabled="true"#{
|
80
82
|
next_aria_label_attr}>#{pagy_t 'pagy.next'}</a></p>)
|
81
83
|
end
|
82
84
|
}</div></nav>)
|
@@ -88,13 +90,13 @@ class Pagy # :nodoc:
|
|
88
90
|
html = +if (p_prev = pagy.prev)
|
89
91
|
link.call(p_prev, pagy_t('pagy.prev'), %(#{prev_aria_label_attr} class="pagination-previous"))
|
90
92
|
else
|
91
|
-
%(<a class="pagination-previous" disabled aria-disabled="true" #{
|
93
|
+
%(<a role="link" class="pagination-previous" disabled aria-disabled="true" #{
|
92
94
|
prev_aria_label_attr}>#{pagy_t 'pagy.prev'}</a>)
|
93
95
|
end
|
94
96
|
html << if (p_next = pagy.next)
|
95
97
|
link.call(p_next, pagy_t('pagy.next'), %(#{next_aria_label_attr} class="pagination-next"))
|
96
98
|
else
|
97
|
-
%(<a class="pagination-next" disabled aria-disabled="true" #{
|
99
|
+
%(<a role="link" class="pagination-next" disabled aria-disabled="true" #{
|
98
100
|
next_aria_label_attr}>#{pagy_t('pagy.next')}</a>)
|
99
101
|
end
|
100
102
|
end
|
@@ -39,8 +39,8 @@ class Pagy # :nodoc:
|
|
39
39
|
p_id = %( id="#{pagy_id}") if pagy_id
|
40
40
|
link = pagy_link_proc(pagy, link_extra:)
|
41
41
|
tags = { 'before' => %(<ul class="pagination">#{foundation_prev_html pagy, link}),
|
42
|
-
'link' => %(<li>#{link.call(
|
43
|
-
'active' => %(<li class="current" role="link" aria-current="page" aria-disabled="true">#{
|
42
|
+
'link' => %(<li>#{link.call(PAGE_TOKEN, LABEL_TOKEN)}</li>),
|
43
|
+
'active' => %(<li class="current" role="link" aria-current="page" aria-disabled="true">#{LABEL_TOKEN}</li>),
|
44
44
|
'gap' => %(<li class="ellipsis gap"></li>),
|
45
45
|
'after' => %(#{pagy_foundation_next_html pagy, link}</ul>) }
|
46
46
|
|
data/lib/pagy/extras/headers.rb
CHANGED
@@ -31,10 +31,10 @@ class Pagy # :nodoc:
|
|
31
31
|
countless = defined?(Countless) && pagy.is_a?(Countless)
|
32
32
|
rel = { 'first' => 1, 'prev' => pagy.prev, 'next' => pagy.next }
|
33
33
|
rel['last'] = pagy.last unless countless
|
34
|
-
url_str = pagy_url_for(pagy,
|
34
|
+
url_str = pagy_url_for(pagy, PAGE_TOKEN, absolute: true)
|
35
35
|
link = rel.filter_map do |r, num|
|
36
36
|
next unless num # rubocop:disable Layout/EmptyLineAfterGuardClause
|
37
|
-
[r, url_str.sub(
|
37
|
+
[r, url_str.sub(PAGE_TOKEN, num.to_s)]
|
38
38
|
end.compact.to_h
|
39
39
|
hash = { 'link' => link }
|
40
40
|
headers = pagy.vars[:headers]
|
@@ -21,9 +21,9 @@ class Pagy # :nodoc:
|
|
21
21
|
when Integer
|
22
22
|
%(<li class="waves-effect">#{link.call(item)}</li>)
|
23
23
|
when String
|
24
|
-
%(<li class="active">#{
|
24
|
+
%(<li class="active"><a role="link" aria-current="page" aria-disabled="true">#{pagy.label_for(item)}</a></li>)
|
25
25
|
when :gap
|
26
|
-
%(<li class="gap disabled"><a
|
26
|
+
%(<li class="gap disabled"><a role="link" aria-disabled="true">#{pagy_t 'pagy.gap'}</a></li>)
|
27
27
|
else
|
28
28
|
raise InternalError, "expected item types in series to be Integer, String or :gap; got #{item.inspect}"
|
29
29
|
end
|
@@ -40,9 +40,9 @@ class Pagy # :nodoc:
|
|
40
40
|
link = pagy_link_proc(pagy, link_extra:)
|
41
41
|
|
42
42
|
tags = { 'before' => %(<ul class="pagination">#{materialize_prev_html pagy, link}),
|
43
|
-
'link' => %(<li class="waves-effect">#{
|
44
|
-
'active' => %(<li class="active">#{
|
45
|
-
'gap' => %(<li class="gap disabled"><a
|
43
|
+
'link' => %(<li class="waves-effect">#{link.call(PAGE_TOKEN, LABEL_TOKEN)}</li>),
|
44
|
+
'active' => %(<li class="active"><a role="link" aria-current="page" aria-disabled="true">#{LABEL_TOKEN}</a></li>),
|
45
|
+
'gap' => %(<li class="gap disabled"><a role="link" aria-disabled="true">#{pagy_t 'pagy.gap'}</a></li>),
|
46
46
|
'after' => %(#{materialize_next_html pagy, link}</ul>) }
|
47
47
|
|
48
48
|
%(<div#{p_id} class="#{'pagy-rjs ' if sequels.size > 1}pagy-materialize-nav-js" role="navigation" #{
|
@@ -77,7 +77,7 @@ class Pagy # :nodoc:
|
|
77
77
|
%(<li class="waves-effect prev"#{style}>#{
|
78
78
|
link.call(p_prev, '<i class="material-icons">chevron_left</i>', prev_aria_label_attr)}</li>)
|
79
79
|
else
|
80
|
-
%(<li class="prev disabled"#{style}><a
|
80
|
+
%(<li class="prev disabled"#{style}><a role="link" aria-disabled="true" #{
|
81
81
|
prev_aria_label_attr}><i class="material-icons">chevron_left</i></a></li>)
|
82
82
|
end
|
83
83
|
end
|
@@ -87,7 +87,7 @@ class Pagy # :nodoc:
|
|
87
87
|
%(<li class="waves-effect next"#{style}>#{
|
88
88
|
link.call(p_next, '<i class="material-icons">chevron_right</i>', next_aria_label_attr)}</li>)
|
89
89
|
else
|
90
|
-
%(<li class="next disabled"#{style}><a
|
90
|
+
%(<li class="next disabled"#{style}><a role="link" aria-disabled="true" #{
|
91
91
|
next_aria_label_attr}><i class="material-icons">chevron_right</i></a></li>)
|
92
92
|
end
|
93
93
|
end
|
data/lib/pagy/extras/metadata.rb
CHANGED
@@ -15,17 +15,17 @@ class Pagy # :nodoc:
|
|
15
15
|
|
16
16
|
# Return the metadata hash
|
17
17
|
def pagy_metadata(pagy, absolute: nil)
|
18
|
-
scaffold_url = pagy_url_for(pagy,
|
18
|
+
scaffold_url = pagy_url_for(pagy, PAGE_TOKEN, absolute:)
|
19
19
|
{}.tap do |metadata|
|
20
20
|
keys = defined?(Calendar) && pagy.is_a?(Calendar) ? pagy.vars[:metadata] - %i[count items] : pagy.vars[:metadata]
|
21
21
|
keys.each do |key|
|
22
22
|
metadata[key] = case key
|
23
23
|
when :scaffold_url then scaffold_url
|
24
|
-
when :first_url then scaffold_url.sub(
|
25
|
-
when :prev_url then scaffold_url.sub(
|
26
|
-
when :page_url then scaffold_url.sub(
|
27
|
-
when :next_url then scaffold_url.sub(
|
28
|
-
when :last_url then scaffold_url.sub(
|
24
|
+
when :first_url then scaffold_url.sub(PAGE_TOKEN, 1.to_s)
|
25
|
+
when :prev_url then scaffold_url.sub(PAGE_TOKEN, pagy.prev.to_s)
|
26
|
+
when :page_url then scaffold_url.sub(PAGE_TOKEN, pagy.page.to_s)
|
27
|
+
when :next_url then scaffold_url.sub(PAGE_TOKEN, pagy.next.to_s)
|
28
|
+
when :last_url then scaffold_url.sub(PAGE_TOKEN, pagy.last.to_s)
|
29
29
|
else pagy.send(key)
|
30
30
|
end
|
31
31
|
rescue NoMethodError
|
data/lib/pagy/extras/navs.rb
CHANGED
@@ -14,9 +14,9 @@ class Pagy # :nodoc:
|
|
14
14
|
p_id = %( id="#{pagy_id}") if pagy_id
|
15
15
|
link = pagy_link_proc(pagy, link_extra:)
|
16
16
|
tags = { 'before' => prev_html(pagy, link),
|
17
|
-
'link' => %(<span class="page">#{link.call(
|
17
|
+
'link' => %(<span class="page">#{link.call(PAGE_TOKEN, LABEL_TOKEN)}</span>),
|
18
18
|
'active' => %(<span class="page active">) +
|
19
|
-
%(<a role="link" aria-current="page" aria-disabled="true">#{
|
19
|
+
%(<a role="link" aria-current="page" aria-disabled="true">#{LABEL_TOKEN}</a></span>),
|
20
20
|
'gap' => %(<span class="page gap">#{pagy_t 'pagy.gap'}</span>),
|
21
21
|
'after' => next_html(pagy, link) }
|
22
22
|
|
data/lib/pagy/extras/semantic.rb
CHANGED
@@ -21,7 +21,7 @@ class Pagy # :nodoc:
|
|
21
21
|
when Integer
|
22
22
|
link.call(item, pagy.label_for(item), %(class="item"))
|
23
23
|
when String
|
24
|
-
|
24
|
+
%(<a role="link" class="item active" aria-current="page" aria-disabled="true">#{pagy.label_for(item)}</a>)
|
25
25
|
when :gap
|
26
26
|
%(<div class="disabled item">#{pagy_t 'pagy.gap'}</div>)
|
27
27
|
else
|
@@ -39,8 +39,8 @@ class Pagy # :nodoc:
|
|
39
39
|
p_id = %( id="#{pagy_id}") if pagy_id
|
40
40
|
link = pagy_link_proc(pagy, link_extra:)
|
41
41
|
tags = { 'before' => semantic_prev_html(pagy, link),
|
42
|
-
'link' => link.call(
|
43
|
-
'active' =>
|
42
|
+
'link' => link.call(PAGE_TOKEN, LABEL_TOKEN, %(class="item")),
|
43
|
+
'active' => %(<a role="link" class="item active" aria-current="page" aria-disabled="true">#{LABEL_TOKEN}</a>),
|
44
44
|
'gap' => %(<div class="disabled item">#{pagy_t('pagy.gap')}</div>),
|
45
45
|
'after' => semantic_next_html(pagy, link) }
|
46
46
|
|
data/lib/pagy/extras/uikit.rb
CHANGED
@@ -40,9 +40,9 @@ class Pagy # :nodoc:
|
|
40
40
|
p_id = %( id="#{pagy_id}") if pagy_id
|
41
41
|
link = pagy_link_proc(pagy, link_extra:)
|
42
42
|
tags = { 'before' => uikit_prev_html(pagy, link),
|
43
|
-
'link' => %(<li>#{link.call(
|
43
|
+
'link' => %(<li>#{link.call(PAGE_TOKEN, LABEL_TOKEN)}</li>),
|
44
44
|
'active' => %(<li class="uk-active"><span role="link" aria-current="page" aria-disabled="true">#{
|
45
|
-
|
45
|
+
LABEL_TOKEN}</span></li>),
|
46
46
|
'gap' => %(<li class="uk-disabled"><span>#{pagy_t 'pagy.gap'}</span></li>),
|
47
47
|
'after' => uikit_next_html(pagy, link) }
|
48
48
|
|
data/lib/pagy/frontend.rb
CHANGED
@@ -6,8 +6,8 @@ require 'pagy/i18n'
|
|
6
6
|
|
7
7
|
class Pagy
|
8
8
|
# Used for search and replace, hardcoded also in the pagy.js file
|
9
|
-
|
10
|
-
|
9
|
+
PAGE_TOKEN = '__pagy_page__'
|
10
|
+
LABEL_TOKEN = '__pagy_label__'
|
11
11
|
|
12
12
|
# Frontend modules are specially optimized for performance.
|
13
13
|
# The resulting code may not look very elegant, but produces the best benchmarks
|
@@ -59,8 +59,8 @@ class Pagy
|
|
59
59
|
p_prev = pagy.prev
|
60
60
|
p_next = pagy.next
|
61
61
|
p_page = pagy.page.to_s
|
62
|
-
left, right = %(<a href="#{pagy_url_for(pagy,
|
63
|
-
pagy.vars[:link_extra]} #{link_extra}).split(
|
62
|
+
left, right = %(<a href="#{pagy_url_for(pagy, PAGE_TOKEN)}" #{
|
63
|
+
pagy.vars[:link_extra]} #{link_extra}).split(PAGE_TOKEN, 2)
|
64
64
|
# lambda used by all the helpers
|
65
65
|
lambda do |page, text = pagy.label_for(page), extra_attrs = ''|
|
66
66
|
%(#{left}#{page}#{right}#{ case page
|
data/lib/pagy.rb
CHANGED
@@ -0,0 +1,58 @@
|
|
1
|
+
.pagy {
|
2
|
+
display: flex;
|
3
|
+
}
|
4
|
+
|
5
|
+
.pagy > :not([hidden]) ~ :not([hidden]) {
|
6
|
+
--space-reverse: 0;
|
7
|
+
margin-right: calc(0.25rem * var(--space-reverse));
|
8
|
+
margin-left: calc(0.25rem * calc(1 - var(--space-reverse)));
|
9
|
+
}
|
10
|
+
|
11
|
+
.pagy {
|
12
|
+
font-family: sans-serif;
|
13
|
+
font-size: 0.875rem;
|
14
|
+
line-height: 1.25rem;
|
15
|
+
font-weight: 600;
|
16
|
+
color: rgb(107 114 128);
|
17
|
+
}
|
18
|
+
|
19
|
+
.pagy .page.gap {
|
20
|
+
/* if you need to customize it */
|
21
|
+
}
|
22
|
+
|
23
|
+
.pagy .page a {
|
24
|
+
display: block;
|
25
|
+
text-decoration: none;
|
26
|
+
border-radius: 0.5rem;
|
27
|
+
background-color: rgb(229 231 235);
|
28
|
+
padding: 0.25rem 0.75rem;
|
29
|
+
}
|
30
|
+
|
31
|
+
.pagy .page a:hover {
|
32
|
+
background-color: rgb(209 213 219);
|
33
|
+
}
|
34
|
+
|
35
|
+
.pagy .page.active a {
|
36
|
+
cursor: default;
|
37
|
+
background-color: rgb(156 163 175);
|
38
|
+
color: rgb(255 255 255)
|
39
|
+
}
|
40
|
+
|
41
|
+
.pagy .page.disabled a {
|
42
|
+
cursor: default;
|
43
|
+
background-color: rgb(243 244 246);
|
44
|
+
color: rgb(209 213 219)
|
45
|
+
}
|
46
|
+
|
47
|
+
.pagy .pagy-combo-input, .pagy.pagy-items-selector-js {
|
48
|
+
display: inline-block;
|
49
|
+
border-radius: 0.5rem;
|
50
|
+
background-color: rgb(229 231 235);
|
51
|
+
padding: 0.125rem 0.75rem;
|
52
|
+
}
|
53
|
+
|
54
|
+
.pagy .pagy-combo-input input, .pagy.pagy-items-selector-js input {
|
55
|
+
border-radius: 0.375rem;
|
56
|
+
border-style: none;
|
57
|
+
background-color: rgb(243 244 246);
|
58
|
+
}
|
@@ -0,0 +1,47 @@
|
|
1
|
+
.pagy {
|
2
|
+
display: flex;
|
3
|
+
font-family: sans-serif;
|
4
|
+
font-size: 0.875rem;
|
5
|
+
line-height: 1.25rem;
|
6
|
+
font-weight: 600;
|
7
|
+
color: rgb(107 114 128);
|
8
|
+
& > :not([hidden]) ~ :not([hidden]) {
|
9
|
+
--space-reverse: 0;
|
10
|
+
margin-right: calc(0.25rem * var(--space-reverse));
|
11
|
+
margin-left: calc(0.25rem * calc(1 - var(--space-reverse)));
|
12
|
+
}
|
13
|
+
.page {
|
14
|
+
a {
|
15
|
+
display: block;
|
16
|
+
text-decoration: none;
|
17
|
+
border-radius: 0.5rem;
|
18
|
+
background-color: rgb(229 231 235);
|
19
|
+
padding: 0.25rem 0.75rem;
|
20
|
+
&:hover {
|
21
|
+
background-color: rgb(209 213 219);
|
22
|
+
}
|
23
|
+
}
|
24
|
+
&.active a {
|
25
|
+
cursor: default;
|
26
|
+
background-color: rgb(156 163 175);
|
27
|
+
color: rgb(255 255 255);
|
28
|
+
}
|
29
|
+
&.disabled a {
|
30
|
+
cursor: default;
|
31
|
+
background-color: rgb(243 244 246);
|
32
|
+
color: rgb(209 213 219);
|
33
|
+
}
|
34
|
+
&.gap { } /* if you need to customize it */
|
35
|
+
}
|
36
|
+
.pagy-combo-input, &.pagy-items-selector-js {
|
37
|
+
display: inline-block;
|
38
|
+
border-radius: 0.5rem;
|
39
|
+
background-color: rgb(229 231 235);
|
40
|
+
padding: 0.125rem 0.75rem;
|
41
|
+
input {
|
42
|
+
border-radius: 0.375rem;
|
43
|
+
border-style: none;
|
44
|
+
background-color: rgb(243 244 246);
|
45
|
+
}
|
46
|
+
}
|
47
|
+
}
|
@@ -0,0 +1,24 @@
|
|
1
|
+
.pagy {
|
2
|
+
@apply flex space-x-1 font-semibold text-sm text-gray-500;
|
3
|
+
.page {
|
4
|
+
a {
|
5
|
+
@apply block rounded-lg px-3 py-1 bg-gray-200;
|
6
|
+
&:hover {
|
7
|
+
@apply bg-gray-300;
|
8
|
+
}
|
9
|
+
}
|
10
|
+
&.active a {
|
11
|
+
@apply text-white bg-gray-400 cursor-default;
|
12
|
+
}
|
13
|
+
&.disabled a {
|
14
|
+
@apply text-gray-300 bg-gray-100 cursor-default;
|
15
|
+
}
|
16
|
+
&.gap { } /* if you need to customize it */
|
17
|
+
}
|
18
|
+
.pagy-combo-input, &.pagy-items-selector-js {
|
19
|
+
@apply inline-block bg-gray-200 rounded-lg px-3 py-0.5;
|
20
|
+
input {
|
21
|
+
@apply bg-gray-100 border-none rounded-md;
|
22
|
+
}
|
23
|
+
}
|
24
|
+
}
|
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: 7.0.
|
4
|
+
version: 7.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Domizio Demichelis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-02-
|
11
|
+
date: 2024-02-25 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Agnostic pagination in plain ruby. It does it all. Better.
|
14
14
|
email:
|
@@ -99,6 +99,9 @@ files:
|
|
99
99
|
- lib/pagy/frontend.rb
|
100
100
|
- lib/pagy/i18n.rb
|
101
101
|
- lib/pagy/url_helpers.rb
|
102
|
+
- lib/stylesheets/pagy.css
|
103
|
+
- lib/stylesheets/pagy.scss
|
104
|
+
- lib/stylesheets/pagy.tailwind.scss
|
102
105
|
homepage: https://github.com/ddnexus/pagy
|
103
106
|
licenses:
|
104
107
|
- MIT
|