@cimpress/react-components
Version:
React components to support the MCP styleguide
99 lines (94 loc) • 3.36 kB
JavaScript
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
import { css, cx } from '@emotion/css';
import React from 'react';
import ReactPaginate from 'react-paginate';
import cvar from './theme/cvar';
import { useFeatureFlags } from './FeatureFlags';
const containerCss = css `
display: inline-block;
padding-left: 0;
margin: ${cvar('spacing-16')} 0;
border-radius: ${cvar('spacing-2')};
> li {
display: inline;
> a {
position: relative;
float: left;
padding: ${cvar('spacing-16')} 20px;
line-height: 1.286;
text-decoration: none;
color: ${cvar('color-button-primary')};
background-color: ${cvar('color-background')};
border: 1px solid ${cvar('color-border-default')};
margin-left: -1px;
cursor: pointer;
&:focus {
outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px;
}
}
&:first-child {
> a {
margin-left: 0;
border-top-left-radius: ${cvar('spacing-2')};
border-bottom-left-radius: ${cvar('spacing-2')};
}
}
&:last-child {
> a {
border-top-right-radius: ${cvar('spacing-2')};
border-bottom-right-radius: ${cvar('spacing-2')};
}
}
}
> li > a {
&:hover,
&:focus {
z-index: 2;
color: ${cvar('color-button-primary')};
background-color: ${cvar('color-hover')};
border-color: ${cvar('color-border-default')};
}
}
> .active > a {
&,
&:hover,
&:focus {
z-index: 3;
color: ${cvar('color-text-default')};
background-color: ${cvar('color-hover')};
border-color: ${cvar('color-border-default')};
cursor: default;
}
}
> .disabled {
> a,
> a:hover,
> a:focus {
color: ${cvar('color-border-default')};
background-color: ${cvar('color-background')};
border-color: ${cvar('color-border-default')};
cursor: not-allowed;
}
}
`;
const noOuterMarginCss = css `
margin-top: 0;
margin-bottom: 0;
`;
export const Pagination = (_a) => {
var { className, initialPage = 0, pagesOutsideElipses = 1, pagesBetweenElipses = 3, marginPagesDisplayed, pageRangeDisplayed } = _a, rest = __rest(_a, ["className", "initialPage", "pagesOutsideElipses", "pagesBetweenElipses", "marginPagesDisplayed", "pageRangeDisplayed"]);
const { v17_noOuterSpacing } = useFeatureFlags();
return (React.createElement(ReactPaginate, Object.assign({ marginPagesDisplayed: pagesOutsideElipses, pageRangeDisplayed: pagesBetweenElipses, previousLabel: "<", nextLabel: ">", breakLabel: "...", containerClassName: cx('crc-pagination', containerCss, v17_noOuterSpacing && noOuterMarginCss, className), pageClassName: "pageNumber", activeClassName: "active pageNumber", previousClassName: "arrow", nextClassName: "arrow", breakClassName: "ellipses", initialPage: initialPage }, rest)));
};
//# sourceMappingURL=Pagination.js.map