pagy 7.0.11 → 8.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (104) hide show
  1. checksums.yaml +4 -4
  2. data/gem/apps/calendar.ru +2196 -0
  3. data/gem/apps/demo.ru +452 -0
  4. data/gem/apps/rails.ru +205 -0
  5. data/gem/apps/repro.ru +168 -0
  6. data/gem/bin/pagy +83 -0
  7. data/{lib → gem}/config/pagy.rb +6 -17
  8. data/{lib → gem}/javascripts/pagy-dev.js +10 -10
  9. data/{lib → gem}/javascripts/pagy-module.js +9 -9
  10. data/gem/javascripts/pagy.js +1 -0
  11. data/gem/lib/optimist.rb +1022 -0
  12. data/gem/lib/pagy/extras/bootstrap.rb +97 -0
  13. data/gem/lib/pagy/extras/bulma.rb +89 -0
  14. data/gem/lib/pagy/extras/foundation.rb +93 -0
  15. data/{lib → gem/lib}/pagy/extras/items.rb +21 -18
  16. data/{lib/pagy/extras/frontend_helpers.rb → gem/lib/pagy/extras/js_tools.rb} +1 -1
  17. data/gem/lib/pagy/extras/materialize.rb +97 -0
  18. data/gem/lib/pagy/extras/pagy.rb +82 -0
  19. data/gem/lib/pagy/extras/semantic.rb +91 -0
  20. data/gem/lib/pagy/extras/trim.rb +29 -0
  21. data/gem/lib/pagy/extras/uikit.rb +96 -0
  22. data/gem/lib/pagy/frontend.rb +97 -0
  23. data/{lib → gem/lib}/pagy/url_helpers.rb +1 -2
  24. data/{lib → gem/lib}/pagy.rb +12 -11
  25. data/{lib → gem}/locales/ar.yml +2 -2
  26. data/{lib → gem}/locales/be.yml +4 -4
  27. data/{lib → gem}/locales/bg.yml +4 -4
  28. data/{lib → gem}/locales/bs.yml +4 -4
  29. data/{lib → gem}/locales/ca.yml +4 -4
  30. data/gem/locales/ckb.yml +18 -0
  31. data/{lib → gem}/locales/cs.yml +4 -4
  32. data/{lib → gem}/locales/da.yml +4 -4
  33. data/{lib → gem}/locales/de.yml +4 -4
  34. data/{lib → gem}/locales/en.yml +4 -4
  35. data/{lib → gem}/locales/es.yml +2 -2
  36. data/{lib → gem}/locales/fr.yml +4 -4
  37. data/{lib → gem}/locales/hr.yml +4 -4
  38. data/{lib → gem}/locales/id.yml +4 -4
  39. data/{lib → gem}/locales/it.yml +4 -4
  40. data/{lib → gem}/locales/ja.yml +4 -4
  41. data/{lib → gem}/locales/km.yml +4 -4
  42. data/{lib → gem}/locales/ko.yml +4 -4
  43. data/{lib → gem}/locales/nb.yml +4 -4
  44. data/{lib → gem}/locales/nl.yml +4 -4
  45. data/{lib → gem}/locales/nn.yml +4 -4
  46. data/{lib → gem}/locales/pl.yml +4 -4
  47. data/{lib → gem}/locales/pt-BR.yml +2 -2
  48. data/{lib → gem}/locales/pt.yml +2 -2
  49. data/{lib → gem}/locales/ru.yml +4 -4
  50. data/{lib → gem}/locales/sr.yml +4 -4
  51. data/{lib → gem}/locales/sv-SE.yml +4 -4
  52. data/{lib → gem}/locales/sv.yml +4 -4
  53. data/{lib → gem}/locales/sw.yml +4 -4
  54. data/{lib → gem}/locales/ta.yml +4 -4
  55. data/{lib → gem}/locales/tr.yml +4 -4
  56. data/{lib → gem}/locales/uk.yml +4 -4
  57. data/{lib → gem}/locales/vi.yml +4 -4
  58. data/{lib → gem}/locales/zh-CN.yml +4 -4
  59. data/{lib → gem}/locales/zh-HK.yml +4 -4
  60. data/{lib → gem}/locales/zh-TW.yml +4 -4
  61. data/{lib → gem}/stylesheets/pagy.css +19 -34
  62. data/{lib → gem}/stylesheets/pagy.scss +17 -19
  63. data/gem/stylesheets/pagy.tailwind.css +21 -0
  64. metadata +103 -90
  65. data/lib/javascripts/pagy.js +0 -1
  66. data/lib/locales/ckb.yml +0 -18
  67. data/lib/pagy/extras/bootstrap.rb +0 -108
  68. data/lib/pagy/extras/bulma.rb +0 -105
  69. data/lib/pagy/extras/foundation.rb +0 -105
  70. data/lib/pagy/extras/materialize.rb +0 -96
  71. data/lib/pagy/extras/navs.rb +0 -51
  72. data/lib/pagy/extras/semantic.rb +0 -95
  73. data/lib/pagy/extras/support.rb +0 -40
  74. data/lib/pagy/extras/trim.rb +0 -29
  75. data/lib/pagy/extras/uikit.rb +0 -97
  76. data/lib/pagy/frontend.rb +0 -114
  77. data/lib/stylesheets/pagy.tailwind.scss +0 -24
  78. /data/{lib → gem}/javascripts/pagy-module.d.ts +0 -0
  79. /data/{lib → gem/lib}/pagy/backend.rb +0 -0
  80. /data/{lib → gem/lib}/pagy/calendar/day.rb +0 -0
  81. /data/{lib → gem/lib}/pagy/calendar/helper.rb +0 -0
  82. /data/{lib → gem/lib}/pagy/calendar/month.rb +0 -0
  83. /data/{lib → gem/lib}/pagy/calendar/quarter.rb +0 -0
  84. /data/{lib → gem/lib}/pagy/calendar/week.rb +0 -0
  85. /data/{lib → gem/lib}/pagy/calendar/year.rb +0 -0
  86. /data/{lib → gem/lib}/pagy/calendar.rb +0 -0
  87. /data/{lib → gem/lib}/pagy/console.rb +0 -0
  88. /data/{lib → gem/lib}/pagy/countless.rb +0 -0
  89. /data/{lib → gem/lib}/pagy/exceptions.rb +0 -0
  90. /data/{lib → gem/lib}/pagy/extras/arel.rb +0 -0
  91. /data/{lib → gem/lib}/pagy/extras/array.rb +0 -0
  92. /data/{lib → gem/lib}/pagy/extras/calendar.rb +0 -0
  93. /data/{lib → gem/lib}/pagy/extras/countless.rb +0 -0
  94. /data/{lib → gem/lib}/pagy/extras/elasticsearch_rails.rb +0 -0
  95. /data/{lib → gem/lib}/pagy/extras/gearbox.rb +0 -0
  96. /data/{lib → gem/lib}/pagy/extras/headers.rb +0 -0
  97. /data/{lib → gem/lib}/pagy/extras/i18n.rb +0 -0
  98. /data/{lib → gem/lib}/pagy/extras/jsonapi.rb +0 -0
  99. /data/{lib → gem/lib}/pagy/extras/meilisearch.rb +0 -0
  100. /data/{lib → gem/lib}/pagy/extras/metadata.rb +0 -0
  101. /data/{lib → gem/lib}/pagy/extras/overflow.rb +0 -0
  102. /data/{lib → gem/lib}/pagy/extras/searchkick.rb +0 -0
  103. /data/{lib → gem/lib}/pagy/extras/standalone.rb +0 -0
  104. /data/{lib → gem/lib}/pagy/i18n.rb +0 -0
data/lib/pagy/frontend.rb DELETED
@@ -1,114 +0,0 @@
1
- # See Pagy::Frontend API documentation: https://ddnexus.github.io/pagy/docs/api/frontend
2
- # frozen_string_literal: true
3
-
4
- require 'pagy/url_helpers'
5
- require 'pagy/i18n'
6
-
7
- class Pagy
8
- # Used for search and replace, hardcoded also in the pagy.js file
9
- PAGE_TOKEN = '__pagy_page__'
10
- LABEL_TOKEN = '__pagy_label__'
11
-
12
- # Frontend modules are specially optimized for performance.
13
- # The resulting code may not look very elegant, but produces the best benchmarks
14
- module Frontend
15
- include UrlHelpers
16
-
17
- # Generic pagination: it returns the html with the series of links to the pages
18
- def pagy_nav(pagy, pagy_id: nil, link_extra: '',
19
- nav_aria_label: nil, nav_i18n_key: nil, **vars)
20
- p_id = %( id="#{pagy_id}") if pagy_id
21
- link = pagy_link_proc(pagy, link_extra:)
22
-
23
- html = +%(<nav#{p_id} class="pagy pagy-nav pagination" #{nav_aria_label_attr(pagy, nav_aria_label, nav_i18n_key)}>)
24
- html << prev_html(pagy, link)
25
- pagy.series(**vars).each do |item| # series example: [1, :gap, 7, 8, "9", 10, 11, :gap, 36]
26
- html << case item
27
- when Integer
28
- %(<span class="page">#{link.call(item)}</span>)
29
- when String
30
- %(<span class="page active">) +
31
- %(<a role="link" aria-disabled="true" aria-current="page">#{pagy.label_for(item)}</a></span>)
32
- when :gap
33
- %(<span class="page gap">#{pagy_t('pagy.gap')}</span>)
34
- else
35
- raise InternalError, "expected item types in series to be Integer, String or :gap; got #{item.inspect}"
36
- end
37
- end
38
- html << %(#{next_html(pagy, link)}</nav>)
39
- end
40
-
41
- # Return examples: "Displaying items 41-60 of 324 in total" or "Displaying Products 41-60 of 324 in total"
42
- def pagy_info(pagy, pagy_id: nil, item_name: nil, item_i18n_key: nil)
43
- p_id = %( id="#{pagy_id}") if pagy_id
44
- p_count = pagy.count
45
- key = if p_count.zero? then 'pagy.info.no_items'
46
- elsif pagy.pages == 1 then 'pagy.info.single_page'
47
- else 'pagy.info.multiple_pages' # rubocop:disable Lint/ElseLayout
48
- end
49
-
50
- %(<span#{p_id} class="pagy-info">#{
51
- pagy_t key, item_name: item_name || pagy_t(item_i18n_key || pagy.vars[:item_i18n_key], count: p_count),
52
- count: p_count, from: pagy.from, to: pagy.to
53
- }</span>)
54
- end
55
-
56
- # Return a performance optimized lambda to generate the HTML links
57
- # Benchmarked on a 20 link nav: it is ~22x faster and uses ~18x less memory than rails' link_to
58
- def pagy_link_proc(pagy, link_extra: '')
59
- p_prev = pagy.prev
60
- p_next = pagy.next
61
- p_page = pagy.page.to_s
62
- left, right = %(<a href="#{pagy_url_for(pagy, PAGE_TOKEN)}" #{
63
- pagy.vars[:link_extra]} #{link_extra}).split(PAGE_TOKEN, 2)
64
- # lambda used by all the helpers
65
- lambda do |page, text = pagy.label_for(page), extra_attrs = ''|
66
- %(#{left}#{page}#{right}#{ case page
67
- when p_prev then ' rel="prev"'
68
- when p_next then ' rel="next"'
69
- when p_page then ' aria-disabled="true" aria-current="page"'
70
- else ''
71
- end } #{extra_attrs}>#{text}</a>)
72
- end
73
- end
74
-
75
- # Similar to I18n.t: just ~18x faster using ~10x less memory
76
- # (@pagy_locale explicitly initialized in order to avoid warning)
77
- def pagy_t(key, opts = {})
78
- Pagy::I18n.translate(@pagy_locale ||= nil, key, opts)
79
- end
80
-
81
- private
82
-
83
- def nav_aria_label_attr(pagy, nav_aria_label, nav_i18n_key, count: pagy.pages)
84
- nav_aria_label ||= pagy_t(nav_i18n_key || pagy.vars[:nav_i18n_key], count:)
85
- %(aria-label="#{nav_aria_label}")
86
- end
87
-
88
- def prev_aria_label_attr
89
- %(aria-label="#{pagy_t('pagy.aria_label.prev')}")
90
- end
91
-
92
- def next_aria_label_attr
93
- %(aria-label="#{pagy_t('pagy.aria_label.next')}")
94
- end
95
-
96
- def prev_html(pagy, link, text: pagy_t('pagy.prev'))
97
- if (p_prev = pagy.prev)
98
- %(<span class="page prev">#{link.call(p_prev, text, prev_aria_label_attr)}</span>)
99
- else
100
- %(<span class="page prev disabled"><a role="link" aria-disabled="true" #{
101
- prev_aria_label_attr}>#{text}</a></span>)
102
- end
103
- end
104
-
105
- def next_html(pagy, link, text: pagy_t('pagy.next'))
106
- if (p_next = pagy.next)
107
- %(<span class="page next">#{link.call(p_next, text, next_aria_label_attr)}</span>)
108
- else
109
- %(<span class="page next disabled"><a role="link" aria-disabled="true" #{
110
- next_aria_label_attr}>#{text}</a></span>)
111
- end
112
- end
113
- end
114
- end
@@ -1,24 +0,0 @@
1
- .pagy {
2
- @apply flex space-x-1 font-semibold text-sm text-gray-500;
3
- .page {
4
- a {
5
- @apply block rounded-lg px-3 py-1 bg-gray-200;
6
- &:hover {
7
- @apply bg-gray-300;
8
- }
9
- }
10
- &.active a {
11
- @apply text-white bg-gray-400 cursor-default;
12
- }
13
- &.disabled a {
14
- @apply text-gray-300 bg-gray-100 cursor-default;
15
- }
16
- &.gap { } /* if you need to customize it */
17
- }
18
- .pagy-combo-input, &.pagy-items-selector-js {
19
- @apply inline-block whitespace-nowrap bg-gray-200 rounded-lg px-3 py-0.5;
20
- input {
21
- @apply bg-gray-100 border-none rounded-md;
22
- }
23
- }
24
- }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes