Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Update docs
  • Loading branch information
Eugene Simakin committed Nov 12, 2014
1 parent c1e564f commit 710a53f
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 37 deletions.
5 changes: 3 additions & 2 deletions index.html
Expand Up @@ -80,7 +80,7 @@ <h3>
});</code></pre>

<p>And HTML code:</p>
<pre><code class="highlight"> &lt;<span class="nt">ul</span> <span class="na">id</span>=<span class="s">&quot;pagination-demo&quot;</span><span class="na">class</span>=<span class="s">&quot;pagination-sm&quot;</span>&gt;&lt;/<span class="nt">ul</span>&gt;</code></pre>
<pre><code class="highlight"> &lt;<span class="nt">ul</span> <span class="na">id</span>=<span class="s">&quot;pagination-demo&quot;</span><span class="na"> class</span>=<span class="s">&quot;pagination-sm&quot;</span>&gt;&lt;/<span class="nt">ul</span>&gt;</code></pre>

<h3>
<a id="options-and-events" class="anchor" href="#options-and-events"><span
Expand All @@ -92,7 +92,7 @@ <h3>
<li><code>totalPages</code> the number of pages (required, checked)</li>
<li><code>startPage</code> the current page that show on start(default: 1)</li>
<li><code>visiblePages</code> maximum visible pages (default: 5)</li>
<li><code>href</code> template for pagination links (default <code>javascript:void(0);</code>)</li>
<li><code>href</code> template for pagination links (default <code>false</code>)</li>
<li><code>hrefVariable</code> variable name in href template for page number (default
<code>{{number}}</code>)
</li>
Expand All @@ -106,6 +106,7 @@ <h3>
</li>
<li><code>last</code> text label (default: <code class="highlight"><span class="s">'Last'</span></code>)
</li>
<li><code>loop</code> carousel-style pagination (default: <code class="highlight">false</code>)</li>
<li><code>paginationClass</code> the root style for pagination component (default: <code
class="highlight"><span class="s">'pagination'</span></code>).
You can use this option to apply your own style
Expand Down
87 changes: 52 additions & 35 deletions js/jquery.twbsPagination.js
@@ -1,5 +1,5 @@
/*!
* jQuery pagination plugin v1.2.1
* jQuery pagination plugin v1.2.4
* http://esimakin.github.io/twbs-pagination/
*
* Copyright 2014, Eugene Simakin
Expand Down Expand Up @@ -41,6 +41,14 @@
this.$element.first().bind('page', this.options.onPageClick);
}

if (this.options.href) {
var m, regexp = this.options.href.replace(/[-\/\\^$*+?.|[\]]/g, '\\$&');
regexp = regexp.replace(this.options.hrefVariable, '(\\d+)');
if ((m = new RegExp(regexp, 'i').exec(window.location.href)) != null) {
this.options.startPage = parseInt(m[1], 10);
}
}

var tagName = (typeof this.$element.prop === 'function') ?
this.$element.prop('tagName') : this.$element.attr('tagName');

Expand Down Expand Up @@ -89,59 +97,63 @@
var $listItems = $();

if (this.options.first) {
$listItems = $listItems.add(this.buildItem('first', 1, this.options.firstClass));
$listItems = $listItems.add(this.buildItem('first', 1));
}

if (this.options.prev) {
var prev = pages.currentPage > 1 ? pages.currentPage - 1 : 1;
$listItems = $listItems.add(this.buildItem('prev', prev, this.options.prevClass));
var prev = pages.currentPage > 1 ? pages.currentPage - 1 : this.options.loop ? this.options.totalPages : 1;
$listItems = $listItems.add(this.buildItem('prev', prev));
}

for (var i = 0; i < pages.numeric.length; i++) {
$listItems = $listItems.add(this.buildItem('page', pages.numeric[i], this.options.pageClass));
$listItems = $listItems.add(this.buildItem('page', pages.numeric[i]));
}

if (this.options.next) {
var next = pages.currentPage >= this.options.totalPages ? this.options.totalPages : pages.currentPage + 1;
$listItems = $listItems.add(this.buildItem('next', next, this.options.nextClass));
var next = pages.currentPage < this.options.totalPages ? pages.currentPage + 1 : this.options.loop ? 1 : this.options.totalPages;
$listItems = $listItems.add(this.buildItem('next', next));
}

if (this.options.last) {
$listItems = $listItems.add(this.buildItem('last', this.options.totalPages, this.options.lastClass));
$listItems = $listItems.add(this.buildItem('last', this.options.totalPages));
}

return $listItems;
},

buildItem: function (type, page, el_class) {
buildItem: function (type, page) {
var itemContainer = $('<li></li>'),
itemContent = $('<a></a>'),
itemText = null;

itemContainer.addClass(el_class);
itemContainer.data('page', page);

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;
}

itemContainer.append(itemContent.attr('href', this.href(page)).html(itemText));
itemContainer.data('page', page);
itemContainer.data('page-type', type);
itemContainer.append(itemContent.attr('href', this.makeHref(page)).html(itemText));
return itemContainer;
},

Expand Down Expand Up @@ -175,45 +187,49 @@
this.$listContainer.children().remove();
this.$listContainer.append(this.buildListItems(pages));

this.$listContainer.find('.'+this.options.pageClass).removeClass(this.options.activeClass).filter(function () {
var children = this.$listContainer.children();
children.filter(function () {
return $(this).data('page') === pages.currentPage;
}).addClass(this.options.activeClass);

if (pages.currentPage === 1) {
this.$listContainer.find('.'+this.options.prevClass+' a,.'+this.options.firstClass+' a').attr("href", "javascript:void(0);");
}

if (pages.currentPage === this.options.totalPages) {
this.$listContainer.find('.'+this.options.nextClass+' a,.'+this.options.lastClass+' a').attr("href", "javascript:void(0);");
}

this.$listContainer.find('.'+this.options.firstClass)
.toggleClass(this.options.disabledClass, pages.currentPage === 1);
children.filter(function () {
return $(this).data('page-type') === 'first';
}).toggleClass(this.options.disabledClass, pages.currentPage === 1);

this.$listContainer.find('.'+this.options.lastClass)
.toggleClass(this.options.disabledClass, pages.currentPage === this.options.totalPages);
children.filter(function () {
return $(this).data('page-type') === 'last';
}).toggleClass(this.options.disabledClass, pages.currentPage === this.options.totalPages);

this.$listContainer.find('.'+this.options.prevClass)
.toggleClass(this.options.disabledClass, pages.currentPage === 1);
children.filter(function () {
return $(this).data('page-type') === 'prev';
}).toggleClass(this.options.disabledClass, !this.options.loop && pages.currentPage === 1);

this.$listContainer.find('.'+this.options.nextClass)
.toggleClass(this.options.disabledClass, pages.currentPage === this.options.totalPages);
children.filter(function () {
return $(this).data('page-type') === 'next';
}).toggleClass(this.options.disabledClass, !this.options.loop && pages.currentPage === this.options.totalPages);
},

setupEvents: function () {
var base = this;
this.$listContainer.find('li').each(function () {
var $this = $(this);
$this.off();
if ($this.hasClass(base.options.disabledClass) || $this.hasClass(base.options.activeClass)) return;
$this.click(function () {
if ($this.hasClass(base.options.disabledClass) || $this.hasClass(base.options.activeClass)) {
$this.click(function (evt) {
evt.preventDefault();
});
return;
}
$this.click(function (evt) {
// Prevent click event if href is not set.
!base.options.href && evt.preventDefault();
base.show(parseInt($this.data('page'), 10));
});
});
},

href: function (c) {
return this.options.href.replace(this.options.hrefVariable, c);
makeHref: function (c) {
return this.options.href ? this.options.href.replace(this.options.hrefVariable, c) : "#";
}

};
Expand All @@ -238,12 +254,13 @@
totalPages: 0,
startPage: 1,
visiblePages: 5,
href: 'javascript:void(0);',
href: false,
hrefVariable: '{{number}}',
first: 'First',
prev: 'Previous',
next: 'Next',
last: 'Last',
loop: false,
onPageClick: null,
paginationClass: 'pagination',
nextClass: 'next',
Expand Down

0 comments on commit 710a53f

Please sign in to comment.