@kiwicom/orbit-components
Version:
Orbit-components is a React component library which provides developers with the easiest possible way of building Kiwi.com’s products.
118 lines (100 loc) • 4.29 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
exports.__esModule = true;
exports.default = void 0;
var React = _interopRequireWildcard(require("react"));
var _useMediaQuery = _interopRequireDefault(require("../hooks/useMediaQuery"));
var _ButtonLink = _interopRequireDefault(require("../ButtonLink"));
var _Stack = _interopRequireDefault(require("../Stack"));
var _ChevronLeft = _interopRequireDefault(require("../icons/ChevronLeft"));
var _ChevronRight = _interopRequireDefault(require("../icons/ChevronRight"));
var _consts = require("./consts");
var _Pages = _interopRequireDefault(require("./components/Pages"));
var _CompactPages = _interopRequireDefault(require("./components/CompactPages"));
var _ActiveButton = _interopRequireDefault(require("./components/ActiveButton"));
var _Translate = _interopRequireDefault(require("../Translate"));
var _useTranslate = _interopRequireDefault(require("../hooks/useTranslate"));
const handlePageChange = (onPageChange, pageCount) => nextPageIndex => {
if (onPageChange && nextPageIndex <= pageCount && nextPageIndex >= 0) {
onPageChange(nextPageIndex);
}
};
const Pagination = ({
pageCount,
selectedPage = 1,
onPageChange,
dataTest,
hideLabels = true,
size = _consts.SIZES.NORMAL
}) => {
const pageChanged = handlePageChange(onPageChange, pageCount);
const {
isTablet
} = (0, _useMediaQuery.default)();
const translate = (0, _useTranslate.default)();
return /*#__PURE__*/React.createElement(_Stack.default, {
spacing: "XXSmall",
align: "center",
grow: false,
shrink: true,
dataTest: dataTest,
basis: "auto"
}, !isTablet ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_ButtonLink.default, {
onClick: () => pageChanged(selectedPage - 1),
iconLeft: /*#__PURE__*/React.createElement(_ChevronLeft.default, null),
type: "secondary",
title: translate("pagination_label_prev"),
size: size,
disabled: selectedPage <= 1
}), /*#__PURE__*/React.createElement(_ActiveButton.default, {
transparent: true,
size: size
}, translate("pagination_progress", {
number: selectedPage,
total: pageCount
})), /*#__PURE__*/React.createElement(_ButtonLink.default, {
onClick: () => pageChanged(selectedPage + 1),
iconLeft: /*#__PURE__*/React.createElement(_ChevronRight.default, null),
type: "secondary",
title: translate("pagination_label_next"),
size: size,
disabled: pageCount <= selectedPage
})) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_ButtonLink.default, {
onClick: () => pageChanged(selectedPage - 1),
iconLeft: /*#__PURE__*/React.createElement(_ChevronLeft.default, null),
type: "secondary",
title: hideLabels ? translate("pagination_label_prev") : undefined,
size: size,
disabled: selectedPage <= 1
}, !hideLabels && /*#__PURE__*/React.createElement(_Translate.default, {
tKey: "pagination_label_prev"
})), /*#__PURE__*/React.createElement(_Stack.default, {
inline: true,
grow: false,
spacing: "XXSmall",
align: "center"
}, pageCount <= _consts.MAXIMUM_PAGES ? /*#__PURE__*/React.createElement(_Pages.default, {
pageCount: pageCount,
selectedPage: selectedPage,
onPageChange: onPageChange,
size: size
}) : /*#__PURE__*/React.createElement(_CompactPages.default, {
pageCount: pageCount,
selectedPage: selectedPage,
onPageChange: onPageChange,
size: size
})), /*#__PURE__*/React.createElement(_ButtonLink.default, {
onClick: () => pageChanged(selectedPage + 1),
iconRight: !hideLabels && /*#__PURE__*/React.createElement(_ChevronRight.default, null),
iconLeft: hideLabels && /*#__PURE__*/React.createElement(_ChevronRight.default, null),
type: "secondary",
title: hideLabels ? translate("pagination_label_next") : undefined,
size: size,
disabled: pageCount <= selectedPage
}, !hideLabels && /*#__PURE__*/React.createElement(_Translate.default, {
tKey: "pagination_label_next"
}))));
};
var _default = Pagination;
exports.default = _default;