diff --git a/dist/list.js b/dist/list.js
index d40457fb..669339d5 100644
--- a/dist/list.js
+++ b/dist/list.js
@@ -3,41 +3,41 @@ var List =
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
-
+/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
-
+/******/
/******/ // Check if module is in cache
-/******/ if(installedModules[moduleId])
+/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
-
+/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
-
+/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
+/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
-
+/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
-
-
+/******/
+/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
-
+/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
-
+/******/
/******/ // identity function for calling harmony imports with the correct context
/******/ __webpack_require__.i = function(value) { return value; };
-
+/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
@@ -48,7 +48,7 @@ var List =
/******/ });
/******/ }
/******/ };
-
+/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
@@ -57,15 +57,15 @@ var List =
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
-
+/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
-
+/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
-
+/******/
/******/ // Load entry module and return exports
-/******/ return __webpack_require__(__webpack_require__.s = 11);
+/******/ return __webpack_require__(__webpack_require__.s = 8);
/******/ })
/************************************************************************/
/******/ ([
@@ -509,136 +509,6 @@ module.exports = function extend (object) {
/***/ }),
/* 8 */
-/***/ (function(module, exports) {
-
-module.exports = function(list) {
- var addAsync = function(values, callback, items) {
- var valuesToAdd = values.splice(0, 50);
- items = items || [];
- items = items.concat(list.add(valuesToAdd));
- if (values.length > 0) {
- setTimeout(function() {
- addAsync(values, callback, items);
- }, 1);
- } else {
- list.update();
- callback(items);
- }
- };
- return addAsync;
-};
-
-
-/***/ }),
-/* 9 */
-/***/ (function(module, exports) {
-
-module.exports = function(list) {
-
- // Add handlers
- list.handlers.filterStart = list.handlers.filterStart || [];
- list.handlers.filterComplete = list.handlers.filterComplete || [];
-
- return function(filterFunction) {
- list.trigger('filterStart');
- list.i = 1; // Reset paging
- list.reset.filter();
- if (filterFunction === undefined) {
- list.filtered = false;
- } else {
- list.filtered = true;
- var is = list.items;
- for (var i = 0, il = is.length; i < il; i++) {
- var item = is[i];
- if (filterFunction(item)) {
- item.filtered = true;
- } else {
- item.filtered = false;
- }
- }
- }
- list.update();
- list.trigger('filterComplete');
- return list.visibleItems;
- };
-};
-
-
-/***/ }),
-/* 10 */
-/***/ (function(module, exports, __webpack_require__) {
-
-
-var classes = __webpack_require__(0),
- events = __webpack_require__(1),
- extend = __webpack_require__(7),
- toString = __webpack_require__(6),
- getByClass = __webpack_require__(3),
- fuzzy = __webpack_require__(19);
-
-module.exports = function(list, options) {
- options = options || {};
-
- options = extend({
- location: 0,
- distance: 100,
- threshold: 0.4,
- multiSearch: true,
- searchClass: 'fuzzy-search'
- }, options);
-
-
-
- var fuzzySearch = {
- search: function(searchString, columns) {
- // Substract arguments from the searchString or put searchString as only argument
- var searchArguments = options.multiSearch ? searchString.replace(/ +$/, '').split(/ +/) : [searchString];
-
- for (var k = 0, kl = list.items.length; k < kl; k++) {
- fuzzySearch.item(list.items[k], columns, searchArguments);
- }
- },
- item: function(item, columns, searchArguments) {
- var found = true;
- for(var i = 0; i < searchArguments.length; i++) {
- var foundArgument = false;
- for (var j = 0, jl = columns.length; j < jl; j++) {
- if (fuzzySearch.values(item.values(), columns[j], searchArguments[i])) {
- foundArgument = true;
- }
- }
- if(!foundArgument) {
- found = false;
- }
- }
- item.found = found;
- },
- values: function(values, value, searchArgument) {
- if (values.hasOwnProperty(value)) {
- var text = toString(values[value]).toLowerCase();
-
- if (fuzzy(text, searchArgument, options)) {
- return true;
- }
- }
- return false;
- }
- };
-
-
- events.bind(getByClass(list.listContainer, options.searchClass), 'keyup', function(e) {
- var target = e.target || e.srcElement; // IE have srcElement
- list.search(target.value, fuzzySearch.search);
- });
-
- return function(str, columns) {
- list.search(str, columns, fuzzySearch.search);
- };
-};
-
-
-/***/ }),
-/* 11 */
/***/ (function(module, exports, __webpack_require__) {
var naturalSort = __webpack_require__(18),
@@ -656,7 +526,7 @@ module.exports = function(id, options, values) {
var self = this,
init,
Item = __webpack_require__(2)(self),
- addAsync = __webpack_require__(8)(self),
+ addAsync = __webpack_require__(9)(self),
initPagination = __webpack_require__(12)(self);
init = {
@@ -695,9 +565,9 @@ module.exports = function(id, options, values) {
self.parse = __webpack_require__(13)(self);
self.templater = __webpack_require__(16)(self);
self.search = __webpack_require__(14)(self);
- self.filter = __webpack_require__(9)(self);
+ self.filter = __webpack_require__(10)(self);
self.sort = __webpack_require__(15)(self);
- self.fuzzySearch = __webpack_require__(10)(self, options.fuzzySearch);
+ self.fuzzySearch = __webpack_require__(11)(self, options.fuzzySearch);
this.handlers();
this.items();
@@ -905,17 +775,156 @@ module.exports = function(id, options, values) {
};
+/***/ }),
+/* 9 */
+/***/ (function(module, exports) {
+
+module.exports = function(list) {
+ var addAsync = function(values, callback, items) {
+ var valuesToAdd = values.splice(0, 50);
+ items = items || [];
+ items = items.concat(list.add(valuesToAdd));
+ if (values.length > 0) {
+ setTimeout(function() {
+ addAsync(values, callback, items);
+ }, 1);
+ } else {
+ list.update();
+ callback(items);
+ }
+ };
+ return addAsync;
+};
+
+
+/***/ }),
+/* 10 */
+/***/ (function(module, exports) {
+
+module.exports = function(list) {
+
+ // Add handlers
+ list.handlers.filterStart = list.handlers.filterStart || [];
+ list.handlers.filterComplete = list.handlers.filterComplete || [];
+
+ return function(filterFunction) {
+ list.trigger('filterStart');
+ list.i = 1; // Reset paging
+ list.reset.filter();
+ if (filterFunction === undefined) {
+ list.filtered = false;
+ } else {
+ list.filtered = true;
+ var is = list.items;
+ for (var i = 0, il = is.length; i < il; i++) {
+ var item = is[i];
+ if (filterFunction(item)) {
+ item.filtered = true;
+ } else {
+ item.filtered = false;
+ }
+ }
+ }
+ list.update();
+ list.trigger('filterComplete');
+ return list.visibleItems;
+ };
+};
+
+
+/***/ }),
+/* 11 */
+/***/ (function(module, exports, __webpack_require__) {
+
+
+var classes = __webpack_require__(0),
+ events = __webpack_require__(1),
+ extend = __webpack_require__(7),
+ toString = __webpack_require__(6),
+ getByClass = __webpack_require__(3),
+ fuzzy = __webpack_require__(19);
+
+module.exports = function(list, options) {
+ options = options || {};
+
+ options = extend({
+ location: 0,
+ distance: 100,
+ threshold: 0.4,
+ multiSearch: true,
+ searchClass: 'fuzzy-search'
+ }, options);
+
+
+
+ var fuzzySearch = {
+ search: function(searchString, columns) {
+ // Substract arguments from the searchString or put searchString as only argument
+ var searchArguments = options.multiSearch ? searchString.replace(/ +$/, '').split(/ +/) : [searchString];
+
+ for (var k = 0, kl = list.items.length; k < kl; k++) {
+ fuzzySearch.item(list.items[k], columns, searchArguments);
+ }
+ },
+ item: function(item, columns, searchArguments) {
+ var found = true;
+ for(var i = 0; i < searchArguments.length; i++) {
+ var foundArgument = false;
+ for (var j = 0, jl = columns.length; j < jl; j++) {
+ if (fuzzySearch.values(item.values(), columns[j], searchArguments[i])) {
+ foundArgument = true;
+ }
+ }
+ if(!foundArgument) {
+ found = false;
+ }
+ }
+ item.found = found;
+ },
+ values: function(values, value, searchArgument) {
+ if (values.hasOwnProperty(value)) {
+ var text = toString(values[value]).toLowerCase();
+
+ if (fuzzy(text, searchArgument, options)) {
+ return true;
+ }
+ }
+ return false;
+ }
+ };
+
+
+ events.bind(getByClass(list.listContainer, options.searchClass), 'keyup', function(e) {
+ var target = e.target || e.srcElement; // IE have srcElement
+ list.search(target.value, fuzzySearch.search);
+ });
+
+ return function(str, columns) {
+ list.search(str, columns, fuzzySearch.search);
+ };
+};
+
+
/***/ }),
/* 12 */
/***/ (function(module, exports, __webpack_require__) {
var classes = __webpack_require__(0),
events = __webpack_require__(1),
- List = __webpack_require__(11);
+ List = __webpack_require__(8);
module.exports = function(list) {
+ var isHidden = false;
var refresh = function(pagingList, options) {
+ if (list.page < 1) {
+ list.listContainer.style.display = 'none';
+ isHidden = true;
+ return;
+ } else if (isHidden){
+ list.listContainer.style.display = 'block';
+ }
+
var item,
l = list.matchingItems.length,
index = list.i,
@@ -924,11 +933,22 @@ module.exports = function(list) {
currentPage = Math.ceil((index / page)),
innerWindow = options.innerWindow || 2,
left = options.left || options.outerWindow || 0,
- right = options.right || options.outerWindow || 0;
+ right = options.right || options.outerWindow || 0,
+ prev = options.prev || false,
+ next = options.next || false;
right = pages - right;
-
pagingList.clear();
+
+ if (prev && pages > 1 && currentPage > 1) {
+ item = pagingList.add({
+ page: "Prev",
+ dotted: false
+ })[0];
+ classes(item.elm.firstChild).add('prevBtn');
+ item.elm.firstChild.setAttribute('data-i', currentPage - 1);
+ item.elm.firstChild.setAttribute('data-page', page);
+ }
for (var i = 1; i <= pages; i++) {
var className = (currentPage === i) ? "active" : "";
@@ -942,15 +962,25 @@ module.exports = function(list) {
if (className) {
classes(item.elm).add(className);
}
- addEvent(item.elm, i, page);
+ item.elm.firstChild.setAttribute('data-i', i);
+ item.elm.firstChild.setAttribute('data-page', page);
} else if (is.dotted(pagingList, i, left, right, currentPage, innerWindow, pagingList.size())) {
item = pagingList.add({
page: "...",
dotted: true
})[0];
- classes(item.elm).add("disabled");
+ classes(item.elm.firstChild).add("disabled");
}
}
+ if (next && pages > 1 && currentPage < pages) {
+ item = pagingList.add({
+ page: "Next",
+ dotted: false
+ })[0];
+ classes(item.elm.firstChild).add('nextBtn');
+ item.elm.firstChild.setAttribute('data-i', currentPage + 1);
+ item.elm.firstChild.setAttribute('data-page', page);
+ }
};
var is = {
@@ -981,21 +1011,24 @@ module.exports = function(list) {
}
};
- var addEvent = function(elm, i, page) {
- events.bind(elm, 'click', function() {
- list.show((i-1)*page + 1, page);
- });
- };
-
return function(options) {
var pagingList = new List(list.listContainer.id, {
listClass: options.paginationClass || 'pagination',
- item: "
",
+ item: "",
valueNames: ['page', 'dotted'],
searchClass: 'pagination-search-that-is-not-supposed-to-exist',
sortClass: 'pagination-sort-that-is-not-supposed-to-exist'
});
+ events.bind(pagingList.listContainer, 'click', function(e) {
+ var target = e.target || e.srcElement
+ , page = list.utils.getAttribute(target, 'data-page')
+ , i = list.utils.getAttribute(target, 'data-i');
+ if(i){
+ list.show((i-1)*page + 1, page);
+ }
+ });
+
list.on('updated', function() {
refresh(pagingList, options);
});
diff --git a/dist/list.min.js b/dist/list.min.js
index 3cb27373..cc3e80db 100644
--- a/dist/list.min.js
+++ b/dist/list.min.js
@@ -1,2 +1,2 @@
/*! List.js v1.5.0 (http://listjs.com) by Jonny Strömberg (http://javve.com) */
-var List=function(t){function e(n){if(r[n])return r[n].exports;var i=r[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var r={};return e.m=t,e.c=r,e.i=function(t){return t},e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurable:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=11)}([function(t,e,r){function n(t){if(!t||!t.nodeType)throw new Error("A DOM element reference is required");this.el=t,this.list=t.classList}var i=r(4),s=/\s+/;Object.prototype.toString;t.exports=function(t){return new n(t)},n.prototype.add=function(t){if(this.list)return this.list.add(t),this;var e=this.array(),r=i(e,t);return~r||e.push(t),this.el.className=e.join(" "),this},n.prototype.remove=function(t){if(this.list)return this.list.remove(t),this;var e=this.array(),r=i(e,t);return~r&&e.splice(r,1),this.el.className=e.join(" "),this},n.prototype.toggle=function(t,e){return this.list?("undefined"!=typeof e?e!==this.list.toggle(t,e)&&this.list.toggle(t):this.list.toggle(t),this):("undefined"!=typeof e?e?this.add(t):this.remove(t):this.has(t)?this.remove(t):this.add(t),this)},n.prototype.array=function(){var t=this.el.getAttribute("class")||"",e=t.replace(/^\s+|\s+$/g,""),r=e.split(s);return""===r[0]&&r.shift(),r},n.prototype.has=n.prototype.contains=function(t){return this.list?this.list.contains(t):!!~i(this.array(),t)}},function(t,e,r){var n=window.addEventListener?"addEventListener":"attachEvent",i=window.removeEventListener?"removeEventListener":"detachEvent",s="addEventListener"!==n?"on":"",a=r(5);e.bind=function(t,e,r,i){t=a(t);for(var o=0;o0?setTimeout(function(){e(r,n,i)},1):(t.update(),n(i))};return e}},function(t,e){t.exports=function(t){return t.handlers.filterStart=t.handlers.filterStart||[],t.handlers.filterComplete=t.handlers.filterComplete||[],function(e){if(t.trigger("filterStart"),t.i=1,t.reset.filter(),void 0===e)t.filtered=!1;else{t.filtered=!0;for(var r=t.items,n=0,i=r.length;nv.page,a=new m(t[i],void 0,n),v.items.push(a),r.push(a)}return v.update(),r}},this.show=function(t,e){return this.i=t,this.page=e,v.update(),v},this.remove=function(t,e,r){for(var n=0,i=0,s=v.items.length;i-1&&r.splice(n,1),v},this.trigger=function(t){for(var e=v.handlers[t].length;e--;)v.handlers[t][e](v);return v},this.reset={filter:function(){for(var t=v.items,e=t.length;e--;)t[e].filtered=!1;return v},search:function(){for(var t=v.items,e=t.length;e--;)t[e].found=!1;return v}},this.update=function(){var t=v.items,e=t.length;v.visibleItems=[],v.matchingItems=[],v.templater.clear();for(var r=0;r=v.i&&v.visibleItems.lengthe},innerWindow:function(t,e,r){return t>=e-r&&t<=e+r},dotted:function(t,e,r,n,i,s,a){return this.dottedLeft(t,e,r,n,i,s)||this.dottedRight(t,e,r,n,i,s,a)},dottedLeft:function(t,e,r,n,i,s){return e==r+1&&!this.innerWindow(e,i,s)&&!this.right(e,n)},dottedRight:function(t,e,r,n,i,s,a){return!t.items[a-1].values().dotted&&(e==n&&!this.innerWindow(e,i,s)&&!this.right(e,n))}},a=function(e,r,n){i.bind(e,"click",function(){t.show((r-1)*n+1,n)})};return function(r){var n=new s(t.listContainer.id,{listClass:r.paginationClass||"pagination",item:"",valueNames:["page","dotted"],searchClass:"pagination-search-that-is-not-supposed-to-exist",sortClass:"pagination-sort-that-is-not-supposed-to-exist"});t.on("updated",function(){e(n,r)}),e(n,r)}}},function(t,e,r){t.exports=function(t){var e=r(2)(t),n=function(t){for(var e=t.childNodes,r=[],n=0,i=e.length;n0?setTimeout(function(){s(e,r)},1):(t.update(),t.trigger("parseComplete"))};return t.handlers.parseComplete=t.handlers.parseComplete||[],function(){var e=n(t.list),r=t.valueNames;t.indexAsync?s(e,r):i(e,r)}}},function(t,e){t.exports=function(t){var e,r,n,i,s={resetList:function(){t.i=1,t.templater.clear(),i=void 0},setOptions:function(t){2==t.length&&t[1]instanceof Array?r=t[1]:2==t.length&&"function"==typeof t[1]?(r=void 0,i=t[1]):3==t.length?(r=t[1],i=t[2]):r=void 0},setColumns:function(){0!==t.items.length&&void 0===r&&(r=void 0===t.searchColumns?s.toArray(t.items[0].values()):t.searchColumns)},setSearchString:function(e){e=t.utils.toString(e).toLowerCase(),e=e.replace(/[-[\]{}()*+?.,\\^$|#]/g,"\\$&"),n=e},toArray:function(t){var e=[];for(var r in t)e.push(r);return e}},a={list:function(){for(var e=0,r=t.items.length;e-1))},reset:function(){t.reset.search(),t.searched=!1}},o=function(e){return t.trigger("searchStart"),s.resetList(),s.setSearchString(e),s.setOptions(arguments),s.setColumns(),""===n?a.reset():(t.searched=!0,i?i(n,r):a.list()),t.update(),t.trigger("searchComplete"),t.visibleItems};return t.handlers.searchStart=t.handlers.searchStart||[],t.handlers.searchComplete=t.handlers.searchComplete||[],t.utils.events.bind(t.utils.getByClass(t.listContainer,t.searchClass),"keyup",function(e){var r=e.target||e.srcElement,n=""===r.value&&!t.searched;n||o(r.value)}),t.utils.events.bind(t.utils.getByClass(t.listContainer,t.searchClass),"input",function(t){var e=t.target||t.srcElement;""===e.value&&o("")}),o}},function(t,e){t.exports=function(t){var e={els:void 0,clear:function(){for(var r=0,n=e.els.length;r]/g.exec(e)){var s=document.createElement("tbody");return s.innerHTML=e,s.firstChild}if(e.indexOf("<")!==-1){var a=document.createElement("div");return a.innerHTML=e,a.firstChild}var o=document.getElementById(t.item);if(o)return o}},this.get=function(e,n){r.create(e);for(var i={},s=0,a=n.length;s=1;)t.list.removeChild(t.list.firstChild)},n()};t.exports=function(t){return new r(t)}},function(t,e){t.exports=function(t,e){var r=t.getAttribute&&t.getAttribute(e)||null;if(!r)for(var n=t.attributes,i=n.length,s=0;s=48&&t<=57}function i(t,e){for(var r=(t+="").length,i=(e+="").length,s=0,l=0;s32)return!1;var o=i,l=function(){var t,r={};for(t=0;t=p;b--){var w=l[t.charAt(b-1)];if(0===g?y[b]=(y[b+1]<<1|1)&w:y[b]=(y[b+1]<<1|1)&w|((v[b+1]|v[b])<<1|1)|v[b+1],y[b]&f){var x=n(g,b-1);if(x<=u){if(u=x,c=b-1,!(c>o))break;p=Math.max(1,2*o-c)}}}if(n(g+1,o)>u)break;v=y}return!(c<0)}}]);
\ No newline at end of file
+var List=function(t){function e(n){if(r[n])return r[n].exports;var i=r[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var r={};return e.m=t,e.c=r,e.i=function(t){return t},e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurable:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=8)}([function(t,e,r){function n(t){if(!t||!t.nodeType)throw new Error("A DOM element reference is required");this.el=t,this.list=t.classList}var i=r(4),s=/\s+/;Object.prototype.toString;t.exports=function(t){return new n(t)},n.prototype.add=function(t){if(this.list)return this.list.add(t),this;var e=this.array();return~i(e,t)||e.push(t),this.el.className=e.join(" "),this},n.prototype.remove=function(t){if(this.list)return this.list.remove(t),this;var e=this.array(),r=i(e,t);return~r&&e.splice(r,1),this.el.className=e.join(" "),this},n.prototype.toggle=function(t,e){return this.list?(void 0!==e?e!==this.list.toggle(t,e)&&this.list.toggle(t):this.list.toggle(t),this):(void 0!==e?e?this.add(t):this.remove(t):this.has(t)?this.remove(t):this.add(t),this)},n.prototype.array=function(){var t=this.el.getAttribute("class")||"",e=t.replace(/^\s+|\s+$/g,""),r=e.split(s);return""===r[0]&&r.shift(),r},n.prototype.has=n.prototype.contains=function(t){return this.list?this.list.contains(t):!!~i(this.array(),t)}},function(t,e,r){var n=window.addEventListener?"addEventListener":"attachEvent",i=window.removeEventListener?"removeEventListener":"detachEvent",s="addEventListener"!==n?"on":"",a=r(5);e.bind=function(t,e,r,i){t=a(t);for(var o=0;ov.page,a=new m(t[i],void 0,n),v.items.push(a),r.push(a)}return v.update(),r}},this.show=function(t,e){return this.i=t,this.page=e,v.update(),v},this.remove=function(t,e,r){for(var n=0,i=0,s=v.items.length;i-1&&r.splice(n,1),v},this.trigger=function(t){for(var e=v.handlers[t].length;e--;)v.handlers[t][e](v);return v},this.reset={filter:function(){for(var t=v.items,e=t.length;e--;)t[e].filtered=!1;return v},search:function(){for(var t=v.items,e=t.length;e--;)t[e].found=!1;return v}},this.update=function(){var t=v.items,e=t.length;v.visibleItems=[],v.matchingItems=[],v.templater.clear();for(var r=0;r=v.i&&v.visibleItems.length0?setTimeout(function(){e(r,n,i)},1):(t.update(),n(i))};return e}},function(t,e){t.exports=function(t){return t.handlers.filterStart=t.handlers.filterStart||[],t.handlers.filterComplete=t.handlers.filterComplete||[],function(e){if(t.trigger("filterStart"),t.i=1,t.reset.filter(),void 0===e)t.filtered=!1;else{t.filtered=!0;for(var r=t.items,n=0,i=r.length;n1&&f>1&&(s=r.add({page:"Prev",dotted:!1})[0],n(s.elm.firstChild).add("prevBtn"),s.elm.firstChild.setAttribute("data-i",f-1),s.elm.firstChild.setAttribute("data-page",u));for(var p=1;p<=c;p++){var C=f===p?"active":"";a.number(p,h,v,f,d)?(s=r.add({page:p,dotted:!1})[0],C&&n(s.elm).add(C),s.elm.firstChild.setAttribute("data-i",p),s.elm.firstChild.setAttribute("data-page",u)):a.dotted(r,p,h,v,f,d,r.size())&&(s=r.add({page:"...",dotted:!0})[0],n(s.elm.firstChild).add("disabled"))}g&&c>1&&fe},innerWindow:function(t,e,r){return t>=e-r&&t<=e+r},dotted:function(t,e,r,n,i,s,a){return this.dottedLeft(t,e,r,n,i,s)||this.dottedRight(t,e,r,n,i,s,a)},dottedLeft:function(t,e,r,n,i,s){return e==r+1&&!this.innerWindow(e,i,s)&&!this.right(e,n)},dottedRight:function(t,e,r,n,i,s,a){return!t.items[a-1].values().dotted&&(e==n&&!this.innerWindow(e,i,s)&&!this.right(e,n))}};return function(e){var n=new s(t.listContainer.id,{listClass:e.paginationClass||"pagination",item:"",valueNames:["page","dotted"],searchClass:"pagination-search-that-is-not-supposed-to-exist",sortClass:"pagination-sort-that-is-not-supposed-to-exist"});i.bind(n.listContainer,"click",function(e){var r=e.target||e.srcElement,n=t.utils.getAttribute(r,"data-page"),i=t.utils.getAttribute(r,"data-i");i&&t.show((i-1)*n+1,n)}),t.on("updated",function(){r(n,e)}),r(n,e)}}},function(t,e,r){t.exports=function(t){var e=r(2)(t),n=function(t){for(var e=t.childNodes,r=[],n=0,i=e.length;n0?setTimeout(function(){s(e,r)},1):(t.update(),t.trigger("parseComplete"))};return t.handlers.parseComplete=t.handlers.parseComplete||[],function(){var e=n(t.list),r=t.valueNames;t.indexAsync?s(e,r):i(e,r)}}},function(t,e){t.exports=function(t){var e,r,n,i,s={resetList:function(){t.i=1,t.templater.clear(),i=void 0},setOptions:function(t){2==t.length&&t[1]instanceof Array?r=t[1]:2==t.length&&"function"==typeof t[1]?(r=void 0,i=t[1]):3==t.length?(r=t[1],i=t[2]):r=void 0},setColumns:function(){0!==t.items.length&&void 0===r&&(r=void 0===t.searchColumns?s.toArray(t.items[0].values()):t.searchColumns)},setSearchString:function(e){e=t.utils.toString(e).toLowerCase(),e=e.replace(/[-[\]{}()*+?.,\\^$|#]/g,"\\$&"),n=e},toArray:function(t){var e=[];for(var r in t)e.push(r);return e}},a={list:function(){for(var e=0,r=t.items.length;e-1))},reset:function(){t.reset.search(),t.searched=!1}},o=function(e){return t.trigger("searchStart"),s.resetList(),s.setSearchString(e),s.setOptions(arguments),s.setColumns(),""===n?a.reset():(t.searched=!0,i?i(n,r):a.list()),t.update(),t.trigger("searchComplete"),t.visibleItems};return t.handlers.searchStart=t.handlers.searchStart||[],t.handlers.searchComplete=t.handlers.searchComplete||[],t.utils.events.bind(t.utils.getByClass(t.listContainer,t.searchClass),"keyup",function(e){var r=e.target||e.srcElement;""===r.value&&!t.searched||o(r.value)}),t.utils.events.bind(t.utils.getByClass(t.listContainer,t.searchClass),"input",function(t){""===(t.target||t.srcElement).value&&o("")}),o}},function(t,e){t.exports=function(t){var e={els:void 0,clear:function(){for(var r=0,n=e.els.length;r]/g.exec(e)){var s=document.createElement("tbody");return s.innerHTML=e,s.firstChild}if(-1!==e.indexOf("<")){var a=document.createElement("div");return a.innerHTML=e,a.firstChild}var o=document.getElementById(t.item);if(o)return o}},this.get=function(e,n){r.create(e);for(var i={},s=0,a=n.length;s=1;)t.list.removeChild(t.list.firstChild)},function(){(e=r.getItemSource(t.item))&&(e=r.clearSourceItem(e,t.valueNames))}()};t.exports=function(t){return new r(t)}},function(t,e){t.exports=function(t,e){var r=t.getAttribute&&t.getAttribute(e)||null;if(!r)for(var n=t.attributes,i=n.length,s=0;s=48&&t<=57}function i(t,e){for(var r=(t+="").length,i=(e+="").length,s=0,l=0;s32)return!1;var o=i,l=function(){var t,r={};for(t=0;t=p;b--){var A=l[t.charAt(b-1)];if(y[b]=0===g?(y[b+1]<<1|1)&A:(y[b+1]<<1|1)&A|(v[b+1]|v[b])<<1|1|v[b+1],y[b]&f){var x=n(g,b-1);if(x<=u){if(u=x,!((c=b-1)>o))break;p=Math.max(1,2*o-c)}}}if(n(g+1,o)>u)break;v=y}return!(c<0)}}]);
\ No newline at end of file
diff --git a/docs/docs/pagination.html b/docs/docs/pagination.html
index 8e867c80..e378b829 100644
--- a/docs/docs/pagination.html
+++ b/docs/docs/pagination.html
@@ -59,6 +59,14 @@ Options
right Int, default: 0
Same as left
but from right.
+
+ prev Bool, default: false
+ Adds a "Previous" with text "Prev" as the first item in lists with more than one page. The button only appears on the second page.
+
+
+ next Bool, default: false
+ Adds a "Next" with text "Next" as the last item in lists with more than one page. The button on all pages except the last one.
+
Notice
diff --git a/src/pagination.js b/src/pagination.js
index 69e9f5e7..e6b11186 100644
--- a/src/pagination.js
+++ b/src/pagination.js
@@ -22,10 +22,22 @@ module.exports = function(list) {
currentPage = Math.ceil((index / page)),
innerWindow = options.innerWindow || 2,
left = options.left || options.outerWindow || 0,
- right = options.right || options.outerWindow || 0;
+ right = options.right || options.outerWindow || 0,
+ prev = options.prev || false,
+ next = options.next || false;
right = pages - right;
pagingList.clear();
+
+ if (prev && pages > 1 && currentPage > 1) {
+ item = pagingList.add({
+ page: "Prev",
+ dotted: false
+ })[0];
+ classes(item.elm.firstChild).add('prevBtn');
+ item.elm.firstChild.setAttribute('data-i', currentPage - 1);
+ item.elm.firstChild.setAttribute('data-page', page);
+ }
for (var i = 1; i <= pages; i++) {
var className = (currentPage === i) ? "active" : "";
@@ -46,9 +58,18 @@ module.exports = function(list) {
page: "...",
dotted: true
})[0];
- classes(item.elm).add("disabled");
+ classes(item.elm.firstChild).add("disabled");
}
}
+ if (next && pages > 1 && currentPage < pages) {
+ item = pagingList.add({
+ page: "Next",
+ dotted: false
+ })[0];
+ classes(item.elm.firstChild).add('nextBtn');
+ item.elm.firstChild.setAttribute('data-i', currentPage + 1);
+ item.elm.firstChild.setAttribute('data-page', page);
+ }
};
var is = {
@@ -82,7 +103,7 @@ module.exports = function(list) {
return function(options) {
var pagingList = new List(list.listContainer.id, {
listClass: options.paginationClass || 'pagination',
- item: "",
+ item: "",
valueNames: ['page', 'dotted'],
searchClass: 'pagination-search-that-is-not-supposed-to-exist',
sortClass: 'pagination-sort-that-is-not-supposed-to-exist'