diff --git a/components/booking/DatePicker.tsx b/components/booking/DatePicker.tsx index ac1a0420cf..0e02940c51 100644 --- a/components/booking/DatePicker.tsx +++ b/components/booking/DatePicker.tsx @@ -1,13 +1,20 @@ import { ChevronLeftIcon, ChevronRightIcon } from "@heroicons/react/solid"; import { useEffect, useState } from "react"; import dayjs, { Dayjs } from "dayjs"; -import isToday from "dayjs/plugin/isToday"; -dayjs.extend(isToday); +import utc from "dayjs/plugin/utc"; +import timezone from "dayjs/plugin/timezone"; +import getSlots from "@lib/slots"; +dayjs.extend(utc); +dayjs.extend(timezone); -const DatePicker = ({ weekStart, onDatePicked, workingHours, disableToday }) => { - const workingDays = workingHours.reduce((workingDays: number[], wh) => [...workingDays, ...wh.days], []); - const [selectedMonth, setSelectedMonth] = useState(dayjs().month()); - const [selectedDate, setSelectedDate] = useState(); +const DatePicker = ({ weekStart, onDatePicked, workingHours, organizerTimeZone, inviteeTimeZone }) => { + const [calendar, setCalendar] = useState([]); + const [selectedMonth, setSelectedMonth]: number = useState(); + const [selectedDate, setSelectedDate]: Dayjs = useState(); + + useEffect(() => { + setSelectedMonth(dayjs().tz(inviteeTimeZone).month()); + }, []); useEffect(() => { if (selectedDate) onDatePicked(selectedDate); @@ -22,69 +29,80 @@ const DatePicker = ({ weekStart, onDatePicked, workingHours, disableToday }) => setSelectedMonth(selectedMonth - 1); }; - // Set up calendar - const daysInMonth = dayjs().month(selectedMonth).daysInMonth(); - const days = []; - for (let i = 1; i <= daysInMonth; i++) { - days.push(i); - } + useEffect(() => { + if (!selectedMonth) { + // wish next had a way of dealing with this magically; + return; + } - // 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) => ( -
{props.eventType.description}