Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 11938 | Rev 15501 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |

import React from 'react'
import styled from 'styled-components'
import { Pagination } from 'react-bootstrap'

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 = true }) => {

        const currentPage = currentActivePage
        const StyledPagination = isRow ? StyledRowPagination : StyledDefaultPagination
        // const pages = 10;
        const nextPages = []
        const previousPages = []
        const maxPages = 5 > pages ? pages : 5

        const generateCurrentPages = () => {
                let isPreviousOrNext = false
                let pagesCont = 1
                let nextPage = currentPage + 1
                let previousPage = currentPage - 1
                do {
                        if (isPreviousOrNext) {
                                // nextPage
                                if (nextPage <= pages) {
                                        nextPages.push(nextPage)
                                        nextPage++
                                        pagesCont++
                                }
                                isPreviousOrNext = !isPreviousOrNext
                        } else {
                                // previousPage
                                if (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.Prev
                                disabled={currentPage - 1 <= 0}
                                onClick={previousPageHandler}
                        />
                        {previousPages.map((previousPage) =>
                                <Pagination.Item
                                        key={previousPage}
                                        onClick={() => onClickHandler(previousPage)}
                                >
                                        {previousPage}
                                </Pagination.Item>
                        )}
                        <Pagination.Item active>{currentPage}</Pagination.Item>
                        {nextPages.map((nextPage) =>
                                <Pagination.Item
                                        key={nextPage}
                                        onClick={() => onClickHandler(nextPage)}
                                >
                                        {nextPage}
                                </Pagination.Item>
                        )}
                        <Pagination.Next
                                onClick={nextPageHandler}
                                disabled={currentPage + 1 > pages}
                        />
                </StyledPagination>
        )
}

export default PaginationComponent