pagy 1.2.1 → 1.3
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/lib/javascripts/pagy.js +31 -25
- data/lib/locales/README.md +15 -0
- data/lib/locales/nl.yml +20 -0
- data/lib/locales/plurals.rb +22 -9
- data/lib/pagy.rb +1 -1
- data/lib/pagy/countless.rb +9 -10
- data/lib/pagy/extras/bootstrap.rb +5 -5
- data/lib/pagy/extras/bulma.rb +5 -5
- data/lib/pagy/extras/foundation.rb +5 -5
- data/lib/pagy/extras/items.rb +1 -1
- data/lib/pagy/extras/materialize.rb +5 -5
- data/lib/pagy/extras/plain.rb +4 -4
- data/lib/pagy/extras/semantic.rb +5 -5
- data/lib/pagy/extras/shared.rb +13 -7
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b17506ef8c1eb28b4d309d528129738e50df21e8133a5a5b93b513770bd166df
|
4
|
+
data.tar.gz: 2083ac8f294973bb99fa458bb97ca70894b07299bf430ccb0e30739a08b72b98
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 23b98cd8d721407c821f32305c8acff47ced168eead12030fa54b5547323a444afb524e834e4ab2417aaebac593e832e6fd93df64045164b6f31d90aa2a0fd8e
|
7
|
+
data.tar.gz: 1d66cffcb0396a788db7f2fbf2818e7d440e3f6530bb8e50262d07b888e5ad1be5cc717e3f97da0750172c27248bfd33b465452e20331e241b4fb57617cf135b
|
data/lib/javascripts/pagy.js
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
// See the Pagy documentation: https://ddnexus.github.io/pagy/extras#javascript
|
2
2
|
|
3
|
+
// Pagy namespace
|
3
4
|
function Pagy(){}
|
4
5
|
|
5
|
-
Pagy.windowListeners =
|
6
|
+
Pagy.windowListeners = {};
|
6
7
|
|
7
8
|
Pagy.addInputEventListeners = function(input, handler){
|
8
9
|
// select the content on click: easier for typing a number
|
@@ -49,33 +50,37 @@ Pagy.items = function(id, marker, from){
|
|
49
50
|
};
|
50
51
|
|
51
52
|
Pagy.responsive = function(id, tags, widths, series){
|
52
|
-
var pagyEl
|
53
|
-
|
54
|
-
lastWidth
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
53
|
+
var pagyEl = document.getElementById(id),
|
54
|
+
container = pagyEl.parentElement,
|
55
|
+
lastWidth = undefined,
|
56
|
+
resizeId = 0,
|
57
|
+
render = function(){
|
58
|
+
var width = widths.find(function(w) {return container.clientWidth > w});
|
59
|
+
if (width !== lastWidth) {
|
60
|
+
while (pagyEl.firstChild) { pagyEl.removeChild(pagyEl.firstChild) }
|
61
|
+
var html = tags['before'];
|
62
|
+
series[width].forEach(function(item) {html += tags[item]});
|
63
|
+
html += tags['after'];
|
64
|
+
pagyEl.insertAdjacentHTML('beforeend', html);
|
65
|
+
lastWidth = width;
|
66
|
+
}
|
67
|
+
},
|
68
|
+
resize = function(){ // call render once, after window.resize is done
|
69
|
+
clearTimeout(resizeId);
|
70
|
+
resizeId = setTimeout(render, 300);
|
71
|
+
};
|
72
|
+
// remove the previous window resize listener which may result in firing the render multiple times
|
73
|
+
window.removeEventListener('resize', Pagy.windowListeners[id], true);
|
74
|
+
window.addEventListener('resize', resize, true);
|
75
|
+
Pagy.windowListeners[id] = resize;
|
69
76
|
render();
|
70
77
|
};
|
71
78
|
|
72
|
-
Pagy.init = function(){
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
for (var i = 0, len = json.length; i < len; i++) {
|
78
|
-
var args = JSON.parse(json[i].innerHTML);
|
79
|
+
Pagy.init = function(arg){
|
80
|
+
var target = arg instanceof Event || arg === undefined ? document : arg,
|
81
|
+
jsonTags = target.getElementsByClassName('pagy-json');
|
82
|
+
for (var i = 0, len = jsonTags.length; i < len; i++) {
|
83
|
+
var args = JSON.parse(jsonTags[i].innerHTML);
|
79
84
|
Pagy[args.shift()].apply(null, args);
|
80
85
|
}
|
81
86
|
// Support for legacy overridden helpers. It will be removed in 2.0
|
@@ -87,6 +92,7 @@ Pagy.init = function(){
|
|
87
92
|
})
|
88
93
|
};
|
89
94
|
|
95
|
+
// namespace for custom init functions
|
90
96
|
function PagyInit(){}
|
91
97
|
|
92
98
|
Pagy.applyInit = function(name, payload){ PagyInit[name].apply(null, [payload]) };
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# Pagy locales
|
2
|
+
|
3
|
+
### Please, submit your translation!
|
4
|
+
|
5
|
+
If you are using pagy with some language missing from the dictionary files, please, submit your translation!
|
6
|
+
|
7
|
+
The `pagy.info.single_page`, `pagy.info.item_name` and `pagy.items` keys of the yaml file are pluralized according to the plural rules of the language.
|
8
|
+
|
9
|
+
If you are going to submit a dictionary, please check wether the pluralization type of your language exists in the [plurals.rb](https://github.com/ddnexus/pagy/blob/master/lib/locales/plurals.rb) file. If it is missing, please, report it. Thanks.
|
10
|
+
|
11
|
+
### Useful Links
|
12
|
+
|
13
|
+
* [Pagy I18n Documentation](https://ddnexus.github.io/pagy/api/frontend#i18n)
|
14
|
+
* [i18n extra](https://ddnexus.github.io/pagy/extra/i18n)
|
15
|
+
|
data/lib/locales/nl.yml
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
nl:
|
2
|
+
pagy:
|
3
|
+
nav:
|
4
|
+
prev: "‹ Vorige"
|
5
|
+
next: "Volgende ›"
|
6
|
+
gap: "…"
|
7
|
+
info:
|
8
|
+
single_page:
|
9
|
+
zero: "Geen %{item_name} gevonden"
|
10
|
+
one: "Toont <b>1</b> %{item_name}"
|
11
|
+
other: "Toont <b>alle %{count}</b> %{item_name}"
|
12
|
+
multiple_pages: "Toont <b>%{from}-%{to}</b> %{item_name} van <b>%{count}</b> in totaal"
|
13
|
+
item_name:
|
14
|
+
zero: "stuks"
|
15
|
+
one: "stuk"
|
16
|
+
other: "stuks"
|
17
|
+
compact: "Pagina %{page_input} van %{pages}"
|
18
|
+
items:
|
19
|
+
one: "Toont %{items_input} item per pagina"
|
20
|
+
other: "Toont %{items_input} items per pagina"
|
data/lib/locales/plurals.rb
CHANGED
@@ -3,24 +3,36 @@
|
|
3
3
|
# frozen_string_literal: true
|
4
4
|
|
5
5
|
# utility variables
|
6
|
-
zero_one = ['zero', 'one']
|
7
|
-
from2to4 = (2..4)
|
8
|
-
from5to9 = (5..9)
|
9
|
-
from11to14 = (11..14)
|
10
|
-
from12to14 = (12..14)
|
6
|
+
zero_one = ['zero', 'one'].freeze
|
7
|
+
from2to4 = (2..4).freeze
|
8
|
+
from5to9 = (5..9).freeze
|
9
|
+
from11to14 = (11..14).freeze
|
10
|
+
from12to14 = (12..14).freeze
|
11
11
|
|
12
12
|
# Plurals
|
13
13
|
# A plural proc returns a plural type string based on the passed count
|
14
14
|
# Each plural proc may apply to one or more languages below
|
15
15
|
plurals = {
|
16
|
-
zero_one_other:
|
17
|
-
|
16
|
+
zero_one_other: -> (count) {zero_one[count] || 'other'},
|
17
|
+
|
18
|
+
zero_one_few_many_other: -> (count) do
|
18
19
|
mod10, mod100 = count % 10, count % 100
|
19
|
-
if
|
20
|
+
if count == 0 ; 'zero'
|
21
|
+
elsif mod10 == 1 && mod100 != 11 ; 'one'
|
20
22
|
elsif from2to4.cover?(mod10) && !from12to14.cover?(mod100) ; 'few'
|
21
23
|
elsif mod10 == 0 || from5to9.cover?(mod10) || from11to14.cover?(mod100) ; 'many'
|
22
24
|
else 'other'
|
23
25
|
end
|
26
|
+
end,
|
27
|
+
|
28
|
+
pl: -> (count) do
|
29
|
+
mod10, mod100 = count % 10, count % 100
|
30
|
+
if count == 0 ; 'zero'
|
31
|
+
elsif count == 1 ; 'one'
|
32
|
+
elsif from2to4.cover?(mod10) && !from12to14.cover?(mod100) ; 'few'
|
33
|
+
elsif [0, 1].include?(mod10) || from5to9.cover?(mod10) || from12to14.cover?(mod100) ; 'many'
|
34
|
+
else 'other'
|
35
|
+
end
|
24
36
|
end
|
25
37
|
}
|
26
38
|
|
@@ -30,7 +42,8 @@ plurals = {
|
|
30
42
|
# is the :zero_one_other plural (used for English)
|
31
43
|
Hash.new(plurals[:zero_one_other]).tap do |languages|
|
32
44
|
languages['en'] = plurals[:zero_one_other]
|
33
|
-
languages['ru'] = plurals[:
|
45
|
+
languages['ru'] = plurals[:zero_one_few_many_other]
|
46
|
+
languages['pl'] = plurals[:pl]
|
34
47
|
end
|
35
48
|
|
36
49
|
# PR for other languages and plurals are very welcome. Thanks!
|
data/lib/pagy.rb
CHANGED
data/lib/pagy/countless.rb
CHANGED
@@ -14,16 +14,15 @@ class Pagy
|
|
14
14
|
@offset = @items * (@page - 1) + @outset # pagination offset + outset (initial offset)
|
15
15
|
end
|
16
16
|
|
17
|
-
# Finalize the instance variables based on the
|
18
|
-
def finalize(
|
19
|
-
|
20
|
-
@pages = @last = (
|
21
|
-
@items =
|
22
|
-
@from =
|
23
|
-
@to =
|
24
|
-
@prev = (@page-1 unless @page == 1)
|
25
|
-
@next =
|
26
|
-
@next = (@page == @last ? (1 if @vars[:cycle]) : @page+1) # nil if no next page
|
17
|
+
# Finalize the instance variables based on the fetched items
|
18
|
+
def finalize(fetched)
|
19
|
+
fetched == 0 && @page > 1 and raise(OverflowError.new(self), "page #{@page} got no items")
|
20
|
+
@pages = @last = (fetched > @items ? @page + 1 : @page) # set the @pages and @last
|
21
|
+
@items = fetched if fetched < @items && fetched > 0 # adjust items for last non-empty page
|
22
|
+
@from = fetched == 0 ? 0 : @offset+1 - @outset # page begins from item
|
23
|
+
@to = fetched == 0 ? 0 : @offset + @items - @outset # page ends to item
|
24
|
+
@prev = (@page-1 unless @page == 1) # nil if no prev page
|
25
|
+
@next = @page == @last ? (1 if @vars[:cycle]) : @page+1 # nil if no next page, 1 if :cycle
|
27
26
|
self
|
28
27
|
end
|
29
28
|
|
@@ -22,11 +22,11 @@ class Pagy
|
|
22
22
|
: %(<li class="page-item next disabled"><a href="#" class="page-link">#{pagy_t('pagy.nav.next')}</a></li>))
|
23
23
|
%(<nav class="pagy-nav-bootstrap pagy-bootstrap-nav pagination" role="navigation" aria-label="pager"><ul class="pagination">#{html}</ul></nav>)
|
24
24
|
end
|
25
|
-
|
25
|
+
deprecate :pagy_nav_bootstrap, :pagy_bootstrap_nav
|
26
26
|
|
27
27
|
# Compact pagination for bootstrap: it returns the html with the series of links to the pages
|
28
28
|
# we use a numeric input tag to set the page and the Pagy.compact javascript to navigate
|
29
|
-
def pagy_bootstrap_compact_nav(pagy, id=
|
29
|
+
def pagy_bootstrap_compact_nav(pagy, id=pagy_id)
|
30
30
|
html, link, p_prev, p_next, p_page, p_pages = +'', pagy_link_proc(pagy), pagy.prev, pagy.next, pagy.page, pagy.pages
|
31
31
|
|
32
32
|
html << %(<nav id="#{id}" class="pagy-nav-compact-bootstrap pagy-bootstrap-compact-nav pagination" role="navigation" aria-label="pager">)
|
@@ -41,11 +41,11 @@ class Pagy
|
|
41
41
|
: %(<a class="next btn btn-primary disabled" href="#">#{pagy_t('pagy.nav.next')}</a>))
|
42
42
|
html << %(</div></nav>#{pagy_json_tag(:compact, id, MARKER, p_page, !!defined?(TRIM))})
|
43
43
|
end
|
44
|
-
|
44
|
+
deprecate :pagy_nav_compact_bootstrap, :pagy_bootstrap_compact_nav
|
45
45
|
|
46
46
|
# Responsive pagination for bootstrap: it returns the html with the series of links to the pages
|
47
47
|
# rendered by the Pagy.responsive javascript
|
48
|
-
def pagy_bootstrap_responsive_nav(pagy, id=
|
48
|
+
def pagy_bootstrap_responsive_nav(pagy, id=pagy_id)
|
49
49
|
tags, link, p_prev, p_next, responsive = {}, pagy_link_proc(pagy, 'class="page-link"'), pagy.prev, pagy.next, pagy.responsive
|
50
50
|
|
51
51
|
tags['before'] = +'<ul class="pagination">'
|
@@ -63,7 +63,7 @@ class Pagy
|
|
63
63
|
script = pagy_json_tag(:responsive, id, tags, responsive[:widths], responsive[:series])
|
64
64
|
%(<nav id="#{id}" class="pagy-nav-responsive-bootstrap pagy-bootstrap-responsive-nav pagination" role="navigation" aria-label="pager"></nav>#{script})
|
65
65
|
end
|
66
|
-
|
66
|
+
deprecate :pagy_nav_responsive_bootstrap, :pagy_bootstrap_responsive_nav
|
67
67
|
|
68
68
|
end
|
69
69
|
end
|
data/lib/pagy/extras/bulma.rb
CHANGED
@@ -24,11 +24,11 @@ class Pagy
|
|
24
24
|
html << '</ul>'
|
25
25
|
%(<nav class="pagy-nav-bulma pagy-bulma-nav pagination is-centered" role="navigation" aria-label="pagination">#{html}</nav>)
|
26
26
|
end
|
27
|
-
|
27
|
+
deprecate :pagy_nav_bulma, :pagy_bulma_nav
|
28
28
|
|
29
29
|
# Compact pagination for Bulma: it returns the html with the series of links to the pages
|
30
30
|
# we use a numeric input tag to set the page and the Pagy.compact javascript to navigate
|
31
|
-
def pagy_bulma_compact_nav(pagy, id=
|
31
|
+
def pagy_bulma_compact_nav(pagy, id=pagy_id)
|
32
32
|
html, link, p_prev, p_next, p_page, p_pages = +'', pagy_link_proc(pagy), pagy.prev, pagy.next, pagy.page, pagy.pages
|
33
33
|
|
34
34
|
html << %(<nav id="#{id}" class="pagy-nav-compact-bulma pagy-bulma-compact-nav" role="navigation" aria-label="pagination">)
|
@@ -43,11 +43,11 @@ class Pagy
|
|
43
43
|
: %(<p class="control"><a class="button" disabled>#{pagy_t('pagy.nav.next')}</a></p>))
|
44
44
|
html << %(</div></nav>#{pagy_json_tag(:compact, id, MARKER, p_page, !!defined?(TRIM))})
|
45
45
|
end
|
46
|
-
|
46
|
+
deprecate :pagy_nav_compact_bulma, :pagy_bulma_compact_nav
|
47
47
|
|
48
48
|
# Responsive pagination for Bulma: it returns the html with the series of links to the pages
|
49
49
|
# rendered by the Pagy.responsive javascript
|
50
|
-
def pagy_bulma_responsive_nav(pagy, id=
|
50
|
+
def pagy_bulma_responsive_nav(pagy, id=pagy_id)
|
51
51
|
tags, link, p_prev, p_next, responsive = {}, pagy_link_proc(pagy), pagy.prev, pagy.next, pagy.responsive
|
52
52
|
|
53
53
|
tags['before'] = +(p_prev ? link.call(p_prev, pagy_t('pagy.nav.prev'), 'class="pagination-previous" aria-label="previous page"')
|
@@ -65,7 +65,7 @@ class Pagy
|
|
65
65
|
script = pagy_json_tag(:responsive, id, tags, responsive[:widths], responsive[:series])
|
66
66
|
%(<nav id="#{id}" class="pagy-nav-responsive-bulma pagy-bulma-responsive-nav pagination is-centered" role="navigation" aria-label="pagination"></nav>#{script})
|
67
67
|
end
|
68
|
-
|
68
|
+
deprecate :pagy_nav_responsive_bulma, :pagy_bulma_responsive_nav
|
69
69
|
|
70
70
|
end
|
71
71
|
end
|
@@ -22,11 +22,11 @@ class Pagy
|
|
22
22
|
: %(<li class="next disabled">#{pagy_t('pagy.nav.next')}</li>))
|
23
23
|
%(<nav class="pagy-nav-foundation pagy-foundation-nav" role="navigation" aria-label="Pagination"><ul class="pagination">#{html}</ul></nav>)
|
24
24
|
end
|
25
|
-
|
25
|
+
deprecate :pagy_nav_foundation, :pagy_foundation_nav
|
26
26
|
|
27
27
|
# Compact pagination for Foundation: it returns the html with the series of links to the pages
|
28
28
|
# we use a numeric input tag to set the page and the Pagy.compact javascript to navigate
|
29
|
-
def pagy_foundation_compact_nav(pagy, id=
|
29
|
+
def pagy_foundation_compact_nav(pagy, id=pagy_id)
|
30
30
|
html, link, p_prev, p_next, p_page, p_pages = +'', pagy_link_proc(pagy), pagy.prev, pagy.next, pagy.page, pagy.pages
|
31
31
|
|
32
32
|
html << %(<nav id="#{id}" class="pagy-nav-compact-foundation pagy-foundation-compact-nav" role="navigation" aria-label="Pagination">)
|
@@ -41,11 +41,11 @@ class Pagy
|
|
41
41
|
: %(<a style="margin-bottom: 0px;" class="next button primary disabled" href="#">#{pagy_t('pagy.nav.next')}</a>))
|
42
42
|
html << %(</div></nav>#{pagy_json_tag(:compact, id, MARKER, p_page, !!defined?(TRIM))})
|
43
43
|
end
|
44
|
-
|
44
|
+
deprecate :pagy_nav_compact_foundation, :pagy_foundation_compact_nav
|
45
45
|
|
46
46
|
# Responsive pagination for Foundation: it returns the html with the series of links to the pages
|
47
47
|
# rendered by the Pagy.responsive javascript
|
48
|
-
def pagy_foundation_responsive_nav(pagy, id=
|
48
|
+
def pagy_foundation_responsive_nav(pagy, id=pagy_id)
|
49
49
|
tags, link, p_prev, p_next, responsive = {}, pagy_link_proc(pagy), pagy.prev, pagy.next, pagy.responsive
|
50
50
|
|
51
51
|
tags['before'] = +'<ul class="pagination">'
|
@@ -63,7 +63,7 @@ class Pagy
|
|
63
63
|
script = pagy_json_tag(:responsive, id, tags, responsive[:widths], responsive[:series])
|
64
64
|
%(<nav id="#{id}" class="pagy-nav-responsive-foundation pagy-foundation-responsive-nav" aria-label="Pagination"></nav>#{script})
|
65
65
|
end
|
66
|
-
|
66
|
+
deprecate :pagy_nav_responsive_foundation, :pagy_foundation_responsive_nav
|
67
67
|
|
68
68
|
end
|
69
69
|
end
|
data/lib/pagy/extras/items.rb
CHANGED
@@ -46,7 +46,7 @@ class Pagy
|
|
46
46
|
alias_method :pagy_url_for, :pagy_url_for_with_items
|
47
47
|
|
48
48
|
# Return the items selector HTML. For example "Show [20] items per page"
|
49
|
-
def pagy_items_selector(pagy, id=
|
49
|
+
def pagy_items_selector(pagy, id=pagy_id)
|
50
50
|
pagy = pagy.clone; p_vars = pagy.vars; p_items = p_vars[:items]; p_vars[:items] = "#{MARKER}-items-"
|
51
51
|
|
52
52
|
html = +%(<span id="#{id}">)
|
@@ -21,11 +21,11 @@ class Pagy
|
|
21
21
|
: %(<li class="next disabled"><a href="#"><i class="material-icons">chevron_right</i></a></li>))
|
22
22
|
%(<div class="pagy-nav-materialize pagy-materialize-nav pagination" role="navigation" aria-label="pager"><ul class="pagination">#{html}</ul></div>)
|
23
23
|
end
|
24
|
-
|
24
|
+
deprecate :pagy_nav_materialize, :pagy_materialize_nav
|
25
25
|
|
26
26
|
# Compact pagination for materialize: it returns the html with the series of links to the pages
|
27
27
|
# we use a numeric input tag to set the page and the Pagy.compact javascript to navigate
|
28
|
-
def pagy_materialize_compact_nav(pagy, id=
|
28
|
+
def pagy_materialize_compact_nav(pagy, id=pagy_id)
|
29
29
|
html, link, p_prev, p_next, p_page, p_pages = +'', pagy_link_proc(pagy), pagy.prev, pagy.next, pagy.page, pagy.pages
|
30
30
|
|
31
31
|
html << %(<div id="#{id}" class="pagy-nav-compact-materialize pagy-materialize-compact-nav pagination" role="navigation" aria-label="pager">)
|
@@ -42,11 +42,11 @@ class Pagy
|
|
42
42
|
: %(<li class="next disabled" #{li_style}><a href="#"><i class="material-icons">chevron_right</i></a></li>))
|
43
43
|
html << %(</ul></div>#{pagy_json_tag(:compact, id, MARKER, p_page, !!defined?(TRIM))})
|
44
44
|
end
|
45
|
-
|
45
|
+
deprecate :pagy_nav_compact_materialize, :pagy_materialize_compact_nav
|
46
46
|
|
47
47
|
# Responsive pagination for Materialize: it returns the html with the series of links to the pages
|
48
48
|
# rendered by the Pagy.responsive javascript
|
49
|
-
def pagy_materialize_responsive_nav(pagy, id=
|
49
|
+
def pagy_materialize_responsive_nav(pagy, id=pagy_id)
|
50
50
|
tags, link, p_prev, p_next, responsive = {}, pagy_link_proc(pagy), pagy.prev, pagy.next, pagy.responsive
|
51
51
|
|
52
52
|
tags['before'] = +'<ul class="pagination">'
|
@@ -64,7 +64,7 @@ class Pagy
|
|
64
64
|
script = pagy_json_tag(:responsive, id, tags, responsive[:widths], responsive[:series])
|
65
65
|
%(<div id="#{id}" class="pagy-nav-responsive-materialize pagy-materialize-responsive-nav pagination" role="navigation" aria-label="pager"></div>#{script})
|
66
66
|
end
|
67
|
-
|
67
|
+
deprecate :pagy_nav_responsive_materialize, :pagy_materialize_responsive_nav
|
68
68
|
|
69
69
|
end
|
70
70
|
end
|
data/lib/pagy/extras/plain.rb
CHANGED
@@ -11,7 +11,7 @@ class Pagy
|
|
11
11
|
|
12
12
|
# Plain compact pagination: it returns the html with the series of links to the pages
|
13
13
|
# we use a numeric input tag to set the page and the Pagy.compact javascript to navigate
|
14
|
-
def pagy_plain_compact_nav(pagy, id=
|
14
|
+
def pagy_plain_compact_nav(pagy, id=pagy_id)
|
15
15
|
html, link, p_prev, p_next, p_page, p_pages = +'', pagy_link_proc(pagy), pagy.prev, pagy.next, pagy.page, pagy.pages
|
16
16
|
|
17
17
|
html << %(<nav id="#{id}" class="pagy-nav-compact pagy-plain-compact-nav pagination" role="navigation" aria-label="pager">)
|
@@ -25,11 +25,11 @@ class Pagy
|
|
25
25
|
: %(<span class="page next disabled">#{pagy_t('pagy.nav.next')}</span>))
|
26
26
|
html << %(</nav>#{pagy_json_tag(:compact, id, MARKER, p_page, !!defined?(TRIM))})
|
27
27
|
end
|
28
|
-
|
28
|
+
deprecate :pagy_nav_compact, :pagy_plain_compact_nav
|
29
29
|
|
30
30
|
# Plain responsive pagination: it returns the html with the series of links to the pages
|
31
31
|
# rendered by the Pagy.responsive javascript
|
32
|
-
def pagy_plain_responsive_nav(pagy, id=
|
32
|
+
def pagy_plain_responsive_nav(pagy, id=pagy_id)
|
33
33
|
tags, link, p_prev, p_next, responsive = {}, pagy_link_proc(pagy), pagy.prev, pagy.next, pagy.responsive
|
34
34
|
|
35
35
|
tags['before'] = (p_prev ? %(<span class="page prev">#{link.call p_prev, pagy_t('pagy.nav.prev'), 'aria-label="previous"'}</span> )
|
@@ -45,7 +45,7 @@ class Pagy
|
|
45
45
|
script = pagy_json_tag(:responsive, id, tags, responsive[:widths], responsive[:series])
|
46
46
|
%(<nav id="#{id}" class="pagy-nav-responsive pagy-plain-responsive-nav pagination" role="navigation" aria-label="pager"></nav>#{script})
|
47
47
|
end
|
48
|
-
|
48
|
+
deprecate :pagy_nav_responsive, :pagy_plain_responsive_nav
|
49
49
|
|
50
50
|
end
|
51
51
|
end
|
data/lib/pagy/extras/semantic.rb
CHANGED
@@ -22,11 +22,11 @@ class Pagy
|
|
22
22
|
: %(<div class="item disabled"><i class="right small chevron icon"></i></div>))
|
23
23
|
%(<div class="pagy-nav-semantic pagy-semantic-nav ui pagination menu" aria-label="pager">#{html}</div>)
|
24
24
|
end
|
25
|
-
|
25
|
+
deprecate :pagy_nav_semantic, :pagy_semantic_nav
|
26
26
|
|
27
27
|
# Compact pagination for semantic: it returns the html with the series of links to the pages
|
28
28
|
# we use a numeric input tag to set the page and the Pagy.compact javascript to navigate
|
29
|
-
def pagy_semantic_compact_nav(pagy, id=
|
29
|
+
def pagy_semantic_compact_nav(pagy, id=pagy_id)
|
30
30
|
html, link, p_prev, p_next, p_page, p_pages = +'', pagy_link_proc(pagy, 'class="item"'), pagy.prev, pagy.next, pagy.page, pagy.pages
|
31
31
|
|
32
32
|
html << %(<div id="#{id}" class="pagy-nav-compact-semantic pagy-semantic-compact-nav ui compact menu" role="navigation" aria-label="pager">)
|
@@ -40,11 +40,11 @@ class Pagy
|
|
40
40
|
: %(<div class="item disabled"><i class="right small chevron icon"></i></div>))
|
41
41
|
html << %(</div>#{pagy_json_tag(:compact, id, MARKER, p_page, !!defined?(TRIM))})
|
42
42
|
end
|
43
|
-
|
43
|
+
deprecate :pagy_nav_compact_semantic, :pagy_semantic_compact_nav
|
44
44
|
|
45
45
|
# Responsive pagination for semantic: it returns the html with the series of links to the pages
|
46
46
|
# rendered by the Pagy.responsive javascript
|
47
|
-
def pagy_semantic_responsive_nav(pagy, id=
|
47
|
+
def pagy_semantic_responsive_nav(pagy, id=pagy_id)
|
48
48
|
tags, link, p_prev, p_next, responsive = {}, pagy_link_proc(pagy, 'class="item"'), pagy.prev, pagy.next, pagy.responsive
|
49
49
|
|
50
50
|
tags['before'] = (p_prev ? %(#{link.call p_prev, '<i class="left small chevron icon"></i>', 'aria-label="previous"'})
|
@@ -60,7 +60,7 @@ class Pagy
|
|
60
60
|
script = pagy_json_tag(:responsive, id, tags, responsive[:widths], responsive[:series])
|
61
61
|
%(<div id="#{id}" class="pagy-nav-responsive-semantic pagy-semantic-responsive-nav ui pagination menu" role="navigation" aria-label="pager"></div>#{script})
|
62
62
|
end
|
63
|
-
|
63
|
+
deprecate :pagy_nav_responsive_semantic, :pagy_semantic_responsive_nav
|
64
64
|
|
65
65
|
end
|
66
66
|
end
|
data/lib/pagy/extras/shared.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'json'
|
4
|
+
require 'digest'
|
4
5
|
|
5
6
|
class Pagy
|
6
7
|
|
@@ -27,19 +28,24 @@ class Pagy
|
|
27
28
|
end
|
28
29
|
end
|
29
30
|
|
30
|
-
def self.deprecate(mod, old_meth, new_meth)
|
31
|
-
mod.send(:define_method, old_meth) do |pagy, id=caller(1,1)[0].hash.to_s|
|
32
|
-
Warning.warn "WARNING: The ##{old_meth} pagy helper method is deprecated and will be removed in 2.0; please use ##{new_meth} instead. More info at https://github.com/ddnexus/pagy/blob/master/DEPRECATIONS.md\n"
|
33
|
-
mod.instance_method(new_meth).arity == 1 ? send(new_meth, pagy) : send(new_meth, pagy, id)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
31
|
module Frontend
|
38
32
|
|
39
33
|
def pagy_json_tag(*args)
|
40
34
|
%(<script type="application/json" class="pagy-json">#{args.to_json}</script>)
|
41
35
|
end
|
42
36
|
|
37
|
+
def pagy_id
|
38
|
+
# SHA1 is the fastest on modern ruby
|
39
|
+
"pagy-#{Digest::SHA1.hexdigest(caller(2..2)[0].split(':in')[0])}"
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.deprecate(old_meth, new_meth)
|
43
|
+
send(:define_method, old_meth) do |pagy, id=pagy_id|
|
44
|
+
Warning.warn "WARNING: The ##{old_meth} pagy helper method is deprecated and will be removed in 2.0; please use ##{new_meth} instead. More info at https://github.com/ddnexus/pagy/blob/master/DEPRECATIONS.md\n"
|
45
|
+
method(new_meth).arity == 1 ? send(new_meth, pagy) : send(new_meth, pagy, id)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
43
49
|
end
|
44
50
|
|
45
51
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pagy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: '1.3'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Domizio Demichelis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-01-15 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: 'Agnostic pagination in plain ruby: it works with any framework, ORM
|
14
14
|
and DB type, with all kinds of collections, even pre-paginated, scopes, Arrays,
|
@@ -23,12 +23,14 @@ files:
|
|
23
23
|
- LICENSE.txt
|
24
24
|
- lib/config/pagy.rb
|
25
25
|
- lib/javascripts/pagy.js
|
26
|
+
- lib/locales/README.md
|
26
27
|
- lib/locales/de.yml
|
27
28
|
- lib/locales/en.yml
|
28
29
|
- lib/locales/es.yml
|
29
30
|
- lib/locales/id.yml
|
30
31
|
- lib/locales/ja.yml
|
31
32
|
- lib/locales/nb.yml
|
33
|
+
- lib/locales/nl.yml
|
32
34
|
- lib/locales/plurals.rb
|
33
35
|
- lib/locales/pt-br.yml
|
34
36
|
- lib/locales/ru.yml
|