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": [