mirror of
https://github.com/ToolJet/ToolJet
synced 2026-05-14 20:48:25 +00:00
79 lines
1.9 KiB
JavaScript
79 lines
1.9 KiB
JavaScript
import React, { useState, useEffect } from 'react';
|
|
|
|
export const Pagination = function Pagination({
|
|
onPageIndexChanged,
|
|
serverSide,
|
|
autoGotoPage,
|
|
autoCanNextPage,
|
|
autoPageCount,
|
|
autoPageOptions
|
|
}) {
|
|
const [pageIndex, setPageIndex] = useState(1);
|
|
const [pageCount, setPageCount] = useState(autoPageCount);
|
|
|
|
useEffect(() => {
|
|
setPageCount(autoPageCount);
|
|
}, [autoPageCount]);
|
|
|
|
function gotoPage(page) {
|
|
setPageIndex(page);
|
|
onPageIndexChanged(page);
|
|
if (!serverSide) {
|
|
autoGotoPage(page - 1);
|
|
}
|
|
}
|
|
|
|
function goToNextPage() {
|
|
gotoPage(pageIndex + 1);
|
|
}
|
|
|
|
function goToPreviousPage() {
|
|
gotoPage(pageIndex - 1);
|
|
}
|
|
|
|
return (
|
|
<div className="pagination">
|
|
{!serverSide
|
|
&& <button className="btn btn-sm btn-light mx-2" onClick={() => gotoPage(1)}>
|
|
{'<<'}
|
|
</button>
|
|
}
|
|
<button
|
|
className="btn btn-light btn-sm"
|
|
onClick={() => goToPreviousPage()}
|
|
disabled={pageIndex === 1}
|
|
>
|
|
{'<'}
|
|
</button>{' '}
|
|
<small className="p-1 mx-2">
|
|
|
|
{serverSide &&
|
|
<strong>
|
|
{pageIndex}
|
|
</strong>
|
|
}
|
|
{!serverSide &&
|
|
<strong>
|
|
{pageIndex} of {autoPageOptions.length}
|
|
</strong>
|
|
}
|
|
</small>
|
|
<button
|
|
className="btn btn-light btn-sm"
|
|
onClick={() => goToNextPage()}
|
|
disabled={!autoCanNextPage && !serverSide}
|
|
>
|
|
{'>'}
|
|
</button>{' '}
|
|
|
|
{!serverSide
|
|
&& <button
|
|
className="btn btn-light btn-sm mx-2"
|
|
onClick={() => gotoPage(pageCount)}
|
|
>
|
|
{'>>'}
|
|
</button>
|
|
}
|
|
</div>
|
|
);
|
|
};
|