import { Box, Button, Grid, Paper, Typography } from '@mui/material'; import { useTranslation } from 'next-i18next'; import { useState } from 'react'; import useDebounce from '../../../hooks/use-debounce'; import useSWRWithFallbackData from '../../../hooks/use-swr-with-initial-data'; import { getData } from '../../../requests/dataRequest'; import { compare } from '../../../utils/helpers/sortHelpers'; import { IPerson } from '../../../utils/interface/personInterface'; import DataCard from '../../cards/data-card/DataCard'; import FilterSortComponent from '../filter-sort/FilterSortComponent'; const PaginationComponent = ({ initialData = {} }) => { const [pageIndex, setPageIndex] = useState(1); const [filter, setFilter] = useState(''); const [sort, setSort] = useState(''); const { t } = useTranslation('pagination'); const fetcher = (page: string) => getData(page); const { data: paginationData }:any = useSWRWithFallbackData(pageIndex.toString(), fetcher, { fallbackData: initialData, }); const debouncedFilter = useDebounce(filter, 500); const handleFilterChange = (event: {target: HTMLInputElement}) => { const filterText = event.target.value; setFilter(filterText); }; const handleSortChange = (event: { target: HTMLInputElement }) => { const sort = event.target.value; setSort(sort); }; const dataToDisplay = paginationData?.data .filter((item: IPerson) => item.name.toLowerCase().startsWith(debouncedFilter.toLowerCase()) ) .sort((a: IPerson, b:IPerson) => compare(a.name, b.name, sort)) .map((item: IPerson, index: number) => ( // ! DON'T USE index for key, this is for example only )); return ( {t('Title')} {dataToDisplay} ); }; export default PaginationComponent;