import { JSX, useEffect, useState } from "react";
import styles from "./Calendar.module.css";
import { getMonthName, daysInMonth } from "../utils/dateUtils";
const generateFirstWeekPadding = (month: number) => {
const firstDay = new Date(new Date().getFullYear(), month, 1).getDay();
const padding = Array.from({ length: firstDay === 0 ? 6 : firstDay - 1 }, (_, index) => (
));
return padding;
}
const generateCalendarCells = (month: number) => {
const monthDays = daysInMonth[month];
const calendarCells = Array.from({ length: monthDays }, (_, index) => {
const day = index + 1;
const date = new Date(new Date().getFullYear(), month, day);
return (
{date.toLocaleDateString("fi-FI", {
day: "2-digit",
month: "2-digit",
})}
);
});
return calendarCells;
}
export default function Calendar() {
const [selectedMonth, setSelectedMonth] = useState(new Date().getMonth());
const [calendarCells, setCalendarCells] = useState([]);
const [firstWeekPadding, setFirstWeekPadding] = useState([]);
useEffect(() => {
setCalendarCells(generateCalendarCells(selectedMonth));
setFirstWeekPadding(generateFirstWeekPadding(selectedMonth));
}, [selectedMonth]);
return (
<>
{getMonthName(selectedMonth)} {new Date().getFullYear()}
Ma
Ti
Ke
To
Pe
La
Su
{firstWeekPadding}
{calendarCells}
>
);
}