feat: add a component for changing days (#48)
All checks were successful
it-academy/dry-wash-pl/pipeline/head This commit looks good
it-academy/dry-wash-pl/pipeline/pr-main This commit looks good

This commit is contained in:
2024-12-14 22:27:07 +03:00
parent e2c65fd39c
commit 8cc8391a09
7 changed files with 62 additions and 7 deletions

View File

@@ -0,0 +1,31 @@
import React from 'react';
import { Box, Button, Text } from '@chakra-ui/react';
import { ArrowBackIcon, ArrowForwardIcon } from '@chakra-ui/icons';
interface DateNavigatorProps {
currentDate: Date;
onPreviousDate: () => void;
onNextDate: () => void;
}
const DateNavigator = ({
currentDate,
onPreviousDate,
onNextDate,
}: DateNavigatorProps) => {
return (
<Box display='flex' alignItems='center' justifyContent='flex-start' mb='5'>
<Button onClick={onPreviousDate}>
<ArrowBackIcon />
</Button>
<Text mx='4' fontSize='lg' fontWeight='bold'>
{currentDate.toLocaleDateString()}
</Text>
<Button onClick={onNextDate}>
<ArrowForwardIcon />
</Button>
</Box>
);
};
export default DateNavigator;

View File

@@ -0,0 +1 @@
export { default } from './DateNavigator';

View File

@@ -13,10 +13,12 @@ import {
useToast,
} from '@chakra-ui/react';
import { useTranslation } from 'react-i18next';
import dayjs from 'dayjs';
import OrderItem from '../OrderItem';
import { OrderProps } from '../OrderItem/OrderItem';
import { armService } from '../../api/arm';
import DateNavigator from '../DateNavigator';
const TABLE_HEADERS = [
'carNumber' as const,
@@ -39,13 +41,14 @@ const Orders = () => {
const [orders, setOrders] = useState<OrderProps[]>([]);
const [loading, setLoading] = useState(false);
const [error, setError] = useState<string | null>(null);
const [currentDate, setCurrentDate] = useState(new Date());
useEffect(() => {
const loadOrders = async () => {
setLoading(true);
try {
const data = await fetchOrders();
const data = await fetchOrders({ date: currentDate });
setOrders(data.body);
} catch (err) {
setError(err.message);
@@ -62,13 +65,26 @@ const Orders = () => {
};
loadOrders();
}, [toast, t]);
}, [toast, t, currentDate]);
return (
<Box p='8'>
<Heading size='lg' mb='5'>
{t('title')}
</Heading>
<DateNavigator
currentDate={currentDate}
onPreviousDate={() =>
setCurrentDate((prevDate) =>
dayjs(prevDate).subtract(1, 'day').toDate(),
)
}
onNextDate={() =>
setCurrentDate((prevDate) => dayjs(prevDate).add(1, 'day').toDate())
}
/>
<Table variant='simple' colorScheme='blackAlpha'>
<Thead>
<Tr>