From 192658e967ea977cad8fb6bb1a5a951779c98afd Mon Sep 17 00:00:00 2001 From: Pavel Ivanov Date: Wed, 4 Nov 2015 14:28:56 +0200 Subject: [PATCH 01/21] Introduced #23, also checked jquery. Minimal required 1.8.1 --- bower.json | 4 +-- jquery.twbsPagination.js | 52 +++++++++++++----------------------- jquery.twbsPagination.min.js | 4 +-- package.json | 4 +-- twbs-pagination.jquery.json | 4 +-- 5 files changed, 26 insertions(+), 42 deletions(-) diff --git a/bower.json b/bower.json index c66275c..a8733b8 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "twbs-pagination", - "version": "1.3.1", + "version": "1.4", "homepage": "https://github.com/esimakin/twbs-pagination", "authors": [ "Eugene Simakin " @@ -11,7 +11,7 @@ "globals" ], "dependencies": { - "jquery": ">=1.7.0" + "jquery": ">=1.8.1" }, "keywords": [ "pagination", diff --git a/jquery.twbsPagination.js b/jquery.twbsPagination.js index 20a76ea..29b9ebc 100644 --- a/jquery.twbsPagination.js +++ b/jquery.twbsPagination.js @@ -1,8 +1,8 @@ /*! - * jQuery pagination plugin v1.2.6 + * jQuery pagination plugin v1.4 * http://esimakin.github.io/twbs-pagination/ * - * Copyright 2014, Eugene Simakin + * Copyright 2014-2015, Eugene Simakin * Released under Apache 2.0 license * http://apache.org/licenses/LICENSE-2.0.html */ @@ -101,24 +101,25 @@ buildListItems: function (pages) { var listItems = []; + // Add "first" page button if (this.options.first) { listItems.push(this.buildItem('first', 1)); } - + // Add "previous" page button if (this.options.prev) { var prev = pages.currentPage > 1 ? pages.currentPage - 1 : this.options.loop ? this.options.totalPages : 1; listItems.push(this.buildItem('prev', prev)); } - + // Add "pages" for (var i = 0; i < pages.numeric.length; i++) { listItems.push(this.buildItem('page', pages.numeric[i])); } - + // Add "next" page button if (this.options.next) { var next = pages.currentPage < this.options.totalPages ? pages.currentPage + 1 : this.options.loop ? 1 : this.options.totalPages; listItems.push(this.buildItem('next', next)); } - + // Add "last" page button if (this.options.last) { listItems.push(this.buildItem('last', this.options.totalPages)); } @@ -131,31 +132,8 @@ $itemContent = $(''), itemText = null; - switch (type) { - case 'page': - itemText = page; - $itemContainer.addClass(this.options.pageClass); - break; - case 'first': - itemText = this.options.first; - $itemContainer.addClass(this.options.firstClass); - break; - case 'prev': - itemText = this.options.prev; - $itemContainer.addClass(this.options.prevClass); - break; - case 'next': - itemText = this.options.next; - $itemContainer.addClass(this.options.nextClass); - break; - case 'last': - itemText = this.options.last; - $itemContainer.addClass(this.options.lastClass); - break; - default: - break; - } - + itemText = this.options[type] ? this.makeText(this.options[type]) : page; + $itemContainer.addClass(this.options[type + 'Class']); $itemContainer.data('page', page); $itemContainer.data('page-type', type); $itemContainer.append($itemContent.attr('href', this.makeHref(page)).html(itemText)); @@ -241,8 +219,13 @@ }); }, - makeHref: function (c) { - return this.options.href ? this.options.href.replace(this.options.hrefVariable, c) : "#"; + makeHref: function (page) { + return this.options.href ? this.makeText(this.options.href, page) : "#"; + }, + + makeText: function (text, page) { + return text.replace(this.options.pageVariable, page) + .replace(this.options.totalPagesVariable, this.options.totalPages) } }; @@ -269,7 +252,8 @@ visiblePages: 5, initiateStartPageClick: true, href: false, - hrefVariable: '{{number}}', + pageVariable: '{{page}}', + totalPagesVariable: '{{total_pages}}', first: 'First', prev: 'Previous', next: 'Next', diff --git a/jquery.twbsPagination.min.js b/jquery.twbsPagination.min.js index 7cc71f9..e74271d 100644 --- a/jquery.twbsPagination.min.js +++ b/jquery.twbsPagination.min.js @@ -1,9 +1,9 @@ /* - * jQuery Bootstrap Pagination v1.3.1 + * jQuery Bootstrap Pagination v1.4 * https://github.com/esimakin/twbs-pagination * * Copyright 2014-2015 Eugene Simakin * Released under Apache 2.0 license * http://apache.org/licenses/LICENSE-2.0.html */ -!function(a,b,c,d){"use strict";var e=a.fn.twbsPagination,f=function(c,d){if(this.$element=a(c),this.options=a.extend({},a.fn.twbsPagination.defaults,d),this.options.startPage<1||this.options.startPage>this.options.totalPages)throw new Error("Start page option is incorrect");if(this.options.totalPages=parseInt(this.options.totalPages),isNaN(this.options.totalPages))throw new Error("Total pages option is not correct!");if(this.options.visiblePages=parseInt(this.options.visiblePages),isNaN(this.options.visiblePages))throw new Error("Visible pages option is not correct!");if(this.options.totalPages"),this.$listContainer.addClass(this.options.paginationClass),"UL"!==g&&this.$element.append(this.$listContainer),this.render(this.getPages(this.options.startPage)),this.setupEvents(),this.options.initiateStartPageClick&&this.$element.trigger("page",this.options.startPage),this};f.prototype={constructor:f,destroy:function(){return this.$element.empty(),this.$element.removeData("twbs-pagination"),this.$element.off("page"),this},show:function(a){if(1>a||a>this.options.totalPages)throw new Error("Page is incorrect.");return this.render(this.getPages(a)),this.setupEvents(),this.$element.trigger("page",a),this},buildListItems:function(a){var b=[];if(this.options.first&&b.push(this.buildItem("first",1)),this.options.prev){var c=a.currentPage>1?a.currentPage-1:this.options.loop?this.options.totalPages:1;b.push(this.buildItem("prev",c))}for(var d=0;d"),e=a(""),f=null;switch(b){case"page":f=c,d.addClass(this.options.pageClass);break;case"first":f=this.options.first,d.addClass(this.options.firstClass);break;case"prev":f=this.options.prev,d.addClass(this.options.prevClass);break;case"next":f=this.options.next,d.addClass(this.options.nextClass);break;case"last":f=this.options.last,d.addClass(this.options.lastClass)}return d.data("page",c),d.data("page-type",b),d.append(e.attr("href",this.makeHref(c)).html(f)),d},getPages:function(a){var b=[],c=Math.floor(this.options.visiblePages/2),d=a-c+1-this.options.visiblePages%2,e=a+c;0>=d&&(d=1,e=this.options.visiblePages),e>this.options.totalPages&&(d=this.options.totalPages-this.options.visiblePages+1,e=this.options.totalPages);for(var f=d;e>=f;)b.push(f),f++;return{currentPage:a,numeric:b}},render:function(b){var c=this;this.$listContainer.children().remove(),this.$listContainer.append(this.buildListItems(b)),this.$listContainer.children().each(function(){var d=a(this),e=d.data("page-type");switch(e){case"page":d.data("page")===b.currentPage&&d.addClass(c.options.activeClass);break;case"first":d.toggleClass(c.options.disabledClass,1===b.currentPage);break;case"last":d.toggleClass(c.options.disabledClass,b.currentPage===c.options.totalPages);break;case"prev":d.toggleClass(c.options.disabledClass,!c.options.loop&&1===b.currentPage);break;case"next":d.toggleClass(c.options.disabledClass,!c.options.loop&&b.currentPage===c.options.totalPages)}})},setupEvents:function(){var b=this;this.$listContainer.find("li").each(function(){var c=a(this);return c.off(),c.hasClass(b.options.disabledClass)||c.hasClass(b.options.activeClass)?void c.on("click",!1):void c.click(function(a){!b.options.href&&a.preventDefault(),b.show(parseInt(c.data("page")))})})},makeHref:function(a){return this.options.href?this.options.href.replace(this.options.hrefVariable,a):"#"}},a.fn.twbsPagination=function(b){var c,e=Array.prototype.slice.call(arguments,1),g=a(this),h=g.data("twbs-pagination"),i="object"==typeof b&&b;return h||g.data("twbs-pagination",h=new f(this,i)),"string"==typeof b&&(c=h[b].apply(h,e)),c===d?g:c},a.fn.twbsPagination.defaults={totalPages:0,startPage:1,visiblePages:5,initiateStartPageClick:!0,href:!1,hrefVariable:"{{number}}",first:"First",prev:"Previous",next:"Next",last:"Last",loop:!1,onPageClick:null,paginationClass:"pagination",nextClass:"next",prevClass:"prev",lastClass:"last",firstClass:"first",pageClass:"page",activeClass:"active",disabledClass:"disabled"},a.fn.twbsPagination.Constructor=f,a.fn.twbsPagination.noConflict=function(){return a.fn.twbsPagination=e,this}}(window.jQuery,window,document); \ No newline at end of file +!function(a,b,c,d){"use strict";var e=a.fn.twbsPagination,f=function(c,d){if(this.$element=a(c),this.options=a.extend({},a.fn.twbsPagination.defaults,d),this.options.startPage<1||this.options.startPage>this.options.totalPages)throw new Error("Start page option is incorrect");if(this.options.totalPages=parseInt(this.options.totalPages),isNaN(this.options.totalPages))throw new Error("Total pages option is not correct!");if(this.options.visiblePages=parseInt(this.options.visiblePages),isNaN(this.options.visiblePages))throw new Error("Visible pages option is not correct!");if(this.options.totalPages"),this.$listContainer.addClass(this.options.paginationClass),"UL"!==g&&this.$element.append(this.$listContainer),this.render(this.getPages(this.options.startPage)),this.setupEvents(),this.options.initiateStartPageClick&&this.$element.trigger("page",this.options.startPage),this};f.prototype={constructor:f,destroy:function(){return this.$element.empty(),this.$element.removeData("twbs-pagination"),this.$element.off("page"),this},show:function(a){if(1>a||a>this.options.totalPages)throw new Error("Page is incorrect.");return this.render(this.getPages(a)),this.setupEvents(),this.$element.trigger("page",a),this},buildListItems:function(a){var b=[];if(this.options.first&&b.push(this.buildItem("first",1)),this.options.prev){var c=a.currentPage>1?a.currentPage-1:this.options.loop?this.options.totalPages:1;b.push(this.buildItem("prev",c))}for(var d=0;d"),e=a(""),f=null;return f=this.options[b]?this.makeText(this.options[b]):c,d.addClass(this.options[b+"Class"]),d.data("page",c),d.data("page-type",b),d.append(e.attr("href",this.makeHref(c)).html(f)),d},getPages:function(a){var b=[],c=Math.floor(this.options.visiblePages/2),d=a-c+1-this.options.visiblePages%2,e=a+c;0>=d&&(d=1,e=this.options.visiblePages),e>this.options.totalPages&&(d=this.options.totalPages-this.options.visiblePages+1,e=this.options.totalPages);for(var f=d;e>=f;)b.push(f),f++;return{currentPage:a,numeric:b}},render:function(b){var c=this;this.$listContainer.children().remove(),this.$listContainer.append(this.buildListItems(b)),this.$listContainer.children().each(function(){var d=a(this),e=d.data("page-type");switch(e){case"page":d.data("page")===b.currentPage&&d.addClass(c.options.activeClass);break;case"first":d.toggleClass(c.options.disabledClass,1===b.currentPage);break;case"last":d.toggleClass(c.options.disabledClass,b.currentPage===c.options.totalPages);break;case"prev":d.toggleClass(c.options.disabledClass,!c.options.loop&&1===b.currentPage);break;case"next":d.toggleClass(c.options.disabledClass,!c.options.loop&&b.currentPage===c.options.totalPages)}})},setupEvents:function(){var b=this;this.$listContainer.find("li").each(function(){var c=a(this);return c.off(),c.hasClass(b.options.disabledClass)||c.hasClass(b.options.activeClass)?void c.on("click",!1):void c.click(function(a){!b.options.href&&a.preventDefault(),b.show(parseInt(c.data("page")))})})},makeHref:function(a){return this.options.href?this.makeText(this.options.href,a):"#"},makeText:function(a,b){return a.replace(this.options.pageVariable,b).replace(this.options.totalPagesVariable,this.options.totalPages)}},a.fn.twbsPagination=function(b){var c,e=Array.prototype.slice.call(arguments,1),g=a(this),h=g.data("twbs-pagination"),i="object"==typeof b&&b;return h||g.data("twbs-pagination",h=new f(this,i)),"string"==typeof b&&(c=h[b].apply(h,e)),c===d?g:c},a.fn.twbsPagination.defaults={totalPages:0,startPage:1,visiblePages:5,initiateStartPageClick:!0,href:!1,pageVariable:"{{page}}",totalPagesVariable:"{{total_pages}}",first:"First",prev:"Previous",next:"Next",last:"Last",loop:!1,onPageClick:null,paginationClass:"pagination",nextClass:"next",prevClass:"prev",lastClass:"last",firstClass:"first",pageClass:"page",activeClass:"active",disabledClass:"disabled"},a.fn.twbsPagination.Constructor=f,a.fn.twbsPagination.noConflict=function(){return a.fn.twbsPagination=e,this}}(window.jQuery,window,document); \ No newline at end of file diff --git a/package.json b/package.json index dc042ae..b69b1cd 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,13 @@ { "name": "twbs-pagination", "nativeName": "jQuery Bootstrap Pagination", - "version": "1.3.1", + "version": "1.4", "homepage": "https://github.com/esimakin/twbs-pagination", "author": "Eugene Simakin ", "description": "jQuery simple pagination plugin for bootstrap-style webpages", "main": "jquery.twbsPagination", "dependencies": { - "jquery": ">=1.7.0" + "jquery": ">=1.8.1" }, "devDependencies": { "grunt": "^0.4.5", diff --git a/twbs-pagination.jquery.json b/twbs-pagination.jquery.json index 8fcaffc..9baeb0e 100644 --- a/twbs-pagination.jquery.json +++ b/twbs-pagination.jquery.json @@ -1,6 +1,6 @@ { "name": "twbs-pagination", - "version": "1.3.1", + "version": "1.4", "title": "jQuery Bootstrap Pagination", "author": { "name": "Eugene Simakin", @@ -14,7 +14,7 @@ } ], "dependencies": { - "jquery": "> 1.7" + "jquery": "> 1.8.1" }, "description": "Twbs Pagination is a jQuery plugin that provides pagination for your web site or application. Check out the demo!", "keywords": [ From 5a89c6f9a1fb1cb06c779d7be867baf95d88c65d Mon Sep 17 00:00:00 2001 From: Pavel Ivanov Date: Wed, 4 Nov 2015 14:55:50 +0200 Subject: [PATCH 02/21] Fix replaced variable for #54, #23 --- jquery.twbsPagination.js | 2 +- jquery.twbsPagination.min.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/jquery.twbsPagination.js b/jquery.twbsPagination.js index 29b9ebc..44aeca8 100644 --- a/jquery.twbsPagination.js +++ b/jquery.twbsPagination.js @@ -42,7 +42,7 @@ if (this.options.href) { var match, regexp = this.options.href.replace(/[-\/\\^$*+?.|[\]]/g, '\\$&'); - regexp = regexp.replace(this.options.hrefVariable, '(\\d+)'); + regexp = regexp.replace(this.options.pageVariable, '(\\d+)'); if ((match = new RegExp(regexp, 'i').exec(window.location.href)) != null) { this.options.startPage = parseInt(match[1], 10); } diff --git a/jquery.twbsPagination.min.js b/jquery.twbsPagination.min.js index e74271d..c63aafa 100644 --- a/jquery.twbsPagination.min.js +++ b/jquery.twbsPagination.min.js @@ -6,4 +6,4 @@ * Released under Apache 2.0 license * http://apache.org/licenses/LICENSE-2.0.html */ -!function(a,b,c,d){"use strict";var e=a.fn.twbsPagination,f=function(c,d){if(this.$element=a(c),this.options=a.extend({},a.fn.twbsPagination.defaults,d),this.options.startPage<1||this.options.startPage>this.options.totalPages)throw new Error("Start page option is incorrect");if(this.options.totalPages=parseInt(this.options.totalPages),isNaN(this.options.totalPages))throw new Error("Total pages option is not correct!");if(this.options.visiblePages=parseInt(this.options.visiblePages),isNaN(this.options.visiblePages))throw new Error("Visible pages option is not correct!");if(this.options.totalPages"),this.$listContainer.addClass(this.options.paginationClass),"UL"!==g&&this.$element.append(this.$listContainer),this.render(this.getPages(this.options.startPage)),this.setupEvents(),this.options.initiateStartPageClick&&this.$element.trigger("page",this.options.startPage),this};f.prototype={constructor:f,destroy:function(){return this.$element.empty(),this.$element.removeData("twbs-pagination"),this.$element.off("page"),this},show:function(a){if(1>a||a>this.options.totalPages)throw new Error("Page is incorrect.");return this.render(this.getPages(a)),this.setupEvents(),this.$element.trigger("page",a),this},buildListItems:function(a){var b=[];if(this.options.first&&b.push(this.buildItem("first",1)),this.options.prev){var c=a.currentPage>1?a.currentPage-1:this.options.loop?this.options.totalPages:1;b.push(this.buildItem("prev",c))}for(var d=0;d"),e=a(""),f=null;return f=this.options[b]?this.makeText(this.options[b]):c,d.addClass(this.options[b+"Class"]),d.data("page",c),d.data("page-type",b),d.append(e.attr("href",this.makeHref(c)).html(f)),d},getPages:function(a){var b=[],c=Math.floor(this.options.visiblePages/2),d=a-c+1-this.options.visiblePages%2,e=a+c;0>=d&&(d=1,e=this.options.visiblePages),e>this.options.totalPages&&(d=this.options.totalPages-this.options.visiblePages+1,e=this.options.totalPages);for(var f=d;e>=f;)b.push(f),f++;return{currentPage:a,numeric:b}},render:function(b){var c=this;this.$listContainer.children().remove(),this.$listContainer.append(this.buildListItems(b)),this.$listContainer.children().each(function(){var d=a(this),e=d.data("page-type");switch(e){case"page":d.data("page")===b.currentPage&&d.addClass(c.options.activeClass);break;case"first":d.toggleClass(c.options.disabledClass,1===b.currentPage);break;case"last":d.toggleClass(c.options.disabledClass,b.currentPage===c.options.totalPages);break;case"prev":d.toggleClass(c.options.disabledClass,!c.options.loop&&1===b.currentPage);break;case"next":d.toggleClass(c.options.disabledClass,!c.options.loop&&b.currentPage===c.options.totalPages)}})},setupEvents:function(){var b=this;this.$listContainer.find("li").each(function(){var c=a(this);return c.off(),c.hasClass(b.options.disabledClass)||c.hasClass(b.options.activeClass)?void c.on("click",!1):void c.click(function(a){!b.options.href&&a.preventDefault(),b.show(parseInt(c.data("page")))})})},makeHref:function(a){return this.options.href?this.makeText(this.options.href,a):"#"},makeText:function(a,b){return a.replace(this.options.pageVariable,b).replace(this.options.totalPagesVariable,this.options.totalPages)}},a.fn.twbsPagination=function(b){var c,e=Array.prototype.slice.call(arguments,1),g=a(this),h=g.data("twbs-pagination"),i="object"==typeof b&&b;return h||g.data("twbs-pagination",h=new f(this,i)),"string"==typeof b&&(c=h[b].apply(h,e)),c===d?g:c},a.fn.twbsPagination.defaults={totalPages:0,startPage:1,visiblePages:5,initiateStartPageClick:!0,href:!1,pageVariable:"{{page}}",totalPagesVariable:"{{total_pages}}",first:"First",prev:"Previous",next:"Next",last:"Last",loop:!1,onPageClick:null,paginationClass:"pagination",nextClass:"next",prevClass:"prev",lastClass:"last",firstClass:"first",pageClass:"page",activeClass:"active",disabledClass:"disabled"},a.fn.twbsPagination.Constructor=f,a.fn.twbsPagination.noConflict=function(){return a.fn.twbsPagination=e,this}}(window.jQuery,window,document); \ No newline at end of file +!function(a,b,c,d){"use strict";var e=a.fn.twbsPagination,f=function(c,d){if(this.$element=a(c),this.options=a.extend({},a.fn.twbsPagination.defaults,d),this.options.startPage<1||this.options.startPage>this.options.totalPages)throw new Error("Start page option is incorrect");if(this.options.totalPages=parseInt(this.options.totalPages),isNaN(this.options.totalPages))throw new Error("Total pages option is not correct!");if(this.options.visiblePages=parseInt(this.options.visiblePages),isNaN(this.options.visiblePages))throw new Error("Visible pages option is not correct!");if(this.options.totalPages"),this.$listContainer.addClass(this.options.paginationClass),"UL"!==g&&this.$element.append(this.$listContainer),this.render(this.getPages(this.options.startPage)),this.setupEvents(),this.options.initiateStartPageClick&&this.$element.trigger("page",this.options.startPage),this};f.prototype={constructor:f,destroy:function(){return this.$element.empty(),this.$element.removeData("twbs-pagination"),this.$element.off("page"),this},show:function(a){if(1>a||a>this.options.totalPages)throw new Error("Page is incorrect.");return this.render(this.getPages(a)),this.setupEvents(),this.$element.trigger("page",a),this},buildListItems:function(a){var b=[];if(this.options.first&&b.push(this.buildItem("first",1)),this.options.prev){var c=a.currentPage>1?a.currentPage-1:this.options.loop?this.options.totalPages:1;b.push(this.buildItem("prev",c))}for(var d=0;d"),e=a(""),f=null;return f=this.options[b]?this.makeText(this.options[b]):c,d.addClass(this.options[b+"Class"]),d.data("page",c),d.data("page-type",b),d.append(e.attr("href",this.makeHref(c)).html(f)),d},getPages:function(a){var b=[],c=Math.floor(this.options.visiblePages/2),d=a-c+1-this.options.visiblePages%2,e=a+c;0>=d&&(d=1,e=this.options.visiblePages),e>this.options.totalPages&&(d=this.options.totalPages-this.options.visiblePages+1,e=this.options.totalPages);for(var f=d;e>=f;)b.push(f),f++;return{currentPage:a,numeric:b}},render:function(b){var c=this;this.$listContainer.children().remove(),this.$listContainer.append(this.buildListItems(b)),this.$listContainer.children().each(function(){var d=a(this),e=d.data("page-type");switch(e){case"page":d.data("page")===b.currentPage&&d.addClass(c.options.activeClass);break;case"first":d.toggleClass(c.options.disabledClass,1===b.currentPage);break;case"last":d.toggleClass(c.options.disabledClass,b.currentPage===c.options.totalPages);break;case"prev":d.toggleClass(c.options.disabledClass,!c.options.loop&&1===b.currentPage);break;case"next":d.toggleClass(c.options.disabledClass,!c.options.loop&&b.currentPage===c.options.totalPages)}})},setupEvents:function(){var b=this;this.$listContainer.find("li").each(function(){var c=a(this);return c.off(),c.hasClass(b.options.disabledClass)||c.hasClass(b.options.activeClass)?void c.on("click",!1):void c.click(function(a){!b.options.href&&a.preventDefault(),b.show(parseInt(c.data("page")))})})},makeHref:function(a){return this.options.href?this.makeText(this.options.href,a):"#"},makeText:function(a,b){return a.replace(this.options.pageVariable,b).replace(this.options.totalPagesVariable,this.options.totalPages)}},a.fn.twbsPagination=function(b){var c,e=Array.prototype.slice.call(arguments,1),g=a(this),h=g.data("twbs-pagination"),i="object"==typeof b&&b;return h||g.data("twbs-pagination",h=new f(this,i)),"string"==typeof b&&(c=h[b].apply(h,e)),c===d?g:c},a.fn.twbsPagination.defaults={totalPages:0,startPage:1,visiblePages:5,initiateStartPageClick:!0,href:!1,pageVariable:"{{page}}",totalPagesVariable:"{{total_pages}}",first:"First",prev:"Previous",next:"Next",last:"Last",loop:!1,onPageClick:null,paginationClass:"pagination",nextClass:"next",prevClass:"prev",lastClass:"last",firstClass:"first",pageClass:"page",activeClass:"active",disabledClass:"disabled"},a.fn.twbsPagination.Constructor=f,a.fn.twbsPagination.noConflict=function(){return a.fn.twbsPagination=e,this}}(window.jQuery,window,document); \ No newline at end of file From 51c019e57bd2e718b98556fab72d3ac7756f76e5 Mon Sep 17 00:00:00 2001 From: Pavel Ivanov Date: Wed, 4 Nov 2015 15:08:31 +0200 Subject: [PATCH 03/21] Improved #23, #54 Page text can be wrapped/replaced. --- jquery.twbsPagination.js | 3 ++- jquery.twbsPagination.min.js | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/jquery.twbsPagination.js b/jquery.twbsPagination.js index 44aeca8..6ebcaeb 100644 --- a/jquery.twbsPagination.js +++ b/jquery.twbsPagination.js @@ -132,7 +132,7 @@ $itemContent = $(''), itemText = null; - itemText = this.options[type] ? this.makeText(this.options[type]) : page; + itemText = this.options[type] ? this.makeText(this.options[type], page) : page; $itemContainer.addClass(this.options[type + 'Class']); $itemContainer.data('page', page); $itemContainer.data('page-type', type); @@ -254,6 +254,7 @@ href: false, pageVariable: '{{page}}', totalPagesVariable: '{{total_pages}}', + page: '{{page}}', first: 'First', prev: 'Previous', next: 'Next', diff --git a/jquery.twbsPagination.min.js b/jquery.twbsPagination.min.js index c63aafa..582512f 100644 --- a/jquery.twbsPagination.min.js +++ b/jquery.twbsPagination.min.js @@ -6,4 +6,4 @@ * Released under Apache 2.0 license * http://apache.org/licenses/LICENSE-2.0.html */ -!function(a,b,c,d){"use strict";var e=a.fn.twbsPagination,f=function(c,d){if(this.$element=a(c),this.options=a.extend({},a.fn.twbsPagination.defaults,d),this.options.startPage<1||this.options.startPage>this.options.totalPages)throw new Error("Start page option is incorrect");if(this.options.totalPages=parseInt(this.options.totalPages),isNaN(this.options.totalPages))throw new Error("Total pages option is not correct!");if(this.options.visiblePages=parseInt(this.options.visiblePages),isNaN(this.options.visiblePages))throw new Error("Visible pages option is not correct!");if(this.options.totalPages"),this.$listContainer.addClass(this.options.paginationClass),"UL"!==g&&this.$element.append(this.$listContainer),this.render(this.getPages(this.options.startPage)),this.setupEvents(),this.options.initiateStartPageClick&&this.$element.trigger("page",this.options.startPage),this};f.prototype={constructor:f,destroy:function(){return this.$element.empty(),this.$element.removeData("twbs-pagination"),this.$element.off("page"),this},show:function(a){if(1>a||a>this.options.totalPages)throw new Error("Page is incorrect.");return this.render(this.getPages(a)),this.setupEvents(),this.$element.trigger("page",a),this},buildListItems:function(a){var b=[];if(this.options.first&&b.push(this.buildItem("first",1)),this.options.prev){var c=a.currentPage>1?a.currentPage-1:this.options.loop?this.options.totalPages:1;b.push(this.buildItem("prev",c))}for(var d=0;d"),e=a(""),f=null;return f=this.options[b]?this.makeText(this.options[b]):c,d.addClass(this.options[b+"Class"]),d.data("page",c),d.data("page-type",b),d.append(e.attr("href",this.makeHref(c)).html(f)),d},getPages:function(a){var b=[],c=Math.floor(this.options.visiblePages/2),d=a-c+1-this.options.visiblePages%2,e=a+c;0>=d&&(d=1,e=this.options.visiblePages),e>this.options.totalPages&&(d=this.options.totalPages-this.options.visiblePages+1,e=this.options.totalPages);for(var f=d;e>=f;)b.push(f),f++;return{currentPage:a,numeric:b}},render:function(b){var c=this;this.$listContainer.children().remove(),this.$listContainer.append(this.buildListItems(b)),this.$listContainer.children().each(function(){var d=a(this),e=d.data("page-type");switch(e){case"page":d.data("page")===b.currentPage&&d.addClass(c.options.activeClass);break;case"first":d.toggleClass(c.options.disabledClass,1===b.currentPage);break;case"last":d.toggleClass(c.options.disabledClass,b.currentPage===c.options.totalPages);break;case"prev":d.toggleClass(c.options.disabledClass,!c.options.loop&&1===b.currentPage);break;case"next":d.toggleClass(c.options.disabledClass,!c.options.loop&&b.currentPage===c.options.totalPages)}})},setupEvents:function(){var b=this;this.$listContainer.find("li").each(function(){var c=a(this);return c.off(),c.hasClass(b.options.disabledClass)||c.hasClass(b.options.activeClass)?void c.on("click",!1):void c.click(function(a){!b.options.href&&a.preventDefault(),b.show(parseInt(c.data("page")))})})},makeHref:function(a){return this.options.href?this.makeText(this.options.href,a):"#"},makeText:function(a,b){return a.replace(this.options.pageVariable,b).replace(this.options.totalPagesVariable,this.options.totalPages)}},a.fn.twbsPagination=function(b){var c,e=Array.prototype.slice.call(arguments,1),g=a(this),h=g.data("twbs-pagination"),i="object"==typeof b&&b;return h||g.data("twbs-pagination",h=new f(this,i)),"string"==typeof b&&(c=h[b].apply(h,e)),c===d?g:c},a.fn.twbsPagination.defaults={totalPages:0,startPage:1,visiblePages:5,initiateStartPageClick:!0,href:!1,pageVariable:"{{page}}",totalPagesVariable:"{{total_pages}}",first:"First",prev:"Previous",next:"Next",last:"Last",loop:!1,onPageClick:null,paginationClass:"pagination",nextClass:"next",prevClass:"prev",lastClass:"last",firstClass:"first",pageClass:"page",activeClass:"active",disabledClass:"disabled"},a.fn.twbsPagination.Constructor=f,a.fn.twbsPagination.noConflict=function(){return a.fn.twbsPagination=e,this}}(window.jQuery,window,document); \ No newline at end of file +!function(a,b,c,d){"use strict";var e=a.fn.twbsPagination,f=function(c,d){if(this.$element=a(c),this.options=a.extend({},a.fn.twbsPagination.defaults,d),this.options.startPage<1||this.options.startPage>this.options.totalPages)throw new Error("Start page option is incorrect");if(this.options.totalPages=parseInt(this.options.totalPages),isNaN(this.options.totalPages))throw new Error("Total pages option is not correct!");if(this.options.visiblePages=parseInt(this.options.visiblePages),isNaN(this.options.visiblePages))throw new Error("Visible pages option is not correct!");if(this.options.totalPages"),this.$listContainer.addClass(this.options.paginationClass),"UL"!==g&&this.$element.append(this.$listContainer),this.render(this.getPages(this.options.startPage)),this.setupEvents(),this.options.initiateStartPageClick&&this.$element.trigger("page",this.options.startPage),this};f.prototype={constructor:f,destroy:function(){return this.$element.empty(),this.$element.removeData("twbs-pagination"),this.$element.off("page"),this},show:function(a){if(1>a||a>this.options.totalPages)throw new Error("Page is incorrect.");return this.render(this.getPages(a)),this.setupEvents(),this.$element.trigger("page",a),this},buildListItems:function(a){var b=[];if(this.options.first&&b.push(this.buildItem("first",1)),this.options.prev){var c=a.currentPage>1?a.currentPage-1:this.options.loop?this.options.totalPages:1;b.push(this.buildItem("prev",c))}for(var d=0;d"),e=a(""),f=null;return f=this.options[b]?this.makeText(this.options[b],c):c,d.addClass(this.options[b+"Class"]),d.data("page",c),d.data("page-type",b),d.append(e.attr("href",this.makeHref(c)).html(f)),d},getPages:function(a){var b=[],c=Math.floor(this.options.visiblePages/2),d=a-c+1-this.options.visiblePages%2,e=a+c;0>=d&&(d=1,e=this.options.visiblePages),e>this.options.totalPages&&(d=this.options.totalPages-this.options.visiblePages+1,e=this.options.totalPages);for(var f=d;e>=f;)b.push(f),f++;return{currentPage:a,numeric:b}},render:function(b){var c=this;this.$listContainer.children().remove(),this.$listContainer.append(this.buildListItems(b)),this.$listContainer.children().each(function(){var d=a(this),e=d.data("page-type");switch(e){case"page":d.data("page")===b.currentPage&&d.addClass(c.options.activeClass);break;case"first":d.toggleClass(c.options.disabledClass,1===b.currentPage);break;case"last":d.toggleClass(c.options.disabledClass,b.currentPage===c.options.totalPages);break;case"prev":d.toggleClass(c.options.disabledClass,!c.options.loop&&1===b.currentPage);break;case"next":d.toggleClass(c.options.disabledClass,!c.options.loop&&b.currentPage===c.options.totalPages)}})},setupEvents:function(){var b=this;this.$listContainer.find("li").each(function(){var c=a(this);return c.off(),c.hasClass(b.options.disabledClass)||c.hasClass(b.options.activeClass)?void c.on("click",!1):void c.click(function(a){!b.options.href&&a.preventDefault(),b.show(parseInt(c.data("page")))})})},makeHref:function(a){return this.options.href?this.makeText(this.options.href,a):"#"},makeText:function(a,b){return a.replace(this.options.pageVariable,b).replace(this.options.totalPagesVariable,this.options.totalPages)}},a.fn.twbsPagination=function(b){var c,e=Array.prototype.slice.call(arguments,1),g=a(this),h=g.data("twbs-pagination"),i="object"==typeof b&&b;return h||g.data("twbs-pagination",h=new f(this,i)),"string"==typeof b&&(c=h[b].apply(h,e)),c===d?g:c},a.fn.twbsPagination.defaults={totalPages:0,startPage:1,visiblePages:5,initiateStartPageClick:!0,href:!1,pageVariable:"{{page}}",totalPagesVariable:"{{total_pages}}",page:"{{page}}",first:"First",prev:"Previous",next:"Next",last:"Last",loop:!1,onPageClick:null,paginationClass:"pagination",nextClass:"next",prevClass:"prev",lastClass:"last",firstClass:"first",pageClass:"page",activeClass:"active",disabledClass:"disabled"},a.fn.twbsPagination.Constructor=f,a.fn.twbsPagination.noConflict=function(){return a.fn.twbsPagination=e,this}}(window.jQuery,window,document); \ No newline at end of file From 2b8491c5bc34e940b824f6a2a833358416e676cd Mon Sep 17 00:00:00 2001 From: Pavel Ivanov Date: Wed, 4 Nov 2015 21:55:47 +0200 Subject: [PATCH 04/21] Improved tests and fixed destroy call before initialization #54 --- jquery.twbsPagination.js | 4 +- jquery.twbsPagination.min.js | 2 +- tests/run-test-jquery-1.8.1.html | 21 +++++ ...-test.html => run-test-jquery-latest.html} | 2 +- tests/test.js | 94 +++++++++++++++++-- 5 files changed, 111 insertions(+), 12 deletions(-) create mode 100644 tests/run-test-jquery-1.8.1.html rename tests/{run-test.html => run-test-jquery-latest.html} (85%) diff --git a/jquery.twbsPagination.js b/jquery.twbsPagination.js index 6ebcaeb..4837d13 100644 --- a/jquery.twbsPagination.js +++ b/jquery.twbsPagination.js @@ -238,7 +238,7 @@ var $this = $(this); var data = $this.data('twbs-pagination'); - var options = typeof option === 'object' && option; + var options = typeof option === 'object' ? option : {}; if (!data) $this.data('twbs-pagination', (data = new TwbsPagination(this, options) )); if (typeof option === 'string') methodReturn = data[ option ].apply(data, args); @@ -247,7 +247,7 @@ }; $.fn.twbsPagination.defaults = { - totalPages: 0, + totalPages: 1, startPage: 1, visiblePages: 5, initiateStartPageClick: true, diff --git a/jquery.twbsPagination.min.js b/jquery.twbsPagination.min.js index 582512f..185f173 100644 --- a/jquery.twbsPagination.min.js +++ b/jquery.twbsPagination.min.js @@ -6,4 +6,4 @@ * Released under Apache 2.0 license * http://apache.org/licenses/LICENSE-2.0.html */ -!function(a,b,c,d){"use strict";var e=a.fn.twbsPagination,f=function(c,d){if(this.$element=a(c),this.options=a.extend({},a.fn.twbsPagination.defaults,d),this.options.startPage<1||this.options.startPage>this.options.totalPages)throw new Error("Start page option is incorrect");if(this.options.totalPages=parseInt(this.options.totalPages),isNaN(this.options.totalPages))throw new Error("Total pages option is not correct!");if(this.options.visiblePages=parseInt(this.options.visiblePages),isNaN(this.options.visiblePages))throw new Error("Visible pages option is not correct!");if(this.options.totalPages"),this.$listContainer.addClass(this.options.paginationClass),"UL"!==g&&this.$element.append(this.$listContainer),this.render(this.getPages(this.options.startPage)),this.setupEvents(),this.options.initiateStartPageClick&&this.$element.trigger("page",this.options.startPage),this};f.prototype={constructor:f,destroy:function(){return this.$element.empty(),this.$element.removeData("twbs-pagination"),this.$element.off("page"),this},show:function(a){if(1>a||a>this.options.totalPages)throw new Error("Page is incorrect.");return this.render(this.getPages(a)),this.setupEvents(),this.$element.trigger("page",a),this},buildListItems:function(a){var b=[];if(this.options.first&&b.push(this.buildItem("first",1)),this.options.prev){var c=a.currentPage>1?a.currentPage-1:this.options.loop?this.options.totalPages:1;b.push(this.buildItem("prev",c))}for(var d=0;d"),e=a(""),f=null;return f=this.options[b]?this.makeText(this.options[b],c):c,d.addClass(this.options[b+"Class"]),d.data("page",c),d.data("page-type",b),d.append(e.attr("href",this.makeHref(c)).html(f)),d},getPages:function(a){var b=[],c=Math.floor(this.options.visiblePages/2),d=a-c+1-this.options.visiblePages%2,e=a+c;0>=d&&(d=1,e=this.options.visiblePages),e>this.options.totalPages&&(d=this.options.totalPages-this.options.visiblePages+1,e=this.options.totalPages);for(var f=d;e>=f;)b.push(f),f++;return{currentPage:a,numeric:b}},render:function(b){var c=this;this.$listContainer.children().remove(),this.$listContainer.append(this.buildListItems(b)),this.$listContainer.children().each(function(){var d=a(this),e=d.data("page-type");switch(e){case"page":d.data("page")===b.currentPage&&d.addClass(c.options.activeClass);break;case"first":d.toggleClass(c.options.disabledClass,1===b.currentPage);break;case"last":d.toggleClass(c.options.disabledClass,b.currentPage===c.options.totalPages);break;case"prev":d.toggleClass(c.options.disabledClass,!c.options.loop&&1===b.currentPage);break;case"next":d.toggleClass(c.options.disabledClass,!c.options.loop&&b.currentPage===c.options.totalPages)}})},setupEvents:function(){var b=this;this.$listContainer.find("li").each(function(){var c=a(this);return c.off(),c.hasClass(b.options.disabledClass)||c.hasClass(b.options.activeClass)?void c.on("click",!1):void c.click(function(a){!b.options.href&&a.preventDefault(),b.show(parseInt(c.data("page")))})})},makeHref:function(a){return this.options.href?this.makeText(this.options.href,a):"#"},makeText:function(a,b){return a.replace(this.options.pageVariable,b).replace(this.options.totalPagesVariable,this.options.totalPages)}},a.fn.twbsPagination=function(b){var c,e=Array.prototype.slice.call(arguments,1),g=a(this),h=g.data("twbs-pagination"),i="object"==typeof b&&b;return h||g.data("twbs-pagination",h=new f(this,i)),"string"==typeof b&&(c=h[b].apply(h,e)),c===d?g:c},a.fn.twbsPagination.defaults={totalPages:0,startPage:1,visiblePages:5,initiateStartPageClick:!0,href:!1,pageVariable:"{{page}}",totalPagesVariable:"{{total_pages}}",page:"{{page}}",first:"First",prev:"Previous",next:"Next",last:"Last",loop:!1,onPageClick:null,paginationClass:"pagination",nextClass:"next",prevClass:"prev",lastClass:"last",firstClass:"first",pageClass:"page",activeClass:"active",disabledClass:"disabled"},a.fn.twbsPagination.Constructor=f,a.fn.twbsPagination.noConflict=function(){return a.fn.twbsPagination=e,this}}(window.jQuery,window,document); \ No newline at end of file +!function(a,b,c,d){"use strict";var e=a.fn.twbsPagination,f=function(c,d){if(this.$element=a(c),this.options=a.extend({},a.fn.twbsPagination.defaults,d),this.options.startPage<1||this.options.startPage>this.options.totalPages)throw new Error("Start page option is incorrect");if(this.options.totalPages=parseInt(this.options.totalPages),isNaN(this.options.totalPages))throw new Error("Total pages option is not correct!");if(this.options.visiblePages=parseInt(this.options.visiblePages),isNaN(this.options.visiblePages))throw new Error("Visible pages option is not correct!");if(this.options.totalPages"),this.$listContainer.addClass(this.options.paginationClass),"UL"!==g&&this.$element.append(this.$listContainer),this.render(this.getPages(this.options.startPage)),this.setupEvents(),this.options.initiateStartPageClick&&this.$element.trigger("page",this.options.startPage),this};f.prototype={constructor:f,destroy:function(){return this.$element.empty(),this.$element.removeData("twbs-pagination"),this.$element.off("page"),this},show:function(a){if(1>a||a>this.options.totalPages)throw new Error("Page is incorrect.");return this.render(this.getPages(a)),this.setupEvents(),this.$element.trigger("page",a),this},buildListItems:function(a){var b=[];if(this.options.first&&b.push(this.buildItem("first",1)),this.options.prev){var c=a.currentPage>1?a.currentPage-1:this.options.loop?this.options.totalPages:1;b.push(this.buildItem("prev",c))}for(var d=0;d"),e=a(""),f=null;return f=this.options[b]?this.makeText(this.options[b],c):c,d.addClass(this.options[b+"Class"]),d.data("page",c),d.data("page-type",b),d.append(e.attr("href",this.makeHref(c)).html(f)),d},getPages:function(a){var b=[],c=Math.floor(this.options.visiblePages/2),d=a-c+1-this.options.visiblePages%2,e=a+c;0>=d&&(d=1,e=this.options.visiblePages),e>this.options.totalPages&&(d=this.options.totalPages-this.options.visiblePages+1,e=this.options.totalPages);for(var f=d;e>=f;)b.push(f),f++;return{currentPage:a,numeric:b}},render:function(b){var c=this;this.$listContainer.children().remove(),this.$listContainer.append(this.buildListItems(b)),this.$listContainer.children().each(function(){var d=a(this),e=d.data("page-type");switch(e){case"page":d.data("page")===b.currentPage&&d.addClass(c.options.activeClass);break;case"first":d.toggleClass(c.options.disabledClass,1===b.currentPage);break;case"last":d.toggleClass(c.options.disabledClass,b.currentPage===c.options.totalPages);break;case"prev":d.toggleClass(c.options.disabledClass,!c.options.loop&&1===b.currentPage);break;case"next":d.toggleClass(c.options.disabledClass,!c.options.loop&&b.currentPage===c.options.totalPages)}})},setupEvents:function(){var b=this;this.$listContainer.find("li").each(function(){var c=a(this);return c.off(),c.hasClass(b.options.disabledClass)||c.hasClass(b.options.activeClass)?void c.on("click",!1):void c.click(function(a){!b.options.href&&a.preventDefault(),b.show(parseInt(c.data("page")))})})},makeHref:function(a){return this.options.href?this.makeText(this.options.href,a):"#"},makeText:function(a,b){return a.replace(this.options.pageVariable,b).replace(this.options.totalPagesVariable,this.options.totalPages)}},a.fn.twbsPagination=function(b){var c,e=Array.prototype.slice.call(arguments,1),g=a(this),h=g.data("twbs-pagination"),i="object"==typeof b?b:{};return h||g.data("twbs-pagination",h=new f(this,i)),"string"==typeof b&&(c=h[b].apply(h,e)),c===d?g:c},a.fn.twbsPagination.defaults={totalPages:1,startPage:1,visiblePages:5,initiateStartPageClick:!0,href:!1,pageVariable:"{{page}}",totalPagesVariable:"{{total_pages}}",page:"{{page}}",first:"First",prev:"Previous",next:"Next",last:"Last",loop:!1,onPageClick:null,paginationClass:"pagination",nextClass:"next",prevClass:"prev",lastClass:"last",firstClass:"first",pageClass:"page",activeClass:"active",disabledClass:"disabled"},a.fn.twbsPagination.Constructor=f,a.fn.twbsPagination.noConflict=function(){return a.fn.twbsPagination=e,this}}(window.jQuery,window,document); \ No newline at end of file diff --git a/tests/run-test-jquery-1.8.1.html b/tests/run-test-jquery-1.8.1.html new file mode 100644 index 0000000..3fb2a0c --- /dev/null +++ b/tests/run-test-jquery-1.8.1.html @@ -0,0 +1,21 @@ + + + + + Tests + + + + + + + + +
+
+ + + + + + \ No newline at end of file diff --git a/tests/run-test.html b/tests/run-test-jquery-latest.html similarity index 85% rename from tests/run-test.html rename to tests/run-test-jquery-latest.html index 2fd97f4..0cbe196 100644 --- a/tests/run-test.html +++ b/tests/run-test-jquery-latest.html @@ -7,7 +7,7 @@ - + diff --git a/tests/test.js b/tests/test.js index 187b1cd..5200b14 100644 --- a/tests/test.js +++ b/tests/test.js @@ -1,11 +1,17 @@ -(function () { +(function ($) { var pag1 = $('#pagination'); - pag1.twbsPagination({ - totalPages: 30 + + QUnit.test("Test destroy called before initialization", function () { + ok(pag1.twbsPagination('destroy')); }); - test("Test 'getPages' method (EVEN visible pages number)", function () { + QUnit.test("Test 'getPages' method (EVEN visible pages number)", function () { + pag1.twbsPagination('destroy'); + pag1.twbsPagination({ + totalPages: 30 + }); + var expected1 = {currentPage: 1, numeric: [1, 2, 3, 4, 5]}; deepEqual(pag1.twbsPagination('getPages', 1), expected1); var expected2 = {currentPage: 2, numeric: [1, 2, 3, 4, 5]}; @@ -30,9 +36,13 @@ deepEqual(pag1.twbsPagination('getPages', 30), expected30); }); - test("Test 'getPages' method (ODD visible pages number)", function () { + QUnit.test("Test 'getPages' method (ODD visible pages number)", function () { pag1.twbsPagination('destroy'); - pag1.twbsPagination({totalPages: 30, visiblePages: 6}); + pag1.twbsPagination({ + totalPages: 30, + visiblePages: 6 + }); + var expected1 = {currentPage: 1, numeric: [1, 2, 3, 4, 5, 6]}; deepEqual(pag1.twbsPagination('getPages', 1), expected1); var expected2 = {currentPage: 2, numeric: [1, 2, 3, 4, 5, 6]}; @@ -57,7 +67,7 @@ deepEqual(pag1.twbsPagination('getPages', 30), expected30); }); - test("Test 'getPages' method (total < visible)", function () { + QUnit.test("Test 'getPages' method (total < visible)", function () { pag1.twbsPagination('destroy'); pag1.twbsPagination({ totalPages: 3, @@ -71,4 +81,72 @@ deepEqual(pag1.twbsPagination('getPages', 3), exp3); }); -})(); \ No newline at end of file + QUnit.test("Test classes appended for pagination", function () { + pag1.twbsPagination('destroy'); + pag1.twbsPagination({ + totalPages: 3, + visiblePages: 5 + }); + equal(pag1.find('.page').length, 3); + equal(pag1.find('.next').length, 1); + equal(pag1.find('.prev').length, 1); + equal(pag1.find('.last').length, 1); + equal(pag1.find('.first').length, 1); + equal(pag1.find('.page.active').length, 1); + equal(pag1.find('.prev.disabled').length, 1); + equal(pag1.find('.first.disabled').length, 1); + }); + + QUnit.test("Test custom classes appended for pagination", function () { + pag1.twbsPagination('destroy'); + pag1.twbsPagination({ + totalPages: 10, + visiblePages: 5, + pageClass: 'my-page', + nextClass: 'my-next-page', + prevClass: 'my-prev-page', + lastClass: 'my-last-page', + firstClass: 'my-first-page', + activeClass: 'my-active-class', + disabledClass: 'my-disabled-class' + }); + equal(pag1.find('.my-page').length, 5); + equal(pag1.find('.my-next-page').length, 1); + equal(pag1.find('.my-prev-page').length, 1); + equal(pag1.find('.my-last-page').length, 1); + equal(pag1.find('.my-first-page').length, 1); + equal(pag1.find('.my-page.my-active-class').length, 1); + equal(pag1.find('.my-prev-page.my-disabled-class').length, 1); + equal(pag1.find('.my-first-page.my-disabled-class').length, 1); + }); + + QUnit.test("Test page numbers text", function () { + pag1.twbsPagination('destroy'); + pag1.twbsPagination({ + totalPages: 2 + }); + equal(pag1.find('.page:eq(0)').text(), '1'); + equal(pag1.find('.next').text(), 'Next'); + equal(pag1.find('.prev').text(), 'Previous'); + equal(pag1.find('.first').text(), 'First'); + equal(pag1.find('.last').text(), 'Last'); + }); + + QUnit.test("Test custom texts", function () { + pag1.twbsPagination('destroy'); + pag1.twbsPagination({ + totalPages: 2, + page: '[{{page}}]', + first: '(first)', + prev: '<<', + next: '>>', + last: '(last)[{{total_pages}}]' + }); + equal(pag1.find('.page:eq(0)').text(), '[1]'); + equal(pag1.find('.next').text(), '>>'); + equal(pag1.find('.prev').text(), '<<'); + equal(pag1.find('.first').text(), '(first)'); + equal(pag1.find('.last').text(), '(last)[2]'); + }); + +})(window.jQuery); \ No newline at end of file From 9b91c76960c48f073b56fd34499e8709822f08ba Mon Sep 17 00:00:00 2001 From: Pavel Ivanov Date: Fri, 6 Nov 2015 11:17:28 +0200 Subject: [PATCH 05/21] Fixed jQuery 1.7 issue appending collection of elements --- jquery.twbsPagination.js | 13 ++++++++----- jquery.twbsPagination.min.js | 2 +- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/jquery.twbsPagination.js b/jquery.twbsPagination.js index 20a76ea..50e8d7b 100644 --- a/jquery.twbsPagination.js +++ b/jquery.twbsPagination.js @@ -63,11 +63,11 @@ this.$element.append(this.$listContainer); } - this.render(this.getPages(this.options.startPage)); - this.setupEvents(); - if (this.options.initiateStartPageClick) { - this.$element.trigger('page', this.options.startPage); + this.show(this.options.startPage); + } else { + this.render(this.getPages(this.options.startPage)); + this.setupEvents(); } return this; @@ -192,7 +192,10 @@ render: function (pages) { var _this = this; this.$listContainer.children().remove(); - this.$listContainer.append(this.buildListItems(pages)); + var items = this.buildListItems(pages); + jQuery.each(items, function(key, item){ + _this.$listContainer.append(item); + }); this.$listContainer.children().each(function () { var $this = $(this), diff --git a/jquery.twbsPagination.min.js b/jquery.twbsPagination.min.js index 7cc71f9..de50505 100644 --- a/jquery.twbsPagination.min.js +++ b/jquery.twbsPagination.min.js @@ -6,4 +6,4 @@ * Released under Apache 2.0 license * http://apache.org/licenses/LICENSE-2.0.html */ -!function(a,b,c,d){"use strict";var e=a.fn.twbsPagination,f=function(c,d){if(this.$element=a(c),this.options=a.extend({},a.fn.twbsPagination.defaults,d),this.options.startPage<1||this.options.startPage>this.options.totalPages)throw new Error("Start page option is incorrect");if(this.options.totalPages=parseInt(this.options.totalPages),isNaN(this.options.totalPages))throw new Error("Total pages option is not correct!");if(this.options.visiblePages=parseInt(this.options.visiblePages),isNaN(this.options.visiblePages))throw new Error("Visible pages option is not correct!");if(this.options.totalPages"),this.$listContainer.addClass(this.options.paginationClass),"UL"!==g&&this.$element.append(this.$listContainer),this.render(this.getPages(this.options.startPage)),this.setupEvents(),this.options.initiateStartPageClick&&this.$element.trigger("page",this.options.startPage),this};f.prototype={constructor:f,destroy:function(){return this.$element.empty(),this.$element.removeData("twbs-pagination"),this.$element.off("page"),this},show:function(a){if(1>a||a>this.options.totalPages)throw new Error("Page is incorrect.");return this.render(this.getPages(a)),this.setupEvents(),this.$element.trigger("page",a),this},buildListItems:function(a){var b=[];if(this.options.first&&b.push(this.buildItem("first",1)),this.options.prev){var c=a.currentPage>1?a.currentPage-1:this.options.loop?this.options.totalPages:1;b.push(this.buildItem("prev",c))}for(var d=0;d"),e=a(""),f=null;switch(b){case"page":f=c,d.addClass(this.options.pageClass);break;case"first":f=this.options.first,d.addClass(this.options.firstClass);break;case"prev":f=this.options.prev,d.addClass(this.options.prevClass);break;case"next":f=this.options.next,d.addClass(this.options.nextClass);break;case"last":f=this.options.last,d.addClass(this.options.lastClass)}return d.data("page",c),d.data("page-type",b),d.append(e.attr("href",this.makeHref(c)).html(f)),d},getPages:function(a){var b=[],c=Math.floor(this.options.visiblePages/2),d=a-c+1-this.options.visiblePages%2,e=a+c;0>=d&&(d=1,e=this.options.visiblePages),e>this.options.totalPages&&(d=this.options.totalPages-this.options.visiblePages+1,e=this.options.totalPages);for(var f=d;e>=f;)b.push(f),f++;return{currentPage:a,numeric:b}},render:function(b){var c=this;this.$listContainer.children().remove(),this.$listContainer.append(this.buildListItems(b)),this.$listContainer.children().each(function(){var d=a(this),e=d.data("page-type");switch(e){case"page":d.data("page")===b.currentPage&&d.addClass(c.options.activeClass);break;case"first":d.toggleClass(c.options.disabledClass,1===b.currentPage);break;case"last":d.toggleClass(c.options.disabledClass,b.currentPage===c.options.totalPages);break;case"prev":d.toggleClass(c.options.disabledClass,!c.options.loop&&1===b.currentPage);break;case"next":d.toggleClass(c.options.disabledClass,!c.options.loop&&b.currentPage===c.options.totalPages)}})},setupEvents:function(){var b=this;this.$listContainer.find("li").each(function(){var c=a(this);return c.off(),c.hasClass(b.options.disabledClass)||c.hasClass(b.options.activeClass)?void c.on("click",!1):void c.click(function(a){!b.options.href&&a.preventDefault(),b.show(parseInt(c.data("page")))})})},makeHref:function(a){return this.options.href?this.options.href.replace(this.options.hrefVariable,a):"#"}},a.fn.twbsPagination=function(b){var c,e=Array.prototype.slice.call(arguments,1),g=a(this),h=g.data("twbs-pagination"),i="object"==typeof b&&b;return h||g.data("twbs-pagination",h=new f(this,i)),"string"==typeof b&&(c=h[b].apply(h,e)),c===d?g:c},a.fn.twbsPagination.defaults={totalPages:0,startPage:1,visiblePages:5,initiateStartPageClick:!0,href:!1,hrefVariable:"{{number}}",first:"First",prev:"Previous",next:"Next",last:"Last",loop:!1,onPageClick:null,paginationClass:"pagination",nextClass:"next",prevClass:"prev",lastClass:"last",firstClass:"first",pageClass:"page",activeClass:"active",disabledClass:"disabled"},a.fn.twbsPagination.Constructor=f,a.fn.twbsPagination.noConflict=function(){return a.fn.twbsPagination=e,this}}(window.jQuery,window,document); \ No newline at end of file +!function(a,b,c,d){"use strict";var e=a.fn.twbsPagination,f=function(c,d){if(this.$element=a(c),this.options=a.extend({},a.fn.twbsPagination.defaults,d),this.options.startPage<1||this.options.startPage>this.options.totalPages)throw new Error("Start page option is incorrect");if(this.options.totalPages=parseInt(this.options.totalPages),isNaN(this.options.totalPages))throw new Error("Total pages option is not correct!");if(this.options.visiblePages=parseInt(this.options.visiblePages),isNaN(this.options.visiblePages))throw new Error("Visible pages option is not correct!");if(this.options.totalPages"),this.$listContainer.addClass(this.options.paginationClass),"UL"!==g&&this.$element.append(this.$listContainer),this.options.initiateStartPageClick?this.show(this.options.startPage):(this.render(this.getPages(this.options.startPage)),this.setupEvents()),this};f.prototype={constructor:f,destroy:function(){return this.$element.empty(),this.$element.removeData("twbs-pagination"),this.$element.off("page"),this},show:function(a){if(1>a||a>this.options.totalPages)throw new Error("Page is incorrect.");return this.render(this.getPages(a)),this.setupEvents(),this.$element.trigger("page",a),this},buildListItems:function(a){var b=[];if(this.options.first&&b.push(this.buildItem("first",1)),this.options.prev){var c=a.currentPage>1?a.currentPage-1:this.options.loop?this.options.totalPages:1;b.push(this.buildItem("prev",c))}for(var d=0;d"),e=a(""),f=null;switch(b){case"page":f=c,d.addClass(this.options.pageClass);break;case"first":f=this.options.first,d.addClass(this.options.firstClass);break;case"prev":f=this.options.prev,d.addClass(this.options.prevClass);break;case"next":f=this.options.next,d.addClass(this.options.nextClass);break;case"last":f=this.options.last,d.addClass(this.options.lastClass)}return d.data("page",c),d.data("page-type",b),d.append(e.attr("href",this.makeHref(c)).html(f)),d},getPages:function(a){var b=[],c=Math.floor(this.options.visiblePages/2),d=a-c+1-this.options.visiblePages%2,e=a+c;0>=d&&(d=1,e=this.options.visiblePages),e>this.options.totalPages&&(d=this.options.totalPages-this.options.visiblePages+1,e=this.options.totalPages);for(var f=d;e>=f;)b.push(f),f++;return{currentPage:a,numeric:b}},render:function(b){var c=this;this.$listContainer.children().remove();var d=this.buildListItems(b);jQuery.each(d,function(a,b){c.$listContainer.append(b)}),this.$listContainer.children().each(function(){var d=a(this),e=d.data("page-type");switch(e){case"page":d.data("page")===b.currentPage&&d.addClass(c.options.activeClass);break;case"first":d.toggleClass(c.options.disabledClass,1===b.currentPage);break;case"last":d.toggleClass(c.options.disabledClass,b.currentPage===c.options.totalPages);break;case"prev":d.toggleClass(c.options.disabledClass,!c.options.loop&&1===b.currentPage);break;case"next":d.toggleClass(c.options.disabledClass,!c.options.loop&&b.currentPage===c.options.totalPages)}})},setupEvents:function(){var b=this;this.$listContainer.find("li").each(function(){var c=a(this);return c.off(),c.hasClass(b.options.disabledClass)||c.hasClass(b.options.activeClass)?void c.on("click",!1):void c.click(function(a){!b.options.href&&a.preventDefault(),b.show(parseInt(c.data("page")))})})},makeHref:function(a){return this.options.href?this.options.href.replace(this.options.hrefVariable,a):"#"}},a.fn.twbsPagination=function(b){var c,e=Array.prototype.slice.call(arguments,1),g=a(this),h=g.data("twbs-pagination"),i="object"==typeof b&&b;return h||g.data("twbs-pagination",h=new f(this,i)),"string"==typeof b&&(c=h[b].apply(h,e)),c===d?g:c},a.fn.twbsPagination.defaults={totalPages:0,startPage:1,visiblePages:5,initiateStartPageClick:!0,href:!1,hrefVariable:"{{number}}",first:"First",prev:"Previous",next:"Next",last:"Last",loop:!1,onPageClick:null,paginationClass:"pagination",nextClass:"next",prevClass:"prev",lastClass:"last",firstClass:"first",pageClass:"page",activeClass:"active",disabledClass:"disabled"},a.fn.twbsPagination.Constructor=f,a.fn.twbsPagination.noConflict=function(){return a.fn.twbsPagination=e,this}}(window.jQuery,window,document); \ No newline at end of file From 1007991c09a0e1ecf03d96db5fb2078f70024230 Mon Sep 17 00:00:00 2001 From: Pavel Ivanov Date: Fri, 6 Nov 2015 15:06:36 +0200 Subject: [PATCH 06/21] Micro fix for page default value --- jquery.twbsPagination.js | 2 +- jquery.twbsPagination.min.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/jquery.twbsPagination.js b/jquery.twbsPagination.js index 4837d13..76b6e6a 100644 --- a/jquery.twbsPagination.js +++ b/jquery.twbsPagination.js @@ -254,7 +254,7 @@ href: false, pageVariable: '{{page}}', totalPagesVariable: '{{total_pages}}', - page: '{{page}}', + page: null, first: 'First', prev: 'Previous', next: 'Next', diff --git a/jquery.twbsPagination.min.js b/jquery.twbsPagination.min.js index 185f173..349e793 100644 --- a/jquery.twbsPagination.min.js +++ b/jquery.twbsPagination.min.js @@ -6,4 +6,4 @@ * Released under Apache 2.0 license * http://apache.org/licenses/LICENSE-2.0.html */ -!function(a,b,c,d){"use strict";var e=a.fn.twbsPagination,f=function(c,d){if(this.$element=a(c),this.options=a.extend({},a.fn.twbsPagination.defaults,d),this.options.startPage<1||this.options.startPage>this.options.totalPages)throw new Error("Start page option is incorrect");if(this.options.totalPages=parseInt(this.options.totalPages),isNaN(this.options.totalPages))throw new Error("Total pages option is not correct!");if(this.options.visiblePages=parseInt(this.options.visiblePages),isNaN(this.options.visiblePages))throw new Error("Visible pages option is not correct!");if(this.options.totalPages"),this.$listContainer.addClass(this.options.paginationClass),"UL"!==g&&this.$element.append(this.$listContainer),this.render(this.getPages(this.options.startPage)),this.setupEvents(),this.options.initiateStartPageClick&&this.$element.trigger("page",this.options.startPage),this};f.prototype={constructor:f,destroy:function(){return this.$element.empty(),this.$element.removeData("twbs-pagination"),this.$element.off("page"),this},show:function(a){if(1>a||a>this.options.totalPages)throw new Error("Page is incorrect.");return this.render(this.getPages(a)),this.setupEvents(),this.$element.trigger("page",a),this},buildListItems:function(a){var b=[];if(this.options.first&&b.push(this.buildItem("first",1)),this.options.prev){var c=a.currentPage>1?a.currentPage-1:this.options.loop?this.options.totalPages:1;b.push(this.buildItem("prev",c))}for(var d=0;d"),e=a(""),f=null;return f=this.options[b]?this.makeText(this.options[b],c):c,d.addClass(this.options[b+"Class"]),d.data("page",c),d.data("page-type",b),d.append(e.attr("href",this.makeHref(c)).html(f)),d},getPages:function(a){var b=[],c=Math.floor(this.options.visiblePages/2),d=a-c+1-this.options.visiblePages%2,e=a+c;0>=d&&(d=1,e=this.options.visiblePages),e>this.options.totalPages&&(d=this.options.totalPages-this.options.visiblePages+1,e=this.options.totalPages);for(var f=d;e>=f;)b.push(f),f++;return{currentPage:a,numeric:b}},render:function(b){var c=this;this.$listContainer.children().remove(),this.$listContainer.append(this.buildListItems(b)),this.$listContainer.children().each(function(){var d=a(this),e=d.data("page-type");switch(e){case"page":d.data("page")===b.currentPage&&d.addClass(c.options.activeClass);break;case"first":d.toggleClass(c.options.disabledClass,1===b.currentPage);break;case"last":d.toggleClass(c.options.disabledClass,b.currentPage===c.options.totalPages);break;case"prev":d.toggleClass(c.options.disabledClass,!c.options.loop&&1===b.currentPage);break;case"next":d.toggleClass(c.options.disabledClass,!c.options.loop&&b.currentPage===c.options.totalPages)}})},setupEvents:function(){var b=this;this.$listContainer.find("li").each(function(){var c=a(this);return c.off(),c.hasClass(b.options.disabledClass)||c.hasClass(b.options.activeClass)?void c.on("click",!1):void c.click(function(a){!b.options.href&&a.preventDefault(),b.show(parseInt(c.data("page")))})})},makeHref:function(a){return this.options.href?this.makeText(this.options.href,a):"#"},makeText:function(a,b){return a.replace(this.options.pageVariable,b).replace(this.options.totalPagesVariable,this.options.totalPages)}},a.fn.twbsPagination=function(b){var c,e=Array.prototype.slice.call(arguments,1),g=a(this),h=g.data("twbs-pagination"),i="object"==typeof b?b:{};return h||g.data("twbs-pagination",h=new f(this,i)),"string"==typeof b&&(c=h[b].apply(h,e)),c===d?g:c},a.fn.twbsPagination.defaults={totalPages:1,startPage:1,visiblePages:5,initiateStartPageClick:!0,href:!1,pageVariable:"{{page}}",totalPagesVariable:"{{total_pages}}",page:"{{page}}",first:"First",prev:"Previous",next:"Next",last:"Last",loop:!1,onPageClick:null,paginationClass:"pagination",nextClass:"next",prevClass:"prev",lastClass:"last",firstClass:"first",pageClass:"page",activeClass:"active",disabledClass:"disabled"},a.fn.twbsPagination.Constructor=f,a.fn.twbsPagination.noConflict=function(){return a.fn.twbsPagination=e,this}}(window.jQuery,window,document); \ No newline at end of file +!function(a,b,c,d){"use strict";var e=a.fn.twbsPagination,f=function(c,d){if(this.$element=a(c),this.options=a.extend({},a.fn.twbsPagination.defaults,d),this.options.startPage<1||this.options.startPage>this.options.totalPages)throw new Error("Start page option is incorrect");if(this.options.totalPages=parseInt(this.options.totalPages),isNaN(this.options.totalPages))throw new Error("Total pages option is not correct!");if(this.options.visiblePages=parseInt(this.options.visiblePages),isNaN(this.options.visiblePages))throw new Error("Visible pages option is not correct!");if(this.options.totalPages"),this.$listContainer.addClass(this.options.paginationClass),"UL"!==g&&this.$element.append(this.$listContainer),this.render(this.getPages(this.options.startPage)),this.setupEvents(),this.options.initiateStartPageClick&&this.$element.trigger("page",this.options.startPage),this};f.prototype={constructor:f,destroy:function(){return this.$element.empty(),this.$element.removeData("twbs-pagination"),this.$element.off("page"),this},show:function(a){if(1>a||a>this.options.totalPages)throw new Error("Page is incorrect.");return this.render(this.getPages(a)),this.setupEvents(),this.$element.trigger("page",a),this},buildListItems:function(a){var b=[];if(this.options.first&&b.push(this.buildItem("first",1)),this.options.prev){var c=a.currentPage>1?a.currentPage-1:this.options.loop?this.options.totalPages:1;b.push(this.buildItem("prev",c))}for(var d=0;d"),e=a(""),f=null;return f=this.options[b]?this.makeText(this.options[b],c):c,d.addClass(this.options[b+"Class"]),d.data("page",c),d.data("page-type",b),d.append(e.attr("href",this.makeHref(c)).html(f)),d},getPages:function(a){var b=[],c=Math.floor(this.options.visiblePages/2),d=a-c+1-this.options.visiblePages%2,e=a+c;0>=d&&(d=1,e=this.options.visiblePages),e>this.options.totalPages&&(d=this.options.totalPages-this.options.visiblePages+1,e=this.options.totalPages);for(var f=d;e>=f;)b.push(f),f++;return{currentPage:a,numeric:b}},render:function(b){var c=this;this.$listContainer.children().remove(),this.$listContainer.append(this.buildListItems(b)),this.$listContainer.children().each(function(){var d=a(this),e=d.data("page-type");switch(e){case"page":d.data("page")===b.currentPage&&d.addClass(c.options.activeClass);break;case"first":d.toggleClass(c.options.disabledClass,1===b.currentPage);break;case"last":d.toggleClass(c.options.disabledClass,b.currentPage===c.options.totalPages);break;case"prev":d.toggleClass(c.options.disabledClass,!c.options.loop&&1===b.currentPage);break;case"next":d.toggleClass(c.options.disabledClass,!c.options.loop&&b.currentPage===c.options.totalPages)}})},setupEvents:function(){var b=this;this.$listContainer.find("li").each(function(){var c=a(this);return c.off(),c.hasClass(b.options.disabledClass)||c.hasClass(b.options.activeClass)?void c.on("click",!1):void c.click(function(a){!b.options.href&&a.preventDefault(),b.show(parseInt(c.data("page")))})})},makeHref:function(a){return this.options.href?this.makeText(this.options.href,a):"#"},makeText:function(a,b){return a.replace(this.options.pageVariable,b).replace(this.options.totalPagesVariable,this.options.totalPages)}},a.fn.twbsPagination=function(b){var c,e=Array.prototype.slice.call(arguments,1),g=a(this),h=g.data("twbs-pagination"),i="object"==typeof b?b:{};return h||g.data("twbs-pagination",h=new f(this,i)),"string"==typeof b&&(c=h[b].apply(h,e)),c===d?g:c},a.fn.twbsPagination.defaults={totalPages:1,startPage:1,visiblePages:5,initiateStartPageClick:!0,href:!1,pageVariable:"{{page}}",totalPagesVariable:"{{total_pages}}",page:null,first:"First",prev:"Previous",next:"Next",last:"Last",loop:!1,onPageClick:null,paginationClass:"pagination",nextClass:"next",prevClass:"prev",lastClass:"last",firstClass:"first",pageClass:"page",activeClass:"active",disabledClass:"disabled"},a.fn.twbsPagination.Constructor=f,a.fn.twbsPagination.noConflict=function(){return a.fn.twbsPagination=e,this}}(window.jQuery,window,document); \ No newline at end of file From e5c10b823a61a4fcb203edaeb9fcab7720450d2d Mon Sep 17 00:00:00 2001 From: Pavel Ivanov Date: Sun, 8 Nov 2015 19:46:26 +0200 Subject: [PATCH 07/21] Decreased version to 1.3 #58 --- bower.json | 4 ++-- jquery.twbsPagination.min.js | 4 ++-- package.json | 4 ++-- twbs-pagination.jquery.json | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/bower.json b/bower.json index a8733b8..3ae7cc9 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "twbs-pagination", - "version": "1.4", + "version": "1.3", "homepage": "https://github.com/esimakin/twbs-pagination", "authors": [ "Eugene Simakin " @@ -11,7 +11,7 @@ "globals" ], "dependencies": { - "jquery": ">=1.8.1" + "jquery": ">=1.7" }, "keywords": [ "pagination", diff --git a/jquery.twbsPagination.min.js b/jquery.twbsPagination.min.js index 349e793..de63ae0 100644 --- a/jquery.twbsPagination.min.js +++ b/jquery.twbsPagination.min.js @@ -1,9 +1,9 @@ /* - * jQuery Bootstrap Pagination v1.4 + * jQuery Bootstrap Pagination v1.3 * https://github.com/esimakin/twbs-pagination * * Copyright 2014-2015 Eugene Simakin * Released under Apache 2.0 license * http://apache.org/licenses/LICENSE-2.0.html */ -!function(a,b,c,d){"use strict";var e=a.fn.twbsPagination,f=function(c,d){if(this.$element=a(c),this.options=a.extend({},a.fn.twbsPagination.defaults,d),this.options.startPage<1||this.options.startPage>this.options.totalPages)throw new Error("Start page option is incorrect");if(this.options.totalPages=parseInt(this.options.totalPages),isNaN(this.options.totalPages))throw new Error("Total pages option is not correct!");if(this.options.visiblePages=parseInt(this.options.visiblePages),isNaN(this.options.visiblePages))throw new Error("Visible pages option is not correct!");if(this.options.totalPages"),this.$listContainer.addClass(this.options.paginationClass),"UL"!==g&&this.$element.append(this.$listContainer),this.render(this.getPages(this.options.startPage)),this.setupEvents(),this.options.initiateStartPageClick&&this.$element.trigger("page",this.options.startPage),this};f.prototype={constructor:f,destroy:function(){return this.$element.empty(),this.$element.removeData("twbs-pagination"),this.$element.off("page"),this},show:function(a){if(1>a||a>this.options.totalPages)throw new Error("Page is incorrect.");return this.render(this.getPages(a)),this.setupEvents(),this.$element.trigger("page",a),this},buildListItems:function(a){var b=[];if(this.options.first&&b.push(this.buildItem("first",1)),this.options.prev){var c=a.currentPage>1?a.currentPage-1:this.options.loop?this.options.totalPages:1;b.push(this.buildItem("prev",c))}for(var d=0;d"),e=a(""),f=null;return f=this.options[b]?this.makeText(this.options[b],c):c,d.addClass(this.options[b+"Class"]),d.data("page",c),d.data("page-type",b),d.append(e.attr("href",this.makeHref(c)).html(f)),d},getPages:function(a){var b=[],c=Math.floor(this.options.visiblePages/2),d=a-c+1-this.options.visiblePages%2,e=a+c;0>=d&&(d=1,e=this.options.visiblePages),e>this.options.totalPages&&(d=this.options.totalPages-this.options.visiblePages+1,e=this.options.totalPages);for(var f=d;e>=f;)b.push(f),f++;return{currentPage:a,numeric:b}},render:function(b){var c=this;this.$listContainer.children().remove(),this.$listContainer.append(this.buildListItems(b)),this.$listContainer.children().each(function(){var d=a(this),e=d.data("page-type");switch(e){case"page":d.data("page")===b.currentPage&&d.addClass(c.options.activeClass);break;case"first":d.toggleClass(c.options.disabledClass,1===b.currentPage);break;case"last":d.toggleClass(c.options.disabledClass,b.currentPage===c.options.totalPages);break;case"prev":d.toggleClass(c.options.disabledClass,!c.options.loop&&1===b.currentPage);break;case"next":d.toggleClass(c.options.disabledClass,!c.options.loop&&b.currentPage===c.options.totalPages)}})},setupEvents:function(){var b=this;this.$listContainer.find("li").each(function(){var c=a(this);return c.off(),c.hasClass(b.options.disabledClass)||c.hasClass(b.options.activeClass)?void c.on("click",!1):void c.click(function(a){!b.options.href&&a.preventDefault(),b.show(parseInt(c.data("page")))})})},makeHref:function(a){return this.options.href?this.makeText(this.options.href,a):"#"},makeText:function(a,b){return a.replace(this.options.pageVariable,b).replace(this.options.totalPagesVariable,this.options.totalPages)}},a.fn.twbsPagination=function(b){var c,e=Array.prototype.slice.call(arguments,1),g=a(this),h=g.data("twbs-pagination"),i="object"==typeof b?b:{};return h||g.data("twbs-pagination",h=new f(this,i)),"string"==typeof b&&(c=h[b].apply(h,e)),c===d?g:c},a.fn.twbsPagination.defaults={totalPages:1,startPage:1,visiblePages:5,initiateStartPageClick:!0,href:!1,pageVariable:"{{page}}",totalPagesVariable:"{{total_pages}}",page:null,first:"First",prev:"Previous",next:"Next",last:"Last",loop:!1,onPageClick:null,paginationClass:"pagination",nextClass:"next",prevClass:"prev",lastClass:"last",firstClass:"first",pageClass:"page",activeClass:"active",disabledClass:"disabled"},a.fn.twbsPagination.Constructor=f,a.fn.twbsPagination.noConflict=function(){return a.fn.twbsPagination=e,this}}(window.jQuery,window,document); \ No newline at end of file +!function(a,b,c,d){"use strict";var e=a.fn.twbsPagination,f=function(c,d){if(this.$element=a(c),this.options=a.extend({},a.fn.twbsPagination.defaults,d),this.options.startPage<1||this.options.startPage>this.options.totalPages)throw new Error("Start page option is incorrect");if(this.options.totalPages=parseInt(this.options.totalPages),isNaN(this.options.totalPages))throw new Error("Total pages option is not correct!");if(this.options.visiblePages=parseInt(this.options.visiblePages),isNaN(this.options.visiblePages))throw new Error("Visible pages option is not correct!");if(this.options.totalPages"),this.$listContainer.addClass(this.options.paginationClass),"UL"!==g&&this.$element.append(this.$listContainer),this.options.initiateStartPageClick?this.show(this.options.startPage):(this.render(this.getPages(this.options.startPage)),this.setupEvents()),this};f.prototype={constructor:f,destroy:function(){return this.$element.empty(),this.$element.removeData("twbs-pagination"),this.$element.off("page"),this},show:function(a){if(1>a||a>this.options.totalPages)throw new Error("Page is incorrect.");return this.render(this.getPages(a)),this.setupEvents(),this.$element.trigger("page",a),this},buildListItems:function(a){var b=[];if(this.options.first&&b.push(this.buildItem("first",1)),this.options.prev){var c=a.currentPage>1?a.currentPage-1:this.options.loop?this.options.totalPages:1;b.push(this.buildItem("prev",c))}for(var d=0;d"),e=a(""),f=null;return f=this.options[b]?this.makeText(this.options[b],c):c,d.addClass(this.options[b+"Class"]),d.data("page",c),d.data("page-type",b),d.append(e.attr("href",this.makeHref(c)).html(f)),d},getPages:function(a){var b=[],c=Math.floor(this.options.visiblePages/2),d=a-c+1-this.options.visiblePages%2,e=a+c;0>=d&&(d=1,e=this.options.visiblePages),e>this.options.totalPages&&(d=this.options.totalPages-this.options.visiblePages+1,e=this.options.totalPages);for(var f=d;e>=f;)b.push(f),f++;return{currentPage:a,numeric:b}},render:function(b){var c=this;this.$listContainer.children().remove();var d=this.buildListItems(b);jQuery.each(d,function(a,b){c.$listContainer.append(b)}),this.$listContainer.children().each(function(){var d=a(this),e=d.data("page-type");switch(e){case"page":d.data("page")===b.currentPage&&d.addClass(c.options.activeClass);break;case"first":d.toggleClass(c.options.disabledClass,1===b.currentPage);break;case"last":d.toggleClass(c.options.disabledClass,b.currentPage===c.options.totalPages);break;case"prev":d.toggleClass(c.options.disabledClass,!c.options.loop&&1===b.currentPage);break;case"next":d.toggleClass(c.options.disabledClass,!c.options.loop&&b.currentPage===c.options.totalPages)}})},setupEvents:function(){var b=this;this.$listContainer.find("li").each(function(){var c=a(this);return c.off(),c.hasClass(b.options.disabledClass)||c.hasClass(b.options.activeClass)?void c.on("click",!1):void c.click(function(a){!b.options.href&&a.preventDefault(),b.show(parseInt(c.data("page")))})})},makeHref:function(a){return this.options.href?this.makeText(this.options.href,a):"#"},makeText:function(a,b){return a.replace(this.options.pageVariable,b).replace(this.options.totalPagesVariable,this.options.totalPages)}},a.fn.twbsPagination=function(b){var c,e=Array.prototype.slice.call(arguments,1),g=a(this),h=g.data("twbs-pagination"),i="object"==typeof b?b:{};return h||g.data("twbs-pagination",h=new f(this,i)),"string"==typeof b&&(c=h[b].apply(h,e)),c===d?g:c},a.fn.twbsPagination.defaults={totalPages:1,startPage:1,visiblePages:5,initiateStartPageClick:!0,href:!1,pageVariable:"{{page}}",totalPagesVariable:"{{total_pages}}",page:null,first:"First",prev:"Previous",next:"Next",last:"Last",loop:!1,onPageClick:null,paginationClass:"pagination",nextClass:"next",prevClass:"prev",lastClass:"last",firstClass:"first",pageClass:"page",activeClass:"active",disabledClass:"disabled"},a.fn.twbsPagination.Constructor=f,a.fn.twbsPagination.noConflict=function(){return a.fn.twbsPagination=e,this}}(window.jQuery,window,document); \ No newline at end of file diff --git a/package.json b/package.json index b69b1cd..00ab9f6 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,13 @@ { "name": "twbs-pagination", "nativeName": "jQuery Bootstrap Pagination", - "version": "1.4", + "version": "1.3", "homepage": "https://github.com/esimakin/twbs-pagination", "author": "Eugene Simakin ", "description": "jQuery simple pagination plugin for bootstrap-style webpages", "main": "jquery.twbsPagination", "dependencies": { - "jquery": ">=1.8.1" + "jquery": ">=1.7" }, "devDependencies": { "grunt": "^0.4.5", diff --git a/twbs-pagination.jquery.json b/twbs-pagination.jquery.json index 9baeb0e..23f832a 100644 --- a/twbs-pagination.jquery.json +++ b/twbs-pagination.jquery.json @@ -1,6 +1,6 @@ { "name": "twbs-pagination", - "version": "1.4", + "version": "1.3", "title": "jQuery Bootstrap Pagination", "author": { "name": "Eugene Simakin", @@ -14,7 +14,7 @@ } ], "dependencies": { - "jquery": "> 1.8.1" + "jquery": "> 1.7" }, "description": "Twbs Pagination is a jQuery plugin that provides pagination for your web site or application. Check out the demo!", "keywords": [ From 5aa23f30fb15d636c87c34839029c3fd359a612c Mon Sep 17 00:00:00 2001 From: Piicksarn Date: Mon, 14 Dec 2015 18:29:18 +0800 Subject: [PATCH 08/21] Add repository config in package.json. --- package.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/package.json b/package.json index 00ab9f6..d19b67f 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,10 @@ "grunt-contrib-uglify": "^0.9.2", "load-grunt-tasks": "^3.1.0" }, + "repository": { + "type": "git", + "url": "git://github.com/esimakin/twbs-pagination.git" + }, "keywords": [ "pagination", "jQuery", From 37895e41bdd9131a142d0bb31463f0e9f8b91c87 Mon Sep 17 00:00:00 2001 From: pogione Date: Mon, 2 May 2016 12:23:18 +0930 Subject: [PATCH 09/21] Add a class to the anchor link --- jquery.twbsPagination.js | 5 +++-- jquery.twbsPagination.min.js | 10 +++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/jquery.twbsPagination.js b/jquery.twbsPagination.js index a8def90..59aabe4 100644 --- a/jquery.twbsPagination.js +++ b/jquery.twbsPagination.js @@ -136,7 +136,7 @@ $itemContainer.addClass(this.options[type + 'Class']); $itemContainer.data('page', page); $itemContainer.data('page-type', type); - $itemContainer.append($itemContent.attr('href', this.makeHref(page)).html(itemText)); + $itemContainer.append($itemContent.attr('href', this.makeHref(page)).addClass(this.options.anchorClass).html(itemText)); return $itemContainer; }, @@ -271,7 +271,8 @@ firstClass: 'first', pageClass: 'page', activeClass: 'active', - disabledClass: 'disabled' + disabledClass: 'disabled', + anchorClass: 'page-link' }; $.fn.twbsPagination.Constructor = TwbsPagination; diff --git a/jquery.twbsPagination.min.js b/jquery.twbsPagination.min.js index de63ae0..da3cf4b 100644 --- a/jquery.twbsPagination.min.js +++ b/jquery.twbsPagination.min.js @@ -1,9 +1,9 @@ -/* - * jQuery Bootstrap Pagination v1.3 - * https://github.com/esimakin/twbs-pagination +/*! + * jQuery pagination plugin v1.4 + * http://esimakin.github.io/twbs-pagination/ * - * Copyright 2014-2015 Eugene Simakin + * Copyright 2014-2016, Eugene Simakin * Released under Apache 2.0 license * http://apache.org/licenses/LICENSE-2.0.html */ -!function(a,b,c,d){"use strict";var e=a.fn.twbsPagination,f=function(c,d){if(this.$element=a(c),this.options=a.extend({},a.fn.twbsPagination.defaults,d),this.options.startPage<1||this.options.startPage>this.options.totalPages)throw new Error("Start page option is incorrect");if(this.options.totalPages=parseInt(this.options.totalPages),isNaN(this.options.totalPages))throw new Error("Total pages option is not correct!");if(this.options.visiblePages=parseInt(this.options.visiblePages),isNaN(this.options.visiblePages))throw new Error("Visible pages option is not correct!");if(this.options.totalPages"),this.$listContainer.addClass(this.options.paginationClass),"UL"!==g&&this.$element.append(this.$listContainer),this.options.initiateStartPageClick?this.show(this.options.startPage):(this.render(this.getPages(this.options.startPage)),this.setupEvents()),this};f.prototype={constructor:f,destroy:function(){return this.$element.empty(),this.$element.removeData("twbs-pagination"),this.$element.off("page"),this},show:function(a){if(1>a||a>this.options.totalPages)throw new Error("Page is incorrect.");return this.render(this.getPages(a)),this.setupEvents(),this.$element.trigger("page",a),this},buildListItems:function(a){var b=[];if(this.options.first&&b.push(this.buildItem("first",1)),this.options.prev){var c=a.currentPage>1?a.currentPage-1:this.options.loop?this.options.totalPages:1;b.push(this.buildItem("prev",c))}for(var d=0;d"),e=a(""),f=null;return f=this.options[b]?this.makeText(this.options[b],c):c,d.addClass(this.options[b+"Class"]),d.data("page",c),d.data("page-type",b),d.append(e.attr("href",this.makeHref(c)).html(f)),d},getPages:function(a){var b=[],c=Math.floor(this.options.visiblePages/2),d=a-c+1-this.options.visiblePages%2,e=a+c;0>=d&&(d=1,e=this.options.visiblePages),e>this.options.totalPages&&(d=this.options.totalPages-this.options.visiblePages+1,e=this.options.totalPages);for(var f=d;e>=f;)b.push(f),f++;return{currentPage:a,numeric:b}},render:function(b){var c=this;this.$listContainer.children().remove();var d=this.buildListItems(b);jQuery.each(d,function(a,b){c.$listContainer.append(b)}),this.$listContainer.children().each(function(){var d=a(this),e=d.data("page-type");switch(e){case"page":d.data("page")===b.currentPage&&d.addClass(c.options.activeClass);break;case"first":d.toggleClass(c.options.disabledClass,1===b.currentPage);break;case"last":d.toggleClass(c.options.disabledClass,b.currentPage===c.options.totalPages);break;case"prev":d.toggleClass(c.options.disabledClass,!c.options.loop&&1===b.currentPage);break;case"next":d.toggleClass(c.options.disabledClass,!c.options.loop&&b.currentPage===c.options.totalPages)}})},setupEvents:function(){var b=this;this.$listContainer.find("li").each(function(){var c=a(this);return c.off(),c.hasClass(b.options.disabledClass)||c.hasClass(b.options.activeClass)?void c.on("click",!1):void c.click(function(a){!b.options.href&&a.preventDefault(),b.show(parseInt(c.data("page")))})})},makeHref:function(a){return this.options.href?this.makeText(this.options.href,a):"#"},makeText:function(a,b){return a.replace(this.options.pageVariable,b).replace(this.options.totalPagesVariable,this.options.totalPages)}},a.fn.twbsPagination=function(b){var c,e=Array.prototype.slice.call(arguments,1),g=a(this),h=g.data("twbs-pagination"),i="object"==typeof b?b:{};return h||g.data("twbs-pagination",h=new f(this,i)),"string"==typeof b&&(c=h[b].apply(h,e)),c===d?g:c},a.fn.twbsPagination.defaults={totalPages:1,startPage:1,visiblePages:5,initiateStartPageClick:!0,href:!1,pageVariable:"{{page}}",totalPagesVariable:"{{total_pages}}",page:null,first:"First",prev:"Previous",next:"Next",last:"Last",loop:!1,onPageClick:null,paginationClass:"pagination",nextClass:"next",prevClass:"prev",lastClass:"last",firstClass:"first",pageClass:"page",activeClass:"active",disabledClass:"disabled"},a.fn.twbsPagination.Constructor=f,a.fn.twbsPagination.noConflict=function(){return a.fn.twbsPagination=e,this}}(window.jQuery,window,document); \ No newline at end of file +(function(e,d,a,f){var b=e.fn.twbsPagination;var c=function(j,h){this.$element=e(j);this.options=e.extend({},e.fn.twbsPagination.defaults,h);if(this.options.startPage<1||this.options.startPage>this.options.totalPages){throw new Error("Start page option is incorrect")}this.options.totalPages=parseInt(this.options.totalPages);if(isNaN(this.options.totalPages)){throw new Error("Total pages option is not correct!")}this.options.visiblePages=parseInt(this.options.visiblePages);if(isNaN(this.options.visiblePages)){throw new Error("Visible pages option is not correct!")}if(this.options.totalPages")}this.$listContainer.addClass(this.options.paginationClass);if(i!=="UL"){this.$element.append(this.$listContainer)}if(this.options.initiateStartPageClick){this.show(this.options.startPage)}else{this.render(this.getPages(this.options.startPage));this.setupEvents()}return this};c.prototype={constructor:c,destroy:function(){this.$element.empty();this.$element.removeData("twbs-pagination");this.$element.off("page");return this},show:function(g){if(g<1||g>this.options.totalPages){throw new Error("Page is incorrect.")}this.render(this.getPages(g));this.setupEvents();this.$element.trigger("page",g);return this},buildListItems:function(g){var l=[];if(this.options.first){l.push(this.buildItem("first",1))}if(this.options.prev){var k=g.currentPage>1?g.currentPage-1:this.options.loop?this.options.totalPages:1;l.push(this.buildItem("prev",k))}for(var h=0;h"),h=e(""),g=null;g=this.options[i]?this.makeText(this.options[i],j):j;k.addClass(this.options[i+"Class"]);k.data("page",j);k.data("page-type",i);k.append(h.attr("href",this.makeHref(j)).addClass(this.options.anchorClass).html(g));return k},getPages:function(j){var g=[];var k=Math.floor(this.options.visiblePages/2);var l=j-k+1-this.options.visiblePages%2;var h=j+k;if(l<=0){l=1;h=this.options.visiblePages}if(h>this.options.totalPages){l=this.options.totalPages-this.options.visiblePages+1;h=this.options.totalPages}var i=l;while(i<=h){g.push(i);i++}return{currentPage:j,numeric:g}},render:function(g){var i=this;this.$listContainer.children().remove();var h=this.buildListItems(g);jQuery.each(h,function(j,k){i.$listContainer.append(k)});this.$listContainer.children().each(function(){var k=e(this),j=k.data("page-type");switch(j){case"page":if(k.data("page")===g.currentPage){k.addClass(i.options.activeClass)}break;case"first":k.toggleClass(i.options.disabledClass,g.currentPage===1);break;case"last":k.toggleClass(i.options.disabledClass,g.currentPage===i.options.totalPages);break;case"prev":k.toggleClass(i.options.disabledClass,!i.options.loop&&g.currentPage===1);break;case"next":k.toggleClass(i.options.disabledClass,!i.options.loop&&g.currentPage===i.options.totalPages);break;default:break}})},setupEvents:function(){var g=this;this.$listContainer.find("li").each(function(){var h=e(this);h.off();if(h.hasClass(g.options.disabledClass)||h.hasClass(g.options.activeClass)){h.on("click",false);return}h.click(function(i){!g.options.href&&i.preventDefault();g.show(parseInt(h.data("page")))})})},makeHref:function(g){return this.options.href?this.makeText(this.options.href,g):"#"},makeText:function(h,g){return h.replace(this.options.pageVariable,g).replace(this.options.totalPagesVariable,this.options.totalPages)}};e.fn.twbsPagination=function(i){var h=Array.prototype.slice.call(arguments,1);var k;var l=e(this);var j=l.data("twbs-pagination");var g=typeof i==="object"?i:{};if(!j){l.data("twbs-pagination",(j=new c(this,g)))}if(typeof i==="string"){k=j[i].apply(j,h)}return(k===f)?l:k};e.fn.twbsPagination.defaults={totalPages:1,startPage:1,visiblePages:5,initiateStartPageClick:true,href:false,pageVariable:"{{page}}",totalPagesVariable:"{{total_pages}}",page:null,first:"First",prev:"Previous",next:"Next",last:"Last",loop:false,onPageClick:null,paginationClass:"pagination",nextClass:"next",prevClass:"prev",lastClass:"last",firstClass:"first",pageClass:"page",activeClass:"active",disabledClass:"disabled",anchorClass:"page-link"};e.fn.twbsPagination.Constructor=c;e.fn.twbsPagination.noConflict=function(){e.fn.twbsPagination=b;return this}})(window.jQuery,window,document); \ No newline at end of file From 00dcbc9df9272606971d20894a8060edff72425a Mon Sep 17 00:00:00 2001 From: Max Kostjukevich Date: Tue, 24 May 2016 17:48:24 +0300 Subject: [PATCH 10/21] wrong version version (#124) Fix wrong version package npm install --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d19b67f..97e1052 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "twbs-pagination", "nativeName": "jQuery Bootstrap Pagination", - "version": "1.3", + "version": "1.3.1", "homepage": "https://github.com/esimakin/twbs-pagination", "author": "Eugene Simakin ", "description": "jQuery simple pagination plugin for bootstrap-style webpages", From 215753152f02c961ee1311649bcef1bfa6254efe Mon Sep 17 00:00:00 2001 From: Eugene Simakin Date: Fri, 23 Sep 2016 17:14:46 +0300 Subject: [PATCH 11/21] Plugin version added to prototype (#63 fixed) --- jquery.twbsPagination.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/jquery.twbsPagination.js b/jquery.twbsPagination.js index 59aabe4..213cbde 100644 --- a/jquery.twbsPagination.js +++ b/jquery.twbsPagination.js @@ -282,4 +282,6 @@ return this; }; + $.fn.twbsPagination.version = "1.4"; + })(window.jQuery, window, document); From 68a933f9b87ca22f5eca2664304c7965ef63aa2c Mon Sep 17 00:00:00 2001 From: Eugene Simakin Date: Fri, 23 Sep 2016 17:43:45 +0300 Subject: [PATCH 12/21] Small code cleanup --- jquery.twbsPagination.js | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/jquery.twbsPagination.js b/jquery.twbsPagination.js index 213cbde..b7db3b7 100644 --- a/jquery.twbsPagination.js +++ b/jquery.twbsPagination.js @@ -101,25 +101,24 @@ buildListItems: function (pages) { var listItems = []; - // Add "first" page button if (this.options.first) { listItems.push(this.buildItem('first', 1)); } - // Add "previous" page button + if (this.options.prev) { var prev = pages.currentPage > 1 ? pages.currentPage - 1 : this.options.loop ? this.options.totalPages : 1; listItems.push(this.buildItem('prev', prev)); } - // Add "pages" + for (var i = 0; i < pages.numeric.length; i++) { listItems.push(this.buildItem('page', pages.numeric[i])); } - // Add "next" page button + if (this.options.next) { var next = pages.currentPage < this.options.totalPages ? pages.currentPage + 1 : this.options.loop ? 1 : this.options.totalPages; listItems.push(this.buildItem('next', next)); } - // Add "last" page button + if (this.options.last) { listItems.push(this.buildItem('last', this.options.totalPages)); } @@ -130,9 +129,8 @@ buildItem: function (type, page) { var $itemContainer = $('
  • '), $itemContent = $(''), - itemText = null; + itemText = this.options[type] ? this.makeText(this.options[type], page) : page; - itemText = this.options[type] ? this.makeText(this.options[type], page) : page; $itemContainer.addClass(this.options[type + 'Class']); $itemContainer.data('page', page); $itemContainer.data('page-type', type); From 46c4640df650c1a48e8dc5db1e6639346f7cdc3c Mon Sep 17 00:00:00 2001 From: Eugene Simakin Date: Fri, 23 Sep 2016 17:58:29 +0300 Subject: [PATCH 13/21] Options fixed (v4 bootstrap support) --- examples/bootstrap-v4.html | 31 +++++++++++++++++++++++++++++++ examples/index.html | 30 ++++++++++++++++++++++++++++++ jquery.twbsPagination.js | 10 +++++----- 3 files changed, 66 insertions(+), 5 deletions(-) create mode 100644 examples/bootstrap-v4.html create mode 100644 examples/index.html diff --git a/examples/bootstrap-v4.html b/examples/bootstrap-v4.html new file mode 100644 index 0000000..27e4214 --- /dev/null +++ b/examples/bootstrap-v4.html @@ -0,0 +1,31 @@ + + + + + jQuery Pagination plugin + + + + + + + +
    + +
    + + + \ No newline at end of file diff --git a/examples/index.html b/examples/index.html new file mode 100644 index 0000000..687d461 --- /dev/null +++ b/examples/index.html @@ -0,0 +1,30 @@ + + + + + jQuery Pagination plugin + + + + + + +
    + +
    + + + \ No newline at end of file diff --git a/jquery.twbsPagination.js b/jquery.twbsPagination.js index b7db3b7..697a4f9 100644 --- a/jquery.twbsPagination.js +++ b/jquery.twbsPagination.js @@ -263,11 +263,11 @@ loop: false, onPageClick: null, paginationClass: 'pagination', - nextClass: 'next', - prevClass: 'prev', - lastClass: 'last', - firstClass: 'first', - pageClass: 'page', + nextClass: 'page-item next', + prevClass: 'page-item prev', + lastClass: 'page-item last', + firstClass: 'page-item first', + pageClass: 'page-item', activeClass: 'active', disabledClass: 'disabled', anchorClass: 'page-link' From 474df692db93ea34e07e3f3e7b6693d266369aa5 Mon Sep 17 00:00:00 2001 From: Eugene Simakin Date: Fri, 23 Sep 2016 18:11:42 +0300 Subject: [PATCH 14/21] Current page info added (issue #60 fixed) --- jquery.twbsPagination.js | 1 + 1 file changed, 1 insertion(+) diff --git a/jquery.twbsPagination.js b/jquery.twbsPagination.js index 697a4f9..43e6163 100644 --- a/jquery.twbsPagination.js +++ b/jquery.twbsPagination.js @@ -89,6 +89,7 @@ if (page < 1 || page > this.options.totalPages) { throw new Error('Page is incorrect.'); } + this.currentPage = page; this.render(this.getPages(page)); this.setupEvents(); From 63cc9caadea4ceb0d39e7880129026b92968ed86 Mon Sep 17 00:00:00 2001 From: Eugene Simakin Date: Fri, 23 Sep 2016 18:16:02 +0300 Subject: [PATCH 15/21] Hide if only one page check added (issue #126 fixed) --- jquery.twbsPagination.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/jquery.twbsPagination.js b/jquery.twbsPagination.js index 43e6163..b68bd75 100644 --- a/jquery.twbsPagination.js +++ b/jquery.twbsPagination.js @@ -32,6 +32,11 @@ throw new Error('Visible pages option is not correct!'); } + // hide if only one page exists + if (this.options.totalPages == 1) { + return this; + } + if (this.options.totalPages < this.options.visiblePages) { this.options.visiblePages = this.options.totalPages; } From a80bbc8f5d98a5d121a450a4e73674765b841227 Mon Sep 17 00:00:00 2001 From: Eugene Simakin Date: Fri, 23 Sep 2016 18:44:11 +0300 Subject: [PATCH 16/21] Tests fixed (see commit 7861b38) --- tests/test.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/test.js b/tests/test.js index 5200b14..708b3d4 100644 --- a/tests/test.js +++ b/tests/test.js @@ -87,12 +87,12 @@ totalPages: 3, visiblePages: 5 }); - equal(pag1.find('.page').length, 3); + equal(pag1.find('.page-item').length, 7); equal(pag1.find('.next').length, 1); equal(pag1.find('.prev').length, 1); equal(pag1.find('.last').length, 1); equal(pag1.find('.first').length, 1); - equal(pag1.find('.page.active').length, 1); + equal(pag1.find('.page-item.active').length, 1); equal(pag1.find('.prev.disabled').length, 1); equal(pag1.find('.first.disabled').length, 1); }); @@ -125,7 +125,7 @@ pag1.twbsPagination({ totalPages: 2 }); - equal(pag1.find('.page:eq(0)').text(), '1'); + equal(pag1.find('.page-item:eq(2)').text(), '1'); equal(pag1.find('.next').text(), 'Next'); equal(pag1.find('.prev').text(), 'Previous'); equal(pag1.find('.first').text(), 'First'); @@ -142,7 +142,7 @@ next: '>>', last: '(last)[{{total_pages}}]' }); - equal(pag1.find('.page:eq(0)').text(), '[1]'); + equal(pag1.find('.page-item:eq(2)').text(), '[1]'); equal(pag1.find('.next').text(), '>>'); equal(pag1.find('.prev').text(), '<<'); equal(pag1.find('.first').text(), '(first)'); From 9e2b60eb3d1c3ea67ab7f9940a73e5209fec8242 Mon Sep 17 00:00:00 2001 From: Eugene Simakin Date: Sun, 25 Sep 2016 16:15:19 +0300 Subject: [PATCH 17/21] Improvements for querystring (issues #125 and #127 fixed) + tests --- examples/index.html | 2 ++ jquery.twbsPagination.js | 38 +++++++++++++++++++++++++++++++++----- tests/test.js | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 67 insertions(+), 5 deletions(-) diff --git a/examples/index.html b/examples/index.html index 687d461..9854100 100644 --- a/examples/index.html +++ b/examples/index.html @@ -19,6 +19,8 @@ var obj = $('#pagination').twbsPagination({ totalPages: 35, visiblePages: 10, + href: true, + pageVariable: 'page', onPageClick: function (event, page) { console.info(page); } diff --git a/jquery.twbsPagination.js b/jquery.twbsPagination.js index b68bd75..9d17d3c 100644 --- a/jquery.twbsPagination.js +++ b/jquery.twbsPagination.js @@ -46,10 +46,9 @@ } if (this.options.href) { - var match, regexp = this.options.href.replace(/[-\/\\^$*+?.|[\]]/g, '\\$&'); - regexp = regexp.replace(this.options.pageVariable, '(\\d+)'); - if ((match = new RegExp(regexp, 'i').exec(window.location.href)) != null) { - this.options.startPage = parseInt(match[1], 10); + this.options.startPage = this.getPageFromQueryString(); + if (!this.options.startPage) { + this.options.startPage = 1; } } @@ -227,12 +226,41 @@ }, makeHref: function (page) { - return this.options.href ? this.makeText(this.options.href, page) : "#"; + return this.options.href ? this.generateQueryString(page) : "#"; }, makeText: function (text, page) { return text.replace(this.options.pageVariable, page) .replace(this.options.totalPagesVariable, this.options.totalPages) + }, + getPageFromQueryString: function (searchStr) { + var search = this.getSearchString(searchStr), + regex = new RegExp(this.options.pageVariable + '(=([^&#]*)|&|#|$)'), + page = regex.exec(search); + if (!page || !page[2]) { + return null; + } + page = decodeURIComponent(page[2]); + page = parseInt(page); + if (isNaN(page)) { + return null; + } + return page; + }, + generateQueryString: function (pageNumber, searchStr) { + var search = this.getSearchString(searchStr), + regex = new RegExp(this.options.pageVariable + '=*[^&#]*'); + if (!search) return ''; + return '?' + search.replace(regex, this.options.pageVariable + '=' + pageNumber); + + }, + getSearchString: function (searchStr) { + var search = searchStr || window.location.search; + if (search === '') { + return null; + } + if (search.indexOf('?') === 0) search = search.substr(1); + return search; } }; diff --git a/tests/test.js b/tests/test.js index 708b3d4..46d5c72 100644 --- a/tests/test.js +++ b/tests/test.js @@ -149,4 +149,36 @@ equal(pag1.find('.last').text(), '(last)[2]'); }); + QUnit.test("Test 'getPageFromQueryString' method", function () { + pag1.twbsPagination('destroy'); + pag1.twbsPagination({pageVariable: 'page'}); + equal(pag1.twbsPagination('getPageFromQueryString', '?page=1'), 1); + equal(pag1.twbsPagination('getPageFromQueryString', '?page='), null); + equal(pag1.twbsPagination('getPageFromQueryString', '?page'), null); + equal(pag1.twbsPagination('getPageFromQueryString', '?'), null); + equal(pag1.twbsPagination('getPageFromQueryString', ''), null) + ; + equal(pag1.twbsPagination('getPageFromQueryString', '?page=2'), 2); + equal(pag1.twbsPagination('getPageFromQueryString', '?page=3¶m=taram'), 3); + equal(pag1.twbsPagination('getPageFromQueryString', '?page=4¶m=test&opilki'), 4); + equal(pag1.twbsPagination('getPageFromQueryString', '?page=5¶m=test or not&opilki='), 5); + equal(pag1.twbsPagination('getPageFromQueryString', '?ID=1&keyWord=net&page=6'), 6); + }); + + QUnit.test("Test 'generateQueryString' method", function () { + pag1.twbsPagination('destroy'); + pag1.twbsPagination({pageVariable: 'page'}); + equal(pag1.twbsPagination('generateQueryString', 1, '?page=1'), '?page=1'); + equal(pag1.twbsPagination('generateQueryString', 1, '?page='), '?page=1'); + equal(pag1.twbsPagination('generateQueryString', 1, '?page'), '?page=1'); + equal(pag1.twbsPagination('generateQueryString', 1, '?'), ''); + equal(pag1.twbsPagination('generateQueryString', 1, ''), window.location.search); + + equal(pag1.twbsPagination('generateQueryString', 2, '?page=1'), '?page=2'); + equal(pag1.twbsPagination('generateQueryString', 3, '?page=2¶m=taram'), '?page=3¶m=taram'); + equal(pag1.twbsPagination('generateQueryString', 4, '?page=3¶m=test&opilki'), '?page=4¶m=test&opilki'); + equal(pag1.twbsPagination('generateQueryString', 5, '?page=4¶m=test or not&opilki='), '?page=5¶m=test or not&opilki='); + equal(pag1.twbsPagination('generateQueryString', 6, '?ID=1&keyWord=net&page=50'), '?ID=1&keyWord=net&page=6'); + }); + })(window.jQuery); \ No newline at end of file From e1adabf2fb1f52e94dc6184387d3006346f38628 Mon Sep 17 00:00:00 2001 From: Eugene Simakin Date: Sun, 25 Sep 2016 16:58:11 +0300 Subject: [PATCH 18/21] 'setupEvents' method moved to event delegation (issue #75 fixed) --- examples/index.html | 7 +++---- jquery.twbsPagination.js | 14 +++++--------- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/examples/index.html b/examples/index.html index 9854100..5100d39 100644 --- a/examples/index.html +++ b/examples/index.html @@ -19,13 +19,12 @@ var obj = $('#pagination').twbsPagination({ totalPages: 35, visiblePages: 10, - href: true, - pageVariable: 'page', onPageClick: function (event, page) { - console.info(page); + console.info(page + ' (from options)'); } + }).on('page', function (event, page) { + console.info(page + ' (from event listening)'); }); - console.info(obj.data()); }); diff --git a/jquery.twbsPagination.js b/jquery.twbsPagination.js index 9d17d3c..b1735af 100644 --- a/jquery.twbsPagination.js +++ b/jquery.twbsPagination.js @@ -210,18 +210,14 @@ setupEvents: function () { var _this = this; - this.$listContainer.find('li').each(function () { + this.$listContainer.off('click').on('click', 'li', function (evt) { var $this = $(this); - $this.off(); if ($this.hasClass(_this.options.disabledClass) || $this.hasClass(_this.options.activeClass)) { - $this.on('click', false); - return; + return false; } - $this.click(function (evt) { - // Prevent click event if href is not set. - !_this.options.href && evt.preventDefault(); - _this.show(parseInt($this.data('page'))); - }); + // Prevent click event if href is not set. + !_this.options.href && evt.preventDefault(); + _this.show(parseInt($this.data('page'))); }); }, From 7145adaec1b881ee9a64a67024b9c1104d2432cc Mon Sep 17 00:00:00 2001 From: Eugene Simakin Date: Mon, 26 Sep 2016 00:40:26 +0300 Subject: [PATCH 19/21] Update jQuery version from 2.0.3 to 3.1.1 in run-test-jquery-latest.html page --- tests/run-test-jquery-latest.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/run-test-jquery-latest.html b/tests/run-test-jquery-latest.html index 0cbe196..35c7552 100644 --- a/tests/run-test-jquery-latest.html +++ b/tests/run-test-jquery-latest.html @@ -6,7 +6,7 @@ - + From 984b1676f3ad320216c58d4c00b387055dc7c514 Mon Sep 17 00:00:00 2001 From: Eugene Simakin Date: Mon, 26 Sep 2016 00:51:32 +0300 Subject: [PATCH 20/21] Update min file --- jquery.twbsPagination.js | 2 +- jquery.twbsPagination.min.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/jquery.twbsPagination.js b/jquery.twbsPagination.js index b1735af..15bb5ee 100644 --- a/jquery.twbsPagination.js +++ b/jquery.twbsPagination.js @@ -2,7 +2,7 @@ * jQuery pagination plugin v1.4 * http://esimakin.github.io/twbs-pagination/ * - * Copyright 2014-2015, Eugene Simakin + * Copyright 2014-2016, Eugene Simakin * Released under Apache 2.0 license * http://apache.org/licenses/LICENSE-2.0.html */ diff --git a/jquery.twbsPagination.min.js b/jquery.twbsPagination.min.js index da3cf4b..e5f20ed 100644 --- a/jquery.twbsPagination.min.js +++ b/jquery.twbsPagination.min.js @@ -1,4 +1,4 @@ -/*! +/* * jQuery pagination plugin v1.4 * http://esimakin.github.io/twbs-pagination/ * @@ -6,4 +6,4 @@ * Released under Apache 2.0 license * http://apache.org/licenses/LICENSE-2.0.html */ -(function(e,d,a,f){var b=e.fn.twbsPagination;var c=function(j,h){this.$element=e(j);this.options=e.extend({},e.fn.twbsPagination.defaults,h);if(this.options.startPage<1||this.options.startPage>this.options.totalPages){throw new Error("Start page option is incorrect")}this.options.totalPages=parseInt(this.options.totalPages);if(isNaN(this.options.totalPages)){throw new Error("Total pages option is not correct!")}this.options.visiblePages=parseInt(this.options.visiblePages);if(isNaN(this.options.visiblePages)){throw new Error("Visible pages option is not correct!")}if(this.options.totalPages")}this.$listContainer.addClass(this.options.paginationClass);if(i!=="UL"){this.$element.append(this.$listContainer)}if(this.options.initiateStartPageClick){this.show(this.options.startPage)}else{this.render(this.getPages(this.options.startPage));this.setupEvents()}return this};c.prototype={constructor:c,destroy:function(){this.$element.empty();this.$element.removeData("twbs-pagination");this.$element.off("page");return this},show:function(g){if(g<1||g>this.options.totalPages){throw new Error("Page is incorrect.")}this.render(this.getPages(g));this.setupEvents();this.$element.trigger("page",g);return this},buildListItems:function(g){var l=[];if(this.options.first){l.push(this.buildItem("first",1))}if(this.options.prev){var k=g.currentPage>1?g.currentPage-1:this.options.loop?this.options.totalPages:1;l.push(this.buildItem("prev",k))}for(var h=0;h"),h=e(""),g=null;g=this.options[i]?this.makeText(this.options[i],j):j;k.addClass(this.options[i+"Class"]);k.data("page",j);k.data("page-type",i);k.append(h.attr("href",this.makeHref(j)).addClass(this.options.anchorClass).html(g));return k},getPages:function(j){var g=[];var k=Math.floor(this.options.visiblePages/2);var l=j-k+1-this.options.visiblePages%2;var h=j+k;if(l<=0){l=1;h=this.options.visiblePages}if(h>this.options.totalPages){l=this.options.totalPages-this.options.visiblePages+1;h=this.options.totalPages}var i=l;while(i<=h){g.push(i);i++}return{currentPage:j,numeric:g}},render:function(g){var i=this;this.$listContainer.children().remove();var h=this.buildListItems(g);jQuery.each(h,function(j,k){i.$listContainer.append(k)});this.$listContainer.children().each(function(){var k=e(this),j=k.data("page-type");switch(j){case"page":if(k.data("page")===g.currentPage){k.addClass(i.options.activeClass)}break;case"first":k.toggleClass(i.options.disabledClass,g.currentPage===1);break;case"last":k.toggleClass(i.options.disabledClass,g.currentPage===i.options.totalPages);break;case"prev":k.toggleClass(i.options.disabledClass,!i.options.loop&&g.currentPage===1);break;case"next":k.toggleClass(i.options.disabledClass,!i.options.loop&&g.currentPage===i.options.totalPages);break;default:break}})},setupEvents:function(){var g=this;this.$listContainer.find("li").each(function(){var h=e(this);h.off();if(h.hasClass(g.options.disabledClass)||h.hasClass(g.options.activeClass)){h.on("click",false);return}h.click(function(i){!g.options.href&&i.preventDefault();g.show(parseInt(h.data("page")))})})},makeHref:function(g){return this.options.href?this.makeText(this.options.href,g):"#"},makeText:function(h,g){return h.replace(this.options.pageVariable,g).replace(this.options.totalPagesVariable,this.options.totalPages)}};e.fn.twbsPagination=function(i){var h=Array.prototype.slice.call(arguments,1);var k;var l=e(this);var j=l.data("twbs-pagination");var g=typeof i==="object"?i:{};if(!j){l.data("twbs-pagination",(j=new c(this,g)))}if(typeof i==="string"){k=j[i].apply(j,h)}return(k===f)?l:k};e.fn.twbsPagination.defaults={totalPages:1,startPage:1,visiblePages:5,initiateStartPageClick:true,href:false,pageVariable:"{{page}}",totalPagesVariable:"{{total_pages}}",page:null,first:"First",prev:"Previous",next:"Next",last:"Last",loop:false,onPageClick:null,paginationClass:"pagination",nextClass:"next",prevClass:"prev",lastClass:"last",firstClass:"first",pageClass:"page",activeClass:"active",disabledClass:"disabled",anchorClass:"page-link"};e.fn.twbsPagination.Constructor=c;e.fn.twbsPagination.noConflict=function(){e.fn.twbsPagination=b;return this}})(window.jQuery,window,document); \ No newline at end of file +(function(e,d,a,f){var b=e.fn.twbsPagination;var c=function(i,g){this.$element=e(i);this.options=e.extend({},e.fn.twbsPagination.defaults,g);if(this.options.startPage<1||this.options.startPage>this.options.totalPages){throw new Error("Start page option is incorrect")}this.options.totalPages=parseInt(this.options.totalPages);if(isNaN(this.options.totalPages)){throw new Error("Total pages option is not correct!")}this.options.visiblePages=parseInt(this.options.visiblePages);if(isNaN(this.options.visiblePages)){throw new Error("Visible pages option is not correct!")}if(this.options.totalPages==1){return this}if(this.options.totalPages")}this.$listContainer.addClass(this.options.paginationClass);if(h!=="UL"){this.$element.append(this.$listContainer)}if(this.options.initiateStartPageClick){this.show(this.options.startPage)}else{this.render(this.getPages(this.options.startPage));this.setupEvents()}return this};c.prototype={constructor:c,destroy:function(){this.$element.empty();this.$element.removeData("twbs-pagination");this.$element.off("page");return this},show:function(g){if(g<1||g>this.options.totalPages){throw new Error("Page is incorrect.")}this.currentPage=g;this.render(this.getPages(g));this.setupEvents();this.$element.trigger("page",g);return this},buildListItems:function(g){var l=[];if(this.options.first){l.push(this.buildItem("first",1))}if(this.options.prev){var k=g.currentPage>1?g.currentPage-1:this.options.loop?this.options.totalPages:1;l.push(this.buildItem("prev",k))}for(var h=0;h"),h=e(""),g=this.options[i]?this.makeText(this.options[i],j):j;k.addClass(this.options[i+"Class"]);k.data("page",j);k.data("page-type",i);k.append(h.attr("href",this.makeHref(j)).addClass(this.options.anchorClass).html(g));return k},getPages:function(j){var g=[];var k=Math.floor(this.options.visiblePages/2);var l=j-k+1-this.options.visiblePages%2;var h=j+k;if(l<=0){l=1;h=this.options.visiblePages}if(h>this.options.totalPages){l=this.options.totalPages-this.options.visiblePages+1;h=this.options.totalPages}var i=l;while(i<=h){g.push(i);i++}return{currentPage:j,numeric:g}},render:function(g){var i=this;this.$listContainer.children().remove();var h=this.buildListItems(g);jQuery.each(h,function(j,k){i.$listContainer.append(k)});this.$listContainer.children().each(function(){var k=e(this),j=k.data("page-type");switch(j){case"page":if(k.data("page")===g.currentPage){k.addClass(i.options.activeClass)}break;case"first":k.toggleClass(i.options.disabledClass,g.currentPage===1);break;case"last":k.toggleClass(i.options.disabledClass,g.currentPage===i.options.totalPages);break;case"prev":k.toggleClass(i.options.disabledClass,!i.options.loop&&g.currentPage===1);break;case"next":k.toggleClass(i.options.disabledClass,!i.options.loop&&g.currentPage===i.options.totalPages);break;default:break}})},setupEvents:function(){var g=this;this.$listContainer.off("click").on("click","li",function(h){var i=e(this);if(i.hasClass(g.options.disabledClass)||i.hasClass(g.options.activeClass)){return false}!g.options.href&&h.preventDefault();g.show(parseInt(i.data("page")))})},makeHref:function(g){return this.options.href?this.generateQueryString(g):"#"},makeText:function(h,g){return h.replace(this.options.pageVariable,g).replace(this.options.totalPagesVariable,this.options.totalPages)},getPageFromQueryString:function(g){var h=this.getSearchString(g),i=new RegExp(this.options.pageVariable+"(=([^&#]*)|&|#|$)"),j=i.exec(h);if(!j||!j[2]){return null}j=decodeURIComponent(j[2]);j=parseInt(j);if(isNaN(j)){return null}return j},generateQueryString:function(g,h){var i=this.getSearchString(h),j=new RegExp(this.options.pageVariable+"=*[^&#]*");if(!i){return""}return"?"+i.replace(j,this.options.pageVariable+"="+g)},getSearchString:function(g){var h=g||d.location.search;if(h===""){return null}if(h.indexOf("?")===0){h=h.substr(1)}return h}};e.fn.twbsPagination=function(i){var h=Array.prototype.slice.call(arguments,1);var k;var l=e(this);var j=l.data("twbs-pagination");var g=typeof i==="object"?i:{};if(!j){l.data("twbs-pagination",(j=new c(this,g)))}if(typeof i==="string"){k=j[i].apply(j,h)}return(k===f)?l:k};e.fn.twbsPagination.defaults={totalPages:1,startPage:1,visiblePages:5,initiateStartPageClick:true,href:false,pageVariable:"{{page}}",totalPagesVariable:"{{total_pages}}",page:null,first:"First",prev:"Previous",next:"Next",last:"Last",loop:false,onPageClick:null,paginationClass:"pagination",nextClass:"page-item next",prevClass:"page-item prev",lastClass:"page-item last",firstClass:"page-item first",pageClass:"page-item",activeClass:"active",disabledClass:"disabled",anchorClass:"page-link"};e.fn.twbsPagination.Constructor=c;e.fn.twbsPagination.noConflict=function(){e.fn.twbsPagination=b;return this};e.fn.twbsPagination.version="1.4"})(window.jQuery,window,document); \ No newline at end of file From 8749dc1f8490f614be1dfde60ec4e7d8fa827f19 Mon Sep 17 00:00:00 2001 From: Eugene Simakin Date: Mon, 26 Sep 2016 01:03:13 +0300 Subject: [PATCH 21/21] Update bower.json, package.json and etc. --- README.md | 2 +- bower.json | 4 ++-- package.json | 4 ++-- twbs-pagination.jquery.json | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 25bd958..d04f8a4 100644 --- a/README.md +++ b/README.md @@ -23,4 +23,4 @@ For development use grunt build to make minified file. To use grunt install packages by using: npm install ## Demo and Docs -For more information see [docs on github pages](http://esimakin.github.io/twbs-pagination/) \ No newline at end of file +For more information see [docs on github pages](http://esimakin.github.io/twbs-pagination/) (out of date since 26 september) \ No newline at end of file diff --git a/bower.json b/bower.json index 3ae7cc9..5642e9e 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "twbs-pagination", - "version": "1.3", + "version": "1.4.0", "homepage": "https://github.com/esimakin/twbs-pagination", "authors": [ "Eugene Simakin " @@ -19,7 +19,7 @@ "jQuery-plugin", "bootstrap" ], - "license": "Apache 2.0", + "license": "Apache-2.0", "ignore": [ "**/.*", "node_modules", diff --git a/package.json b/package.json index 97e1052..35354b9 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "twbs-pagination", "nativeName": "jQuery Bootstrap Pagination", - "version": "1.3.1", + "version": "1.4.0", "homepage": "https://github.com/esimakin/twbs-pagination", "author": "Eugene Simakin ", "description": "jQuery simple pagination plugin for bootstrap-style webpages", @@ -26,6 +26,6 @@ "jQuery-plugin", "bootstrap" ], - "license": "Apache 2.0", + "license": "Apache-2.0", "licenseUrl": "http://apache.org/licenses/LICENSE-2.0.html" } diff --git a/twbs-pagination.jquery.json b/twbs-pagination.jquery.json index 23f832a..603631f 100644 --- a/twbs-pagination.jquery.json +++ b/twbs-pagination.jquery.json @@ -1,6 +1,6 @@ { "name": "twbs-pagination", - "version": "1.3", + "version": "1.4.0", "title": "jQuery Bootstrap Pagination", "author": { "name": "Eugene Simakin", @@ -9,7 +9,7 @@ }, "licenses": [ { - "type": "Apache 2.0", + "type": "Apache-2.0", "url": "http://www.apache.org/licenses/LICENSE-2.0.html" } ],