jquery-bootstrap-pagination 1.1.0 → 1.2.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/Gemfile.lock +1 -1
- data/README.md +8 -0
- data/lib/jquery-bootstrap-pagination/version.rb +1 -1
- data/spec/javascripts/jquery-bootstrap-pagination_spec.coffee +164 -0
- data/src/jquery-bootstrap-pagination.coffee +25 -3
- data/vendor/assets/javascripts/jquery-bootstrap-pagination.js +35 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fa901f4f244d5d5c664df752adda4a4657c8129f
|
4
|
+
data.tar.gz: b9af6375f692acd96716344ab279dc25e578a6c4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 50138ccce52f55c99680e1022c2c72cd300c9963e8e6769acf741f76d9042f380468b9339f039e25fdfd0e6f50d3033eddb646f98aa0189b9f6bb4994a88fe61
|
7
|
+
data.tar.gz: 7a5cd2aa11ade9416f27e35bd30008d2e8e2b061dd037e2a28260fa50ae779215a86df00cb4081fc9cd91d3111bc1f5f11183ddfb3564f1320b34767002b3494
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -94,6 +94,8 @@ last: false
|
|
94
94
|
display_max: 8
|
95
95
|
# render nothing if there is only 1 page:
|
96
96
|
ignore_single_page: true
|
97
|
+
# disable turbolinks:
|
98
|
+
no_turbolink: false
|
97
99
|
```
|
98
100
|
|
99
101
|
## Contributing
|
@@ -104,3 +106,9 @@ ignore_single_page: true
|
|
104
106
|
4. Commit your changes (`git commit -am 'Add some feature'`)
|
105
107
|
5. Push to the branch (`git push origin my-new-feature`)
|
106
108
|
6. Create new Pull Request
|
109
|
+
|
110
|
+
## Contributors
|
111
|
+
|
112
|
+
* Mark Bates
|
113
|
+
* Eric Wollesen
|
114
|
+
* Clinton Blackburn
|
@@ -78,6 +78,12 @@ describe "pagination", ->
|
|
78
78
|
expect(links[2]).toEqual("<li><a href='#' data-page='2'>2</a></li>")
|
79
79
|
expect(links[3]).toEqual("<li><a href='#' data-page='3'>3</a></li>")
|
80
80
|
|
81
|
+
it "disables turbolinks (if requested)", ->
|
82
|
+
@view.settings.prev = "prev"
|
83
|
+
@view.settings.current_page = 2
|
84
|
+
@view.settings.no_turbolink = true
|
85
|
+
links = @view.buildLinks()
|
86
|
+
expect(links[0]).toEqual("<li><a href='#' data-page='1' data-no-turbolink='1'>prev</a></li>")
|
81
87
|
|
82
88
|
describe "render", ->
|
83
89
|
|
@@ -256,6 +262,164 @@ describe "pagination", ->
|
|
256
262
|
</div>
|
257
263
|
""")
|
258
264
|
|
265
|
+
|
266
|
+
describe "change", ->
|
267
|
+
|
268
|
+
it "re-renders the pagination links", ->
|
269
|
+
@view.settings.total_pages = 50
|
270
|
+
@view.settings.current_page = 2
|
271
|
+
@view.render()
|
272
|
+
expect(@page.html()).toEqual("""
|
273
|
+
<div class="jquery-bootstrap-pagination pagination">
|
274
|
+
<ul>
|
275
|
+
<li><a href="#" data-page="1">1</a></li>
|
276
|
+
<li class="active"><a href="#" data-page="2">2</a></li>
|
277
|
+
<li><a href="#" data-page="3">3</a></li>
|
278
|
+
<li><a href="#" data-page="4">4</a></li>
|
279
|
+
<li><a href="#" data-page="5">5</a></li>
|
280
|
+
<li><a href="#" data-page="6">6</a></li>
|
281
|
+
<li><a href="#" data-page="7">7</a></li>
|
282
|
+
<li><a href="#" data-page="8">8</a></li>
|
283
|
+
<li class="disabled"><a href="#" data-page="..">..</a></li>
|
284
|
+
<li><a href="#" data-page="50">50</a></li>
|
285
|
+
</ul>
|
286
|
+
</div>
|
287
|
+
""")
|
288
|
+
@view.change(8)
|
289
|
+
expect(@page.html()).toEqual("""
|
290
|
+
<div class="jquery-bootstrap-pagination pagination">
|
291
|
+
<ul>
|
292
|
+
<li><a href="#" data-page="1">1</a></li>
|
293
|
+
<li class="disabled"><a href="#" data-page="..">..</a></li>
|
294
|
+
<li><a href="#" data-page="4">4</a></li>
|
295
|
+
<li><a href="#" data-page="5">5</a></li>
|
296
|
+
<li><a href="#" data-page="6">6</a></li>
|
297
|
+
<li><a href="#" data-page="7">7</a></li>
|
298
|
+
<li class="active"><a href="#" data-page="8">8</a></li>
|
299
|
+
<li><a href="#" data-page="9">9</a></li>
|
300
|
+
<li><a href="#" data-page="10">10</a></li>
|
301
|
+
<li><a href="#" data-page="11">11</a></li>
|
302
|
+
<li><a href="#" data-page="12">12</a></li>
|
303
|
+
<li class="disabled"><a href="#" data-page="..">..</a></li>
|
304
|
+
<li><a href="#" data-page="50">50</a></li>
|
305
|
+
</ul>
|
306
|
+
</div>
|
307
|
+
""")
|
308
|
+
|
309
|
+
it "doesn't re-render if page > total_pages (invalid)", ->
|
310
|
+
@view.settings.total_pages = 50
|
311
|
+
@view.settings.current_page = 2
|
312
|
+
@view.render()
|
313
|
+
expect(@page.html()).toEqual("""
|
314
|
+
<div class="jquery-bootstrap-pagination pagination">
|
315
|
+
<ul>
|
316
|
+
<li><a href="#" data-page="1">1</a></li>
|
317
|
+
<li class="active"><a href="#" data-page="2">2</a></li>
|
318
|
+
<li><a href="#" data-page="3">3</a></li>
|
319
|
+
<li><a href="#" data-page="4">4</a></li>
|
320
|
+
<li><a href="#" data-page="5">5</a></li>
|
321
|
+
<li><a href="#" data-page="6">6</a></li>
|
322
|
+
<li><a href="#" data-page="7">7</a></li>
|
323
|
+
<li><a href="#" data-page="8">8</a></li>
|
324
|
+
<li class="disabled"><a href="#" data-page="..">..</a></li>
|
325
|
+
<li><a href="#" data-page="50">50</a></li>
|
326
|
+
</ul>
|
327
|
+
</div>
|
328
|
+
""")
|
329
|
+
@view.change(51)
|
330
|
+
expect(@page.html()).toEqual("""
|
331
|
+
<div class="jquery-bootstrap-pagination pagination">
|
332
|
+
<ul>
|
333
|
+
<li><a href="#" data-page="1">1</a></li>
|
334
|
+
<li class="active"><a href="#" data-page="2">2</a></li>
|
335
|
+
<li><a href="#" data-page="3">3</a></li>
|
336
|
+
<li><a href="#" data-page="4">4</a></li>
|
337
|
+
<li><a href="#" data-page="5">5</a></li>
|
338
|
+
<li><a href="#" data-page="6">6</a></li>
|
339
|
+
<li><a href="#" data-page="7">7</a></li>
|
340
|
+
<li><a href="#" data-page="8">8</a></li>
|
341
|
+
<li class="disabled"><a href="#" data-page="..">..</a></li>
|
342
|
+
<li><a href="#" data-page="50">50</a></li>
|
343
|
+
</ul>
|
344
|
+
</div>
|
345
|
+
""")
|
346
|
+
|
347
|
+
it "doesn't re-render if page < 1 (invalid)", ->
|
348
|
+
@view.settings.total_pages = 50
|
349
|
+
@view.settings.current_page = 2
|
350
|
+
@view.render()
|
351
|
+
expect(@page.html()).toEqual("""
|
352
|
+
<div class="jquery-bootstrap-pagination pagination">
|
353
|
+
<ul>
|
354
|
+
<li><a href="#" data-page="1">1</a></li>
|
355
|
+
<li class="active"><a href="#" data-page="2">2</a></li>
|
356
|
+
<li><a href="#" data-page="3">3</a></li>
|
357
|
+
<li><a href="#" data-page="4">4</a></li>
|
358
|
+
<li><a href="#" data-page="5">5</a></li>
|
359
|
+
<li><a href="#" data-page="6">6</a></li>
|
360
|
+
<li><a href="#" data-page="7">7</a></li>
|
361
|
+
<li><a href="#" data-page="8">8</a></li>
|
362
|
+
<li class="disabled"><a href="#" data-page="..">..</a></li>
|
363
|
+
<li><a href="#" data-page="50">50</a></li>
|
364
|
+
</ul>
|
365
|
+
</div>
|
366
|
+
""")
|
367
|
+
@view.change(0)
|
368
|
+
expect(@page.html()).toEqual("""
|
369
|
+
<div class="jquery-bootstrap-pagination pagination">
|
370
|
+
<ul>
|
371
|
+
<li><a href="#" data-page="1">1</a></li>
|
372
|
+
<li class="active"><a href="#" data-page="2">2</a></li>
|
373
|
+
<li><a href="#" data-page="3">3</a></li>
|
374
|
+
<li><a href="#" data-page="4">4</a></li>
|
375
|
+
<li><a href="#" data-page="5">5</a></li>
|
376
|
+
<li><a href="#" data-page="6">6</a></li>
|
377
|
+
<li><a href="#" data-page="7">7</a></li>
|
378
|
+
<li><a href="#" data-page="8">8</a></li>
|
379
|
+
<li class="disabled"><a href="#" data-page="..">..</a></li>
|
380
|
+
<li><a href="#" data-page="50">50</a></li>
|
381
|
+
</ul>
|
382
|
+
</div>
|
383
|
+
""")
|
384
|
+
|
385
|
+
it "doesn't re-render if there's no change in page", ->
|
386
|
+
@view.settings.total_pages = 50
|
387
|
+
@view.settings.current_page = 2
|
388
|
+
@view.render()
|
389
|
+
expect(@page.html()).toEqual("""
|
390
|
+
<div class="jquery-bootstrap-pagination pagination">
|
391
|
+
<ul>
|
392
|
+
<li><a href="#" data-page="1">1</a></li>
|
393
|
+
<li class="active"><a href="#" data-page="2">2</a></li>
|
394
|
+
<li><a href="#" data-page="3">3</a></li>
|
395
|
+
<li><a href="#" data-page="4">4</a></li>
|
396
|
+
<li><a href="#" data-page="5">5</a></li>
|
397
|
+
<li><a href="#" data-page="6">6</a></li>
|
398
|
+
<li><a href="#" data-page="7">7</a></li>
|
399
|
+
<li><a href="#" data-page="8">8</a></li>
|
400
|
+
<li class="disabled"><a href="#" data-page="..">..</a></li>
|
401
|
+
<li><a href="#" data-page="50">50</a></li>
|
402
|
+
</ul>
|
403
|
+
</div>
|
404
|
+
""")
|
405
|
+
@view.change(2)
|
406
|
+
expect(@page.html()).toEqual("""
|
407
|
+
<div class="jquery-bootstrap-pagination pagination">
|
408
|
+
<ul>
|
409
|
+
<li><a href="#" data-page="1">1</a></li>
|
410
|
+
<li class="active"><a href="#" data-page="2">2</a></li>
|
411
|
+
<li><a href="#" data-page="3">3</a></li>
|
412
|
+
<li><a href="#" data-page="4">4</a></li>
|
413
|
+
<li><a href="#" data-page="5">5</a></li>
|
414
|
+
<li><a href="#" data-page="6">6</a></li>
|
415
|
+
<li><a href="#" data-page="7">7</a></li>
|
416
|
+
<li><a href="#" data-page="8">8</a></li>
|
417
|
+
<li class="disabled"><a href="#" data-page="..">..</a></li>
|
418
|
+
<li><a href="#" data-page="50">50</a></li>
|
419
|
+
</ul>
|
420
|
+
</div>
|
421
|
+
""")
|
422
|
+
|
259
423
|
describe "pages", ->
|
260
424
|
|
261
425
|
describe "less than or equal to 10 pages", ->
|
@@ -42,6 +42,8 @@
|
|
42
42
|
display_max: 8
|
43
43
|
# render nothing if there is only 1 page:
|
44
44
|
ignore_single_page: true
|
45
|
+
# disable turbolinks
|
46
|
+
no_turbolink: false
|
45
47
|
|
46
48
|
# merge defaults with passed in options:
|
47
49
|
@settings = $.extend(defaults, options)
|
@@ -83,8 +85,16 @@
|
|
83
85
|
return links
|
84
86
|
|
85
87
|
# build the `li` element for the link:
|
86
|
-
buildLi: (page, text = page)=>
|
87
|
-
"<li
|
88
|
+
buildLi: (page, text = page) =>
|
89
|
+
"<li>#{@buildLink(page, text)}</li>"
|
90
|
+
|
91
|
+
# build the link element
|
92
|
+
buildLink: (page, text = page) =>
|
93
|
+
if @settings.no_turbolink
|
94
|
+
data_attr = " data-no-turbolink='1'"
|
95
|
+
else
|
96
|
+
data_attr = ""
|
97
|
+
"<a href='#' data-page='#{page}'#{data_attr}>#{text}</a>"
|
88
98
|
|
89
99
|
# returns an array of all of the 'pages' in the pagination:
|
90
100
|
pages: =>
|
@@ -163,16 +173,28 @@
|
|
163
173
|
if @settings.current_page is @settings.total_pages and @settings.last
|
164
174
|
$("li:last", @el).removeClass("active").addClass("disabled")
|
165
175
|
|
176
|
+
isValidPage: (page) =>
|
177
|
+
page > 0 and \
|
178
|
+
page isnt @settings.current_page and \
|
179
|
+
page <= @settings.total_pages
|
180
|
+
|
166
181
|
# called when a link is clicked in the pagination list:
|
167
182
|
clicked: (event) =>
|
168
183
|
page = parseInt($(event.target).attr("data-page"))
|
184
|
+
return unless @isValidPage(page)
|
169
185
|
# if there is a callback registered, then call it
|
170
186
|
# passing the original event and the page number that was clicked:
|
171
187
|
if @settings.callback?
|
172
188
|
@settings.callback(event, page)
|
189
|
+
@change(page)
|
190
|
+
|
191
|
+
change: (page) =>
|
192
|
+
page = parseInt(page)
|
193
|
+
return unless @isValidPage(page)
|
173
194
|
# set the current page to the clicked page:
|
174
195
|
@settings.current_page = page
|
175
196
|
# re-render the pagination information to reflect the newly
|
176
|
-
#
|
197
|
+
# current page:
|
177
198
|
@render()
|
199
|
+
|
178
200
|
)(jQuery)
|
@@ -29,9 +29,12 @@
|
|
29
29
|
var defaults;
|
30
30
|
|
31
31
|
this.el = el;
|
32
|
+
this.change = __bind(this.change, this);
|
32
33
|
this.clicked = __bind(this.clicked, this);
|
34
|
+
this.isValidPage = __bind(this.isValidPage, this);
|
33
35
|
this.render = __bind(this.render, this);
|
34
36
|
this.pages = __bind(this.pages, this);
|
37
|
+
this.buildLink = __bind(this.buildLink, this);
|
35
38
|
this.buildLi = __bind(this.buildLi, this);
|
36
39
|
this.buildLinks = __bind(this.buildLinks, this);
|
37
40
|
defaults = {
|
@@ -42,7 +45,8 @@
|
|
42
45
|
first: false,
|
43
46
|
last: false,
|
44
47
|
display_max: 8,
|
45
|
-
ignore_single_page: true
|
48
|
+
ignore_single_page: true,
|
49
|
+
no_turbolink: false
|
46
50
|
};
|
47
51
|
this.settings = $.extend(defaults, options);
|
48
52
|
if ($(document).on) {
|
@@ -82,7 +86,21 @@
|
|
82
86
|
if (text == null) {
|
83
87
|
text = page;
|
84
88
|
}
|
85
|
-
return "<li
|
89
|
+
return "<li>" + (this.buildLink(page, text)) + "</li>";
|
90
|
+
};
|
91
|
+
|
92
|
+
PaginationView.prototype.buildLink = function(page, text) {
|
93
|
+
var data_attr;
|
94
|
+
|
95
|
+
if (text == null) {
|
96
|
+
text = page;
|
97
|
+
}
|
98
|
+
if (this.settings.no_turbolink) {
|
99
|
+
data_attr = " data-no-turbolink='1'";
|
100
|
+
} else {
|
101
|
+
data_attr = "";
|
102
|
+
}
|
103
|
+
return "<a href='#' data-page='" + page + "'" + data_attr + ">" + text + "</a>";
|
86
104
|
};
|
87
105
|
|
88
106
|
PaginationView.prototype.pages = function() {
|
@@ -162,13 +180,28 @@
|
|
162
180
|
}
|
163
181
|
};
|
164
182
|
|
183
|
+
PaginationView.prototype.isValidPage = function(page) {
|
184
|
+
return page > 0 && page !== this.settings.current_page && page <= this.settings.total_pages;
|
185
|
+
};
|
186
|
+
|
165
187
|
PaginationView.prototype.clicked = function(event) {
|
166
188
|
var page;
|
167
189
|
|
168
190
|
page = parseInt($(event.target).attr("data-page"));
|
191
|
+
if (!this.isValidPage(page)) {
|
192
|
+
return;
|
193
|
+
}
|
169
194
|
if (this.settings.callback != null) {
|
170
195
|
this.settings.callback(event, page);
|
171
196
|
}
|
197
|
+
return this.change(page);
|
198
|
+
};
|
199
|
+
|
200
|
+
PaginationView.prototype.change = function(page) {
|
201
|
+
page = parseInt(page);
|
202
|
+
if (!this.isValidPage(page)) {
|
203
|
+
return;
|
204
|
+
}
|
172
205
|
this.settings.current_page = page;
|
173
206
|
return this.render();
|
174
207
|
};
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jquery-bootstrap-pagination
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mark Bates
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-08-05 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: A simple and clean pagination implementation for jQuery and Twitter Bootstrap.
|
14
14
|
email:
|