zent
Version:
一套前端设计语言和基于React的实现
220 lines (175 loc) • 6.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _typeof2 = require('babel-runtime/helpers/typeof');
var _typeof3 = _interopRequireDefault(_typeof2);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
var _isEqual = require('lodash/isEqual');
var _isEqual2 = _interopRequireDefault(_isEqual);
var _CorePagination = require('./modules/CorePagination');
var _CorePagination2 = _interopRequireDefault(_CorePagination);
var _Prefix = require('./modules/Prefix');
var _Prefix2 = _interopRequireDefault(_Prefix);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var number = _propTypes2['default'].number,
func = _propTypes2['default'].func,
string = _propTypes2['default'].string;
var Pagination = function (_ref) {
(0, _inherits3['default'])(Pagination, _ref);
function Pagination() {
var _ref2;
var _temp, _this, _ret;
(0, _classCallCheck3['default'])(this, Pagination);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = (0, _possibleConstructorReturn3['default'])(this, (_ref2 = Pagination.__proto__ || Object.getPrototypeOf(Pagination)).call.apply(_ref2, [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), (0, _possibleConstructorReturn3['default'])(_this, _ret);
}
// 为了能本地动态修改每页个数,得自己缓存pageSize了
(0, _createClass3['default'])(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.PureComponent || _react.Component);
Pagination.propTypes = {
className: string,
prefix: string,
current: number,
totalItem: number,
maxPageToShow: number,
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' : (0, _typeof3['default'])(item)) === 'object';
});
if (!isAllNumber) {
return new Error('pageSize每一项必须是数字或对象');
}
} else {
return new Error('pageSize只能是数字或数组');
}
},
onChange: func
};
Pagination.defaultProps = {
prefix: 'zent',
pageSize: 10,
className: ''
};
exports['default'] = Pagination;