{"version":3,"file":"secondary_email-B0lyc2z4.js","sources":["../../app/javascript/components/sign_up/secondary_email.jsx","../../app/javascript/entrypoints/react_rails/sign_up/secondary_email.tsx"],"sourcesContent":["import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport styled, { ThemeProvider } from \"styled-components\";\nimport deprecatedTheme from \"../styling/deprecated_theme\";\nimport { Provider as StyletronProvider } from \"styletron-react\";\nimport { BaseProvider } from \"baseui\";\nimport baseuiTheme from \"../styling/baseui_theme\";\nimport { ThemeProvider as MaterialThemeProvider, THEME_ID } from \"@mui/material/styles\";\nimport { LocalizationProvider } from \"@mui/x-date-pickers/LocalizationProvider\";\nimport { AdapterDateFns } from \"@mui/x-date-pickers/AdapterDateFnsV3\";\nimport materialTheme from \"../styling/material_theme\";\nimport { Client as Styletron } from \"styletron-engine-atomic\";\nimport { LoginPage as LoginBackground } from \"../login\";\nimport {\n StyledCard,\n StyledHeading,\n StyledParagraphMedium,\n} from \"../shared/login_and_sign_up/styled\";\nimport ProgramSchoolLogoBlock from \"../shared/login_and_sign_up/program_school_logo_block\";\nimport { Button } from \"../components/base_ui/inputs/button\";\nimport { KIND } from \"baseui/button\";\nimport FormControl from \"../components/base_ui/inputs/form_control\";\nimport Input from \"../components/base_ui/inputs/input\";\nimport jQuery from \"jquery\";\nimport { emailRegex } from \"../../utils/string_utils\";\n\nconst engine = new Styletron();\n\nconst InputContainer = styled.div`\n margin-bottom: ${({ theme }) => theme.sizing.scale800};\n`;\n\nconst ButtonContainer = styled.div`\n margin-top: ${({ theme }) => theme.sizing.scale800};\n margin-bottom: 0px;\n\n button {\n margin-top: ${({ theme }) => theme.sizing.scale600};\n margin-bottom: 0px;\n }\n`;\n\nclass SecondaryEmail extends React.Component {\n static propTypes = {\n programData: PropTypes.object.isRequired,\n addSecondaryEmailPath: PropTypes.string.isRequired,\n csrfToken: PropTypes.string.isRequired,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n email: \"\",\n confirmEmail: \"\",\n errorEmail: false,\n errorEmailCaption: \"\",\n errorConfirmEmail: false,\n errorConfirmEmailCaption: \"\",\n alreadyExistingEmail: false,\n };\n }\n\n render() {\n return (\n \n \n \n \n \n \n \n
\n
\n \n
\n \n Add Secondary Email\n \n \n Before we create a new account for you, please add a secondary email\n address. You can use this email to log in to your Mentor Collective account\n or reset your password even if you can no longer authenticate through your\n school's portal. If you skip this step, you can only log in through{\" \"}\n {this.props.programData.schoolName} for this program.\n \n
\n
\n \n \n {\n this.setState({\n email: event.target.value,\n errorEmail: false,\n errorEmailCaption: \"\",\n alreadyExistingEmail: false,\n });\n }}\n dataTest={\"secondary-email-input\"}\n />\n \n \n \n \n {\n this.setState({\n confirmEmail: event.target.value,\n errorConfirmEmail: false,\n errorConfirmEmailCaption: \"\",\n });\n }}\n dataTest={\"secondary-email-confirm-input\"}\n />\n \n \n
\n \n \n Continue\n \n \n Skip\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n );\n }\n\n validateBeforeSubmission() {\n let errorsDetected = false;\n\n // blank or invalid email format\n if (!this.state.email.match(emailRegex)) {\n this.setState({\n errorEmail: true,\n errorEmailCaption: this.state.email === \"\" ? \"Email is required.\" : \"Invalid email format.\",\n });\n errorsDetected = true;\n }\n\n // confirm email is blank or does not match password\n if (this.state.confirmEmail === \"\" || this.state.email !== this.state.confirmEmail) {\n this.setState({\n errorConfirmEmail: true,\n errorConfirmEmailCaption:\n this.state.confirmEmail === \"\" ? \"Confirm email is required.\" : \"Emails do not match.\",\n });\n errorsDetected = true;\n }\n\n return !errorsDetected;\n }\n\n handleContinue = async (event) => {\n event.preventDefault();\n\n const validationPassed = this.validateBeforeSubmission();\n if (!validationPassed) {\n return;\n }\n\n try {\n const result = await jQuery.post({\n url: this.props.addSecondaryEmailPath,\n headers: { \"X-CSRF-Token\": this.props.csrfToken },\n data: {\n program_id: this.props.programData.id,\n email: this.state.email,\n },\n });\n\n if (result.errors?.length) {\n this.setState({\n errorEmail: true,\n errorEmailCaption: result.errors.join(\", \"),\n alreadyExistingEmail: result.already_existing_email,\n });\n } else {\n window.location.reload();\n }\n } catch (response) {\n this.setState({\n errorEmail: true,\n errorEmailCaption: \"Oops, something went wrong. Please try again.\",\n });\n }\n };\n\n handleSkip = async (event) => {\n event.preventDefault();\n const skipUrl = window.location.href + \"?skip_secondary_email=true\";\n window.location.assign(skipUrl);\n };\n}\n\nexport default SecondaryEmail;\n","import React from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport SecondaryEmail from \"../../../components/sign_up/secondary_email\";\n\nfunction init() {\n const componentElements = document.querySelectorAll(\n '[data-react-class=\"sign_up/secondary_email\"]',\n );\n componentElements.forEach((rootElement) => {\n const classString = rootElement.getAttribute(\"data-react-class\");\n const propsJson = rootElement.getAttribute(\"data-react-props\");\n const props = rootElement && JSON.parse(propsJson ?? \"\");\n if (classString) {\n const root = createRoot(rootElement);\n root.render();\n }\n });\n}\n\nif (document.readyState === \"complete\" || document.readyState === \"interactive\") {\n // document has at least been parsed\n init();\n} else {\n document.addEventListener(\"DOMContentLoaded\", () => {\n init();\n });\n}\n"],"names":["engine","Styletron","InputContainer","styled","theme","ButtonContainer","SecondaryEmail","React","props","__publicField","event","result","jQuery","_a","skipUrl","StyletronProvider","jsx","BaseProvider","baseuiTheme","ThemeProvider","deprecatedTheme","MaterialThemeProvider","THEME_ID","materialTheme","LocalizationProvider","AdapterDateFns","LoginBackground","StyledCard","jsxs","ProgramSchoolLogoBlock","StyledHeading","StyledParagraphMedium","FormControl","Input","Button","KIND","errorsDetected","emailRegex","PropTypes","init","rootElement","classString","propsJson","createRoot"],"mappings":"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"}