UNPKG

fastlion-amis

Version:

一种MIS页面生成工具

212 lines (211 loc) 9.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PaginationRenderer = void 0; var tslib_1 = require("tslib"); var react_1 = (0, tslib_1.__importDefault)(require("react")); var factory_1 = require("../factory"); var icons_1 = require("../components/icons"); var Pagination = /** @class */ (function (_super) { (0, tslib_1.__extends)(Pagination, _super); function Pagination() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.state = { pageNum: String(_this.props.activePage) || '' }; _this.handlePageChange = function (e) { var lastPage = _this.props.lastPage; var value = e.currentTarget.value; if (/^\d+$/.test(value) && parseInt(value, 10) > lastPage) { value = String(lastPage); } _this.setState({ pageNum: value }); }; return _this; } Pagination.prototype.componentDidUpdate = function (prevProps) { var props = this.props; if (prevProps.activePage !== props.activePage) { this.setState({ pageNum: String(props.activePage) || '' }); } }; Pagination.prototype.renderSimple = function () { var _a = this.props, activePage = _a.activePage, hasNext = _a.hasNext, onPageChange = _a.onPageChange, cx = _a.classnames; return (react_1.default.createElement("ul", { className: cx('Pagination', 'Pagination--sm') }, react_1.default.createElement("li", { className: cx({ 'is-disabled': activePage < 2 }), onClick: activePage < 2 ? function (e) { return e.preventDefault(); } : function () { return onPageChange(activePage - 1); } }, react_1.default.createElement("a", null, react_1.default.createElement(icons_1.Icon, { icon: "left-arrow", className: "icon" }))), react_1.default.createElement("li", { className: cx({ 'is-disabled': !hasNext }), onClick: !hasNext ? function (e) { return e.preventDefault(); } : function () { return onPageChange(activePage + 1); } }, react_1.default.createElement("a", null, react_1.default.createElement(icons_1.Icon, { icon: "right-arrow", className: "icon" }))))); }; Pagination.prototype.renderNormal = function () { var _a = this.props, activePage = _a.activePage, lastPage = _a.lastPage, maxButtons = _a.maxButtons, onPageChange = _a.onPageChange, cx = _a.classnames, showPageInput = _a.showPageInput, className = _a.className, __ = _a.translate; var pageNum = this.state.pageNum; var pageButtons = []; var startPage; var endPage; if (activePage < (maxButtons - 1) / 2 + 2) { maxButtons = activePage + (maxButtons - 1) / 2; } if (lastPage - activePage < (maxButtons - 1) / 2 + 2) { maxButtons = lastPage - activePage + (maxButtons - 1) / 2 + 1; } if (maxButtons && maxButtons < lastPage) { startPage = Math.max(Math.min(activePage - Math.floor(maxButtons / 2), lastPage - maxButtons + 1), 1); endPage = startPage + maxButtons - 1; } else { startPage = 1; endPage = lastPage; } // 小型弹窗里面不展示具体页数字 // if (!this.props.inSmallDialog) // for (let page = startPage; page <= endPage; ++page) { // pageButtons.push( // <li // onClick={() => onPageChange(page)} // key={page} // className={cx({ // 'is-active': page === activePage // })} // > // <a role="button">{page}</a> // </li> // ); // } // if (startPage > 1) { // // 小型弹窗里面不展示具体页数字 // if (!this.props.inSmallDialog) // if (startPage > 2) { // pageButtons.unshift( // <li onClick={() => onPageChange(startPage - 1)} key="prev-ellipsis"> // <a role="button">...</a> // </li> // ); // } // // 小型弹窗里面不展示具体页数字 // if (!this.props.inSmallDialog) // pageButtons.unshift( // <li // onClick={() => onPageChange(1)} // key={1} // className={cx({ // 'is-active': 1 === activePage // })} // > // <a role="button">{1}</a> // </li> // ); // } // if (endPage < lastPage) { // // 小型弹窗里面不展示具体页数字 // if (!this.props.inSmallDialog) // if (lastPage - endPage > 1) { // pageButtons.push( // <li // className={cx('Pagination-ellipsis')} // onClick={() => onPageChange(endPage + 1)} // key="next-ellipsis" // > // <a role="button"> // <span>...</span> // </a> // </li> // ); // } // // 小型弹窗里面不展示具体页数字 // if (!this.props.inSmallDialog) // pageButtons.push( // <li // onClick={() => onPageChange(lastPage)} // key={lastPage} // className={cx({ // 'is-active': lastPage === activePage // })} // > // <a role="button">{lastPage}</a> // </li> // ); // } // Jay // const commonStyle: any = { display: 'inline-block', width: 30, height: 30, margin: '0 8px', background: '#f4f4f5', border: '1px solid #d9d9d9' } var commonStyle; if (window.screen.width > 1680) { commonStyle = { display: 'inline-block', maxHeight: 30 }; } else if (window.screen.width <= 1680 && window.screen.width > 1440) { commonStyle = { display: 'inline-block', maxHeight: 25, lineHeight: '23px', }; } else if (window.screen.width <= 1440 && window.screen.width >= 1280) { commonStyle = { display: 'inline-block', height: 20, lineHeight: '18px', }; } // window.addEventListener('resize', this.initFn) pageButtons.unshift(react_1.default.createElement("div", { className: cx('Pagination-prev', { 'is-disabled': activePage === 1 }), onClick: activePage === 1 ? function (e) { return e.preventDefault(); } : function () { return onPageChange(activePage - 1); }, key: "prev" }, react_1.default.createElement("span", { style: commonStyle }, react_1.default.createElement(icons_1.Icon, { icon: "left-arrow", className: "icon" })))); pageButtons.push(react_1.default.createElement("div", null, react_1.default.createElement("span", null, react_1.default.createElement("input", { type: "text", className: 'pagination-page-switch', onChange: this.handlePageChange, onFocus: function (e) { return e.currentTarget.select(); }, onKeyUp: function (e) { return e.keyCode == 13 && onPageChange(parseInt(e.currentTarget.value, 10)); }, value: pageNum }), react_1.default.createElement("span", null, " / ", lastPage)))); pageButtons.push(react_1.default.createElement("div", { className: cx('Pagination-next', { 'is-disabled': activePage === lastPage }), onClick: activePage === lastPage ? function (e) { return e.preventDefault(); } : function () { return onPageChange(activePage + 1); }, key: "next" }, react_1.default.createElement("span", { style: commonStyle }, react_1.default.createElement(icons_1.Icon, { icon: "right-arrow", className: "icon" })))); return (react_1.default.createElement("div", { className: cx('Pagination-wrap', className) }, react_1.default.createElement("div", { className: cx('Pagination', 'Pagination--sm') }, pageButtons))); }; Pagination.prototype.componentWillUnmount = function () { window.removeEventListener('resize', this.initFn); }; Pagination.prototype.render = function () { var builderMode = this.props.builderMode; return builderMode === 'simple' ? this.renderSimple() : this.renderNormal(); }; Pagination.defaultProps = { activePage: 1, lastPage: 1, maxButtons: 5, mode: 'normal', hasNext: false, showPageInput: false }; return Pagination; }(react_1.default.Component)); exports.default = Pagination; var PaginationRenderer = /** @class */ (function (_super) { (0, tslib_1.__extends)(PaginationRenderer, _super); function PaginationRenderer() { return _super !== null && _super.apply(this, arguments) || this; } PaginationRenderer = (0, tslib_1.__decorate)([ (0, factory_1.Renderer)({ test: /(^|\/)(?:pagination|pager)$/, name: 'pagination' }) ], PaginationRenderer); return PaginationRenderer; }(Pagination)); exports.PaginationRenderer = PaginationRenderer; //# sourceMappingURL=./renderers/Pagination.js.map