UNPKG

@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.

116 lines (111 loc) 4.26 kB
import * as React from "react"; import styled from "styled-components"; import ButtonLink from "../ButtonLink"; import Stack from "../Stack"; import Hide from "../Hide"; 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"; var handlePageChange = function handlePageChange(onPageChange, pageCount) { return function (nextPageIndex) { if (onPageChange && nextPageIndex <= pageCount && nextPageIndex >= 0) { onPageChange(nextPageIndex); } }; }; // Fix this with updated stack var StyledNav = styled.nav.withConfig({ displayName: "Pagination__StyledNav", componentId: "n5hqxf-0" })(["width:auto;"]); 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); return /*#__PURE__*/React.createElement(Stack, { direction: "row", spacing: "tight", align: "center", grow: false, shrink: true, dataTest: dataTest, as: StyledNav }, /*#__PURE__*/React.createElement(Hide, { on: ["smallMobile", "mediumMobile", "largeMobile"] }, /*#__PURE__*/React.createElement(ButtonLink, { onClick: function onClick() { return pageChanged(selectedPage - 1); }, iconLeft: /*#__PURE__*/React.createElement(ChevronLeft, null), type: "secondary", size: size, disabled: selectedPage <= 1 }, !hideLabels && /*#__PURE__*/React.createElement(Translate, { tKey: "pagination_label_prev" }))), /*#__PURE__*/React.createElement(Hide, { on: ["tablet", "desktop", "largeDesktop"] }, /*#__PURE__*/React.createElement(ButtonLink, { onClick: function onClick() { return pageChanged(selectedPage - 1); }, iconLeft: /*#__PURE__*/React.createElement(ChevronLeft, null), type: "secondary", size: size, disabled: selectedPage <= 1 })), /*#__PURE__*/React.createElement(Hide, { on: ["smallMobile", "mediumMobile", "largeMobile"] }, /*#__PURE__*/React.createElement(Stack, { direction: "row", spacing: "tight", 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(Hide, { on: ["tablet", "desktop", "largeDesktop"] }, /*#__PURE__*/React.createElement(ActiveButton, { transparent: true, size: size }, selectedPage, " of ", pageCount)), /*#__PURE__*/React.createElement(Hide, { on: ["smallMobile", "mediumMobile", "largeMobile"] }, /*#__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", size: size, disabled: pageCount <= selectedPage }, !hideLabels && /*#__PURE__*/React.createElement(Translate, { tKey: "pagination_label_next" }))), /*#__PURE__*/React.createElement(Hide, { on: ["tablet", "desktop", "largeDesktop"] }, /*#__PURE__*/React.createElement(ButtonLink, { onClick: function onClick() { return pageChanged(selectedPage + 1); }, iconLeft: /*#__PURE__*/React.createElement(ChevronRight, null), type: "secondary", size: size, disabled: pageCount <= selectedPage }))); }; export default Pagination;