Pagination.js 2.41 KB
Newer Older
Kim, Subin's avatar
Kim, Subin committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import PaginationBoot from "./PaginationBoot";

const Pagination = ({ totalPages, activePage, prevPage, nextPage, paginate }) => {
    const pageWidth = 5
    const section = Math.floor((activePage - 1) / pageWidth)

    let startPage = section * pageWidth + 1
    if (startPage < 1) startPage = 1

    let endPage = startPage + pageWidth - 1
    if (endPage > totalPages) endPage = totalPages

    const pageNumbers = []
    for (let i = startPage; i <= endPage; i++) {
        pageNumbers.push(i);
    }

Kim, Subin's avatar
Kim, Subin committed
18
    return (
Kim, Subin's avatar
Kim, Subin committed
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
        <PaginationBoot>
            <PaginationBoot.First
                disabled={activePage <= 1}
                onClick={() => paginate(1)}
            />
            <PaginationBoot.Prev onClick={prevPage} disabled={activePage <= 1} />
            {pageNumbers.map((number, index) => <PaginationBoot.Item
                key={index}
                active={activePage === number}
                onClick={() => {
                    console.log("number", number);
                    paginate(number);
                }}
            >
                {number}
            </PaginationBoot.Item>
            )}
            <PaginationBoot.Next
                onClick={nextPage}
                disabled={activePage >= totalPages}
            />
            <PaginationBoot.Last
                disabled={activePage >= totalPages}
                onClick={() => paginate(totalPages)}
            />
        </PaginationBoot>
Kim, Subin's avatar
Kim, Subin committed
45
    )
Kim, Subin's avatar
Kim, Subin committed
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65

    // return (
    //     <nav className="col-12 col-md-4 offset-md-4 my-2" aria-label="Page navigation">
    //         <ul className="pagination justify-content-center mb-0">
    //             <li className="page-item">
    //                 <a className="page-link" href="#" aria-label="Previous">
    //                     <span aria-hidden="true">&laquo;</span>
    //                 </a>
    //             </li>
    //             <li className="page-item"><a className="page-link" href="#">1</a></li>
    //             <li className="page-item"><a className="page-link" href="#">2</a></li>
    //             <li className="page-item"><a className="page-link" href="#">3</a></li>
    //             <li className="page-item">
    //                 <a className="page-link" href="#" aria-label="Next">
    //                     <span aria-hidden="true">&raquo;</span>
    //                 </a>
    //             </li>
    //         </ul>
    //     </nav>
    // )
Kim, Subin's avatar
Kim, Subin committed
66
67
68
}

export default Pagination