Calender.js 2.05 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import { useState, useEffect } from "react";
import moment from "moment";
import styles from "./calender.module.scss";

const Calender = ({ selectDate, setSelectDate }) => {
    const [dateList, setDateList] = useState([])
    const [week, setWeek] = useState(["", "", "", "", "", "", ""])

    useEffect(() => {
        getDate(selectDate)
    }, [])

    function getDate(oneDay) {
        let dateArr = []
        let lastWeek = moment(oneDay).subtract(7, 'days')
        const nextWeek = moment(oneDay).add(7, 'days')
        while (lastWeek.isBefore(nextWeek)) {
            dateArr.push({ date: lastWeek.format('YYYY-MM-DD'), day: lastWeek.format('d') })
            lastWeek.add(1, 'days')
        }
21
22
23
24
25
        const resultArr = dateArr.map(el => <div className="col-2 align-self-end text-center" onClick={() => setSelectDate(el.date)}>
            {moment(el.date).isSame(oneDay) || el.date.split('-')[2] === "01" ? <strong className={styles.yearmonth}>{moment(el.date).format('YYYY.MM')}</strong> : ""}
            <div className={"d-flex flex-column " + ((Number(el.day) === 0 || Number(el.day) === 6) ? ((Number(el.day) === 0) ? "text-danger" : "text-primary") : "")}>
                <strong className={moment(el.date).isSame(oneDay) ? styles.selectDate : ""}>{moment(el.date).format('DD')}</strong>
                <strong>{moment(el.date).isSame(oneDay) ? "오늘" : week[el.day]}</strong>
26
27
28
29
30
31
            </div>
        </div>)
        setDateList(resultArr)
    }

    return (
32
        <>  
33
            {console.log("date==", selectDate)}
34
35
36
37
38
            <div className="d-flex position-relative border-bottom border-dark border-2 p-3">
                <i className={`bi bi-calendar2 position-absolute top-0 ${styles.calender}`}></i>
                <i className="col-1 bi bi-chevron-left align-self-center text-center"></i>
                <div className={`d-flex col-10 ${styles.box}`}>{dateList.map(el => el)}</div>
                <i className="col-1 bi bi-chevron-right align-self-center text-center"></i>
39
40
41
42
43
44
            </div>
        </>
    )
}

export default Calender