pagy 3.8.2 → 9.4.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.
- checksums.yaml +4 -4
- data/LICENSE.txt +1 -1
- data/apps/calendar.ru +737 -0
- data/apps/demo.ru +449 -0
- data/apps/index.rb +7 -0
- data/apps/keyset_ar.ru +228 -0
- data/apps/keyset_s.ru +220 -0
- data/apps/rails.ru +217 -0
- data/apps/repro.ru +182 -0
- data/bin/pagy +98 -0
- data/config/pagy.rb +220 -0
- data/javascripts/pagy.d.ts +5 -0
- data/javascripts/pagy.min.js +4 -0
- data/javascripts/pagy.min.js.map +10 -0
- data/javascripts/pagy.mjs +100 -0
- data/lib/optimist.rb +1022 -0
- data/lib/pagy/b64.rb +33 -0
- data/lib/pagy/backend.rb +30 -19
- data/lib/pagy/calendar/day.rb +41 -0
- data/lib/pagy/calendar/month.rb +42 -0
- data/lib/pagy/calendar/quarter.rb +49 -0
- data/lib/pagy/calendar/unit.rb +103 -0
- data/lib/pagy/calendar/week.rb +39 -0
- data/lib/pagy/calendar/year.rb +35 -0
- data/lib/pagy/calendar.rb +84 -0
- data/lib/pagy/console.rb +23 -0
- data/lib/pagy/countless.rb +27 -22
- data/lib/pagy/exceptions.rb +16 -13
- data/lib/pagy/extras/arel.rb +11 -14
- data/lib/pagy/extras/array.rb +12 -16
- data/lib/pagy/extras/bootstrap.rb +83 -41
- data/lib/pagy/extras/bulma.rb +79 -46
- data/lib/pagy/extras/calendar.rb +79 -0
- data/lib/pagy/extras/countless.rb +20 -25
- data/lib/pagy/extras/elasticsearch_rails.rb +59 -38
- data/lib/pagy/extras/gearbox.rb +55 -0
- data/lib/pagy/extras/headers.rb +38 -23
- data/lib/pagy/extras/i18n.rb +19 -18
- data/lib/pagy/extras/js_tools.rb +70 -0
- data/lib/pagy/extras/jsonapi.rb +88 -0
- data/lib/pagy/extras/keyset.rb +30 -0
- data/lib/pagy/extras/limit.rb +63 -0
- data/lib/pagy/extras/meilisearch.rb +57 -0
- data/lib/pagy/extras/metadata.rb +32 -27
- data/lib/pagy/extras/overflow.rb +61 -53
- data/lib/pagy/extras/pagy.rb +82 -0
- data/lib/pagy/extras/searchkick.rb +52 -41
- data/lib/pagy/extras/size.rb +40 -0
- data/lib/pagy/extras/standalone.rb +60 -0
- data/lib/pagy/extras/trim.rb +19 -13
- data/lib/pagy/frontend.rb +76 -51
- data/lib/pagy/i18n.rb +167 -0
- data/lib/pagy/keyset/active_record.rb +44 -0
- data/lib/pagy/keyset/sequel.rb +57 -0
- data/lib/pagy/keyset.rb +118 -0
- data/lib/pagy/shared_methods.rb +26 -0
- data/lib/pagy/url_helpers.rb +26 -0
- data/lib/pagy.rb +91 -37
- data/locales/ar.yml +29 -0
- data/locales/be.yml +25 -0
- data/locales/bg.yml +21 -0
- data/locales/bs.yml +25 -0
- data/locales/ca.yml +21 -0
- data/locales/ckb.yml +18 -0
- data/locales/cs.yml +23 -0
- data/locales/da.yml +21 -0
- data/locales/de.yml +21 -0
- data/locales/dz.yml +17 -0
- data/locales/en.yml +21 -0
- data/{lib/locales → locales}/es.yml +11 -12
- data/locales/fr.yml +21 -0
- data/locales/hr.yml +25 -0
- data/locales/id.yml +19 -0
- data/locales/it.yml +21 -0
- data/locales/ja.yml +19 -0
- data/locales/km.yml +19 -0
- data/locales/ko.yml +17 -0
- data/locales/nb.yml +21 -0
- data/locales/nl.yml +21 -0
- data/locales/nn.yml +21 -0
- data/locales/pl.yml +25 -0
- data/{lib/locales → locales}/pt-BR.yml +11 -12
- data/locales/pt.yml +21 -0
- data/locales/ru.yml +25 -0
- data/locales/sk.yml +23 -0
- data/locales/sr.yml +25 -0
- data/locales/sv-SE.yml +21 -0
- data/locales/sv.yml +21 -0
- data/locales/sw.yml +25 -0
- data/locales/ta.yml +21 -0
- data/locales/tr.yml +19 -0
- data/locales/uk.yml +25 -0
- data/locales/vi.yml +17 -0
- data/locales/zh-CN.yml +17 -0
- data/locales/zh-HK.yml +17 -0
- data/locales/zh-TW.yml +17 -0
- data/stylesheets/pagy.css +46 -0
- data/stylesheets/pagy.scss +48 -0
- data/stylesheets/pagy.tailwind.css +21 -0
- metadata +95 -67
- data/lib/config/pagy.rb +0 -170
- data/lib/javascripts/pagy.js +0 -106
- data/lib/locales/README.md +0 -35
- data/lib/locales/bg.yml +0 -22
- data/lib/locales/ca.yml +0 -22
- data/lib/locales/da.yml +0 -22
- data/lib/locales/de.yml +0 -22
- data/lib/locales/en.yml +0 -22
- data/lib/locales/fr.yml +0 -22
- data/lib/locales/id.yml +0 -20
- data/lib/locales/it.yml +0 -22
- data/lib/locales/ja.yml +0 -20
- data/lib/locales/km.yml +0 -19
- data/lib/locales/ko.yml +0 -20
- data/lib/locales/nb.yml +0 -22
- data/lib/locales/nl.yml +0 -22
- data/lib/locales/pl.yml +0 -24
- data/lib/locales/ru.yml +0 -24
- data/lib/locales/sv-SE.yml +0 -23
- data/lib/locales/sv.yml +0 -23
- data/lib/locales/tr.yml +0 -20
- data/lib/locales/utils/i18n.rb +0 -25
- data/lib/locales/utils/loader.rb +0 -34
- data/lib/locales/utils/p11n.rb +0 -80
- data/lib/locales/zh-CN.yml +0 -20
- data/lib/locales/zh-HK.yml +0 -20
- data/lib/locales/zh-TW.yml +0 -20
- data/lib/pagy/extras/foundation.rb +0 -57
- data/lib/pagy/extras/items.rb +0 -65
- data/lib/pagy/extras/materialize.rb +0 -59
- data/lib/pagy/extras/navs.rb +0 -38
- data/lib/pagy/extras/pagy_search.rb +0 -18
- data/lib/pagy/extras/semantic.rb +0 -55
- data/lib/pagy/extras/shared.rb +0 -53
- data/lib/pagy/extras/support.rb +0 -29
- data/lib/pagy/extras/uikit.rb +0 -62
- data/lib/templates/bootstrap_nav.html.erb +0 -24
- data/lib/templates/bootstrap_nav.html.haml +0 -34
- data/lib/templates/bootstrap_nav.html.slim +0 -34
- data/lib/templates/bulma_nav.html.erb +0 -24
- data/lib/templates/bulma_nav.html.haml +0 -32
- data/lib/templates/bulma_nav.html.slim +0 -32
- data/lib/templates/foundation_nav.html.erb +0 -24
- data/lib/templates/foundation_nav.html.haml +0 -34
- data/lib/templates/foundation_nav.html.slim +0 -34
- data/lib/templates/nav.html.erb +0 -22
- data/lib/templates/nav.html.haml +0 -30
- data/lib/templates/nav.html.slim +0 -29
- data/lib/templates/uikit_nav.html.erb +0 -15
- data/lib/templates/uikit_nav.html.haml +0 -28
- data/lib/templates/uikit_nav.html.slim +0 -28
- data/pagy.gemspec +0 -16
data/lib/locales/utils/p11n.rb
DELETED
@@ -1,80 +0,0 @@
|
|
1
|
-
# See https://ddnexus.github.io/pagy/api/frontend#i18n
|
2
|
-
# encoding: utf-8
|
3
|
-
# frozen_string_literal: true
|
4
|
-
|
5
|
-
# This file adds support for multiple built-in plualization types.
|
6
|
-
# It defines the pluralization procs and gets eval(ed) and gc-collected at Pagy::I18n.load time.
|
7
|
-
|
8
|
-
# utility variables
|
9
|
-
from0to1 = [0,1].freeze
|
10
|
-
from2to4 = [2,3,4].freeze
|
11
|
-
from5to9 = [5,6,7,8,9].freeze
|
12
|
-
from11to14 = [11,12,13,14].freeze
|
13
|
-
from12to14 = [12,13,14].freeze
|
14
|
-
|
15
|
-
# Pluralization (p11n)
|
16
|
-
# Compliant with the I18n gem
|
17
|
-
# A pluralization proc returns a plural type string based on the passed count
|
18
|
-
# Each proc may apply to one or more locales below.
|
19
|
-
# Pluralization logic adapted from https://github.com/svenfuchs/rails-i18n
|
20
|
-
p11n = {
|
21
|
-
one_other: lambda {|n| n == 1 ? 'one' : 'other'}, # default
|
22
|
-
|
23
|
-
east_slavic: lambda do |n|
|
24
|
-
n ||= 0
|
25
|
-
mod10 = n % 10
|
26
|
-
mod100 = n % 100
|
27
|
-
|
28
|
-
if mod10 == 1 && mod100 != 11 ; 'one'
|
29
|
-
elsif from2to4.include?(mod10) && !from12to14.include?(mod100) ; 'few'
|
30
|
-
elsif mod10 == 0 || from5to9.include?(mod10) || from11to14.include?(mod100) ; 'many'
|
31
|
-
else 'other'
|
32
|
-
end
|
33
|
-
end,
|
34
|
-
|
35
|
-
one_two_other: lambda do |n|
|
36
|
-
if n == 1 ; 'one'
|
37
|
-
elsif n == 2 ; 'two'
|
38
|
-
else 'other'
|
39
|
-
end
|
40
|
-
end,
|
41
|
-
|
42
|
-
one_upto_two_other: lambda {|n| n && n >= 0 && n < 2 ? 'one' : 'other'},
|
43
|
-
|
44
|
-
other: Proc.new { 'other' },
|
45
|
-
|
46
|
-
polish: lambda do |n|
|
47
|
-
n ||= 0
|
48
|
-
mod10 = n % 10
|
49
|
-
mod100 = n % 100
|
50
|
-
if n == 1 ; 'one'
|
51
|
-
elsif from2to4.include?(mod10) && !from12to14.include?(mod100) ; 'few'
|
52
|
-
elsif (from0to1 + from5to9).include?(mod10) || from12to14.include?(mod100) ; 'many'
|
53
|
-
else 'other'
|
54
|
-
end
|
55
|
-
end
|
56
|
-
}
|
57
|
-
|
58
|
-
# Hash of locale/pluralization pairs
|
59
|
-
# It contains all the entries for all the locales defined as dictionaries.
|
60
|
-
# The default pluralization for locales not explicitly listed here
|
61
|
-
# is the :one_other pluralization proc (used for English)
|
62
|
-
plurals = Hash.new(p11n[:one_other]).tap do |hash|
|
63
|
-
hash['id'] = p11n[:other]
|
64
|
-
hash['fr'] = p11n[:one_upto_two_other]
|
65
|
-
hash['ja'] = p11n[:other]
|
66
|
-
hash['ko'] = p11n[:other]
|
67
|
-
hash['pl'] = p11n[:polish]
|
68
|
-
hash['ru'] = p11n[:east_slavic]
|
69
|
-
hash['sv'] = p11n[:one_two_other]
|
70
|
-
hash['sv-SE'] = p11n[:one_two_other]
|
71
|
-
hash['tr'] = p11n[:other]
|
72
|
-
hash['zh-CN'] = p11n[:other]
|
73
|
-
hash['zh-HK'] = p11n[:other]
|
74
|
-
hash['zh-TW'] = p11n[:other]
|
75
|
-
hash['km'] = p11n[:other]
|
76
|
-
end
|
77
|
-
|
78
|
-
[ plurals, p11n ]
|
79
|
-
|
80
|
-
# PR for other locales and pluralizations are very welcome. Thanks!
|
data/lib/locales/zh-CN.yml
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
# :other pluralization (see https://github.com/ddnexus/pagy/blob/master/lib/locales/utils/p11n.rb)
|
2
|
-
|
3
|
-
zh-CN:
|
4
|
-
pagy:
|
5
|
-
|
6
|
-
item_name: ""
|
7
|
-
|
8
|
-
nav:
|
9
|
-
prev: "‹ 上一页"
|
10
|
-
next: "下一页 ›"
|
11
|
-
gap: "…"
|
12
|
-
|
13
|
-
info:
|
14
|
-
no_items: "项目未找到"
|
15
|
-
single_page: "显示<b>%{count}</b> 项%{item_name}"
|
16
|
-
multiple_pages: "共 <b>%{count}</b> 项%{item_name},显示 <b>%{from}-%{to}</b>"
|
17
|
-
|
18
|
-
combo_nav_js: "第 %{page_input} / %{pages} 页"
|
19
|
-
|
20
|
-
items_selector_js: "每页显示 %{items_input} 条%"
|
data/lib/locales/zh-HK.yml
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
# :other pluralization (see https://github.com/ddnexus/pagy/blob/master/lib/locales/utils/p11n.rb)
|
2
|
-
|
3
|
-
zh-HK:
|
4
|
-
pagy:
|
5
|
-
|
6
|
-
item_name: ""
|
7
|
-
|
8
|
-
nav:
|
9
|
-
prev: "‹ 上一頁"
|
10
|
-
next: "下一頁 ›"
|
11
|
-
gap: "…"
|
12
|
-
|
13
|
-
info:
|
14
|
-
no_items: "記錄未搵到"
|
15
|
-
single_page: "顯示 <b>%{count}</b> %{item_name}"
|
16
|
-
multiple_pages: "共 <b>%{count}</b> %{item_name},顯示 <b>%{from}-%{to}</b>"
|
17
|
-
|
18
|
-
combo_nav_js: "第 %{page_input} / %{pages} 頁"
|
19
|
-
|
20
|
-
items_selector_js: "每頁顯示 %{items_input} 記錄"
|
data/lib/locales/zh-TW.yml
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
# :other pluralization (see https://github.com/ddnexus/pagy/blob/master/lib/locales/utils/p11n.rb)
|
2
|
-
|
3
|
-
zh-TW:
|
4
|
-
pagy:
|
5
|
-
|
6
|
-
item_name: ""
|
7
|
-
|
8
|
-
nav:
|
9
|
-
prev: "‹ 上一頁"
|
10
|
-
next: "下一頁 ›"
|
11
|
-
gap: "…"
|
12
|
-
|
13
|
-
combo_nav_js: "第 %{page_input} / %{pages} 頁"
|
14
|
-
|
15
|
-
info:
|
16
|
-
no_items: "沒找到項"
|
17
|
-
single_page: "顯示 <b>%{count}</b> 項%{item_name}"
|
18
|
-
multiple_pages: "共 <b>%{count}</b> 項%{item_name},顯示 <b>%{from}-%{to}</b>"
|
19
|
-
|
20
|
-
items_selector_js: "每頁顯示 %{items_input} 項%{item_name}"
|
@@ -1,57 +0,0 @@
|
|
1
|
-
# See the Pagy documentation: https://ddnexus.github.io/pagy/extras/foundation
|
2
|
-
# encoding: utf-8
|
3
|
-
# frozen_string_literal: true
|
4
|
-
|
5
|
-
require 'pagy/extras/shared'
|
6
|
-
|
7
|
-
class Pagy
|
8
|
-
module Frontend
|
9
|
-
|
10
|
-
# Pagination for Foundation: it returns the html with the series of links to the pages
|
11
|
-
def pagy_foundation_nav(pagy)
|
12
|
-
link, p_prev, p_next = pagy_link_proc(pagy), pagy.prev, pagy.next
|
13
|
-
|
14
|
-
html = EMPTY + (p_prev ? %(<li class="prev">#{link.call p_prev, pagy_t('pagy.nav.prev'), 'aria-label="previous"'}</li>)
|
15
|
-
: %(<li class="prev disabled">#{pagy_t('pagy.nav.prev')}</li>))
|
16
|
-
pagy.series.each do |item| # series example: [1, :gap, 7, 8, "9", 10, 11, :gap, 36]
|
17
|
-
html << if item.is_a?(Integer); %(<li>#{link.call item}</li>) # page link
|
18
|
-
elsif item.is_a?(String) ; %(<li class="current">#{item}</li>) # active page
|
19
|
-
elsif item == :gap ; %(<li class="ellipsis gap" aria-hidden="true"></li>) # page gap
|
20
|
-
end
|
21
|
-
end
|
22
|
-
html << (p_next ? %(<li class="next">#{link.call p_next, pagy_t('pagy.nav.next'), 'aria-label="next"'}</li>)
|
23
|
-
: %(<li class="next disabled">#{pagy_t('pagy.nav.next')}</li>))
|
24
|
-
%(<nav class="pagy-foundation-nav" role="navigation" aria-label="Pagination"><ul class="pagination">#{html}</ul></nav>)
|
25
|
-
end
|
26
|
-
|
27
|
-
# Javascript pagination for foundation: it returns a nav and a JSON tag used by the Pagy.nav javascript
|
28
|
-
def pagy_foundation_nav_js(pagy, id=pagy_id)
|
29
|
-
link, p_prev, p_next = pagy_link_proc(pagy), pagy.prev, pagy.next
|
30
|
-
tags = { 'before' => ( '<ul class="pagination">' \
|
31
|
-
+ (p_prev ? %(<li class="prev">#{link.call(p_prev, pagy_t('pagy.nav.prev'), 'aria-label="previous"')}</li>)
|
32
|
-
: %(<li class="prev disabled">#{pagy_t('pagy.nav.prev')}</li>)) ),
|
33
|
-
'link' => %(<li>#{link.call(PAGE_PLACEHOLDER)}</li>),
|
34
|
-
'active' => %(<li class="current">#{pagy.page}</li>),
|
35
|
-
'gap' => %(<li class="ellipsis gap" aria-hidden="true"></li>),
|
36
|
-
'after' => ( (p_next ? %(<li class="next">#{link.call(p_next, pagy_t('pagy.nav.next'), 'aria-label="next"')}</li>)
|
37
|
-
: %(<li class="next disabled">#{pagy_t('pagy.nav.next')}</li>)) \
|
38
|
-
+ '</ul>' ) }
|
39
|
-
%(<nav id="#{id}" class="pagy-foundation-nav-js" role="navigation" aria-label="Pagination"></nav>#{pagy_json_tag(:nav, id, tags, pagy.sequels, defined?(TRIM) && pagy.vars[:page_param])})
|
40
|
-
end
|
41
|
-
|
42
|
-
# Javascript combo pagination for Foundation: it returns a nav and a JSON tag used by the Pagy.combo_nav javascript
|
43
|
-
def pagy_foundation_combo_nav_js(pagy, id=pagy_id)
|
44
|
-
link, p_prev, p_next, p_page, p_pages = pagy_link_proc(pagy), pagy.prev, pagy.next, pagy.page, pagy.pages
|
45
|
-
|
46
|
-
html = %(<nav id="#{id}" class="pagy-foundation-combo-nav-js" role="navigation" aria-label="Pagination">) + %(<div class="input-group">)
|
47
|
-
html << (p_prev ? link.call(p_prev, pagy_t('pagy.nav.prev'), 'style="margin-bottom: 0px;" aria-label="previous" class="prev button primary"')
|
48
|
-
: %(<a style="margin-bottom: 0px;" class="prev button primary disabled" href="#">#{pagy_t('pagy.nav.prev')}</a>))
|
49
|
-
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
|
-
html << %(<span class="input-group-label">#{pagy_t('pagy.combo_nav_js', page_input: input, count: p_page, pages: p_pages)}</span>)
|
51
|
-
html << (p_next ? link.call(p_next, pagy_t('pagy.nav.next'), 'style="margin-bottom: 0px;" aria-label="next" class="next button primary"')
|
52
|
-
: %(<a style="margin-bottom: 0px;" class="next button primary disabled" href="#">#{pagy_t('pagy.nav.next')}</a>))
|
53
|
-
html << %(</div></nav>#{pagy_json_tag(:combo_nav, id, p_page, pagy_marked_link(link), defined?(TRIM) && pagy.vars[:page_param])})
|
54
|
-
end
|
55
|
-
|
56
|
-
end
|
57
|
-
end
|
data/lib/pagy/extras/items.rb
DELETED
@@ -1,65 +0,0 @@
|
|
1
|
-
# See the Pagy documentation: https://ddnexus.github.io/pagy/extras/items
|
2
|
-
# encoding: utf-8
|
3
|
-
# frozen_string_literal: true
|
4
|
-
|
5
|
-
require 'pagy/extras/shared'
|
6
|
-
|
7
|
-
class Pagy
|
8
|
-
|
9
|
-
# Default variables for this extra
|
10
|
-
VARS[:items_param] = :items
|
11
|
-
VARS[:max_items] = 100
|
12
|
-
|
13
|
-
ITEMS_PLACEHOLDER = '__pagy_items__'
|
14
|
-
|
15
|
-
# Handle a custom number of :items from params
|
16
|
-
module Backend ; private
|
17
|
-
|
18
|
-
def pagy_with_items(vars)
|
19
|
-
vars[:items] ||= (items = params[vars[:items_param] || VARS[:items_param]]) && # :items from :items_param
|
20
|
-
[items.to_i, vars.key?(:max_items) ? vars[:max_items] : VARS[:max_items]].compact.min # :items capped to :max_items
|
21
|
-
end
|
22
|
-
|
23
|
-
# add the pagy*_get_vars alias-chained methods for frontend, and defined/required extras
|
24
|
-
[nil, 'countless', 'elasticsearch_rails', 'searchkick'].each do |name|
|
25
|
-
prefix, if_start, if_end = "_#{name}", "if defined?(Pagy::#{name.upcase})", "end" if name
|
26
|
-
module_eval <<-RUBY
|
27
|
-
#{if_start}
|
28
|
-
alias_method :pagy#{prefix}_get_vars_without_items, :pagy#{prefix}_get_vars
|
29
|
-
def pagy#{prefix}_get_vars_with_items(collection, vars)
|
30
|
-
pagy_with_items(vars)
|
31
|
-
pagy#{prefix}_get_vars_without_items(collection, vars)
|
32
|
-
end
|
33
|
-
alias_method :pagy#{prefix}_get_vars, :pagy#{prefix}_get_vars_with_items
|
34
|
-
#{if_end}
|
35
|
-
RUBY
|
36
|
-
end
|
37
|
-
|
38
|
-
end
|
39
|
-
|
40
|
-
module Frontend
|
41
|
-
|
42
|
-
alias_method :pagy_url_for_without_items, :pagy_url_for
|
43
|
-
def pagy_url_for_with_items(page, pagy, url=false)
|
44
|
-
p_vars = pagy.vars; params = request.GET.merge(p_vars[:params]); params[p_vars[:page_param].to_s] = page
|
45
|
-
params[p_vars[:items_param].to_s] = p_vars[:items]
|
46
|
-
"#{request.base_url if url}#{request.path}?#{Rack::Utils.build_nested_query(pagy_get_params(params))}#{p_vars[:anchor]}"
|
47
|
-
end
|
48
|
-
alias_method :pagy_url_for, :pagy_url_for_with_items
|
49
|
-
|
50
|
-
# Return the items selector HTML. For example "Show [20] items per page"
|
51
|
-
def pagy_items_selector_js(pagy, id=pagy_id)
|
52
|
-
p_vars = pagy.vars
|
53
|
-
p_items = p_vars[:items]
|
54
|
-
p_vars[:items] = ITEMS_PLACEHOLDER
|
55
|
-
link = pagy_marked_link(pagy_link_proc(pagy))
|
56
|
-
p_vars[:items] = p_items # restore the items
|
57
|
-
|
58
|
-
html = EMPTY + %(<span id="#{id}">)
|
59
|
-
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;">)
|
60
|
-
html << %(#{pagy_t('pagy.items_selector_js', item_name: pagy_t(p_vars[:i18n_key], count: p_items), items_input: input, count: p_items)})
|
61
|
-
html << %(</span>#{pagy_json_tag(:items_selector, id, pagy.from, link, defined?(TRIM) && p_vars[:page_param])})
|
62
|
-
end
|
63
|
-
|
64
|
-
end
|
65
|
-
end
|
@@ -1,59 +0,0 @@
|
|
1
|
-
# See the Pagy documentation: https://ddnexus.github.io/pagy/extras/materialize
|
2
|
-
# encoding: utf-8
|
3
|
-
# frozen_string_literal: true
|
4
|
-
|
5
|
-
require 'pagy/extras/shared'
|
6
|
-
|
7
|
-
class Pagy
|
8
|
-
module Frontend
|
9
|
-
|
10
|
-
# Pagination for materialize: it returns the html with the series of links to the pages
|
11
|
-
def pagy_materialize_nav(pagy)
|
12
|
-
link, p_prev, p_next = pagy_link_proc(pagy), pagy.prev, pagy.next
|
13
|
-
html = EMPTY + (p_prev ? %(<li class="waves-effect prev">#{link.call p_prev, '<i class="material-icons">chevron_left</i>', 'aria-label="previous"'}</li>)
|
14
|
-
: %(<li class="prev disabled"><a href="#"><i class="material-icons">chevron_left</i></a></li>))
|
15
|
-
pagy.series.each do |item| # series example: [1, :gap, 7, 8, "9", 10, 11, :gap, 36]
|
16
|
-
html << if item.is_a?(Integer); %(<li class="waves-effect">#{link.call item}</li>) # page link
|
17
|
-
elsif item.is_a?(String) ; %(<li class="active">#{link.call item}</li>) # active page
|
18
|
-
elsif item == :gap ; %(<li class="gap disabled"><a href="#">#{pagy_t('pagy.nav.gap')}</a></li>) # page gap
|
19
|
-
end
|
20
|
-
end
|
21
|
-
html << (p_next ? %(<li class="waves-effect next">#{link.call p_next, '<i class="material-icons">chevron_right</i>', 'aria-label="next"'}</li>)
|
22
|
-
: %(<li class="next disabled"><a href="#"><i class="material-icons">chevron_right</i></a></li>))
|
23
|
-
%(<div class="pagy-materialize-nav pagination" role="navigation" aria-label="pager"><ul class="pagination">#{html}</ul></div>)
|
24
|
-
end
|
25
|
-
|
26
|
-
# Javascript pagination for materialize: it returns a nav and a JSON tag used by the Pagy.nav javascript
|
27
|
-
def pagy_materialize_nav_js(pagy, id=pagy_id)
|
28
|
-
link, p_prev, p_next = pagy_link_proc(pagy), pagy.prev, pagy.next
|
29
|
-
tags = { 'before' => ( '<ul class="pagination">' \
|
30
|
-
+ (p_prev ? %(<li class="waves-effect prev">#{link.call(p_prev, '<i class="material-icons">chevron_left</i>', 'aria-label="previous"')}</li>)
|
31
|
-
: %(<li class="prev disabled"><a href="#"><i class="material-icons">chevron_left</i></a></li>)) ),
|
32
|
-
'link' => %(<li class="waves-effect">#{mark = link.call(PAGE_PLACEHOLDER)}</li>),
|
33
|
-
'active' => %(<li class="active">#{mark}</li>),
|
34
|
-
'gap' => %(<li class="gap disabled"><a href="#">#{pagy_t('pagy.nav.gap')}</a></li>),
|
35
|
-
'after' => ( (p_next ? %(<li class="waves-effect next">#{link.call(p_next, '<i class="material-icons">chevron_right</i>', 'aria-label="next"')}</li>)
|
36
|
-
: %(<li class="next disabled"><a href="#"><i class="material-icons">chevron_right</i></a></li>)) \
|
37
|
-
+ '</ul>' ) }
|
38
|
-
%(<div id="#{id}" class="pagy-materialize-nav-js" role="navigation" aria-label="pager"></div>#{pagy_json_tag(:nav, id, tags, pagy.sequels, defined?(TRIM) && pagy.vars[:page_param])})
|
39
|
-
end
|
40
|
-
|
41
|
-
# Javascript combo pagination for materialize: it returns a nav and a JSON tag used by the Pagy.combo_nav javascript
|
42
|
-
def pagy_materialize_combo_nav_js(pagy, id=pagy_id)
|
43
|
-
link, p_prev, p_next, p_page, p_pages = pagy_link_proc(pagy), pagy.prev, pagy.next, pagy.page, pagy.pages
|
44
|
-
|
45
|
-
html = %(<div id="#{id}" class="pagy-materialize-combo-nav-js pagination" role="navigation" aria-label="pager">) \
|
46
|
-
+ %(<div class="pagy-compact-chip role="group" style="height: 35px; border-radius: 18px; background: #e4e4e4; display: inline-block;">)
|
47
|
-
html << '<ul class="pagination" style="margin: 0px;">'
|
48
|
-
li_style = 'style="vertical-align: middle;"'
|
49
|
-
html << (p_prev ? %(<li class="waves-effect prev" #{li_style}>#{link.call p_prev, '<i class="material-icons">chevron_left</i>', 'aria-label="previous"'}</li>)
|
50
|
-
: %(<li class="prev disabled" #{li_style}><a href="#"><i class="material-icons">chevron_left</i></a></li>))
|
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;">)
|
52
|
-
html << %(<div class="pagy-combo-input btn-flat" style="cursor: default; padding: 0px">#{pagy_t('pagy.combo_nav_js', page_input: input, count: p_page, pages: p_pages)}</div>)
|
53
|
-
html << (p_next ? %(<li class="waves-effect next" #{li_style}>#{link.call p_next, '<i class="material-icons">chevron_right</i>', 'aria-label="next"'}</li>)
|
54
|
-
: %(<li class="next disabled" #{li_style}><a href="#"><i class="material-icons">chevron_right</i></a></li>))
|
55
|
-
html << %(</ul></div>#{pagy_json_tag(:combo_nav, id, p_page, pagy_marked_link(link), defined?(TRIM) && pagy.vars[:page_param])})
|
56
|
-
end
|
57
|
-
|
58
|
-
end
|
59
|
-
end
|
data/lib/pagy/extras/navs.rb
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
# See the Pagy documentation: https://ddnexus.github.io/pagy/extras/navs
|
2
|
-
# encoding: utf-8
|
3
|
-
# frozen_string_literal: true
|
4
|
-
|
5
|
-
require 'pagy/extras/shared'
|
6
|
-
|
7
|
-
class Pagy
|
8
|
-
module Frontend
|
9
|
-
|
10
|
-
# Javascript pagination: it returns a nav and a JSON tag used by the Pagy.nav javascript
|
11
|
-
def pagy_nav_js(pagy, id=pagy_id)
|
12
|
-
link, p_prev, p_next = pagy_link_proc(pagy), pagy.prev, pagy.next
|
13
|
-
tags = { 'before' => p_prev ? %(<span class="page prev">#{link.call p_prev, pagy_t('pagy.nav.prev'), 'aria-label="previous"'}</span> )
|
14
|
-
: %(<span class="page prev disabled">#{pagy_t('pagy.nav.prev')}</span> ),
|
15
|
-
'link' => %(<span class="page">#{link.call(PAGE_PLACEHOLDER)}</span> ),
|
16
|
-
'active' => %(<span class="page active">#{pagy.page}</span> ),
|
17
|
-
'gap' => %(<span class="page gap">#{pagy_t('pagy.nav.gap')}</span> ),
|
18
|
-
'after' => p_next ? %(<span class="page next">#{link.call p_next, pagy_t('pagy.nav.next'), 'aria-label="next"'}</span>)
|
19
|
-
: %(<span class="page next disabled">#{pagy_t('pagy.nav.next')}</span>) }
|
20
|
-
%(<nav id="#{id}" class="pagy-nav-js pagination" role="navigation" aria-label="pager"></nav>#{pagy_json_tag(:nav, id, tags, pagy.sequels, defined?(TRIM) && pagy.vars[:page_param])})
|
21
|
-
end
|
22
|
-
|
23
|
-
# Javascript combo pagination: it returns a nav and a JSON tag used by the Pagy.combo_nav javascript
|
24
|
-
def pagy_combo_nav_js(pagy, id=pagy_id)
|
25
|
-
link, p_prev, p_next, p_page, p_pages = pagy_link_proc(pagy), pagy.prev, pagy.next, pagy.page, pagy.pages
|
26
|
-
|
27
|
-
html = EMPTY + %(<nav id="#{id}" class="pagy-combo-nav-js-js pagination" role="navigation" aria-label="pager">)
|
28
|
-
html << (p_prev ? %(<span class="page prev">#{link.call p_prev, pagy_t('pagy.nav.prev'), 'aria-label="previous"'}</span> )
|
29
|
-
: %(<span class="page prev disabled">#{pagy_t('pagy.nav.prev')}</span> ))
|
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;">)
|
31
|
-
html << %(<span class="pagy-combo-input" style="margin: 0 0.6rem;">#{pagy_t('pagy.combo_nav_js', page_input: input, count: p_page, pages: p_pages)}</span> )
|
32
|
-
html << (p_next ? %(<span class="page next">#{link.call p_next, pagy_t('pagy.nav.next'), 'aria-label="next"'}</span>)
|
33
|
-
: %(<span class="page next disabled">#{pagy_t('pagy.nav.next')}</span>))
|
34
|
-
html << %(</nav>#{pagy_json_tag(:combo_nav, id, p_page, pagy_marked_link(link), defined?(TRIM) && pagy.vars[:page_param])})
|
35
|
-
end
|
36
|
-
|
37
|
-
end
|
38
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
# Support module to capture search calls
|
2
|
-
# encoding: utf-8
|
3
|
-
# frozen_string_literal: true
|
4
|
-
|
5
|
-
class Pagy
|
6
|
-
module Search
|
7
|
-
# returns an array used to delay the call of #search
|
8
|
-
# after the pagination variables are merged to the options
|
9
|
-
# it also pushes to the same array an eventually called method and arguments
|
10
|
-
# the last search argument must be a hash option
|
11
|
-
def pagy_search(*search_args, &block)
|
12
|
-
search_args << {} unless search_args[-1].is_a?(Hash)
|
13
|
-
[self, search_args, block].tap do |args|
|
14
|
-
args.define_singleton_method(:method_missing){|*a| args += a}
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
data/lib/pagy/extras/semantic.rb
DELETED
@@ -1,55 +0,0 @@
|
|
1
|
-
# See the Pagy documentation: https://ddnexus.github.io/pagy/extras/semantic
|
2
|
-
# encoding: utf-8
|
3
|
-
# frozen_string_literal: true
|
4
|
-
|
5
|
-
require 'pagy/extras/shared'
|
6
|
-
|
7
|
-
class Pagy
|
8
|
-
module Frontend
|
9
|
-
|
10
|
-
# Pagination for semantic: it returns the html with the series of links to the pages
|
11
|
-
def pagy_semantic_nav(pagy)
|
12
|
-
link, p_prev, p_next = pagy_link_proc(pagy, 'class="item"'), pagy.prev, pagy.next
|
13
|
-
|
14
|
-
html = EMPTY + (p_prev ? %(#{link.call p_prev, '<i class="left small chevron icon"></i>', 'aria-label="previous"'})
|
15
|
-
: %(<div class="item disabled"><i class="left small chevron icon"></i></div>))
|
16
|
-
pagy.series.each do |item| # series example: [1, :gap, 7, 8, "9", 10, 11, :gap, 36]
|
17
|
-
html << if item.is_a?(Integer); %(#{link.call item}) # page link
|
18
|
-
elsif item.is_a?(String) ; %(<a class="item active">#{item}</a>) # current page
|
19
|
-
elsif item == :gap ; %(<div class="disabled item">...</div>) # page gap
|
20
|
-
end
|
21
|
-
end
|
22
|
-
html << (p_next ? %(#{link.call p_next, '<i class="right small chevron icon"></i>', 'aria-label="next"'})
|
23
|
-
: %(<div class="item disabled"><i class="right small chevron icon"></i></div>))
|
24
|
-
%(<div class="pagy-semantic-nav ui pagination menu" aria-label="pager">#{html}</div>)
|
25
|
-
end
|
26
|
-
|
27
|
-
# Javascript pagination for semantic: it returns a nav and a JSON tag used by the Pagy.nav javascript
|
28
|
-
def pagy_semantic_nav_js(pagy, id=pagy_id)
|
29
|
-
link, p_prev, p_next = pagy_link_proc(pagy, 'class="item"'), pagy.prev, pagy.next
|
30
|
-
tags = { 'before' => (p_prev ? %(#{link.call(p_prev, '<i class="left small chevron icon"></i>', 'aria-label="previous"')})
|
31
|
-
: %(<div class="item disabled"><i class="left small chevron icon"></i></div>)),
|
32
|
-
'link' => %(#{link.call(PAGE_PLACEHOLDER)}),
|
33
|
-
'active' => %(<a class="item active">#{pagy.page}</a>),
|
34
|
-
'gap' => %(<div class="disabled item">#{pagy_t('pagy.nav.gap')}</div>),
|
35
|
-
'after' => (p_next ? %(#{link.call(p_next, '<i class="right small chevron icon"></i>', 'aria-label="next"')})
|
36
|
-
: %(<div class="item disabled"><i class="right small chevron icon"></i></div>)) }
|
37
|
-
%(<div id="#{id}" class="pagy-semantic-nav-js ui pagination menu" role="navigation" aria-label="pager"></div>#{pagy_json_tag(:nav, id, tags, pagy.sequels, defined?(TRIM) && pagy.vars[:page_param])})
|
38
|
-
end
|
39
|
-
|
40
|
-
# Combo pagination for semantic: it returns a nav and a JSON tag used by the Pagy.combo_nav javascript
|
41
|
-
def pagy_semantic_combo_nav_js(pagy, id=pagy_id)
|
42
|
-
link, p_prev, p_next, p_page, p_pages = pagy_link_proc(pagy, 'class="item"'), pagy.prev, pagy.next, pagy.page, pagy.pages
|
43
|
-
|
44
|
-
html = EMPTY + %(<div id="#{id}" class="pagy-semantic-combo-nav-js ui compact menu" role="navigation" aria-label="pager">)
|
45
|
-
html << (p_prev ? %(#{link.call p_prev, '<i class="left small chevron icon"></i>', 'aria-label="previous"'})
|
46
|
-
: %(<div class="item disabled"><i class="left small chevron icon"></i></div>))
|
47
|
-
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">)
|
48
|
-
html << %(<div class="pagy-combo-input item">#{pagy_t('pagy.combo_nav_js', page_input: input, count: p_page, pages: p_pages)}</div> )
|
49
|
-
html << (p_next ? %(#{link.call p_next, '<i class="right small chevron icon"></i>', 'aria-label="next"'})
|
50
|
-
: %(<div class="item disabled"><i class="right small chevron icon"></i></div>))
|
51
|
-
html << %(</div>#{pagy_json_tag(:combo_nav, id, p_page, pagy_marked_link(link), defined?(TRIM) && pagy.vars[:page_param])})
|
52
|
-
end
|
53
|
-
|
54
|
-
end
|
55
|
-
end
|
data/lib/pagy/extras/shared.rb
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
require 'digest'
|
5
|
-
|
6
|
-
class Pagy
|
7
|
-
|
8
|
-
# default :steps: false will use {0 => @vars[:size]}
|
9
|
-
VARS[:steps] = false
|
10
|
-
|
11
|
-
# `Pagy` instance method used by the `pagy*_nav_js` helpers.
|
12
|
-
# It returns the sequels of width/series generated from the :steps hash
|
13
|
-
# Example:
|
14
|
-
# >> pagy = Pagy.new(count:1000, page: 20, steps: {0 => [1,2,2,1], 350 => [2,3,3,2], 550 => [3,4,4,3]})
|
15
|
-
# >> pagy.sequels
|
16
|
-
# #=> { "0" => [1, :gap, 18, 19, "20", 21, 22, :gap, 50],
|
17
|
-
# "350" => [1, 2, :gap, 17, 18, 19, "20", 21, 22, 23, :gap, 49, 50],
|
18
|
-
# "550" => [1, 2, 3, :gap, 16, 17, 18, 19, "20", 21, 22, 23, 24, :gap, 48, 49, 50] }
|
19
|
-
# Notice: if :steps is false it will use the single {0 => @vars[:size]} size
|
20
|
-
def sequels
|
21
|
-
steps = @vars[:steps] || {0 => @vars[:size]}
|
22
|
-
steps.key?(0) or raise(VariableError.new(self), "expected :steps to define the 0 width; got #{steps.inspect}")
|
23
|
-
sequels = {}; steps.each {|width, size| sequels[width.to_s] = series(size)}; sequels
|
24
|
-
end
|
25
|
-
|
26
|
-
module Frontend
|
27
|
-
|
28
|
-
if defined?(Oj)
|
29
|
-
# it returns a script tag with the JSON-serialized args generated with the faster oj gem
|
30
|
-
def pagy_json_tag(*args)
|
31
|
-
%(<script type="application/json" class="pagy-json">#{Oj.dump(args, mode: :strict)}</script>)
|
32
|
-
end
|
33
|
-
else
|
34
|
-
require 'json'
|
35
|
-
# it returns a script tag with the JSON-serialized args generated with the slower to_json
|
36
|
-
def pagy_json_tag(*args)
|
37
|
-
%(<script type="application/json" class="pagy-json">#{args.to_json}</script>)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
# it returns the SHA1 (fastest on modern ruby) string used as default `id` attribute by all the `*_js` tags
|
42
|
-
def pagy_id
|
43
|
-
"pagy-#{Digest::SHA1.hexdigest(caller(2..2)[0].split(':in')[0])}"
|
44
|
-
end
|
45
|
-
|
46
|
-
# it returns the marked link to used by pagy.js
|
47
|
-
def pagy_marked_link(link)
|
48
|
-
link.call(PAGE_PLACEHOLDER, '', 'style="display: none;"')
|
49
|
-
end
|
50
|
-
|
51
|
-
end
|
52
|
-
|
53
|
-
end
|
data/lib/pagy/extras/support.rb
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
# See the Pagy documentation: https://ddnexus.github.io/pagy/extras/support
|
2
|
-
# encoding: utf-8
|
3
|
-
# frozen_string_literal: true
|
4
|
-
|
5
|
-
class Pagy
|
6
|
-
|
7
|
-
module Frontend
|
8
|
-
|
9
|
-
def pagy_prev_url(pagy)
|
10
|
-
pagy_url_for(pagy.prev, pagy) if pagy.prev
|
11
|
-
end
|
12
|
-
|
13
|
-
def pagy_next_url(pagy)
|
14
|
-
pagy_url_for(pagy.next, pagy) if pagy.next
|
15
|
-
end
|
16
|
-
|
17
|
-
def pagy_prev_link(pagy, text = pagy_t('pagy.nav.prev'), link_extra = '')
|
18
|
-
pagy.prev ? %(<span class="page prev"><a href="#{pagy_prev_url(pagy)}" rel="prev" aria-label="previous" #{pagy.vars[:link_extra]} #{link_extra}>#{text}</a></span>)
|
19
|
-
: %(<span class="page prev disabled">#{text}</span>)
|
20
|
-
end
|
21
|
-
|
22
|
-
def pagy_next_link(pagy, text = pagy_t('pagy.nav.next'), link_extra = '')
|
23
|
-
pagy.next ? %(<span class="page next"><a href="#{pagy_next_url(pagy)}" rel="next" aria-label="next" #{pagy.vars[:link_extra]} #{link_extra}>#{text}</a></span>)
|
24
|
-
: %(<span class="page next disabled">#{text}</span>)
|
25
|
-
end
|
26
|
-
|
27
|
-
end
|
28
|
-
|
29
|
-
end
|
data/lib/pagy/extras/uikit.rb
DELETED
@@ -1,62 +0,0 @@
|
|
1
|
-
# See the Pagy documentation: https://ddnexus.github.io/pagy/extras/uikit
|
2
|
-
# encoding: utf-8
|
3
|
-
# frozen_string_literal: true
|
4
|
-
|
5
|
-
require 'pagy/extras/shared'
|
6
|
-
|
7
|
-
class Pagy
|
8
|
-
module Frontend
|
9
|
-
|
10
|
-
# Pagination for uikit: it returns the html with the series of links to the pages
|
11
|
-
def pagy_uikit_nav(pagy)
|
12
|
-
link, p_prev, p_next = pagy_link_proc(pagy), pagy.prev, pagy.next
|
13
|
-
|
14
|
-
previous_span = "<span uk-pagination-previous>#{pagy_t('pagy.nav.prev')}</span>"
|
15
|
-
html = EMPTY + (p_prev ? %(<li>#{link.call p_prev, previous_span}</li>)
|
16
|
-
: %(<li class="uk-disabled"><a href="#">#{previous_span}</a></li>))
|
17
|
-
pagy.series.each do |item|
|
18
|
-
html << if item.is_a?(Integer); %(<li>#{link.call item}</li>)
|
19
|
-
elsif item.is_a?(String) ; %(<li class="uk-active"><span>#{item}</span></li>)
|
20
|
-
elsif item == :gap ; %(<li class="uk-disabled"><span>#{pagy_t('pagy.nav.gap')}</span></li>)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
next_span = "<span uk-pagination-next>#{pagy_t('pagy.nav.next')}</span>"
|
24
|
-
html << (p_next ? %(<li>#{link.call p_next, next_span}</li>)
|
25
|
-
: %(<li class="uk-disabled"><a href="#">#{next_span}</a></li>))
|
26
|
-
%(<ul class="pagy-uikit-nav uk-pagination uk-flex-center">#{html}</ul>)
|
27
|
-
end
|
28
|
-
|
29
|
-
# Javascript pagination for uikit: it returns a nav and a JSON tag used by the Pagy.nav javascript
|
30
|
-
def pagy_uikit_nav_js(pagy, id=pagy_id)
|
31
|
-
link, p_prev, p_next = pagy_link_proc(pagy), pagy.prev, pagy.next
|
32
|
-
previous_span = "<span uk-pagination-previous>#{pagy_t('pagy.nav.prev')}</span>"
|
33
|
-
next_span = "<span uk-pagination-next>#{pagy_t('pagy.nav.next')}</span>"
|
34
|
-
tags = { 'before' => p_prev ? %(<li>#{link.call p_prev, previous_span}</li>)
|
35
|
-
: %(<li class="uk-disabled"><a href="#">#{previous_span}</a></li>),
|
36
|
-
'link' => %(<li>#{link.call(PAGE_PLACEHOLDER)}</li>),
|
37
|
-
'active' => %(<li class="uk-active"><span>#{PAGE_PLACEHOLDER}</span></li>),
|
38
|
-
'gap' => %(<li class="uk-disabled"><span>#{pagy_t('pagy.nav.gap')}</span></li>),
|
39
|
-
'after' => p_next ? %(<li>#{link.call p_next, next_span}</li>)
|
40
|
-
: %(<li class="uk-disabled"><a href="#">#{next_span}</a></li>) }
|
41
|
-
%(<ul id="#{id}" class="pagy-uikit-nav-js uk-pagination uk-flex-center"></ul>#{pagy_json_tag(:nav, id, tags, pagy.sequels, defined?(TRIM) && pagy.vars[:page_param])})
|
42
|
-
end
|
43
|
-
|
44
|
-
# Javascript combo pagination for uikit: it returns a nav and a JSON tag used by the Pagy.combo_nav javascript
|
45
|
-
def pagy_uikit_combo_nav_js(pagy, id=pagy_id)
|
46
|
-
link, p_prev, p_next, p_page, p_pages = pagy_link_proc(pagy), pagy.prev, pagy.next, pagy.page, pagy.pages
|
47
|
-
|
48
|
-
html = %(<div id="#{id}" class="pagy-uikit-combo-nav-js uk-button-group">)
|
49
|
-
html = html + (p_prev ? link.call(p_prev, pagy_t('pagy.nav.prev'), 'class="uk-button uk-button-default"')
|
50
|
-
: %(<button class="uk-button uk-button-default" disabled>#{pagy_t('pagy.nav.prev')}</button>))
|
51
|
-
|
52
|
-
html << %(<div class="uk-text-middle uk-margin-left uk-margin-right">)
|
53
|
-
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;">)
|
54
|
-
html << pagy_t('pagy.combo_nav_js', page_input: input, count: p_page, pages: p_pages) + '</div>'
|
55
|
-
|
56
|
-
html << (p_next ? link.call(p_next, pagy_t('pagy.nav.next'), 'class="uk-button uk-button-default"')
|
57
|
-
: %(<button class="uk-button uk-button-default" disabled>#{pagy_t('pagy.nav.next')}</button>))
|
58
|
-
|
59
|
-
html << %(</div>#{pagy_json_tag(:combo_nav, id, p_page, pagy_marked_link(link), defined?(TRIM) && pagy.vars[:page_param])})
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
<%#
|
2
|
-
This template is i18n-ready: if you don't use i18n, then you can replace the pagy_t
|
3
|
-
calls with the actual strings ("‹ Prev", "Next ›", "…").
|
4
|
-
|
5
|
-
The link variable is set to a proc that returns the link tag.
|
6
|
-
Usage: link.call( page_number [, text [, extra_attributes_string ]])
|
7
|
-
-%>
|
8
|
-
<% link = pagy_link_proc(pagy, 'class="page-link"') -%>
|
9
|
-
<%# -%><nav aria-label="pager" class="pagy-bootstrap-nav" role="navigation">
|
10
|
-
<%# -%> <ul class="pagination">
|
11
|
-
<% if pagy.prev -%> <li class="page-item prev"><%== link.call(pagy.prev, pagy_t('pagy.nav.prev'), 'aria-label="previous"') %></li>
|
12
|
-
<% else -%> <li class="page-item prev disabled"><a href="#" class="page-link"><%== pagy_t('pagy.nav.prev') %></a></li>
|
13
|
-
<% end -%>
|
14
|
-
<% pagy.series.each do |item| # series example: [1, :gap, 7, 8, "9", 10, 11, :gap, 36] -%>
|
15
|
-
<% if item.is_a?(Integer) -%> <li class="page-item"><%== link.call(item) %></li>
|
16
|
-
<% elsif item.is_a?(String) -%> <li class="page-item active"><%== link.call(item) %></li>
|
17
|
-
<% elsif item == :gap -%> <li class="page-item disabled gap"><a href="#" class="page-link"><%== pagy_t('pagy.nav.gap') %></a></li>
|
18
|
-
<% end -%>
|
19
|
-
<% end -%>
|
20
|
-
<% if pagy.next -%> <li class="page-item next"><%== link.call(pagy.next, pagy_t('pagy.nav.next'), 'aria-label="next"') %></li>
|
21
|
-
<% else -%> <li class="page-item next disabled"><a href="#" class="page-link"><%== pagy_t('pagy.nav.next') %></a></li>
|
22
|
-
<% end -%>
|
23
|
-
<%# -%> </ul>
|
24
|
-
<%# -%></nav>
|