@daphneb/phonereporting
Version:
68 lines (55 loc) • 2.9 kB
JavaScript
/*
See License / Disclaimer https://raw.githubusercontent.com/DynamicTyped/Griddle/master/LICENSE
*/
'use strict';
var React = require('react');
var assign = require('lodash/assign');
//needs props maxPage, currentPage, nextFunction, prevFunction
var GridPagination = React.createClass({
displayName: 'GridPagination',
getDefaultProps: function getDefaultProps() {
return {
"maxPage": 0,
"nextText": "",
"previousText": "",
"currentPage": 0,
"useGriddleStyles": true,
"nextClassName": "griddle-next",
"previousClassName": "griddle-previous",
"nextIconComponent": null,
"previousIconComponent": null
};
},
pageChange: function pageChange(event) {
this.props.setPage(parseInt(event.target.value, 10) - 1);
},
render: function render() {
var previous = "";
var next = "";
if (this.props.currentPage > 0) {
previous = React.createElement('button', { type: 'button', onClick: this.props.previous, style: this.props.useGriddleStyles ? { "color": "#222", border: "none", background: "none", margin: "0 0 0 10px" } : null }, this.props.previousIconComponent, this.props.previousText);
}
if (this.props.currentPage !== this.props.maxPage - 1) {
next = React.createElement('button', { type: 'button', onClick: this.props.next, style: this.props.useGriddleStyles ? { "color": "#222", border: "none", background: "none", margin: "0 10px 0 0" } : null }, this.props.nextText, this.props.nextIconComponent);
}
var leftStyle = null;
var middleStyle = null;
var rightStyle = null;
if (this.props.useGriddleStyles === true) {
var baseStyle = {
"float": "left",
minHeight: "1px",
marginTop: "5px"
};
rightStyle = assign({ textAlign: "right", width: "34%" }, baseStyle);
middleStyle = assign({ textAlign: "center", width: "33%" }, baseStyle);
leftStyle = assign({ width: "33%" }, baseStyle);
}
var options = [];
for (var i = 1; i <= this.props.maxPage; i++) {
options.push(React.createElement('option', { value: i, key: i }, i));
}
return React.createElement('div', { style: this.props.useGriddleStyles ? { minHeight: "35px" } : null }, React.createElement('div', { className: this.props.previousClassName, style: leftStyle }, previous), React.createElement('div', { className: 'griddle-page', style: middleStyle }, React.createElement('select', { value: this.props.currentPage + 1, onChange: this.pageChange }, options), ' / ', this.props.maxPage), React.createElement('div', { className: this.props.nextClassName, style: rightStyle }, next));
}
});
module.exports = GridPagination;