pagy 5.6.8 → 5.7.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ac9dce9d5ec1d5f58d2ff3da74572fc5f8b2a1853d03a2e5da63187ceed389c5
4
- data.tar.gz: a181627b90698ae6450fba8bf4470774e76e8f0643cbd96798198db3dcb07c12
3
+ metadata.gz: 4f7ef3c45fb44b6427e511d09b5f19594fb13cfc7cc9f251e87dd48a6e9ecc85
4
+ data.tar.gz: 82d248fcb0d28951940fde7bdbe07a01aa027fd24b67b52d08ba33a1c3520dc9
5
5
  SHA512:
6
- metadata.gz: 7468f2d14bb91b4c2df9b73a05609fe25ca4a2e722be22b540cc4806951a2fa6acf18fdfa7df4e9defd0c852a7f02566088c771b548eebd50aff6dd98262926d
7
- data.tar.gz: 24e98a0fee02b4f0b3942e593385937715cfe69421a07166b861d4cc1eeaddf11eda6efe6f0257a782d0cf0c3bfe85631dffb17b96b6b241cd38c8c2749ece31
6
+ metadata.gz: 356a47a45a5390f236488e02e434e4eb0672be73a0933dd5dd2505c2641d9f340eb4cb4a8bf081add014bc96d335d5febc80537f1ac480e25fba2598ad092d6a
7
+ data.tar.gz: ad0f24ec5e7acd68d39a4984b0b4e424d1707ceab71a14f67c081afab792facd931424a2f97cfe1ae7cde4dd87a61a50cb60ecc65a374809bed7be248afda6a8
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2017-2021 Domizio Demichelis
3
+ Copyright (c) 2017-2022 Domizio Demichelis
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/lib/config/pagy.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Pagy initializer file (5.6.8)
3
+ # Pagy initializer file (5.7.1)
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
 
@@ -1,3 +1,3 @@
1
- "use strict";function _toConsumableArray(a){return _arrayWithoutHoles(a)||_iterableToArray(a)||_unsupportedIterableToArray(a)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _iterableToArray(a){if("undefined"!=typeof Symbol&&null!=a[Symbol.iterator]||null!=a["@@iterator"])return Array.from(a)}function _arrayWithoutHoles(a){if(Array.isArray(a))return _arrayLikeToArray(a)}function _createForOfIteratorHelper(a,b){var c="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function e(a){throw a},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function e(a){h=!0,f=a},f:function f(){try{g||null==c["return"]||c["return"]()}finally{if(h)throw f}}}}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}var Pagy={version:"5.6.8",init:function init(a){var b,c=a instanceof HTMLElement?a:document,d=c.querySelectorAll("[data-pagy-json]"),e=_createForOfIteratorHelper(d);try{for(e.s();!(b=e.n()).done;){var f=b.value,g=f.getAttribute("data-pagy-json");if(null!==g){var h=JSON.parse(g),i=h.shift();"nav"===i?Pagy.nav.apply(Pagy,[f].concat(_toConsumableArray(h))):"combo_nav"===i?Pagy.combo_nav.apply(Pagy,[f].concat(_toConsumableArray(h))):"items_selector"===i&&Pagy.items_selector.apply(Pagy,[f].concat(_toConsumableArray(h)))}}}catch(a){e.e(a)}finally{e.f()}},nav:function nav(a,b,c,d,e){var f={};if(null===d)for(var k in c)f[k]=c[k].map(function(a){return a.toString()});else f=d;var g,h=Object.getOwnPropertyNames(c).map(function(a){return parseInt(a)}).sort(function(c,a){return a-c}),j=function(a,b,c){return a.replace(/__pagy_page__/g,b).replace(/__pagy_label__/g,c)};a.pagyRender=function(){var a,d=0,k=_createForOfIteratorHelper(h);try{for(k.s();!(a=k.n()).done;){var q=a.value;if(null!==this.parentElement&&this.parentElement.clientWidth>q){d=q;break}}}catch(a){k.e(a)}finally{k.f()}if(d!==g){var l=b.before,m=c[d.toString()],n=f[d.toString()];for(var r in m){var o=m[r],p=n[r];if("string"==typeof e&&1===o){var i=j(b.link,o.toString(),p);l+=Pagy.trim(i,e)}else l+="number"==typeof o?j(b.link,o.toString(),p):"gap"===o?b.gap:j(b.active,o,p)}l+=b.after,this.innerHTML="",this.insertAdjacentHTML("afterbegin",l),g=d}}.bind(a),a.pagyRender(),"undefined"!=typeof window&&window.addEventListener("resize",Pagy.throttleRenderNavs,!0)},throttleRenderNavsTID:0,throttleRenderNavsDelay:100,throttleRenderNavs:function throttleRenderNavs(){clearTimeout(Pagy.throttleRenderNavsTID),Pagy.throttleRenderNavsTID=window.setTimeout(Pagy.renderNavs,Pagy.throttleRenderNavsDelay)},renderNavs:function renderNavs(){var a,b=document.getElementsByClassName("pagy-njs"),c=_createForOfIteratorHelper(b);try{for(c.s();!(a=c.n()).done;){var d=a.value;d.pagyRender()}}catch(a){c.e(a)}finally{c.f()}},combo_nav:function combo_nav(a,b,c,d){var e=a.getElementsByTagName("input")[0];Pagy.addInputBehavior(e,function goToPage(){if(b!==e.value){var f=c.replace(/__pagy_page__/,e.value);"string"==typeof d&&"1"===e.value&&(f=Pagy.trim(f,d)),a.insertAdjacentHTML("afterbegin",f),a.getElementsByTagName("a")[0].click()}})},trim:function trim(a,b){var c=new RegExp("[?&]".concat(b,"=1\\b(?!&)|\\b").concat(b,"=1&"));return a.replace(c,"")},items_selector:function items_selector(a,b,c,d){var e=a.getElementsByTagName("input")[0],f=e.value;Pagy.addInputBehavior(e,function goToPage(){var g=Math.max,h=Math.ceil,i=e.value;if("0"!==i&&""!==i&&f!==i){var j=g(h(b/parseInt(i)),1).toString(),k=c.replace(/__pagy_page__/,j).replace(/__pagy_items__/,i);"string"==typeof d&&"1"===j&&(k=Pagy.trim(k,d)),a.insertAdjacentHTML("afterbegin",k),a.getElementsByTagName("a")[0].click()}})},addInputBehavior:function addInputBehavior(a,b){a.addEventListener("click",function(){this.select()}),a.addEventListener("focusout",function(){b()}),a.addEventListener("keypress",function(a){"Enter"===a.key&&b()}.bind(this))}};
1
+ "use strict";function _slicedToArray(a,b){return _arrayWithHoles(a)||_iterableToArrayLimit(a,b)||_unsupportedIterableToArray(a,b)||_nonIterableRest()}function _iterableToArrayLimit(a,b){var c=null==a?null:"undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(null!=c){var d,e,f=[],g=!0,h=!1;try{for(c=c.call(a);!(g=(d=c.next()).done)&&(f.push(d.value),!(b&&f.length===b));g=!0);}catch(a){h=!0,e=a}finally{try{g||null==c["return"]||c["return"]()}finally{if(h)throw e}}return f}}function _toArray(a){return _arrayWithHoles(a)||_iterableToArray(a)||_unsupportedIterableToArray(a)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _iterableToArray(a){if("undefined"!=typeof Symbol&&null!=a[Symbol.iterator]||null!=a["@@iterator"])return Array.from(a)}function _arrayWithHoles(a){if(Array.isArray(a))return a}function _createForOfIteratorHelper(a,b){var c="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function e(a){throw a},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function e(a){h=!0,f=a},f:function f(){try{g||null==c["return"]||c["return"]()}finally{if(h)throw f}}}}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}var Pagy={version:"5.7.1",init:function init(a){var b,c=a instanceof Element?a:document,d=c.querySelectorAll("[data-pagy-json]"),e=function(a,b){return console.warn("Pagy.init() skipped element: %o\n%s",a,b)},f=_createForOfIteratorHelper(d);try{for(f.s();!(b=f.n()).done;){var g=b.value,h=g.getAttribute("data-pagy-json");try{var i=JSON.parse(h),j=_toArray(i),k=j[0],l=j.slice(1);"nav"===k?Pagy.initNav(g,l):"combo_nav"===k?Pagy.initComboNav(g,l):"items_selector"===k?Pagy.initItemsSelector(g,l):e(g,"Illegal PagyJSON keyword: expected \"nav\"|\"combo_nav\"|\"items_selector\" got \"".concat(k,"\""))}catch(a){e(g,a)}}}catch(a){f.e(a)}finally{f.f()}},initNav:function initNav(a,b){var c,d=_slicedToArray(b,4),e=d[0],f=d[1],g=d[2],h=d[3],container=null!==(c=a.parentElement)&&void 0!==c?c:a,j=Object.getOwnPropertyNames(f).map(function(a){return parseInt(a)}).sort(function(c,a){return a-c}),k=-1,l=function(a,b,c){return a.replace(/__pagy_page__/g,b).replace(/__pagy_label__/g,c)};(a.pagyRender=function(){var b,c=j.find(function(a){return a<container.clientWidth})||0;if(c!==k){var d=e.before,m=f[c.toString()],n=null!==(b=null===g||void 0===g?void 0:g[c.toString()])&&void 0!==b?b:m.map(function(a){return a.toString()});for(var q in m){var o=m[q],p=n[q];d+="string"==typeof h&&1===o?Pagy.trim(l(e.link,o.toString(),p),h):"number"==typeof o?l(e.link,o.toString(),p):"gap"===o?e.gap:l(e.active,o,p)}d+=e.after,a.innerHTML="",a.insertAdjacentHTML("afterbegin",d),k=c}})(),a.classList.contains("pagy-rjs")&&Pagy.rjsObserver.observe(container)},rjsObserver:new ResizeObserver(function(a){a.filter(function(a){return a.contentBoxSize}).forEach(function(a){return a.target.querySelectorAll(".pagy-rjs").forEach(function(a){return a.pagyRender()})})}),initComboNav:function initComboNav(a,b){var c=_slicedToArray(b,2),d=c[0],e=c[1];Pagy.initInput(a,function(a){return[a,d.replace(/__pagy_page__/,a)]},e)},initItemsSelector:function initItemsSelector(a,b){var c=_slicedToArray(b,3),d=c[0],e=c[1],f=c[2];Pagy.initInput(a,function(a){var b=Math.max(Math.ceil(d/parseInt(a)),1).toString(),c=e.replace(/__pagy_page__/,b).replace(/__pagy_items__/,a);return[b,c]},f)},initInput:function initInput(a,b,c){var d=a.querySelector("input"),e=d.value,f=function(){if(d.value!==e){var f=[d.min,d.value,d.max].map(function(a){return parseInt(a)||0}),g=_slicedToArray(f,3),h=g[0],i=g[1],j=g[2];if(i<h||i>j)return d.value=e,void d.select();var k=b(d.value),l=_slicedToArray(k,2),m=l[0],n=l[1];"string"==typeof c&&"1"===m&&(n=Pagy.trim(n,c)),a.insertAdjacentHTML("afterbegin",n),a.querySelector("a").click()}};["change","focus"].forEach(function(a){return d.addEventListener(a,d.select)}),d.addEventListener("focusout",f),d.addEventListener("keypress",function(a){"Enter"===a.key&&f()})},trim:function trim(a,b){return a.replace(new RegExp("[?&]".concat(b,"=1\\b(?!&)|\\b").concat(b,"=1&")),"")}};
2
2
 
3
3
  //# sourceMappingURL=pagy.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../ts/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 ts`.\n\n// Add pagyRender to Element\ninterface Element {\n pagyRender():void;\n}\n\n// Add pagyRender to HTMLElement\ninterface HTMLElement {\n pagyRender():void;\n}\n\n// Tags from the data-pagy-json of *nav_js helpers\ninterface NavTags {\n readonly before:string;\n readonly link:string;\n readonly active:string;\n readonly gap:string;\n readonly after:string;\n}\n\n// Tags from the data-pagy-json of *nav_js helpers\ninterface NavSequels {\n readonly [width:string]:(string|number|\"gap\")[];\n}\n\n// Tags from the data-pagy-json of *nav_js helpers\ninterface NavLabelSequels {\n [width:string]:(string|\"gap\")[];\n}\n\n// The Pagy object\nconst Pagy = {\n version: \"5.6.8\",\n\n // Scan for \"data-pagy-json\" elements, parse their JSON content and apply their functions\n init(arg?:any) {\n const target:Document|HTMLElement = arg instanceof HTMLElement ? arg : document;\n const elements = target.querySelectorAll(\"[data-pagy-json]\");\n for (const element of elements) {\n const json = element.getAttribute(\"data-pagy-json\");\n if (json === null) {\n continue;\n }\n let args = JSON.parse(json);\n const fname:\"nav\"|\"combo_nav\"|\"items_selector\" = args.shift();\n if (fname === \"nav\") {\n Pagy.nav(element, ...<[NavTags, NavSequels, null|NavLabelSequels, string]>args);\n }\n else if (fname === \"combo_nav\") {\n Pagy.combo_nav(element, ...<[string, string, string]>args);\n }\n else if (fname === \"items_selector\") {\n Pagy.items_selector(element, ...<[number, string, string]>args);\n }\n }\n },\n\n // Power the *_nav_js helpers\n nav(pagyEl:Element, tags:NavTags, sequels:NavSequels, opt_label_sequels:null|NavLabelSequels, trimParam?:string) {\n let label_sequels:NavLabelSequels = {};\n // Handle null label_sequels\n if (opt_label_sequels === null) {\n for (const width in sequels) {\n label_sequels[width] = sequels[width].map((item) => item.toString());\n }\n }\n else {\n label_sequels = opt_label_sequels;\n }\n // Set and sort the widths as number[]\n const widths = Object.getOwnPropertyNames(sequels)\n .map((w) => parseInt(w))\n .sort((a, b) => b - a);\n let lastWidth:number;\n const fillIn = (string:string, item:string, label:string):string =>\n string.replace(/__pagy_page__/g, item)\n .replace(/__pagy_label__/g, label);\n\n pagyEl.pagyRender = function (this:Element) {\n let width:number = 0;\n for (const w of widths) {\n if (this.parentElement !== null && this.parentElement.clientWidth > w) {\n width = w;\n break;\n }\n }\n // Only if the width changed\n if (width !== lastWidth) {\n let html = tags.before;\n const series = sequels[width.toString()];\n const labels = label_sequels[width.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 const link = fillIn(tags.link, item.toString(), label);\n html += Pagy.trim(link, trimParam);\n }\n else if (typeof item === \"number\") {\n html += fillIn(tags.link, item.toString(), label);\n }\n else if (item === \"gap\") {\n html += tags.gap;\n }\n else { // active page\n html += fillIn(tags.active, item, label);\n }\n }\n html += tags.after;\n this.innerHTML = \"\";\n this.insertAdjacentHTML(\"afterbegin\", html);\n lastWidth = width;\n }\n }.bind(pagyEl);\n pagyEl.pagyRender();\n // If there is a window object then add a single \"resize\" event listener\n if (typeof window !== \"undefined\") {\n window.addEventListener(\"resize\", Pagy.throttleRenderNavs, true);\n }\n },\n\n // throttleRenderNavs properties\n throttleRenderNavsTID: 0, // private\n throttleRenderNavsDelay: 100, // set a default delay\n\n // Avoid to fire the pagyRender multiple times\n throttleRenderNavs() {\n clearTimeout(Pagy.throttleRenderNavsTID);\n Pagy.throttleRenderNavsTID = window.setTimeout(Pagy.renderNavs, Pagy.throttleRenderNavsDelay);\n },\n\n // Render all *nav_js helpers (i.e. all the elements of class \"pagy-njs\")\n renderNavs() {\n const navs:HTMLCollectionOf<Element> = document.getElementsByClassName(\"pagy-njs\");\n for (const nav of navs) {\n nav.pagyRender();\n }\n },\n\n // Power the *_combo_nav_js helpers\n combo_nav(pagyEl:Element, page:string, link:string, trimParam?:string) {\n const input:HTMLInputElement = pagyEl.getElementsByTagName(\"input\")[0];\n const goToPage = function () {\n if (page !== input.value) {\n let html = link.replace(/__pagy_page__/, input.value);\n if (typeof trimParam === \"string\" && input.value === \"1\") {\n html = Pagy.trim(html, trimParam);\n }\n pagyEl.insertAdjacentHTML(\"afterbegin\", html);\n pagyEl.getElementsByTagName(\"a\")[0].click();\n }\n };\n Pagy.addInputBehavior(input, goToPage);\n },\n\n // Power the trim extra for js helpers\n trim(link:string, param:string):string {\n const re = new RegExp(`[?&]${param}=1\\\\b(?!&)|\\\\b${param}=1&`);\n return link.replace(re, \"\");\n },\n\n // Power the pagy_items_selector_js helper\n items_selector(pagyEl:Element, from:number, link:string, trimParam?:string) {\n const input:HTMLInputElement = pagyEl.getElementsByTagName(\"input\")[0];\n const current = input.value;\n const goToPage = function () {\n const items = input.value;\n if (items === \"0\" || items === \"\") {\n return;\n }\n if (current !== items) {\n const page = Math.max(Math.ceil(from / parseInt(items)), 1).toString();\n let html = link.replace(/__pagy_page__/, page)\n .replace(/__pagy_items__/, items);\n if (typeof trimParam === \"string\" && page === \"1\") {\n html = Pagy.trim(html, trimParam);\n }\n pagyEl.insertAdjacentHTML(\"afterbegin\", html);\n pagyEl.getElementsByTagName(\"a\")[0].click();\n }\n };\n Pagy.addInputBehavior(input, goToPage);\n },\n\n // Add behavior to input fields\n addInputBehavior(input:HTMLInputElement, goToPage:Function) {\n // select the content on click: easier for direct typing\n input.addEventListener(\"click\", function (_e) {\n this.select();\n });\n // goToPage when the input loses focus\n input.addEventListener(\"focusout\", function (_e) {\n goToPage();\n });\n // goToPage when pressing enter while the input has focus\n input.addEventListener(\"keypress\", function (e:KeyboardEvent) {\n if (e.key === \"Enter\") {\n goToPage();\n }\n }.bind(this));\n }\n};\n"]}
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"]}
@@ -31,6 +31,7 @@ class Pagy # :nodoc:
31
31
 
32
32
  # Javascript pagination for bootstrap: it returns a nav and a JSON tag used by the Pagy.nav javascript
33
33
  def pagy_bootstrap_nav_js(pagy, pagy_id: nil, link_extra: '', **vars)
34
+ sequels = pagy.sequels(**vars)
34
35
  p_id = %( id="#{pagy_id}") if pagy_id
35
36
  link = pagy_link_proc(pagy, link_extra: %(class="page-link" #{link_extra}))
36
37
  tags = { 'before' => %(<ul class="pagination">#{pagy_bootstrap_prev_html pagy, link}),
@@ -39,8 +40,8 @@ class Pagy # :nodoc:
39
40
  'gap' => %(<li class="page-item gap disabled"><a href="#" class="page-link">#{pagy_t 'pagy.nav.gap'}</a></li>),
40
41
  'after' => %(#{pagy_bootstrap_next_html pagy, link}</ul>) }
41
42
 
42
- %(<nav#{p_id} class="pagy-njs pagy-bootstrap-nav-js" aria-label="pager" #{
43
- pagy_json_attr(pagy, :nav, tags, (sequels = pagy.sequels(**vars)), pagy.label_sequels(sequels))}></nav>)
43
+ %(<nav#{p_id} class="#{'pagy-rjs ' if sequels.size > 1}pagy-bootstrap-nav-js" aria-label="pager" #{
44
+ pagy_json_attr(pagy, :nav, tags, sequels, pagy.label_sequels(sequels))}></nav>)
44
45
  end
45
46
 
46
47
  # Javascript combo pagination for bootstrap: it returns a nav and a JSON tag used by the Pagy.combo_nav javascript
@@ -54,7 +55,7 @@ class Pagy # :nodoc:
54
55
  p_pages.to_s.length + 1}rem;">)
55
56
 
56
57
  %(<nav#{p_id} class="pagy-bootstrap-combo-nav-js pagination" aria-label="pager"><div class="btn-group" role="group" #{
57
- pagy_json_attr pagy, :combo_nav, p_page, pagy_marked_link(link)}>#{
58
+ pagy_json_attr pagy, :combo_nav, pagy_marked_link(link)}>#{
58
59
  if (p_prev = pagy.prev)
59
60
  link.call p_prev, pagy_t('pagy.nav.prev'), 'aria-label="previous" class="prev btn btn-primary"'
60
61
  else
@@ -31,6 +31,7 @@ class Pagy # :nodoc:
31
31
  end
32
32
 
33
33
  def pagy_bulma_nav_js(pagy, pagy_id: nil, link_extra: '', **vars)
34
+ sequels = pagy.sequels(**vars)
34
35
  p_id = %( id="#{pagy_id}") if pagy_id
35
36
  link = pagy_link_proc(pagy, link_extra: link_extra)
36
37
  tags = { 'before' => %(#{pagy_bulma_prev_next_html(pagy, link)}<ul class="pagination-list">),
@@ -42,8 +43,8 @@ class Pagy # :nodoc:
42
43
  'gap' => %(<li><span class="pagination-ellipsis">#{pagy_t 'pagy.nav.gap'}</span></li>),
43
44
  'after' => '</ul>' }
44
45
 
45
- %(<nav#{p_id} class="pagy-njs pagy-bulma-nav-js pagination is-centered" aria-label="pagination" #{
46
- pagy_json_attr(pagy, :nav, tags, (sequels = pagy.sequels(**vars)), pagy.label_sequels(sequels))}></nav>)
46
+ %(<nav#{p_id} class="#{'pagy-rjs ' if sequels.size > 1}pagy-bulma-nav-js pagination is-centered" aria-label="pagination" #{
47
+ pagy_json_attr(pagy, :nav, tags, sequels, pagy.label_sequels(sequels))}></nav>)
47
48
  end
48
49
 
49
50
  # Javascript combo pagination for Bulma: it returns a nav and a JSON tag used by the Pagy.combo_nav javascript
@@ -57,7 +58,7 @@ class Pagy # :nodoc:
57
58
 
58
59
  html = %(<nav#{p_id} class="pagy-bulma-combo-nav-js" aria-label="pagination">)
59
60
  %(#{html}<div class="field is-grouped is-grouped-centered" role="group" #{
60
- pagy_json_attr pagy, :combo_nav, p_page, pagy_marked_link(link)}>#{
61
+ pagy_json_attr pagy, :combo_nav, pagy_marked_link(link)}>#{
61
62
  if (p_prev = pagy.prev)
62
63
  %(<p class="control">#{link.call p_prev, pagy_t('pagy.nav.prev'), 'class="button" aria-label="previous page"'}</p>)
63
64
  else
@@ -28,6 +28,7 @@ class Pagy # :nodoc:
28
28
 
29
29
  # Javascript pagination for foundation: it returns a nav and a JSON tag used by the Pagy.nav javascript
30
30
  def pagy_foundation_nav_js(pagy, pagy_id: nil, link_extra: '', **vars)
31
+ sequels = pagy.sequels(**vars)
31
32
  p_id = %( id="#{pagy_id}") if pagy_id
32
33
  link = pagy_link_proc(pagy, link_extra: link_extra)
33
34
  tags = { 'before' => %(<ul class="pagination">#{pagy_foundation_prev_html pagy, link}),
@@ -36,8 +37,8 @@ class Pagy # :nodoc:
36
37
  'gap' => %(<li class="ellipsis gap" aria-hidden="true"></li>),
37
38
  'after' => %(#{pagy_foundation_next_html pagy, link}</ul>) }
38
39
 
39
- %(<nav#{p_id} class="pagy-njs pagy-foundation-nav-js" aria-label="Pagination" #{
40
- pagy_json_attr(pagy, :nav, tags, (sequels = pagy.sequels(**vars)), pagy.label_sequels(sequels))}></nav>)
40
+ %(<nav#{p_id} class="#{'pagy-rjs ' if sequels.size > 1}pagy-foundation-nav-js" aria-label="Pagination" #{
41
+ pagy_json_attr(pagy, :nav, tags, sequels, pagy.label_sequels(sequels))}></nav>)
41
42
  end
42
43
 
43
44
  # Javascript combo pagination for Foundation: it returns a nav and a JSON tag used by the Pagy.combo_nav javascript
@@ -51,7 +52,7 @@ class Pagy # :nodoc:
51
52
  p_pages.to_s.length + 1}rem; padding: 0 0.3rem; margin: 0 0.3rem;">)
52
53
 
53
54
  %(<nav#{p_id} class="pagy-foundation-combo-nav-js" aria-label="Pagination"><div class="input-group" #{
54
- pagy_json_attr pagy, :combo_nav, p_page, pagy_marked_link(link)}>#{
55
+ pagy_json_attr pagy, :combo_nav, pagy_marked_link(link)}>#{
55
56
  if (p_prev = pagy.prev)
56
57
  link.call p_prev, pagy_t('pagy.nav.prev'),
57
58
  'style="margin-bottom: 0" aria-label="previous" class="prev button primary"'
@@ -28,6 +28,7 @@ class Pagy # :nodoc:
28
28
 
29
29
  # Javascript pagination for materialize: it returns a nav and a JSON tag used by the Pagy.nav javascript
30
30
  def pagy_materialize_nav_js(pagy, pagy_id: nil, link_extra: '', **vars)
31
+ sequels = pagy.sequels(**vars)
31
32
  p_id = %( id="#{pagy_id}") if pagy_id
32
33
  link = pagy_link_proc(pagy, link_extra: link_extra)
33
34
 
@@ -37,8 +38,8 @@ class Pagy # :nodoc:
37
38
  'gap' => %(<li class="gap disabled"><a href="#">#{pagy_t 'pagy.nav.gap'}</a></li>),
38
39
  'after' => %(#{pagy_materialize_next_html pagy, link}</ul>) }
39
40
 
40
- %(<div#{p_id} class="pagy-njs pagy-materialize-nav-js" role="navigation" aria-label="pager" #{
41
- pagy_json_attr(pagy, :nav, tags, (sequels = pagy.sequels(**vars)), pagy.label_sequels(sequels))}></div>)
41
+ %(<div#{p_id} class="#{'pagy-rjs ' if sequels.size > 1}pagy-materialize-nav-js" role="navigation" aria-label="pager" #{
42
+ pagy_json_attr(pagy, :nav, tags, sequels, pagy.label_sequels(sequels))}></div>)
42
43
  end
43
44
 
44
45
  # Javascript combo pagination for materialize: it returns a nav and a JSON tag used by the Pagy.combo_nav javascript
@@ -53,7 +54,7 @@ class Pagy # :nodoc:
53
54
 
54
55
  html = %(<ul#{p_id} class="pagy-materialize-combo-nav-js pagination chip" role="navigation")
55
56
  %(#{html} aria-label="pager" style="padding-right: 0" #{
56
- pagy_json_attr pagy, :combo_nav, p_page, pagy_marked_link(link)}>#{
57
+ pagy_json_attr pagy, :combo_nav, pagy_marked_link(link)}>#{
57
58
  pagy_materialize_prev_html pagy, link, style}<li class="pagy-combo-input">#{
58
59
  pagy_t 'pagy.combo_nav_js', page_input: input, count: p_page, pages: p_pages}</li>#{
59
60
  pagy_materialize_next_html pagy, link, style}</ul>)
@@ -9,6 +9,7 @@ class Pagy # :nodoc:
9
9
  module NavsExtra
10
10
  # Javascript pagination: it returns a nav and a JSON tag used by the Pagy.nav javascript
11
11
  def pagy_nav_js(pagy, pagy_id: nil, link_extra: '', **vars)
12
+ sequels = pagy.sequels(**vars)
12
13
  p_id = %( id="#{pagy_id}") if pagy_id
13
14
  link = pagy_link_proc(pagy, link_extra: link_extra)
14
15
  tags = { 'before' => pagy_nav_prev_html(pagy, link),
@@ -17,8 +18,8 @@ class Pagy # :nodoc:
17
18
  'gap' => %(<span class="page gap">#{pagy_t 'pagy.nav.gap'}</span> ),
18
19
  'after' => pagy_nav_next_html(pagy, link) }
19
20
 
20
- %(<nav#{p_id} class="pagy-njs pagy-nav-js pagination" aria-label="pager" #{
21
- pagy_json_attr(pagy, :nav, tags, (sequels = pagy.sequels(**vars)), pagy.label_sequels(sequels))}></nav>)
21
+ %(<nav#{p_id} class="#{'pagy-rjs ' if sequels.size > 1}pagy-nav-js pagination" aria-label="pager" #{
22
+ pagy_json_attr(pagy, :nav, tags, sequels, pagy.label_sequels(sequels))}></nav>)
22
23
  end
23
24
 
24
25
  # Javascript combo pagination: it returns a nav and a JSON tag used by the Pagy.combo_nav javascript
@@ -31,7 +32,7 @@ class Pagy # :nodoc:
31
32
  p_page}" style="padding: 0; text-align: center; width: #{p_pages.to_s.length + 1}rem;">)
32
33
 
33
34
  %(<nav#{p_id} class="pagy-combo-nav-js pagination" aria-label="pager" #{
34
- pagy_json_attr pagy, :combo_nav, p_page, pagy_marked_link(link)}>#{
35
+ pagy_json_attr pagy, :combo_nav, pagy_marked_link(link)}>#{
35
36
  pagy_nav_prev_html pagy, link
36
37
  }<span class="pagy-combo-input" style="margin: 0 0.6rem;">#{
37
38
  pagy_t 'pagy.combo_nav_js', page_input: input, count: p_page, pages: p_pages
@@ -28,6 +28,7 @@ class Pagy # :nodoc:
28
28
 
29
29
  # Javascript pagination for semantic: it returns a nav and a JSON tag used by the Pagy.nav javascript
30
30
  def pagy_semantic_nav_js(pagy, pagy_id: nil, link_extra: '', **vars)
31
+ sequels = pagy.sequels(**vars)
31
32
  p_id = %( id="#{pagy_id}") if pagy_id
32
33
  link = pagy_link_proc(pagy, link_extra: %(class="item" #{link_extra}))
33
34
  tags = { 'before' => pagy_semantic_prev_html(pagy, link),
@@ -36,8 +37,8 @@ class Pagy # :nodoc:
36
37
  'gap' => %(<div class="disabled item">#{pagy_t('pagy.nav.gap')}</div>),
37
38
  'after' => pagy_semantic_next_html(pagy, link) }
38
39
 
39
- %(<div#{p_id} class="pagy-njs pagy-semantic-nav-js ui pagination menu" role="navigation" #{
40
- pagy_json_attr(pagy, :nav, tags, (sequels = pagy.sequels(**vars)), pagy.label_sequels(sequels))}></div>)
40
+ %(<div#{p_id} class="#{'pagy-rjs ' if sequels.size > 1}pagy-semantic-nav-js ui pagination menu" role="navigation" #{
41
+ pagy_json_attr(pagy, :nav, tags, sequels, pagy.label_sequels(sequels))}></div>)
41
42
  end
42
43
 
43
44
  # Combo pagination for semantic: it returns a nav and a JSON tag used by the Pagy.combo_nav javascript
@@ -50,7 +51,7 @@ class Pagy # :nodoc:
50
51
  p_page}" style="padding: 0; text-align: center; width: #{p_pages.to_s.length + 1}rem; margin: 0 0.3rem">)
51
52
 
52
53
  %(<div#{p_id} class="pagy-semantic-combo-nav-js ui compact menu" role="navigation" #{
53
- pagy_json_attr pagy, :combo_nav, p_page, pagy_marked_link(link)}>#{
54
+ pagy_json_attr pagy, :combo_nav, pagy_marked_link(link)}>#{
54
55
  pagy_semantic_prev_html pagy, link
55
56
  }<div class="pagy-combo-input item">#{
56
57
  pagy_t 'pagy.combo_nav_js', page_input: input, count: p_page, pages: p_pages
@@ -27,6 +27,7 @@ class Pagy # :nodoc:
27
27
 
28
28
  # Javascript pagination for uikit: it returns a nav and a JSON tag used by the Pagy.nav javascript
29
29
  def pagy_uikit_nav_js(pagy, pagy_id: nil, link_extra: '', **vars)
30
+ sequels = pagy.sequels(**vars)
30
31
  p_id = %( id="#{pagy_id}") if pagy_id
31
32
  link = pagy_link_proc(pagy, link_extra: link_extra)
32
33
  tags = { 'before' => pagy_uikit_prev_html(pagy, link),
@@ -35,8 +36,8 @@ class Pagy # :nodoc:
35
36
  'gap' => %(<li class="uk-disabled"><span>#{pagy_t 'pagy.nav.gap'}</span></li>),
36
37
  'after' => pagy_uikit_next_html(pagy, link) }
37
38
 
38
- %(<ul#{p_id} class="pagy-njs pagy-uikit-nav-js uk-pagination uk-flex-center" #{
39
- pagy_json_attr(pagy, :nav, tags, (sequels = pagy.sequels(**vars)), pagy.label_sequels(sequels))}></ul>)
39
+ %(<ul#{p_id} class="#{'pagy-rjs ' if sequels.size > 1}pagy-uikit-nav-js uk-pagination uk-flex-center" #{
40
+ pagy_json_attr(pagy, :nav, tags, sequels, pagy.label_sequels(sequels))}></ul>)
40
41
  end
41
42
 
42
43
  # Javascript combo pagination for uikit: it returns a nav and a JSON tag used by the Pagy.combo_nav javascript
@@ -49,7 +50,7 @@ class Pagy # :nodoc:
49
50
  p_page}" style="text-align: center; width: #{p_pages.to_s.length + 1}rem;">)
50
51
 
51
52
  %(<ul#{p_id} class="pagy-uikit-combo-nav-js uk-button-group uk-pagination uk-flex-center" #{
52
- pagy_json_attr pagy, :combo_nav, p_page, pagy_marked_link(link)
53
+ pagy_json_attr pagy, :combo_nav, pagy_marked_link(link)
53
54
  }>#{
54
55
  pagy_uikit_prev_html pagy, link
55
56
  }<li>#{
data/lib/pagy.rb CHANGED
@@ -5,7 +5,7 @@ require 'pathname'
5
5
 
6
6
  # Core class
7
7
  class Pagy
8
- VERSION = '5.6.8'
8
+ VERSION = '5.7.1'
9
9
 
10
10
  # Root pathname to get the path of Pagy files like templates or dictionaries
11
11
  def self.root
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.6.8
4
+ version: 5.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Domizio Demichelis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-12-31 00:00:00.000000000 Z
11
+ date: 2022-01-08 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Agnostic pagination in plain ruby. It does it all. Better.
14
14
  email: