{"version":3,"file":"index-CUR4xFR6.js","sources":["../../../app/javascript/src/shoppe/elements/NotificationForm/index.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport cls from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faCheckCircle, faEnvelope } from '@fortawesome/pro-regular-svg-icons';\nimport { faCheck } from '@fortawesome/pro-solid-svg-icons';\nimport { useFormState } from 'react-use-form-state';\n\nimport api from 'src/explore/services/api';\nimport { ErrorBox } from 'src/explore/elements/bs4/ErrorBox';\nimport { FormStateInput } from 'src/explore/elements/FormStateInput';\nimport { LoadingButton } from 'src/shoppe/elements/LoadingButton';\nimport { Modal } from 'src/shoppe/elements/Modal';\n\nimport styles from './index.module.sass';\n\ntype INotificationForm = {\n email: string;\n subscribe: boolean;\n};\n\ninterface NotificationFormProps {\n overlayClass?: string;\n open: boolean;\n productID: number;\n showSubscribeCheckbox?: boolean;\n onClose: () => void;\n}\n\nexport const NotificationForm = ({\n open,\n overlayClass,\n productID,\n showSubscribeCheckbox = true,\n onClose,\n}: NotificationFormProps ) => {\n const [ emailRef, setEmailRef ] = React.useState( null );\n const [ error, setError ] = useState( null );\n const [ loading, setLoading ] = useState( false );\n const [ success, setSuccess ] = useState( false );\n\n const [ formState, { email, checkbox }] = useFormState({\n subscribe: true,\n });\n\n const handleClose = () => {\n setTimeout(() => setSuccess( false ), 201 );\n onClose();\n };\n\n const handleSubmit = () => {\n if ( !formState.values.email || formState.errors.email ) {\n return setError( formState.errors.email ? [ formState.errors.email ] : null );\n }\n\n setError( null );\n setLoading( true );\n\n return api\n .post( `products/${productID}/waitlists`, {\n email: formState.values.email,\n email_opt_in: showSubscribeCheckbox ? formState.values.subscribe : false,\n })\n .then(() => {\n emailRef?.blur();\n setSuccess( true );\n })\n .catch(() => {\n setError([ 'Sorry, there was an error. Please try again.' ]);\n })\n .finally(() => {\n setLoading( false );\n });\n };\n\n useEffect(() => {\n if ( !success ) {\n emailRef?.focus();\n }\n }, [ emailRef, success ]);\n\n return (\n \n \n

Notify Me When This Item is Available

\n\n {!!error && }\n\n
\n
\n setEmailRef( elementRef )}\n required\n onKeyDown={( e: React.KeyboardEvent ) => {\n if ( e.keyCode === 13 ) {\n e.preventDefault();\n handleSubmit();\n }\n }}\n />\n
\n
\n\n {showSubscribeCheckbox && (\n
\n
\n \n \n
\n \n
\n Keep me up to date on the latest news and exclusive promotions.\n \n
\n
\n )}\n\n
\n
\n \n Cancel\n \n
\n
\n \n Submit\n \n
\n
\n\n {success && (\n \n \n

Thank You

\n

\n We will email you as soon as this product is available\n

\n \n )}\n \n );\n};\n"],"names":["NotificationForm","open","overlayClass","productID","showSubscribeCheckbox","onClose","emailRef","setEmailRef","React","error","setError","useState","loading","setLoading","success","setSuccess","formState","email","checkbox","useFormState","handleClose","handleSubmit","api","useEffect","Modal","cls","styles","FontAwesomeIcon","faEnvelope","ErrorBox","FormStateInput","elementRef","e","faCheck","LoadingButton","faCheckCircle"],"mappings":"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"}