@progress/kendo-react-grid
Version:
KendoReact Grid package
89 lines • 5.02 kB
JavaScript
var __extends = (this && this.__extends) || (function () {
var extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
import * as React from 'react';
import { normalize } from './GridPagerSettings';
import { PagerNumericButtons } from './PagerNumericButtons';
import { PagerInput } from './PagerInput';
import { PagerPageSizes } from './PagerPageSizes';
import { messages, pagerFirstPage, pagerLastPage, pagerNextPage, pagerPreviousPage, pagerInfo } from '../messages';
import { registerForIntl, registerForLocalization, provideLocalizationService, provideIntlService } from '@progress/kendo-react-intl';
/**
* @hidden
*/
var Pager = /** @class */ (function (_super) {
__extends(Pager, _super);
function Pager() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.changePage = function (page, e) {
if (_this.props.pageChange && page > 0 && page <= _this.totalPages) {
_this.props.pageChange({
skip: (page - 1) * _this.props.pageSize,
take: _this.props.pageSize
}, e);
}
};
return _this;
}
Object.defineProperty(Pager.prototype, "totalPages", {
get: function () {
return Math.ceil((this.props.total || 0) / this.props.pageSize);
},
enumerable: true,
configurable: true
});
Object.defineProperty(Pager.prototype, "currentPage", {
get: function () {
return Math.floor((this.props.skip || 0) / this.props.pageSize) + 1;
},
enumerable: true,
configurable: true
});
Pager.prototype.button = function (page, className, title, icon) {
var _this = this;
return (React.createElement("a", { onClick: function (e) { e.preventDefault(); _this.changePage(page, e); }, href: "#", className: className, title: title },
React.createElement("span", { className: icon, "aria-label": title })));
};
Pager.prototype.render = function () {
var settings = normalize(this.props.settings);
var localizationService = provideLocalizationService(this);
var intlService = provideIntlService(this);
var changer = settings.type === 'numeric' ?
(React.createElement(PagerNumericButtons, { buttonCount: settings.buttonCount || 0, totalPages: this.totalPages, currentPage: this.currentPage, pageChange: this.changePage })) : (React.createElement(PagerInput, { currentPage: this.currentPage, totalPages: this.totalPages, pageChange: this.changePage }));
var first, prev, next, last;
if (settings.previousNext) {
first = this.button(1, 'k-link k-pager-nav k-pager-first' + (this.currentPage === 1 ? ' k-state-disabled' : ''), localizationService.toLanguageString(pagerFirstPage, messages[pagerFirstPage]), 'k-icon k-i-seek-w');
prev = this.button(this.currentPage - 1, 'k-link k-pager-nav' + (this.currentPage === 1 ? ' k-state-disabled' : ''), localizationService.toLanguageString(pagerPreviousPage, messages[pagerPreviousPage]), 'k-icon k-i-arrow-w');
next = this.button(this.currentPage + 1, 'k-link k-pager-nav' + (this.currentPage === this.totalPages ? ' k-state-disabled' : ''), localizationService.toLanguageString(pagerNextPage, messages[pagerNextPage]), 'k-icon k-i-arrow-e');
last = this.button(this.totalPages, 'k-link k-pager-nav k-pager-last' + (this.currentPage === this.totalPages ? ' k-state-disabled' : ''), localizationService.toLanguageString(pagerLastPage, messages[pagerLastPage]), 'k-icon k-i-seek-e');
}
var pageSizes = settings.pageSizes !== false && (React.createElement(PagerPageSizes, { pageChange: this.props.pageChange, pageSize: this.props.pageSize, pageSizes: settings.pageSizes }));
var defaultMessage = messages[pagerInfo];
var info = !settings.info ? '' : (React.createElement("div", { className: "k-pager-info k-label" }, intlService
.format(localizationService.toLanguageString(pagerInfo, defaultMessage), [
Math.min(this.props.skip + 1, this.props.total),
Math.min(this.props.skip + this.props.pageSize, this.props.total),
this.props.total
])));
return (React.createElement("div", { className: "k-pager-wrap k-grid-pager k-widget" },
first,
prev,
changer,
next,
last,
pageSizes,
info));
};
return Pager;
}(React.Component));
export { Pager };
registerForIntl(Pager);
registerForLocalization(Pager);
//# sourceMappingURL=Pager.js.map