import { useEffect } from 'react' import { __ } from '@wordpress/i18n' import classNames from 'classnames' import { createFormFields } from '../../components/Form/utils' import { useForm } from '../../components/Form/FormProvider' import { IFormContext } from '../../components/Form/types' import { GiftCardTimezoneSelect } from './GiftCardTimezoneSelect' import { GiftCardSendTimeStepProps } from './types' import { openNativeDatePicker, todayIsoDate } from './utils' export const GiftCardSendTimeStep = ({ sendOn, setSendOn, sendOnError, setSendOnError, sendOnTouched, setSendOnTouched, validateSendOn, sendTime, setSendTime, sendTimezone, setSendTimezone, }: GiftCardSendTimeStepProps) => { const { fields, anyTouched } = useForm() as IFormContext const sendTiming = String( fields.find((field) => field.slug === 'send_timing')?.value ?? 'now' ) const showSchedule = sendTiming === 'later' const showSendOnError = showSchedule && !!sendOnError && (anyTouched || sendOnTouched) useEffect(() => { if (sendTiming === 'later') { const nextDate = sendOn || todayIsoDate() if (!sendOn) { setSendOn(nextDate) } setSendOnError(validateSendOn(nextDate, sendTime, sendTimezone)) return } setSendOnError(null) }, [sendTiming]) const applySchedule = (date: string, time: string, timezone: string) => { setSendOnTouched(true) setSendOnError(validateSendOn(date, time, timezone)) } return (

{__('When should we send it?', 'webba-booking-lite')}

{createFormFields( fields.filter((field) => field.slug === 'send_timing'), anyTouched )} {showSchedule && (
{ const value = event.target.value setSendOn(value) applySchedule(value, sendTime, sendTimezone) }} className={classNames('wbk_input__main', { 'wbk_input__main--error': showSendOnError, })} />
{ const value = event.target.value setSendTime(value) applySchedule(sendOn, value, sendTimezone) }} className={classNames('wbk_input__main', { 'wbk_input__main--error': showSendOnError, })} />
{ setSendTimezone(zone) applySchedule(sendOn, sendTime, zone) }} />
{showSendOnError && (
{sendOnError}
)}
)}
) }