d2-ui
Version:
92 lines (82 loc) • 3.23 kB
JavaScript
import React from 'react';
import classes from 'classnames';
import Translate from '../i18n/Translate.mixin';
import { config } from 'd2/lib/d2';
var noop = function noop() {};
config.i18n.strings.add('of_page');
var Pagination = React.createClass({
displayName: 'Pagination',
propTypes: {
hasPreviousPage: React.PropTypes.func,
hasNextPage: React.PropTypes.func,
onPreviousPageClick: React.PropTypes.func,
onNextPageClick: React.PropTypes.func,
total: React.PropTypes.number,
currentlyShown: React.PropTypes.oneOfType([React.PropTypes.string, React.PropTypes.number])
},
mixins: [Translate],
getDefaultProps: function getDefaultProps() {
return {
hasPreviousPage: noop,
hasNextPage: noop,
onPreviousPageClick: noop,
onNextPageClick: noop,
total: 0,
currentlyShown: 0
};
},
render: function render() {
var _props = this.props;
var hasPreviousPage = _props.hasPreviousPage;
var hasNextPage = _props.hasNextPage;
var onPreviousPageClick = _props.onPreviousPageClick;
var onNextPageClick = _props.onNextPageClick;
var currentlyShown = _props.currentlyShown;
var total = _props.total;
var pagerButtonClasses = ['material-icons', 'waves-effect'];
var previousPageClasses = classes(pagerButtonClasses, { 'data-table-pager--previous-page__disabled': !hasPreviousPage() });
var nextPageClasses = classes(pagerButtonClasses, { 'data-table-pager--next-page__disabled': !hasNextPage() });
return React.createElement(
'div',
{ className: 'data-table-pager' },
React.createElement(
'ul',
{ className: 'data-table-pager--buttons' },
total ? React.createElement(
'li',
{ className: 'data-table-pager--page-info' },
React.createElement(
'span',
null,
currentlyShown,
' ',
'' + this.getTranslation('of_page'),
' ',
total
)
) : '',
React.createElement(
'li',
{ className: 'data-table-pager--previous-page' },
React.createElement(
'i',
{ className: previousPageClasses,
onClick: hasPreviousPage() ? onPreviousPageClick : noop },
'navigate_before'
)
),
React.createElement(
'li',
{ className: 'data-table-pager--next-page' },
React.createElement(
'i',
{ className: nextPageClasses,
onClick: hasNextPage() ? onNextPageClick : noop },
'navigate_next'
)
)
)
);
}
});
export default Pagination;