import dayjs from "dayjs"; import {ChevronLeftIcon, ChevronRightIcon} from "@heroicons/react/solid"; import {useEffect, useState} from "react"; const DatePicker = ({ weekStart, onDatePicked }) => { const [selectedMonth, setSelectedMonth] = useState(dayjs().month()); const [selectedDay, setSelectedDay] = useState(dayjs().date()); const [hasPickedDate, setHasPickedDate] = useState(false); useEffect(() => { if (hasPickedDate) { onDatePicked(dayjs().month(selectedMonth).date(selectedDay)); } }, [hasPickedDate, selectedDay]); // Handle month changes const incrementMonth = () => { setSelectedMonth(selectedMonth + 1); } const decrementMonth = () => { setSelectedMonth(selectedMonth - 1); } // Set up calendar var daysInMonth = dayjs().month(selectedMonth).daysInMonth(); var days = []; for (let i = 1; i <= daysInMonth; i++) { days.push(i); } // Create placeholder elements for empty days in first week let weekdayOfFirst = dayjs().month(selectedMonth).date(1).day(); if (weekStart === 'Monday') { weekdayOfFirst -= 1; if (weekdayOfFirst < 0) weekdayOfFirst = 6; } const emptyDays = Array(weekdayOfFirst).fill(null).map((day, i) =>
{null}
); // Combine placeholder days with actual days const calendar = [...emptyDays, ...days.map((day) => )]; return (
{dayjs().month(selectedMonth).format("MMMM YYYY")}
{ ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] .sort( (a, b) => weekStart.startsWith(a) ? -1 : weekStart.startsWith(b) ? 1 : 0 ) .map( (weekDay) =>
{weekDay}
) } {calendar}
); } export default DatePicker;