mirror of
				https://github.com/langgenius/dify.git
				synced 2025-11-04 04:43:09 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			53 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
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
 |