pagy 8.6.3 → 9.3.4

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 (106) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +1 -1
  3. data/apps/calendar.ru +119 -127
  4. data/apps/demo.ru +274 -260
  5. data/apps/index.rb +7 -0
  6. data/apps/keyset_ar.ru +227 -0
  7. data/apps/keyset_s.ru +219 -0
  8. data/apps/rails.ru +25 -20
  9. data/apps/repro.ru +108 -103
  10. data/bin/pagy +18 -20
  11. data/config/pagy.rb +19 -15
  12. data/javascripts/pagy.min.js +2 -2
  13. data/javascripts/pagy.min.js.map +3 -3
  14. data/javascripts/pagy.mjs +2 -2
  15. data/lib/pagy/b64.rb +33 -0
  16. data/lib/pagy/backend.rb +20 -20
  17. data/lib/pagy/calendar/day.rb +2 -2
  18. data/lib/pagy/calendar/month.rb +2 -2
  19. data/lib/pagy/calendar/quarter.rb +2 -2
  20. data/lib/pagy/calendar/unit.rb +7 -10
  21. data/lib/pagy/calendar/week.rb +2 -2
  22. data/lib/pagy/calendar/year.rb +2 -2
  23. data/lib/pagy/calendar.rb +15 -13
  24. data/lib/pagy/countless.rb +10 -14
  25. data/lib/pagy/extras/arel.rb +3 -11
  26. data/lib/pagy/extras/array.rb +5 -10
  27. data/lib/pagy/extras/bootstrap.rb +5 -5
  28. data/lib/pagy/extras/bulma.rb +10 -7
  29. data/lib/pagy/extras/calendar.rb +13 -17
  30. data/lib/pagy/extras/countless.rb +8 -13
  31. data/lib/pagy/extras/elasticsearch_rails.rb +16 -25
  32. data/lib/pagy/extras/gearbox.rb +18 -18
  33. data/lib/pagy/extras/headers.rb +25 -24
  34. data/lib/pagy/extras/i18n.rb +1 -1
  35. data/lib/pagy/extras/js_tools.rb +6 -6
  36. data/lib/pagy/extras/jsonapi.rb +30 -21
  37. data/lib/pagy/extras/keyset.rb +30 -0
  38. data/lib/pagy/extras/limit.rb +63 -0
  39. data/lib/pagy/extras/meilisearch.rb +9 -17
  40. data/lib/pagy/extras/metadata.rb +3 -3
  41. data/lib/pagy/extras/overflow.rb +9 -9
  42. data/lib/pagy/extras/pagy.rb +16 -16
  43. data/lib/pagy/extras/searchkick.rb +9 -17
  44. data/lib/pagy/extras/size.rb +1 -1
  45. data/lib/pagy/extras/standalone.rb +6 -6
  46. data/lib/pagy/extras/trim.rb +3 -3
  47. data/lib/pagy/frontend.rb +32 -33
  48. data/lib/pagy/i18n.rb +3 -2
  49. data/lib/pagy/keyset/active_record.rb +38 -0
  50. data/lib/pagy/keyset/sequel.rb +51 -0
  51. data/lib/pagy/keyset.rb +118 -0
  52. data/lib/pagy/shared_methods.rb +26 -0
  53. data/lib/pagy/url_helpers.rb +5 -5
  54. data/lib/pagy.rb +53 -67
  55. data/locales/ar.yml +1 -1
  56. data/locales/be.yml +1 -1
  57. data/locales/bg.yml +1 -1
  58. data/locales/bs.yml +1 -1
  59. data/locales/ca.yml +1 -1
  60. data/locales/ckb.yml +1 -1
  61. data/locales/cs.yml +1 -1
  62. data/locales/da.yml +1 -1
  63. data/locales/de.yml +1 -1
  64. data/locales/dz.yml +17 -0
  65. data/locales/en.yml +1 -1
  66. data/locales/es.yml +1 -1
  67. data/locales/fr.yml +1 -1
  68. data/locales/hr.yml +1 -1
  69. data/locales/id.yml +1 -1
  70. data/locales/it.yml +1 -1
  71. data/locales/ja.yml +1 -1
  72. data/locales/km.yml +1 -1
  73. data/locales/ko.yml +1 -1
  74. data/locales/nb.yml +1 -1
  75. data/locales/nl.yml +1 -1
  76. data/locales/nn.yml +1 -1
  77. data/locales/pl.yml +1 -1
  78. data/locales/pt-BR.yml +1 -1
  79. data/locales/pt.yml +1 -1
  80. data/locales/ru.yml +1 -1
  81. data/locales/sr.yml +1 -1
  82. data/locales/sv-SE.yml +1 -1
  83. data/locales/sv.yml +1 -1
  84. data/locales/sw.yml +3 -1
  85. data/locales/ta.yml +3 -1
  86. data/locales/tr.yml +1 -1
  87. data/locales/uk.yml +1 -1
  88. data/locales/vi.yml +1 -1
  89. data/locales/zh-CN.yml +7 -9
  90. data/locales/zh-HK.yml +7 -9
  91. data/locales/zh-TW.yml +7 -9
  92. metadata +14 -27
  93. data/apps/tmp/calendar.sqlite3 +0 -0
  94. data/apps/tmp/calendar.sqlite3-shm +0 -0
  95. data/apps/tmp/calendar.sqlite3-wal +0 -0
  96. data/apps/tmp/local_secret.txt +0 -1
  97. data/apps/tmp/pagy-keyset.sqlite3 +0 -0
  98. data/apps/tmp/pagy-keyset.sqlite3-shm +0 -0
  99. data/apps/tmp/pagy-keyset.sqlite3-wal +0 -0
  100. data/javascripts/pagy-module.js +0 -100
  101. data/javascripts/pagy.js +0 -4
  102. data/lib/pagy/extras/foundation.rb +0 -95
  103. data/lib/pagy/extras/items.rb +0 -64
  104. data/lib/pagy/extras/materialize.rb +0 -100
  105. data/lib/pagy/extras/semantic.rb +0 -94
  106. data/lib/pagy/extras/uikit.rb +0 -98
data/apps/keyset_ar.ru ADDED
@@ -0,0 +1,227 @@
1
+ # frozen_string_literal: true
2
+
3
+ # DESCRIPTION
4
+ # Showcase the keyset ActiveRecord pagination
5
+ #
6
+ # DOC
7
+ # https://ddnexus.github.io/pagy/playground/#5-keyset-apps
8
+ #
9
+ # BIN HELP
10
+ # bundle exec pagy -h
11
+ #
12
+ # DEV USAGE
13
+ # bundle exec pagy clone keyset_ar
14
+ # bundle exec pagy ./keyset_ar.ru
15
+ #
16
+ # URL
17
+ # http://0.0.0.0:8000
18
+
19
+ VERSION = '9.3.4'
20
+
21
+ # Bundle
22
+ require 'bundler/inline'
23
+ require 'bundler'
24
+ Bundler.configure
25
+ gemfile(ENV['PAGY_INSTALL_BUNDLE'] == 'true') do
26
+ source 'https://rubygems.org'
27
+ gem 'activerecord'
28
+ gem 'puma'
29
+ gem 'sinatra'
30
+ gem 'sqlite3'
31
+ end
32
+
33
+ # Pagy initializer
34
+ require 'pagy/extras/limit'
35
+ require 'pagy/extras/keyset'
36
+ require 'pagy/extras/pagy'
37
+ Pagy::DEFAULT[:limit] = 10
38
+ Pagy::DEFAULT.freeze
39
+
40
+ # Sinatra setup
41
+ require 'sinatra/base'
42
+ # Sinatra application
43
+ class PagyKeyset < Sinatra::Base
44
+ include Pagy::Backend
45
+ # Root route/action
46
+ get '/' do
47
+ Time.zone = 'UTC'
48
+
49
+ @order = { animal: :asc, name: :asc, birthdate: :desc, id: :asc }
50
+ @pagy, @pets = pagy_keyset(Pet.order(@order))
51
+ erb :main
52
+ end
53
+
54
+ helpers do
55
+ include Pagy::Frontend
56
+
57
+ def order_symbol(dir)
58
+ { asc: '&#x2197;', desc: '&#x2198;' }[dir]
59
+ end
60
+ end
61
+
62
+ # Views
63
+ template :layout do
64
+ <<~ERB
65
+ <!DOCTYPE html>
66
+ <html lang="en">
67
+ <html>
68
+ <head>
69
+ <title>Pagy Keyset App</title>
70
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
71
+ <style type="text/css">
72
+ @media screen { html, body {
73
+ font-size: 1rem;
74
+ line-height: 1.2s;
75
+ padding: 0;
76
+ margin: 0;
77
+ } }
78
+ body {
79
+ background: white !important;
80
+ margin: 0 !important;
81
+ font-family: sans-serif !important;
82
+ }
83
+ .content {
84
+ padding: 1rem 1.5rem 2rem !important;
85
+ }
86
+
87
+ <%= Pagy.root.join('stylesheets', 'pagy.css').read %>
88
+ </style>
89
+ </head>
90
+ <body>
91
+ <%= yield %>
92
+ </body>
93
+ </html>
94
+ ERB
95
+ end
96
+
97
+ template :main do
98
+ <<~ERB
99
+ <div class="content">
100
+ <h1>Pagy Keyset App</h1>
101
+ <p>Self-contained, standalone app usable to easily reproduce any keyset related pagy issue with ActiveRecord sets.</p>
102
+ <p>Please, report the following versions in any new issue.</p>
103
+ <h2>Versions</h2>
104
+ <ul>
105
+ <li>Ruby: <%= RUBY_VERSION %></li>
106
+ <li>Rack: <%= Rack::RELEASE %></li>
107
+ <li>Sinatra: <%= Sinatra::VERSION %></li>
108
+ <li>Pagy: <%= Pagy::VERSION %></li>
109
+ </ul>
110
+
111
+ <h3>Collection</h3>
112
+ <div id="records" class="collection">
113
+ <table border="1" cellspacing="0" cellpadding="3">
114
+ <tr>
115
+ <th>animal <%= order_symbol(@order[:animal]) %></th>
116
+ <th>name <%= order_symbol(@order[:name]) %></th>
117
+ <th>birthdate <%= order_symbol(@order[:birthdate]) %></th>
118
+ <th>id <%= order_symbol(@order[:id]) %></th>
119
+ </tr>
120
+ <% @pets.each do |pet| %>
121
+ <tr>
122
+ <td><%= pet.animal %></td>
123
+ <td><%= pet.name %></td>
124
+ <td><%= pet.birthdate %></td>
125
+ <td><%= pet.id %></td>
126
+ </tr>
127
+ <% end %>
128
+ </table>
129
+ </div>
130
+ <p>
131
+ <nav class="pagy" id="next" aria-label="Pagy next">
132
+ <%= pagy_next_a(@pagy, text: 'Next page &gt;') %>
133
+ </nav>
134
+ </div>
135
+ ERB
136
+ end
137
+ end
138
+
139
+ # ActiveRecord setup
140
+ require 'active_record'
141
+
142
+ # Match the microsecods with the strings stored into the time columns of SQLite
143
+ # ActiveSupport::JSON::Encoding.time_precision = 6
144
+
145
+ # Log
146
+ output = ENV['APP_ENV'].equal?('showcase') ? IO::NULL : $stdout
147
+ ActiveRecord::Base.logger = Logger.new(output)
148
+ # SQLite DB files
149
+ dir = ENV['APP_ENV'].equal?('development') ? '.' : Dir.pwd # app dir in dev or pwd otherwise
150
+ abort "ERROR: Cannot create DB files: the directory #{dir.inspect} is not writable." \
151
+ unless File.writable?(dir)
152
+ # Connection
153
+ ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: "#{dir}/tmp/pagy-keyset-ar.sqlite3")
154
+ # Schema
155
+ ActiveRecord::Schema.define do
156
+ create_table :pets, force: true do |t|
157
+ t.string :animal
158
+ t.string :name
159
+ t.date :birthdate
160
+ end
161
+ end
162
+
163
+ # Models
164
+ class Pet < ActiveRecord::Base; end
165
+
166
+ data = <<~DATA
167
+ Luna | dog | 2018-03-10
168
+ Coco | cat | 2019-05-15
169
+ Dodo | dog | 2020-06-25
170
+ Wiki | bird | 2018-03-12
171
+ Baby | rabbit | 2020-01-13
172
+ Neki | horse | 2021-07-20
173
+ Tino | donkey | 2019-06-18
174
+ Plot | cat | 2022-09-21
175
+ Riki | cat | 2018-09-14
176
+ Susi | horse | 2018-10-26
177
+ Coco | pig | 2020-08-29
178
+ Momo | bird | 2023-08-25
179
+ Lili | cat | 2021-07-22
180
+ Beli | pig | 2020-07-26
181
+ Rocky | bird | 2022-08-19
182
+ Vyvy | dog | 2018-05-16
183
+ Susi | horse | 2024-01-25
184
+ Ella | cat | 2020-02-20
185
+ Rocky | dog | 2019-09-19
186
+ Juni | rabbit | 2020-08-24
187
+ Coco | bird | 2021-03-17
188
+ Susi | dog | 2021-07-28
189
+ Luna | horse | 2023-05-14
190
+ Gigi | pig | 2022-05-19
191
+ Coco | cat | 2020-02-20
192
+ Nino | donkey | 2019-06-17
193
+ Luna | cat | 2022-02-09
194
+ Popi | dog | 2020-09-26
195
+ Lili | pig | 2022-06-18
196
+ Mina | horse | 2021-04-21
197
+ Susi | rabbit | 2023-05-18
198
+ Toni | donkey | 2018-06-22
199
+ Rocky | horse | 2019-09-28
200
+ Lili | cat | 2019-03-18
201
+ Roby | cat | 2022-06-19
202
+ Anto | horse | 2022-08-18
203
+ Susi | pig | 2021-04-21
204
+ Boly | bird | 2020-03-29
205
+ Sky | cat | 2023-07-19
206
+ Lili | dog | 2020-01-28
207
+ Fami | snake | 2023-04-27
208
+ Lopi | pig | 2019-06-19
209
+ Rocky | snake | 2022-03-13
210
+ Denis | dog | 2022-06-19
211
+ Maca | cat | 2022-06-19
212
+ Luna | dog | 2022-08-15
213
+ Jeme | horse | 2019-08-08
214
+ Sary | bird | 2023-04-29
215
+ Rocky | bird | 2023-05-14
216
+ Coco | dog | 2023-05-27
217
+ DATA
218
+
219
+ # DB seed
220
+ pets = []
221
+ data.each_line(chomp: true) do |pet|
222
+ name, animal, birthdate = pet.split('|').map(&:strip)
223
+ pets << { name:, animal:, birthdate: }
224
+ end
225
+ Pet.insert_all(pets)
226
+
227
+ run PagyKeyset
data/apps/keyset_s.ru ADDED
@@ -0,0 +1,219 @@
1
+ # frozen_string_literal: true
2
+
3
+ # DESCRIPTION
4
+ # Showcase the keyset ActiveRecord pagination
5
+ #
6
+ # DOC
7
+ # https://ddnexus.github.io/pagy/playground/#5-keyset-apps
8
+ #
9
+ # BIN HELP
10
+ # bundle exec pagy -h
11
+ #
12
+ # DEV USAGE
13
+ # bundle exec pagy clone keyset_ar
14
+ # bundle exec pagy ./keyset_ar.ru
15
+ #
16
+ # URL
17
+ # http://0.0.0.0:8000
18
+
19
+ VERSION = '9.3.4'
20
+
21
+ # Bundle
22
+ require 'bundler/inline'
23
+ require 'bundler'
24
+ Bundler.configure
25
+ gemfile(ENV['PAGY_INSTALL_BUNDLE'] == 'true') do
26
+ source 'https://rubygems.org'
27
+ gem 'puma'
28
+ gem 'sequel'
29
+ gem 'sinatra'
30
+ gem 'sqlite3'
31
+ end
32
+
33
+ # Pagy initializer
34
+ require 'pagy/extras/limit'
35
+ require 'pagy/extras/keyset'
36
+ require 'pagy/extras/pagy'
37
+ Pagy::DEFAULT[:limit] = 10
38
+ Pagy::DEFAULT.freeze
39
+
40
+ # Sinatra setup
41
+ require 'sinatra/base'
42
+ require 'logger'
43
+ # Sinatra application
44
+ class PagyKeyset < Sinatra::Base
45
+ include Pagy::Backend
46
+ # Root route/action
47
+ get '/' do
48
+ @order = { animal: :asc, name: :asc, birthdate: :desc, id: :asc }
49
+ @pagy, @pets = pagy_keyset(Pet.order(:animal, :name, Sequel.desc(:birthdate), :id))
50
+ erb :main
51
+ end
52
+
53
+ helpers do
54
+ include Pagy::Frontend
55
+
56
+ def order_symbol(dir)
57
+ { asc: '&#x2197;', desc: '&#x2198;' }[dir]
58
+ end
59
+ end
60
+
61
+ # Views
62
+ template :layout do
63
+ <<~ERB
64
+ <!DOCTYPE html>
65
+ <html lang="en">
66
+ <html>
67
+ <head>
68
+ <title>Pagy Keyset App</title>
69
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
70
+ <style type="text/css">
71
+ @media screen { html, body {
72
+ font-size: 1rem;
73
+ line-height: 1.2s;
74
+ padding: 0;
75
+ margin: 0;
76
+ } }
77
+ body {
78
+ background: white !important;
79
+ margin: 0 !important;
80
+ font-family: sans-serif !important;
81
+ }
82
+ .content {
83
+ padding: 1rem 1.5rem 2rem !important;
84
+ }
85
+
86
+ <%= Pagy.root.join('stylesheets', 'pagy.css').read %>
87
+ </style>
88
+ </head>
89
+ <body>
90
+ <%= yield %>
91
+ </body>
92
+ </html>
93
+ ERB
94
+ end
95
+
96
+ template :main do
97
+ <<~ERB
98
+ <div class="content">
99
+ <h1>Pagy Keyset App</h1>
100
+ <p>Self-contained, standalone app usable to easily reproduce any keyset related pagy issue with ActiveRecord sets.</p>
101
+ <p>Please, report the following versions in any new issue.</p>
102
+ <h2>Versions</h2>
103
+ <ul>
104
+ <li>Ruby: <%= RUBY_VERSION %></li>
105
+ <li>Rack: <%= Rack::RELEASE %></li>
106
+ <li>Sinatra: <%= Sinatra::VERSION %></li>
107
+ <li>Pagy: <%= Pagy::VERSION %></li>
108
+ </ul>
109
+
110
+ <h3>Collection</h3>
111
+ <div id="records" class="collection">
112
+ <table border="1" cellspacing="0" cellpadding="3">
113
+ <tr>
114
+ <th>animal <%= order_symbol(@order[:animal]) %></th>
115
+ <th>name <%= order_symbol(@order[:name]) %></th>
116
+ <th>birthdate <%= order_symbol(@order[:birthdate]) %></th>
117
+ <th>id <%= order_symbol(@order[:id]) %></th>
118
+ </tr>
119
+ <% @pets.each do |pet| %>
120
+ <tr>
121
+ <td><%= pet.animal %></td>
122
+ <td><%= pet.name %></td>
123
+ <td><%= pet.birthdate %></td>
124
+ <td><%= pet.id %></td>
125
+ </tr>
126
+ <% end %>
127
+ </table>
128
+ </div>
129
+ <p>
130
+ <nav class="pagy" id="next" aria-label="Pagy next">
131
+ <%= pagy_next_a(@pagy, text: 'Next page &gt;') %>
132
+ </nav>
133
+ </div>
134
+ ERB
135
+ end
136
+ end
137
+
138
+ # Sequel setup
139
+ require 'sequel'
140
+ Sequel.default_timezone = :utc
141
+ # SQLite DB files
142
+ dir = ENV['APP_ENV'].equal?('development') ? '.' : Dir.pwd # app dir in dev or pwd otherwise
143
+ abort "ERROR: Cannot create DB files: the directory #{dir.inspect} is not writable." \
144
+ unless File.writable?(dir)
145
+ # Connection
146
+ output = ENV['APP_ENV'].equal?('showcase') ? IO::NULL : $stdout
147
+ DB = Sequel.connect(adapter: 'sqlite', user: 'root', password: 'password', host: 'localhost', port: '3306',
148
+ database: "#{dir}/tmp/pagy-keyset-s.sqlite3", max_connections: 10, loggers: [Logger.new(output)])
149
+ # Schema
150
+ DB.create_table! :pets do
151
+ primary_key :id
152
+ String :animal, unique: false, null: false
153
+ String :name, unique: false, null: false
154
+ Date :birthdate, unique: false, null: false
155
+ end
156
+
157
+ # Models
158
+ class Pet < Sequel::Model; end
159
+
160
+ data = <<~DATA
161
+ Luna | dog | 2018-03-10
162
+ Coco | cat | 2019-05-15
163
+ Dodo | dog | 2020-06-25
164
+ Wiki | bird | 2018-03-12
165
+ Baby | rabbit | 2020-01-13
166
+ Neki | horse | 2021-07-20
167
+ Tino | donkey | 2019-06-18
168
+ Plot | cat | 2022-09-21
169
+ Riki | cat | 2018-09-14
170
+ Susi | horse | 2018-10-26
171
+ Coco | pig | 2020-08-29
172
+ Momo | bird | 2023-08-25
173
+ Lili | cat | 2021-07-22
174
+ Beli | pig | 2020-07-26
175
+ Rocky | bird | 2022-08-19
176
+ Vyvy | dog | 2018-05-16
177
+ Susi | horse | 2024-01-25
178
+ Ella | cat | 2020-02-20
179
+ Rocky | dog | 2019-09-19
180
+ Juni | rabbit | 2020-08-24
181
+ Coco | bird | 2021-03-17
182
+ Susi | dog | 2021-07-28
183
+ Luna | horse | 2023-05-14
184
+ Gigi | pig | 2022-05-19
185
+ Coco | cat | 2020-02-20
186
+ Nino | donkey | 2019-06-17
187
+ Luna | cat | 2022-02-09
188
+ Popi | dog | 2020-09-26
189
+ Lili | pig | 2022-06-18
190
+ Mina | horse | 2021-04-21
191
+ Susi | rabbit | 2023-05-18
192
+ Toni | donkey | 2018-06-22
193
+ Rocky | horse | 2019-09-28
194
+ Lili | cat | 2019-03-18
195
+ Roby | cat | 2022-06-19
196
+ Anto | horse | 2022-08-18
197
+ Susi | pig | 2021-04-21
198
+ Boly | bird | 2020-03-29
199
+ Sky | cat | 2023-07-19
200
+ Lili | dog | 2020-01-28
201
+ Fami | snake | 2023-04-27
202
+ Lopi | pig | 2019-06-19
203
+ Rocky | snake | 2022-03-13
204
+ Denis | dog | 2022-06-19
205
+ Maca | cat | 2022-06-19
206
+ Luna | dog | 2022-08-15
207
+ Jeme | horse | 2019-08-08
208
+ Sary | bird | 2023-04-29
209
+ Rocky | bird | 2023-05-14
210
+ Coco | dog | 2023-05-27
211
+ DATA
212
+
213
+ dataset = DB[:pets]
214
+ data.each_line(chomp: true) do |pet|
215
+ name, animal, birthdate = pet.split('|').map(&:strip)
216
+ dataset.insert(name:, animal:, birthdate:)
217
+ end
218
+
219
+ run PagyKeyset
data/apps/rails.ru CHANGED
@@ -1,21 +1,22 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Starting point to reproduce rails related pagy issues
4
-
3
+ # DESCRIPTION
4
+ # Reproduce rails related issues
5
+ #
6
+ # DOC
7
+ # https://ddnexus.github.io/pagy/playground/#2-rails-app
8
+ #
9
+ # BIN HELP
10
+ # bundle exec pagy -h
11
+ #
5
12
  # DEV USAGE
6
- # pagy clone rails
7
- # pagy ./rails.ru
8
-
13
+ # bundle exec pagy clone rails
14
+ # bundle exec pagy ./rails.ru
15
+ #
9
16
  # URL
10
17
  # http://0.0.0.0:8000
11
18
 
12
- # HELP
13
- # pagy -h
14
-
15
- # DOC
16
- # https://ddnexus.github.io/pagy/playground/#2-rails-app
17
-
18
- VERSION = '8.6.3'
19
+ VERSION = '9.3.4'
19
20
 
20
21
  # Gemfile
21
22
  require 'bundler/inline'
@@ -25,10 +26,8 @@ gemfile(ENV['PAGY_INSTALL_BUNDLE'] == 'true') do
25
26
  source 'https://rubygems.org'
26
27
  gem 'oj'
27
28
  gem 'puma'
28
- gem 'rails'
29
- # activerecord/sqlite3_adapter.rb probably useless) constraint !!!
30
- # https://github.com/rails/rails/blame/v7.1.3.4/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb#L14
31
- gem 'sqlite3', '~> 1.4.0'
29
+ gem 'rails', '~> 8.0'
30
+ gem 'sqlite3'
32
31
  end
33
32
 
34
33
  # require 'rails/all' # too much stuff
@@ -61,9 +60,10 @@ end
61
60
 
62
61
  # Pagy initializer
63
62
  require 'pagy/extras/pagy'
64
- require 'pagy/extras/items'
63
+ require 'pagy/extras/limit'
65
64
  require 'pagy/extras/overflow'
66
- Pagy::DEFAULT[:items] = 10
65
+ require 'pagy/extras/headers'
66
+ Pagy::DEFAULT[:limit] = 10
67
67
  Pagy::DEFAULT[:overflow] = :empty_page
68
68
  Pagy::DEFAULT.freeze
69
69
 
@@ -90,6 +90,10 @@ class Comment < ActiveRecord::Base # :nodoc:
90
90
  belongs_to :post
91
91
  end # :nodoc:
92
92
 
93
+ # Unused model, useful to test overriding conflicts
94
+ module Calendar
95
+ end
96
+
93
97
  # DB seed
94
98
  1.upto(11) do |pi|
95
99
  Post.create(title: "Post #{pi + 1}")
@@ -110,6 +114,7 @@ class CommentsController < ActionController::Base # :nodoc:
110
114
 
111
115
  def index
112
116
  @pagy, @comments = pagy(Comment.all)
117
+ pagy_headers_merge(@pagy)
113
118
  render inline: TEMPLATE
114
119
  end
115
120
  end
@@ -200,8 +205,8 @@ TEMPLATE = <<~ERB
200
205
  <h4>pagy_combo_nav_js</h4>
201
206
  <%== pagy_combo_nav_js(@pagy, id: 'combo-nav-js', aria_label: 'Pages combo_nav_js') %>
202
207
 
203
- <h4>pagy_items_selector_js</h4>
204
- <%== pagy_items_selector_js(@pagy, id: 'items-selector-js') %>
208
+ <h4>pagy_limit_selector_js</h4>
209
+ <%== pagy_limit_selector_js(@pagy, id: 'limit-selector-js') %>
205
210
 
206
211
  <h4>pagy_info</h4>
207
212
  <%== pagy_info(@pagy, id: 'pagy-info') %>