diff --git a/TODO b/TODO new file mode 100644 index 0000000..0d599aa --- /dev/null +++ b/TODO @@ -0,0 +1,3 @@ +Update documentation: +1) Describe 'initiateStartPageClick' option +2) Add example for using 'href' and 'hrefVariable' (maybe rename it with back compability) \ No newline at end of file diff --git a/jquery.twbsPagination.js b/jquery.twbsPagination.js index 9327f6d..f96332a 100644 --- a/jquery.twbsPagination.js +++ b/jquery.twbsPagination.js @@ -1,5 +1,5 @@ /*! - * jQuery pagination plugin v1.2.5 + * jQuery pagination plugin v1.2.6 * http://esimakin.github.io/twbs-pagination/ * * Copyright 2014, Eugene Simakin @@ -67,6 +67,10 @@ this.render(this.getPages(this.options.startPage)); this.setupEvents(); + if (this.options.initiateStartPageClick) { + this.$element.trigger('page', this.options.startPage); + } + return this; }; @@ -184,29 +188,38 @@ }, render: function (pages) { + var that = this; this.$listContainer.children().remove(); this.$listContainer.append(this.buildListItems(pages)); - var children = this.$listContainer.children(); - children.filter(function () { - return $(this).data('page') === pages.currentPage && $(this).data('page-type') === 'page'; - }).addClass(this.options.activeClass); - - children.filter(function () { - return $(this).data('page-type') === 'first'; - }).toggleClass(this.options.disabledClass, pages.currentPage === 1); - - children.filter(function () { - return $(this).data('page-type') === 'last'; - }).toggleClass(this.options.disabledClass, pages.currentPage === this.options.totalPages); - - children.filter(function () { - return $(this).data('page-type') === 'prev'; - }).toggleClass(this.options.disabledClass, !this.options.loop && pages.currentPage === 1); + this.$listContainer.children().each(function () { + var $this = $(this), + pageType = $this.data('page-type'); + + switch (pageType) { + case 'page': + if ($this.data('page') === pages.currentPage) { + $this.addClass(that.options.activeClass); + } + break; + case 'first': + $this.toggleClass(that.options.disabledClass, pages.currentPage === 1); + break; + case 'last': + $this.toggleClass(that.options.disabledClass, pages.currentPage === that.options.totalPages); + break; + case 'prev': + $this.toggleClass(that.options.disabledClass, !that.options.loop && pages.currentPage === 1); + break; + case 'next': + $this.toggleClass(that.options.disabledClass, + !that.options.loop && pages.currentPage === that.options.totalPages); + break; + default: + break; + } - children.filter(function () { - return $(this).data('page-type') === 'next'; - }).toggleClass(this.options.disabledClass, !this.options.loop && pages.currentPage === this.options.totalPages); + }); }, setupEvents: function () { @@ -254,6 +267,7 @@ totalPages: 0, startPage: 1, visiblePages: 5, + initiateStartPageClick: true, href: false, hrefVariable: '{{number}}', first: 'First', diff --git a/jquery.twbsPagination.min.js b/jquery.twbsPagination.min.js index 26db646..d5e434e 100644 --- a/jquery.twbsPagination.min.js +++ b/jquery.twbsPagination.min.js @@ -1,9 +1,9 @@ -/*! - * jQuery pagination plugin v1.2.5 +/* + * jQuery pagination plugin v1.2.6 * http://esimakin.github.io/twbs-pagination/ * * Copyright 2014, Eugene Simakin * 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)}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.unbind("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 j=e();if(this.options.first){j=j.add(this.buildItem("first",1))}if(this.options.prev){var l=g.currentPage>1?g.currentPage-1:this.options.loop?this.options.totalPages:1;j=j.add(this.buildItem("prev",l))}for(var h=0;h"),k=e(""),g=null;switch(i){case"page":g=j;h.addClass(this.options.pageClass);break;case"first":g=this.options.first;h.addClass(this.options.firstClass);break;case"prev":g=this.options.prev;h.addClass(this.options.prevClass);break;case"next":g=this.options.next;h.addClass(this.options.nextClass);break;case"last":g=this.options.last;h.addClass(this.options.lastClass);break;default:break}h.data("page",j);h.data("page-type",i);h.append(k.attr("href",this.makeHref(j)).html(g));return h},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){this.$listContainer.children().remove();this.$listContainer.append(this.buildListItems(g));var h=this.$listContainer.children();h.filter(function(){return e(this).data("page")===g.currentPage&&e(this).data("page-type")==="page"}).addClass(this.options.activeClass);h.filter(function(){return e(this).data("page-type")==="first"}).toggleClass(this.options.disabledClass,g.currentPage===1);h.filter(function(){return e(this).data("page-type")==="last"}).toggleClass(this.options.disabledClass,g.currentPage===this.options.totalPages);h.filter(function(){return e(this).data("page-type")==="prev"}).toggleClass(this.options.disabledClass,!this.options.loop&&g.currentPage===1);h.filter(function(){return e(this).data("page-type")==="next"}).toggleClass(this.options.disabledClass,!this.options.loop&&g.currentPage===this.options.totalPages)},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.click(function(i){i.preventDefault()});return}h.click(function(i){!g.options.href&&i.preventDefault();g.show(parseInt(h.data("page"),10))})})},makeHref:function(g){return this.options.href?this.options.href.replace(this.options.hrefVariable,g):"#"}};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:0,startPage:1,visiblePages:5,href:false,hrefVariable:"{{number}}",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"};e.fn.twbsPagination.Constructor=c;e.fn.twbsPagination.noConflict=function(){e.fn.twbsPagination=b;return this}})(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)}this.render(this.getPages(this.options.startPage));this.setupEvents();if(this.options.initiateStartPageClick){this.$element.trigger("page",this.options.startPage)}return this};c.prototype={constructor:c,destroy:function(){this.$element.empty();this.$element.removeData("twbs-pagination");this.$element.unbind("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 j=e();if(this.options.first){j=j.add(this.buildItem("first",1))}if(this.options.prev){var l=g.currentPage>1?g.currentPage-1:this.options.loop?this.options.totalPages:1;j=j.add(this.buildItem("prev",l))}for(var h=0;h"),k=e(""),g=null;switch(i){case"page":g=j;h.addClass(this.options.pageClass);break;case"first":g=this.options.first;h.addClass(this.options.firstClass);break;case"prev":g=this.options.prev;h.addClass(this.options.prevClass);break;case"next":g=this.options.next;h.addClass(this.options.nextClass);break;case"last":g=this.options.last;h.addClass(this.options.lastClass);break;default:break}h.data("page",j);h.data("page-type",i);h.append(k.attr("href",this.makeHref(j)).html(g));return h},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 h=this;this.$listContainer.children().remove();this.$listContainer.append(this.buildListItems(g));this.$listContainer.children().each(function(){var j=e(this),i=j.data("page-type");switch(i){case"page":if(j.data("page")===g.currentPage){j.addClass(h.options.activeClass)}break;case"first":j.toggleClass(h.options.disabledClass,g.currentPage===1);break;case"last":j.toggleClass(h.options.disabledClass,g.currentPage===h.options.totalPages);break;case"prev":j.toggleClass(h.options.disabledClass,!h.options.loop&&g.currentPage===1);break;case"next":j.toggleClass(h.options.disabledClass,!h.options.loop&&g.currentPage===h.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.click(function(i){i.preventDefault()});return}h.click(function(i){!g.options.href&&i.preventDefault();g.show(parseInt(h.data("page"),10))})})},makeHref:function(g){return this.options.href?this.options.href.replace(this.options.hrefVariable,g):"#"}};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:0,startPage:1,visiblePages:5,initiateStartPageClick:true,href:false,hrefVariable:"{{number}}",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"};e.fn.twbsPagination.Constructor=c;e.fn.twbsPagination.noConflict=function(){e.fn.twbsPagination=b;return this}})(jQuery,window,document); \ No newline at end of file diff --git a/package.json b/package.json index 18748ba..89118ff 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "twbs-pagination", - "version": "1.2.5", + "version": "1.2.6", "homepage": "https://github.com/esimakin/twbs-pagination", "author": "Eugene Simakin ", "description": "jQuery simple pagination plugin for bootstrap-style webpages", diff --git a/twbs-pagination.jquery.json b/twbs-pagination.jquery.json index 5bdaa02..969f30b 100644 --- a/twbs-pagination.jquery.json +++ b/twbs-pagination.jquery.json @@ -1,6 +1,6 @@ { "name": "twbs-pagination", - "version": "1.1.0", + "version": "1.2.6", "title": "Twbs Pagination", "author": { "name": "Eugene Simakin",