@dropins/storefront-auth 3.1.0 → 3.2.0-alpha002
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/chunks/Button.js +1 -1
- package/chunks/Button.js.map +1 -1
- package/chunks/ResetPasswordForm.js +1 -1
- package/chunks/ResetPasswordForm.js.map +1 -1
- package/chunks/SignInForm.js +1 -1
- package/chunks/SignInForm.js.map +1 -1
- package/chunks/SignUpForm.js +1 -1
- package/chunks/SignUpForm.js.map +1 -1
- package/components/Form/Form.d.ts +1 -1
- package/containers/UpdatePassword.js +1 -1
- package/containers/UpdatePassword.js.map +1 -1
- package/package.json +1 -1
- package/types/form.types.d.ts +8 -1
- package/types/resetPassword.types.d.ts +10 -0
- package/types/signIn.types.d.ts +3 -0
- package/types/signUp.types.d.ts +3 -0
- package/types/updatePassword.types.d.ts +3 -0
package/chunks/SignInForm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SignInForm.js","sources":["/@dropins/storefront-auth/src/hooks/components/useSignInForm.tsx","/@dropins/storefront-auth/src/lib/clearUrlAndReplace.ts","/@dropins/storefront-auth/src/hooks/useEmailConfirmation.tsx","/@dropins/storefront-auth/src/components/SignInForm/SignInForm.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { getFormValues } from '@/auth/lib/getFormValues';\nimport { useCallback, useState, useMemo, useEffect } from 'preact/hooks';\nimport { getCustomerToken, resendConfirmationEmail } from '@/auth/api';\nimport { AdditionalActionsAlertProps, useSignInFormProps } from '@/auth/types';\nimport { DEFAULT__SIGN_IN_EMAIL_FIELD } from '@/auth/configs/defaultCreateUserConfigs';\nimport { simplifyTransformAttributesForm } from '@/auth/lib/simplifyTransformAttributesForm';\nimport { checkIsFunction } from '@/auth/lib/checkIsFunction';\nimport { focusOnEmptyPasswordField } from '@/auth/lib/focusOnEmptyPasswordField';\n\nexport const useSignInForm = ({\n emailConfirmationStatusMessage,\n translations,\n initialEmailValue,\n routeSignUp,\n routeForgotPassword,\n routeRedirectOnSignIn,\n onErrorCallback,\n setActiveComponent,\n onSuccessCallback,\n onSignUpLinkClick,\n handleSetInLineAlertProps,\n routeRedirectOnEmailConfirmationClose,\n apiErrorMessageOverride,\n}: useSignInFormProps) => {\n const [userEmail, setUserEmail] = useState('');\n const [showEmailConfirmationForm, setShowEmailConfirmationForm] =\n useState(false);\n const [signInPasswordValue, setSignInPasswordValue] = useState('');\n const [passwordError, setPasswordError] = useState(false);\n const [isSuccessful, setIsSuccessful] = useState({\n userName: '',\n status: false,\n });\n const [isLoading, setIsLoading] = useState(false);\n const [additionalActionsAlert, setAdditionalActionsAlert] =\n useState<AdditionalActionsAlertProps>([]);\n\n const actionsShowNotificationForm = useCallback(\n async (email: string) => {\n handleSetInLineAlertProps();\n setShowEmailConfirmationForm(true);\n setPasswordError(false);\n setAdditionalActionsAlert([]);\n\n await resendConfirmationEmail(email);\n },\n [handleSetInLineAlertProps]\n );\n\n const handleSetPassword = useCallback((value: string) => {\n if (value.length) {\n setPasswordError(false);\n } else {\n setPasswordError(true);\n }\n setSignInPasswordValue(value);\n }, []);\n\n useEffect(() => {\n if (emailConfirmationStatusMessage?.text) {\n handleSetInLineAlertProps({\n text: emailConfirmationStatusMessage.text,\n type: emailConfirmationStatusMessage.status\n ? emailConfirmationStatusMessage.status\n : undefined,\n });\n }\n }, [emailConfirmationStatusMessage, handleSetInLineAlertProps]);\n\n const onBlurPassword = useCallback(() => {\n if (!signInPasswordValue.length) {\n setPasswordError(true);\n }\n }, [signInPasswordValue]);\n\n const checkPasswordAndFocus = useCallback(\n (event: SubmitEvent, isValid: boolean): boolean => {\n if (!signInPasswordValue.length) {\n setPasswordError(true);\n\n if (!isValid) return true;\n\n focusOnEmptyPasswordField(event, signInPasswordValue, '');\n return true;\n }\n\n return false;\n },\n [signInPasswordValue]\n );\n\n const onAuthenticationSuccess = useCallback(\n (event: SubmitEvent, loginResponse: Record<string, string>) => {\n if (loginResponse?.userName) {\n (event.target as HTMLFormElement).reset();\n\n if (checkIsFunction(routeRedirectOnSignIn)) {\n window.location.href = routeRedirectOnSignIn();\n } else {\n onSuccessCallback?.({\n userName: loginResponse?.userName,\n status: true,\n });\n\n setIsSuccessful({\n userName: loginResponse?.userName,\n status: true,\n });\n }\n }\n },\n [onSuccessCallback, routeRedirectOnSignIn]\n );\n\n const onAuthenticationFailed = useCallback(\n (loginResponse: { errorMessage: string; displayErrorMessage: string }, email: string) => {\n if (loginResponse?.errorMessage?.length) {\n setUserEmail(email);\n\n /**\n * TODO: Use error code when available, instead of comparing to response text\n *\n * This implementation is a temporary solution.\n * The backend functionality is planned to be improved to obtain accurate data that will help correctly identify error types and handle them.\n */\n // Use original errorMessage for detection (not the override)\n const isIncludesMessage = loginResponse.errorMessage.includes(\n \"This account isn't confirmed. Verify and try again.\"\n );\n\n // Use displayErrorMessage for display (respects apiErrorMessageOverride)\n const errorMessage: string = isIncludesMessage\n ? translations.resendEmailInformationText\n : loginResponse.displayErrorMessage;\n\n if (isIncludesMessage) {\n setAdditionalActionsAlert([\n {\n label: translations.resendEmailButtonText,\n onClick: () => {\n actionsShowNotificationForm(email);\n },\n },\n ]);\n } else {\n setAdditionalActionsAlert([]);\n }\n\n handleSetInLineAlertProps({\n text: errorMessage,\n type: 'error',\n });\n\n setSignInPasswordValue('');\n }\n },\n [\n actionsShowNotificationForm,\n handleSetInLineAlertProps,\n translations.resendEmailButtonText,\n translations.resendEmailInformationText,\n ]\n );\n\n const submitLogInUser = useCallback(\n async (event: SubmitEvent, isValid: boolean): Promise<void> => {\n handleSetInLineAlertProps();\n\n if (checkPasswordAndFocus(event, isValid)) return;\n\n setIsLoading(true);\n\n const formValues = getFormValues(event.target);\n const isFormComplete = Object.values(formValues).every((value) => value);\n\n if (isFormComplete) {\n const { email, password } = formValues;\n\n const loginResponse = await getCustomerToken({\n email,\n password,\n handleSetInLineAlertProps,\n onErrorCallback,\n translations,\n apiErrorMessageOverride,\n });\n\n onAuthenticationFailed(loginResponse, email);\n onAuthenticationSuccess(event, loginResponse);\n\n setPasswordError(false);\n }\n\n setIsLoading(false);\n },\n [\n translations,\n onErrorCallback,\n checkPasswordAndFocus,\n onAuthenticationFailed,\n onAuthenticationSuccess,\n handleSetInLineAlertProps,\n apiErrorMessageOverride,\n ]\n );\n\n const forgotPasswordCallback = useCallback(() => {\n if (checkIsFunction(setActiveComponent)) {\n setActiveComponent('resetPasswordForm');\n\n return;\n }\n\n if (checkIsFunction(routeForgotPassword)) {\n window.location.href = routeForgotPassword();\n }\n }, [routeForgotPassword, setActiveComponent]);\n\n const onSignUpLinkClickCallback = useCallback(() => {\n if (checkIsFunction(onSignUpLinkClick)) {\n onSignUpLinkClick();\n }\n\n if (checkIsFunction(setActiveComponent)) {\n setActiveComponent('signUpForm');\n\n return;\n }\n\n if (checkIsFunction(routeSignUp)) {\n window.location.href = routeSignUp();\n }\n }, [onSignUpLinkClick, routeSignUp, setActiveComponent]);\n\n const defaultEnhancedEmailFields: any = useMemo(() => {\n const fieldsList = simplifyTransformAttributesForm(\n DEFAULT__SIGN_IN_EMAIL_FIELD\n );\n\n if (!initialEmailValue?.length) return fieldsList;\n\n return fieldsList?.map((el: any) => ({\n ...el,\n defaultValue: initialEmailValue,\n }));\n }, [initialEmailValue]);\n\n const handledOnPrimaryButtonClick = useCallback(() => {\n handleSetInLineAlertProps();\n\n if (checkIsFunction(routeRedirectOnEmailConfirmationClose)) {\n window.location.href = routeRedirectOnEmailConfirmationClose();\n } else {\n setShowEmailConfirmationForm(false);\n }\n }, [handleSetInLineAlertProps, routeRedirectOnEmailConfirmationClose]);\n\n return {\n additionalActionsAlert,\n userEmail,\n defaultEnhancedEmailFields,\n passwordError,\n isSuccessful,\n isLoading,\n signInPasswordValue,\n showEmailConfirmationForm,\n setShowEmailConfirmationForm,\n setSignInPasswordValue,\n submitLogInUser,\n forgotPasswordCallback,\n onSignUpLinkClickCallback,\n handledOnPrimaryButtonClick,\n handleSetPassword,\n onBlurPassword,\n };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const clearUrlAndReplace = () => {\n let url = new URL(window.location.href);\n\n let email = url.searchParams.get('email');\n let token = url.searchParams.get('key');\n\n if (email && token) {\n url.searchParams.delete('email');\n url.searchParams.delete('key');\n\n window.history.replaceState({}, document.title, url.toString());\n }\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { useEffect, useState } from 'preact/hooks';\nimport { clearUrlAndReplace } from '../lib/clearUrlAndReplace';\nimport { confirmEmail } from '../api';\nimport { useText } from '@adobe-commerce/elsie/i18n';\n\ninterface useEmailConfirmationProps {\n enableEmailConfirmation: boolean;\n}\n\n// The client receives a confirmation of the validation via email. When the client follows the provided link, they are directed to the login page with three query parameters. If these parameters are present, we make a request to validate the status. This request returns a response that we display to the user.\nexport const useEmailConfirmation = ({\n enableEmailConfirmation,\n}: useEmailConfirmationProps) => {\n const translations = useText({\n accountConfirmMessage: 'Auth.EmailConfirmationForm.accountConfirmMessage',\n accountConfirmationEmailSuccessMessage:\n 'Auth.EmailConfirmationForm.accountConfirmationEmailSuccessMessage',\n });\n const [emailConfirmationStatusMessage, setEmailConfirmationStatusMessage] =\n useState<{\n text: string;\n status: '' | 'success' | 'error';\n }>({\n text: '',\n status: '',\n });\n\n useEffect(() => {\n if (enableEmailConfirmation) {\n const { search } = window.location;\n\n if (search.includes('email=') && search.includes('key=')) {\n const validateEmailStatus = async () => {\n const params = new URLSearchParams(search);\n\n const response = await confirmEmail({\n customerEmail: params.get('email') as string,\n customerConfirmationKey: params.get('key') as string,\n });\n\n if (!response) return null;\n\n if (response?.errors?.length) {\n setEmailConfirmationStatusMessage({\n text: response?.errors[0].message,\n status: 'error',\n });\n } else {\n setEmailConfirmationStatusMessage({\n text: response.data.confirmEmail.customer.email\n ? translations.accountConfirmationEmailSuccessMessage.replace(\n '{email}',\n response?.data?.confirmEmail.customer?.email\n )\n : translations.accountConfirmMessage,\n status: 'success',\n });\n\n clearUrlAndReplace();\n }\n };\n\n validateEmailStatus();\n }\n }\n }, [enableEmailConfirmation, translations]);\n\n return { emailConfirmationStatusMessage };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { classes, Slot } from '@adobe-commerce/elsie/lib';\nimport { useSignInForm } from '@/auth/hooks/components/useSignInForm';\nimport { SignInFormProps } from '@/auth/types';\nimport { useEmailConfirmation } from '@/auth/hooks/useEmailConfirmation';\nimport { Form, Button, EmailConfirmationForm } from '@/auth/components';\nimport { useInLineAlert } from '@/auth/hooks/useInLineAlert';\nimport { Header, InLineAlert, InputPassword } from '@adobe-commerce/elsie/components';\nimport '@/auth/components/SignInForm/SignInForm.css';\nimport { useCustomTranslations } from '@/auth/hooks/useCustomTranslations';\n\nexport const SignInForm: FunctionComponent<SignInFormProps> = ({\n slots,\n labels,\n formSize = 'default',\n initialEmailValue = '',\n renderSignUpLink = false,\n enableEmailConfirmation = false,\n hideCloseBtnOnEmailConfirmation = false,\n routeRedirectOnEmailConfirmationClose,\n routeRedirectOnSignIn,\n routeForgotPassword,\n routeSignUp,\n onSuccessCallback,\n setActiveComponent,\n onErrorCallback,\n onSignUpLinkClick,\n apiErrorMessageOverride,\n}) => {\n /**\n * useCustomTranslations is required to support extensibility of error messages.\n * Ensure all error-related translation paths include \".default\"\n * to allow future handling of dynamic or nested error messages.\n */\n const translations = useCustomTranslations({\n title: 'Auth.SignInForm.title',\n buttonPrimary: 'Auth.SignInForm.buttonPrimary',\n buttonSecondary: 'Auth.SignInForm.buttonSecondary',\n buttonTertiary: 'Auth.SignInForm.buttonTertiary',\n resendEmailInformationText:\n 'Auth.Notification.resendEmailNotification.informationText',\n resendEmailButtonText:\n 'Auth.Notification.resendEmailNotification.buttonText',\n customerTokenErrorMessage: 'Auth.Api.customerTokenErrorMessage',\n placeholder: 'Auth.InputPassword.placeholder',\n floatingLabel: 'Auth.InputPassword.floatingLabel',\n requiredFieldError: 'Auth.FormText.requiredFieldError.default',\n });\n\n const { emailConfirmationStatusMessage } = useEmailConfirmation({\n enableEmailConfirmation,\n });\n\n const { inLineAlertProps, handleSetInLineAlertProps } = useInLineAlert();\n\n const {\n userEmail,\n additionalActionsAlert,\n defaultEnhancedEmailFields,\n passwordError,\n isSuccessful,\n isLoading,\n signInPasswordValue,\n showEmailConfirmationForm,\n submitLogInUser,\n forgotPasswordCallback,\n onSignUpLinkClickCallback,\n handledOnPrimaryButtonClick,\n handleSetPassword,\n onBlurPassword,\n } = useSignInForm({\n translations,\n emailConfirmationStatusMessage,\n initialEmailValue,\n routeSignUp,\n routeForgotPassword,\n routeRedirectOnSignIn,\n setActiveComponent,\n onErrorCallback,\n onSuccessCallback,\n onSignUpLinkClick,\n handleSetInLineAlertProps,\n routeRedirectOnEmailConfirmationClose,\n apiErrorMessageOverride,\n });\n\n if (isSuccessful.status && slots?.SuccessNotification) {\n return (\n <Slot\n data-testid=\"successNotificationTestId\"\n name=\"SuccessNotification\"\n slot={slots?.SuccessNotification}\n context={{ isSuccessful }}\n />\n );\n }\n\n if (showEmailConfirmationForm) {\n return (\n <EmailConfirmationForm\n formSize={formSize}\n userEmail={userEmail}\n inLineAlertProps={inLineAlertProps}\n hideCloseBtnOnEmailConfirmation={hideCloseBtnOnEmailConfirmation}\n handleSetInLineAlertProps={handleSetInLineAlertProps}\n onPrimaryButtonClick={handledOnPrimaryButtonClick}\n />\n );\n }\n\n return (\n <div\n className={classes([\n 'auth-sign-in-form',\n `auth-sign-in-form--${formSize}`,\n ])}\n data-testid=\"signInForm\"\n >\n <Header\n title={labels?.formTitleText ?? translations.title}\n divider={false}\n className=\"auth-sign-in-form__title\"\n />\n {inLineAlertProps.text ? (\n <InLineAlert\n data-testid=\"authInLineAlert\"\n className=\"auth-sign-in-form__notification\"\n type={inLineAlertProps.type}\n variant=\"secondary\"\n heading={inLineAlertProps.text}\n icon={inLineAlertProps.icon}\n additionalActions={additionalActionsAlert}\n />\n ) : null}\n <Form\n name=\"signIn_form\"\n className=\"auth-sign-in-form__form\"\n onSubmit={submitLogInUser}\n loading={isLoading}\n fieldsConfig={defaultEnhancedEmailFields}\n >\n <InputPassword\n hideStatusIndicator\n className=\"auth-sign-in-form__form__password\"\n autoComplete={'current-password'}\n errorMessage={\n passwordError ? translations.requiredFieldError : undefined\n }\n defaultValue={signInPasswordValue}\n onValue={handleSetPassword}\n onBlur={onBlurPassword}\n placeholder={translations.placeholder}\n floatingLabel={translations.floatingLabel}\n />\n <div className=\"auth-sign-in-form__form__buttons\">\n <div className=\"auth-sign-in-form__form__buttons__combine\">\n <Button\n type=\"button\"\n variant=\"tertiary\"\n style={{ padding: 0 }}\n buttonText={translations.buttonTertiary}\n className=\"auth-sign-in-form__button auth-sign-in-form__button--forgot\"\n enableLoader={false}\n onClick={forgotPasswordCallback}\n data-testid=\"switchToSignUp\"\n />\n {renderSignUpLink ? <span /> : null}\n {renderSignUpLink ? (\n <Button\n type=\"button\"\n variant=\"tertiary\"\n style={{ padding: 0 }}\n buttonText={translations.buttonSecondary}\n className=\"auth-sign-in-form__button auth-sign-in-form__button--signup\"\n enableLoader={false}\n onClick={onSignUpLinkClickCallback}\n />\n ) : null}\n </div>\n <Button\n type=\"submit\"\n buttonText={labels?.primaryButtonText ?? translations.buttonPrimary}\n variant=\"primary\"\n className=\"auth-sign-in-form__button auth-sign-in-form__button--submit\"\n enableLoader={isLoading}\n />\n </div>\n </Form>\n <div id=\"generateCustomerToken\" />\n </div>\n );\n};\n"],"names":["useSignInForm","emailConfirmationStatusMessage","translations","initialEmailValue","routeSignUp","routeForgotPassword","routeRedirectOnSignIn","onErrorCallback","setActiveComponent","onSuccessCallback","onSignUpLinkClick","handleSetInLineAlertProps","routeRedirectOnEmailConfirmationClose","apiErrorMessageOverride","userEmail","setUserEmail","useState","showEmailConfirmationForm","setShowEmailConfirmationForm","signInPasswordValue","setSignInPasswordValue","passwordError","setPasswordError","isSuccessful","setIsSuccessful","isLoading","setIsLoading","additionalActionsAlert","setAdditionalActionsAlert","actionsShowNotificationForm","useCallback","email","resendConfirmationEmail","handleSetPassword","value","useEffect","onBlurPassword","checkPasswordAndFocus","event","isValid","focusOnEmptyPasswordField","onAuthenticationSuccess","loginResponse","checkIsFunction","onAuthenticationFailed","_a","isIncludesMessage","errorMessage","submitLogInUser","formValues","getFormValues","password","getCustomerToken","forgotPasswordCallback","onSignUpLinkClickCallback","defaultEnhancedEmailFields","useMemo","fieldsList","simplifyTransformAttributesForm","DEFAULT__SIGN_IN_EMAIL_FIELD","el","handledOnPrimaryButtonClick","clearUrlAndReplace","url","token","useEmailConfirmation","enableEmailConfirmation","useText","setEmailConfirmationStatusMessage","search","params","response","confirmEmail","_c","_b","SignInForm","slots","labels","formSize","renderSignUpLink","hideCloseBtnOnEmailConfirmation","useCustomTranslations","inLineAlertProps","useInLineAlert","jsx","Slot","EmailConfirmationForm","jsxs","classes","Header","InLineAlert","Form","InputPassword","Button"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SignInForm.js","sources":["/@dropins/storefront-auth/src/hooks/components/useSignInForm.tsx","/@dropins/storefront-auth/src/lib/clearUrlAndReplace.ts","/@dropins/storefront-auth/src/hooks/useEmailConfirmation.tsx","/@dropins/storefront-auth/src/components/SignInForm/SignInForm.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { getFormValues } from '@/auth/lib/getFormValues';\nimport { useCallback, useState, useMemo, useEffect } from 'preact/hooks';\nimport { getCustomerToken, resendConfirmationEmail } from '@/auth/api';\nimport { AdditionalActionsAlertProps, useSignInFormProps } from '@/auth/types';\nimport { DEFAULT__SIGN_IN_EMAIL_FIELD } from '@/auth/configs/defaultCreateUserConfigs';\nimport { simplifyTransformAttributesForm } from '@/auth/lib/simplifyTransformAttributesForm';\nimport { checkIsFunction } from '@/auth/lib/checkIsFunction';\nimport { focusOnEmptyPasswordField } from '@/auth/lib/focusOnEmptyPasswordField';\n\nexport const useSignInForm = ({\n emailConfirmationStatusMessage,\n translations,\n initialEmailValue,\n routeSignUp,\n routeForgotPassword,\n routeRedirectOnSignIn,\n onErrorCallback,\n setActiveComponent,\n onSuccessCallback,\n onSignUpLinkClick,\n handleSetInLineAlertProps,\n routeRedirectOnEmailConfirmationClose,\n apiErrorMessageOverride,\n}: useSignInFormProps) => {\n const [userEmail, setUserEmail] = useState('');\n const [showEmailConfirmationForm, setShowEmailConfirmationForm] =\n useState(false);\n const [signInPasswordValue, setSignInPasswordValue] = useState('');\n const [passwordError, setPasswordError] = useState(false);\n const [isSuccessful, setIsSuccessful] = useState({\n userName: '',\n status: false,\n });\n const [isLoading, setIsLoading] = useState(false);\n const [additionalActionsAlert, setAdditionalActionsAlert] =\n useState<AdditionalActionsAlertProps>([]);\n\n const actionsShowNotificationForm = useCallback(\n async (email: string) => {\n handleSetInLineAlertProps();\n setShowEmailConfirmationForm(true);\n setPasswordError(false);\n setAdditionalActionsAlert([]);\n\n await resendConfirmationEmail(email);\n },\n [handleSetInLineAlertProps]\n );\n\n const handleSetPassword = useCallback((value: string) => {\n if (value.length) {\n setPasswordError(false);\n } else {\n setPasswordError(true);\n }\n setSignInPasswordValue(value);\n }, []);\n\n useEffect(() => {\n if (emailConfirmationStatusMessage?.text) {\n handleSetInLineAlertProps({\n text: emailConfirmationStatusMessage.text,\n type: emailConfirmationStatusMessage.status\n ? emailConfirmationStatusMessage.status\n : undefined,\n });\n }\n }, [emailConfirmationStatusMessage, handleSetInLineAlertProps]);\n\n const onBlurPassword = useCallback(() => {\n if (!signInPasswordValue.length) {\n setPasswordError(true);\n }\n }, [signInPasswordValue]);\n\n const checkPasswordAndFocus = useCallback(\n (event: SubmitEvent, isValid: boolean): boolean => {\n if (!signInPasswordValue.length) {\n setPasswordError(true);\n\n if (!isValid) return true;\n\n focusOnEmptyPasswordField(event, signInPasswordValue, '');\n return true;\n }\n\n return false;\n },\n [signInPasswordValue]\n );\n\n const onAuthenticationSuccess = useCallback(\n (event: SubmitEvent, loginResponse: Record<string, string>) => {\n if (loginResponse?.userName) {\n (event.target as HTMLFormElement).reset();\n\n if (checkIsFunction(routeRedirectOnSignIn)) {\n window.location.href = routeRedirectOnSignIn();\n } else {\n onSuccessCallback?.({\n userName: loginResponse?.userName,\n status: true,\n });\n\n setIsSuccessful({\n userName: loginResponse?.userName,\n status: true,\n });\n }\n }\n },\n [onSuccessCallback, routeRedirectOnSignIn]\n );\n\n const onAuthenticationFailed = useCallback(\n (loginResponse: { errorMessage: string; displayErrorMessage: string }, email: string) => {\n if (loginResponse?.errorMessage?.length) {\n setUserEmail(email);\n\n /**\n * TODO: Use error code when available, instead of comparing to response text\n *\n * This implementation is a temporary solution.\n * The backend functionality is planned to be improved to obtain accurate data that will help correctly identify error types and handle them.\n */\n // Use original errorMessage for detection (not the override)\n const isIncludesMessage = loginResponse.errorMessage.includes(\n \"This account isn't confirmed. Verify and try again.\"\n );\n\n // Use displayErrorMessage for display (respects apiErrorMessageOverride)\n const errorMessage: string = isIncludesMessage\n ? translations.resendEmailInformationText\n : loginResponse.displayErrorMessage;\n\n if (isIncludesMessage) {\n setAdditionalActionsAlert([\n {\n label: translations.resendEmailButtonText,\n onClick: () => {\n actionsShowNotificationForm(email);\n },\n },\n ]);\n } else {\n setAdditionalActionsAlert([]);\n }\n\n handleSetInLineAlertProps({\n text: errorMessage,\n type: 'error',\n });\n\n setSignInPasswordValue('');\n }\n },\n [\n actionsShowNotificationForm,\n handleSetInLineAlertProps,\n translations.resendEmailButtonText,\n translations.resendEmailInformationText,\n ]\n );\n\n const submitLogInUser = useCallback(\n async (event: SubmitEvent, isValid: boolean): Promise<void> => {\n handleSetInLineAlertProps();\n\n if (checkPasswordAndFocus(event, isValid)) return;\n\n setIsLoading(true);\n\n const formValues = getFormValues(event.target);\n const isFormComplete = Object.values(formValues).every((value) => value);\n\n if (isFormComplete) {\n const { email, password } = formValues;\n\n const loginResponse = await getCustomerToken({\n email,\n password,\n handleSetInLineAlertProps,\n onErrorCallback,\n translations,\n apiErrorMessageOverride,\n });\n\n onAuthenticationFailed(loginResponse, email);\n onAuthenticationSuccess(event, loginResponse);\n\n setPasswordError(false);\n }\n\n setIsLoading(false);\n },\n [\n translations,\n onErrorCallback,\n checkPasswordAndFocus,\n onAuthenticationFailed,\n onAuthenticationSuccess,\n handleSetInLineAlertProps,\n apiErrorMessageOverride,\n ]\n );\n\n const forgotPasswordCallback = useCallback(() => {\n if (checkIsFunction(setActiveComponent)) {\n setActiveComponent('resetPasswordForm');\n\n return;\n }\n\n if (checkIsFunction(routeForgotPassword)) {\n window.location.href = routeForgotPassword();\n }\n }, [routeForgotPassword, setActiveComponent]);\n\n const onSignUpLinkClickCallback = useCallback(() => {\n if (checkIsFunction(onSignUpLinkClick)) {\n onSignUpLinkClick();\n }\n\n if (checkIsFunction(setActiveComponent)) {\n setActiveComponent('signUpForm');\n\n return;\n }\n\n if (checkIsFunction(routeSignUp)) {\n window.location.href = routeSignUp();\n }\n }, [onSignUpLinkClick, routeSignUp, setActiveComponent]);\n\n const defaultEnhancedEmailFields: any = useMemo(() => {\n const fieldsList = simplifyTransformAttributesForm(\n DEFAULT__SIGN_IN_EMAIL_FIELD\n );\n\n if (!initialEmailValue?.length) return fieldsList;\n\n return fieldsList?.map((el: any) => ({\n ...el,\n defaultValue: initialEmailValue,\n }));\n }, [initialEmailValue]);\n\n const handledOnPrimaryButtonClick = useCallback(() => {\n handleSetInLineAlertProps();\n\n if (checkIsFunction(routeRedirectOnEmailConfirmationClose)) {\n window.location.href = routeRedirectOnEmailConfirmationClose();\n } else {\n setShowEmailConfirmationForm(false);\n }\n }, [handleSetInLineAlertProps, routeRedirectOnEmailConfirmationClose]);\n\n return {\n additionalActionsAlert,\n userEmail,\n defaultEnhancedEmailFields,\n passwordError,\n isSuccessful,\n isLoading,\n signInPasswordValue,\n showEmailConfirmationForm,\n setShowEmailConfirmationForm,\n setSignInPasswordValue,\n submitLogInUser,\n forgotPasswordCallback,\n onSignUpLinkClickCallback,\n handledOnPrimaryButtonClick,\n handleSetPassword,\n onBlurPassword,\n };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const clearUrlAndReplace = () => {\n let url = new URL(window.location.href);\n\n let email = url.searchParams.get('email');\n let token = url.searchParams.get('key');\n\n if (email && token) {\n url.searchParams.delete('email');\n url.searchParams.delete('key');\n\n window.history.replaceState({}, document.title, url.toString());\n }\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { useEffect, useState } from 'preact/hooks';\nimport { clearUrlAndReplace } from '../lib/clearUrlAndReplace';\nimport { confirmEmail } from '../api';\nimport { useText } from '@adobe-commerce/elsie/i18n';\n\ninterface useEmailConfirmationProps {\n enableEmailConfirmation: boolean;\n}\n\n// The client receives a confirmation of the validation via email. When the client follows the provided link, they are directed to the login page with three query parameters. If these parameters are present, we make a request to validate the status. This request returns a response that we display to the user.\nexport const useEmailConfirmation = ({\n enableEmailConfirmation,\n}: useEmailConfirmationProps) => {\n const translations = useText({\n accountConfirmMessage: 'Auth.EmailConfirmationForm.accountConfirmMessage',\n accountConfirmationEmailSuccessMessage:\n 'Auth.EmailConfirmationForm.accountConfirmationEmailSuccessMessage',\n });\n const [emailConfirmationStatusMessage, setEmailConfirmationStatusMessage] =\n useState<{\n text: string;\n status: '' | 'success' | 'error';\n }>({\n text: '',\n status: '',\n });\n\n useEffect(() => {\n if (enableEmailConfirmation) {\n const { search } = window.location;\n\n if (search.includes('email=') && search.includes('key=')) {\n const validateEmailStatus = async () => {\n const params = new URLSearchParams(search);\n\n const response = await confirmEmail({\n customerEmail: params.get('email') as string,\n customerConfirmationKey: params.get('key') as string,\n });\n\n if (!response) return null;\n\n if (response?.errors?.length) {\n setEmailConfirmationStatusMessage({\n text: response?.errors[0].message,\n status: 'error',\n });\n } else {\n setEmailConfirmationStatusMessage({\n text: response.data.confirmEmail.customer.email\n ? translations.accountConfirmationEmailSuccessMessage.replace(\n '{email}',\n response?.data?.confirmEmail.customer?.email\n )\n : translations.accountConfirmMessage,\n status: 'success',\n });\n\n clearUrlAndReplace();\n }\n };\n\n validateEmailStatus();\n }\n }\n }, [enableEmailConfirmation, translations]);\n\n return { emailConfirmationStatusMessage };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { classes, Slot } from '@adobe-commerce/elsie/lib';\nimport { useSignInForm } from '@/auth/hooks/components/useSignInForm';\nimport { SignInFormProps } from '@/auth/types';\nimport { useEmailConfirmation } from '@/auth/hooks/useEmailConfirmation';\nimport { Form, Button, EmailConfirmationForm } from '@/auth/components';\nimport { useInLineAlert } from '@/auth/hooks/useInLineAlert';\nimport { Header, InLineAlert, InputPassword } from '@adobe-commerce/elsie/components';\nimport '@/auth/components/SignInForm/SignInForm.css';\nimport { useCustomTranslations } from '@/auth/hooks/useCustomTranslations';\n\nexport const SignInForm: FunctionComponent<SignInFormProps> = ({\n slots,\n labels,\n formSize = 'default',\n initialEmailValue = '',\n renderSignUpLink = false,\n enableEmailConfirmation = false,\n hideCloseBtnOnEmailConfirmation = false,\n routeRedirectOnEmailConfirmationClose,\n routeRedirectOnSignIn,\n routeForgotPassword,\n routeSignUp,\n onSuccessCallback,\n setActiveComponent,\n onErrorCallback,\n onSignUpLinkClick,\n apiErrorMessageOverride,\n}) => {\n /**\n * useCustomTranslations is required to support extensibility of error messages.\n * Ensure all error-related translation paths include \".default\"\n * to allow future handling of dynamic or nested error messages.\n */\n const translations = useCustomTranslations({\n title: 'Auth.SignInForm.title',\n buttonPrimary: 'Auth.SignInForm.buttonPrimary',\n buttonSecondary: 'Auth.SignInForm.buttonSecondary',\n buttonTertiary: 'Auth.SignInForm.buttonTertiary',\n resendEmailInformationText:\n 'Auth.Notification.resendEmailNotification.informationText',\n resendEmailButtonText:\n 'Auth.Notification.resendEmailNotification.buttonText',\n customerTokenErrorMessage: 'Auth.Api.customerTokenErrorMessage',\n placeholder: 'Auth.InputPassword.placeholder',\n floatingLabel: 'Auth.InputPassword.floatingLabel',\n requiredFieldError: 'Auth.FormText.requiredFieldError.default',\n });\n\n const { emailConfirmationStatusMessage } = useEmailConfirmation({\n enableEmailConfirmation,\n });\n\n const { inLineAlertProps, handleSetInLineAlertProps } = useInLineAlert();\n\n const {\n userEmail,\n additionalActionsAlert,\n defaultEnhancedEmailFields,\n passwordError,\n isSuccessful,\n isLoading,\n signInPasswordValue,\n showEmailConfirmationForm,\n submitLogInUser,\n forgotPasswordCallback,\n onSignUpLinkClickCallback,\n handledOnPrimaryButtonClick,\n handleSetPassword,\n onBlurPassword,\n } = useSignInForm({\n translations,\n emailConfirmationStatusMessage,\n initialEmailValue,\n routeSignUp,\n routeForgotPassword,\n routeRedirectOnSignIn,\n setActiveComponent,\n onErrorCallback,\n onSuccessCallback,\n onSignUpLinkClick,\n handleSetInLineAlertProps,\n routeRedirectOnEmailConfirmationClose,\n apiErrorMessageOverride,\n });\n\n if (isSuccessful.status && slots?.SuccessNotification) {\n return (\n <Slot\n data-testid=\"successNotificationTestId\"\n name=\"SuccessNotification\"\n slot={slots?.SuccessNotification}\n context={{ isSuccessful }}\n />\n );\n }\n\n if (showEmailConfirmationForm) {\n return (\n <EmailConfirmationForm\n formSize={formSize}\n userEmail={userEmail}\n inLineAlertProps={inLineAlertProps}\n hideCloseBtnOnEmailConfirmation={hideCloseBtnOnEmailConfirmation}\n handleSetInLineAlertProps={handleSetInLineAlertProps}\n onPrimaryButtonClick={handledOnPrimaryButtonClick}\n />\n );\n }\n\n const slotContext = {\n isLoading,\n passwordError,\n isSuccessful,\n };\n\n return (\n <div\n className={classes([\n 'auth-sign-in-form',\n `auth-sign-in-form--${formSize}`,\n ])}\n data-testid=\"signInForm\"\n >\n <Slot\n name=\"Title\"\n data-testid=\"title\"\n slot={slots?.Title}\n context={{ ...slotContext }}\n >\n <Header\n title={labels?.formTitleText ?? translations.title}\n divider={false}\n className=\"auth-sign-in-form__title\"\n />\n </Slot>\n {inLineAlertProps.text ? (\n <InLineAlert\n data-testid=\"authInLineAlert\"\n className=\"auth-sign-in-form__notification\"\n type={inLineAlertProps.type}\n variant=\"secondary\"\n heading={inLineAlertProps.text}\n icon={inLineAlertProps.icon}\n additionalActions={additionalActionsAlert}\n />\n ) : null}\n <Form\n name=\"signIn_form\"\n className=\"auth-sign-in-form__form\"\n onSubmit={submitLogInUser}\n loading={isLoading}\n fieldsConfig={defaultEnhancedEmailFields}\n formSlot={{\n name: 'Form',\n slot: slots?.Form,\n context: slotContext,\n dataTestId: 'form',\n }}\n >\n <InputPassword\n hideStatusIndicator\n className=\"auth-sign-in-form__form__password\"\n autoComplete={'current-password'}\n errorMessage={\n passwordError ? translations.requiredFieldError : undefined\n }\n defaultValue={signInPasswordValue}\n onValue={handleSetPassword}\n onBlur={onBlurPassword}\n placeholder={translations.placeholder}\n floatingLabel={translations.floatingLabel}\n />\n <div className=\"auth-sign-in-form__form__buttons__wrapper\">\n <Slot\n name=\"Buttons\"\n className=\"auth-sign-in-form__form__buttons\"\n data-testid=\"buttons\"\n slot={slots?.Buttons}\n context={{ ...slotContext }}\n >\n <div className=\"auth-sign-in-form__form__buttons__combine\">\n <Button\n type=\"button\"\n variant=\"tertiary\"\n style={{ padding: 0 }}\n buttonText={translations.buttonTertiary}\n className=\"auth-sign-in-form__button auth-sign-in-form__button--forgot\"\n enableLoader={false}\n onClick={forgotPasswordCallback}\n data-testid=\"switchToSignUp\"\n />\n {renderSignUpLink ? (\n <>\n <span />\n <Button\n type=\"button\"\n variant=\"tertiary\"\n style={{ padding: 0 }}\n buttonText={translations.buttonSecondary}\n className=\"auth-sign-in-form__button auth-sign-in-form__button--signup\"\n enableLoader={false}\n onClick={onSignUpLinkClickCallback}\n />\n </>\n ) : null}\n </div>\n <Button\n type=\"submit\"\n buttonText={labels?.primaryButtonText ?? translations.buttonPrimary}\n variant=\"primary\"\n className=\"auth-sign-in-form__button auth-sign-in-form__button--submit\"\n enableLoader={isLoading}\n />\n </Slot>\n </div>\n </Form>\n <div id=\"generateCustomerToken\" />\n </div>\n );\n};\n"],"names":["useSignInForm","emailConfirmationStatusMessage","translations","initialEmailValue","routeSignUp","routeForgotPassword","routeRedirectOnSignIn","onErrorCallback","setActiveComponent","onSuccessCallback","onSignUpLinkClick","handleSetInLineAlertProps","routeRedirectOnEmailConfirmationClose","apiErrorMessageOverride","userEmail","setUserEmail","useState","showEmailConfirmationForm","setShowEmailConfirmationForm","signInPasswordValue","setSignInPasswordValue","passwordError","setPasswordError","isSuccessful","setIsSuccessful","isLoading","setIsLoading","additionalActionsAlert","setAdditionalActionsAlert","actionsShowNotificationForm","useCallback","email","resendConfirmationEmail","handleSetPassword","value","useEffect","onBlurPassword","checkPasswordAndFocus","event","isValid","focusOnEmptyPasswordField","onAuthenticationSuccess","loginResponse","checkIsFunction","onAuthenticationFailed","_a","isIncludesMessage","errorMessage","submitLogInUser","formValues","getFormValues","password","getCustomerToken","forgotPasswordCallback","onSignUpLinkClickCallback","defaultEnhancedEmailFields","useMemo","fieldsList","simplifyTransformAttributesForm","DEFAULT__SIGN_IN_EMAIL_FIELD","el","handledOnPrimaryButtonClick","clearUrlAndReplace","url","token","useEmailConfirmation","enableEmailConfirmation","useText","setEmailConfirmationStatusMessage","search","params","response","confirmEmail","_c","_b","SignInForm","slots","labels","formSize","renderSignUpLink","hideCloseBtnOnEmailConfirmation","useCustomTranslations","inLineAlertProps","useInLineAlert","jsx","Slot","EmailConfirmationForm","slotContext","jsxs","classes","Header","InLineAlert","Form","InputPassword","Button","Fragment"],"mappings":"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"}
|
package/chunks/SignUpForm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*! Copyright 2026 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import{jsx as c,jsxs as
|
|
3
|
+
import{jsx as c,jsxs as O}from"@dropins/tools/preact-jsx-runtime.js";import{Slot as J,classes as Fr}from"@dropins/tools/lib.js";import"@dropins/tools/event-bus.js";import"@dropins/tools/recaptcha.js";import{g as Pr,c as Er,a as br}from"./createCustomerAddress.js";import{useState as w,useEffect as Nr,useCallback as C,useMemo as _r}from"@dropins/tools/preact-hooks.js";import{s as ur,b as Lr}from"./simplifyTransformAttributesForm.js";import{v as yr,u as Mr,a as Ur}from"./usePasswordValidationMessage.js";import{a as xr}from"./getCustomerToken.js";import{p as Cr,E as Sr}from"./acdl.js";import{c as Q,g as Tr,u as qr,B as dr}from"./Button2.js";import{c as vr}from"./transform-attributes-form.js";import{f as cr,E as Br}from"./focusOnEmptyPasswordField.js";import{Header as Ar,InLineAlert as Kr,InputPassword as fr,Field as Ir,Checkbox as jr}from"@dropins/tools/components.js";import{u as Gr,F as Hr}from"./Button.js";import{S as Vr}from"./SkeletonLoader.js";const lr=(m,e)=>e!=null&&e.length?m.map(r=>{var f;const t=(f=e.find(({code:s})=>s===r.code))==null?void 0:f.defaultValue;return t?{...r,defaultValue:t}:r}):m,Wr=({inputsDefaultValueSet:m,fieldsConfigForApiVersion1:e,apiVersion2:r})=>{const[t,f]=w([]);return Nr(()=>{(async()=>{if(r){const a=await Pr("customer_account_create");if(a!=null&&a.length)if(m!=null&&m.length){const b=lr(a,m);f(b)}else f(a)}else{const a=ur(Lr),b=ur(e),L=lr(a,m);f(e&&e.length?b:L)}})()},[r,e,m]),{fieldsListConfigs:t.map(s=>({...s,...s.code==="email"?{autocomplete:"username"}:{}}))}},$r=(m,e)=>{const r=["dob","email","firstname","gender","lastname","middlename","password","prefix","suffix","taxvat"],t=vr(m,"snakeCase",{firstName:"firstname",lastName:"lastname"});if(!e)return{...t,...t!=null&&t.gender?{gender:Number(t==null?void 0:t.gender)}:{}};const f={},s=[];return Object.keys(t).forEach(a=>{r.includes(a)?f[a]=a.includes("gender")?Number(t[a]):t[a]:s.push({attribute_code:a,value:t[a]})}),s.length>0&&(f.custom_attributes=s),f},Or=({requireRetypePassword:m,addressesData:e,translations:r,isEmailConfirmationRequired:t,apiVersion2:f=!0,passwordConfigs:s,isAutoSignInEnabled:a,routeRedirectOnSignIn:b,routeSignIn:L,onErrorCallback:S,onSuccessCallback:h,setActiveComponent:F,handleSetInLineAlertProps:P,routeRedirectOnEmailConfirmationClose:T})=>{const[o,u]=w(!1),[n,G]=w(""),[q,d]=w(""),[H,v]=w(""),[X,V]=w(!1),[Y,B]=w({userName:"",status:!1}),[l,y]=w(""),[Z,W]=w(!1),[A,M]=w(!1),[k,z]=w(!0),R=C(i=>{const p=i.target.value;u(!p.length),p.length&&n.length&&p!==n&&d(r.passwordMismatch)},[n,r.passwordMismatch]),D=C(i=>{const p=i.target.value;d(p.length?"":r.requiredFieldError),p.length&&l.length&&p!==l&&d(r.passwordMismatch)},[l,r.passwordMismatch,r.requiredFieldError]),rr=C(i=>{G(i),d(i?l===i?"":r.passwordMismatch:r.requiredFieldError)},[r,l]),er=C(({target:i})=>{z(i.checked)},[]),tr=C(()=>{if(Q(F)){F("signInForm");return}Q(L)&&(window.location.href=L())},[F,L]),K=C(i=>{y(i),u(!i.length),i===n&&d("")},[n]),E=C(()=>{P(),y(""),Q(T)?window.location.href=T():(V(!1),F==null||F("signInForm"))},[P,T,F]),I=()=>{W(!0),M(!1)},or=(i,p)=>{const ir=l.length&&n.length,j=l!==n,N=()=>{u(!l.length),n||d(r.requiredFieldError),ir&&j&&d(r.passwordMismatch)},U=()=>{d(n.length?r.passwordMismatch:r.requiredFieldError),cr(i,l,n)};return p?m&&(q.length||j)?(I(),U(),!0):(cr(i,l,""),N(),!1):(I(),N(),!0)};return{showPasswordErrorMessage:o,confirmPassword:n,confirmPasswordMessage:q,isKeepMeLogged:k,userEmail:H,showEmailConfirmationForm:X,isSuccessful:Y,isClickSubmit:Z,signUpPasswordValue:l,isLoading:A,onSubmitSignUp:async(i,p)=>{var sr,ar,nr;if(P(),d(""),M(!0),or(i,p))return;const{confirmPasswordField:ir,...j}=Tr(i.target),{email:N,password:U}=j,gr=(s==null?void 0:s.requiredCharacterClasses)||0,hr=(s==null?void 0:s.minLength)||1;if(!yr(U,gr)||hr>(U==null?void 0:U.length)){I();return}const pr=$r({...j},f),_=await Er(pr,f);if((sr=_==null?void 0:_.errors)!=null&&sr.length){const{errors:x}=_;P==null||P({type:"error",text:(ar=x[0])==null?void 0:ar.message}),S==null||S(x),v(N)}else{const x=_==null?void 0:_.firstName;if(Cr(Sr.CREATE_ACCOUNT_EVENT,{..._}),t||!a){if(h==null||h({userName:x,userEmail:N,status:!0}),t){(nr=i.target)==null||nr.reset(),y(""),V(!0),v(N),M(!1);return}if(!a){M(!1),B({userName:x,status:!0});return}}const g=await xr({email:N,password:U,translations:r,handleSetInLineAlertProps:P,onErrorCallback:S});if(g!=null&&g.userName){if(e!=null&&e.length)for(const mr of e)try{await br(mr)}catch(wr){console.error(r.failedCreateCustomerAddress,mr,wr)}h==null||h({userName:g==null?void 0:g.userName,userEmail:g==null?void 0:g.userEmail,status:!0}),Q(b)?window.location.href=b():B({userName:g==null?void 0:g.userName,status:!0})}else h==null||h({userName:x,userEmail:N,status:!0}),B({userName:x,status:!0})}M(!1)},signInButton:tr,handleSetSignUpPasswordValue:K,onKeepMeLoggedChange:er,handleHideEmailConfirmationForm:E,handleConfirmPasswordChange:rr,onBlurPassword:R,onBlurConfirmPassword:D}},ne=({requireRetypePassword:m=!1,addressesData:e,formSize:r="default",inputsDefaultValueSet:t,fieldsConfigForApiVersion1:f,apiVersion2:s=!0,isAutoSignInEnabled:a=!0,hideCloseBtnOnEmailConfirmation:b=!1,routeRedirectOnEmailConfirmationClose:L,routeRedirectOnSignIn:S,routeSignIn:h,onErrorCallback:F,onSuccessCallback:P,setActiveComponent:T,slots:o})=>{const u=Gr({title:"Auth.SignUpForm.title",buttonPrimary:"Auth.SignUpForm.buttonPrimary",buttonSecondary:"Auth.SignUpForm.buttonSecondary",keepMeLoggedText:"Auth.SignUpForm.keepMeLoggedText",customerTokenErrorMessage:"Auth.Api.customerTokenErrorMessage",failedCreateCustomerAddress:"Auth.SignUpForm.failedCreateCustomerAddress",placeholder:"Auth.InputPassword.placeholder",floatingLabel:"Auth.InputPassword.floatingLabel",requiredFieldError:"Auth.FormText.requiredFieldError.default",confirmPasswordPlaceholder:"Auth.SignUpForm.confirmPassword.placeholder",confirmPasswordFloatingLabel:"Auth.SignUpForm.confirmPassword.floatingLabel",passwordMismatch:"Auth.SignUpForm.confirmPassword.passwordMismatch"}),{passwordConfigs:n,isEmailConfirmationRequired:G}=Mr(),{fieldsListConfigs:q}=Wr({fieldsConfigForApiVersion1:f,apiVersion2:s,inputsDefaultValueSet:t}),{inLineAlertProps:d,handleSetInLineAlertProps:H}=qr(),{showPasswordErrorMessage:v,confirmPassword:X,confirmPasswordMessage:V,isKeepMeLogged:Y,userEmail:B,showEmailConfirmationForm:l,isSuccessful:y,isClickSubmit:Z,signUpPasswordValue:W,isLoading:A,onSubmitSignUp:M,signInButton:k,handleSetSignUpPasswordValue:z,onKeepMeLoggedChange:R,handleHideEmailConfirmationForm:D,handleConfirmPasswordChange:rr,onBlurPassword:er,onBlurConfirmPassword:tr}=Or({requireRetypePassword:m,addressesData:e,translations:u,isEmailConfirmationRequired:G,apiVersion2:s,passwordConfigs:n,isAutoSignInEnabled:a,routeRedirectOnSignIn:S,routeSignIn:h,onErrorCallback:F,onSuccessCallback:P,setActiveComponent:T,handleSetInLineAlertProps:H,routeRedirectOnEmailConfirmationClose:L}),{isValidUniqueSymbols:K,defaultLengthMessage:E}=Ur({password:W,isClickSubmit:Z,passwordConfigs:n}),I=_r(()=>v?u.requiredFieldError:K==="error"||(E==null?void 0:E.status)==="error"?" ":"",[E==null?void 0:E.status,K,v,u.requiredFieldError]),or=!G&&(e==null?void 0:e.length);if(!q.length&&s)return c("div",{className:`auth-sign-up-form auth-sign-up-form--${r} skeleton-loader`,"data-testid":"SignUpForm",children:c(Vr,{activeSkeleton:"signUpForm"})});if(y.status&&(o!=null&&o.SuccessNotification))return c(J,{"data-testid":"successNotificationTestId",name:"SuccessNotification",slot:o==null?void 0:o.SuccessNotification,context:{isSuccessful:y}});if(l)return c(Br,{formSize:r,userEmail:B,inLineAlertProps:d,hideCloseBtnOnEmailConfirmation:b,handleSetInLineAlertProps:H,onPrimaryButtonClick:D});const $={isLoading:A,isSuccessful:y};return O("div",{className:Fr(["auth-sign-up-form",`auth-sign-up-form--${r}`]),"data-testid":"SignUpForm",children:[c(J,{name:"Title","data-testid":"title",slot:o==null?void 0:o.Title,context:{...$},children:c(Ar,{title:u.title,divider:!1,className:"auth-sign-up-form__title"})}),d.text?c(Kr,{className:"auth-sign-up-form__notification",type:d.type,variant:"secondary",heading:d.text,icon:d.icon}):null,O(Hr,{onSubmit:M,className:"auth-sign-up-form__form",loading:A,name:"signUp_form",fieldsConfig:q,slots:o,formSlot:{name:"Form",slot:o==null?void 0:o.Form,context:$,dataTestId:"form"},children:[O(fr,{validateLengthConfig:E,className:"auth-sign-up-form__form__field",autoComplete:"current-password",name:"password",minLength:n==null?void 0:n.minLength,errorMessage:I,defaultValue:W,uniqueSymbolsStatus:K,requiredCharacterClasses:n==null?void 0:n.requiredCharacterClasses,onValue:z,placeholder:u.placeholder,floatingLabel:u.floatingLabel,onBlur:er,children:[m?c("div",{className:"auth-sign-up-form__form__confirm-wrapper",children:c(fr,{className:"auth-sign-up-form__form__field auth-sign-up-form__form__field--confirm-password",autoComplete:"confirmPassword",name:"confirmPasswordField",placeholder:u.confirmPasswordPlaceholder,floatingLabel:u.confirmPasswordFloatingLabel,errorMessage:V,defaultValue:X,onValue:rr,onBlur:tr})}):null,or?c("div",{className:"auth-sign-up-form__automatic-login","data-testid":"automaticLogin",children:c(Ir,{children:c(jr,{name:"",placeholder:u.keepMeLoggedText,label:u.keepMeLoggedText,checked:Y,onChange:R})})}):null]}),c(J,{name:"PrivacyPolicyConsent","data-testid":"privacyPolicyConsent",slot:o==null?void 0:o.PrivacyPolicyConsent},"privacyPolicyConsent"),O(J,{name:"Buttons",className:"auth-sign-up-form-buttons","data-testid":"buttons",slot:o==null?void 0:o.Buttons,context:{...$},children:[c(dr,{className:"auth-sign-up-form-buttons--signin",type:"button",variant:"tertiary",style:{padding:0},buttonText:u.buttonSecondary,enableLoader:!1,onClick:k}),c(dr,{type:"submit",buttonText:u.buttonPrimary,variant:"primary",enableLoader:A})]})]}),c("div",{id:"createCustomerV2"})]})};export{ne as S};
|
|
4
4
|
//# sourceMappingURL=SignUpForm.js.map
|
package/chunks/SignUpForm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SignUpForm.js","sources":["/@dropins/storefront-auth/src/hooks/api/useGetAttributesForm.tsx","/@dropins/storefront-auth/src/lib/mergeFormObjects.ts","/@dropins/storefront-auth/src/hooks/components/useSignUpForm.tsx","/@dropins/storefront-auth/src/components/SignUpForm/SignUpForm.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { getAttributesForm } from '@/auth/api';\nimport { useEffect, useState } from 'preact/hooks';\nimport { inputsDefaultValueSetProps } from '@/auth/types';\nimport { DEFAULT_SIGN_UP_FIELDS } from '@/auth/configs/defaultCreateUserConfigs';\nimport { AttributesFormItemsProps } from '@/auth/data/models';\nimport { simplifyTransformAttributesForm } from '@/auth/lib/simplifyTransformAttributesForm';\n\ninterface UseGetAttributesFormProps {\n fieldsConfigForApiVersion1: {}[];\n apiVersion2: boolean;\n inputsDefaultValueSet?: inputsDefaultValueSetProps[];\n}\n\nconst applyDefaultValuesToFields = (\n fields: AttributesFormItemsProps[],\n defaultValues: inputsDefaultValueSetProps[] | any\n) => {\n if (!defaultValues?.length) return fields;\n\n return fields.map((el) => {\n const defaultValue = defaultValues.find(\n ({ code }: inputsDefaultValueSetProps) => code === el.code\n )?.defaultValue;\n\n return defaultValue ? { ...el, defaultValue } : el;\n });\n};\n\nexport const useGetAttributesForm = ({\n inputsDefaultValueSet,\n fieldsConfigForApiVersion1,\n apiVersion2,\n}: UseGetAttributesFormProps) => {\n const [fieldsListConfigs, setFieldsListConfigs] = useState<\n AttributesFormItemsProps[]\n >([]);\n\n useEffect(() => {\n const fetchFieldsConfig = async () => {\n if (apiVersion2) {\n const response = await getAttributesForm('customer_account_create');\n\n if (response?.length) {\n if (inputsDefaultValueSet?.length) {\n const fieldsWithDefaultValues: any = applyDefaultValuesToFields(\n response,\n inputsDefaultValueSet\n );\n\n setFieldsListConfigs(fieldsWithDefaultValues);\n } else {\n setFieldsListConfigs(response);\n }\n }\n } else {\n const transformAttributesFields = simplifyTransformAttributesForm(\n DEFAULT_SIGN_UP_FIELDS\n );\n const transformFieldsConfigForApiVersion1 =\n simplifyTransformAttributesForm(fieldsConfigForApiVersion1);\n\n const defaultFieldsWithDefaultValues: any = applyDefaultValuesToFields(\n transformAttributesFields as AttributesFormItemsProps[],\n inputsDefaultValueSet\n );\n\n setFieldsListConfigs(\n fieldsConfigForApiVersion1 && fieldsConfigForApiVersion1.length\n ? transformFieldsConfigForApiVersion1\n : defaultFieldsWithDefaultValues\n );\n }\n };\n\n fetchFieldsConfig();\n }, [apiVersion2, fieldsConfigForApiVersion1, inputsDefaultValueSet]);\n\n return {\n fieldsListConfigs: fieldsListConfigs.map((element) => ({\n ...element,\n ...(element.code === 'email' ? { autocomplete: 'username' } : {}),\n })),\n };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { convertKeysCase } from './convertCase';\n\nexport const mergeFormObjects = (\n input: Record<string, any>,\n apiVersion2: boolean\n) => {\n const baseKeys = [\n 'dob',\n 'email',\n 'firstname',\n 'gender',\n 'lastname',\n 'middlename',\n 'password',\n 'prefix',\n 'suffix',\n 'taxvat',\n ];\n\n const newInputs = convertKeysCase(input, 'snakeCase', {\n firstName: 'firstname',\n lastName: 'lastname',\n });\n\n if (!apiVersion2)\n return {\n ...newInputs,\n ...(newInputs?.gender ? { gender: Number(newInputs?.gender) } : {}),\n };\n\n const result: Record<string, any> = {};\n const customAttributes: Record<string, any>[] = [];\n\n Object.keys(newInputs).forEach((key: string) => {\n if (baseKeys.includes(key)) {\n result[key] = key.includes('gender')\n ? Number(newInputs[key])\n : newInputs[key];\n } else {\n customAttributes.push({\n attribute_code: key,\n value: newInputs[key],\n });\n }\n });\n\n if (customAttributes.length > 0) {\n result.custom_attributes = customAttributes;\n }\n\n return result;\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport {\n createCustomer,\n createCustomerAddress,\n getCustomerToken,\n} from '@/auth/api';\nimport { getFormValues } from '@/auth/lib/getFormValues';\nimport { mergeFormObjects } from '@/auth/lib/mergeFormObjects';\nimport { validationUniqueSymbolsPassword } from '@/auth/lib/validationUniqueSymbolsPassword';\nimport { useCallback, useState } from 'preact/hooks';\nimport { UseSingUpFormProps } from '@/auth/types';\nimport { EventsList, publishEvents } from '@/auth/lib/acdl';\nimport { checkIsFunction } from '@/auth/lib/checkIsFunction';\nimport { focusOnEmptyPasswordField } from '@/auth/lib/focusOnEmptyPasswordField';\n\nexport const useSignUpForm = ({\n requireRetypePassword,\n addressesData,\n translations,\n isEmailConfirmationRequired,\n apiVersion2 = true,\n passwordConfigs,\n isAutoSignInEnabled,\n routeRedirectOnSignIn,\n routeSignIn,\n onErrorCallback,\n onSuccessCallback,\n setActiveComponent,\n handleSetInLineAlertProps,\n routeRedirectOnEmailConfirmationClose,\n}: UseSingUpFormProps) => {\n const [showPasswordErrorMessage, setShowPasswordErrorMessage] =\n useState<boolean>(false);\n const [confirmPassword, setConfirmPassword] = useState('');\n const [confirmPasswordMessage, setConfirmPasswordMessage] = useState('');\n const [userEmail, setUserEmail] = useState('');\n const [showEmailConfirmationForm, setShowEmailConfirmationForm] =\n useState(false);\n const [isSuccessful, setIsSuccessful] = useState({\n userName: '',\n status: false,\n });\n const [signUpPasswordValue, setSignUpPasswordValue] = useState('');\n const [isClickSubmit, setIsClickSubmit] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [isKeepMeLogged, setIsKeepMeLogged] = useState(true);\n\n const onBlurPassword = useCallback(\n (event: Event) => {\n const value = (event.target as HTMLInputElement).value;\n\n setShowPasswordErrorMessage(!value.length);\n\n if (value.length && confirmPassword.length && value !== confirmPassword) {\n setConfirmPasswordMessage(translations.passwordMismatch);\n }\n },\n [confirmPassword, translations.passwordMismatch]\n );\n\n const onBlurConfirmPassword = useCallback(\n (event: Event) => {\n const value = (event.target as HTMLInputElement).value;\n\n setConfirmPasswordMessage(\n value.length ? '' : translations.requiredFieldError\n );\n\n if (\n value.length &&\n signUpPasswordValue.length &&\n value !== signUpPasswordValue\n ) {\n setConfirmPasswordMessage(translations.passwordMismatch);\n }\n },\n [\n signUpPasswordValue,\n translations.passwordMismatch,\n translations.requiredFieldError,\n ]\n );\n\n const handleConfirmPasswordChange = useCallback(\n (value: string) => {\n setConfirmPassword(value);\n\n if (value) {\n setConfirmPasswordMessage(\n signUpPasswordValue === value ? '' : translations.passwordMismatch\n );\n } else {\n setConfirmPasswordMessage(translations.requiredFieldError);\n }\n },\n [translations, signUpPasswordValue]\n );\n\n const onKeepMeLoggedChange = useCallback(({ target }: any) => {\n setIsKeepMeLogged(target.checked);\n }, []);\n\n const signInButton = useCallback(() => {\n if (checkIsFunction(setActiveComponent)) {\n setActiveComponent('signInForm');\n\n return;\n }\n\n if (checkIsFunction(routeSignIn)) {\n window.location.href = routeSignIn();\n }\n }, [setActiveComponent, routeSignIn]);\n\n const handleSetSignUpPasswordValue = useCallback(\n (value: string) => {\n setSignUpPasswordValue(value);\n setShowPasswordErrorMessage(!value.length);\n if (value === confirmPassword) {\n setConfirmPasswordMessage('');\n }\n },\n [confirmPassword]\n );\n\n const handleHideEmailConfirmationForm = useCallback(() => {\n handleSetInLineAlertProps();\n setSignUpPasswordValue('');\n\n if (checkIsFunction(routeRedirectOnEmailConfirmationClose)) {\n window.location.href = routeRedirectOnEmailConfirmationClose();\n } else {\n setShowEmailConfirmationForm(false);\n setActiveComponent?.('signInForm');\n }\n }, [\n handleSetInLineAlertProps,\n routeRedirectOnEmailConfirmationClose,\n setActiveComponent,\n ]);\n\n const calledLoadingAndClick = () => {\n setIsClickSubmit(true);\n setIsLoading(false);\n };\n\n const onInvalidFormSubmit = (event: SubmitEvent, isValid: boolean) => {\n const arePasswordsFilled =\n signUpPasswordValue.length && confirmPassword.length;\n const arePasswordsMismatched = signUpPasswordValue !== confirmPassword;\n\n const handleErrors = () => {\n setShowPasswordErrorMessage(!signUpPasswordValue.length);\n if (!confirmPassword) {\n setConfirmPasswordMessage(translations.requiredFieldError);\n }\n if (arePasswordsFilled && arePasswordsMismatched) {\n setConfirmPasswordMessage(translations.passwordMismatch);\n }\n };\n\n const handleRetypePasswordErrors = () => {\n setConfirmPasswordMessage(\n confirmPassword.length\n ? translations.passwordMismatch\n : translations.requiredFieldError\n );\n focusOnEmptyPasswordField(event, signUpPasswordValue, confirmPassword);\n };\n\n if (!isValid) {\n calledLoadingAndClick();\n handleErrors();\n return true;\n }\n\n if (\n requireRetypePassword &&\n (confirmPasswordMessage.length || arePasswordsMismatched)\n ) {\n calledLoadingAndClick();\n handleRetypePasswordErrors();\n return true;\n }\n\n focusOnEmptyPasswordField(event, signUpPasswordValue, '');\n handleErrors();\n return false;\n };\n\n const onSubmitSignUp = async (event: SubmitEvent, isValid: boolean) => {\n handleSetInLineAlertProps();\n setConfirmPasswordMessage('');\n\n setIsLoading(true);\n\n if (onInvalidFormSubmit(event, isValid)) return;\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { confirmPasswordField, ...formValues } = getFormValues(event.target);\n const { email, password } = formValues;\n\n const requiredCharacterClasses =\n passwordConfigs?.requiredCharacterClasses || 0;\n\n const requiredPasswordLength = passwordConfigs?.minLength || 1;\n\n // If password validation fails - stop execution, sign-up not possible\n if (\n !validationUniqueSymbolsPassword(password, requiredCharacterClasses) ||\n requiredPasswordLength > password?.length\n ) {\n calledLoadingAndClick();\n\n return;\n }\n\n const formData = mergeFormObjects(\n {\n ...formValues,\n },\n apiVersion2\n );\n\n const response = await createCustomer(formData, apiVersion2);\n\n if (response?.errors?.length) {\n const { errors } = response;\n\n handleSetInLineAlertProps?.({\n type: 'error',\n text: errors[0]?.message,\n });\n\n onErrorCallback?.(errors);\n\n setUserEmail(email);\n } else {\n const createCustomerUserName = response?.firstName;\n\n publishEvents(EventsList.CREATE_ACCOUNT_EVENT, {\n ...response,\n });\n\n // If email confirmation enabled or auto sign-in disabled - stop execution, auto sign-in not possible\n if (isEmailConfirmationRequired || !isAutoSignInEnabled) {\n // Sign-up succeed, execute onSuccess callback\n onSuccessCallback?.({\n userName: createCustomerUserName,\n userEmail: email,\n status: true,\n });\n\n // If email confirmation enabled - show email confirmation form and stop execution\n if (isEmailConfirmationRequired) {\n (event.target as HTMLFormElement)?.reset();\n\n setSignUpPasswordValue('');\n setShowEmailConfirmationForm(true);\n setUserEmail(email);\n setIsLoading(false);\n\n return;\n }\n\n // If auto sign-in disabled - render success notification and stop execution\n if (!isAutoSignInEnabled) {\n setIsLoading(false);\n\n setIsSuccessful({\n userName: createCustomerUserName,\n status: true,\n });\n\n return;\n }\n }\n\n // Auto sign-in after sign-up\n const loginResponse = await getCustomerToken({\n email,\n password,\n translations,\n handleSetInLineAlertProps,\n onErrorCallback,\n });\n\n if (loginResponse?.userName) {\n if (addressesData?.length) {\n for (const address of addressesData) {\n try {\n await createCustomerAddress(address);\n } catch (error) {\n console.error(\n translations.failedCreateCustomerAddress,\n address,\n error\n );\n }\n }\n }\n\n onSuccessCallback?.({\n userName: loginResponse?.userName,\n userEmail: loginResponse?.userEmail,\n status: true,\n });\n\n if (checkIsFunction(routeRedirectOnSignIn)) {\n window.location.href = routeRedirectOnSignIn();\n } else {\n setIsSuccessful({\n userName: loginResponse?.userName,\n status: true,\n });\n }\n } else {\n // This is a fallback block, executed when registration succeed but sign-in for some reason failed\n onSuccessCallback?.({\n userName: createCustomerUserName,\n userEmail: email,\n status: true,\n });\n\n setIsSuccessful({\n userName: createCustomerUserName,\n status: true,\n });\n }\n }\n\n setIsLoading(false);\n };\n\n return {\n showPasswordErrorMessage,\n confirmPassword,\n confirmPasswordMessage,\n isKeepMeLogged,\n userEmail,\n showEmailConfirmationForm,\n isSuccessful,\n isClickSubmit,\n signUpPasswordValue,\n isLoading,\n onSubmitSignUp,\n signInButton,\n handleSetSignUpPasswordValue,\n onKeepMeLoggedChange,\n handleHideEmailConfirmationForm,\n handleConfirmPasswordChange,\n onBlurPassword,\n onBlurConfirmPassword,\n };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { classes, Slot } from '@adobe-commerce/elsie/lib';\nimport { useGetAttributesForm } from '@/auth/hooks/api/useGetAttributesForm';\nimport { useGetStoreConfigs } from '@/auth/hooks/api/useGetStoreConfigs';\nimport { usePasswordValidationMessage } from '@/auth/hooks/components/usePasswordValidationMessage';\nimport { useSignUpForm } from '@/auth/hooks/components/useSignUpForm';\nimport { SignUpFormProps } from '@/auth/types';\nimport { useInLineAlert } from '@/auth/hooks/useInLineAlert';\nimport { Form, Button, EmailConfirmationForm } from '@/auth/components';\nimport {\n Field,\n Checkbox,\n InLineAlert,\n InputPassword,\n Header,\n} from '@adobe-commerce/elsie/components';\nimport SkeletonLoader from '../SkeletonLoader';\nimport '@/auth/components/SignUpForm/SignUpForm.css';\nimport { useMemo } from 'preact/hooks';\nimport { useCustomTranslations } from '@/auth/hooks/useCustomTranslations';\n\nexport const SignUpForm: FunctionComponent<SignUpFormProps> = ({\n requireRetypePassword = false,\n addressesData,\n formSize = 'default',\n inputsDefaultValueSet,\n fieldsConfigForApiVersion1,\n apiVersion2 = true,\n isAutoSignInEnabled = true,\n hideCloseBtnOnEmailConfirmation = false,\n routeRedirectOnEmailConfirmationClose,\n routeRedirectOnSignIn,\n routeSignIn,\n onErrorCallback,\n onSuccessCallback,\n setActiveComponent,\n slots,\n}) => {\n /**\n * useCustomTranslations is required to support extensibility of error messages.\n * Ensure all error-related translation paths include \".default\"\n * to allow future handling of dynamic or nested error messages.\n */\n const translations = useCustomTranslations({\n title: 'Auth.SignUpForm.title',\n buttonPrimary: 'Auth.SignUpForm.buttonPrimary',\n buttonSecondary: 'Auth.SignUpForm.buttonSecondary',\n keepMeLoggedText: 'Auth.SignUpForm.keepMeLoggedText',\n customerTokenErrorMessage: 'Auth.Api.customerTokenErrorMessage',\n failedCreateCustomerAddress: 'Auth.SignUpForm.failedCreateCustomerAddress',\n placeholder: 'Auth.InputPassword.placeholder',\n floatingLabel: 'Auth.InputPassword.floatingLabel',\n requiredFieldError: 'Auth.FormText.requiredFieldError.default',\n confirmPasswordPlaceholder: 'Auth.SignUpForm.confirmPassword.placeholder',\n confirmPasswordFloatingLabel:\n 'Auth.SignUpForm.confirmPassword.floatingLabel',\n passwordMismatch: 'Auth.SignUpForm.confirmPassword.passwordMismatch', //NOSONAR\n });\n\n const { passwordConfigs, isEmailConfirmationRequired } = useGetStoreConfigs();\n const { fieldsListConfigs } = useGetAttributesForm({\n fieldsConfigForApiVersion1,\n apiVersion2,\n inputsDefaultValueSet,\n });\n\n const { inLineAlertProps, handleSetInLineAlertProps } = useInLineAlert();\n\n const {\n showPasswordErrorMessage,\n confirmPassword,\n confirmPasswordMessage,\n isKeepMeLogged,\n userEmail,\n showEmailConfirmationForm,\n isSuccessful,\n isClickSubmit,\n signUpPasswordValue,\n isLoading,\n onSubmitSignUp,\n signInButton,\n handleSetSignUpPasswordValue,\n onKeepMeLoggedChange,\n handleHideEmailConfirmationForm,\n handleConfirmPasswordChange,\n onBlurPassword,\n onBlurConfirmPassword,\n } = useSignUpForm({\n requireRetypePassword,\n addressesData,\n translations,\n isEmailConfirmationRequired,\n apiVersion2,\n passwordConfigs,\n isAutoSignInEnabled,\n routeRedirectOnSignIn,\n routeSignIn,\n onErrorCallback,\n onSuccessCallback,\n setActiveComponent,\n handleSetInLineAlertProps,\n routeRedirectOnEmailConfirmationClose,\n });\n\n const { isValidUniqueSymbols, defaultLengthMessage } =\n usePasswordValidationMessage({\n password: signUpPasswordValue,\n isClickSubmit,\n passwordConfigs,\n });\n\n const validationPasswordMessage = useMemo(() => {\n if (showPasswordErrorMessage) {\n return translations.requiredFieldError;\n }\n\n const hasSubmitError =\n isValidUniqueSymbols === 'error' ||\n defaultLengthMessage?.status === 'error';\n\n if (hasSubmitError) {\n return ' ';\n }\n\n return '';\n }, [\n defaultLengthMessage?.status,\n isValidUniqueSymbols,\n showPasswordErrorMessage,\n translations.requiredFieldError,\n ]);\n\n const shouldShowPersistLoginCheckbox =\n !isEmailConfirmationRequired && addressesData?.length;\n\n if (!fieldsListConfigs.length && apiVersion2) {\n return (\n <div\n className={`auth-sign-up-form auth-sign-up-form--${formSize} skeleton-loader`}\n data-testid=\"SignUpForm\"\n >\n <SkeletonLoader activeSkeleton=\"signUpForm\" />\n </div>\n );\n }\n\n if (isSuccessful.status && slots?.SuccessNotification) {\n return (\n <Slot\n data-testid=\"successNotificationTestId\"\n name=\"SuccessNotification\"\n slot={slots?.SuccessNotification}\n context={{ isSuccessful }}\n />\n );\n }\n\n if (showEmailConfirmationForm) {\n return (\n <EmailConfirmationForm\n formSize={formSize}\n userEmail={userEmail}\n inLineAlertProps={inLineAlertProps}\n hideCloseBtnOnEmailConfirmation={hideCloseBtnOnEmailConfirmation}\n handleSetInLineAlertProps={handleSetInLineAlertProps}\n onPrimaryButtonClick={handleHideEmailConfirmationForm}\n />\n );\n }\n\n return (\n <div\n className={classes([\n 'auth-sign-up-form',\n `auth-sign-up-form--${formSize}`,\n ])}\n data-testid=\"SignUpForm\"\n >\n <Header\n title={translations.title}\n divider={false}\n className=\"auth-sign-up-form__title\"\n />\n {inLineAlertProps.text ? (\n <InLineAlert\n className=\"auth-sign-up-form__notification\"\n type={inLineAlertProps.type}\n variant=\"secondary\"\n heading={inLineAlertProps.text}\n icon={inLineAlertProps.icon}\n />\n ) : null}\n <Form\n onSubmit={onSubmitSignUp}\n className=\"auth-sign-up-form__form\"\n loading={isLoading}\n name=\"signUp_form\"\n fieldsConfig={fieldsListConfigs}\n slots={slots}\n >\n <InputPassword\n validateLengthConfig={defaultLengthMessage}\n className=\"auth-sign-up-form__form__field\"\n autoComplete={'current-password'}\n name={'password'}\n minLength={passwordConfigs?.minLength}\n errorMessage={validationPasswordMessage}\n defaultValue={signUpPasswordValue}\n uniqueSymbolsStatus={isValidUniqueSymbols}\n requiredCharacterClasses={passwordConfigs?.requiredCharacterClasses}\n onValue={handleSetSignUpPasswordValue}\n placeholder={translations.placeholder}\n floatingLabel={translations.floatingLabel}\n onBlur={onBlurPassword}\n >\n {requireRetypePassword ? (\n <div className=\"auth-sign-up-form__form__confirm-wrapper\">\n <InputPassword\n className=\"auth-sign-up-form__form__field auth-sign-up-form__form__field--confirm-password\"\n autoComplete=\"confirmPassword\"\n name=\"confirmPasswordField\"\n placeholder={translations.confirmPasswordPlaceholder}\n floatingLabel={translations.confirmPasswordFloatingLabel}\n errorMessage={confirmPasswordMessage}\n defaultValue={confirmPassword}\n onValue={handleConfirmPasswordChange}\n onBlur={onBlurConfirmPassword}\n />\n </div>\n ) : null}\n\n {shouldShowPersistLoginCheckbox ? (\n <div\n className={'auth-sign-up-form__automatic-login'}\n data-testid=\"automaticLogin\"\n >\n <Field>\n <Checkbox\n name=\"\"\n placeholder={translations.keepMeLoggedText}\n label={translations.keepMeLoggedText}\n checked={isKeepMeLogged}\n onChange={onKeepMeLoggedChange}\n />\n </Field>\n </div>\n ) : null}\n </InputPassword>\n\n <Slot\n name=\"PrivacyPolicyConsent\"\n data-testid={'privacyPolicyConsent'}\n slot={slots?.PrivacyPolicyConsent}\n key={'privacyPolicyConsent'}\n />\n\n <div className=\"auth-sign-up-form-buttons\">\n <Button\n className=\"auth-sign-up-form-buttons--signin\"\n type=\"button\"\n variant=\"tertiary\"\n style={{ padding: 0 }}\n buttonText={translations.buttonSecondary}\n enableLoader={false}\n onClick={signInButton}\n />\n <Button\n type=\"submit\"\n buttonText={translations.buttonPrimary}\n variant=\"primary\"\n enableLoader={isLoading}\n />\n </div>\n </Form>\n <div id=\"createCustomerV2\" />\n </div>\n );\n};\n"],"names":["applyDefaultValuesToFields","fields","defaultValues","el","defaultValue","_a","code","useGetAttributesForm","inputsDefaultValueSet","fieldsConfigForApiVersion1","apiVersion2","fieldsListConfigs","setFieldsListConfigs","useState","useEffect","response","getAttributesForm","fieldsWithDefaultValues","transformAttributesFields","simplifyTransformAttributesForm","DEFAULT_SIGN_UP_FIELDS","transformFieldsConfigForApiVersion1","defaultFieldsWithDefaultValues","element","mergeFormObjects","input","baseKeys","newInputs","convertKeysCase","result","customAttributes","key","useSignUpForm","requireRetypePassword","addressesData","translations","isEmailConfirmationRequired","passwordConfigs","isAutoSignInEnabled","routeRedirectOnSignIn","routeSignIn","onErrorCallback","onSuccessCallback","setActiveComponent","handleSetInLineAlertProps","routeRedirectOnEmailConfirmationClose","showPasswordErrorMessage","setShowPasswordErrorMessage","confirmPassword","setConfirmPassword","confirmPasswordMessage","setConfirmPasswordMessage","userEmail","setUserEmail","showEmailConfirmationForm","setShowEmailConfirmationForm","isSuccessful","setIsSuccessful","signUpPasswordValue","setSignUpPasswordValue","isClickSubmit","setIsClickSubmit","isLoading","setIsLoading","isKeepMeLogged","setIsKeepMeLogged","onBlurPassword","useCallback","event","value","onBlurConfirmPassword","handleConfirmPasswordChange","onKeepMeLoggedChange","target","signInButton","checkIsFunction","handleSetSignUpPasswordValue","handleHideEmailConfirmationForm","calledLoadingAndClick","onInvalidFormSubmit","isValid","arePasswordsFilled","arePasswordsMismatched","handleErrors","handleRetypePasswordErrors","focusOnEmptyPasswordField","confirmPasswordField","formValues","getFormValues","email","password","requiredCharacterClasses","requiredPasswordLength","validationUniqueSymbolsPassword","formData","createCustomer","errors","_b","createCustomerUserName","publishEvents","EventsList","_c","loginResponse","getCustomerToken","address","createCustomerAddress","error","SignUpForm","formSize","hideCloseBtnOnEmailConfirmation","slots","useCustomTranslations","useGetStoreConfigs","inLineAlertProps","useInLineAlert","onSubmitSignUp","isValidUniqueSymbols","defaultLengthMessage","usePasswordValidationMessage","validationPasswordMessage","useMemo","shouldShowPersistLoginCheckbox","jsx","SkeletonLoader","Slot","EmailConfirmationForm","jsxs","classes","Header","InLineAlert","Form","InputPassword","Field","Checkbox","Button"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SignUpForm.js","sources":["/@dropins/storefront-auth/src/hooks/api/useGetAttributesForm.tsx","/@dropins/storefront-auth/src/lib/mergeFormObjects.ts","/@dropins/storefront-auth/src/hooks/components/useSignUpForm.tsx","/@dropins/storefront-auth/src/components/SignUpForm/SignUpForm.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { getAttributesForm } from '@/auth/api';\nimport { useEffect, useState } from 'preact/hooks';\nimport { inputsDefaultValueSetProps } from '@/auth/types';\nimport { DEFAULT_SIGN_UP_FIELDS } from '@/auth/configs/defaultCreateUserConfigs';\nimport { AttributesFormItemsProps } from '@/auth/data/models';\nimport { simplifyTransformAttributesForm } from '@/auth/lib/simplifyTransformAttributesForm';\n\ninterface UseGetAttributesFormProps {\n fieldsConfigForApiVersion1: {}[];\n apiVersion2: boolean;\n inputsDefaultValueSet?: inputsDefaultValueSetProps[];\n}\n\nconst applyDefaultValuesToFields = (\n fields: AttributesFormItemsProps[],\n defaultValues: inputsDefaultValueSetProps[] | any\n) => {\n if (!defaultValues?.length) return fields;\n\n return fields.map((el) => {\n const defaultValue = defaultValues.find(\n ({ code }: inputsDefaultValueSetProps) => code === el.code\n )?.defaultValue;\n\n return defaultValue ? { ...el, defaultValue } : el;\n });\n};\n\nexport const useGetAttributesForm = ({\n inputsDefaultValueSet,\n fieldsConfigForApiVersion1,\n apiVersion2,\n}: UseGetAttributesFormProps) => {\n const [fieldsListConfigs, setFieldsListConfigs] = useState<\n AttributesFormItemsProps[]\n >([]);\n\n useEffect(() => {\n const fetchFieldsConfig = async () => {\n if (apiVersion2) {\n const response = await getAttributesForm('customer_account_create');\n\n if (response?.length) {\n if (inputsDefaultValueSet?.length) {\n const fieldsWithDefaultValues: any = applyDefaultValuesToFields(\n response,\n inputsDefaultValueSet\n );\n\n setFieldsListConfigs(fieldsWithDefaultValues);\n } else {\n setFieldsListConfigs(response);\n }\n }\n } else {\n const transformAttributesFields = simplifyTransformAttributesForm(\n DEFAULT_SIGN_UP_FIELDS\n );\n const transformFieldsConfigForApiVersion1 =\n simplifyTransformAttributesForm(fieldsConfigForApiVersion1);\n\n const defaultFieldsWithDefaultValues: any = applyDefaultValuesToFields(\n transformAttributesFields as AttributesFormItemsProps[],\n inputsDefaultValueSet\n );\n\n setFieldsListConfigs(\n fieldsConfigForApiVersion1 && fieldsConfigForApiVersion1.length\n ? transformFieldsConfigForApiVersion1\n : defaultFieldsWithDefaultValues\n );\n }\n };\n\n fetchFieldsConfig();\n }, [apiVersion2, fieldsConfigForApiVersion1, inputsDefaultValueSet]);\n\n return {\n fieldsListConfigs: fieldsListConfigs.map((element) => ({\n ...element,\n ...(element.code === 'email' ? { autocomplete: 'username' } : {}),\n })),\n };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { convertKeysCase } from './convertCase';\n\nexport const mergeFormObjects = (\n input: Record<string, any>,\n apiVersion2: boolean\n) => {\n const baseKeys = [\n 'dob',\n 'email',\n 'firstname',\n 'gender',\n 'lastname',\n 'middlename',\n 'password',\n 'prefix',\n 'suffix',\n 'taxvat',\n ];\n\n const newInputs = convertKeysCase(input, 'snakeCase', {\n firstName: 'firstname',\n lastName: 'lastname',\n });\n\n if (!apiVersion2)\n return {\n ...newInputs,\n ...(newInputs?.gender ? { gender: Number(newInputs?.gender) } : {}),\n };\n\n const result: Record<string, any> = {};\n const customAttributes: Record<string, any>[] = [];\n\n Object.keys(newInputs).forEach((key: string) => {\n if (baseKeys.includes(key)) {\n result[key] = key.includes('gender')\n ? Number(newInputs[key])\n : newInputs[key];\n } else {\n customAttributes.push({\n attribute_code: key,\n value: newInputs[key],\n });\n }\n });\n\n if (customAttributes.length > 0) {\n result.custom_attributes = customAttributes;\n }\n\n return result;\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport {\n createCustomer,\n createCustomerAddress,\n getCustomerToken,\n} from '@/auth/api';\nimport { getFormValues } from '@/auth/lib/getFormValues';\nimport { mergeFormObjects } from '@/auth/lib/mergeFormObjects';\nimport { validationUniqueSymbolsPassword } from '@/auth/lib/validationUniqueSymbolsPassword';\nimport { useCallback, useState } from 'preact/hooks';\nimport { UseSingUpFormProps } from '@/auth/types';\nimport { EventsList, publishEvents } from '@/auth/lib/acdl';\nimport { checkIsFunction } from '@/auth/lib/checkIsFunction';\nimport { focusOnEmptyPasswordField } from '@/auth/lib/focusOnEmptyPasswordField';\n\nexport const useSignUpForm = ({\n requireRetypePassword,\n addressesData,\n translations,\n isEmailConfirmationRequired,\n apiVersion2 = true,\n passwordConfigs,\n isAutoSignInEnabled,\n routeRedirectOnSignIn,\n routeSignIn,\n onErrorCallback,\n onSuccessCallback,\n setActiveComponent,\n handleSetInLineAlertProps,\n routeRedirectOnEmailConfirmationClose,\n}: UseSingUpFormProps) => {\n const [showPasswordErrorMessage, setShowPasswordErrorMessage] =\n useState<boolean>(false);\n const [confirmPassword, setConfirmPassword] = useState('');\n const [confirmPasswordMessage, setConfirmPasswordMessage] = useState('');\n const [userEmail, setUserEmail] = useState('');\n const [showEmailConfirmationForm, setShowEmailConfirmationForm] =\n useState(false);\n const [isSuccessful, setIsSuccessful] = useState({\n userName: '',\n status: false,\n });\n const [signUpPasswordValue, setSignUpPasswordValue] = useState('');\n const [isClickSubmit, setIsClickSubmit] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [isKeepMeLogged, setIsKeepMeLogged] = useState(true);\n\n const onBlurPassword = useCallback(\n (event: Event) => {\n const value = (event.target as HTMLInputElement).value;\n\n setShowPasswordErrorMessage(!value.length);\n\n if (value.length && confirmPassword.length && value !== confirmPassword) {\n setConfirmPasswordMessage(translations.passwordMismatch);\n }\n },\n [confirmPassword, translations.passwordMismatch]\n );\n\n const onBlurConfirmPassword = useCallback(\n (event: Event) => {\n const value = (event.target as HTMLInputElement).value;\n\n setConfirmPasswordMessage(\n value.length ? '' : translations.requiredFieldError\n );\n\n if (\n value.length &&\n signUpPasswordValue.length &&\n value !== signUpPasswordValue\n ) {\n setConfirmPasswordMessage(translations.passwordMismatch);\n }\n },\n [\n signUpPasswordValue,\n translations.passwordMismatch,\n translations.requiredFieldError,\n ]\n );\n\n const handleConfirmPasswordChange = useCallback(\n (value: string) => {\n setConfirmPassword(value);\n\n if (value) {\n setConfirmPasswordMessage(\n signUpPasswordValue === value ? '' : translations.passwordMismatch\n );\n } else {\n setConfirmPasswordMessage(translations.requiredFieldError);\n }\n },\n [translations, signUpPasswordValue]\n );\n\n const onKeepMeLoggedChange = useCallback(({ target }: any) => {\n setIsKeepMeLogged(target.checked);\n }, []);\n\n const signInButton = useCallback(() => {\n if (checkIsFunction(setActiveComponent)) {\n setActiveComponent('signInForm');\n\n return;\n }\n\n if (checkIsFunction(routeSignIn)) {\n window.location.href = routeSignIn();\n }\n }, [setActiveComponent, routeSignIn]);\n\n const handleSetSignUpPasswordValue = useCallback(\n (value: string) => {\n setSignUpPasswordValue(value);\n setShowPasswordErrorMessage(!value.length);\n if (value === confirmPassword) {\n setConfirmPasswordMessage('');\n }\n },\n [confirmPassword]\n );\n\n const handleHideEmailConfirmationForm = useCallback(() => {\n handleSetInLineAlertProps();\n setSignUpPasswordValue('');\n\n if (checkIsFunction(routeRedirectOnEmailConfirmationClose)) {\n window.location.href = routeRedirectOnEmailConfirmationClose();\n } else {\n setShowEmailConfirmationForm(false);\n setActiveComponent?.('signInForm');\n }\n }, [\n handleSetInLineAlertProps,\n routeRedirectOnEmailConfirmationClose,\n setActiveComponent,\n ]);\n\n const calledLoadingAndClick = () => {\n setIsClickSubmit(true);\n setIsLoading(false);\n };\n\n const onInvalidFormSubmit = (event: SubmitEvent, isValid: boolean) => {\n const arePasswordsFilled =\n signUpPasswordValue.length && confirmPassword.length;\n const arePasswordsMismatched = signUpPasswordValue !== confirmPassword;\n\n const handleErrors = () => {\n setShowPasswordErrorMessage(!signUpPasswordValue.length);\n if (!confirmPassword) {\n setConfirmPasswordMessage(translations.requiredFieldError);\n }\n if (arePasswordsFilled && arePasswordsMismatched) {\n setConfirmPasswordMessage(translations.passwordMismatch);\n }\n };\n\n const handleRetypePasswordErrors = () => {\n setConfirmPasswordMessage(\n confirmPassword.length\n ? translations.passwordMismatch\n : translations.requiredFieldError\n );\n focusOnEmptyPasswordField(event, signUpPasswordValue, confirmPassword);\n };\n\n if (!isValid) {\n calledLoadingAndClick();\n handleErrors();\n return true;\n }\n\n if (\n requireRetypePassword &&\n (confirmPasswordMessage.length || arePasswordsMismatched)\n ) {\n calledLoadingAndClick();\n handleRetypePasswordErrors();\n return true;\n }\n\n focusOnEmptyPasswordField(event, signUpPasswordValue, '');\n handleErrors();\n return false;\n };\n\n const onSubmitSignUp = async (event: SubmitEvent, isValid: boolean) => {\n handleSetInLineAlertProps();\n setConfirmPasswordMessage('');\n\n setIsLoading(true);\n\n if (onInvalidFormSubmit(event, isValid)) return;\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { confirmPasswordField, ...formValues } = getFormValues(event.target);\n const { email, password } = formValues;\n\n const requiredCharacterClasses =\n passwordConfigs?.requiredCharacterClasses || 0;\n\n const requiredPasswordLength = passwordConfigs?.minLength || 1;\n\n // If password validation fails - stop execution, sign-up not possible\n if (\n !validationUniqueSymbolsPassword(password, requiredCharacterClasses) ||\n requiredPasswordLength > password?.length\n ) {\n calledLoadingAndClick();\n\n return;\n }\n\n const formData = mergeFormObjects(\n {\n ...formValues,\n },\n apiVersion2\n );\n\n const response = await createCustomer(formData, apiVersion2);\n\n if (response?.errors?.length) {\n const { errors } = response;\n\n handleSetInLineAlertProps?.({\n type: 'error',\n text: errors[0]?.message,\n });\n\n onErrorCallback?.(errors);\n\n setUserEmail(email);\n } else {\n const createCustomerUserName = response?.firstName;\n\n publishEvents(EventsList.CREATE_ACCOUNT_EVENT, {\n ...response,\n });\n\n // If email confirmation enabled or auto sign-in disabled - stop execution, auto sign-in not possible\n if (isEmailConfirmationRequired || !isAutoSignInEnabled) {\n // Sign-up succeed, execute onSuccess callback\n onSuccessCallback?.({\n userName: createCustomerUserName,\n userEmail: email,\n status: true,\n });\n\n // If email confirmation enabled - show email confirmation form and stop execution\n if (isEmailConfirmationRequired) {\n (event.target as HTMLFormElement)?.reset();\n\n setSignUpPasswordValue('');\n setShowEmailConfirmationForm(true);\n setUserEmail(email);\n setIsLoading(false);\n\n return;\n }\n\n // If auto sign-in disabled - render success notification and stop execution\n if (!isAutoSignInEnabled) {\n setIsLoading(false);\n\n setIsSuccessful({\n userName: createCustomerUserName,\n status: true,\n });\n\n return;\n }\n }\n\n // Auto sign-in after sign-up\n const loginResponse = await getCustomerToken({\n email,\n password,\n translations,\n handleSetInLineAlertProps,\n onErrorCallback,\n });\n\n if (loginResponse?.userName) {\n if (addressesData?.length) {\n for (const address of addressesData) {\n try {\n await createCustomerAddress(address);\n } catch (error) {\n console.error(\n translations.failedCreateCustomerAddress,\n address,\n error\n );\n }\n }\n }\n\n onSuccessCallback?.({\n userName: loginResponse?.userName,\n userEmail: loginResponse?.userEmail,\n status: true,\n });\n\n if (checkIsFunction(routeRedirectOnSignIn)) {\n window.location.href = routeRedirectOnSignIn();\n } else {\n setIsSuccessful({\n userName: loginResponse?.userName,\n status: true,\n });\n }\n } else {\n // This is a fallback block, executed when registration succeed but sign-in for some reason failed\n onSuccessCallback?.({\n userName: createCustomerUserName,\n userEmail: email,\n status: true,\n });\n\n setIsSuccessful({\n userName: createCustomerUserName,\n status: true,\n });\n }\n }\n\n setIsLoading(false);\n };\n\n return {\n showPasswordErrorMessage,\n confirmPassword,\n confirmPasswordMessage,\n isKeepMeLogged,\n userEmail,\n showEmailConfirmationForm,\n isSuccessful,\n isClickSubmit,\n signUpPasswordValue,\n isLoading,\n onSubmitSignUp,\n signInButton,\n handleSetSignUpPasswordValue,\n onKeepMeLoggedChange,\n handleHideEmailConfirmationForm,\n handleConfirmPasswordChange,\n onBlurPassword,\n onBlurConfirmPassword,\n };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { classes, Slot } from '@adobe-commerce/elsie/lib';\nimport { useGetAttributesForm } from '@/auth/hooks/api/useGetAttributesForm';\nimport { useGetStoreConfigs } from '@/auth/hooks/api/useGetStoreConfigs';\nimport { usePasswordValidationMessage } from '@/auth/hooks/components/usePasswordValidationMessage';\nimport { useSignUpForm } from '@/auth/hooks/components/useSignUpForm';\nimport { SignUpFormProps } from '@/auth/types';\nimport { useInLineAlert } from '@/auth/hooks/useInLineAlert';\nimport { Form, Button, EmailConfirmationForm } from '@/auth/components';\nimport {\n Field,\n Checkbox,\n InLineAlert,\n InputPassword,\n Header,\n} from '@adobe-commerce/elsie/components';\nimport SkeletonLoader from '../SkeletonLoader';\nimport '@/auth/components/SignUpForm/SignUpForm.css';\nimport { useMemo } from 'preact/hooks';\nimport { useCustomTranslations } from '@/auth/hooks/useCustomTranslations';\n\nexport const SignUpForm: FunctionComponent<SignUpFormProps> = ({\n requireRetypePassword = false,\n addressesData,\n formSize = 'default',\n inputsDefaultValueSet,\n fieldsConfigForApiVersion1,\n apiVersion2 = true,\n isAutoSignInEnabled = true,\n hideCloseBtnOnEmailConfirmation = false,\n routeRedirectOnEmailConfirmationClose,\n routeRedirectOnSignIn,\n routeSignIn,\n onErrorCallback,\n onSuccessCallback,\n setActiveComponent,\n slots,\n}) => {\n /**\n * useCustomTranslations is required to support extensibility of error messages.\n * Ensure all error-related translation paths include \".default\"\n * to allow future handling of dynamic or nested error messages.\n */\n const translations = useCustomTranslations({\n title: 'Auth.SignUpForm.title',\n buttonPrimary: 'Auth.SignUpForm.buttonPrimary',\n buttonSecondary: 'Auth.SignUpForm.buttonSecondary',\n keepMeLoggedText: 'Auth.SignUpForm.keepMeLoggedText',\n customerTokenErrorMessage: 'Auth.Api.customerTokenErrorMessage',\n failedCreateCustomerAddress: 'Auth.SignUpForm.failedCreateCustomerAddress',\n placeholder: 'Auth.InputPassword.placeholder',\n floatingLabel: 'Auth.InputPassword.floatingLabel',\n requiredFieldError: 'Auth.FormText.requiredFieldError.default',\n confirmPasswordPlaceholder: 'Auth.SignUpForm.confirmPassword.placeholder',\n confirmPasswordFloatingLabel:\n 'Auth.SignUpForm.confirmPassword.floatingLabel',\n passwordMismatch: 'Auth.SignUpForm.confirmPassword.passwordMismatch', //NOSONAR\n });\n\n const { passwordConfigs, isEmailConfirmationRequired } = useGetStoreConfigs();\n const { fieldsListConfigs } = useGetAttributesForm({\n fieldsConfigForApiVersion1,\n apiVersion2,\n inputsDefaultValueSet,\n });\n\n const { inLineAlertProps, handleSetInLineAlertProps } = useInLineAlert();\n\n const {\n showPasswordErrorMessage,\n confirmPassword,\n confirmPasswordMessage,\n isKeepMeLogged,\n userEmail,\n showEmailConfirmationForm,\n isSuccessful,\n isClickSubmit,\n signUpPasswordValue,\n isLoading,\n onSubmitSignUp,\n signInButton,\n handleSetSignUpPasswordValue,\n onKeepMeLoggedChange,\n handleHideEmailConfirmationForm,\n handleConfirmPasswordChange,\n onBlurPassword,\n onBlurConfirmPassword,\n } = useSignUpForm({\n requireRetypePassword,\n addressesData,\n translations,\n isEmailConfirmationRequired,\n apiVersion2,\n passwordConfigs,\n isAutoSignInEnabled,\n routeRedirectOnSignIn,\n routeSignIn,\n onErrorCallback,\n onSuccessCallback,\n setActiveComponent,\n handleSetInLineAlertProps,\n routeRedirectOnEmailConfirmationClose,\n });\n\n const { isValidUniqueSymbols, defaultLengthMessage } =\n usePasswordValidationMessage({\n password: signUpPasswordValue,\n isClickSubmit,\n passwordConfigs,\n });\n\n const validationPasswordMessage = useMemo(() => {\n if (showPasswordErrorMessage) {\n return translations.requiredFieldError;\n }\n\n const hasSubmitError =\n isValidUniqueSymbols === 'error' ||\n defaultLengthMessage?.status === 'error';\n\n if (hasSubmitError) {\n return ' ';\n }\n\n return '';\n }, [\n defaultLengthMessage?.status,\n isValidUniqueSymbols,\n showPasswordErrorMessage,\n translations.requiredFieldError,\n ]);\n\n const shouldShowPersistLoginCheckbox =\n !isEmailConfirmationRequired && addressesData?.length;\n\n if (!fieldsListConfigs.length && apiVersion2) {\n return (\n <div\n className={`auth-sign-up-form auth-sign-up-form--${formSize} skeleton-loader`}\n data-testid=\"SignUpForm\"\n >\n <SkeletonLoader activeSkeleton=\"signUpForm\" />\n </div>\n );\n }\n\n if (isSuccessful.status && slots?.SuccessNotification) {\n return (\n <Slot\n data-testid=\"successNotificationTestId\"\n name=\"SuccessNotification\"\n slot={slots?.SuccessNotification}\n context={{ isSuccessful }}\n />\n );\n }\n\n if (showEmailConfirmationForm) {\n return (\n <EmailConfirmationForm\n formSize={formSize}\n userEmail={userEmail}\n inLineAlertProps={inLineAlertProps}\n hideCloseBtnOnEmailConfirmation={hideCloseBtnOnEmailConfirmation}\n handleSetInLineAlertProps={handleSetInLineAlertProps}\n onPrimaryButtonClick={handleHideEmailConfirmationForm}\n />\n );\n }\n\n const slotContext = {\n isLoading,\n isSuccessful,\n };\n\n return (\n <div\n className={classes([\n 'auth-sign-up-form',\n `auth-sign-up-form--${formSize}`,\n ])}\n data-testid=\"SignUpForm\"\n >\n <Slot\n name=\"Title\"\n data-testid=\"title\"\n slot={slots?.Title}\n context={{ ...slotContext }}\n >\n <Header\n title={translations.title}\n divider={false}\n className=\"auth-sign-up-form__title\"\n />\n </Slot>\n {inLineAlertProps.text ? (\n <InLineAlert\n className=\"auth-sign-up-form__notification\"\n type={inLineAlertProps.type}\n variant=\"secondary\"\n heading={inLineAlertProps.text}\n icon={inLineAlertProps.icon}\n />\n ) : null}\n <Form\n onSubmit={onSubmitSignUp}\n className=\"auth-sign-up-form__form\"\n loading={isLoading}\n name=\"signUp_form\"\n fieldsConfig={fieldsListConfigs}\n slots={slots}\n formSlot={{\n name: 'Form',\n slot: slots?.Form,\n context: slotContext,\n dataTestId: 'form',\n }}\n >\n <InputPassword\n validateLengthConfig={defaultLengthMessage}\n className=\"auth-sign-up-form__form__field\"\n autoComplete={'current-password'}\n name={'password'}\n minLength={passwordConfigs?.minLength}\n errorMessage={validationPasswordMessage}\n defaultValue={signUpPasswordValue}\n uniqueSymbolsStatus={isValidUniqueSymbols}\n requiredCharacterClasses={passwordConfigs?.requiredCharacterClasses}\n onValue={handleSetSignUpPasswordValue}\n placeholder={translations.placeholder}\n floatingLabel={translations.floatingLabel}\n onBlur={onBlurPassword}\n >\n {requireRetypePassword ? (\n <div className=\"auth-sign-up-form__form__confirm-wrapper\">\n <InputPassword\n className=\"auth-sign-up-form__form__field auth-sign-up-form__form__field--confirm-password\"\n autoComplete=\"confirmPassword\"\n name=\"confirmPasswordField\"\n placeholder={translations.confirmPasswordPlaceholder}\n floatingLabel={translations.confirmPasswordFloatingLabel}\n errorMessage={confirmPasswordMessage}\n defaultValue={confirmPassword}\n onValue={handleConfirmPasswordChange}\n onBlur={onBlurConfirmPassword}\n />\n </div>\n ) : null}\n\n {shouldShowPersistLoginCheckbox ? (\n <div\n className={'auth-sign-up-form__automatic-login'}\n data-testid=\"automaticLogin\"\n >\n <Field>\n <Checkbox\n name=\"\"\n placeholder={translations.keepMeLoggedText}\n label={translations.keepMeLoggedText}\n checked={isKeepMeLogged}\n onChange={onKeepMeLoggedChange}\n />\n </Field>\n </div>\n ) : null}\n </InputPassword>\n\n <Slot\n name=\"PrivacyPolicyConsent\"\n data-testid={'privacyPolicyConsent'}\n slot={slots?.PrivacyPolicyConsent}\n key={'privacyPolicyConsent'}\n />\n\n <Slot\n name=\"Buttons\"\n className=\"auth-sign-up-form-buttons\"\n data-testid=\"buttons\"\n slot={slots?.Buttons}\n context={{ ...slotContext }}\n >\n <Button\n className=\"auth-sign-up-form-buttons--signin\"\n type=\"button\"\n variant=\"tertiary\"\n style={{ padding: 0 }}\n buttonText={translations.buttonSecondary}\n enableLoader={false}\n onClick={signInButton}\n />\n <Button\n type=\"submit\"\n buttonText={translations.buttonPrimary}\n variant=\"primary\"\n enableLoader={isLoading}\n />\n </Slot>\n </Form>\n <div id=\"createCustomerV2\" />\n </div>\n );\n};\n"],"names":["applyDefaultValuesToFields","fields","defaultValues","el","defaultValue","_a","code","useGetAttributesForm","inputsDefaultValueSet","fieldsConfigForApiVersion1","apiVersion2","fieldsListConfigs","setFieldsListConfigs","useState","useEffect","response","getAttributesForm","fieldsWithDefaultValues","transformAttributesFields","simplifyTransformAttributesForm","DEFAULT_SIGN_UP_FIELDS","transformFieldsConfigForApiVersion1","defaultFieldsWithDefaultValues","element","mergeFormObjects","input","baseKeys","newInputs","convertKeysCase","result","customAttributes","key","useSignUpForm","requireRetypePassword","addressesData","translations","isEmailConfirmationRequired","passwordConfigs","isAutoSignInEnabled","routeRedirectOnSignIn","routeSignIn","onErrorCallback","onSuccessCallback","setActiveComponent","handleSetInLineAlertProps","routeRedirectOnEmailConfirmationClose","showPasswordErrorMessage","setShowPasswordErrorMessage","confirmPassword","setConfirmPassword","confirmPasswordMessage","setConfirmPasswordMessage","userEmail","setUserEmail","showEmailConfirmationForm","setShowEmailConfirmationForm","isSuccessful","setIsSuccessful","signUpPasswordValue","setSignUpPasswordValue","isClickSubmit","setIsClickSubmit","isLoading","setIsLoading","isKeepMeLogged","setIsKeepMeLogged","onBlurPassword","useCallback","event","value","onBlurConfirmPassword","handleConfirmPasswordChange","onKeepMeLoggedChange","target","signInButton","checkIsFunction","handleSetSignUpPasswordValue","handleHideEmailConfirmationForm","calledLoadingAndClick","onInvalidFormSubmit","isValid","arePasswordsFilled","arePasswordsMismatched","handleErrors","handleRetypePasswordErrors","focusOnEmptyPasswordField","confirmPasswordField","formValues","getFormValues","email","password","requiredCharacterClasses","requiredPasswordLength","validationUniqueSymbolsPassword","formData","createCustomer","errors","_b","createCustomerUserName","publishEvents","EventsList","_c","loginResponse","getCustomerToken","address","createCustomerAddress","error","SignUpForm","formSize","hideCloseBtnOnEmailConfirmation","slots","useCustomTranslations","useGetStoreConfigs","inLineAlertProps","useInLineAlert","onSubmitSignUp","isValidUniqueSymbols","defaultLengthMessage","usePasswordValidationMessage","validationPasswordMessage","useMemo","shouldShowPersistLoginCheckbox","jsx","SkeletonLoader","Slot","EmailConfirmationForm","slotContext","jsxs","classes","Header","InLineAlert","Form","InputPassword","Field","Checkbox","Button"],"mappings":"+7BA8BA,MAAMA,GAA6B,CACjCC,EACAC,IAEKA,GAAA,MAAAA,EAAe,OAEbD,EAAO,IAAKE,GAAO,OACxB,MAAMC,GAAeC,EAAAH,EAAc,KACjC,CAAC,CAAE,KAAAI,CAAA,IAAuCA,IAASH,EAAG,IAAA,IADnC,YAAAE,EAElB,aAEH,OAAOD,EAAe,CAAE,GAAGD,EAAI,aAAAC,GAAiBD,CAClD,CAAC,EARkCF,EAWxBM,GAAuB,CAAC,CACnC,sBAAAC,EACA,2BAAAC,EACA,YAAAC,CACF,IAAiC,CAC/B,KAAM,CAACC,EAAmBC,CAAoB,EAAIC,EAEhD,CAAA,CAAE,EAEJ,OAAAC,GAAU,IAAM,EACY,SAAY,CACpC,GAAIJ,EAAa,CACf,MAAMK,EAAW,MAAMC,GAAkB,yBAAyB,EAElE,GAAID,GAAA,MAAAA,EAAU,OACZ,GAAIP,GAAA,MAAAA,EAAuB,OAAQ,CACjC,MAAMS,EAA+BjB,GACnCe,EACAP,CAAA,EAGFI,EAAqBK,CAAuB,CAC9C,MACEL,EAAqBG,CAAQ,CAGnC,KAAO,CACL,MAAMG,EAA4BC,GAChCC,EAAA,EAEIC,EACJF,GAAgCV,CAA0B,EAEtDa,EAAsCtB,GAC1CkB,EACAV,CAAA,EAGFI,EACEH,GAA8BA,EAA2B,OACrDY,EACAC,CAAA,CAER,CACF,GAEA,CACF,EAAG,CAACZ,EAAaD,EAA4BD,CAAqB,CAAC,EAE5D,CACL,kBAAmBG,EAAkB,IAAKY,IAAa,CACrD,GAAGA,EACH,GAAIA,EAAQ,OAAS,QAAU,CAAE,aAAc,UAAA,EAAe,CAAA,CAAC,EAC/D,CAAA,CAEN,ECjFaC,GAAmB,CAC9BC,EACAf,IACG,CACH,MAAMgB,EAAW,CACf,MACA,QACA,YACA,SACA,WACA,aACA,WACA,SACA,SACA,QAAA,EAGIC,EAAYC,GAAgBH,EAAO,YAAa,CACpD,UAAW,YACX,SAAU,UAAA,CACX,EAED,GAAI,CAACf,EACH,MAAO,CACL,GAAGiB,EACH,GAAIA,GAAA,MAAAA,EAAW,OAAS,CAAE,OAAQ,OAAOA,GAAA,YAAAA,EAAW,MAAM,GAAM,CAAA,CAAC,EAGrE,MAAME,EAA8B,CAAA,EAC9BC,EAA0C,CAAA,EAEhD,cAAO,KAAKH,CAAS,EAAE,QAASI,GAAgB,CAC1CL,EAAS,SAASK,CAAG,EACvBF,EAAOE,CAAG,EAAIA,EAAI,SAAS,QAAQ,EAC/B,OAAOJ,EAAUI,CAAG,CAAC,EACrBJ,EAAUI,CAAG,EAEjBD,EAAiB,KAAK,CACpB,eAAgBC,EAChB,MAAOJ,EAAUI,CAAG,CAAA,CACrB,CAEL,CAAC,EAEGD,EAAiB,OAAS,IAC5BD,EAAO,kBAAoBC,GAGtBD,CACT,ECrCaG,GAAgB,CAAC,CAC5B,sBAAAC,EACA,cAAAC,EACA,aAAAC,EACA,4BAAAC,EACA,YAAA1B,EAAc,GACd,gBAAA2B,EACA,oBAAAC,EACA,sBAAAC,EACA,YAAAC,EACA,gBAAAC,EACA,kBAAAC,EACA,mBAAAC,EACA,0BAAAC,EACA,sCAAAC,CACF,IAA0B,CACxB,KAAM,CAACC,EAA0BC,CAA2B,EAC1DlC,EAAkB,EAAK,EACnB,CAACmC,EAAiBC,CAAkB,EAAIpC,EAAS,EAAE,EACnD,CAACqC,EAAwBC,CAAyB,EAAItC,EAAS,EAAE,EACjE,CAACuC,EAAWC,CAAY,EAAIxC,EAAS,EAAE,EACvC,CAACyC,EAA2BC,CAA4B,EAC5D1C,EAAS,EAAK,EACV,CAAC2C,EAAcC,CAAe,EAAI5C,EAAS,CAC/C,SAAU,GACV,OAAQ,EAAA,CACT,EACK,CAAC6C,EAAqBC,CAAsB,EAAI9C,EAAS,EAAE,EAC3D,CAAC+C,EAAeC,CAAgB,EAAIhD,EAAS,EAAK,EAClD,CAACiD,EAAWC,CAAY,EAAIlD,EAAS,EAAK,EAC1C,CAACmD,EAAgBC,CAAiB,EAAIpD,EAAS,EAAI,EAEnDqD,EAAiBC,EACpBC,GAAiB,CAChB,MAAMC,EAASD,EAAM,OAA4B,MAEjDrB,EAA4B,CAACsB,EAAM,MAAM,EAErCA,EAAM,QAAUrB,EAAgB,QAAUqB,IAAUrB,GACtDG,EAA0BhB,EAAa,gBAAgB,CAE3D,EACA,CAACa,EAAiBb,EAAa,gBAAgB,CAAA,EAG3CmC,EAAwBH,EAC3BC,GAAiB,CAChB,MAAMC,EAASD,EAAM,OAA4B,MAEjDjB,EACEkB,EAAM,OAAS,GAAKlC,EAAa,kBAAA,EAIjCkC,EAAM,QACNX,EAAoB,QACpBW,IAAUX,GAEVP,EAA0BhB,EAAa,gBAAgB,CAE3D,EACA,CACEuB,EACAvB,EAAa,iBACbA,EAAa,kBAAA,CACf,EAGIoC,GAA8BJ,EACjCE,GAAkB,CACjBpB,EAAmBoB,CAAK,EAGtBlB,EADEkB,EAEAX,IAAwBW,EAAQ,GAAKlC,EAAa,iBAG1BA,EAAa,kBAHa,CAKxD,EACA,CAACA,EAAcuB,CAAmB,CAAA,EAG9Bc,GAAuBL,EAAY,CAAC,CAAE,OAAAM,KAAkB,CAC5DR,EAAkBQ,EAAO,OAAO,CAClC,EAAG,CAAA,CAAE,EAECC,GAAeP,EAAY,IAAM,CACrC,GAAIQ,EAAgBhC,CAAkB,EAAG,CACvCA,EAAmB,YAAY,EAE/B,MACF,CAEIgC,EAAgBnC,CAAW,IAC7B,OAAO,SAAS,KAAOA,EAAA,EAE3B,EAAG,CAACG,EAAoBH,CAAW,CAAC,EAE9BoC,EAA+BT,EAClCE,GAAkB,CACjBV,EAAuBU,CAAK,EAC5BtB,EAA4B,CAACsB,EAAM,MAAM,EACrCA,IAAUrB,GACZG,EAA0B,EAAE,CAEhC,EACA,CAACH,CAAe,CAAA,EAGZ6B,EAAkCV,EAAY,IAAM,CACxDvB,EAAA,EACAe,EAAuB,EAAE,EAErBgB,EAAgB9B,CAAqC,EACvD,OAAO,SAAS,KAAOA,EAAA,GAEvBU,EAA6B,EAAK,EAClCZ,GAAA,MAAAA,EAAqB,cAEzB,EAAG,CACDC,EACAC,EACAF,CAAA,CACD,EAEKmC,EAAwB,IAAM,CAClCjB,EAAiB,EAAI,EACrBE,EAAa,EAAK,CACpB,EAEMgB,GAAsB,CAACX,EAAoBY,IAAqB,CACpE,MAAMC,GACJvB,EAAoB,QAAUV,EAAgB,OAC1CkC,EAAyBxB,IAAwBV,EAEjDmC,EAAe,IAAM,CACzBpC,EAA4B,CAACW,EAAoB,MAAM,EAClDV,GACHG,EAA0BhB,EAAa,kBAAkB,EAEvD8C,IAAsBC,GACxB/B,EAA0BhB,EAAa,gBAAgB,CAE3D,EAEMiD,EAA6B,IAAM,CACvCjC,EACEH,EAAgB,OACZb,EAAa,iBACbA,EAAa,kBAAA,EAEnBkD,GAA0BjB,EAAOV,EAAqBV,CAAe,CACvE,EAEA,OAAKgC,EAOH/C,IACCiB,EAAuB,QAAUgC,IAElCJ,EAAA,EACAM,EAAA,EACO,KAGTC,GAA0BjB,EAAOV,EAAqB,EAAE,EACxDyB,EAAA,EACO,KAhBLL,EAAA,EACAK,EAAA,EACO,GAeX,EAkJA,MAAO,CACL,yBAAArC,EACA,gBAAAE,EACA,uBAAAE,EACA,eAAAc,EACA,UAAAZ,EACA,0BAAAE,EACA,aAAAE,EACA,cAAAI,EACA,oBAAAF,EACA,UAAAI,EACA,eA3JqB,MAAOM,EAAoBY,IAAqB,cAMrE,GALApC,EAAA,EACAO,EAA0B,EAAE,EAE5BY,EAAa,EAAI,EAEbgB,GAAoBX,EAAOY,CAAO,EAAG,OAGzC,KAAM,CAAE,qBAAAM,GAAsB,GAAGC,GAAeC,GAAcpB,EAAM,MAAM,EACpE,CAAE,MAAAqB,EAAO,SAAAC,CAAA,EAAaH,EAEtBI,IACJtD,GAAA,YAAAA,EAAiB,2BAA4B,EAEzCuD,IAAyBvD,GAAA,YAAAA,EAAiB,YAAa,EAG7D,GACE,CAACwD,GAAgCH,EAAUC,EAAwB,GACnEC,IAAyBF,GAAA,YAAAA,EAAU,QACnC,CACAZ,EAAA,EAEA,MACF,CAEA,MAAMgB,GAAWtE,GACf,CACE,GAAG+D,CAAA,EAEL7E,CAAA,EAGIK,EAAW,MAAMgF,GAAeD,GAAUpF,CAAW,EAE3D,IAAIL,GAAAU,GAAA,YAAAA,EAAU,SAAV,MAAAV,GAAkB,OAAQ,CAC5B,KAAM,CAAE,OAAA2F,GAAWjF,EAEnB6B,GAAA,MAAAA,EAA4B,CAC1B,KAAM,QACN,MAAMqD,GAAAD,EAAO,CAAC,IAAR,YAAAC,GAAW,OAAA,GAGnBxD,GAAA,MAAAA,EAAkBuD,GAElB3C,EAAaoC,CAAK,CACpB,KAAO,CACL,MAAMS,EAAyBnF,GAAA,YAAAA,EAAU,UAOzC,GALAoF,GAAcC,GAAW,qBAAsB,CAC7C,GAAGrF,CAAA,CACJ,EAGGqB,GAA+B,CAACE,EAAqB,CASvD,GAPAI,GAAA,MAAAA,EAAoB,CAClB,SAAUwD,EACV,UAAWT,EACX,OAAQ,EAAA,GAINrD,EAA6B,EAC9BiE,GAAAjC,EAAM,SAAN,MAAAiC,GAAkC,QAEnC1C,EAAuB,EAAE,EACzBJ,EAA6B,EAAI,EACjCF,EAAaoC,CAAK,EAClB1B,EAAa,EAAK,EAElB,MACF,CAGA,GAAI,CAACzB,EAAqB,CACxByB,EAAa,EAAK,EAElBN,EAAgB,CACd,SAAUyC,EACV,OAAQ,EAAA,CACT,EAED,MACF,CACF,CAGA,MAAMI,EAAgB,MAAMC,GAAiB,CAC3C,MAAAd,EACA,SAAAC,EACA,aAAAvD,EACA,0BAAAS,EACA,gBAAAH,CAAA,CACD,EAED,GAAI6D,GAAA,MAAAA,EAAe,SAAU,CAC3B,GAAIpE,GAAA,MAAAA,EAAe,OACjB,UAAWsE,MAAWtE,EACpB,GAAI,CACF,MAAMuE,GAAsBD,EAAO,CACrC,OAASE,GAAO,CACd,QAAQ,MACNvE,EAAa,4BACbqE,GACAE,EAAA,CAEJ,CAIJhE,GAAA,MAAAA,EAAoB,CAClB,SAAU4D,GAAA,YAAAA,EAAe,SACzB,UAAWA,GAAA,YAAAA,EAAe,UAC1B,OAAQ,EAAA,GAGN3B,EAAgBpC,CAAqB,EACvC,OAAO,SAAS,KAAOA,EAAA,EAEvBkB,EAAgB,CACd,SAAU6C,GAAA,YAAAA,EAAe,SACzB,OAAQ,EAAA,CACT,CAEL,MAEE5D,GAAA,MAAAA,EAAoB,CAClB,SAAUwD,EACV,UAAWT,EACX,OAAQ,EAAA,GAGVhC,EAAgB,CACd,SAAUyC,EACV,OAAQ,EAAA,CACT,CAEL,CAEAnC,EAAa,EAAK,CACpB,EAcE,aAAAW,GACA,6BAAAE,EACA,qBAAAJ,GACA,gCAAAK,EACA,4BAAAN,GACA,eAAAL,EACA,sBAAAI,CAAA,CAEJ,EC5UaqC,GAAiD,CAAC,CAC7D,sBAAA1E,EAAwB,GACxB,cAAAC,EACA,SAAA0E,EAAW,UACX,sBAAApG,EACA,2BAAAC,EACA,YAAAC,EAAc,GACd,oBAAA4B,EAAsB,GACtB,gCAAAuE,EAAkC,GAClC,sCAAAhE,EACA,sBAAAN,EACA,YAAAC,EACA,gBAAAC,EACA,kBAAAC,EACA,mBAAAC,EACA,MAAAmE,CACF,IAAM,CAMJ,MAAM3E,EAAe4E,GAAsB,CACzC,MAAO,wBACP,cAAe,gCACf,gBAAiB,kCACjB,iBAAkB,mCAClB,0BAA2B,qCAC3B,4BAA6B,8CAC7B,YAAa,iCACb,cAAe,mCACf,mBAAoB,2CACpB,2BAA4B,8CAC5B,6BACE,gDACF,iBAAkB,kDAAA,CACnB,EAEK,CAAE,gBAAA1E,EAAiB,4BAAAD,CAAA,EAAgC4E,GAAA,EACnD,CAAE,kBAAArG,CAAA,EAAsBJ,GAAqB,CACjD,2BAAAE,EACA,YAAAC,EACA,sBAAAF,CAAA,CACD,EAEK,CAAE,iBAAAyG,EAAkB,0BAAArE,CAAA,EAA8BsE,GAAA,EAElD,CACJ,yBAAApE,EACA,gBAAAE,EACA,uBAAAE,EACA,eAAAc,EACA,UAAAZ,EACA,0BAAAE,EACA,aAAAE,EACA,cAAAI,EACA,oBAAAF,EACA,UAAAI,EACA,eAAAqD,EACA,aAAAzC,EACA,6BAAAE,EACA,qBAAAJ,EACA,gCAAAK,EACA,4BAAAN,GACA,eAAAL,GACA,sBAAAI,EAAA,EACEtC,GAAc,CAChB,sBAAAC,EACA,cAAAC,EACA,aAAAC,EACA,4BAAAC,EACA,YAAA1B,EACA,gBAAA2B,EACA,oBAAAC,EACA,sBAAAC,EACA,YAAAC,EACA,gBAAAC,EACA,kBAAAC,EACA,mBAAAC,EACA,0BAAAC,EACA,sCAAAC,CAAA,CACD,EAEK,CAAE,qBAAAuE,EAAsB,qBAAAC,CAAA,EAC5BC,GAA6B,CAC3B,SAAU5D,EACV,cAAAE,EACA,gBAAAvB,CAAA,CACD,EAEGkF,EAA4BC,GAAQ,IACpC1E,EACKX,EAAa,mBAIpBiF,IAAyB,UACzBC,GAAA,YAAAA,EAAsB,UAAW,QAG1B,IAGF,GACN,CACDA,GAAA,YAAAA,EAAsB,OACtBD,EACAtE,EACAX,EAAa,kBAAA,CACd,EAEKsF,GACJ,CAACrF,IAA+BF,GAAA,YAAAA,EAAe,QAEjD,GAAI,CAACvB,EAAkB,QAAUD,EAC/B,OACEgH,EAAC,MAAA,CACC,UAAW,wCAAwCd,CAAQ,mBAC3D,cAAY,aAEZ,SAAAc,EAACC,GAAA,CAAe,eAAe,YAAA,CAAa,CAAA,CAAA,EAKlD,GAAInE,EAAa,SAAUsD,GAAA,MAAAA,EAAO,qBAChC,OACEY,EAACE,EAAA,CACC,cAAY,4BACZ,KAAK,sBACL,KAAMd,GAAA,YAAAA,EAAO,oBACb,QAAS,CAAE,aAAAtD,CAAA,CAAa,CAAA,EAK9B,GAAIF,EACF,OACEoE,EAACG,GAAA,CACC,SAAAjB,EACA,UAAAxD,EACA,iBAAA6D,EACA,gCAAAJ,EACA,0BAAAjE,EACA,qBAAsBiC,CAAA,CAAA,EAK5B,MAAMiD,EAAc,CAClB,UAAAhE,EACA,aAAAN,CAAA,EAGF,OACEuE,EAAC,MAAA,CACC,UAAWC,GAAQ,CACjB,oBACA,sBAAsBpB,CAAQ,EAAA,CAC/B,EACD,cAAY,aAEZ,SAAA,CAAAc,EAACE,EAAA,CACC,KAAK,QACL,cAAY,QACZ,KAAMd,GAAA,YAAAA,EAAO,MACb,QAAS,CAAE,GAAGgB,CAAA,EAEd,SAAAJ,EAACO,GAAA,CACC,MAAO9F,EAAa,MACpB,QAAS,GACT,UAAU,0BAAA,CAAA,CACZ,CAAA,EAED8E,EAAiB,KAChBS,EAACQ,GAAA,CACC,UAAU,kCACV,KAAMjB,EAAiB,KACvB,QAAQ,YACR,QAASA,EAAiB,KAC1B,KAAMA,EAAiB,IAAA,CAAA,EAEvB,KACJc,EAACI,GAAA,CACC,SAAUhB,EACV,UAAU,0BACV,QAASrD,EACT,KAAK,cACL,aAAcnD,EACd,MAAAmG,EACA,SAAU,CACR,KAAM,OACN,KAAMA,GAAA,YAAAA,EAAO,KACb,QAASgB,EACT,WAAY,MAAA,EAGd,SAAA,CAAAC,EAACK,GAAA,CACC,qBAAsBf,EACtB,UAAU,iCACV,aAAc,mBACd,KAAM,WACN,UAAWhF,GAAA,YAAAA,EAAiB,UAC5B,aAAckF,EACd,aAAc7D,EACd,oBAAqB0D,EACrB,yBAA0B/E,GAAA,YAAAA,EAAiB,yBAC3C,QAASuC,EACT,YAAazC,EAAa,YAC1B,cAAeA,EAAa,cAC5B,OAAQ+B,GAEP,SAAA,CAAAjC,EACCyF,EAAC,MAAA,CAAI,UAAU,2CACb,SAAAA,EAACU,GAAA,CACC,UAAU,kFACV,aAAa,kBACb,KAAK,uBACL,YAAajG,EAAa,2BAC1B,cAAeA,EAAa,6BAC5B,aAAce,EACd,aAAcF,EACd,QAASuB,GACT,OAAQD,EAAA,CAAA,EAEZ,EACE,KAEHmD,GACCC,EAAC,MAAA,CACC,UAAW,qCACX,cAAY,iBAEZ,WAACW,GAAA,CACC,SAAAX,EAACY,GAAA,CACC,KAAK,GACL,YAAanG,EAAa,iBAC1B,MAAOA,EAAa,iBACpB,QAAS6B,EACT,SAAUQ,CAAA,CAAA,CACZ,CACF,CAAA,CAAA,EAEA,IAAA,CAAA,CAAA,EAGNkD,EAACE,EAAA,CACC,KAAK,uBACL,cAAa,uBACb,KAAMd,GAAA,YAAAA,EAAO,oBAAA,EACR,sBAAA,EAGPiB,EAACH,EAAA,CACC,KAAK,UACL,UAAU,4BACV,cAAY,UACZ,KAAMd,GAAA,YAAAA,EAAO,QACb,QAAS,CAAE,GAAGgB,CAAA,EAEd,SAAA,CAAAJ,EAACa,GAAA,CACC,UAAU,oCACV,KAAK,SACL,QAAQ,WACR,MAAO,CAAE,QAAS,CAAA,EAClB,WAAYpG,EAAa,gBACzB,aAAc,GACd,QAASuC,CAAA,CAAA,EAEXgD,EAACa,GAAA,CACC,KAAK,SACL,WAAYpG,EAAa,cACzB,QAAQ,UACR,aAAc2B,CAAA,CAAA,CAChB,CAAA,CAAA,CACF,CAAA,CAAA,EAEF4D,EAAC,MAAA,CAAI,GAAG,kBAAA,CAAmB,CAAA,CAAA,CAAA,CAGjC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { FormProps } from '../../types';
|
|
2
2
|
|
|
3
|
-
export declare const Form: ({ slots, name, loading, children, className, fieldsConfig, onSubmit, ...props }: FormProps) => import("preact/compat").JSX.Element;
|
|
3
|
+
export declare const Form: ({ slots, name, loading, children, className, fieldsConfig, onSubmit, formSlot, ...props }: FormProps) => import("preact/compat").JSX.Element;
|
|
4
4
|
//# sourceMappingURL=Form.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*! Copyright 2026 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import{jsx as
|
|
3
|
+
import{jsx as o,jsxs as I}from"@dropins/tools/preact-jsx-runtime.js";import{Slot as E,classes as $}from"@dropins/tools/lib.js";import{Header as Z,InLineAlert as S,InputPassword as k}from"@dropins/tools/components.js";import"@dropins/tools/event-bus.js";import"@dropins/tools/recaptcha.js";import{useState as w,useEffect as z,useCallback as J}from"@dropins/tools/preact-hooks.js";import{u as W,F as O}from"../chunks/Button.js";import{v as g,u as R,a as C}from"../chunks/usePasswordValidationMessage.js";import{a as tt}from"../chunks/getCustomerToken.js";import{r as et}from"../chunks/resetPassword.js";import{c as j,g as at,u as rt,B as st}from"../chunks/Button2.js";import{useText as it}from"@dropins/tools/i18n.js";import"@dropins/tools/preact-compat.js";import"../chunks/getAdobeCommerceOptimizerData.js";import"../chunks/network-error.js";import"@dropins/tools/fetch-graphql.js";import"../fragments.js";import"../chunks/acdl.js";import"../chunks/setReCaptchaToken.js";const K=(d,p)=>d.split("&").filter(s=>s.includes(p)).map(s=>s.split("=")[1])[0],ot=({isEmailConfirmationRequired:d,signInOnSuccess:p,passwordConfigs:e,routeRedirectOnSignIn:s,routeWrongUrlRedirect:N,onErrorCallback:t,onSuccessCallback:i,handleSetInLineAlertProps:m,routeRedirectOnPasswordUpdate:P,routeSignInPage:u})=>{const r=it({errorNotification:"Auth.Notification.errorNotification",updatePasswordMessage:"Auth.Notification.updatePasswordMessage",updatePasswordActionMessage:"Auth.Notification.updatePasswordActionMessage",customerTokenErrorMessage:"Auth.Api.customerTokenErrorMessage"}),[q,n]=w({userName:"",status:!1}),[T,v]=w(""),[_,x]=w(!1),[A,U]=w(""),[y,L]=w(""),[M,c]=w(!1),[F,f]=w(!1),[b,D]=w([]);z(()=>{_&&!b.length&&(T.length?f(!1):f(!0))},[_,T,b]),z(()=>{const{search:h}=window.location;!h.includes("token=")&&!h.includes("email=")&&j(N)&&(window.location.href=N());const a=decodeURIComponent(h),V=K(a,"token"),B=K(a,"email");U(B),L(V)},[N]);const Q=J(async h=>{h.preventDefault(),c(!0),D([]);const a=at(h.target),V=(a==null?void 0:a.password)&&A&&y;a!=null&&a.password||(f(!0),c(!1));const B=(e==null?void 0:e.requiredCharacterClasses)??0,Y=(e==null?void 0:e.minLength)??0;if(!g(a==null?void 0:a.password,B)||a.password.length<+Y){x(!0),c(!1);return}if(!V){m({type:"error",text:r.errorNotification}),c(!1);return}const{message:G,success:H}=await et(A,y,a.password);if(H){if(d||!d&&!p){i==null||i(),j(P)&&(window.location.href=P()),x(!0),c(!1),f(!1),v(""),D([{label:r.updatePasswordActionMessage,onClick:()=>{window.location.href=u==null?void 0:u()}}]),m({type:"success",text:r.updatePasswordMessage});return}const l=await tt({email:A,password:a.password,handleSetInLineAlertProps:m,onErrorCallback:t,translations:r});l!=null&&l.userName&&(i==null||i(l==null?void 0:l.userName),j(s)?window.location.href=s():n({userName:l==null?void 0:l.userName,status:!0}))}else m({type:"error",text:G}),t==null||t({message:G,success:H});c(!1)},[A,y,e==null?void 0:e.requiredCharacterClasses,e==null?void 0:e.minLength,r,d,p,u,t,i,s,m,P]),X=J(h=>{v(h)},[]);return{additionalActionsAlert:b,passwordError:F,isSuccessful:q,updatePasswordValue:T,isClickSubmit:_,isLoading:M,submitUpdatePassword:Q,handleSetUpdatePasswordValue:X,setIsClickSubmit:x}},ut=({signInOnSuccess:d=!0,formSize:p="default",routeRedirectOnSignIn:e,routeWrongUrlRedirect:s,routeSignInPage:N,slots:t,onErrorCallback:i,onSuccessCallback:m,routeRedirectOnPasswordUpdate:P})=>{const u=W({title:"Auth.UpdatePasswordForm.title",buttonPrimary:"Auth.UpdatePasswordForm.buttonPrimary",placeholder:"Auth.InputPassword.placeholder",floatingLabel:"Auth.InputPassword.floatingLabel",requiredFieldError:"Auth.FormText.requiredFieldError.default"}),{passwordConfigs:r,isEmailConfirmationRequired:q}=R(),{inLineAlertProps:n,handleSetInLineAlertProps:T}=rt(),{additionalActionsAlert:v,passwordError:_,isSuccessful:x,updatePasswordValue:A,isClickSubmit:U,isLoading:y,submitUpdatePassword:L,handleSetUpdatePasswordValue:M}=ot({isEmailConfirmationRequired:q,signInOnSuccess:d,passwordConfigs:r,routeRedirectOnSignIn:e,routeWrongUrlRedirect:s,onErrorCallback:i,onSuccessCallback:m,handleSetInLineAlertProps:T,routeRedirectOnPasswordUpdate:P,routeSignInPage:N}),{isValidUniqueSymbols:c,defaultLengthMessage:F}=C({password:A,isClickSubmit:U,passwordConfigs:r});if(x.status&&(t!=null&&t.SuccessNotification))return o(E,{"data-testid":"successNotificationTestId",name:"SuccessNotification",slot:t==null?void 0:t.SuccessNotification,context:{isSuccessful:x}});const f={isLoading:y,passwordError:_,isSuccessful:x};return I("div",{className:$(["auth-update-password-form",`auth-update-password-form--${p}`]),children:[o(E,{name:"Title","data-testid":"title",slot:t==null?void 0:t.Title,context:{...f},children:o(Z,{title:u.title,divider:!1,className:"auth-update-password-form__title"})}),o(S,{className:$(["auth-update-password-form__notification",["auth-update-password-form__notification--show",!!(n!=null&&n.text)]]),variant:"secondary",heading:n==null?void 0:n.text,icon:n.icon,additionalActions:v}),I(O,{name:"updatePassword_form",className:"auth-update-password-form__form",onSubmit:L,loading:y,fieldsConfig:[],formSlot:{name:"Form",slot:t==null?void 0:t.Form,context:f,dataTestId:"form"},children:[o("div",{style:"display: none;",children:o("input",{type:"text",id:"username",name:"username",autoComplete:"username"})}),o(k,{defaultValue:A,onValue:M,className:"auth-update-password-form__form__item",autoComplete:"new-password",name:"password",errorMessage:_||c==="error"||(F==null?void 0:F.status)==="error"?u.requiredFieldError:void 0,minLength:r==null?void 0:r.minLength,uniqueSymbolsStatus:c,validateLengthConfig:F,requiredCharacterClasses:r==null?void 0:r.requiredCharacterClasses,placeholder:u.placeholder,floatingLabel:u.floatingLabel}),o(E,{name:"Buttons",className:"auth-update-password-form__button","data-testid":"buttons",slot:t==null?void 0:t.Buttons,context:{...f},children:o(st,{type:"submit",buttonText:u.buttonPrimary,variant:"primary",enableLoader:y})})]})]})},Ut=({slots:d,formSize:p,signInOnSuccess:e,routeRedirectOnPasswordUpdate:s,routeRedirectOnSignIn:N,routeSignInPage:t,routeWrongUrlRedirect:i,onErrorCallback:m,onSuccessCallback:P})=>o("div",{className:"auth-update-password",children:o(ut,{formSize:p,signInOnSuccess:e,routeSignInPage:t,routeRedirectOnSignIn:N,routeWrongUrlRedirect:i,onErrorCallback:m,onSuccessCallback:P,slots:d,routeRedirectOnPasswordUpdate:s})});export{Ut as UpdatePassword,Ut as default};
|
|
4
4
|
//# sourceMappingURL=UpdatePassword.js.map
|