@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.
107 lines (102 loc) • 4.02 kB
JavaScript
import * as React from "react";
import useMediaQuery from "../hooks/useMediaQuery";
import ButtonLink from "../ButtonLink";
import Stack from "../Stack";
import ChevronLeft from "../icons/ChevronLeft";
import ChevronRight from "../icons/ChevronRight";
import { MAXIMUM_PAGES, SIZES } from "./consts";
import Pages from "./components/Pages";
import CompactPages from "./components/CompactPages";
import ActiveButton from "./components/ActiveButton";
import Translate from "../Translate";
import useTranslate from "../hooks/useTranslate";
var handlePageChange = function handlePageChange(onPageChange, pageCount) {
return function (nextPageIndex) {
if (onPageChange && nextPageIndex <= pageCount && nextPageIndex >= 0) {
onPageChange(nextPageIndex);
}
};
};
var Pagination = function Pagination(_ref) {
var pageCount = _ref.pageCount,
_ref$selectedPage = _ref.selectedPage,
selectedPage = _ref$selectedPage === void 0 ? 1 : _ref$selectedPage,
onPageChange = _ref.onPageChange,
dataTest = _ref.dataTest,
_ref$hideLabels = _ref.hideLabels,
hideLabels = _ref$hideLabels === void 0 ? true : _ref$hideLabels,
_ref$size = _ref.size,
size = _ref$size === void 0 ? SIZES.NORMAL : _ref$size;
var pageChanged = handlePageChange(onPageChange, pageCount);
var _useMediaQuery = useMediaQuery(),
isTablet = _useMediaQuery.isTablet;
var translate = useTranslate();
return /*#__PURE__*/React.createElement(Stack, {
spacing: "XXSmall",
align: "center",
grow: false,
shrink: true,
dataTest: dataTest,
basis: "auto"
}, !isTablet ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ButtonLink, {
onClick: function onClick() {
return pageChanged(selectedPage - 1);
},
iconLeft: /*#__PURE__*/React.createElement(ChevronLeft, null),
type: "secondary",
title: translate("pagination_label_prev"),
size: size,
disabled: selectedPage <= 1
}), /*#__PURE__*/React.createElement(ActiveButton, {
transparent: true,
size: size
}, selectedPage, " of ", pageCount), /*#__PURE__*/React.createElement(ButtonLink, {
onClick: function onClick() {
return pageChanged(selectedPage + 1);
},
iconLeft: /*#__PURE__*/React.createElement(ChevronRight, null),
type: "secondary",
title: translate("pagination_label_next"),
size: size,
disabled: pageCount <= selectedPage
})) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ButtonLink, {
onClick: function onClick() {
return pageChanged(selectedPage - 1);
},
iconLeft: /*#__PURE__*/React.createElement(ChevronLeft, null),
type: "secondary",
title: hideLabels ? translate("pagination_label_prev") : undefined,
size: size,
disabled: selectedPage <= 1
}, !hideLabels && /*#__PURE__*/React.createElement(Translate, {
tKey: "pagination_label_prev"
})), /*#__PURE__*/React.createElement(Stack, {
inline: true,
grow: false,
spacing: "XXSmall",
align: "center"
}, pageCount <= MAXIMUM_PAGES ? /*#__PURE__*/React.createElement(Pages, {
pageCount: pageCount,
selectedPage: selectedPage,
onPageChange: onPageChange,
size: size
}) : /*#__PURE__*/React.createElement(CompactPages, {
pageCount: pageCount,
selectedPage: selectedPage,
onPageChange: onPageChange,
size: size
})), /*#__PURE__*/React.createElement(ButtonLink, {
onClick: function onClick() {
return pageChanged(selectedPage + 1);
},
iconRight: !hideLabels && /*#__PURE__*/React.createElement(ChevronRight, null),
iconLeft: hideLabels && /*#__PURE__*/React.createElement(ChevronRight, null),
type: "secondary",
title: hideLabels ? translate("pagination_label_next") : undefined,
size: size,
disabled: pageCount <= selectedPage
}, !hideLabels && /*#__PURE__*/React.createElement(Translate, {
tKey: "pagination_label_next"
}))));
};
export default Pagination;