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 (