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'