aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/Pagination/Pagination.tsx
diff options
context:
space:
mode:
authorArmand Philippot <git@armandphilippot.com>2022-04-29 12:13:34 +0200
committerArmand Philippot <git@armandphilippot.com>2022-04-29 18:30:05 +0200
commit7e16f500cb7bc0cfd8bafbf6bb1555704f771231 (patch)
treebfc2b4a475cb06a787e2c4bdf284165644e82952 /src/components/Pagination/Pagination.tsx
parent5324664e87bedfaa01ba62c0c847ef5b861e69b3 (diff)
chore: remove old pages, components, helpers and types
Since I'm using new components, I will also rewrite the GraphQL queries so it is easier to start from scratch.
Diffstat (limited to 'src/components/Pagination/Pagination.tsx')
-rw-r--r--src/components/Pagination/Pagination.tsx136
1 files changed, 0 insertions, 136 deletions
diff --git a/src/components/Pagination/Pagination.tsx b/src/components/Pagination/Pagination.tsx
deleted file mode 100644
index 55c366a..0000000
--- a/src/components/Pagination/Pagination.tsx
+++ /dev/null
@@ -1,136 +0,0 @@
-import { settings } from '@utils/config';
-import Link from 'next/link';
-import { useRouter } from 'next/router';
-import { useIntl } from 'react-intl';
-import styles from './Pagination.module.scss';
-
-const Pagination = ({ baseUrl, total }: { baseUrl: string; total: number }) => {
- const intl = useIntl();
- const { asPath } = useRouter();
- const totalPages = Math.floor(total / settings.postsPerPage);
- const currentPage = asPath.includes('/page/')
- ? Number(asPath.split(`${baseUrl}/page/`)[1])
- : 1;
- const hasPreviousPage = currentPage !== 1;
- const hasNextPage = currentPage !== totalPages;
-
- const getPreviousPageItem = () => {
- return (
- <li className={styles.item}>
- <Link href={`${baseUrl}/page/${currentPage - 1}`}>
- <a className={styles.link}>
- {intl.formatMessage(
- {
- defaultMessage: '{icon} Previous page',
- description: 'Pagination: previous page link',
- id: 'aMFqPH',
- },
- { icon: '←' }
- )}
- </a>
- </Link>
- </li>
- );
- };
-
- const getNextPageItem = () => {
- return (
- <li className={styles.item}>
- <Link href={`${baseUrl}/page/${currentPage + 1}`}>
- <a className={styles.link}>
- {intl.formatMessage(
- {
- defaultMessage: 'Next page {icon}',
- description: 'Pagination: Next page link',
- id: 'R4yaW6',
- },
- { icon: '→' }
- )}
- </a>
- </Link>
- </li>
- );
- };
-
- const getPages = () => {
- const pages = [];
- for (let i = 1; i <= totalPages; i++) {
- if (i === currentPage) {
- pages.push({
- id: `page-${i}`,
- link: (
- <span className={`${styles.link} ${styles['link--current']}`}>
- {intl.formatMessage(
- {
- defaultMessage: '<a11y>Page </a11y>{number}',
- description: 'Pagination: page number',
- id: 'TSXPzr',
- },
- {
- number: i,
- a11y: (chunks: string) => (
- <span className="screen-reader-text">{chunks}</span>
- ),
- }
- )}
- </span>
- ),
- });
- } else {
- pages.push({
- id: `page-${i}`,
- link: (
- <Link href={`${baseUrl}/page/${i}`}>
- <a className={styles.link}>
- {intl.formatMessage(
- {
- defaultMessage: '<a11y>Page </a11y>{number}',
- description: 'Pagination: page number',
- id: 'TSXPzr',
- },
- {
- number: i,
- a11y: (chunks: string) => (
- <span className="screen-reader-text">{chunks}</span>
- ),
- }
- )}
- </a>
- </Link>
- ),
- });
- }
- }
-
- return pages;
- };
-
- const getItems = () => {
- const pages = getPages();
-
- return pages.map((page) => (
- <li key={page.id} className={styles.item}>
- {page.link}
- </li>
- ));
- };
-
- return (
- <nav className={styles.wrapper} aria-labelledby="pagination-title">
- <h2 id="pagination-title" className="screen-reader-text">
- {intl.formatMessage({
- defaultMessage: 'Pagination',
- description: 'Pagination: pagination title',
- id: 'BAkq7J',
- })}
- </h2>
- <ul className={styles.list}>
- {hasPreviousPage && getPreviousPageItem()}
- {getItems()}
- {hasNextPage && getNextPageItem()}
- </ul>
- </nav>
- );
-};
-
-export default Pagination;