AutorÃa | Ultima modificación | Ver Log |
import React from 'react'import Pagination from 'react-bootstrap/Pagination'import styled from 'styled-components'const StyledDefaultPagination = styled(Pagination)`display: flex;justify-content: center;align-items: center;flex-direction: inherit !important;position: inherit !important;transform: inherit !important;`const StyledRowPagination = styled(Pagination)`display: flex;justify-content: center;align-items: center;flex-direction: initial !important;position: inherit !important;transform: inherit !important;`const PaginationComponent = ({pages = 1,currentActivePage = 1,onChangePage,isRow,}) => {const currentPage = currentActivePageconst StyledPagination = isRow ? StyledRowPagination : StyledDefaultPaginationconst nextPages = []const previousPages = []const maxPages = pages < 5 ? pages : 5const generateCurrentPages = () => {let isPreviousOrNext = falselet pagesCont = 1let nextPage = currentPage + 1let previousPage = currentPage - 1do {if (isPreviousOrNext) {// nextPageif (nextPage <= pages) {nextPages.push(nextPage)nextPage++pagesCont++}isPreviousOrNext = !isPreviousOrNext} else {// previousPageif (previousPage > 0) {previousPages.unshift(previousPage)previousPage--pagesCont++}isPreviousOrNext = !isPreviousOrNext}} while (pagesCont < maxPages)}const previousPageHandler = () => {onChangePage(currentPage - 1)}const nextPageHandler = () => {onChangePage(currentPage + 1)}const onClickHandler = (pageToNavigate) => {onChangePage(pageToNavigate)}generateCurrentPages()return (<>{pages > 1 && (<StyledPagination><Pagination.Prevdisabled={currentPage - 1 <= 0}onClick={previousPageHandler}/>{previousPages.map((previousPage) => (<Pagination.Itemkey={previousPage}onClick={() => onClickHandler(previousPage)}>{previousPage}</Pagination.Item>))}<Pagination.Item active>{currentPage}</Pagination.Item>{nextPages.map((nextPage) => (<Pagination.Itemkey={nextPage}onClick={() => onClickHandler(nextPage)}>{nextPage}</Pagination.Item>))}<Pagination.NextonClick={nextPageHandler}disabled={currentPage + 1 > pages}/></StyledPagination>)}</>)}export default PaginationComponent