pagy 9.4.0 → 43.0.0.rc1

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 (168) hide show
  1. checksums.yaml +4 -4
  2. data/apps/calendar.ru +547 -551
  3. data/apps/demo.ru +221 -178
  4. data/apps/index.rb +3 -1
  5. data/apps/keynav.ru +258 -0
  6. data/apps/{keyset_ar.ru → keyset.ru} +26 -32
  7. data/apps/{keyset_s.ru → keyset_sequel.ru} +23 -29
  8. data/apps/rails.ru +51 -48
  9. data/apps/repro.ru +46 -43
  10. data/bin/pagy +20 -21
  11. data/config/pagy.rb +35 -207
  12. data/javascripts/ai_widget.js +76 -0
  13. data/javascripts/pagy.js +151 -0
  14. data/javascripts/pagy.js.map +10 -0
  15. data/javascripts/pagy.min.js +1 -4
  16. data/javascripts/pagy.mjs +111 -63
  17. data/javascripts/wand.js +1166 -0
  18. data/lib/pagy/classes/calendar/calendar.rb +98 -0
  19. data/lib/pagy/{calendar → classes/calendar}/day.rb +7 -11
  20. data/lib/pagy/{calendar → classes/calendar}/month.rb +5 -10
  21. data/lib/pagy/{calendar → classes/calendar}/quarter.rb +10 -15
  22. data/lib/pagy/classes/calendar/unit.rb +92 -0
  23. data/lib/pagy/{calendar → classes/calendar}/week.rb +5 -9
  24. data/lib/pagy/{calendar → classes/calendar}/year.rb +5 -6
  25. data/lib/pagy/classes/exceptions.rb +33 -0
  26. data/lib/pagy/classes/keyset/active_record.rb +11 -0
  27. data/lib/pagy/classes/keyset/adapters/active_record.rb +50 -0
  28. data/lib/pagy/classes/keyset/adapters/sequel.rb +63 -0
  29. data/lib/pagy/classes/keyset/keynav/active_record.rb +13 -0
  30. data/lib/pagy/classes/keyset/keynav/sequel.rb +13 -0
  31. data/lib/pagy/classes/keyset/keynav.rb +77 -0
  32. data/lib/pagy/classes/keyset/keyset.rb +126 -0
  33. data/lib/pagy/classes/keyset/sequel.rb +11 -0
  34. data/lib/pagy/classes/offset/countless.rb +56 -0
  35. data/lib/pagy/classes/offset/offset.rb +54 -0
  36. data/lib/pagy/classes/offset/search.rb +38 -0
  37. data/lib/pagy/classes/request.rb +36 -0
  38. data/lib/pagy/modules/abilities/configurable.rb +36 -0
  39. data/lib/pagy/modules/abilities/linkable.rb +59 -0
  40. data/lib/pagy/modules/abilities/rangeable.rb +15 -0
  41. data/lib/pagy/modules/abilities/shiftable.rb +12 -0
  42. data/lib/pagy/{b64.rb → modules/b64.rb} +3 -7
  43. data/lib/pagy/modules/console.rb +38 -0
  44. data/lib/pagy/modules/i18n/i18n.rb +48 -0
  45. data/lib/pagy/modules/i18n/p11n/arabic.rb +29 -0
  46. data/lib/pagy/modules/i18n/p11n/east_slavic.rb +26 -0
  47. data/lib/pagy/modules/i18n/p11n/one_other.rb +15 -0
  48. data/lib/pagy/modules/i18n/p11n/one_upto_two_other.rb +15 -0
  49. data/lib/pagy/modules/i18n/p11n/other.rb +13 -0
  50. data/lib/pagy/modules/i18n/p11n/polish.rb +26 -0
  51. data/lib/pagy/modules/i18n/p11n/west_slavic.rb +22 -0
  52. data/lib/pagy/modules/i18n/p11n.rb +16 -0
  53. data/lib/pagy/modules/searcher.rb +20 -0
  54. data/lib/pagy/toolbox/helpers/anchor_tags.rb +25 -0
  55. data/lib/pagy/toolbox/helpers/bootstrap/input_nav_js.rb +24 -0
  56. data/lib/pagy/toolbox/helpers/bootstrap/previous_next_html.rb +18 -0
  57. data/lib/pagy/toolbox/helpers/bootstrap/series_nav.rb +29 -0
  58. data/lib/pagy/toolbox/helpers/bootstrap/series_nav_js.rb +21 -0
  59. data/lib/pagy/toolbox/helpers/bulma/input_nav_js.rb +21 -0
  60. data/lib/pagy/toolbox/helpers/bulma/previous_next_html.rb +19 -0
  61. data/lib/pagy/toolbox/helpers/bulma/series_nav.rb +28 -0
  62. data/lib/pagy/toolbox/helpers/bulma/series_nav_js.rb +20 -0
  63. data/lib/pagy/toolbox/helpers/data_hash.rb +26 -0
  64. data/lib/pagy/toolbox/helpers/headers_hash.rb +20 -0
  65. data/lib/pagy/toolbox/helpers/info_tag.rb +26 -0
  66. data/lib/pagy/toolbox/helpers/input_nav_js.rb +19 -0
  67. data/lib/pagy/toolbox/helpers/limit_tag_js.rb +23 -0
  68. data/lib/pagy/toolbox/helpers/loader.rb +33 -0
  69. data/lib/pagy/toolbox/helpers/page_url.rb +23 -0
  70. data/lib/pagy/toolbox/helpers/series_nav.rb +29 -0
  71. data/lib/pagy/toolbox/helpers/series_nav_js.rb +19 -0
  72. data/lib/pagy/toolbox/helpers/support/a_lambda.rb +34 -0
  73. data/lib/pagy/toolbox/helpers/support/data_pagy_attribute.rb +15 -0
  74. data/lib/pagy/toolbox/helpers/support/nav_aria_label_attribute.rb +12 -0
  75. data/lib/pagy/toolbox/helpers/support/series.rb +38 -0
  76. data/lib/pagy/toolbox/helpers/support/wrap_input_nav_js.rb +20 -0
  77. data/lib/pagy/toolbox/helpers/support/wrap_series_nav.rb +17 -0
  78. data/lib/pagy/toolbox/helpers/support/wrap_series_nav_js.rb +36 -0
  79. data/lib/pagy/toolbox/helpers/urls_hash.rb +13 -0
  80. data/lib/pagy/toolbox/paginators/calendar.rb +30 -0
  81. data/lib/pagy/toolbox/paginators/countless.rb +25 -0
  82. data/lib/pagy/toolbox/paginators/elasticsearch_rails.rb +32 -0
  83. data/lib/pagy/toolbox/paginators/keynav_js.rb +29 -0
  84. data/lib/pagy/toolbox/paginators/keyset.rb +18 -0
  85. data/lib/pagy/toolbox/paginators/meilisearch.rb +32 -0
  86. data/lib/pagy/toolbox/paginators/method.rb +26 -0
  87. data/lib/pagy/toolbox/paginators/offset.rb +33 -0
  88. data/lib/pagy/toolbox/paginators/searchkick.rb +32 -0
  89. data/lib/pagy.rb +59 -97
  90. data/locales/ar.yml +9 -6
  91. data/locales/be.yml +9 -6
  92. data/locales/bg.yml +9 -6
  93. data/locales/bs.yml +9 -6
  94. data/locales/ca.yml +9 -6
  95. data/locales/ckb.yml +8 -6
  96. data/locales/cs.yml +9 -6
  97. data/locales/da.yml +9 -6
  98. data/locales/de.yml +9 -6
  99. data/locales/dz.yml +9 -6
  100. data/locales/en.yml +9 -6
  101. data/locales/es.yml +9 -6
  102. data/locales/fr.yml +9 -6
  103. data/locales/hr.yml +9 -6
  104. data/locales/id.yml +9 -6
  105. data/locales/it.yml +9 -6
  106. data/locales/ja.yml +9 -6
  107. data/locales/km.yml +9 -6
  108. data/locales/ko.yml +9 -6
  109. data/locales/nb.yml +9 -6
  110. data/locales/nl.yml +9 -6
  111. data/locales/nn.yml +9 -6
  112. data/locales/pl.yml +9 -6
  113. data/locales/pt-BR.yml +10 -7
  114. data/locales/pt.yml +10 -7
  115. data/locales/ru.yml +9 -6
  116. data/locales/sr.yml +9 -6
  117. data/locales/sv-SE.yml +9 -6
  118. data/locales/sv.yml +9 -6
  119. data/locales/sw.yml +12 -9
  120. data/locales/ta.yml +15 -8
  121. data/locales/tr.yml +9 -6
  122. data/locales/uk.yml +9 -6
  123. data/locales/vi.yml +9 -6
  124. data/locales/zh-CN.yml +9 -6
  125. data/locales/zh-HK.yml +9 -6
  126. data/locales/zh-TW.yml +9 -6
  127. data/stylesheets/pagy-tailwind.css +64 -0
  128. data/stylesheets/pagy.css +63 -27
  129. metadata +112 -52
  130. data/javascripts/pagy.min.js.map +0 -10
  131. data/lib/pagy/backend.rb +0 -44
  132. data/lib/pagy/calendar/unit.rb +0 -103
  133. data/lib/pagy/calendar.rb +0 -84
  134. data/lib/pagy/console.rb +0 -23
  135. data/lib/pagy/countless.rb +0 -38
  136. data/lib/pagy/exceptions.rb +0 -25
  137. data/lib/pagy/extras/arel.rb +0 -28
  138. data/lib/pagy/extras/array.rb +0 -19
  139. data/lib/pagy/extras/bootstrap.rb +0 -97
  140. data/lib/pagy/extras/bulma.rb +0 -93
  141. data/lib/pagy/extras/calendar.rb +0 -79
  142. data/lib/pagy/extras/countless.rb +0 -32
  143. data/lib/pagy/extras/elasticsearch_rails.rb +0 -71
  144. data/lib/pagy/extras/gearbox.rb +0 -55
  145. data/lib/pagy/extras/headers.rb +0 -54
  146. data/lib/pagy/extras/i18n.rb +0 -26
  147. data/lib/pagy/extras/js_tools.rb +0 -70
  148. data/lib/pagy/extras/jsonapi.rb +0 -88
  149. data/lib/pagy/extras/keyset.rb +0 -30
  150. data/lib/pagy/extras/limit.rb +0 -63
  151. data/lib/pagy/extras/meilisearch.rb +0 -57
  152. data/lib/pagy/extras/metadata.rb +0 -42
  153. data/lib/pagy/extras/overflow.rb +0 -81
  154. data/lib/pagy/extras/pagy.rb +0 -82
  155. data/lib/pagy/extras/searchkick.rb +0 -59
  156. data/lib/pagy/extras/size.rb +0 -40
  157. data/lib/pagy/extras/standalone.rb +0 -60
  158. data/lib/pagy/extras/trim.rb +0 -29
  159. data/lib/pagy/frontend.rb +0 -99
  160. data/lib/pagy/i18n.rb +0 -167
  161. data/lib/pagy/keyset/active_record.rb +0 -44
  162. data/lib/pagy/keyset/sequel.rb +0 -57
  163. data/lib/pagy/keyset.rb +0 -118
  164. data/lib/pagy/shared_methods.rb +0 -26
  165. data/lib/pagy/url_helpers.rb +0 -26
  166. data/locales/sk.yml +0 -23
  167. data/stylesheets/pagy.scss +0 -48
  168. data/stylesheets/pagy.tailwind.css +0 -21
data/apps/rails.ru CHANGED
@@ -4,25 +4,27 @@
4
4
  # Reproduce rails related issues
5
5
  #
6
6
  # DOC
7
- # https://ddnexus.github.io/pagy/playground/#2-rails-app
7
+ # https://ddnexus.github.io/pagy/playground/#rails-app
8
8
  #
9
9
  # BIN HELP
10
- # bundle exec pagy -h
10
+ # pagy -h
11
11
  #
12
12
  # DEV USAGE
13
- # bundle exec pagy clone rails
14
- # bundle exec pagy ./rails.ru
13
+ # pagy clone rails
14
+ # pagy ./rails.ru
15
15
  #
16
16
  # URL
17
- # http://0.0.0.0:8000
17
+ # http://127.0.0.1:8000
18
18
 
19
- VERSION = '9.4.0'
19
+ VERSION = '43.0.0.rc1'
20
20
 
21
- # Gemfile
21
+ if VERSION != Pagy::VERSION
22
+ Warning.warn("\n>>> WARNING! '#{File.basename(__FILE__)}-#{VERSION}' running with 'pagy-#{Pagy::VERSION}'! <<< \n\n")
23
+ end
24
+
25
+ # Bundle
22
26
  require 'bundler/inline'
23
- require 'bundler'
24
- Bundler.configure
25
- gemfile(ENV['PAGY_INSTALL_BUNDLE'] == 'true') do
27
+ gemfile(!Pagy::ROOT.join('pagy.gemspec').exist?) do
26
28
  source 'https://rubygems.org'
27
29
  gem 'oj'
28
30
  gem 'puma'
@@ -52,21 +54,12 @@ class PagyRails < Rails::Application # :nodoc:
52
54
  end
53
55
 
54
56
  # AR config
55
- dir = Rails.env.development? ? '.' : Dir.pwd # app dir in dev or pwd otherwise
57
+ dir = Rails.env.development? ? '.' : Dir.pwd # app dir in dev or pwd otherwise
56
58
  unless File.writable?(dir)
57
59
  warn "ERROR: directory #{dir.inspect} is not writable (the pagy-rails-app needs to create DB files)"
58
60
  exit 1
59
61
  end
60
62
 
61
- # Pagy initializer
62
- require 'pagy/extras/pagy'
63
- require 'pagy/extras/limit'
64
- require 'pagy/extras/overflow'
65
- require 'pagy/extras/headers'
66
- Pagy::DEFAULT[:limit] = 10
67
- Pagy::DEFAULT[:overflow] = :empty_page
68
- Pagy::DEFAULT.freeze
69
-
70
63
  # Activerecord initializer
71
64
  ActiveRecord::Base.logger = Logger.new(OUTPUT)
72
65
  ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: "#{dir}/tmp/pagy-rails.sqlite3")
@@ -84,11 +77,15 @@ end
84
77
  # Models
85
78
  class Post < ActiveRecord::Base # :nodoc:
86
79
  has_many :comments
87
- end # :nodoc:
80
+ end
81
+
82
+ # :nodoc:
88
83
 
89
84
  class Comment < ActiveRecord::Base # :nodoc:
90
85
  belongs_to :post
91
- end # :nodoc:
86
+ end
87
+
88
+ # :nodoc:
92
89
 
93
90
  # Unused model, useful to test overriding conflicts
94
91
  module Calendar
@@ -102,31 +99,27 @@ Post.all.each_with_index do |post, pi|
102
99
  2.times { |ci| Comment.create(post:, body: "Comment #{ci + 1} to Post #{pi + 1}") }
103
100
  end
104
101
 
105
- # Helpers
106
- module CommentsHelper
107
- include Pagy::Frontend
108
- end
109
-
110
102
  # Controllers
111
103
  class CommentsController < ActionController::Base # :nodoc:
112
104
  include Rails.application.routes.url_helpers
113
- include Pagy::Backend
105
+ include Pagy::Method
114
106
 
115
107
  def index
116
- @pagy, @comments = pagy(Comment.all)
117
- pagy_headers_merge(@pagy)
108
+ @pagy, @comments = pagy(:offset, Comment.all, limit: 10, client_max_limit: 100)
109
+ # Reload the page in the network tab of the Chrome Inspector to check
110
+ # response.headers.merge!(@pagy.headers_hash)
118
111
  render inline: TEMPLATE
119
112
  end
120
113
  end
121
114
 
122
- # You don't need this in real rails apps (see https://ddnexus.github.io/pagy/docs/api/javascript/setup/#2-configure)
115
+ # You don't need this in real rails apps (see https://ddnexus.github.io/pagy/resources/javascripts)
123
116
  class PagyController < ActionController::Base
124
117
  def javascripts
125
118
  format = params[:file].split('.').last
126
119
  if format == 'js'
127
- render js: Pagy.root.join('javascripts', params[:file]).read
120
+ render js: Pagy::ROOT.join('javascripts', params[:file]).read
128
121
  elsif format == 'map'
129
- render json: Pagy.root.join('javascripts', params[:file]).read
122
+ render json: Pagy::ROOT.join('javascripts', params[:file]).read
130
123
  end
131
124
  end
132
125
  end
@@ -139,7 +132,7 @@ TEMPLATE = <<~ERB
139
132
  <html>
140
133
  <head>
141
134
  <title>Pagy Rails App</title>
142
- <script src="/javascripts/pagy.min.js"></script>
135
+ <script src="/javascripts/pagy.js"></script>
143
136
  <script>
144
137
  window.addEventListener("load", Pagy.init);
145
138
  </script>
@@ -156,9 +149,15 @@ TEMPLATE = <<~ERB
156
149
  margin: 0 !important;
157
150
  font-family: sans-serif !important;
158
151
  }
159
- .content {
152
+ .main-content {
160
153
  padding: 1rem 1.5rem 2rem !important;
161
154
  }
155
+ .pagy, .pagy-bootstrap, .pagy-bulma {
156
+ padding: .5em;
157
+ margin: .3em 0;
158
+ width: fit-content;
159
+ box-shadow: 5px 5px 10px 0px rgba(0,0,0,0.2);
160
+ }
162
161
 
163
162
  /* Quick demo for overriding the element style attribute of certain pagy helpers
164
163
  .pagy input[style] {
@@ -170,16 +169,16 @@ TEMPLATE = <<~ERB
170
169
  If you want to customize the style,
171
170
  please replace the line below with the actual file content
172
171
  */
173
- <%== Pagy.root.join('stylesheets', 'pagy.css').read %>
172
+ <%== Pagy::ROOT.join('stylesheets/pagy.css').read %>
174
173
  </style>
175
174
  </head>
176
175
 
177
176
  <body>
178
177
 
179
- <div class="content">
178
+ <div class="main-content">
180
179
  <h1>Pagy Rails App</h1>
181
180
  <p> Self-contained, standalone Rails app usable to easily reproduce any rails related pagy issue.</p>
182
- <p>Please, report the following versions in any new issue.</p>
181
+
183
182
  <h2>Versions</h2>
184
183
  <ul>
185
184
  <li>Ruby: <%== RUBY_VERSION %></li>
@@ -194,22 +193,26 @@ TEMPLATE = <<~ERB
194
193
  <p style="margin: 0;"><%= comment.body %></p>
195
194
  <% end %>
196
195
  </div>
196
+
197
197
  <hr>
198
198
 
199
- <h4>pagy_nav</h4>
200
- <%== pagy_nav(@pagy, id: 'nav', aria_label: 'Pages nav') %>
199
+ <h4>@pagy.series_nav</h4>
200
+ <%== @pagy.series_nav(id: 'series-nav',
201
+ aria_label: 'Pages nav') %>
201
202
 
202
- <h4>pagy_nav_js</h4>
203
- <%== pagy_nav_js(@pagy, id: 'nav-js', aria_label: 'Pages nav_js') %>
203
+ <h4>@pagy.series_nav_js</h4>
204
+ <%== @pagy.series_nav_js(id: 'series-nav-js',
205
+ aria_label: 'Pages nav_js') %>
204
206
 
205
- <h4>pagy_combo_nav_js</h4>
206
- <%== pagy_combo_nav_js(@pagy, id: 'combo-nav-js', aria_label: 'Pages combo_nav_js') %>
207
+ <h4>@pagy.input_nav_js</h4>
208
+ <%== @pagy.input_nav_js(id: 'input-nav-js',
209
+ aria_label: 'Pages input_nav_js') %>
207
210
 
208
- <h4>pagy_limit_selector_js</h4>
209
- <%== pagy_limit_selector_js(@pagy, id: 'limit-selector-js') %>
211
+ <h4>@pagy.limit_tag_js</h4>
212
+ <%== @pagy.limit_tag_js(id: 'limit-tag-js') %>
210
213
 
211
- <h4>pagy_info</h4>
212
- <%== pagy_info(@pagy, id: 'pagy-info') %>
214
+ <h4>@pagy.info_tag</h4>
215
+ <%== @pagy.info_tag(id: 'pagy-info') %>
213
216
  </div>
214
217
 
215
218
  </body>
data/apps/repro.ru CHANGED
@@ -4,44 +4,43 @@
4
4
  # Reproduce generic/simple issues
5
5
  #
6
6
  # DOC
7
- # https://ddnexus.github.io/pagy/playground/#1-repro-app
7
+ # https://ddnexus.github.io/pagy/playground/#repro-app
8
8
  #
9
9
  # BIN HELP
10
- # bundle exec pagy -h
10
+ # pagy -h
11
11
  #
12
12
  # DEV USAGE
13
- # bundle exec pagy clone repro
14
- # bundle exec pagy ./repro.ru
13
+ # pagy clone repro
14
+ # pagy ./repro.ru
15
15
  #
16
16
  # URL
17
- # http://0.0.0.0:8000
17
+ # http://127.0.0.1:8000
18
18
 
19
- VERSION = '9.4.0'
19
+ VERSION = '43.0.0.rc1'
20
+
21
+ if VERSION != Pagy::VERSION
22
+ Warning.warn("\n>>> WARNING! '#{File.basename(__FILE__)}-#{VERSION}' running with 'pagy-#{Pagy::VERSION}'! <<< \n\n")
23
+ end
24
+ run_from_repo = Pagy::ROOT.join('pagy.gemspec').exist?
20
25
 
21
26
  # Bundle
22
27
  require 'bundler/inline'
23
- require 'bundler'
24
- Bundler.configure
25
- gemfile(ENV['PAGY_INSTALL_BUNDLE'] == 'true') do
28
+ gemfile(!run_from_repo) do
26
29
  source 'https://rubygems.org'
27
30
  gem 'oj'
28
31
  gem 'puma'
29
32
  gem 'sinatra'
30
33
  end
31
34
 
32
- # Edit this section adding/removing the extras and Pagy::DEFAULT as needed
33
- # pagy initializer
34
- require 'pagy/extras/pagy'
35
- require 'pagy/extras/limit'
36
- require 'pagy/extras/overflow'
37
- Pagy::DEFAULT[:overflow] = :empty_page
38
- Pagy::DEFAULT.freeze
35
+ # Edit this section adding the legacy as needed
36
+ # Pagy initializer
37
+ Pagy.options[:client_max_limit] = 100
39
38
 
40
39
  # Sinatra setup
41
40
  require 'sinatra/base'
42
41
  # Sinatra application
43
42
  class PagyRepro < Sinatra::Base
44
- include Pagy::Backend
43
+ include Pagy::Method
45
44
 
46
45
  get('/javascripts/:file') do
47
46
  format = params[:file].split('.').last
@@ -50,21 +49,20 @@ class PagyRepro < Sinatra::Base
50
49
  elsif format == 'map'
51
50
  content_type 'application/json'
52
51
  end
53
- send_file Pagy.root.join('javascripts', params[:file])
52
+ send_file Pagy::ROOT.join('javascripts', params[:file])
54
53
  end
55
54
 
56
55
  # Edit this action as needed
57
56
  get '/' do
58
57
  collection = MockCollection.new
59
58
  @pagy, @records = pagy(collection)
59
+ # @pagy, @records = pagy(:offset, collection, limit: 7, client_max_limit: 30)
60
+ # @pagy, @records = pagy(:countless, collection)
61
+ # @pagy, @records = pagy(Array(1..1000))
62
+ # response.headers.merge!(@pagy.headers_hash)
60
63
  erb :main
61
64
  end
62
65
 
63
- # Edit this section adding your own helpers as needed
64
- helpers do
65
- include Pagy::Frontend
66
- end
67
-
68
66
  # Views
69
67
  template :layout do
70
68
  <<~ERB
@@ -73,7 +71,7 @@ class PagyRepro < Sinatra::Base
73
71
  <html>
74
72
  <head>
75
73
  <title>Pagy Repro App</title>
76
- <script src="javascripts/pagy.min.js"></script>
74
+ <script src="javascripts/pagy.js"></script>
77
75
  <script>
78
76
  window.addEventListener("load", Pagy.init);
79
77
  </script>
@@ -90,10 +88,15 @@ class PagyRepro < Sinatra::Base
90
88
  margin: 0 !important;
91
89
  font-family: sans-serif !important;
92
90
  }
93
- .content {
91
+ .main-content {
94
92
  padding: 1rem 1.5rem 2rem !important;
95
93
  }
96
-
94
+ .pagy, .pagy-bootstrap, .pagy-bulma {
95
+ padding: .5em;
96
+ margin: .3em 0;
97
+ width: fit-content;
98
+ box-shadow: 5px 5px 10px 0px rgba(0,0,0,0.2);
99
+ }
97
100
  /* Quick demo for overriding the element style attribute of certain pagy helpers
98
101
  .pagy input[style] {
99
102
  width: 5rem !important;
@@ -104,7 +107,7 @@ class PagyRepro < Sinatra::Base
104
107
  If you want to customize the style,
105
108
  please replace the line below with the actual file content
106
109
  */
107
- <%= Pagy.root.join('stylesheets', 'pagy.css').read %>
110
+ <%= Pagy::ROOT.join('stylesheets/pagy.css').read %>
108
111
  </style>
109
112
  </head>
110
113
  <body>
@@ -116,10 +119,10 @@ class PagyRepro < Sinatra::Base
116
119
 
117
120
  template :main do
118
121
  <<~ERB
119
- <div class="content">
122
+ <div class="main-content">
120
123
  <h1>Pagy Repro App</h1>
121
124
  <p> Self-contained, standalone app usable to easily reproduce any pagy issue.</p>
122
- <p>Please, report the following versions in any new issue.</p>
125
+
123
126
  <h2>Versions</h4>
124
127
  <ul>
125
128
  <li>Ruby: <%= RUBY_VERSION %></li>
@@ -133,24 +136,24 @@ class PagyRepro < Sinatra::Base
133
136
 
134
137
  <hr>
135
138
 
136
- <h4>pagy_nav</h4>
137
- <%= pagy_nav(@pagy, id: 'nav', aria_label: 'Pages nav') %>
138
-
139
- <h4>pagy_nav_js</h4>
140
- <%= pagy_nav_js(@pagy, id: 'nav-js', aria_label: 'Pages nav_js') %>
139
+ <h4>@pagy.series_nav</h4>
140
+ <%= @pagy.series_nav(id: 'series-nav',
141
+ aria_label: 'Pages nav') %>
141
142
 
142
- <h4>pagy_nav_js</h4>
143
- <%= pagy_nav_js(@pagy, id: 'nav-js-responsive', aria_label: 'Pages nav_js_responsove',
144
- steps: { 0 => 5, 500 => 7, 750 => 9, 1000 => 11 }) %>
143
+ <h4>@pagy.series_nav_js (responsive)</h4>
144
+ <%= @pagy.series_nav_js(id: 'series-nav-js-responsive',
145
+ aria_label: 'Pages nav_js_responsove',
146
+ steps: { 0 => 5, 500 => 7, 600 => 9, 700 => 11 }) %>
145
147
 
146
- <h4>pagy_combo_nav_js</h4>
147
- <%= pagy_combo_nav_js(@pagy, id: 'combo-nav-js', aria_label: 'Pages combo_nav_js') %>
148
+ <h4>@pagy.input_nav_js</h4>
149
+ <%= @pagy.input_nav_js(id: 'input-nav-js',
150
+ aria_label: 'Pages input_nav_js') %>
148
151
 
149
- <h4>pagy_limit_selector_js</h4>
150
- <%= pagy_limit_selector_js(@pagy, id: 'limit-selector-js') %>
152
+ <h4>@pagy.limit_tag_js</h4>
153
+ <%= @pagy.limit_tag_js(id: 'limit-tag-js') %>
151
154
 
152
- <h4>pagy_info</h4>
153
- <%= pagy_info(@pagy, id: 'pagy-info') %>
155
+ <h4>@pagy.info_tag</h4>
156
+ <%= @pagy.info_tag(id: 'pagy-info') %>
154
157
  </div>
155
158
  ERB
156
159
  end
data/bin/pagy CHANGED
@@ -1,13 +1,15 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- VERSION = '9.4.0'
4
+ VERSION = '43.0.0.rc1'
5
5
  LINUX = RbConfig::CONFIG['host_os'].include?('linux')
6
- HOST = '0.0.0.0'
6
+ HOST = 'localhost'
7
7
  PORT = '8000'
8
8
 
9
9
  require_relative '../lib/optimist'
10
+ require_relative '../lib/pagy'
10
11
  require_relative '../apps/index'
12
+
11
13
  apps = PagyApps::INDEX
12
14
  opts = Optimist.options do
13
15
  text <<~HEAD
@@ -15,26 +17,24 @@ opts = Optimist.options do
15
17
  Playground to showcase, clone and develop pagy APPs
16
18
  APPs
17
19
  #{ apps.map do |name, path|
18
- " #{name}#{' ' * (27 - name.length)}#{File.readlines(path)[3].sub('# ', '').strip}"
19
- end.join("\n")
20
- }
20
+ " #{name}#{' ' * (18 - name.length)}#{File.readlines(path)[3].sub('# ', '').strip}"
21
+ end.join("\n") }
21
22
  USAGE
22
- pagy APP [options] Showcase APP from the installed gem
23
- pagy clone APP Clone APP to the current dir
24
- pagy APPFILE [options] Develop APPFILE from local path
23
+ pagy APP [opts] Showcase APP from the installed gem
24
+ pagy clone APP Clone APP to the current dir
25
+ pagy FILE [opts] Develop app FILE from local path
25
26
  EXAMPLES
26
- pagy demo Showcase demo at http://#{HOST}:#{PORT}
27
- pagy clone repro Clone repro to ./repro.ru
28
- pagy ~/my-repro.ru Develop ~/my-repro.ru at#{HOST}:#{PORT}
27
+ pagy demo Showcase demo at http://#{HOST}:#{PORT}
28
+ pagy clone repro Clone repro to ./repro.ru (rename it)
29
+ pagy ~/myapp.ru Develop ~/myapp.ru at #{HOST}:#{PORT}
29
30
  HEAD
30
31
  text 'Rackup options'
31
- opt :env, 'Environment', default: 'development'
32
- opt :host, 'Host', default: HOST, short: :o
33
- opt :port, 'Port', default: PORT
34
- opt :install, 'Install bundle for users', default: true
32
+ opt :env, 'Environment', default: 'development'
33
+ opt :host, 'Host', default: HOST, short: :o
34
+ opt :port, 'Port', default: PORT
35
35
  if LINUX
36
36
  text 'Rerun options'
37
- opt :rerun, 'Enable rerun for development', default: true
37
+ opt :rerun, 'Enable rerun for development'
38
38
  opt :clear, 'Clear screen before each rerun'
39
39
  end
40
40
  text 'Other options'
@@ -43,14 +43,13 @@ opts = Optimist.options do
43
43
  end
44
44
  Optimist.educate if ARGV.empty?
45
45
 
46
- run_from_repo = File.exist?(File.expand_path('../pagy.gemspec', __dir__))
46
+ run_from_repo = Pagy::ROOT.join('pagy.gemspec').exist?
47
47
 
48
48
  # Bundle
49
49
  require 'bundler/inline'
50
- require 'bundler'
51
- Bundler.configure
52
- gemfile(opts[:install]) do
50
+ gemfile(!run_from_repo) do
53
51
  source 'https://rubygems.org'
52
+ gem 'logger'
54
53
  gem 'rackup'
55
54
  gem 'rerun' if LINUX
56
55
  end
@@ -94,5 +93,5 @@ else
94
93
  rerun << ' -c' if opts[:clear]
95
94
  rerun << " -- #{rackup}"
96
95
  end
97
- exec("PAGY_INSTALL_BUNDLE='#{opts[:install]}' #{rerun || rackup}")
96
+ exec(rerun || rackup)
98
97
  end