guild_front/src/components/Calendar/CalendarComponent.js

98 lines
2.7 KiB
JavaScript
Raw Normal View History

2021-06-17 18:21:48 +03:00
import React, { useState, useEffect } from 'react';
import style from './CalendarComponent.module.css';
import ellipse from '../../images/ellipse.png';
import rectangle from '../../images/rectangle__calendar.png';
2021-06-18 17:16:08 +03:00
import calendarIcon from '../../images/calendar_icon.png';
2021-06-17 18:21:48 +03:00
import moment from 'moment';
import 'moment/locale/ru';
2021-06-18 17:16:08 +03:00
import calendarHelper from './calendarHelper';
2021-06-17 18:21:48 +03:00
const CalendarComponent = () => {
const [value, setValue] = useState(moment());
const [calendar, setCalendar] = useState([]);
useEffect(() => {
setCalendar(calendarHelper(value));
}, [value]);
2021-06-18 17:16:08 +03:00
function beforeToday(day) {
return day.isBefore(new Date(), 'day');
2021-06-17 18:21:48 +03:00
}
2021-06-18 17:16:08 +03:00
function isToday(day) {
return day.isSame(new Date(), 'day');
}
2021-06-17 18:21:48 +03:00
2021-06-18 17:16:08 +03:00
function dayStyles(day) {
if (beforeToday(day)) return `${style.before}`;
if (isToday(day)) return `${style.today}`;
if (day.day() === 6 || day.day() === 0) return `${style.selected}`;
return '';
2021-06-17 18:21:48 +03:00
}
2021-06-18 17:16:08 +03:00
function currentMonth(day) {
return day.format('D MMMM');
2021-06-17 18:21:48 +03:00
}
function prevMonth() {
return value.clone().subtract(1, 'month');
}
function nextMonth() {
return value.clone().add(1, 'month');
}
//////////////////////////////////////////////////////////////////////////
return (
<div className={style.CalendarComponent}>
<div className={style.CalendarComponent__header}>
<h3>Мои отчеты</h3>
<div className={style.CalendarComponent__header__box}>
<img src={ellipse} alt="" />
<span onClick={() => setValue(prevMonth())}>Май</span>
</div>
<div className={style.CalendarComponent__header__box}>
<img src={ellipse} alt="" />
<span onClick={() => setValue(nextMonth())}>Апрель</span>
</div>
</div>
<div className={style.CalendarComponent__rectangle}>
<img src={rectangle} alt="" />
</div>
<div className={style.CalendarComponent__body}>
<div>
<p>ПН</p>
<p>ВТ</p>
<p>СР</p>
<p>ЧТ</p>
<p>ПТ</p>
<p>СБ</p>
<p>ВС</p>
</div>
<div className={style.CalendarComponent__form}>
{calendar.map((week) =>
week.map((day) => (
2021-06-18 17:16:08 +03:00
<button
onClick={() => setValue(day)}
key={day}
className={dayStyles(day)}
name={day.format('dddd')}
id="btn"
>
<img className={style.calendarIcon} src={calendarIcon} alt="" />
{currentMonth(day)}
2021-06-17 18:21:48 +03:00
</button>
))
)}
</div>
</div>
</div>
);
};
export default CalendarComponent;