@ashvin27/react-datatable
Version:
ReactDatatable is a component which provide ability to create multifunctional table using single component like jQuery Datatable
80 lines (70 loc) • 1.91 kB
JavaScript
import React from 'react';
export default function ADPagination(props){
let size = props.pages;
let page = props.page_number;
let step = 2;
let tags = [];
let { language: { pagination } } = props
let Item = function(props) {
let className = (props.className) || "";
return(<li className={"page-item " + className}>
<a href='#' className="page-link" tabIndex="-1"
onClick={(e) => { e.preventDefault(); props.onClick(e) }}>
{props.children}
</a>
</li>);
}
let Add = function(s, f){
for (let i = s; i < f; i++) {
tags.push(<Item
key={i}
className={(page == i) ? "active" : ""}
onClick={(e) => props.goToPage(e, i)}>{i}</Item>);
}
}
let Last = function() {
tags.push(<Item key="l...">...</Item>);
tags.push(<Item key={size}
className={(page == size) ? "active" : ""}
onClick={(e) => props.goToPage(e, size)}>{size}</Item>);
}
let First = function() {
tags.push(<Item
key="1"
className={(page == 1) ? "active" : ""}
onClick={(e) => props.goToPage(e, 1)}>1</Item>);
tags.push(<Item key="f...">...</Item>);
}
tags.push(
<Item
key="p0"
className={(props.isFirst ? "disabled " : "")}
onClick={props.previousPage}>
{pagination.previous
? pagination.previous
: <span>◄</span>}
</Item>
)
if (size < step * 2 + 6) {
Add(1, size + 1);
} else if (page < step * 2 + 1) {
Add(1, step * 2 + 4);
Last();
} else if (page > size - step * 2) {
First();
Add(size - step * 2 - 2, size + 1);
} else {
First();
Add(page - step, page + step + 1);
Last();
}
tags.push(<Item
key="n0"
className={props.isLast ? "disabled " : ""}
onClick={props.nextPage}>
{pagination.next
? pagination.next
: <span>►</span>}
</Item>);
return tags;
}