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} )} ); };