pagy 4.6.0 → 4.9.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.
Files changed (55) 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 +1 -1
  6. data/lib/locales/bs.yml +1 -1
  7. data/lib/locales/ca.yml +1 -1
  8. data/lib/locales/cs.yml +1 -1
  9. data/lib/locales/da.yml +1 -1
  10. data/lib/locales/de.yml +1 -1
  11. data/lib/locales/en.yml +1 -1
  12. data/lib/locales/es.yml +1 -1
  13. data/lib/locales/fr.yml +1 -1
  14. data/lib/locales/hr.yml +1 -1
  15. data/lib/locales/id.yml +1 -1
  16. data/lib/locales/it.yml +1 -1
  17. data/lib/locales/ja.yml +1 -1
  18. data/lib/locales/km.yml +1 -1
  19. data/lib/locales/ko.yml +1 -1
  20. data/lib/locales/nb.yml +1 -1
  21. data/lib/locales/nl.yml +1 -1
  22. data/lib/locales/pl.yml +1 -1
  23. data/lib/locales/pt-BR.yml +1 -1
  24. data/lib/locales/pt.yml +1 -1
  25. data/lib/locales/ru.yml +1 -1
  26. data/lib/locales/sr.yml +1 -1
  27. data/lib/locales/sv-SE.yml +1 -1
  28. data/lib/locales/sv.yml +1 -1
  29. data/lib/locales/sw.yml +1 -1
  30. data/lib/locales/tr.yml +1 -1
  31. data/lib/locales/uk.yml +24 -0
  32. data/lib/locales/utils/p11n.rb +1 -0
  33. data/lib/locales/zh-CN.yml +1 -1
  34. data/lib/locales/zh-HK.yml +1 -1
  35. data/lib/locales/zh-TW.yml +2 -2
  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 +5 -6
  40. data/lib/pagy/extras/bulma.rb +6 -7
  41. data/lib/pagy/extras/foundation.rb +5 -6
  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/meilisearch.rb +55 -0
  47. data/lib/pagy/extras/navs.rb +5 -6
  48. data/lib/pagy/extras/overflow.rb +3 -1
  49. data/lib/pagy/extras/semantic.rb +5 -6
  50. data/lib/pagy/extras/shared.rb +4 -4
  51. data/lib/pagy/extras/standalone.rb +5 -1
  52. data/lib/pagy/extras/trim.rb +1 -1
  53. data/lib/pagy/extras/uikit.rb +11 -22
  54. data/lib/pagy/frontend.rb +3 -1
  55. metadata +5 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ef235bc480391503c4c4c9c0af67f8bf10f62aad86270fc0ae67e1bdd76a0044
4
- data.tar.gz: 18c74230a1e88d4875340b4bff63c181fb95998e63ebf83aac51016e5d16bb68
3
+ metadata.gz: e74b8c735813ad07410c45184e0f8ff345ba104ff3f0bdd75a763a137a63aa53
4
+ data.tar.gz: b9fc3f608fadcc6be76c1374bded0963a0b45b322321001d8b371148e537e4cd
5
5
  SHA512:
6
- metadata.gz: add32ab56092596d562d5e90abfeb87a4c66eb2e4c1f0d3b923e0ffc53c20b03a4edba020ebb8a15efd5e089a9d59b059d0bc4f6496c8836eaa5908e4bb2de68
7
- data.tar.gz: 268a59ed232635bcf2e41140380b2751bec2bb1ddba2a388ff095f5d8aceda6b455474f46cf069569a83f544c7c983358e9723bdd14c0160ae1b08ba3197be9b
6
+ metadata.gz: d68129e5f7134cfde1dff25ab00350bf6458f3270e64f154fd621a7cdad946628d3ff1a6dc4af267aab9605162ba1e725ed902fa62a74adc6e2ced3348ed8497
7
+ data.tar.gz: 33f1f3fba27c3c4e78cfd52649f82aa430e5d5236eb8cf3e9e300a3dc45b8ada546a1a535ceaf4ae65e9f8693ae61d15dad94582a10bdc9643b8d9e3fc76da85
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.6.0)
3
+ # Pagy initializer file (4.9.0)
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.6.0'
5
+ Pagy.version = '4.9.0'
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: "<label>Страница %{page_input}</label> от %{pages}"
20
+ combo_nav_js: "<label>Страница %{page_input} от %{pages}</label>"
21
21
 
22
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: "<label>Stranica %{page_input}</label> od %{pages}"
22
+ combo_nav_js: "<label>Stranica %{page_input} od %{pages}</label>"
23
23
 
24
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: "<label>Pàgina %{page_input}</label> de %{pages}"
20
+ combo_nav_js: "<label>Pàgina %{page_input} de %{pages}</label>"
21
21
 
22
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: "<label>Strana %{page_input}</label> z %{pages}"
20
+ combo_nav_js: "<label>Strana %{page_input} z %{pages}</label>"
21
21
 
22
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: "<label>Side %{page_input}</label> of %{pages}"
20
+ combo_nav_js: "<label>Side %{page_input} of %{pages}</label>"
21
21
 
22
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: "<label>Seite %{page_input}</label> von %{pages}"
20
+ combo_nav_js: "<label>Seite %{page_input} von %{pages}</label>"
21
21
 
22
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: "<label>Page %{page_input}</label> of %{pages}"
20
+ combo_nav_js: "<label>Page %{page_input} of %{pages}</label>"
21
21
 
22
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: "<label>Página %{page_input}</label> de %{pages}"
20
+ combo_nav_js: "<label>Página %{page_input} de %{pages}</label>"
21
21
 
22
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: "<label>Page %{page_input}</label> sur %{pages}"
20
+ combo_nav_js: "<label>Page %{page_input} sur %{pages}</label>"
21
21
 
22
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: "<label>Stranica %{page_input}</label> od %{pages}"
22
+ combo_nav_js: "<label>Stranica %{page_input} od %{pages}</label>"
23
23
 
24
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: "<label>Halaman %{page_input}</label> dari %{pages}"
18
+ combo_nav_js: "<label>Halaman %{page_input} dari %{pages}</label>"
19
19
 
20
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: "<label>Pagina %{page_input}</label> di %{pages}"
20
+ combo_nav_js: "<label>Pagina %{page_input} di %{pages}</label>"
21
21
 
22
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: "<label>%{page_input}</label> / %{pages} ページ"
18
+ combo_nav_js: "<label>%{page_input} / %{pages} ページ</label>"
19
19
 
20
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: "<label>ទំព័រ %{page_input}</label> នៃ %{pages}"
17
+ combo_nav_js: "<label>ទំព័រ %{page_input} នៃ %{pages}</label>"
18
18
 
19
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: "<label>총 %{pages} 중 %{page_input}</label> 페이지"
18
+ combo_nav_js: "<label>총 %{pages} 중 %{page_input} 페이지</label>"
19
19
 
20
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: "<label>Side %{page_input}</label> av %{pages}"
20
+ combo_nav_js: "<label>Side %{page_input} av %{pages}</label>"
21
21
 
22
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: "<label>Pagina %{page_input}</label> van %{pages}"
20
+ combo_nav_js: "<label>Pagina %{page_input} van %{pages}</label>"
21
21
 
22
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: "<label>Strona %{page_input}</label> z %{pages}"
22
+ combo_nav_js: "<label>Strona %{page_input} z %{pages}</label>"
23
23
 
24
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: "<label>Página %{page_input}</label> de %{pages}"
20
+ combo_nav_js: "<label>Página %{page_input} de %{pages}</label>"
21
21
 
22
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: "<label>Página %{page_input}</label> de %{pages}"
20
+ combo_nav_js: "<label>Página %{page_input} de %{pages}</label>"
21
21
 
22
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: "<label>Страница %{page_input}</label> из %{pages}"
22
+ combo_nav_js: "<label>Страница %{page_input} из %{pages}</label>"
23
23
 
24
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: "<label>Страниca %{page_input}</label> од %{pages}"
21
+ combo_nav_js: "<label>Страниca %{page_input} од %{pages}</label>"
22
22
 
23
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: "<label>Sida %{page_input}</label> av %{pages}"
21
+ combo_nav_js: "<label>Sida %{page_input} av %{pages}</label>"
22
22
 
23
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: "<label>Sida %{page_input}</label> av %{pages}"
21
+ combo_nav_js: "<label>Sida %{page_input} av %{pages}</label>"
22
22
 
23
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: "<label>Kurasa %{page_input}</label> ya %{pages}"
20
+ combo_nav_js: "<label>Kurasa %{page_input} ya %{pages}</label>"
21
21
 
22
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: "<label>Sayfa %{page_input}</label> / %{pages}"
18
+ combo_nav_js: "<label>Sayfa %{page_input} / %{pages}</label>"
19
19
 
20
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: "<label>第 %{page_input}</label> / %{pages} "
18
+ combo_nav_js: "<label>第 %{page_input} / %{pages} 页</label>"
19
19
 
20
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: "<label>第 %{page_input}</label> / %{pages} "
18
+ combo_nav_js: "<label>第 %{page_input} / %{pages} 頁</label>"
19
19
 
20
20
  items_selector_js: "<label>每頁顯示 %{items_input} 記錄</label>"
@@ -15,6 +15,6 @@ zh-TW:
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: "<label>第 %{page_input}</label> / %{pages} "
18
+ combo_nav_js: "<label>第 %{page_input} / %{pages} 頁</label>"
19
19
 
20
- items_selector_js: "<label>每頁顯示 %{items_input} 項%{item_name}"
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.6.0'
8
+ VERSION = '4.9.0'
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
@@ -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" 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" 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
@@ -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" 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" 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>)
@@ -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" 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,7 +47,9 @@ 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" 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
54
  link.call p_prev, pagy_t('pagy.nav.prev'), 'style="margin-bottom: 0" aria-label="previous" class="prev button primary"'
54
55
  else
@@ -60,9 +61,7 @@ class Pagy
60
61
  else
61
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: 0">#{
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
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Pagy
4
+
5
+ VARS[:meilisearch_search_method] ||= :pagy_search
6
+
7
+ module Meilisearch
8
+ # returns an array used to delay the call of #search
9
+ # after the pagination variables are merged to the options
10
+ def pagy_meilisearch(term = nil, **vars)
11
+ [self, term, vars]
12
+ end
13
+ alias_method VARS[:meilisearch_search_method], :pagy_meilisearch
14
+ end
15
+
16
+ # create a Pagy object from a Meilisearch results
17
+ def self.new_from_meilisearch(results, vars={})
18
+ vars[:items] = results.raw_answer[:limit]
19
+ vars[:page] = [results.raw_answer[:offset] / vars[:items], 1].max
20
+ vars[:count] = results.raw_answer[:nbHits]
21
+ new(vars)
22
+ end
23
+
24
+ # Add specialized backend methods to paginate Meilisearch results
25
+ module Backend
26
+ private
27
+
28
+ # Return Pagy object and results
29
+ def pagy_meilisearch(pagy_search_args, vars = {})
30
+ model, term, options = pagy_search_args
31
+ vars = pagy_meilisearch_get_vars(nil, vars)
32
+ options[:limit] = vars[:items]
33
+ options[:offset] = (vars[:page] - 1) * vars[:items]
34
+ results = model.search(term, **options)
35
+ vars[:count] = results.raw_answer[:nbHits]
36
+
37
+ pagy = Pagy.new(vars)
38
+ # with :last_page overflow we need to re-run the method in order to get the hits
39
+ return pagy_meilisearch(pagy_search_args, vars.merge(page: pagy.page)) \
40
+ if defined?(Pagy::UseOverflowExtra) && pagy.overflow? && pagy.vars[:overflow] == :last_page
41
+
42
+ [ pagy, results ]
43
+ end
44
+
45
+ # Sub-method called only by #pagy_meilisearch: here for easy customization of variables by overriding
46
+ # the _collection argument is not available when the method is called
47
+ def pagy_meilisearch_get_vars(_collection, vars)
48
+ pagy_set_items_from_params(vars) if defined?(UseItemsExtra)
49
+ vars[:items] ||= VARS[:items]
50
+ vars[:page] ||= (params[ vars[:page_param] || VARS[:page_param] ] || 1).to_i
51
+ vars
52
+ end
53
+
54
+ end
55
+ end
@@ -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" 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" 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
@@ -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"></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">#{
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
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.6.0
4
+ version: 4.9.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: 2021-05-09 00:00:00.000000000 Z
11
+ date: 2021-06-19 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
@@ -71,6 +72,7 @@ files:
71
72
  - lib/pagy/extras/i18n.rb
72
73
  - lib/pagy/extras/items.rb
73
74
  - lib/pagy/extras/materialize.rb
75
+ - lib/pagy/extras/meilisearch.rb
74
76
  - lib/pagy/extras/metadata.rb
75
77
  - lib/pagy/extras/navs.rb
76
78
  - lib/pagy/extras/overflow.rb
@@ -109,7 +111,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
109
111
  requirements:
110
112
  - - ">="
111
113
  - !ruby/object:Gem::Version
112
- version: '3.0'
114
+ version: '2.5'
113
115
  required_rubygems_version: !ruby/object:Gem::Requirement
114
116
  requirements:
115
117
  - - ">="