pagy 5.6.10 → 5.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 760d2f510c1c4c30364ab9074eb54f70ed3c70008b4d133200f0aad4b4568b31
4
- data.tar.gz: 61ac693d82c769a7e1ba5ef797b360423de7e9298b7e29745bbbf31af251f15d
3
+ metadata.gz: dff2343464e636499952ed82e91f9691f8855630a77d6bcfffee985ae7ff443f
4
+ data.tar.gz: 6659996eb14375576d033ab5da3faaead938e9145b67fba2e625aa2b91a3a4a1
5
5
  SHA512:
6
- metadata.gz: 4f72984782585cb4b49cb6e0e136941069df5a49e430db2307502bcdf381980ba79347e16d23f556a7be9f8473bfa4e641352179fbc1fe9c467f47782ab9fdb4
7
- data.tar.gz: b380f3900fc1727f6cac60d54d6918bfd1962cb758f89e5c4db10bcf719cfd5a0bec6e706661aed30f4cbdfdba021028f45cf3dfef2a851d61b8bd3aa21b5ccc
6
+ metadata.gz: b404bb256a2070c382f536a007972cce2fcfad6a22010221194a043dba3fee525a86c00a85ea7b2a8f93da5882f8651752b7dd6f2a99a5a5038094445c5c7e79
7
+ data.tar.gz: 8c5263db5dd2d2cec869236fd37bcdfed67dc68c643fba2c520677829c6adc22dbd5eba88e36ba3014b2dd71466f9f102b1c5b88a3cf99a2c56add4b4f88cd17
data/lib/config/pagy.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Pagy initializer file (5.6.10)
3
+ # Pagy initializer file (5.7.0)
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.10",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");try{var h=JSON.parse(g),i=h.shift();"nav"===i?Pagy.nav.apply(Pagy,[f].concat(_toConsumableArray(h))):"combo_nav"===i?Pagy.comboNav.apply(Pagy,[f].concat(_toConsumableArray(h))):"items_selector"===i&&Pagy.itemsSelector.apply(Pagy,[f].concat(_toConsumableArray(h)))}catch(a){console.warn("Pagy.init() skipped element: %o\n%s",f,a)}}}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)};if(a.pagyRender=function(){var d=h.find(function(b){return null!==a.parentElement&&a.parentElement.clientWidth>b})||0;if(d!==g){var k=b.before,l=c[d.toString()],m=f[d.toString()];for(var p in l){var n=l[p],o=m[p];if("string"==typeof e&&1===n){var i=j(b.link,n.toString(),o);k+=Pagy.trim(i,e)}else k+="number"==typeof n?j(b.link,n.toString(),o):"gap"===n?b.gap:j(b.active,n,o)}k+=b.after,a.innerHTML="",a.insertAdjacentHTML("afterbegin",k),g=d}},a.pagyRender(),"undefined"!=typeof window){var l=0;window.addEventListener("resize",function(){clearTimeout(l),l=window.setTimeout(Pagy.renderNavs,100)},!0)}},renderNavs:function renderNavs(){var a=document.getElementsByClassName("pagy-njs");Array.from(a).forEach(function(a){return a.pagyRender()})},comboNav:function comboNav(a,b,c,d){var e=a.getElementsByTagName("input")[0];Pagy.addInputBehavior(e,function(){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()}})},itemsSelector:function itemsSelector(a,b,c,d){var e=a.getElementsByTagName("input")[0],f=e.value;Pagy.addInputBehavior(e,function(){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",a.select),a.addEventListener("focusout",b),a.addEventListener("keypress",function(a){"Enter"===a.key&&b()})},trim:function trim(a,b){return a.replace(new RegExp("[?&]".concat(b,"=1\\b(?!&)|\\b").concat(b,"=1&")),"")}};
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.0",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=_slicedToArray(b,4),d=c[0],e=c[1],f=c[2],g=c[3],h=a.parentElement||a,j=Object.getOwnPropertyNames(e).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=j.find(function(a){return a<h.clientWidth})||0;if(b!==k){var c=d.before,m=e[b.toString()],n=null===f?m.map(function(a){return a.toString()}):f[b.toString()];for(var q in m){var o=m[q],p=n[q];if("string"==typeof g&&1===o){var i=l(d.link,o.toString(),p);c+=Pagy.trim(i,g)}else c+="number"==typeof o?l(d.link,o.toString(),p):"gap"===o?d.gap:l(d.active,o,p)}c+=d.after,a.innerHTML="",a.insertAdjacentHTML("afterbegin",c),k=b}})(),a.classList.contains("pagy-rjs")&&Pagy.rjsObserver.observe(h)},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],f=a.querySelector("input"),g=f.value;Pagy.initInput(f,function(){if(Pagy.validValueFor(f,g)){var b=d.replace(/__pagy_page__/,f.value);Pagy.finalizeAction(a,b,f.value,e)}})},initItemsSelector:function initItemsSelector(a,b){var c=_slicedToArray(b,3),d=c[0],e=c[1],f=c[2],g=a.querySelector("input"),h=g.value;Pagy.initInput(g,function(){var b=Math.max,c=Math.ceil;if(Pagy.validValueFor(g,h)){var i=b(c(d/parseInt(g.value)),1).toString(),j=e.replace(/__pagy_page__/,i).replace(/__pagy_items__/,g.value);Pagy.finalizeAction(a,j,i,f)}})},initInput:function initInput(a,b){["change","focus"].forEach(function(b){return a.addEventListener(b,a.select)}),a.addEventListener("focusout",b),a.addEventListener("keypress",function(a){"Enter"===a.key&&b()})},validValueFor:function validValueFor(a,b){if(a.value===b)return!1;var c=[a.min,a.value,a.max].map(function(a){return parseInt(a)||0}),d=_slicedToArray(c,3),e=d[0],f=d[1],g=d[2];return!!(f>=e&&f<=g)||(a.value=b,a.select(),!1)},finalizeAction:function finalizeAction(a,b,c,d){"string"==typeof d&&"1"===c&&(b=Pagy.trim(b,d)),a.insertAdjacentHTML("afterbegin",b),a.querySelector("a").click()},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":["../../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 from data-pagy-json\ntype NavArgs = [NavTags, NavSequels, null|NavLabelSequels, string]\ntype ComboNavArgs = [string, string, string]\ntype ItemsSelectorArgs = [number, string, string]\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[];\n}\n\n// Add pagyRender to Element\ninterface Element {\n pagyRender():void;\n}\n\n// The Pagy object\nconst Pagy = {\n version: \"5.6.10\",\n\n // Scan for \"data-pagy-json\" elements, parse their JSON content and apply their functions\n init(arg?:HTMLElement|Document|Event) {\n const target = 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\") as string;\n try {\n const args = JSON.parse(json);\n const fname = args.shift() as \"nav\"|\"combo_nav\"|\"items_selector\";\n if (fname === \"nav\") {\n Pagy.nav(element, ...args as NavArgs);\n } else if (fname === \"combo_nav\") {\n Pagy.comboNav(element, ...args as ComboNavArgs);\n } else if (fname === \"items_selector\") {\n Pagy.itemsSelector(element, ...args as ItemsSelectorArgs);\n }\n } catch (err) {\n console.warn(\"Pagy.init() skipped element: %o\\n%s\", element, err);\n }\n }\n },\n\n // Power the *_nav_js helpers\n nav(pagyEl:Element, tags:NavTags, sequels:NavSequels, optLabelSequels:null|NavLabelSequels, trimParam?:string) {\n let labelSequels = {} as NavLabelSequels;\n // Handle null labelSequels\n if (optLabelSequels === null) {\n for (const width in sequels) {\n labelSequels[width] = sequels[width].map(item => item.toString());\n }\n } else {\n labelSequels = optLabelSequels;\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 () {\n // Find the width that fits in parent\n const width = widths.find(w => pagyEl.parentElement !== null && pagyEl.parentElement.clientWidth > w) || 0;\n // Only if the width changed\n if (width !== lastWidth) {\n let html = tags.before;\n const series = sequels[width.toString()];\n const labels = labelSequels[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 } 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;\n pagyEl.innerHTML = \"\";\n pagyEl.insertAdjacentHTML(\"afterbegin\", html);\n lastWidth = width;\n }\n };\n pagyEl.pagyRender();\n // If there is a window object then add a single throttled \"resize\" event listener\n if (typeof window !== \"undefined\") {\n let tid = 0;\n window.addEventListener(\"resize\", () => {\n clearTimeout(tid);\n tid = window.setTimeout(Pagy.renderNavs, 100);\n }, true);\n }\n },\n\n // Render all *nav_js helpers (i.e. all the elements of class \"pagy-njs\")\n renderNavs() {\n const navs = document.getElementsByClassName(\"pagy-njs\");\n Array.from(navs).forEach(nav => nav.pagyRender());\n },\n\n // Power the *_combo_nav_js helpers\n comboNav(pagyEl:Element, page:string, link:string, trimParam?:string) {\n const input = pagyEl.getElementsByTagName(\"input\")[0];\n Pagy.addInputBehavior(input, () => {\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 },\n\n // Power the pagy_items_selector_js helper\n itemsSelector(pagyEl:Element, from:number, link:string, trimParam?:string) {\n const input = pagyEl.getElementsByTagName(\"input\")[0];\n const current = input.value;\n Pagy.addInputBehavior(input, () => {\n const items = input.value;\n if (items === \"0\" || items === \"\") { return }\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 },\n\n // Add behavior to input fields\n addInputBehavior(input:HTMLInputElement, goToPage:() => void) {\n // select the content on click: easier for direct typing\n input.addEventListener(\"click\", input.select);\n // goToPage when the input loses focus\n input.addEventListener(\"focusout\", goToPage);\n // goToPage when pressing enter while the input has focus\n input.addEventListener(\"keypress\", e => { if (e.key === \"Enter\") { goToPage() } });\n },\n\n trim: (link:string, param:string):string =>\n link.replace(new RegExp(`[?&]${param}=1\\\\b(?!&)|\\\\b${param}=1&`), \"\")\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.0\",\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 = (string:string, item:string, label:string):string =>\n string.replace(/__pagy_page__/g, item).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 === null ? series.map(l => l.toString()) : labelSequels[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 } 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;\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 const input = el.querySelector(\"input\") as HTMLInputElement;\n const initial = input.value;\n Pagy.initInput(input, () => {\n if (!Pagy.validValueFor(input, initial)) { return } // abort action\n const html = link.replace(/__pagy_page__/, input.value);\n Pagy.finalizeAction(el, html, input.value, trimParam);\n });\n },\n\n // Init the pagy_items_selector_js helper\n initItemsSelector(el:Element, [from, link, trimParam]:ItemsSelectorArgs) {\n const input = el.querySelector(\"input\") as HTMLInputElement;\n const initial = input.value;\n Pagy.initInput(input, () => {\n if (!Pagy.validValueFor(input, initial)) { return } // abort action\n const page = Math.max(Math.ceil(from / parseInt(input.value)), 1).toString();\n const html = link.replace(/__pagy_page__/, page).replace(/__pagy_items__/, input.value);\n Pagy.finalizeAction(el, html, page, trimParam);\n });\n },\n\n // Init input field\n initInput(input:HTMLInputElement, action:() => void) {\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 // Check for valid value or reset it\n validValueFor(input:HTMLInputElement, initial:string):boolean {\n if (input.value === initial) { return false } // not changed\n const [min, val, max] = [input.min, input.value, input.max].map(n => parseInt(n) || 0);\n if (val >= min && val <= max) { return true } // in range\n input.value = initial; // reset invalid/out-of-range\n input.select();\n return false;\n },\n\n // Finalize the input action\n finalizeAction(el:Element, html:string, page:string, trimParam?:string) {\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\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.10'
8
+ VERSION = '5.7.0'
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.10
4
+ version: 5.7.0
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-04 00:00:00.000000000 Z
11
+ date: 2022-01-07 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Agnostic pagination in plain ruby. It does it all. Better.
14
14
  email: