yqcloud-ui
Version:
An enterprise-class UI design language and React-based implementation
112 lines (104 loc) • 3.96 kB
JavaScript
import _extends from 'babel-runtime/helpers/extends';
import _defineProperty from 'babel-runtime/helpers/defineProperty';
import _classCallCheck from 'babel-runtime/helpers/classCallCheck';
import _createClass from 'babel-runtime/helpers/createClass';
import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';
import _inherits from 'babel-runtime/helpers/inherits';
var __rest = this && this.__rest || function (s, e) {
var t = {};
for (var p in s) {
if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
}if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];
}return t;
};
import * as React from 'react';
import classNames from 'classnames';
import LocaleReceiver from '../locale-provider/LocaleReceiver';
import Select from '../select';
import MiniSelect from './MiniSelect';
import LargeSelect from './LargeSelect';
import RcPagination from '../rc-components/pagination';
import enUS from '../rc-components/pagination/locale/en_US';
import Button from '../button/button';
function getSelect(size) {
switch (size) {
case 'small':
return MiniSelect;
case 'large':
return LargeSelect;
default:
return Select;
}
}
function getIcon(type) {
switch (type) {
case 'first':
return 'first_page';
case 'last':
return 'last_page';
case 'prev':
return 'navigate_before';
case 'next':
return 'navigate_next';
default:
return;
}
}
function itemRender(page, type, item, disabled, size) {
size = size === 'middle' ? 'default' : size;
if (page !== undefined) {
if (type === 'page' || type === 'jump-prev' || type === 'jump-next') {
return React.createElement(
Button,
{ size: size, shape: 'circle' },
item
);
} else {
return React.createElement(Button, { size: size, shape: 'circle', icon: getIcon(type), disabled: disabled });
}
}
}
var Pagination = function (_React$Component) {
_inherits(Pagination, _React$Component);
function Pagination() {
_classCallCheck(this, Pagination);
var _this = _possibleConstructorReturn(this, (Pagination.__proto__ || Object.getPrototypeOf(Pagination)).apply(this, arguments));
_this.renderPagination = function (locale) {
var _a = _this.props,
className = _a.className,
size = _a.size,
prefixCls = _a.prefixCls,
restProps = __rest(_a, ["className", "size", "prefixCls"]);
return React.createElement(RcPagination, _extends({}, restProps, { prefixCls: prefixCls, size: size, className: classNames(className, _defineProperty({}, prefixCls + '-' + size, size)), selectComponentClass: getSelect(size), locale: locale }));
};
return _this;
}
_createClass(Pagination, [{
key: 'render',
value: function render() {
return React.createElement(
LocaleReceiver,
{ componentName: 'Pagination', defaultLocale: enUS },
this.renderPagination
);
}
}]);
return Pagination;
}(React.Component);
export default Pagination;
Pagination.defaultProps = {
prefixCls: 'ant-pagination',
selectPrefixCls: 'ant-select',
showSizeChanger: true,
showSizeChangerLabel: true,
tiny: true,
pageSizeOptions: ['10', '30', '50', '100', '200'],
showTotal: function showTotal(total, range) {
return range[0] + ' - ' + range[1] + ' / ' + total;
},
sizeChangerOptionText: function sizeChangerOptionText(value) {
return value;
},
itemRender: itemRender
};