import * as React from 'react'; import { useTranslations } from '@shoptet/ui-core-web'; import type { AnchorProps } from '../../../Anchor/Anchor'; import { Button } from '../../../Button/Button'; import { PageAnchor } from '../PageAnchor/PageAnchor'; import { dictionary } from './dictionary'; export interface PagesProps { /** * Total number of pages. * * @default undefined */ pagesTotal: number; /** * Current page number. * * @default undefined */ pageCurrent: number; /** * Url of the previous page. If null or undefined, the button is not displayed. * * @default undefined */ previousPageUrl?: string | null; /** * Url of the next page. If null or undefined, the button is not displayed. * * @default undefined */ nextPageUrl?: string | null; /** * Getter for url of the page. * * @default undefined */ getLinkProps: (page: number | string) => Pick; } export const Pages: React.FC = ({ pagesTotal, pageCurrent, previousPageUrl, nextPageUrl, getLinkProps, ...rest }) => { const translations = useTranslations(dictionary); return (
{previousPageUrl && ( )} {pageCurrent != 1 && } {pageCurrent > 3 && '...'} {pageCurrent - 2 > 1 && } {pageCurrent - 1 > 1 && } {pagesTotal > 1 && } {pageCurrent + 1 < pagesTotal && } {pageCurrent + 2 < pagesTotal && } {pagesTotal > pageCurrent + 2 && ' ... '} {pagesTotal != pageCurrent && } {nextPageUrl && }
); };