@age/quantum
Version:
Catho react components
96 lines (83 loc) • 3.37 kB
JavaScript
"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;