UNPKG

@age/quantum

Version:
96 lines (83 loc) 3.37 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _ActionButton = _interopRequireDefault(require("./ActionButton")); var _Dots = _interopRequireDefault(require("./Dots")); var _PageButton = _interopRequireDefault(require("./PageButton")); var _pagination = _interopRequireDefault(require("../utils/pagination")); var _uniqId = _interopRequireDefault(require("../../shared/uniqId")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var DOT_KEY_GENERATOR = (0, _uniqId.default)('dot-'); var Desktop = function Desktop(_ref) { var activePage = _ref.activePage, handlePageClick = _ref.handlePageClick, handleHref = _ref.handleHref, prevButtonText = _ref.prevButtonText, nextButtonText = _ref.nextButtonText, totalPages = _ref.totalPages, activePageAriaLabel = _ref.activePageAriaLabel, pageAriaLabel = _ref.pageAriaLabel, tabIndex = _ref.tabIndex, followOnlyFirstPage = _ref.followOnlyFirstPage; return _react.default.createElement(_react.default.Fragment, null, _react.default.createElement(_ActionButton.default, { tabIndex: tabIndex, "aria-disabled": activePage === 1, onClick: handlePageClick(activePage - 1), href: handleHref(activePage - 1), rel: followOnlyFirstPage && activePage > 2 ? 'nofollow' : undefined }, prevButtonText), (0, _pagination.default)({ totalPages: totalPages, activePage: activePage }).map(function (page) { if (page === '...') { return _react.default.createElement(_Dots.default, { key: DOT_KEY_GENERATOR.next().value }); } return _react.default.createElement(_PageButton.default, { tabIndex: tabIndex, "aria-current": activePage === page ? 'page' : false, "aria-label": "".concat(activePage === page ? "".concat(activePageAriaLabel, ", ") : '').concat(pageAriaLabel, " ").concat(page), key: page, active: activePage === page, onClick: handlePageClick(page), href: handleHref(page), rel: followOnlyFirstPage && page > 1 ? 'nofollow' : undefined }, page); }), _react.default.createElement(_ActionButton.default, { tabIndex: tabIndex, "aria-disabled": activePage === totalPages, onClick: handlePageClick(activePage + 1), href: handleHref(activePage + 1), rel: followOnlyFirstPage ? 'nofollow' : undefined }, nextButtonText)); }; Desktop.propTypes = { tabIndex: _propTypes.default.number, activePage: _propTypes.default.number, activePageAriaLabel: _propTypes.default.string, handlePageClick: _propTypes.default.func, handleHref: _propTypes.default.func, totalPages: _propTypes.default.number.isRequired, prevButtonText: _propTypes.default.string, nextButtonText: _propTypes.default.string, pageAriaLabel: _propTypes.default.string, followOnlyFirstPage: _propTypes.default.bool }; Desktop.defaultProps = { tabIndex: 0, activePage: 1, activePageAriaLabel: 'Current Page', nextButtonText: 'Next', pageAriaLabel: 'Page', handleHref: undefined, prevButtonText: 'Previous', handlePageClick: undefined, followOnlyFirstPage: false }; var _default = Desktop; exports.default = _default;