import React from 'react' import { Flex, Grid, GridItem, IconButton, Text, Portal, } from '@chakra-ui/react' import {NumberInputRoot, NumberInputField} from './ui/number-input' import { NativeSelect } from '@chakra-ui/react' import { LuChevronLeft, LuChevronRight, LuChevronsLeft, LuChevronsRight } from 'react-icons/lu' import {Tooltip} from './ui/tooltip' import { useHookstate } from '@hookstate/core' import { gameDashboardState } from '../stateManagement/gameState' import { loadingState } from '../stateManagement/loadingState' import { adminMode } from '../stateManagement/userState' import getWithFilters from '../componentUtils/getWithFilters' import { ratingState, steamRatingState } from "../stateManagement/ratingState"; import {useColorModeValue} from "./ui/color-mode"; import {useMediaQuery} from "@chakra-ui/react"; export default function Pagination() { const gamesState = useHookstate(gameDashboardState) const games = gamesState.get() const admin = useHookstate(adminMode).get() const loadedState = useHookstate(loadingState) const pageIndex = games.count.currentPage const pageSize = games.count.limit const pageCount = games.count.pages const bg = useColorModeValue('gray.50', 'transparent') const useRatingState = useHookstate(ratingState).get() const useSteamRatingState = useHookstate(steamRatingState).get() const [isSmallerThan768] = useMediaQuery(['(max-width: 768px)']) const setPageSize = async (limit: number) => await getWithFilters( gamesState, loadedState, admin, games.count.currentPage, limit, games.searchParams, games.filters, useRatingState, useSteamRatingState ) const gotoPage = async (page: number) => await getWithFilters( gamesState, loadedState, admin, page, games.count.limit, games.searchParams, games.filters, useRatingState, useSteamRatingState ) const previousPage = async () => await getWithFilters( gamesState, loadedState, admin, games.pagination.prev.page, games.count.limit, games.searchParams, games.filters, useRatingState, useSteamRatingState ) const nextPage = async () => await getWithFilters( gamesState, loadedState, admin, games.pagination.next.page, games.count.limit, games.searchParams, games.filters, useRatingState, useSteamRatingState ) return ( gotoPage(0)} disabled={pageIndex <= 1} mr={4} > Page{' '} {pageIndex} {' '} of{' '} {pageCount} {!isSmallerThan768 && Go to Page: { const page = e.value ? Number(e.value) : 1 gotoPage(page) }} > } Count Per Page: { setPageSize(Number(e.target.value)) }} > {[10, 20, 30, 40, 50].map((pageSize) => ( ))} Games Found: {games.count.totalGames} = pageCount} > gotoPage(pageCount)} disabled={pageIndex >= pageCount} ml={4} > ) }