import { useContext } from 'react'
import useSWR, { SWRConfig } from 'swr'
import { WizardContext, ACTIONS } from '../context/wizardStore'
import Form from 'react-bootstrap/Form'
import moment from 'moment'
import 'react-dates/initialize'
import { DateRangePicker, SingleDatePicker } from 'react-dates'
const fetcher = (path) => fetch(path).then((r) => r.json())
export default function DateSelect() {
const { state, dispatch } = useContext(WizardContext)
const { data: bookedOn, error: fetchBookedOnError } = useSWR(
'/api/booked',
fetcher
)
const {
multipleDays,
startDate,
endDate,
focusedInput,
pickupTime,
dropoffTime,
} = state
function isDayBlocked(momentDay) {
return (
bookedOn && bookedOn.some((rawDay) => momentDay.isSame(rawDay, 'day'))
)
}
if (!bookedOn) {
return
Lade Buchungen...
}
if (fetchBookedOnError) {
return (
Entschuldige, aber die Buchungszeiten konnten nicht geladen werden
)
}
return (
<>
Willst du einen odere mehrere Tage buchen?
dispatch({ type: ACTIONS.SET_MULTIPLE_DAYS, payload: false })
}
/>
dispatch({ type: ACTIONS.SET_MULTIPLE_DAYS, payload: true })
}
/>
{multipleDays !== null && (
Datum
{state.multipleDays === false && (
dispatch({
type: ACTIONS.SET_DATE,
payload: { startDate: date.toISOString() },
})
}
focused={typeof focusedInput === 'boolean' && focusedInput}
onFocusChange={({ focused }) =>
dispatch({
type: ACTIONS.SET_FOCUSED_INPUT,
payload: focused,
})
}
isDayBlocked={isDayBlocked}
id="startDate"
/>
)}
{state.multipleDays === true && (
{
dispatch({
type: ACTIONS.SET_DATE,
payload: {
startDate: startDate && startDate.toISOString(),
endDate: endDate && endDate.toISOString(),
},
})
}}
focusedInput={focusedInput}
onFocusChange={(focusedInput) =>
dispatch({
type: ACTIONS.SET_FOCUSED_INPUT,
payload: focusedInput,
})
}
isDayBlocked={isDayBlocked}
minDate={moment()}
/>
)}
)}
>
)
}