@catho/quantum
Version:
Catho react components
86 lines (85 loc) • 4.1 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
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 = require("../../shared/uniqId");
var _jsxRuntime = require("react/jsx-runtime");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
var uniqId = (0, _uniqId.createUniqId)('dot-');
var Desktop = function Desktop(_ref) {
var _ref$tabIndex = _ref.tabIndex,
tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex,
_ref$activePage = _ref.activePage,
activePage = _ref$activePage === void 0 ? 1 : _ref$activePage,
_ref$activePageAriaLa = _ref.activePageAriaLabel,
activePageAriaLabel = _ref$activePageAriaLa === void 0 ? 'Current Page' : _ref$activePageAriaLa,
_ref$handlePageClick = _ref.handlePageClick,
handlePageClick = _ref$handlePageClick === void 0 ? undefined : _ref$handlePageClick,
_ref$handleHref = _ref.handleHref,
handleHref = _ref$handleHref === void 0 ? undefined : _ref$handleHref,
_ref$followOnlyFirstP = _ref.followOnlyFirstPage,
followOnlyFirstPage = _ref$followOnlyFirstP === void 0 ? false : _ref$followOnlyFirstP,
_ref$prevButtonText = _ref.prevButtonText,
prevButtonText = _ref$prevButtonText === void 0 ? 'Previous' : _ref$prevButtonText,
_ref$nextButtonText = _ref.nextButtonText,
nextButtonText = _ref$nextButtonText === void 0 ? 'Next' : _ref$nextButtonText,
_ref$pageAriaLabel = _ref.pageAriaLabel,
pageAriaLabel = _ref$pageAriaLabel === void 0 ? 'Page' : _ref$pageAriaLabel,
totalPages = _ref.totalPages,
hideLastPagination = _ref.hideLastPagination;
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_ActionButton["default"], {
tabIndex: tabIndex,
"aria-disabled": activePage === 1,
onClick: handlePageClick(activePage - 1),
href: handleHref(activePage - 1),
rel: followOnlyFirstPage && activePage > 2 ? 'nofollow' : undefined,
children: prevButtonText
}), (0, _pagination["default"])({
totalPages: totalPages,
activePage: activePage,
hideLastPagination: hideLastPagination
}).map(function (page) {
if (page === '...') {
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Dots["default"], {}, uniqId());
}
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_PageButton["default"], {
tabIndex: tabIndex,
"aria-current": activePage === page ? 'page' : false,
"aria-label": "".concat(activePage === page ? "".concat(activePageAriaLabel, ", ") : '').concat(pageAriaLabel, " ").concat(page),
active: activePage === page,
onClick: handlePageClick(page),
href: handleHref(page),
rel: followOnlyFirstPage && page > 1 ? 'nofollow' : undefined,
children: page
}, page);
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ActionButton["default"], {
tabIndex: tabIndex,
"aria-disabled": activePage === totalPages,
onClick: handlePageClick(activePage + 1),
href: handleHref(activePage + 1),
rel: followOnlyFirstPage ? 'nofollow' : undefined,
children: 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,
hideLastPagination: _propTypes["default"].bool.isRequired
};
var _default = exports["default"] = Desktop;