zent
Version:
一套前端设计语言和基于React的实现
196 lines (158 loc) • 7.37 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports['default'] = undefined;
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _class, _temp2;
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _CorePagination = require('./modules/CorePagination');
var _CorePagination2 = _interopRequireDefault(_CorePagination);
var _Prefix = require('./modules/Prefix');
var _Prefix2 = _interopRequireDefault(_Prefix);
var _isEqual = require('zent-utils/lodash/isEqual');
var _isEqual2 = _interopRequireDefault(_isEqual);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var number = _react.PropTypes.number,
func = _react.PropTypes.func,
string = _react.PropTypes.string,
oneOfType = _react.PropTypes.oneOfType;
var Pagination = (_temp2 = _class = function (_Component) {
_inherits(Pagination, _Component);
function Pagination() {
var _ref;
var _temp, _this, _ret;
_classCallCheck(this, Pagination);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Pagination.__proto__ || Object.getPrototypeOf(Pagination)).call.apply(_ref, [this].concat(args))), _this), _this.state = {
currentPageSize: _this.getCurrentPageSize(_this.parsePageSize(_this.props.pageSize))
}, _this.setPageSize = function (num) {
_this.setState({
currentPageSize: parseInt(num, 10)
});
}, _temp), _possibleConstructorReturn(_this, _ret);
}
// 为了能本地动态修改每页个数,得自己缓存pageSize了
_createClass(Pagination, [{
key: 'getCurrentPageSize',
/**
* [getCurrentPageSize description]
* @method getCurrentPageSize
* @param {[Array]} ps [从parsePageSize返回的标准数组]
* @return {[Number]} [返回currentPageSize的数字值]
*/
value: function getCurrentPageSize(ps) {
for (var i = 0, len = ps.length; i < len; i++) {
if (ps[i].isCurrent) {
return ps[i].value;
}
}
throw new Error('pageSize \u6570\u636E\u6709\u9519\u8BEF ' + ps);
}
}, {
key: 'parsePageSize',
value: function parsePageSize(pageSize) {
var ps = void 0;
if (typeof pageSize === 'number') {
ps = [{
value: pageSize,
isCurrent: true
}];
} else {
var hasCurrent = void 0;
ps = pageSize.map(function (item) {
var tmp = void 0;
if (typeof item === 'number') {
tmp = {
value: item
};
} else {
tmp = item;
if (tmp.isCurrent) {
hasCurrent = true;
}
}
return tmp;
});
if (!hasCurrent) {
ps[0].isCurrent = true;
}
}
return ps;
}
}, {
key: 'componentWillReceiveProps',
value: function componentWillReceiveProps(nextProps) {
if (!(0, _isEqual2['default'])(this.props.pageSize, nextProps.pageSize)) {
var pageSize = this.parsePageSize(nextProps.pageSize);
var currentPageSize = this.getCurrentPageSize(pageSize);
this.setState({
currentPageSize: currentPageSize
});
}
}
}, {
key: 'render',
value: function render() {
// 如果传入的current小于1则进行修改
var _props = this.props,
totalItem = _props.totalItem,
current = _props.current,
pageSize = _props.pageSize,
maxPageToShow = _props.maxPageToShow;
pageSize = this.parsePageSize(pageSize);
var currentPageSize = this.state.currentPageSize;
var totalPage = Math.ceil(totalItem / currentPageSize);
current = current > 1 ? current : 1; // 最小值限定
current = current > totalPage ? totalPage : current; // 最大值限定
return _react2['default'].createElement(
'div',
{ className: this.props.prefix + '-pagination ' + this.props.className },
_react2['default'].createElement(_Prefix2['default'], { pageSize: pageSize, currentPageSize: currentPageSize, totalItem: totalItem, setPageSize: this.setPageSize }),
totalPage > 1 && _react2['default'].createElement(_CorePagination2['default'], { maxPageToShow: maxPageToShow, current: current, total: totalPage, onChange: this.props.onChange || function () {} })
);
}
}]);
return Pagination;
}(_react.Component), _class.propTypes = {
className: string,
prefix: string,
current: number,
totalItem: number,
maxPageToShow: oneOfType([number, null]),
pageSize: function pageSize(conf) {
var pageSize = conf.pageSize;
if (typeof pageSize === 'number') {
if (pageSize < 0) {
return new Error('pageSize必须大等于0');
}
} else if (Array.isArray(pageSize)) {
var isAllNumber = void 0;
if (pageSize.length === 0) {
return new Error('pageSize的长度必须大于0');
}
isAllNumber = pageSize.every(function (item) {
return typeof item === 'number' || (typeof item === 'undefined' ? 'undefined' : _typeof(item)) === 'object';
});
if (!isAllNumber) {
return new Error('pageSize每一项必须是数字或对象');
}
} else {
return new Error('pageSize只能是数字或数组');
}
},
onChange: func
}, _class.defaultProps = {
prefix: 'zent',
pageSize: 10,
className: ''
}, _temp2);
exports['default'] = Pagination;
module.exports = exports['default'];
;