import './style.css' import Button from '@mui/material/Button' import CircularProgress from '@mui/material/CircularProgress' import { Field, Form, Formik } from 'formik' import _find from 'lodash/find' import React, { useState } from 'react' import { addToWaitingList } from '../../api' import { isBrowser } from '../../utils' import { ErrorFocus } from '../../utils/formikErrorFocus' import { combineValidators, emailValidator, requiredValidator, } from '../../validators' import { CustomField } from '../common/index' interface WaitingListProps { tickets: any; eventId: number; defaultMaxQuantity: number; } interface WaitingListFields { ticketTypeId: string; quantity: string; firstName: string; lastName: string; email: string; } const generateQuantity = (n: number) => { const quantityList = [] for (let i = 1; i <= n; i++) { quantityList.push({ label: i, value: i }) } return quantityList } const WaitingList = ({ tickets = {}, eventId, defaultMaxQuantity = 10, }: WaitingListProps) => { const userData = isBrowser && window.localStorage.getItem('user_data') ? JSON.parse(window.localStorage.getItem('user_data') || '') : {} const [showSuccessMessage, setShowSuccessMessage] = useState(false) const [loading, setLoading] = useState(false) const ticketTypesList = Object.values(tickets).map((d: any) => ({ label: d.displayName, value: d.id, })) const showTicketsField = Boolean(ticketTypesList.length) const handleSubmit = async (values: WaitingListFields) => { try { setLoading(true) const response = await addToWaitingList(eventId, { attributes: values }) if (response.success) { setShowSuccessMessage(true) } } catch (error) { } finally { setLoading(false) } } return (
You've been added to the waiting list!
You'll be notified if tickets become available.