diff options
Diffstat (limited to 'js/components/pagination.js')
-rwxr-xr-x | js/components/pagination.js | 147 |
1 files changed, 0 insertions, 147 deletions
diff --git a/js/components/pagination.js b/js/components/pagination.js deleted file mode 100755 index f5a8478..0000000 --- a/js/components/pagination.js +++ /dev/null | |||
@@ -1,147 +0,0 @@ | |||
1 | /*! UIkit 2.26.4 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ | ||
2 | /* | ||
3 | * Based on simplePagination - Copyright (c) 2012 Flavius Matis - http://flaviusmatis.github.com/simplePagination.js/ (MIT) | ||
4 | */ | ||
5 | (function(addon) { | ||
6 | |||
7 | var component; | ||
8 | |||
9 | if (window.UIkit) { | ||
10 | component = addon(UIkit); | ||
11 | } | ||
12 | |||
13 | if (typeof define == "function" && define.amd) { | ||
14 | define("uikit-pagination", ["uikit"], function(){ | ||
15 | return component || addon(UIkit); | ||
16 | }); | ||
17 | } | ||
18 | |||
19 | })(function(UI){ | ||
20 | |||
21 | "use strict"; | ||
22 | |||
23 | UI.component('pagination', { | ||
24 | |||
25 | defaults: { | ||
26 | items : 1, | ||
27 | itemsOnPage : 1, | ||
28 | pages : 0, | ||
29 | displayedPages : 7, | ||
30 | edges : 1, | ||
31 | currentPage : 0, | ||
32 | lblPrev : false, | ||
33 | lblNext : false, | ||
34 | onSelectPage : function() {} | ||
35 | }, | ||
36 | |||
37 | boot: function() { | ||
38 | |||
39 | // init code | ||
40 | UI.ready(function(context) { | ||
41 | |||
42 | UI.$("[data-uk-pagination]", context).each(function(){ | ||
43 | var ele = UI.$(this); | ||
44 | |||
45 | if (!ele.data("pagination")) { | ||
46 | UI.pagination(ele, UI.Utils.options(ele.attr("data-uk-pagination"))); | ||
47 | } | ||
48 | }); | ||
49 | }); | ||
50 | }, | ||
51 | |||
52 | init: function() { | ||
53 | |||
54 | var $this = this; | ||
55 | |||
56 | this.pages = this.options.pages ? this.options.pages : Math.ceil(this.options.items / this.options.itemsOnPage) ? Math.ceil(this.options.items / this.options.itemsOnPage) : 1; | ||
57 | this.currentPage = this.options.currentPage; | ||
58 | this.halfDisplayed = this.options.displayedPages / 2; | ||
59 | |||
60 | this.on("click", "a[data-page]", function(e){ | ||
61 | e.preventDefault(); | ||
62 | $this.selectPage(UI.$(this).data("page")); | ||
63 | }); | ||
64 | |||
65 | this._render(); | ||
66 | }, | ||
67 | |||
68 | _getInterval: function() { | ||
69 | |||
70 | return { | ||
71 | start: Math.ceil(this.currentPage > this.halfDisplayed ? Math.max(Math.min(this.currentPage - this.halfDisplayed, (this.pages - this.options.displayedPages)), 0) : 0), | ||
72 | end : Math.ceil(this.currentPage > this.halfDisplayed ? Math.min(this.currentPage + this.halfDisplayed, this.pages) : Math.min(this.options.displayedPages, this.pages)) | ||
73 | }; | ||
74 | }, | ||
75 | |||
76 | render: function(pages) { | ||
77 | this.pages = pages ? pages : this.pages; | ||
78 | this._render(); | ||
79 | }, | ||
80 | |||
81 | selectPage: function(pageIndex, pages) { | ||
82 | this.currentPage = pageIndex; | ||
83 | this.render(pages); | ||
84 | |||
85 | this.options.onSelectPage.apply(this, [pageIndex]); | ||
86 | this.trigger('select.uk.pagination', [pageIndex, this]); | ||
87 | }, | ||
88 | |||
89 | _render: function() { | ||
90 | |||
91 | var o = this.options, interval = this._getInterval(), i; | ||
92 | |||
93 | this.element.empty(); | ||
94 | |||
95 | // Generate Prev link | ||
96 | if (o.lblPrev) this._append(this.currentPage - 1, {text: o.lblPrev}); | ||
97 | |||
98 | // Generate start edges | ||
99 | if (interval.start > 0 && o.edges > 0) { | ||
100 | |||
101 | var end = Math.min(o.edges, interval.start); | ||
102 | |||
103 | for (i = 0; i < end; i++) this._append(i); | ||
104 | |||
105 | if (o.edges < interval.start && (interval.start - o.edges != 1)) { | ||
106 | this.element.append('<li><span>...</span></li>'); | ||
107 | } else if (interval.start - o.edges == 1) { | ||
108 | this._append(o.edges); | ||
109 | } | ||
110 | } | ||
111 | |||
112 | // Generate interval links | ||
113 | for (i = interval.start; i < interval.end; i++) this._append(i); | ||
114 | |||
115 | // Generate end edges | ||
116 | if (interval.end < this.pages && o.edges > 0) { | ||
117 | |||
118 | if (this.pages - o.edges > interval.end && (this.pages - o.edges - interval.end != 1)) { | ||
119 | this.element.append('<li><span>...</span></li>'); | ||
120 | } else if (this.pages - o.edges - interval.end == 1) { | ||
121 | this._append(interval.end++); | ||
122 | } | ||
123 | |||
124 | var begin = Math.max(this.pages - o.edges, interval.end); | ||
125 | |||
126 | for (i = begin; i < this.pages; i++) this._append(i); | ||
127 | } | ||
128 | |||
129 | // Generate Next link (unless option is set for at front) | ||
130 | if (o.lblNext) this._append(this.currentPage + 1, {text: o.lblNext}); | ||
131 | }, | ||
132 | |||
133 | _append: function(pageIndex, opts) { | ||
134 | |||
135 | var item, options; | ||
136 | |||
137 | pageIndex = pageIndex < 0 ? 0 : (pageIndex < this.pages ? pageIndex : this.pages - 1); | ||
138 | options = UI.$.extend({ text: pageIndex + 1 }, opts); | ||
139 | |||
140 | item = (pageIndex == this.currentPage) ? '<li class="uk-active"><span>' + (options.text) + '</span></li>' : '<li><a href="#page-'+(pageIndex+1)+'" data-page="'+pageIndex+'">'+options.text+'</a></li>'; | ||
141 | |||
142 | this.element.append(item); | ||
143 | } | ||
144 | }); | ||
145 | |||
146 | return UI.pagination; | ||
147 | }); | ||