import { View, Text, GestureResponderEvent } from "react-native";
import { IconButton } from "react-native-paper";
import { useAppSelector } from "@/store/hooks";
import { selectIsMobile } from "@/store/screen/screenSizeSlice";
interface TablePaginationProps {
page: number;
itemsPerPage: number;
totalItems: number;
from: number;
to: number;
onPageChange: (page: number) => void;
onItemsPerPageButtonPress: (event: GestureResponderEvent) => void;
}
export const TablePagination = ({
page,
itemsPerPage,
totalItems,
from,
to,
onPageChange,
onItemsPerPageButtonPress,
}: TablePaginationProps) => {
const isMobile = useAppSelector(selectIsMobile);
const maxPage = Math.ceil(totalItems / itemsPerPage) - 1;
const desktopNavigationButtons = (
<>
{`${from}-${to} of ${totalItems}`}
onPageChange(0)}
/>
onPageChange(Math.max(0, page - 1))}
/>
= maxPage}
onPress={() => onPageChange(Math.min(maxPage, page + 1))}
/>
= maxPage}
onPress={() => onPageChange(maxPage)}
/>
>
);
const mobileNavigationButtons = (
<>
onPageChange(0)}
/>
onPageChange(Math.max(0, page - 1))}
/>
= maxPage}
onPress={() => onPageChange(Math.min(maxPage, page + 1))}
/>
= maxPage}
onPress={() => onPageChange(maxPage)}
/>
>
);
const itemsPerPageControls = (
<>
{`${itemsPerPage} per page`}
>
);
return (
{isMobile ? (
{mobileNavigationButtons}
{`${from}-${to} / ${totalItems}`}
{`${itemsPerPage}/page`}
) : (
{desktopNavigationButtons}
{itemsPerPageControls}
)}
);
};