1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- import type { FC } from 'react'
- import React from 'react'
- import { Pagination } from 'react-headless-pagination'
- import { ArrowLeftIcon, ArrowRightIcon } from '@heroicons/react/24/outline'
- import { useTranslation } from 'react-i18next'
- import s from './style.module.css'
- type Props = {
- current: number
- onChange: (cur: number) => void
- total: number
- limit?: number
- }
- const CustomizedPagination: FC<Props> = ({ current, onChange, total, limit = 10 }) => {
- const { t } = useTranslation()
- const totalPages = Math.ceil(total / limit)
- return (
- <Pagination
- className="flex items-center w-full h-10 text-sm select-none mt-8"
- currentPage={current}
- edgePageCount={2}
- middlePagesSiblingCount={1}
- setCurrentPage={onChange}
- totalPages={totalPages}
- truncableClassName="w-8 px-0.5 text-center"
- truncableText="..."
- >
- <Pagination.PrevButton
- disabled={current === 0}
- className={`flex items-center mr-2 text-gray-500 focus:outline-none ${current === 0 ? 'cursor-not-allowed opacity-50' : 'cursor-pointer hover:text-gray-600'}`} >
- <ArrowLeftIcon className="mr-3 h-3 w-3" />
- {t('appLog.table.pagination.previous')}
- </Pagination.PrevButton>
- <div className={`flex items-center justify-center flex-grow ${s.pagination}`}>
- <Pagination.PageButton
- activeClassName="bg-primary-50 text-primary-600"
- className="flex items-center justify-center h-8 w-8 rounded-lg cursor-pointer"
- inactiveClassName="text-gray-500"
- />
- </div>
- <Pagination.NextButton
- disabled={current === totalPages - 1}
- className={`flex items-center mr-2 text-gray-500 focus:outline-none ${current === totalPages - 1 ? 'cursor-not-allowed opacity-50' : 'cursor-pointer hover:text-gray-600'}`} >
- {t('appLog.table.pagination.next')}
- <ArrowRightIcon className="ml-3 h-3 w-3" />
- </Pagination.NextButton>
- </Pagination>
- )
- }
- export default CustomizedPagination
|