pagy 4.5.1 → 4.8.1

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.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +1 -1
  3. data/lib/config/pagy.rb +1 -1
  4. data/lib/javascripts/pagy.js +5 -5
  5. data/lib/locales/bg.yml +2 -2
  6. data/lib/locales/bs.yml +2 -2
  7. data/lib/locales/ca.yml +2 -2
  8. data/lib/locales/cs.yml +2 -2
  9. data/lib/locales/da.yml +2 -2
  10. data/lib/locales/de.yml +2 -2
  11. data/lib/locales/en.yml +2 -2
  12. data/lib/locales/es.yml +2 -2
  13. data/lib/locales/fr.yml +2 -2
  14. data/lib/locales/hr.yml +2 -2
  15. data/lib/locales/id.yml +2 -2
  16. data/lib/locales/it.yml +2 -2
  17. data/lib/locales/ja.yml +2 -2
  18. data/lib/locales/km.yml +2 -2
  19. data/lib/locales/ko.yml +2 -2
  20. data/lib/locales/nb.yml +2 -2
  21. data/lib/locales/nl.yml +2 -2
  22. data/lib/locales/pl.yml +2 -2
  23. data/lib/locales/pt-BR.yml +2 -2
  24. data/lib/locales/pt.yml +2 -2
  25. data/lib/locales/ru.yml +2 -2
  26. data/lib/locales/sr.yml +2 -2
  27. data/lib/locales/sv-SE.yml +2 -2
  28. data/lib/locales/sv.yml +2 -2
  29. data/lib/locales/sw.yml +2 -2
  30. data/lib/locales/tr.yml +2 -2
  31. data/lib/locales/uk.yml +24 -0
  32. data/lib/locales/utils/p11n.rb +1 -0
  33. data/lib/locales/zh-CN.yml +2 -2
  34. data/lib/locales/zh-HK.yml +2 -2
  35. data/lib/locales/zh-TW.yml +3 -3
  36. data/lib/pagy.rb +2 -2
  37. data/lib/pagy/deprecation.rb +5 -5
  38. data/lib/pagy/exceptions.rb +3 -1
  39. data/lib/pagy/extras/bootstrap.rb +6 -7
  40. data/lib/pagy/extras/bulma.rb +7 -8
  41. data/lib/pagy/extras/foundation.rb +10 -11
  42. data/lib/pagy/extras/headers.rb +2 -2
  43. data/lib/pagy/extras/i18n.rb +3 -1
  44. data/lib/pagy/extras/items.rb +2 -2
  45. data/lib/pagy/extras/materialize.rb +9 -10
  46. data/lib/pagy/extras/navs.rb +5 -6
  47. data/lib/pagy/extras/overflow.rb +3 -1
  48. data/lib/pagy/extras/semantic.rb +7 -8
  49. data/lib/pagy/extras/shared.rb +4 -4
  50. data/lib/pagy/extras/standalone.rb +5 -1
  51. data/lib/pagy/extras/trim.rb +1 -1
  52. data/lib/pagy/extras/uikit.rb +11 -22
  53. data/lib/pagy/frontend.rb +4 -2
  54. metadata +4 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 19e29bbf55102d30e9da7d4e6e3e72b838bd4973451ce861e4724fc1824a6cc8
4
- data.tar.gz: 483657a52db974186448c72c3dc071dc754855e9d8bf6963886c6c0600cf8516
3
+ metadata.gz: c87ea4c3c1bf0dbfb6ae76db111177cda391165a844ff3302f8ee2722249ef2f
4
+ data.tar.gz: 26618714b6555f46cb9c140166b3407efb350bf8263cfcb8bdd4bde293265ca9
5
5
  SHA512:
6
- metadata.gz: 41e8776832f9fa255056815fcbae25d066716fd6910cba99eb0a1351807d5e601a1229c1815065a555971f2aa76fca4c9cdee33188ca30e627fb2c7b3afcba64
7
- data.tar.gz: 23a50e3d270c22a4b12fd12ec0a7543db527a939ddf27da19cf2acab8edfe1f9da1f307ba4adab50775c8d8846728d9a2fad39565257df786ea819980fa67885
6
+ metadata.gz: 5e0026cc9cb9051f43c3b89a3d68bde3fbb738ea21055117da0427e0dba9eae6c1d501dcd76d5dadd68890609fde321d33372fe8c949cf8c03c3388e4aa61317
7
+ data.tar.gz: 643f315b5de922a30f47f70465e7e13d7a5837835b6da90cf52cdf491eaec75f66450678094a3cbef0f38d65afd280ddafec0e0dc16dc52a479e324b896655dd
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2017-2020 Domizio Demichelis
3
+ Copyright (c) 2017-2021 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 (4.5.1)
3
+ # Pagy initializer file (4.8.1)
4
4
  # Customize only what you really need and notice that 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
 
@@ -2,18 +2,18 @@
2
2
 
3
3
  function Pagy(){}
4
4
 
5
- Pagy.version = '4.5.1'
5
+ Pagy.version = '4.8.1'
6
6
 
7
7
  Pagy.delay = 100
8
8
 
9
9
  Pagy.init =
10
10
  function(arg) {
11
11
  var target = arg instanceof Event || arg === undefined ? document : arg,
12
- jsonTags = target.getElementsByClassName('pagy-json')
13
- for (var i = 0, len = jsonTags.length; i < len; i++) {
14
- var args = JSON.parse(jsonTags[i].innerHTML),
12
+ elements = target.querySelectorAll('[data-pagy-json]')
13
+ for (var i = 0, len = elements.length; i < len; i++) {
14
+ var args = JSON.parse(elements[i].getAttribute('data-pagy-json')),
15
15
  fname = args.shift()
16
- args.unshift(jsonTags[i].previousSibling)
16
+ args.unshift(elements[i])
17
17
  Pagy[fname].apply(null, args)
18
18
  }
19
19
  }
data/lib/locales/bg.yml CHANGED
@@ -17,6 +17,6 @@ bg:
17
17
  single_page: "Показани са <b>%{count}</b> %{item_name}"
18
18
  multiple_pages: "Показани са %{item_name} <b>%{from}-%{to}</b> от <b>%{count}</b> общо"
19
19
 
20
- combo_nav_js: "Страница %{page_input} от %{pages}"
20
+ combo_nav_js: "<label>Страница %{page_input} от %{pages}</label>"
21
21
 
22
- items_selector_js: "Покажи %{items_input} %{item_name} на страница"
22
+ items_selector_js: "<label>Покажи %{items_input} %{item_name} на страница</label>"
data/lib/locales/bs.yml CHANGED
@@ -19,6 +19,6 @@ bs:
19
19
  single_page: "Prikazuje se <b>%{count}</b> %{item_name}"
20
20
  multiple_pages: "Prikaz %{item_name} <b>%{from}-%{to}</b> od <b>%{count}</b> ukupno"
21
21
 
22
- combo_nav_js: "Stranica %{page_input} od %{pages}"
22
+ combo_nav_js: "<label>Stranica %{page_input} od %{pages}</label>"
23
23
 
24
- items_selector_js: "Prikaži %{items_input} %{item_name} po stranici"
24
+ items_selector_js: "<label>Prikaži %{items_input} %{item_name} po stranici</label>"
data/lib/locales/ca.yml CHANGED
@@ -17,6 +17,6 @@ ca:
17
17
  single_page: "Mostrant <b>%{count}</b> %{item_name}"
18
18
  multiple_pages: "Mostrant %{item_name} <b>%{from}-%{to}</b> de <b>%{count}</b> en total"
19
19
 
20
- combo_nav_js: "Pàgina %{page_input} de %{pages}"
20
+ combo_nav_js: "<label>Pàgina %{page_input} de %{pages}</label>"
21
21
 
22
- items_selector_js: "Mostra %{items_input} %{item_name} per pàgina"
22
+ items_selector_js: "<label>Mostra %{items_input} %{item_name} per pàgina</label>"
data/lib/locales/cs.yml CHANGED
@@ -17,6 +17,6 @@ cs:
17
17
  single_page: "Zobrazeno <b>%{count}</b> %{item_name}"
18
18
  multiple_pages: "Zobrazeno %{item_name} <b>%{from}-%{to}</b> z <b>%{count}</b> celkem"
19
19
 
20
- combo_nav_js: "Strana %{page_input} z %{pages}"
20
+ combo_nav_js: "<label>Strana %{page_input} z %{pages}</label>"
21
21
 
22
- items_selector_js: "Zobrazit %{items_input} %{item_name} na stránce"
22
+ items_selector_js: "<label>Zobrazit %{items_input} %{item_name} na stránce</label>"
data/lib/locales/da.yml CHANGED
@@ -17,6 +17,6 @@ da:
17
17
  single_page: "Viser <b>%{count}</b> %{item_name}"
18
18
  multiple_pages: "Viser %{item_name} <b>%{from}-%{to}</b> til <b>%{count}</b> totalt"
19
19
 
20
- combo_nav_js: "Side %{page_input} of %{pages}"
20
+ combo_nav_js: "<label>Side %{page_input} of %{pages}</label>"
21
21
 
22
- items_selector_js: "Antal %{items_input} %{item_name} per side"
22
+ items_selector_js: "<label>Antal %{items_input} %{item_name} per side</label>"
data/lib/locales/de.yml CHANGED
@@ -17,6 +17,6 @@ de:
17
17
  single_page: "Zeige <b>%{count}</b> %{item_name}"
18
18
  multiple_pages: "Zeige %{item_name} <b>%{from}-%{to}</b> von <b>%{count}</b> gesamt"
19
19
 
20
- combo_nav_js: "Seite %{page_input} von %{pages}"
20
+ combo_nav_js: "<label>Seite %{page_input} von %{pages}</label>"
21
21
 
22
- items_selector_js: "Zeige %{items_input} %{item_name} pro Seite"
22
+ items_selector_js: "<label>Zeige %{items_input} %{item_name} pro Seite</label>"
data/lib/locales/en.yml CHANGED
@@ -17,6 +17,6 @@ en:
17
17
  single_page: "Displaying <b>%{count}</b> %{item_name}"
18
18
  multiple_pages: "Displaying %{item_name} <b>%{from}-%{to}</b> of <b>%{count}</b> in total"
19
19
 
20
- combo_nav_js: "Page %{page_input} of %{pages}"
20
+ combo_nav_js: "<label>Page %{page_input} of %{pages}</label>"
21
21
 
22
- items_selector_js: "Show %{items_input} %{item_name} per page"
22
+ items_selector_js: "<label>Show %{items_input} %{item_name} per page</label>"
data/lib/locales/es.yml CHANGED
@@ -17,6 +17,6 @@ es:
17
17
  single_page: "Mostrando %{count} %{item_name}"
18
18
  multiple_pages: "Mostrando %{item_name} %{from}-%{to} de %{count} en total"
19
19
 
20
- combo_nav_js: "Página %{page_input} de %{pages}"
20
+ combo_nav_js: "<label>Página %{page_input} de %{pages}</label>"
21
21
 
22
- items_selector_js: "Mostrar %{items_input} %{item_name} por página"
22
+ items_selector_js: "<label>Mostrar %{items_input} %{item_name} por página</label>"
data/lib/locales/fr.yml CHANGED
@@ -17,6 +17,6 @@ fr:
17
17
  single_page: "Affichage de <b>%{count}</b> %{item_name}"
18
18
  multiple_pages: "Affichage des %{item_name} <b>%{from} à %{to}</b> sur <b>%{count}</b> au total"
19
19
 
20
- combo_nav_js: "Page %{page_input} sur %{pages}"
20
+ combo_nav_js: "<label>Page %{page_input} sur %{pages}</label>"
21
21
 
22
- items_selector_js: "Afficher %{items_input} %{item_name} par page"
22
+ items_selector_js: "<label>Afficher %{items_input} %{item_name} par page</label>"
data/lib/locales/hr.yml CHANGED
@@ -19,6 +19,6 @@ hr:
19
19
  single_page: "Prikazuje se <b>%{count}</b> %{item_name}"
20
20
  multiple_pages: "Prikaz %{item_name} <b>%{from}-%{to}</b> od <b>%{count}</b> ukupno"
21
21
 
22
- combo_nav_js: "Stranica %{page_input} od %{pages}"
22
+ combo_nav_js: "<label>Stranica %{page_input} od %{pages}</label>"
23
23
 
24
- items_selector_js: "Prikaži %{items_input} %{item_name} po stranici"
24
+ items_selector_js: "<label>Prikaži %{items_input} %{item_name} po stranici</label>"
data/lib/locales/id.yml CHANGED
@@ -15,6 +15,6 @@ id:
15
15
  single_page: "Menampilkan <b>%{count}</b> %{item_name}"
16
16
  multiple_pages: "Menampilkan %{item_name} <b>%{from}-%{to}</b> dari total <b>%{count}</b>"
17
17
 
18
- combo_nav_js: "Halaman %{page_input} dari %{pages}"
18
+ combo_nav_js: "<label>Halaman %{page_input} dari %{pages}</label>"
19
19
 
20
- items_selector_js: "Tampilkan %{items_input} %{item_name} per halaman"
20
+ items_selector_js: "<label>Tampilkan %{items_input} %{item_name} per halaman</label>"
data/lib/locales/it.yml CHANGED
@@ -17,6 +17,6 @@ it:
17
17
  single_page: "Visualizzazione di <b>%{count}</b> %{item_name}"
18
18
  multiple_pages: "Visualizzazione %{item_name} <b>%{from}-%{to}</b> di <b>%{count}</b> in totale"
19
19
 
20
- combo_nav_js: "Pagina %{page_input} di %{pages}"
20
+ combo_nav_js: "<label>Pagina %{page_input} di %{pages}</label>"
21
21
 
22
- items_selector_js: "Mostra %{items_input} %{item_name} per pagina"
22
+ items_selector_js: "<label>Mostra %{items_input} %{item_name} per pagina</label>"
data/lib/locales/ja.yml CHANGED
@@ -15,6 +15,6 @@ ja:
15
15
  single_page: "<b>%{count}</b> 件の%{item_name}"
16
16
  multiple_pages: "<b>%{count}</b> 件中 <b>%{from}-%{to}</b> 件目の%{item_name}を表示中"
17
17
 
18
- combo_nav_js: "%{page_input} / %{pages} ページ"
18
+ combo_nav_js: "<label>%{page_input} / %{pages} ページ</label>"
19
19
 
20
- items_selector_js: "%{items_input} 件ずつ表示"
20
+ items_selector_js: "<label>%{items_input} 件ずつ表示</label>"
data/lib/locales/km.yml CHANGED
@@ -14,6 +14,6 @@ km:
14
14
  single_page: "បង្ហាញ <b>%{count}</b> %{item_name}"
15
15
  multiple_pages: "បង្ហាញ %{item_name} <b>%{from}-%{to}</b> នៃ <b>%{count}</b> ជាចំនួនសរុប"
16
16
 
17
- combo_nav_js: "ទំព័រ %{page_input} នៃ %{pages}"
17
+ combo_nav_js: "<label>ទំព័រ %{page_input} នៃ %{pages}</label>"
18
18
 
19
- items_selector_js: "បង្ហាញ %{items_input} %{item_name} ក្នុង ១ ទំព័រ"
19
+ items_selector_js: "<label>បង្ហាញ %{items_input} %{item_name} ក្នុង ១ ទំព័រ</label>"
data/lib/locales/ko.yml CHANGED
@@ -15,6 +15,6 @@ ko:
15
15
  single_page: "<b>%{count}</b>개의 %{item_name} 표시됨"
16
16
  multiple_pages: "총 <b>%{count}</b>개의 %{item_name} 중 <b>%{from}-%{to}</b>"
17
17
 
18
- combo_nav_js: " %{pages} 중 %{page_input} 페이지"
18
+ combo_nav_js: "<label>총 %{pages} 중 %{page_input} 페이지</label>"
19
19
 
20
- items_selector_js: "페이지 당 %{items_input}개 표시%"
20
+ items_selector_js: "<label>페이지 당 %{items_input}개 표시%</label>"
data/lib/locales/nb.yml CHANGED
@@ -17,6 +17,6 @@ nb:
17
17
  single_page: "Viser <b>%{count}</b> %{item_name}"
18
18
  multiple_pages: "Viser %{item_name} <b>%{from}-%{to}</b> av totalt <b>%{count}</b>"
19
19
 
20
- combo_nav_js: "Side %{page_input} av %{pages}"
20
+ combo_nav_js: "<label>Side %{page_input} av %{pages}</label>"
21
21
 
22
- items_selector_js: "Vis %{items_input} %{item_name} per side"
22
+ items_selector_js: "<label>Vis %{items_input} %{item_name} per side</label>"
data/lib/locales/nl.yml CHANGED
@@ -17,6 +17,6 @@ nl:
17
17
  single_page: "Toont <b>%{count}</b> %{item_name}"
18
18
  multiple_pages: "Toont <b>%{from}-%{to}</b> %{item_name} van <b>%{count}</b> in totaal"
19
19
 
20
- combo_nav_js: "Pagina %{page_input} van %{pages}"
20
+ combo_nav_js: "<label>Pagina %{page_input} van %{pages}</label>"
21
21
 
22
- items_selector_js: "Toont %{items_input} %{item_name} per pagina"
22
+ items_selector_js: "<label>Toont %{items_input} %{item_name} per pagina</label>"
data/lib/locales/pl.yml CHANGED
@@ -19,6 +19,6 @@ pl:
19
19
  single_page: "Wyświetlono <b>%{count}</b> %{item_name}"
20
20
  multiple_pages: "Wyświetlono %{item_name} <b>%{from}-%{to}</b> z wszystkich <b>%{count}</b>"
21
21
 
22
- combo_nav_js: "Strona %{page_input} z %{pages}"
22
+ combo_nav_js: "<label>Strona %{page_input} z %{pages}</label>"
23
23
 
24
- items_selector_js: "Pokaż %{items_input} %{item_name} na stronie"
24
+ items_selector_js: "<label>Pokaż %{items_input} %{item_name} na stronie</label>"
@@ -17,6 +17,6 @@ pt-BR:
17
17
  single_page: "Mostrando %{count} %{item_name}"
18
18
  multiple_pages: "Mostrando %{item_name} %{from}-%{to} do total de %{count}"
19
19
 
20
- combo_nav_js: "Página %{page_input} de %{pages}"
20
+ combo_nav_js: "<label>Página %{page_input} de %{pages}</label>"
21
21
 
22
- items_selector_js: "Mostrar %{items_input} %{item_name} por página"
22
+ items_selector_js: "<label>Mostrar %{items_input} %{item_name} por página</label>"
data/lib/locales/pt.yml CHANGED
@@ -17,6 +17,6 @@ pt:
17
17
  single_page: "Mostrando %{count} %{item_name}"
18
18
  multiple_pages: "Mostrando %{item_name} %{from}-%{to} de um total de %{count}"
19
19
 
20
- combo_nav_js: "Página %{page_input} de %{pages}"
20
+ combo_nav_js: "<label>Página %{page_input} de %{pages}</label>"
21
21
 
22
- items_selector_js: "Mostrar %{items_input} %{item_name} por página"
22
+ items_selector_js: "<label>Mostrar %{items_input} %{item_name} por página</label>"
data/lib/locales/ru.yml CHANGED
@@ -19,6 +19,6 @@ ru:
19
19
  single_page: "<b>%{count}</b> %{item_name}"
20
20
  multiple_pages: "Всего <b>%{count}</b> %{item_name}, показаны с <b>%{from}</b> по <b>%{to}</b>"
21
21
 
22
- combo_nav_js: "Страница %{page_input} из %{pages}"
22
+ combo_nav_js: "<label>Страница %{page_input} из %{pages}</label>"
23
23
 
24
- items_selector_js: "Показать %{items_input} %{item_name} на странице"
24
+ items_selector_js: "<label>Показать %{items_input} %{item_name} на странице</label>"
data/lib/locales/sr.yml CHANGED
@@ -18,6 +18,6 @@ sr:
18
18
  single_page: "Приказује се <b>%{count}</b> %{item_name}"
19
19
  multiple_pages: "Приказ %{item_name} <b>%{from}-%{to}</b> од <b>%{count}</b> укупно"
20
20
 
21
- combo_nav_js: "Страниca %{page_input} од %{pages}"
21
+ combo_nav_js: "<label>Страниca %{page_input} од %{pages}</label>"
22
22
 
23
- items_selector_js: "Прикажи %{items_input} %{item_name} по страниcи"
23
+ items_selector_js: "<label>Прикажи %{items_input} %{item_name} по страниcи</label>"
@@ -18,6 +18,6 @@ sv-SE:
18
18
  single_page: "Visar <b>%{count}</b> %{item_name}"
19
19
  multiple_pages: "Visar %{item_name} <b>%{from}-%{to}</b> av <b>%{count}</b> totalt"
20
20
 
21
- combo_nav_js: "Sida %{page_input} av %{pages}"
21
+ combo_nav_js: "<label>Sida %{page_input} av %{pages}</label>"
22
22
 
23
- items_selector_js: "Visa %{items_input} %{item_name} per sida"
23
+ items_selector_js: "<label>Visa %{items_input} %{item_name} per sida</label>"
data/lib/locales/sv.yml CHANGED
@@ -18,6 +18,6 @@ sv:
18
18
  single_page: "Visar <b>%{count}</b> %{item_name}"
19
19
  multiple_pages: "Visar %{item_name} <b>%{from}-%{to}</b> av <b>%{count}</b> totalt"
20
20
 
21
- combo_nav_js: "Sida %{page_input} av %{pages}"
21
+ combo_nav_js: "<label>Sida %{page_input} av %{pages}</label>"
22
22
 
23
- items_selector_js: "Visa %{items_input} %{item_name} per sida"
23
+ items_selector_js: "<label>Visa %{items_input} %{item_name} per sida</label>"
data/lib/locales/sw.yml CHANGED
@@ -17,6 +17,6 @@ sw:
17
17
  single_page: "Inaonyesha %{item_name} <b>%{count}</b>"
18
18
  multiple_pages: "Inaonyesha %{item_name} <b>%{from}-%{to}</b> ya <b>%{count}</b> kwa jumla"
19
19
 
20
- combo_nav_js: "Kurasa %{page_input} ya %{pages}"
20
+ combo_nav_js: "<label>Kurasa %{page_input} ya %{pages}</label>"
21
21
 
22
- items_selector_js: "Onyesha %{items_input} %{item_name} kwa kila ukurasa"
22
+ items_selector_js: "<label>Onyesha %{items_input} %{item_name} kwa kila ukurasa</label>"
data/lib/locales/tr.yml CHANGED
@@ -15,6 +15,6 @@ tr:
15
15
  single_page: "Toplam <b>%{count}</b> %{item_name} gösteriliyor"
16
16
  multiple_pages: "<b>%{count}</b> %{item_name} içerisinden <b>%{from}-%{to}</b> kadarı gösteriliyor"
17
17
 
18
- combo_nav_js: "Sayfa %{page_input} / %{pages}"
18
+ combo_nav_js: "<label>Sayfa %{page_input} / %{pages}</label>"
19
19
 
20
- items_selector_js: "Sayfada %{items_input} %{item_name} göster"
20
+ items_selector_js: "<label>Sayfada %{items_input} %{item_name} göster</label>"
@@ -0,0 +1,24 @@
1
+ # :east_slavic pluralization (see https://github.com/ddnexus/pagy/blob/master/lib/locales/utils/p11n.rb)
2
+
3
+ uk:
4
+ pagy:
5
+
6
+ item_name:
7
+ one: "запис"
8
+ few: "записів"
9
+ many: "записів"
10
+ other: "записів"
11
+
12
+ nav:
13
+ prev: "&lsaquo;&nbsp;Назад"
14
+ next: "Далі&nbsp;&rsaquo;"
15
+ gap: "&hellip;"
16
+
17
+ info:
18
+ no_items: "Більше %{item_name} немає"
19
+ single_page: "<b>%{count}</b> %{item_name}"
20
+ multiple_pages: "Загалом <b>%{count}</b> %{item_name}, показані з <b>%{from}</b> по <b>%{to}</b>"
21
+
22
+ combo_nav_js: "<label>Сторінка %{page_input} з %{pages}</label>"
23
+
24
+ items_selector_js: "<label>Показати %{items_input} %{item_name} на сторінці</label>"
@@ -85,6 +85,7 @@ plurals = Hash.new(p11n[:one_other]).tap do |hash|
85
85
  hash['sv'] = p11n[:one_two_other]
86
86
  hash['sv-SE'] = p11n[:one_two_other]
87
87
  hash['tr'] = p11n[:other]
88
+ hash['uk'] = p11n[:east_slavic]
88
89
  hash['zh-CN'] = p11n[:other]
89
90
  hash['zh-HK'] = p11n[:other]
90
91
  hash['zh-TW'] = p11n[:other]
@@ -15,6 +15,6 @@ zh-CN:
15
15
  single_page: "显示<b>%{count}</b> 项%{item_name}"
16
16
  multiple_pages: "共 <b>%{count}</b> 项%{item_name},显示 <b>%{from}-%{to}</b>"
17
17
 
18
- combo_nav_js: " %{page_input} / %{pages} "
18
+ combo_nav_js: "<label>第 %{page_input} / %{pages} 页</label>"
19
19
 
20
- items_selector_js: "每页显示 %{items_input} 条%"
20
+ items_selector_js: "<label>每页显示 %{items_input} 条%</label>"
@@ -15,6 +15,6 @@ zh-HK:
15
15
  single_page: "顯示 <b>%{count}</b> %{item_name}"
16
16
  multiple_pages: "共 <b>%{count}</b> %{item_name},顯示 <b>%{from}-%{to}</b>"
17
17
 
18
- combo_nav_js: " %{page_input} / %{pages} "
18
+ combo_nav_js: "<label>第 %{page_input} / %{pages} 頁</label>"
19
19
 
20
- items_selector_js: "每頁顯示 %{items_input} 記錄"
20
+ items_selector_js: "<label>每頁顯示 %{items_input} 記錄</label>"
@@ -10,11 +10,11 @@ zh-TW:
10
10
  next: "下一頁&nbsp;&rsaquo;"
11
11
  gap: "&hellip;"
12
12
 
13
- combo_nav_js: "第 %{page_input} / %{pages} 頁"
14
-
15
13
  info:
16
14
  no_items: "沒找到項"
17
15
  single_page: "顯示 <b>%{count}</b> 項%{item_name}"
18
16
  multiple_pages: "共 <b>%{count}</b> 項%{item_name},顯示 <b>%{from}-%{to}</b>"
19
17
 
20
- items_selector_js: "每頁顯示 %{items_input} 項%{item_name}"
18
+ combo_nav_js: "<label>第 %{page_input} / %{pages} 頁</label>"
19
+
20
+ items_selector_js: "<label>每頁顯示 %{items_input} 項%{item_name}</label>"
data/lib/pagy.rb CHANGED
@@ -5,7 +5,7 @@ require 'pathname'
5
5
 
6
6
  # main class
7
7
  class Pagy
8
- VERSION = '4.5.1'
8
+ VERSION = '4.8.1'
9
9
 
10
10
  # Root pathname to get the path of Pagy files like templates or dictionaries
11
11
  def self.root
@@ -23,7 +23,7 @@ class Pagy
23
23
  # Merge and validate the options, do some simple arithmetic and set the instance variables
24
24
  def initialize(vars)
25
25
  @vars = VARS.merge( vars.delete_if{|k,v| VARS.key?(k) && (v.nil? || v == '') } )
26
- @vars[:fragment] = deprecated_var(:anchor, @vars[:anchor], :fragment, @vars[:fragment]) if @vars[:anchor]
26
+ @vars[:fragment] = Pagy.deprecated_var(:anchor, @vars[:anchor], :fragment, @vars[:fragment]) if @vars[:anchor]
27
27
 
28
28
  INSTANCE_VARS_MIN.each do |name,min|
29
29
  raise VariableError.new(self), "expected :#{name} >= #{min}; got #{@vars[name].inspect}" \
@@ -4,22 +4,22 @@ class Pagy
4
4
 
5
5
  # deprecated variables
6
6
  def deprecated_var(var, val, new_var, new_val)
7
- value = new_val || val
8
- Warning.warn %([PAGY WARNING] deprecated use of `#{var}` var will not be supported in 5.0! Use `#{new_var}: #{value.inspect}` instead.)
7
+ value = val || new_val
8
+ Warning.warn %([PAGY WARNING] deprecated use of '#{var}' var will not be supported in 5.0! Use '#{new_var}: #{value.inspect}' instead.)
9
9
  value
10
10
  end
11
11
 
12
12
  # deprecated pagy_url_for argument order
13
13
  def deprecated_order(pagy, page)
14
- Warning.warn '[PAGY WARNING] inverted use of pagy/page in pagy_url_for will not be supported in 5.0! Use pagy_url_for(pagy, page) instead.'
14
+ Warning.warn %([PAGY WARNING] inverted use of pagy/page in pagy_url_for will not be supported in 5.0! Use pagy_url_for(pagy, page) instead.)
15
15
  [page, pagy]
16
16
  end
17
17
 
18
18
 
19
19
  # deprecated posiitioal arguments
20
20
  def deprecated_arg(arg, val, new_key, new_val)
21
- value = new_val || val # we use the new_val if present
22
- Warning.warn %([PAGY WARNING] deprecated use of positional `#{arg}` arg will not be supported in 5.0! Use only the keyword arg `#{new_key}: #{value.inspect}` instead.)
21
+ value = val || new_val # we use the new_val if present
22
+ Warning.warn %([PAGY WARNING] deprecated use of positional '#{arg}' arg will not be supported in 5.0! Use only the keyword arg '#{new_key}: #{value.inspect}' instead.)
23
23
  value
24
24
  end
25
25
 
@@ -16,7 +16,9 @@ class Pagy
16
16
  Regexp.last_match(1)&.to_sym
17
17
  end
18
18
 
19
- def value = pagy.vars[variable]
19
+ def value
20
+ pagy.vars[variable]
21
+ end
20
22
  end
21
23
 
22
24
  # specific overflow error
@@ -11,7 +11,7 @@ class Pagy
11
11
  p_id = %( id="#{pagy_id}") if pagy_id
12
12
  link = pagy_link_proc(pagy, link_extra: %(class="page-link" #{link_extra}))
13
13
 
14
- html = +%(<nav#{p_id} class="pagy-bootstrap-nav" role="navigation" aria-label="pager"><ul class="pagination">)
14
+ html = +%(<nav#{p_id} class="pagy-bootstrap-nav" aria-label="pager"><ul class="pagination">)
15
15
  html << pagy_bootstrap_prev_html(pagy, link)
16
16
  pagy.series.each do |item| # series example: [1, :gap, 7, 8, "9", 10, 11, :gap, 36]
17
17
  html << case item
@@ -35,8 +35,7 @@ class Pagy
35
35
  'gap' => %(<li class="page-item gap disabled"><a href="#" class="page-link">#{pagy_t 'pagy.nav.gap'}</a></li>),
36
36
  'after' => %(#{pagy_bootstrap_next_html pagy, link}</ul>) }
37
37
 
38
- html = %(<nav#{p_id} class="pagy-njs pagy-bootstrap-nav-js" role="navigation" aria-label="pager"></nav>)
39
- html << pagy_json_tag(pagy, :nav, tags, pagy.sequels(steps))
38
+ %(<nav#{p_id} class="pagy-njs pagy-bootstrap-nav-js" aria-label="pager" #{pagy_json_attr(pagy, :nav, tags, pagy.sequels(steps))}></nav>)
40
39
  end
41
40
 
42
41
  # Javascript combo pagination for bootstrap: it returns a nav and a JSON tag used by the Pagy.combo_nav javascript
@@ -48,7 +47,9 @@ class Pagy
48
47
  p_pages = pagy.pages
49
48
  input = %(<input type="number" min="1" max="#{p_pages}" value="#{p_page}" class="text-primary" style="padding: 0; border: none; text-align: center; width: #{p_pages.to_s.length+1}rem;">)
50
49
 
51
- %(<nav#{p_id} class="pagy-bootstrap-combo-nav-js pagination" role="navigation" aria-label="pager"><div class="btn-group" role="group">#{
50
+ %(<nav#{p_id} class="pagy-bootstrap-combo-nav-js pagination" aria-label="pager"><div class="btn-group" role="group" #{
51
+ pagy_json_attr pagy, :combo_nav, p_page, pagy_marked_link(link)
52
+ }>#{
52
53
  if (p_prev = pagy.prev)
53
54
  link.call p_prev, pagy_t('pagy.nav.prev'), 'aria-label="previous" class="prev btn btn-primary"'
54
55
  else
@@ -60,9 +61,7 @@ class Pagy
60
61
  else
61
62
  %(<a class="next btn btn-primary disabled" href="#">#{pagy_t 'pagy.nav.next' }</a>)
62
63
  end
63
- }</div></nav>#{
64
- pagy_json_tag pagy, :combo_nav, p_page, pagy_marked_link(link)
65
- })
64
+ }</div></nav>)
66
65
  end
67
66
 
68
67
  private
@@ -11,7 +11,7 @@ class Pagy
11
11
  p_id = %( id="#{pagy_id}") if pagy_id
12
12
  link = pagy_link_proc(pagy, link_extra: link_extra)
13
13
 
14
- html = +%(<nav#{p_id} class="pagy-bulma-nav pagination is-centered" role="navigation" aria-label="pagination">)
14
+ html = +%(<nav#{p_id} class="pagy-bulma-nav pagination is-centered" aria-label="pagination">)
15
15
  html << pagy_bulma_prev_next_html(pagy, link)
16
16
  html << %(<ul class="pagination-list">)
17
17
  pagy.series.each do |item| # series example: [1, :gap, 7, 8, "9", 10, 11, :gap, 36]
@@ -34,8 +34,7 @@ class Pagy
34
34
  'gap' => %(<li><span class="pagination-ellipsis">#{pagy_t 'pagy.nav.gap' }</span></li>),
35
35
  'after' => '</ul>' }
36
36
 
37
- html = %(<nav#{p_id} class="pagy-njs pagy-bulma-nav-js pagination is-centered" role="navigation" aria-label="pagination"></nav>)
38
- html << pagy_json_tag(pagy, :nav, tags, pagy.sequels(steps))
37
+ %(<nav#{p_id} class="pagy-njs pagy-bulma-nav-js pagination is-centered" aria-label="pagination" #{pagy_json_attr(pagy, :nav, tags, pagy.sequels(steps))}></nav>)
39
38
  end
40
39
 
41
40
  # Javascript combo pagination for Bulma: it returns a nav and a JSON tag used by the Pagy.combo_nav javascript
@@ -47,7 +46,9 @@ class Pagy
47
46
  p_pages = pagy.pages
48
47
  input = %(<input class="input" type="number" min="1" max="#{p_pages}" value="#{p_page}" style="padding: 0; text-align: center; width: #{p_pages.to_s.length+1}rem; margin:0 0.3rem;">)
49
48
 
50
- %(<nav#{p_id} class="pagy-bulma-combo-nav-js" role="navigation" aria-label="pagination"><div class="field is-grouped is-grouped-centered" role="group">#{
49
+ %(<nav#{p_id} class="pagy-bulma-combo-nav-js" aria-label="pagination"><div class="field is-grouped is-grouped-centered" role="group" #{
50
+ pagy_json_attr pagy, :combo_nav, p_page, pagy_marked_link(link)
51
+ }>#{
51
52
  if (p_prev = pagy.prev)
52
53
  %(<p class="control">#{link.call p_prev, pagy_t('pagy.nav.prev'), 'class="button" aria-label="previous page"'}</p>)
53
54
  else
@@ -59,15 +60,13 @@ class Pagy
59
60
  else
60
61
  %(<p class="control"><a class="button" disabled>#{pagy_t 'pagy.nav.next'}</a></p>)
61
62
  end
62
- }</div></nav>#{
63
- pagy_json_tag pagy, :combo_nav, p_page, pagy_marked_link(link)
64
- })
63
+ }</div></nav>)
65
64
  end
66
65
 
67
66
  private
68
67
 
69
68
  def pagy_bulma_prev_next_html(pagy, link)
70
- html = if (p_prev = pagy.prev)
69
+ html = +if (p_prev = pagy.prev)
71
70
  link.call p_prev, pagy_t('pagy.nav.prev'), 'class="pagination-previous" aria-label="previous page"'
72
71
  else
73
72
  %(<a class="pagination-previous" disabled>#{pagy_t 'pagy.nav.prev'}</a>)
@@ -11,7 +11,7 @@ class Pagy
11
11
  p_id = %( id="#{pagy_id}") if pagy_id
12
12
  link = pagy_link_proc(pagy, link_extra: link_extra)
13
13
 
14
- html = +%(<nav#{p_id} class="pagy-foundation-nav" role="navigation" aria-label="Pagination"><ul class="pagination">)
14
+ html = +%(<nav#{p_id} class="pagy-foundation-nav" aria-label="Pagination"><ul class="pagination">)
15
15
  html << pagy_foundation_prev_html(pagy, link)
16
16
  pagy.series.each do |item| # series example: [1, :gap, 7, 8, "9", 10, 11, :gap, 36]
17
17
  html << case item
@@ -35,8 +35,7 @@ class Pagy
35
35
  'gap' => %(<li class="ellipsis gap" aria-hidden="true"></li>),
36
36
  'after' => %(#{pagy_foundation_next_html pagy, link}</ul>) }
37
37
 
38
- html = %(<nav#{p_id} class="pagy-njs pagy-foundation-nav-js" role="navigation" aria-label="Pagination"></nav>)
39
- html << pagy_json_tag(pagy, :nav, tags, pagy.sequels(steps))
38
+ %(<nav#{p_id} class="pagy-njs pagy-foundation-nav-js" aria-label="Pagination" #{pagy_json_attr(pagy, :nav, tags, pagy.sequels(steps))}></nav>)
40
39
  end
41
40
 
42
41
  # Javascript combo pagination for Foundation: it returns a nav and a JSON tag used by the Pagy.combo_nav javascript
@@ -48,21 +47,21 @@ class Pagy
48
47
  p_pages = pagy.pages
49
48
  input = %(<input class="input-group-field cell shrink" type="number" min="1" max="#{p_pages}" value="#{p_page}" style="width: #{p_pages.to_s.length+1}rem; padding: 0 0.3rem; margin: 0 0.3rem;">)
50
49
 
51
- %(<nav#{p_id} class="pagy-foundation-combo-nav-js" role="navigation" aria-label="Pagination"><div class="input-group">#{
50
+ %(<nav#{p_id} class="pagy-foundation-combo-nav-js" aria-label="Pagination"><div class="input-group" #{
51
+ pagy_json_attr pagy, :combo_nav, p_page, pagy_marked_link(link)
52
+ }>#{
52
53
  if (p_prev = pagy.prev)
53
- link.call p_prev, pagy_t('pagy.nav.prev'), 'style="margin-bottom: 0px;" aria-label="previous" class="prev button primary"'
54
+ link.call p_prev, pagy_t('pagy.nav.prev'), 'style="margin-bottom: 0" aria-label="previous" class="prev button primary"'
54
55
  else
55
- %(<a style="margin-bottom: 0px;" class="prev button primary disabled" href="#">#{pagy_t 'pagy.nav.prev'}</a>)
56
+ %(<a style="margin-bottom: 0" class="prev button primary disabled" href="#">#{pagy_t 'pagy.nav.prev'}</a>)
56
57
  end
57
58
  }<span class="input-group-label">#{pagy_t 'pagy.combo_nav_js', page_input: input, count: p_page, pages: p_pages}</span>#{
58
59
  if (p_next = pagy.next)
59
- link.call p_next, pagy_t('pagy.nav.next'), 'style="margin-bottom: 0px;" aria-label="next" class="next button primary"'
60
+ link.call p_next, pagy_t('pagy.nav.next'), 'style="margin-bottom: 0" aria-label="next" class="next button primary"'
60
61
  else
61
- %(<a style="margin-bottom: 0px;" class="next button primary disabled" href="#">#{pagy_t 'pagy.nav.next'}</a>)
62
+ %(<a style="margin-bottom: 0" class="next button primary disabled" href="#">#{pagy_t 'pagy.nav.next'}</a>)
62
63
  end
63
- }</div></nav>#{
64
- pagy_json_tag pagy, :combo_nav, p_page, pagy_marked_link(link)
65
- })
64
+ }</div></nav>)
66
65
  end
67
66
 
68
67
  private
@@ -25,10 +25,10 @@ class Pagy
25
25
  rels = { 'first' => 1, 'prev' => pagy.prev, 'next' => pagy.next }
26
26
  rels['last'] = pagy.last unless countless
27
27
  url_str = pagy_url_for(pagy, PAGE_PLACEHOLDER, absolute: true)
28
- hash = { 'Link' => rels.filter_map do |rel, num|
28
+ hash = { 'Link' => rels.map do |rel, num| # filter_map if ruby >=2.7
29
29
  next unless num
30
30
  [ rel, url_str.sub(PAGE_PLACEHOLDER, num.to_s) ]
31
- end.to_h }
31
+ end.compact.to_h }
32
32
  headers = pagy.vars[:headers]
33
33
  hash[headers[:page]] = pagy.page.to_s if headers[:page]
34
34
  hash[headers[:items]] = pagy.vars[:items].to_s if headers[:items]
@@ -14,7 +14,9 @@ class Pagy
14
14
  end
15
15
 
16
16
  module UseI18nGem
17
- def pagy_t(key, **opts) = ::I18n.t(key, **opts)
17
+ def pagy_t(key, **opts)
18
+ ::I18n.t(key, **opts)
19
+ end
18
20
  end
19
21
  prepend UseI18nGem
20
22
 
@@ -40,12 +40,12 @@ class Pagy
40
40
  link = pagy_marked_link(pagy_link_proc(pagy, link_extra: link_extra))
41
41
  p_vars[:items] = p_items # restore the items
42
42
 
43
- html = %(<span#{p_id} class="pagy-items-selector-js">)
43
+ html = +%(<span#{p_id} class="pagy-items-selector-js" #{pagy_json_attr pagy, :items_selector, pagy.from, link}>)
44
44
  input = %(<input type="number" min="1" max="#{p_vars[:max_items]}" value="#{p_items}" style="padding: 0; text-align: center; width: #{p_items.to_s.length+1}rem;">)
45
45
  html << pagy_t('pagy.items_selector_js', item_name: item_name || pagy_t(i18n_key || p_vars[:i18n_key], count: p_items),
46
46
  items_input: input,
47
47
  count: p_items)
48
- html << %(</span>#{pagy_json_tag pagy, :items_selector, pagy.from, link})
48
+ html << %(</span>)
49
49
  end
50
50
 
51
51
  end
@@ -36,8 +36,7 @@ class Pagy
36
36
  'gap' => %(<li class="gap disabled"><a href="#">#{pagy_t 'pagy.nav.gap'}</a></li>),
37
37
  'after' => %(#{pagy_materialize_next_html pagy, link}</ul>) }
38
38
 
39
- html = %(<div#{p_id} class="pagy-njs pagy-materialize-nav-js" role="navigation" aria-label="pager"></div>)
40
- html << pagy_json_tag(pagy, :nav, tags, pagy.sequels(steps))
39
+ %(<div#{p_id} class="pagy-njs pagy-materialize-nav-js" role="navigation" aria-label="pager" #{pagy_json_attr(pagy, :nav, tags, pagy.sequels(steps))}></div>)
41
40
  end
42
41
 
43
42
  # Javascript combo pagination for materialize: it returns a nav and a JSON tag used by the Pagy.combo_nav javascript
@@ -47,18 +46,18 @@ class Pagy
47
46
  link = pagy_link_proc(pagy, link_extra: link_extra)
48
47
  p_page = pagy.page
49
48
  p_pages = pagy.pages
50
- style = ' style="vertical-align: middle;"'
51
- input = %(<input type="number" class="browser-default" min="1" max="#{p_pages}" value="#{p_page}" style="padding: 2px; border: none; border-radius: 2px; text-align: center; width: #{p_pages.to_s.length+1}rem;">)
49
+ style = ' style="vertical-align: middle"'
50
+ input = %(<input type="number" class="browser-default" min="1" max="#{p_pages}" value="#{p_page}" style="text-align: center; width: #{p_pages.to_s.length+1}rem;">)
52
51
 
53
- %(<div#{p_id} class="pagy-materialize-combo-nav-js pagination" role="navigation" aria-label="pager"><div class="pagy-compact-chip role="group" style="height: 35px; border-radius: 18px; background: #e4e4e4; display: inline-block;"><ul class="pagination" style="margin: 0px;">#{
52
+ %(<ul#{p_id} class="pagy-materialize-combo-nav-js pagination chip" role="navigation" aria-label="pager" style="padding-right: 0" #{
53
+ pagy_json_attr pagy, :combo_nav, p_page, pagy_marked_link(link)
54
+ }>#{
54
55
  pagy_materialize_prev_html pagy, link, style
55
- }<div class="pagy-combo-input btn-flat" style="cursor: default; padding: 0px">#{
56
+ }<li class="pagy-combo-input">#{
56
57
  pagy_t 'pagy.combo_nav_js', page_input: input, count: p_page, pages: p_pages
57
- }</div>#{
58
+ }</li>#{
58
59
  pagy_materialize_next_html pagy, link, style
59
- }</ul></div>#{
60
- pagy_json_tag pagy, :combo_nav, p_page, pagy_marked_link(link)
61
- })
60
+ }</ul>)
62
61
  end
63
62
 
64
63
  private
@@ -17,8 +17,7 @@ class Pagy
17
17
  'gap' => %(<span class="page gap">#{pagy_t 'pagy.nav.gap'}</span> ),
18
18
  'after' => pagy_nav_next_html(pagy, link) }
19
19
 
20
- html = %(<nav#{p_id} class="pagy-njs pagy-nav-js pagination" role="navigation" aria-label="pager"></nav>)
21
- html << pagy_json_tag(pagy, :nav, tags, pagy.sequels(steps))
20
+ %(<nav#{p_id} class="pagy-njs pagy-nav-js pagination" aria-label="pager" #{pagy_json_attr(pagy, :nav, tags, pagy.sequels(steps))}></nav>)
22
21
  end
23
22
 
24
23
  # Javascript combo pagination: it returns a nav and a JSON tag used by the Pagy.combo_nav javascript
@@ -30,15 +29,15 @@ class Pagy
30
29
  p_pages = pagy.pages
31
30
  input = %(<input type="number" min="1" max="#{p_pages}" value="#{p_page}" style="padding: 0; text-align: center; width: #{p_pages.to_s.length+1}rem;">)
32
31
 
33
- %(<nav#{p_id} class="pagy-combo-nav-js pagination" role="navigation" aria-label="pager">#{
32
+ %(<nav#{p_id} class="pagy-combo-nav-js pagination" aria-label="pager" #{
33
+ pagy_json_attr pagy, :combo_nav, p_page, pagy_marked_link(link)
34
+ }>#{
34
35
  pagy_nav_prev_html pagy, link
35
36
  }<span class="pagy-combo-input" style="margin: 0 0.6rem;">#{
36
37
  pagy_t 'pagy.combo_nav_js', page_input: input, count: p_page, pages: p_pages
37
38
  }</span> #{
38
39
  pagy_nav_next_html pagy, link
39
- }</nav>#{
40
- pagy_json_tag pagy, :combo_nav, p_page, pagy_marked_link(link)
41
- })
40
+ }</nav>)
42
41
  end
43
42
 
44
43
  private
@@ -6,7 +6,9 @@ class Pagy
6
6
  module UseOverflowExtra
7
7
  VARS[:overflow] = :empty_page
8
8
 
9
- def overflow? = @overflow
9
+ def overflow?
10
+ @overflow
11
+ end
10
12
 
11
13
  def initialize(vars)
12
14
  @overflow ||= false # don't override if :last_page re-run the method after an overflow
@@ -9,9 +9,9 @@ class Pagy
9
9
  # Pagination for semantic: it returns the html with the series of links to the pages
10
10
  def pagy_semantic_nav(pagy, pagy_id: nil, link_extra: '')
11
11
  p_id = %( id="#{pagy_id}") if pagy_id
12
- link = pagy_link_proc(pagy, link_extra: %(class="item" #{link_extra}"))
12
+ link = pagy_link_proc(pagy, link_extra: %(class="item" #{link_extra}))
13
13
 
14
- html = +%(<div#{p_id} class="pagy-semantic-nav ui pagination menu" aria-label="pager">)
14
+ html = +%(<div#{p_id} class="pagy-semantic-nav ui pagination menu">)
15
15
  html << pagy_semantic_prev_html(pagy, link)
16
16
  pagy.series.each do |item| # series example: [1, :gap, 7, 8, "9", 10, 11, :gap, 36]
17
17
  html << case item
@@ -35,8 +35,7 @@ class Pagy
35
35
  'gap' => %(<div class="disabled item">#{pagy_t('pagy.nav.gap')}</div>),
36
36
  'after' => pagy_semantic_next_html(pagy, link) }
37
37
 
38
- html = %(<div#{p_id} class="pagy-njs pagy-semantic-nav-js ui pagination menu" role="navigation" aria-label="pager"></div>)
39
- html << pagy_json_tag(pagy, :nav, tags, pagy.sequels(steps))
38
+ %(<div#{p_id} class="pagy-njs pagy-semantic-nav-js ui pagination menu" role="navigation" #{pagy_json_attr(pagy, :nav, tags, pagy.sequels(steps))}></div>)
40
39
  end
41
40
 
42
41
  # Combo pagination for semantic: it returns a nav and a JSON tag used by the Pagy.combo_nav javascript
@@ -48,15 +47,15 @@ class Pagy
48
47
  p_pages = pagy.pages
49
48
  input = %(<input type="number" min="1" max="#{p_pages}" value="#{p_page}" style="padding: 0; text-align: center; width: #{p_pages.to_s.length+1}rem; margin: 0 0.3rem">)
50
49
 
51
- %(<div#{p_id} class="pagy-semantic-combo-nav-js ui compact menu" role="navigation" aria-label="pager">#{
50
+ %(<div#{p_id} class="pagy-semantic-combo-nav-js ui compact menu" role="navigation" #{
51
+ pagy_json_attr pagy, :combo_nav, p_page, pagy_marked_link(link)
52
+ }>#{
52
53
  pagy_semantic_prev_html pagy, link
53
54
  }<div class="pagy-combo-input item">#{
54
55
  pagy_t 'pagy.combo_nav_js', page_input: input, count: p_page, pages: p_pages
55
56
  }</div> #{
56
57
  pagy_semantic_next_html pagy, link
57
- }</div>#{
58
- pagy_json_tag pagy, :combo_nav, p_page, pagy_marked_link(link)
59
- })
58
+ }</div>)
60
59
  end
61
60
 
62
61
  private
@@ -29,16 +29,16 @@ class Pagy
29
29
 
30
30
  if defined?(Oj)
31
31
  # it returns a script tag with the JSON-serialized args generated with the faster oj gem
32
- def pagy_json_tag(pagy, *args)
32
+ def pagy_json_attr(pagy, *args)
33
33
  args << pagy.vars[:page_param] if pagy.vars[:enable_trim_extra]
34
- %(<script type="application/json" class="pagy-json">#{Oj.dump(args, mode: :strict)}</script>)
34
+ %(data-pagy-json="#{Oj.dump(args, mode: :strict).gsub('"', '&quot;')}")
35
35
  end
36
36
  else
37
37
  require 'json'
38
38
  # it returns a script tag with the JSON-serialized args generated with the slower to_json
39
- def pagy_json_tag(pagy, *args)
39
+ def pagy_json_attr(pagy, *args)
40
40
  args << pagy.vars[:page_param] if pagy.vars[:enable_trim_extra]
41
- %(<script type="application/json" class="pagy-json">#{args.to_json}</script>)
41
+ %(data-pagy-json="#{args.to_json.gsub('"', '&quot;')}")
42
42
  end
43
43
  end
44
44
 
@@ -46,7 +46,11 @@ class Pagy
46
46
  "#{url_string}#{query_string}#{p_vars[:fragment]}"
47
47
  end
48
48
  end
49
- Helpers.prepend UseStandaloneExtra
49
+
50
+ # single line in order to avoid complicating simplecov already tested with other GitHub Actions
51
+ Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('3.0.0') \
52
+ && Helpers.prepend(UseStandaloneExtra) \
53
+ || ( Frontend.prepend(UseStandaloneExtra); Backend.prepend(UseStandaloneExtra) if defined?(Pagy::Backend::METADATA) ) # rubocop:disable Style/Semicolon
50
54
 
51
55
  # defines a dummy #params method if not already defined in the including module
52
56
  module Backend
@@ -12,7 +12,7 @@ class Pagy
12
12
  link_proc = super(pagy, link_extra: link_extra)
13
13
  return link_proc unless pagy.vars[:enable_trim_extra]
14
14
  lambda do |num, text=num, extra=''|
15
- link = link_proc.call(num, text, extra)
15
+ link = +link_proc.call(num, text, extra)
16
16
  return link unless num == 1
17
17
  link.sub!(/[?&]#{pagy.vars[:page_param]}=1\b(?!&)|\b#{pagy.vars[:page_param]}=1&/, '')
18
18
  end
@@ -11,7 +11,7 @@ class Pagy
11
11
  p_id = %( id="#{pagy_id}") if pagy_id
12
12
  link = pagy_link_proc(pagy, link_extra: link_extra)
13
13
 
14
- html = %(<ul#{p_id} class="pagy-uikit-nav uk-pagination uk-flex-center">#{pagy_uikit_prev_html pagy, link})
14
+ html = +%(<ul#{p_id} class="pagy-uikit-nav uk-pagination uk-flex-center">#{pagy_uikit_prev_html pagy, link})
15
15
  pagy.series.each do |item|
16
16
  html << case item
17
17
  when Integer then %(<li>#{link.call item}</li>)
@@ -34,8 +34,7 @@ class Pagy
34
34
  'gap' => %(<li class="uk-disabled"><span>#{pagy_t 'pagy.nav.gap'}</span></li>),
35
35
  'after' => pagy_uikit_next_html(pagy, link) }
36
36
 
37
- html = %(<ul#{p_id} class="pagy-njs pagy-uikit-nav-js uk-pagination uk-flex-center"></ul>)
38
- html << pagy_json_tag(pagy, :nav, tags, pagy.sequels(steps))
37
+ %(<ul#{p_id} class="pagy-njs pagy-uikit-nav-js uk-pagination uk-flex-center" #{pagy_json_attr(pagy, :nav, tags, pagy.sequels(steps))}></ul>)
39
38
  end
40
39
 
41
40
  # Javascript combo pagination for uikit: it returns a nav and a JSON tag used by the Pagy.combo_nav javascript
@@ -45,29 +44,19 @@ class Pagy
45
44
  link = pagy_link_proc(pagy, link_extra: link_extra)
46
45
  p_page = pagy.page
47
46
  p_pages = pagy.pages
48
- input = %(<input type="number" min="1" max="#{p_pages}" value="#{p_page}" class="uk-input" style="padding: 0; text-align: center; width: #{p_pages.to_s.length+1}rem;">)
47
+ input = %(<input type="number" min="1" max="#{p_pages}" value="#{p_page}" style="text-align: center; width: #{p_pages.to_s.length+1}rem;">)
49
48
 
50
- %(<div#{p_id} class="pagy-uikit-combo-nav-js uk-button-group">#{
51
- if (p_prev = pagy.prev)
52
- link.call p_prev, pagy_t('pagy.nav.prev'), 'class="uk-button uk-button-default"'
53
- else
54
- %(<button class="uk-button uk-button-default" disabled>#{pagy_t 'pagy.nav.prev'}</button>)
55
- end
56
- }<div class="uk-text-middle uk-margin-left uk-margin-right">#{
49
+ %(<ul#{p_id} class="pagy-uikit-combo-nav-js uk-button-group uk-pagination uk-flex-center" #{
50
+ pagy_json_attr pagy, :combo_nav, p_page, pagy_marked_link(link)
51
+ }>#{
52
+ pagy_uikit_prev_html pagy, link
53
+ }<li>#{
57
54
  pagy_t 'pagy.combo_nav_js', page_input: input, count: p_page, pages: p_pages
58
- }</div>#{
59
- if (p_next = pagy.next)
60
- link.call p_next, pagy_t('pagy.nav.next'), 'class="uk-button uk-button-default"'
61
- else
62
- %(<button class="uk-button uk-button-default" disabled>#{pagy_t 'pagy.nav.next'}</button>)
63
- end
64
- }</div>#{
65
- pagy_json_tag pagy, :combo_nav, p_page, pagy_marked_link(link)
66
- })
55
+ }</li>#{
56
+ pagy_uikit_next_html pagy, link
57
+ }</ul>)
67
58
  end
68
59
 
69
-
70
-
71
60
  private
72
61
 
73
62
  def pagy_uikit_prev_html(pagy, link)
data/lib/pagy/frontend.rb CHANGED
@@ -25,7 +25,9 @@ class Pagy
25
25
  end
26
26
 
27
27
  # Sub-method called only by #pagy_url_for: here for easy customization of params by overriding
28
- def pagy_get_params(params) = params
28
+ def pagy_get_params(params)
29
+ params
30
+ end
29
31
  end
30
32
 
31
33
  # All the code here has been optimized for performance: it may not look very pretty
@@ -41,7 +43,7 @@ class Pagy
41
43
  p_prev = pagy.prev
42
44
  p_next = pagy.next
43
45
 
44
- html = +%(<nav#{p_id} class="pagy-nav pagination" role="navigation" aria-label="pager">)
46
+ html = +%(<nav#{p_id} class="pagy-nav pagination" aria-label="pager">)
45
47
  html << if p_prev
46
48
  %(<span class="page prev">#{link.call p_prev, pagy_t('pagy.nav.prev'), 'aria-label="previous"'}</span> )
47
49
  else
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: 4.5.1
4
+ version: 4.8.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-05-02 00:00:00.000000000 Z
11
+ date: 2021-06-14 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: 'Agnostic pagination in plain ruby: it works with any framework, ORM
14
14
  and DB type, with all kinds of collections, even pre-paginated, scopes, Arrays,
@@ -48,6 +48,7 @@ files:
48
48
  - lib/locales/sv.yml
49
49
  - lib/locales/sw.yml
50
50
  - lib/locales/tr.yml
51
+ - lib/locales/uk.yml
51
52
  - lib/locales/utils/i18n.rb
52
53
  - lib/locales/utils/loader.rb
53
54
  - lib/locales/utils/p11n.rb
@@ -109,7 +110,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
109
110
  requirements:
110
111
  - - ">="
111
112
  - !ruby/object:Gem::Version
112
- version: '3.0'
113
+ version: '2.5'
113
114
  required_rubygems_version: !ruby/object:Gem::Requirement
114
115
  requirements:
115
116
  - - ">="