import { Box, Button, Divider, FormControl, Grid, InputLabel, MenuItem, Paper, Select, TextField, Typography, } from '@mui/material'; import { useTranslation } from 'next-i18next'; import { useState } from 'react'; import useDebounce from '../../../hooks/use-debounce'; import { usePagination } from '../../../hooks/use-pagination'; import { compare } from '../../../utils/helpers/sortHelpers'; const PaginationComponentRQ = () => { const [pageIndex, setPageIndex] = useState(1); const [filter, setFilter] = useState(''); const [sort, setSort] = useState(''); const { t } = useTranslation('pagination'); const { data: paginationData } = usePagination(pageIndex); const debouncedFilter = useDebounce(filter, 500); const handleFilterTextChange = (event) => { const filterText = event.target.value; setFilter(filterText); }; const handleSortChange = (event) => { const sort = event.target.value; setSort(sort); }; const dataToDisplay = paginationData?.data .filter((item) => item.name.toLowerCase().startsWith(debouncedFilter.toLowerCase()) ) .sort((a, b) => compare(a.name, b.name, sort)) .map((item, index) => ( // ! DON'T USE index for key, this is for example only {/* TODO separate into component */} {t('Name')} {item.name} {t('Age')} {item.age} {t('Gender')} {item.gender} )); return ( {t('Title')} Sort {dataToDisplay} ); }; export default PaginationComponentRQ;