@dropins/storefront-auth 3.1.0-beta2 → 3.2.0-alpha001
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/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/containers/UpdatePassword.js +1 -1
- package/containers/UpdatePassword.js.map +1 -1
- package/package.json +1 -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
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*! Copyright 2026 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import{jsxs as
|
|
3
|
+
import{jsxs as g,jsx as s}from"@dropins/tools/preact-jsx-runtime.js";import{classes as x,Slot as p}from"@dropins/tools/lib.js";import{v as _,F as P}from"./Button.js";import"@dropins/tools/event-bus.js";import"@dropins/tools/recaptcha.js";import{r as v}from"./requestPasswordResetEmail.js";import{g as N,c as y,u as E,B as b}from"./Button2.js";import{useState as T,useCallback as h}from"@dropins/tools/preact-hooks.js";import{useText as F}from"@dropins/tools/i18n.js";import{Header as L,InLineAlert as D}from"@dropins/tools/components.js";import{s as B,D as A}from"./simplifyTransformAttributesForm.js";import*as R from"@dropins/tools/preact-compat.js";const j=a=>R.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...a},R.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M7.74512 9.87701L12.0001 14.132L16.2551 9.87701",stroke:"currentColor",strokeWidth:1,strokeLinecap:"square",strokeLinejoin:"round"})),q=({routeSignIn:a,onErrorCallback:i,onSuccessCallback:c,setActiveComponent:d,handleSetInLineAlertProps:e})=>{const t=F({successPasswordResetEmailNotification:"Auth.Notification.successPasswordResetEmailNotification"}),[f,r]=T(!1),m=h(async n=>{n.preventDefault();const o=N(n.target);if(!_(o==null?void 0:o.email))return;r(!0);const u=await v(o.email);if(r(!1),!u.success){i==null||i(u),e==null||e({type:"error",text:u.message});return}if(c){await c();return}e==null||e({type:"success",text:t.successPasswordResetEmailNotification.replace("{email}",o.email)})},[e,i,c,t.successPasswordResetEmailNotification]),w=h(()=>{if(y(d)){d("signInForm");return}y(a)&&(window.location.href=a())},[d,a]);return{isLoading:f,submitResetPassword:m,redirectToSignInPage:w}},Q=({formSize:a="default",routeSignIn:i,setActiveComponent:c,onErrorCallback:d,onSuccessCallback:e,slots:t,...f})=>{const r=F({title:"Auth.ResetPasswordForm.title",buttonPrimary:"Auth.ResetPasswordForm.buttonPrimary",buttonSecondary:"Auth.ResetPasswordForm.buttonSecondary",formAriaLabel:"Auth.ResetPasswordForm.formAriaLabel"}),{inLineAlertProps:m,handleSetInLineAlertProps:w}=E(),{isLoading:n,submitResetPassword:o,redirectToSignInPage:u}=q({routeSignIn:i,setActiveComponent:c,onErrorCallback:d,onSuccessCallback:e,handleSetInLineAlertProps:w}),l={isLoading:n};return g("div",{...f,className:x(["auth-reset-password-form",`auth-reset-password-form--${a}`]),"data-testid":"resetPasswordForm",children:[s(p,{name:"Title","data-testid":"title",slot:t==null?void 0:t.Title,context:{...l},children:s(L,{title:r.title,divider:!1,className:"auth-reset-password-form__title"})}),m.text?s(D,{className:"auth-reset-password-form__notification",type:m.type,variant:"secondary",heading:m.text,icon:m.icon}):null,s(p,{name:"Form","data-testid":"form",slot:t==null?void 0:t.Form,context:{...l},children:s(P,{"aria-labelledby":r.formAriaLabel,name:"resetPassword_form",className:"auth-reset-password-form__form",onSubmit:o,loading:n,fieldsConfig:B(A),children:g(p,{name:"Buttons",className:"auth-reset-password-form__buttons","data-testid":"buttons",slot:t==null?void 0:t.Buttons,context:{...l},children:[s(b,{className:"auth-reset-password-form__buttons--signin",type:"button",variant:"tertiary",style:{padding:"0"},icon:s(j,{style:{transform:"rotate(90deg)"}}),buttonText:r.buttonSecondary,enableLoader:!1,onClick:u}),s(b,{type:"submit",buttonText:r.buttonPrimary,variant:"primary",enableLoader:n})]})})}),s("div",{id:"requestPasswordResetEmail"})]})};export{Q as R};
|
|
4
4
|
//# sourceMappingURL=ResetPasswordForm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResetPasswordForm.js","sources":["../../node_modules/@adobe-commerce/elsie/src/icons/ChevronDown.svg","/@dropins/storefront-auth/src/hooks/components/useResetPasswordForm.tsx","/@dropins/storefront-auth/src/components/ResetPasswordForm/ResetPasswordForm.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgChevronDown = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M7.74512 9.87701L12.0001 14.132L16.2551 9.87701\", stroke: \"currentColor\", strokeWidth: 1, strokeLinecap: \"square\", strokeLinejoin: \"round\" }));\nexport default SvgChevronDown;\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 { requestPasswordResetEmail } from '@/auth/api';\nimport { checkIsFunction } from '@/auth/lib/checkIsFunction';\nimport { getFormValues } from '@/auth/lib/getFormValues';\nimport { UseResetPasswordFormProps } from '@/auth/types';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { useCallback, useState } from 'preact/hooks';\nimport { validateEmail } from '@/auth/lib/validationFields';\n\nexport const useResetPasswordForm = ({\n routeSignIn,\n onErrorCallback,\n onSuccessCallback,\n setActiveComponent,\n handleSetInLineAlertProps,\n}: UseResetPasswordFormProps) => {\n const translations = useText({\n successPasswordResetEmailNotification:\n 'Auth.Notification.successPasswordResetEmailNotification',\n });\n const [isLoading, setIsLoading] = useState(false);\n\n const submitResetPassword = useCallback(\n async (event: any): Promise<void> => {\n event.preventDefault();\n\n const formValues = getFormValues(event.target);\n\n if (!validateEmail(formValues?.email)) {\n return;\n }\n\n setIsLoading(true);\n\n const response = await requestPasswordResetEmail(formValues.email);\n\n setIsLoading(false);\n\n if (!response.success) {\n onErrorCallback?.(response);\n handleSetInLineAlertProps?.({\n type: 'error',\n text: response.message,\n });\n return;\n }\n\n if (onSuccessCallback) {\n await onSuccessCallback();\n return;\n }\n\n handleSetInLineAlertProps?.({\n type: 'success',\n text: translations.successPasswordResetEmailNotification.replace(\n '{email}',\n formValues.email\n ),\n });\n },\n [\n handleSetInLineAlertProps,\n onErrorCallback,\n onSuccessCallback,\n translations.successPasswordResetEmailNotification,\n ]\n );\n\n const redirectToSignInPage = useCallback(() => {\n if (checkIsFunction(setActiveComponent)) {\n setActiveComponent('signInForm');\n return;\n }\n\n if (checkIsFunction(routeSignIn)) {\n window.location.href = routeSignIn();\n }\n }, [setActiveComponent, routeSignIn]);\n\n return {\n isLoading,\n submitResetPassword,\n redirectToSignInPage,\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 { HTMLAttributes } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport '@/auth/components/ResetPasswordForm/ResetPasswordForm.css';\nimport { useResetPasswordForm } from '@/auth/hooks/components/useResetPasswordForm';\nimport { ResetPasswordFormProps } from '@/auth/types';\nimport { ChevronDown as ChevronLeft } from '@adobe-commerce/elsie/icons';\nimport { Form, Button } from '@/auth/components';\nimport { useInLineAlert } from '@/auth/hooks/useInLineAlert';\nimport { Header, InLineAlert } from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { simplifyTransformAttributesForm } from '@/auth/lib/simplifyTransformAttributesForm';\nimport { DEFAULT__RESET_PASSWORD_EMAIL_FIELD } from '@/auth/configs/defaultCreateUserConfigs';\n\nexport const ResetPasswordForm: FunctionComponent<\n ResetPasswordFormProps & HTMLAttributes<HTMLDivElement>\n> = ({\n formSize = 'default',\n routeSignIn,\n setActiveComponent,\n onErrorCallback,\n onSuccessCallback,\n ...props\n}) => {\n const translations = useText({\n title: 'Auth.ResetPasswordForm.title',\n buttonPrimary: 'Auth.ResetPasswordForm.buttonPrimary',\n buttonSecondary: 'Auth.ResetPasswordForm.buttonSecondary',\n formAriaLabel: 'Auth.ResetPasswordForm.formAriaLabel',\n });\n\n const { inLineAlertProps, handleSetInLineAlertProps } = useInLineAlert();\n\n const { isLoading, submitResetPassword, redirectToSignInPage } =\n useResetPasswordForm({\n routeSignIn,\n setActiveComponent,\n onErrorCallback,\n onSuccessCallback,\n handleSetInLineAlertProps,\n });\n\n return (\n <div\n {...props}\n className={classes([\n 'auth-reset-password-form',\n `auth-reset-password-form--${formSize}`,\n ])}\n data-testid=\"resetPasswordForm\"\n >\n <Header\n title={translations.title}\n divider={false}\n className=\"auth-reset-password-form__title\"\n />\n {inLineAlertProps.text ? (\n <InLineAlert\n className=\"auth-reset-password-form__notification\"\n type={inLineAlertProps.type}\n variant=\"secondary\"\n heading={inLineAlertProps.text}\n icon={inLineAlertProps.icon}\n />\n ) : null}\n <Form\n aria-labelledby={translations.formAriaLabel}\n name=\"resetPassword_form\"\n className=\"auth-reset-password-form__form\"\n onSubmit={submitResetPassword}\n loading={isLoading}\n fieldsConfig={simplifyTransformAttributesForm(\n DEFAULT__RESET_PASSWORD_EMAIL_FIELD\n )}\n >\n <div className=\"auth-reset-password-form__buttons\">\n <Button\n className=\"auth-reset-password-form__buttons--signin\"\n type=\"button\"\n variant=\"tertiary\"\n style={{ padding: '0' }}\n icon={<ChevronLeft style={{ transform: 'rotate(90deg)' }} />}\n buttonText={translations.buttonSecondary}\n enableLoader={false}\n onClick={redirectToSignInPage}\n />\n <Button\n type=\"submit\"\n buttonText={translations.buttonPrimary}\n variant=\"primary\"\n enableLoader={isLoading}\n />\n </div>\n </Form>\n <div id=\"requestPasswordResetEmail\" />\n </div>\n );\n};\n"],"names":["SvgChevronDown","props","React","useResetPasswordForm","routeSignIn","onErrorCallback","onSuccessCallback","setActiveComponent","handleSetInLineAlertProps","translations","useText","isLoading","setIsLoading","useState","submitResetPassword","useCallback","event","formValues","getFormValues","validateEmail","response","requestPasswordResetEmail","redirectToSignInPage","checkIsFunction","ResetPasswordForm","formSize","inLineAlertProps","useInLineAlert","jsxs","classes","jsx","Header","InLineAlert","Form","simplifyTransformAttributesForm","DEFAULT__RESET_PASSWORD_EMAIL_FIELD","Button","ChevronLeft"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"ResetPasswordForm.js","sources":["../../node_modules/@adobe-commerce/elsie/src/icons/ChevronDown.svg","/@dropins/storefront-auth/src/hooks/components/useResetPasswordForm.tsx","/@dropins/storefront-auth/src/components/ResetPasswordForm/ResetPasswordForm.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgChevronDown = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M7.74512 9.87701L12.0001 14.132L16.2551 9.87701\", stroke: \"currentColor\", strokeWidth: 1, strokeLinecap: \"square\", strokeLinejoin: \"round\" }));\nexport default SvgChevronDown;\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 { requestPasswordResetEmail } from '@/auth/api';\nimport { checkIsFunction } from '@/auth/lib/checkIsFunction';\nimport { getFormValues } from '@/auth/lib/getFormValues';\nimport { UseResetPasswordFormProps } from '@/auth/types';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { useCallback, useState } from 'preact/hooks';\nimport { validateEmail } from '@/auth/lib/validationFields';\n\nexport const useResetPasswordForm = ({\n routeSignIn,\n onErrorCallback,\n onSuccessCallback,\n setActiveComponent,\n handleSetInLineAlertProps,\n}: UseResetPasswordFormProps) => {\n const translations = useText({\n successPasswordResetEmailNotification:\n 'Auth.Notification.successPasswordResetEmailNotification',\n });\n const [isLoading, setIsLoading] = useState(false);\n\n const submitResetPassword = useCallback(\n async (event: any): Promise<void> => {\n event.preventDefault();\n\n const formValues = getFormValues(event.target);\n\n if (!validateEmail(formValues?.email)) {\n return;\n }\n\n setIsLoading(true);\n\n const response = await requestPasswordResetEmail(formValues.email);\n\n setIsLoading(false);\n\n if (!response.success) {\n onErrorCallback?.(response);\n handleSetInLineAlertProps?.({\n type: 'error',\n text: response.message,\n });\n return;\n }\n\n if (onSuccessCallback) {\n await onSuccessCallback();\n return;\n }\n\n handleSetInLineAlertProps?.({\n type: 'success',\n text: translations.successPasswordResetEmailNotification.replace(\n '{email}',\n formValues.email\n ),\n });\n },\n [\n handleSetInLineAlertProps,\n onErrorCallback,\n onSuccessCallback,\n translations.successPasswordResetEmailNotification,\n ]\n );\n\n const redirectToSignInPage = useCallback(() => {\n if (checkIsFunction(setActiveComponent)) {\n setActiveComponent('signInForm');\n return;\n }\n\n if (checkIsFunction(routeSignIn)) {\n window.location.href = routeSignIn();\n }\n }, [setActiveComponent, routeSignIn]);\n\n return {\n isLoading,\n submitResetPassword,\n redirectToSignInPage,\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 { HTMLAttributes } from 'preact/compat';\nimport { classes, Slot } from '@adobe-commerce/elsie/lib';\nimport '@/auth/components/ResetPasswordForm/ResetPasswordForm.css';\nimport { useResetPasswordForm } from '@/auth/hooks/components/useResetPasswordForm';\nimport { ResetPasswordFormProps } from '@/auth/types';\nimport { ChevronDown as ChevronLeft } from '@adobe-commerce/elsie/icons';\nimport { Form, Button } from '@/auth/components';\nimport { useInLineAlert } from '@/auth/hooks/useInLineAlert';\nimport { Header, InLineAlert } from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { simplifyTransformAttributesForm } from '@/auth/lib/simplifyTransformAttributesForm';\nimport { DEFAULT__RESET_PASSWORD_EMAIL_FIELD } from '@/auth/configs/defaultCreateUserConfigs';\n\nexport const ResetPasswordForm: FunctionComponent<\n ResetPasswordFormProps & HTMLAttributes<HTMLDivElement>\n> = ({\n formSize = 'default',\n routeSignIn,\n setActiveComponent,\n onErrorCallback,\n onSuccessCallback,\n slots,\n ...props\n}) => {\n const translations = useText({\n title: 'Auth.ResetPasswordForm.title',\n buttonPrimary: 'Auth.ResetPasswordForm.buttonPrimary',\n buttonSecondary: 'Auth.ResetPasswordForm.buttonSecondary',\n formAriaLabel: 'Auth.ResetPasswordForm.formAriaLabel',\n });\n\n const { inLineAlertProps, handleSetInLineAlertProps } = useInLineAlert();\n\n const { isLoading, submitResetPassword, redirectToSignInPage } =\n useResetPasswordForm({\n routeSignIn,\n setActiveComponent,\n onErrorCallback,\n onSuccessCallback,\n handleSetInLineAlertProps,\n });\n\n const slotContext = { isLoading };\n\n return (\n <div\n {...props}\n className={classes([\n 'auth-reset-password-form',\n `auth-reset-password-form--${formSize}`,\n ])}\n data-testid=\"resetPasswordForm\"\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-reset-password-form__title\"\n />\n </Slot>\n {inLineAlertProps.text ? (\n <InLineAlert\n className=\"auth-reset-password-form__notification\"\n type={inLineAlertProps.type}\n variant=\"secondary\"\n heading={inLineAlertProps.text}\n icon={inLineAlertProps.icon}\n />\n ) : null}\n <Slot\n name=\"Form\"\n data-testid=\"form\"\n slot={slots?.Form}\n context={{ ...slotContext }}\n >\n <Form\n aria-labelledby={translations.formAriaLabel}\n name=\"resetPassword_form\"\n className=\"auth-reset-password-form__form\"\n onSubmit={submitResetPassword}\n loading={isLoading}\n fieldsConfig={simplifyTransformAttributesForm(\n DEFAULT__RESET_PASSWORD_EMAIL_FIELD\n )}\n >\n <Slot\n name=\"Buttons\"\n className=\"auth-reset-password-form__buttons\"\n data-testid=\"buttons\"\n slot={slots?.Buttons}\n context={{ ...slotContext }}\n >\n <Button\n className=\"auth-reset-password-form__buttons--signin\"\n type=\"button\"\n variant=\"tertiary\"\n style={{ padding: '0' }}\n icon={<ChevronLeft style={{ transform: 'rotate(90deg)' }} />}\n buttonText={translations.buttonSecondary}\n enableLoader={false}\n onClick={redirectToSignInPage}\n />\n <Button\n type=\"submit\"\n buttonText={translations.buttonPrimary}\n variant=\"primary\"\n enableLoader={isLoading}\n />\n </Slot>\n </Form>\n </Slot>\n <div id=\"requestPasswordResetEmail\" />\n </div>\n );\n };\n"],"names":["SvgChevronDown","props","React","useResetPasswordForm","routeSignIn","onErrorCallback","onSuccessCallback","setActiveComponent","handleSetInLineAlertProps","translations","useText","isLoading","setIsLoading","useState","submitResetPassword","useCallback","event","formValues","getFormValues","validateEmail","response","requestPasswordResetEmail","redirectToSignInPage","checkIsFunction","ResetPasswordForm","formSize","slots","inLineAlertProps","useInLineAlert","slotContext","jsxs","classes","jsx","Slot","Header","InLineAlert","Form","simplifyTransformAttributesForm","DEFAULT__RESET_PASSWORD_EMAIL_FIELD","Button","ChevronLeft"],"mappings":"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","x_google_ignoreList":[0]}
|
package/chunks/SignInForm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*! Copyright 2026 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import{jsx as
|
|
3
|
+
import{jsx as n,jsxs as k,Fragment as R}from"@dropins/tools/preact-jsx-runtime.js";import{Slot as v,classes as tt}from"@dropins/tools/lib.js";import{c as E,g as rt,u as at,B as Q}from"./Button2.js";import{useState as _,useCallback as m,useEffect as X,useMemo as et}from"@dropins/tools/preact-hooks.js";import"@dropins/tools/event-bus.js";import"@dropins/tools/recaptcha.js";import{a as it}from"./getCustomerToken.js";import{r as ot}from"./resendConfirmationEmail.js";import{s as nt,a as st}from"./simplifyTransformAttributesForm.js";import{f as ut,E as mt}from"./focusOnEmptyPasswordField.js";import{c as ct}from"./confirmEmail.js";import{useText as ft}from"@dropins/tools/i18n.js";import{Header as dt,InLineAlert as lt,InputPassword as ht}from"@dropins/tools/components.js";import{u as gt,F as wt}from"./Button.js";const _t=({emailConfirmationStatusMessage:t,translations:e,initialEmailValue:s,routeSignUp:l,routeForgotPassword:c,routeRedirectOnSignIn:F,onErrorCallback:y,setActiveComponent:a,onSuccessCallback:f,onSignUpLinkClick:h,handleSetInLineAlertProps:o,routeRedirectOnEmailConfirmationClose:b,apiErrorMessageOverride:p})=>{const[j,q]=_(""),[V,u]=_(!1),[g,d]=_(""),[B,w]=_(!1),[D,G]=_({userName:"",status:!1}),[C,x]=_(!1),[N,I]=_([]),S=m(async r=>{o(),u(!0),w(!1),I([]),await ot(r)},[o]),H=m(r=>{r.length?w(!1):w(!0),d(r)},[]);X(()=>{t!=null&&t.text&&o({text:t.text,type:t.status?t.status:void 0})},[t,o]);const K=m(()=>{g.length||w(!0)},[g]),L=m((r,i)=>g.length?!1:(w(!0),i&&ut(r,g,""),!0),[g]),M=m((r,i)=>{i!=null&&i.userName&&(r.target.reset(),E(F)?window.location.href=F():(f==null||f({userName:i==null?void 0:i.userName,status:!0}),G({userName:i==null?void 0:i.userName,status:!0})))},[f,F]),U=m((r,i)=>{var P;if((P=r==null?void 0:r.errorMessage)!=null&&P.length){q(i);const J=r.errorMessage.includes("This account isn't confirmed. Verify and try again."),T=J?e.resendEmailInformationText:r.displayErrorMessage;I(J?[{label:e.resendEmailButtonText,onClick:()=>{S(i)}}]:[]),o({text:T,type:"error"}),d("")}},[S,o,e.resendEmailButtonText,e.resendEmailInformationText]),$=m(async(r,i)=>{if(o(),L(r,i))return;x(!0);const P=rt(r.target);if(Object.values(P).every(T=>T)){const{email:T,password:O}=P,W=await it({email:T,password:O,handleSetInLineAlertProps:o,onErrorCallback:y,translations:e,apiErrorMessageOverride:p});U(W,T),M(r,W),w(!1)}x(!1)},[e,y,L,U,M,o,p]),A=m(()=>{if(E(a)){a("resetPasswordForm");return}E(c)&&(window.location.href=c())},[c,a]),Y=m(()=>{if(E(h)&&h(),E(a)){a("signUpForm");return}E(l)&&(window.location.href=l())},[h,l,a]),Z=et(()=>{const r=nt(st);return s!=null&&s.length?r==null?void 0:r.map(i=>({...i,defaultValue:s})):r},[s]),z=m(()=>{o(),E(b)?window.location.href=b():u(!1)},[o,b]);return{additionalActionsAlert:N,userEmail:j,defaultEnhancedEmailFields:Z,passwordError:B,isSuccessful:D,isLoading:C,signInPasswordValue:g,showEmailConfirmationForm:V,setShowEmailConfirmationForm:u,setSignInPasswordValue:d,submitLogInUser:$,forgotPasswordCallback:A,onSignUpLinkClickCallback:Y,handledOnPrimaryButtonClick:z,handleSetPassword:H,onBlurPassword:K}},yt=()=>{let t=new URL(window.location.href),e=t.searchParams.get("email"),s=t.searchParams.get("key");e&&s&&(t.searchParams.delete("email"),t.searchParams.delete("key"),window.history.replaceState({},document.title,t.toString()))},Et=({enableEmailConfirmation:t})=>{const e=ft({accountConfirmMessage:"Auth.EmailConfirmationForm.accountConfirmMessage",accountConfirmationEmailSuccessMessage:"Auth.EmailConfirmationForm.accountConfirmationEmailSuccessMessage"}),[s,l]=_({text:"",status:""});return X(()=>{if(t){const{search:c}=window.location;c.includes("email=")&&c.includes("key=")&&(async()=>{var f,h,o;const y=new URLSearchParams(c),a=await ct({customerEmail:y.get("email"),customerConfirmationKey:y.get("key")});if(!a)return null;(f=a==null?void 0:a.errors)!=null&&f.length?l({text:a==null?void 0:a.errors[0].message,status:"error"}):(l({text:a.data.confirmEmail.customer.email?e.accountConfirmationEmailSuccessMessage.replace("{email}",(o=(h=a==null?void 0:a.data)==null?void 0:h.confirmEmail.customer)==null?void 0:o.email):e.accountConfirmMessage,status:"success"}),yt())})()}},[t,e]),{emailConfirmationStatusMessage:s}},Mt=({slots:t,labels:e,formSize:s="default",initialEmailValue:l="",renderSignUpLink:c=!1,enableEmailConfirmation:F=!1,hideCloseBtnOnEmailConfirmation:y=!1,routeRedirectOnEmailConfirmationClose:a,routeRedirectOnSignIn:f,routeForgotPassword:h,routeSignUp:o,onSuccessCallback:b,setActiveComponent:p,onErrorCallback:j,onSignUpLinkClick:q,apiErrorMessageOverride:V})=>{const u=gt({title:"Auth.SignInForm.title",buttonPrimary:"Auth.SignInForm.buttonPrimary",buttonSecondary:"Auth.SignInForm.buttonSecondary",buttonTertiary:"Auth.SignInForm.buttonTertiary",resendEmailInformationText:"Auth.Notification.resendEmailNotification.informationText",resendEmailButtonText:"Auth.Notification.resendEmailNotification.buttonText",customerTokenErrorMessage:"Auth.Api.customerTokenErrorMessage",placeholder:"Auth.InputPassword.placeholder",floatingLabel:"Auth.InputPassword.floatingLabel",requiredFieldError:"Auth.FormText.requiredFieldError.default"}),{emailConfirmationStatusMessage:g}=Et({enableEmailConfirmation:F}),{inLineAlertProps:d,handleSetInLineAlertProps:B}=at(),{userEmail:w,additionalActionsAlert:D,defaultEnhancedEmailFields:G,passwordError:C,isSuccessful:x,isLoading:N,signInPasswordValue:I,showEmailConfirmationForm:S,submitLogInUser:H,forgotPasswordCallback:K,onSignUpLinkClickCallback:L,handledOnPrimaryButtonClick:M,handleSetPassword:U,onBlurPassword:$}=_t({translations:u,emailConfirmationStatusMessage:g,initialEmailValue:l,routeSignUp:o,routeForgotPassword:h,routeRedirectOnSignIn:f,setActiveComponent:p,onErrorCallback:j,onSuccessCallback:b,onSignUpLinkClick:q,handleSetInLineAlertProps:B,routeRedirectOnEmailConfirmationClose:a,apiErrorMessageOverride:V});if(x.status&&(t!=null&&t.SuccessNotification))return n(v,{"data-testid":"successNotificationTestId",name:"SuccessNotification",slot:t==null?void 0:t.SuccessNotification,context:{isSuccessful:x}});if(S)return n(mt,{formSize:s,userEmail:w,inLineAlertProps:d,hideCloseBtnOnEmailConfirmation:y,handleSetInLineAlertProps:B,onPrimaryButtonClick:M});const A={isLoading:N,passwordError:C,isSuccessful:x};return k("div",{className:tt(["auth-sign-in-form",`auth-sign-in-form--${s}`]),"data-testid":"signInForm",children:[n(v,{name:"Title","data-testid":"title",slot:t==null?void 0:t.Title,context:{...A},children:n(dt,{title:(e==null?void 0:e.formTitleText)??u.title,divider:!1,className:"auth-sign-in-form__title"})}),d.text?n(lt,{"data-testid":"authInLineAlert",className:"auth-sign-in-form__notification",type:d.type,variant:"secondary",heading:d.text,icon:d.icon,additionalActions:D}):null,n(v,{name:"Form","data-testid":"form",slot:t==null?void 0:t.Form,context:{...A},children:k(wt,{name:"signIn_form",className:"auth-sign-in-form__form",onSubmit:H,loading:N,fieldsConfig:G,children:[n(ht,{hideStatusIndicator:!0,className:"auth-sign-in-form__form__password",autoComplete:"current-password",errorMessage:C?u.requiredFieldError:void 0,defaultValue:I,onValue:U,onBlur:$,placeholder:u.placeholder,floatingLabel:u.floatingLabel}),n("div",{className:"auth-sign-in-form__form__buttons__wrapper",children:k(v,{name:"Buttons",className:"auth-sign-in-form__form__buttons","data-testid":"buttons",slot:t==null?void 0:t.Buttons,context:{...A},children:[k("div",{className:"auth-sign-in-form__form__buttons__combine",children:[n(Q,{type:"button",variant:"tertiary",style:{padding:0},buttonText:u.buttonTertiary,className:"auth-sign-in-form__button auth-sign-in-form__button--forgot",enableLoader:!1,onClick:K,"data-testid":"switchToSignUp"}),c?k(R,{children:[n("span",{}),n(Q,{type:"button",variant:"tertiary",style:{padding:0},buttonText:u.buttonSecondary,className:"auth-sign-in-form__button auth-sign-in-form__button--signup",enableLoader:!1,onClick:L})]}):null]}),n(Q,{type:"submit",buttonText:(e==null?void 0:e.primaryButtonText)??u.buttonPrimary,variant:"primary",className:"auth-sign-in-form__button auth-sign-in-form__button--submit",enableLoader:N})]})})]})}),n("div",{id:"generateCustomerToken"})]})};export{Mt as S};
|
|
4
4
|
//# sourceMappingURL=SignInForm.js.map
|
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 <Slot\n name=\"Form\"\n data-testid=\"form\"\n slot={slots?.Form}\n context={{ ...slotContext }}\n >\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__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 </Slot>\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
|
|
3
|
+
import{jsx as m,jsxs as J}from"@dropins/tools/preact-jsx-runtime.js";import{Slot as G,classes as Fe}from"@dropins/tools/lib.js";import"@dropins/tools/event-bus.js";import"@dropins/tools/recaptcha.js";import{g as Pe,c as Ee,a as be}from"./createCustomerAddress.js";import{useState as w,useEffect as Ne,useCallback as C,useMemo as _e}from"@dropins/tools/preact-hooks.js";import{s as ue,b as Le}from"./simplifyTransformAttributesForm.js";import{v as ye,u as Me,a as Ue}from"./usePasswordValidationMessage.js";import{a as xe}from"./getCustomerToken.js";import{p as Ce,E as Se}from"./acdl.js";import{c as Q,g as Te,u as qe,B as de}from"./Button2.js";import{c as ve}from"./transform-attributes-form.js";import{f as ce,E as Be}from"./focusOnEmptyPasswordField.js";import{Header as Ae,InLineAlert as Ke,InputPassword as fe,Field as je,Checkbox as Ie}from"@dropins/tools/components.js";import{u as Ge,F as He}from"./Button.js";import{S as Ve}from"./SkeletonLoader.js";const le=(u,r)=>r!=null&&r.length?u.map(e=>{var f;const t=(f=r.find(({code:s})=>s===e.code))==null?void 0:f.defaultValue;return t?{...e,defaultValue:t}:e}):u,We=({inputsDefaultValueSet:u,fieldsConfigForApiVersion1:r,apiVersion2:e})=>{const[t,f]=w([]);return Ne(()=>{(async()=>{if(e){const a=await Pe("customer_account_create");if(a!=null&&a.length)if(u!=null&&u.length){const b=le(a,u);f(b)}else f(a)}else{const a=ue(Le),b=ue(r),L=le(a,u);f(r&&r.length?b:L)}})()},[e,r,u]),{fieldsListConfigs:t.map(s=>({...s,...s.code==="email"?{autocomplete:"username"}:{}}))}},$e=(u,r)=>{const e=["dob","email","firstname","gender","lastname","middlename","password","prefix","suffix","taxvat"],t=ve(u,"snakeCase",{firstName:"firstname",lastName:"lastname"});if(!r)return{...t,...t!=null&&t.gender?{gender:Number(t==null?void 0:t.gender)}:{}};const f={},s=[];return Object.keys(t).forEach(a=>{e.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},Oe=({requireRetypePassword:u,addressesData:r,translations:e,isEmailConfirmationRequired:t,apiVersion2:f=!0,passwordConfigs:s,isAutoSignInEnabled:a,routeRedirectOnSignIn:b,routeSignIn:L,onErrorCallback:S,onSuccessCallback:g,setActiveComponent:F,handleSetInLineAlertProps:P,routeRedirectOnEmailConfirmationClose:T})=>{const[o,d]=w(!1),[n,H]=w(""),[q,c]=w(""),[V,v]=w(""),[X,W]=w(!1),[Y,B]=w({userName:"",status:!1}),[l,y]=w(""),[Z,$]=w(!1),[A,M]=w(!1),[k,z]=w(!0),R=C(i=>{const p=i.target.value;d(!p.length),p.length&&n.length&&p!==n&&c(e.passwordMismatch)},[n,e.passwordMismatch]),D=C(i=>{const p=i.target.value;c(p.length?"":e.requiredFieldError),p.length&&l.length&&p!==l&&c(e.passwordMismatch)},[l,e.passwordMismatch,e.requiredFieldError]),ee=C(i=>{H(i),c(i?l===i?"":e.passwordMismatch:e.requiredFieldError)},[e,l]),re=C(({target:i})=>{z(i.checked)},[]),te=C(()=>{if(Q(F)){F("signInForm");return}Q(L)&&(window.location.href=L())},[F,L]),K=C(i=>{y(i),d(!i.length),i===n&&c("")},[n]),E=C(()=>{P(),y(""),Q(T)?window.location.href=T():(W(!1),F==null||F("signInForm"))},[P,T,F]),j=()=>{$(!0),M(!1)},oe=(i,p)=>{const ie=l.length&&n.length,I=l!==n,N=()=>{d(!l.length),n||c(e.requiredFieldError),ie&&I&&c(e.passwordMismatch)},U=()=>{c(n.length?e.passwordMismatch:e.requiredFieldError),ce(i,l,n)};return p?u&&(q.length||I)?(j(),U(),!0):(ce(i,l,""),N(),!1):(j(),N(),!0)};return{showPasswordErrorMessage:o,confirmPassword:n,confirmPasswordMessage:q,isKeepMeLogged:k,userEmail:V,showEmailConfirmationForm:X,isSuccessful:Y,isClickSubmit:Z,signUpPasswordValue:l,isLoading:A,onSubmitSignUp:async(i,p)=>{var se,ae,ne;if(P(),c(""),M(!0),oe(i,p))return;const{confirmPasswordField:ie,...I}=Te(i.target),{email:N,password:U}=I,he=(s==null?void 0:s.requiredCharacterClasses)||0,ge=(s==null?void 0:s.minLength)||1;if(!ye(U,he)||ge>(U==null?void 0:U.length)){j();return}const pe=$e({...I},f),_=await Ee(pe,f);if((se=_==null?void 0:_.errors)!=null&&se.length){const{errors:x}=_;P==null||P({type:"error",text:(ae=x[0])==null?void 0:ae.message}),S==null||S(x),v(N)}else{const x=_==null?void 0:_.firstName;if(Ce(Se.CREATE_ACCOUNT_EVENT,{..._}),t||!a){if(g==null||g({userName:x,userEmail:N,status:!0}),t){(ne=i.target)==null||ne.reset(),y(""),W(!0),v(N),M(!1);return}if(!a){M(!1),B({userName:x,status:!0});return}}const h=await xe({email:N,password:U,translations:e,handleSetInLineAlertProps:P,onErrorCallback:S});if(h!=null&&h.userName){if(r!=null&&r.length)for(const me of r)try{await be(me)}catch(we){console.error(e.failedCreateCustomerAddress,me,we)}g==null||g({userName:h==null?void 0:h.userName,userEmail:h==null?void 0:h.userEmail,status:!0}),Q(b)?window.location.href=b():B({userName:h==null?void 0:h.userName,status:!0})}else g==null||g({userName:x,userEmail:N,status:!0}),B({userName:x,status:!0})}M(!1)},signInButton:te,handleSetSignUpPasswordValue:K,onKeepMeLoggedChange:re,handleHideEmailConfirmationForm:E,handleConfirmPasswordChange:ee,onBlurPassword:R,onBlurConfirmPassword:D}},nr=({requireRetypePassword:u=!1,addressesData:r,formSize:e="default",inputsDefaultValueSet:t,fieldsConfigForApiVersion1:f,apiVersion2:s=!0,isAutoSignInEnabled:a=!0,hideCloseBtnOnEmailConfirmation:b=!1,routeRedirectOnEmailConfirmationClose:L,routeRedirectOnSignIn:S,routeSignIn:g,onErrorCallback:F,onSuccessCallback:P,setActiveComponent:T,slots:o})=>{const d=Ge({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:H}=Me(),{fieldsListConfigs:q}=We({fieldsConfigForApiVersion1:f,apiVersion2:s,inputsDefaultValueSet:t}),{inLineAlertProps:c,handleSetInLineAlertProps:V}=qe(),{showPasswordErrorMessage:v,confirmPassword:X,confirmPasswordMessage:W,isKeepMeLogged:Y,userEmail:B,showEmailConfirmationForm:l,isSuccessful:y,isClickSubmit:Z,signUpPasswordValue:$,isLoading:A,onSubmitSignUp:M,signInButton:k,handleSetSignUpPasswordValue:z,onKeepMeLoggedChange:R,handleHideEmailConfirmationForm:D,handleConfirmPasswordChange:ee,onBlurPassword:re,onBlurConfirmPassword:te}=Oe({requireRetypePassword:u,addressesData:r,translations:d,isEmailConfirmationRequired:H,apiVersion2:s,passwordConfigs:n,isAutoSignInEnabled:a,routeRedirectOnSignIn:S,routeSignIn:g,onErrorCallback:F,onSuccessCallback:P,setActiveComponent:T,handleSetInLineAlertProps:V,routeRedirectOnEmailConfirmationClose:L}),{isValidUniqueSymbols:K,defaultLengthMessage:E}=Ue({password:$,isClickSubmit:Z,passwordConfigs:n}),j=_e(()=>v?d.requiredFieldError:K==="error"||(E==null?void 0:E.status)==="error"?" ":"",[E==null?void 0:E.status,K,v,d.requiredFieldError]),oe=!H&&(r==null?void 0:r.length);if(!q.length&&s)return m("div",{className:`auth-sign-up-form auth-sign-up-form--${e} skeleton-loader`,"data-testid":"SignUpForm",children:m(Ve,{activeSkeleton:"signUpForm"})});if(y.status&&(o!=null&&o.SuccessNotification))return m(G,{"data-testid":"successNotificationTestId",name:"SuccessNotification",slot:o==null?void 0:o.SuccessNotification,context:{isSuccessful:y}});if(l)return m(Be,{formSize:e,userEmail:B,inLineAlertProps:c,hideCloseBtnOnEmailConfirmation:b,handleSetInLineAlertProps:V,onPrimaryButtonClick:D});const O={isLoading:A,isSuccessful:y};return J("div",{className:Fe(["auth-sign-up-form",`auth-sign-up-form--${e}`]),"data-testid":"SignUpForm",children:[m(G,{name:"Title","data-testid":"title",slot:o==null?void 0:o.Title,context:{...O},children:m(Ae,{title:d.title,divider:!1,className:"auth-sign-up-form__title"})}),c.text?m(Ke,{className:"auth-sign-up-form__notification",type:c.type,variant:"secondary",heading:c.text,icon:c.icon}):null,m(G,{name:"Form","data-testid":"form",slot:o==null?void 0:o.Form,context:{...O},children:J(He,{onSubmit:M,className:"auth-sign-up-form__form",loading:A,name:"signUp_form",fieldsConfig:q,slots:o,children:[J(fe,{validateLengthConfig:E,className:"auth-sign-up-form__form__field",autoComplete:"current-password",name:"password",minLength:n==null?void 0:n.minLength,errorMessage:j,defaultValue:$,uniqueSymbolsStatus:K,requiredCharacterClasses:n==null?void 0:n.requiredCharacterClasses,onValue:z,placeholder:d.placeholder,floatingLabel:d.floatingLabel,onBlur:re,children:[u?m("div",{className:"auth-sign-up-form__form__confirm-wrapper",children:m(fe,{className:"auth-sign-up-form__form__field auth-sign-up-form__form__field--confirm-password",autoComplete:"confirmPassword",name:"confirmPasswordField",placeholder:d.confirmPasswordPlaceholder,floatingLabel:d.confirmPasswordFloatingLabel,errorMessage:W,defaultValue:X,onValue:ee,onBlur:te})}):null,oe?m("div",{className:"auth-sign-up-form__automatic-login","data-testid":"automaticLogin",children:m(je,{children:m(Ie,{name:"",placeholder:d.keepMeLoggedText,label:d.keepMeLoggedText,checked:Y,onChange:R})})}):null]}),m(G,{name:"PrivacyPolicyConsent","data-testid":"privacyPolicyConsent",slot:o==null?void 0:o.PrivacyPolicyConsent},"privacyPolicyConsent"),J(G,{name:"Buttons",className:"auth-sign-up-form-buttons","data-testid":"buttons",slot:o==null?void 0:o.Buttons,context:{...O},children:[m(de,{className:"auth-sign-up-form-buttons--signin",type:"button",variant:"tertiary",style:{padding:0},buttonText:d.buttonSecondary,enableLoader:!1,onClick:k}),m(de,{type:"submit",buttonText:d.buttonPrimary,variant:"primary",enableLoader:A})]})]})}),m("div",{id:"createCustomerV2"})]})};export{nr 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":"g8BA8BA,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,EAA8BJ,EACjCE,GAAkB,CACjBpB,EAAmBoB,CAAK,EAGtBlB,EADEkB,EAEAX,IAAwBW,EAAQ,GAAKlC,EAAa,iBAG1BA,EAAa,kBAHa,CAKxD,EACA,CAACA,EAAcuB,CAAmB,CAAA,EAG9Bc,EAAuBL,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,EACA,gCAAAK,EACA,4BAAAN,EACA,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,EACA,eAAAL,EACA,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,MAAI,CAACvB,EAAkB,QAAUD,EAE7BgH,EAAC,MAAA,CACC,UAAW,wCAAwCd,CAAQ,mBAC3D,cAAY,aAEZ,SAAAc,EAACC,GAAA,CAAe,eAAe,YAAA,CAAa,CAAA,CAAA,EAK9CnE,EAAa,SAAUsD,GAAA,MAAAA,EAAO,qBAE9BY,EAACE,GAAA,CACC,cAAY,4BACZ,KAAK,sBACL,KAAMd,GAAA,YAAAA,EAAO,oBACb,QAAS,CAAE,aAAAtD,CAAA,CAAa,CAAA,EAK1BF,EAEAoE,EAACG,GAAA,CACC,SAAAjB,EACA,UAAAxD,EACA,iBAAA6D,EACA,gCAAAJ,EACA,0BAAAjE,EACA,qBAAsBiC,CAAA,CAAA,EAM1BiD,EAAC,MAAA,CACC,UAAWC,GAAQ,CACjB,oBACA,sBAAsBnB,CAAQ,EAAA,CAC/B,EACD,cAAY,aAEZ,SAAA,CAAAc,EAACM,GAAA,CACC,MAAO7F,EAAa,MACpB,QAAS,GACT,UAAU,0BAAA,CAAA,EAEX8E,EAAiB,KAChBS,EAACO,GAAA,CACC,UAAU,kCACV,KAAMhB,EAAiB,KACvB,QAAQ,YACR,QAASA,EAAiB,KAC1B,KAAMA,EAAiB,IAAA,CAAA,EAEvB,KACJa,EAACI,GAAA,CACC,SAAUf,EACV,UAAU,0BACV,QAASrD,EACT,KAAK,cACL,aAAcnD,EACd,MAAAmG,EAEA,SAAA,CAAAgB,EAACK,GAAA,CACC,qBAAsBd,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,EAEP,SAAA,CAAAjC,EACCyF,EAAC,MAAA,CAAI,UAAU,2CACb,SAAAA,EAACS,GAAA,CACC,UAAU,kFACV,aAAa,kBACb,KAAK,uBACL,YAAahG,EAAa,2BAC1B,cAAeA,EAAa,6BAC5B,aAAce,EACd,aAAcF,EACd,QAASuB,EACT,OAAQD,EAAA,CAAA,EAEZ,EACE,KAEHmD,GACCC,EAAC,MAAA,CACC,UAAW,qCACX,cAAY,iBAEZ,WAACU,GAAA,CACC,SAAAV,EAACW,GAAA,CACC,KAAK,GACL,YAAalG,EAAa,iBAC1B,MAAOA,EAAa,iBACpB,QAAS6B,EACT,SAAUQ,CAAA,CAAA,CACZ,CACF,CAAA,CAAA,EAEA,IAAA,CAAA,CAAA,EAGNkD,EAACE,GAAA,CACC,KAAK,uBACL,cAAa,uBACb,KAAMd,GAAA,YAAAA,EAAO,oBAAA,EACR,sBAAA,EAGPgB,EAAC,MAAA,CAAI,UAAU,4BACb,SAAA,CAAAJ,EAACY,GAAA,CACC,UAAU,oCACV,KAAK,SACL,QAAQ,WACR,MAAO,CAAE,QAAS,CAAA,EAClB,WAAYnG,EAAa,gBACzB,aAAc,GACd,QAASuC,CAAA,CAAA,EAEXgD,EAACY,GAAA,CACC,KAAK,SACL,WAAYnG,EAAa,cACzB,QAAQ,UACR,aAAc2B,CAAA,CAAA,CAChB,CAAA,CACF,CAAA,CAAA,CAAA,EAEF4D,EAAC,MAAA,CAAI,GAAG,kBAAA,CAAmB,CAAA,CAAA,CAAA,CAGjC"}
|
|
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 <Slot\n name=\"Form\"\n data-testid=\"form\"\n slot={slots?.Form}\n context={{ ...slotContext }}\n >\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 <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 </Slot>\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":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*! Copyright 2026 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import{jsx as
|
|
3
|
+
import{jsx as s,jsxs as $}from"@dropins/tools/preact-jsx-runtime.js";import{Slot as q,classes as z}from"@dropins/tools/lib.js";import{Header as Z,InLineAlert as k,InputPassword as S}from"@dropins/tools/components.js";import"@dropins/tools/event-bus.js";import"@dropins/tools/recaptcha.js";import{useState as w,useEffect as I,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(i=>i.includes(p)).map(i=>i.split("=")[1])[0],ot=({isEmailConfirmationRequired:d,signInOnSuccess:p,passwordConfigs:e,routeRedirectOnSignIn:i,routeWrongUrlRedirect:N,onErrorCallback:t,onSuccessCallback:o,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"}),[U,n]=w({userName:"",status:!1}),[v,T]=w(""),[_,x]=w(!1),[A,L]=w(""),[y,M]=w(""),[b,c]=w(!1),[F,f]=w(!1),[V,D]=w([]);I(()=>{_&&!V.length&&(v.length?f(!1):f(!0))},[_,v,V]),I(()=>{const{search:h}=window.location;!h.includes("token=")&&!h.includes("email=")&&j(N)&&(window.location.href=N());const a=decodeURIComponent(h),B=K(a,"token"),E=K(a,"email");L(E),M(B)},[N]);const Q=J(async h=>{h.preventDefault(),c(!0),D([]);const a=at(h.target),B=(a==null?void 0:a.password)&&A&&y;a!=null&&a.password||(f(!0),c(!1));const E=(e==null?void 0:e.requiredCharacterClasses)??0,Y=(e==null?void 0:e.minLength)??0;if(!g(a==null?void 0:a.password,E)||a.password.length<+Y){x(!0),c(!1);return}if(!B){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){o==null||o(),j(P)&&(window.location.href=P()),x(!0),c(!1),f(!1),T(""),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&&(o==null||o(l==null?void 0:l.userName),j(i)?window.location.href=i():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,o,i,m,P]),X=J(h=>{T(h)},[]);return{additionalActionsAlert:V,passwordError:F,isSuccessful:U,updatePasswordValue:v,isClickSubmit:_,isLoading:b,submitUpdatePassword:Q,handleSetUpdatePasswordValue:X,setIsClickSubmit:x}},ut=({signInOnSuccess:d=!0,formSize:p="default",routeRedirectOnSignIn:e,routeWrongUrlRedirect:i,routeSignInPage:N,slots:t,onErrorCallback:o,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:U}=R(),{inLineAlertProps:n,handleSetInLineAlertProps:v}=rt(),{additionalActionsAlert:T,passwordError:_,isSuccessful:x,updatePasswordValue:A,isClickSubmit:L,isLoading:y,submitUpdatePassword:M,handleSetUpdatePasswordValue:b}=ot({isEmailConfirmationRequired:U,signInOnSuccess:d,passwordConfigs:r,routeRedirectOnSignIn:e,routeWrongUrlRedirect:i,onErrorCallback:o,onSuccessCallback:m,handleSetInLineAlertProps:v,routeRedirectOnPasswordUpdate:P,routeSignInPage:N}),{isValidUniqueSymbols:c,defaultLengthMessage:F}=C({password:A,isClickSubmit:L,passwordConfigs:r});if(x.status&&(t!=null&&t.SuccessNotification))return s(q,{"data-testid":"successNotificationTestId",name:"SuccessNotification",slot:t==null?void 0:t.SuccessNotification,context:{isSuccessful:x}});const f={isLoading:y,passwordError:_,isSuccessful:x};return $("div",{className:z(["auth-update-password-form",`auth-update-password-form--${p}`]),children:[s(q,{name:"Title","data-testid":"title",slot:t==null?void 0:t.Title,context:{...f},children:s(Z,{title:u.title,divider:!1,className:"auth-update-password-form__title"})}),s(k,{className:z(["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:T}),s(q,{name:"Form","data-testid":"form",slot:t==null?void 0:t.Form,context:{...f},children:$(O,{name:"updatePassword_form",className:"auth-update-password-form__form",onSubmit:M,loading:y,fieldsConfig:[],children:[s("div",{style:"display: none;",children:s("input",{type:"text",id:"username",name:"username",autoComplete:"username"})}),s(S,{defaultValue:A,onValue:b,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}),s(q,{name:"Buttons",className:"auth-update-password-form__button","data-testid":"buttons",slot:t==null?void 0:t.Buttons,context:{...f},children:s(st,{type:"submit",buttonText:u.buttonPrimary,variant:"primary",enableLoader:y})})]})})]})},Ut=({slots:d,formSize:p,signInOnSuccess:e,routeRedirectOnPasswordUpdate:i,routeRedirectOnSignIn:N,routeSignInPage:t,routeWrongUrlRedirect:o,onErrorCallback:m,onSuccessCallback:P})=>s("div",{className:"auth-update-password",children:s(ut,{formSize:p,signInOnSuccess:e,routeSignInPage:t,routeRedirectOnSignIn:N,routeWrongUrlRedirect:o,onErrorCallback:m,onSuccessCallback:P,slots:d,routeRedirectOnPasswordUpdate:i})});export{Ut as UpdatePassword,Ut as default};
|
|
4
4
|
//# sourceMappingURL=UpdatePassword.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpdatePassword.js","sources":["/@dropins/storefront-auth/src/lib/getUrlParam.ts","/@dropins/storefront-auth/src/hooks/components/useUpdatePasswordForm.tsx","/@dropins/storefront-auth/src/components/UpdatePasswordForm/UpdatePasswordForm.tsx","/@dropins/storefront-auth/src/containers/UpdatePassword/UpdatePassword.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\nexport const getUrlParam = (url: string, param: string): string => {\n const result = url\n .split('&')\n .filter((el) => el.includes(param))\n .map((item) => {\n return item.split('=')[1];\n });\n\n return result[0];\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 { resetPassword, getCustomerToken } from '@/auth/api';\nimport { getFormValues } from '@/auth/lib/getFormValues';\nimport { getUrlParam } from '@/auth/lib/getUrlParam';\nimport { validationUniqueSymbolsPassword } from '@/auth/lib/validationUniqueSymbolsPassword';\nimport { useCallback, useEffect, useState } from 'preact/hooks';\nimport {\n AdditionalActionsAlertProps,\n UseUpdatePasswordFormProps,\n} from '@/auth/types';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { checkIsFunction } from '@/auth/lib/checkIsFunction';\n\nexport const useUpdatePasswordForm = ({\n isEmailConfirmationRequired,\n signInOnSuccess,\n passwordConfigs,\n routeRedirectOnSignIn,\n routeWrongUrlRedirect,\n onErrorCallback,\n onSuccessCallback,\n handleSetInLineAlertProps,\n routeRedirectOnPasswordUpdate,\n routeSignInPage,\n}: UseUpdatePasswordFormProps) => {\n const translations = useText({\n errorNotification: 'Auth.Notification.errorNotification',\n updatePasswordMessage: 'Auth.Notification.updatePasswordMessage',\n updatePasswordActionMessage:\n 'Auth.Notification.updatePasswordActionMessage',\n customerTokenErrorMessage: 'Auth.Api.customerTokenErrorMessage',\n });\n\n const [isSuccessful, setIsSuccessful] = useState({\n userName: '',\n status: false,\n });\n const [updatePasswordValue, setUpdatePasswordValue] = useState('');\n const [isClickSubmit, setIsClickSubmit] = useState(false);\n const [email, setEmail] = useState('');\n const [token, setToken] = useState('');\n const [isLoading, setIsLoading] = useState(false);\n const [passwordError, setPasswordError] = useState(false);\n const [additionalActionsAlert, setAdditionalActionsAlert] =\n useState<AdditionalActionsAlertProps>([]);\n\n useEffect(() => {\n if (isClickSubmit && !additionalActionsAlert.length) {\n if (updatePasswordValue.length) {\n setPasswordError(false);\n } else {\n setPasswordError(true);\n }\n }\n }, [isClickSubmit, updatePasswordValue, additionalActionsAlert]);\n\n useEffect(() => {\n const { search } = window.location;\n\n if (\n !search.includes('token=') &&\n !search.includes('email=') &&\n checkIsFunction(routeWrongUrlRedirect)\n ) {\n window.location.href = routeWrongUrlRedirect();\n }\n\n const url = decodeURIComponent(search);\n const tokenParam = getUrlParam(url, 'token');\n const emailParam = getUrlParam(url, 'email');\n\n setEmail(emailParam);\n setToken(tokenParam);\n }, [routeWrongUrlRedirect]);\n\n const submitUpdatePassword = useCallback(\n async (event: Event): Promise<void> => {\n event.preventDefault();\n\n setIsLoading(true);\n setAdditionalActionsAlert([]);\n\n const formValues = getFormValues(event.target);\n const validationData = formValues?.password && email && token;\n\n if (!formValues?.password) {\n setPasswordError(true);\n setIsLoading(false);\n }\n\n const requiredCharacterClasses =\n passwordConfigs?.requiredCharacterClasses ?? 0;\n const minLength = passwordConfigs?.minLength ?? 0;\n\n if (\n !validationUniqueSymbolsPassword(\n formValues?.password,\n requiredCharacterClasses\n ) ||\n formValues.password.length < +minLength\n ) {\n setIsClickSubmit(true);\n setIsLoading(false);\n\n return;\n }\n\n if (!validationData) {\n handleSetInLineAlertProps({\n type: 'error',\n text: translations.errorNotification,\n });\n\n setIsLoading(false);\n\n return;\n }\n\n const { message, success } = await resetPassword(\n email,\n token,\n formValues.password\n );\n\n if (success) {\n if (\n isEmailConfirmationRequired ||\n (!isEmailConfirmationRequired && !signInOnSuccess)\n ) {\n onSuccessCallback?.();\n\n if (checkIsFunction(routeRedirectOnPasswordUpdate)) {\n window.location.href = routeRedirectOnPasswordUpdate();\n }\n\n setIsClickSubmit(true);\n setIsLoading(false);\n setPasswordError(false);\n setUpdatePasswordValue('');\n setAdditionalActionsAlert([\n {\n label: translations.updatePasswordActionMessage,\n onClick: () => {\n window.location.href = routeSignInPage?.() as string;\n },\n },\n ]);\n handleSetInLineAlertProps({\n type: 'success',\n text: translations.updatePasswordMessage,\n });\n\n return;\n }\n\n const loginResponse = await getCustomerToken({\n email,\n password: formValues.password,\n handleSetInLineAlertProps,\n onErrorCallback,\n translations,\n });\n\n if (loginResponse?.userName) {\n onSuccessCallback?.(loginResponse?.userName);\n\n if (checkIsFunction(routeRedirectOnSignIn)) {\n window.location.href = routeRedirectOnSignIn();\n } else {\n setIsSuccessful({\n userName: loginResponse?.userName,\n status: true,\n });\n }\n }\n } else {\n handleSetInLineAlertProps({ type: 'error', text: message });\n onErrorCallback?.({ message, success });\n }\n\n setIsLoading(false);\n },\n [\n email,\n token,\n passwordConfigs?.requiredCharacterClasses,\n passwordConfigs?.minLength,\n translations,\n isEmailConfirmationRequired,\n signInOnSuccess,\n routeSignInPage,\n onErrorCallback,\n onSuccessCallback,\n routeRedirectOnSignIn,\n handleSetInLineAlertProps,\n routeRedirectOnPasswordUpdate,\n ]\n );\n\n const handleSetUpdatePasswordValue = useCallback((value: string) => {\n setUpdatePasswordValue(value);\n }, []);\n\n return {\n additionalActionsAlert,\n passwordError,\n isSuccessful,\n updatePasswordValue,\n isClickSubmit,\n isLoading,\n submitUpdatePassword,\n handleSetUpdatePasswordValue,\n setIsClickSubmit,\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 { useGetStoreConfigs } from '@/auth/hooks/api/useGetStoreConfigs';\nimport { usePasswordValidationMessage } from '@/auth/hooks/components/usePasswordValidationMessage';\nimport { useUpdatePasswordForm } from '@/auth/hooks/components/useUpdatePasswordForm';\nimport { UpdatePasswordFormProps } from '@/auth/types';\nimport { Form, Button } from '@/auth/components';\nimport { useInLineAlert } from '@/auth/hooks/useInLineAlert';\nimport { Header, InLineAlert, InputPassword } from '@adobe-commerce/elsie/components';\nimport '@/auth/components/UpdatePasswordForm/UpdatePasswordForm.css';\nimport { useCustomTranslations } from '@/auth/hooks/useCustomTranslations';\n\nexport const UpdatePasswordForm: FunctionComponent<UpdatePasswordFormProps> = ({\n signInOnSuccess = true,\n formSize = 'default',\n routeRedirectOnSignIn,\n routeWrongUrlRedirect,\n routeSignInPage,\n slots,\n onErrorCallback,\n onSuccessCallback,\n routeRedirectOnPasswordUpdate,\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.UpdatePasswordForm.title',\n buttonPrimary: 'Auth.UpdatePasswordForm.buttonPrimary',\n placeholder: 'Auth.InputPassword.placeholder',\n floatingLabel: 'Auth.InputPassword.floatingLabel',\n requiredFieldError: 'Auth.FormText.requiredFieldError.default',\n });\n\n const { passwordConfigs, isEmailConfirmationRequired } = useGetStoreConfigs();\n\n const { inLineAlertProps, handleSetInLineAlertProps } = useInLineAlert();\n\n const {\n additionalActionsAlert,\n passwordError,\n isSuccessful,\n updatePasswordValue,\n isClickSubmit,\n isLoading,\n submitUpdatePassword,\n handleSetUpdatePasswordValue,\n } = useUpdatePasswordForm({\n isEmailConfirmationRequired,\n signInOnSuccess,\n passwordConfigs,\n routeRedirectOnSignIn,\n routeWrongUrlRedirect,\n onErrorCallback,\n onSuccessCallback,\n handleSetInLineAlertProps,\n routeRedirectOnPasswordUpdate,\n routeSignInPage,\n });\n\n const { isValidUniqueSymbols, defaultLengthMessage } =\n usePasswordValidationMessage({\n password: updatePasswordValue,\n isClickSubmit,\n passwordConfigs,\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 return (\n <div\n className={classes([\n 'auth-update-password-form',\n `auth-update-password-form--${formSize}`,\n ])}\n >\n <Header\n title={translations.title}\n divider={false}\n className=\"auth-update-password-form__title\"\n />\n <InLineAlert\n className={classes([\n 'auth-update-password-form__notification',\n [\n 'auth-update-password-form__notification--show',\n !!inLineAlertProps?.text,\n ],\n ])}\n variant=\"secondary\"\n heading={inLineAlertProps?.text as string}\n icon={inLineAlertProps.icon}\n additionalActions={additionalActionsAlert}\n />\n <Form\n name=\"updatePassword_form\"\n className=\"auth-update-password-form__form\"\n onSubmit={submitUpdatePassword}\n loading={isLoading}\n fieldsConfig={[]}\n >\n <div style=\"display: none;\">\n <input\n type=\"text\"\n id=\"username\"\n name=\"username\"\n autoComplete=\"username\"\n />\n </div>\n <InputPassword\n defaultValue={updatePasswordValue}\n onValue={handleSetUpdatePasswordValue}\n className=\"auth-update-password-form__form__item\"\n autoComplete={'new-password'}\n name={'password'}\n errorMessage={\n passwordError ||\n isValidUniqueSymbols === 'error' ||\n defaultLengthMessage?.status === 'error'\n ? translations.requiredFieldError\n : undefined\n }\n minLength={passwordConfigs?.minLength}\n uniqueSymbolsStatus={isValidUniqueSymbols}\n validateLengthConfig={defaultLengthMessage}\n requiredCharacterClasses={passwordConfigs?.requiredCharacterClasses}\n placeholder={translations.placeholder}\n floatingLabel={translations.floatingLabel}\n />\n\n <div className=\"auth-update-password-form__button\">\n <Button\n type=\"submit\"\n buttonText={translations.buttonPrimary}\n variant=\"primary\"\n enableLoader={isLoading}\n />\n </div>\n </Form>\n </div>\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 { Container } from '@adobe-commerce/elsie/lib';\nimport { UpdatePasswordForm } from '@/auth/components';\nimport { UpdatePasswordProps } from '@/auth/types';\n\nexport const UpdatePassword: Container<UpdatePasswordProps> = ({\n slots,\n formSize,\n signInOnSuccess,\n routeRedirectOnPasswordUpdate,\n routeRedirectOnSignIn,\n routeSignInPage,\n routeWrongUrlRedirect,\n onErrorCallback,\n onSuccessCallback,\n}) => {\n return (\n <div className=\"auth-update-password\">\n <UpdatePasswordForm\n formSize={formSize}\n signInOnSuccess={signInOnSuccess}\n routeSignInPage={routeSignInPage}\n routeRedirectOnSignIn={routeRedirectOnSignIn}\n routeWrongUrlRedirect={routeWrongUrlRedirect}\n onErrorCallback={onErrorCallback}\n onSuccessCallback={onSuccessCallback}\n slots={slots}\n routeRedirectOnPasswordUpdate={routeRedirectOnPasswordUpdate}\n />\n </div>\n );\n};\n"],"names":["getUrlParam","url","param","el","item","useUpdatePasswordForm","isEmailConfirmationRequired","signInOnSuccess","passwordConfigs","routeRedirectOnSignIn","routeWrongUrlRedirect","onErrorCallback","onSuccessCallback","handleSetInLineAlertProps","routeRedirectOnPasswordUpdate","routeSignInPage","translations","useText","isSuccessful","setIsSuccessful","useState","updatePasswordValue","setUpdatePasswordValue","isClickSubmit","setIsClickSubmit","email","setEmail","token","setToken","isLoading","setIsLoading","passwordError","setPasswordError","additionalActionsAlert","setAdditionalActionsAlert","useEffect","search","checkIsFunction","tokenParam","emailParam","submitUpdatePassword","useCallback","event","formValues","getFormValues","validationData","requiredCharacterClasses","minLength","validationUniqueSymbolsPassword","message","success","resetPassword","loginResponse","getCustomerToken","handleSetUpdatePasswordValue","value","UpdatePasswordForm","formSize","slots","useCustomTranslations","useGetStoreConfigs","inLineAlertProps","useInLineAlert","isValidUniqueSymbols","defaultLengthMessage","usePasswordValidationMessage","jsx","Slot","jsxs","classes","Header","InLineAlert","Form","InputPassword","Button","UpdatePassword"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"UpdatePassword.js","sources":["/@dropins/storefront-auth/src/lib/getUrlParam.ts","/@dropins/storefront-auth/src/hooks/components/useUpdatePasswordForm.tsx","/@dropins/storefront-auth/src/components/UpdatePasswordForm/UpdatePasswordForm.tsx","/@dropins/storefront-auth/src/containers/UpdatePassword/UpdatePassword.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\nexport const getUrlParam = (url: string, param: string): string => {\n const result = url\n .split('&')\n .filter((el) => el.includes(param))\n .map((item) => {\n return item.split('=')[1];\n });\n\n return result[0];\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 { resetPassword, getCustomerToken } from '@/auth/api';\nimport { getFormValues } from '@/auth/lib/getFormValues';\nimport { getUrlParam } from '@/auth/lib/getUrlParam';\nimport { validationUniqueSymbolsPassword } from '@/auth/lib/validationUniqueSymbolsPassword';\nimport { useCallback, useEffect, useState } from 'preact/hooks';\nimport {\n AdditionalActionsAlertProps,\n UseUpdatePasswordFormProps,\n} from '@/auth/types';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { checkIsFunction } from '@/auth/lib/checkIsFunction';\n\nexport const useUpdatePasswordForm = ({\n isEmailConfirmationRequired,\n signInOnSuccess,\n passwordConfigs,\n routeRedirectOnSignIn,\n routeWrongUrlRedirect,\n onErrorCallback,\n onSuccessCallback,\n handleSetInLineAlertProps,\n routeRedirectOnPasswordUpdate,\n routeSignInPage,\n}: UseUpdatePasswordFormProps) => {\n const translations = useText({\n errorNotification: 'Auth.Notification.errorNotification',\n updatePasswordMessage: 'Auth.Notification.updatePasswordMessage',\n updatePasswordActionMessage:\n 'Auth.Notification.updatePasswordActionMessage',\n customerTokenErrorMessage: 'Auth.Api.customerTokenErrorMessage',\n });\n\n const [isSuccessful, setIsSuccessful] = useState({\n userName: '',\n status: false,\n });\n const [updatePasswordValue, setUpdatePasswordValue] = useState('');\n const [isClickSubmit, setIsClickSubmit] = useState(false);\n const [email, setEmail] = useState('');\n const [token, setToken] = useState('');\n const [isLoading, setIsLoading] = useState(false);\n const [passwordError, setPasswordError] = useState(false);\n const [additionalActionsAlert, setAdditionalActionsAlert] =\n useState<AdditionalActionsAlertProps>([]);\n\n useEffect(() => {\n if (isClickSubmit && !additionalActionsAlert.length) {\n if (updatePasswordValue.length) {\n setPasswordError(false);\n } else {\n setPasswordError(true);\n }\n }\n }, [isClickSubmit, updatePasswordValue, additionalActionsAlert]);\n\n useEffect(() => {\n const { search } = window.location;\n\n if (\n !search.includes('token=') &&\n !search.includes('email=') &&\n checkIsFunction(routeWrongUrlRedirect)\n ) {\n window.location.href = routeWrongUrlRedirect();\n }\n\n const url = decodeURIComponent(search);\n const tokenParam = getUrlParam(url, 'token');\n const emailParam = getUrlParam(url, 'email');\n\n setEmail(emailParam);\n setToken(tokenParam);\n }, [routeWrongUrlRedirect]);\n\n const submitUpdatePassword = useCallback(\n async (event: Event): Promise<void> => {\n event.preventDefault();\n\n setIsLoading(true);\n setAdditionalActionsAlert([]);\n\n const formValues = getFormValues(event.target);\n const validationData = formValues?.password && email && token;\n\n if (!formValues?.password) {\n setPasswordError(true);\n setIsLoading(false);\n }\n\n const requiredCharacterClasses =\n passwordConfigs?.requiredCharacterClasses ?? 0;\n const minLength = passwordConfigs?.minLength ?? 0;\n\n if (\n !validationUniqueSymbolsPassword(\n formValues?.password,\n requiredCharacterClasses\n ) ||\n formValues.password.length < +minLength\n ) {\n setIsClickSubmit(true);\n setIsLoading(false);\n\n return;\n }\n\n if (!validationData) {\n handleSetInLineAlertProps({\n type: 'error',\n text: translations.errorNotification,\n });\n\n setIsLoading(false);\n\n return;\n }\n\n const { message, success } = await resetPassword(\n email,\n token,\n formValues.password\n );\n\n if (success) {\n if (\n isEmailConfirmationRequired ||\n (!isEmailConfirmationRequired && !signInOnSuccess)\n ) {\n onSuccessCallback?.();\n\n if (checkIsFunction(routeRedirectOnPasswordUpdate)) {\n window.location.href = routeRedirectOnPasswordUpdate();\n }\n\n setIsClickSubmit(true);\n setIsLoading(false);\n setPasswordError(false);\n setUpdatePasswordValue('');\n setAdditionalActionsAlert([\n {\n label: translations.updatePasswordActionMessage,\n onClick: () => {\n window.location.href = routeSignInPage?.() as string;\n },\n },\n ]);\n handleSetInLineAlertProps({\n type: 'success',\n text: translations.updatePasswordMessage,\n });\n\n return;\n }\n\n const loginResponse = await getCustomerToken({\n email,\n password: formValues.password,\n handleSetInLineAlertProps,\n onErrorCallback,\n translations,\n });\n\n if (loginResponse?.userName) {\n onSuccessCallback?.(loginResponse?.userName);\n\n if (checkIsFunction(routeRedirectOnSignIn)) {\n window.location.href = routeRedirectOnSignIn();\n } else {\n setIsSuccessful({\n userName: loginResponse?.userName,\n status: true,\n });\n }\n }\n } else {\n handleSetInLineAlertProps({ type: 'error', text: message });\n onErrorCallback?.({ message, success });\n }\n\n setIsLoading(false);\n },\n [\n email,\n token,\n passwordConfigs?.requiredCharacterClasses,\n passwordConfigs?.minLength,\n translations,\n isEmailConfirmationRequired,\n signInOnSuccess,\n routeSignInPage,\n onErrorCallback,\n onSuccessCallback,\n routeRedirectOnSignIn,\n handleSetInLineAlertProps,\n routeRedirectOnPasswordUpdate,\n ]\n );\n\n const handleSetUpdatePasswordValue = useCallback((value: string) => {\n setUpdatePasswordValue(value);\n }, []);\n\n return {\n additionalActionsAlert,\n passwordError,\n isSuccessful,\n updatePasswordValue,\n isClickSubmit,\n isLoading,\n submitUpdatePassword,\n handleSetUpdatePasswordValue,\n setIsClickSubmit,\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 { useGetStoreConfigs } from '@/auth/hooks/api/useGetStoreConfigs';\nimport { usePasswordValidationMessage } from '@/auth/hooks/components/usePasswordValidationMessage';\nimport { useUpdatePasswordForm } from '@/auth/hooks/components/useUpdatePasswordForm';\nimport { UpdatePasswordFormProps } from '@/auth/types';\nimport { Form, Button } from '@/auth/components';\nimport { useInLineAlert } from '@/auth/hooks/useInLineAlert';\nimport { Header, InLineAlert, InputPassword } from '@adobe-commerce/elsie/components';\nimport '@/auth/components/UpdatePasswordForm/UpdatePasswordForm.css';\nimport { useCustomTranslations } from '@/auth/hooks/useCustomTranslations';\n\nexport const UpdatePasswordForm: FunctionComponent<UpdatePasswordFormProps> = ({\n signInOnSuccess = true,\n formSize = 'default',\n routeRedirectOnSignIn,\n routeWrongUrlRedirect,\n routeSignInPage,\n slots,\n onErrorCallback,\n onSuccessCallback,\n routeRedirectOnPasswordUpdate,\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.UpdatePasswordForm.title',\n buttonPrimary: 'Auth.UpdatePasswordForm.buttonPrimary',\n placeholder: 'Auth.InputPassword.placeholder',\n floatingLabel: 'Auth.InputPassword.floatingLabel',\n requiredFieldError: 'Auth.FormText.requiredFieldError.default',\n });\n\n const { passwordConfigs, isEmailConfirmationRequired } = useGetStoreConfigs();\n\n const { inLineAlertProps, handleSetInLineAlertProps } = useInLineAlert();\n\n const {\n additionalActionsAlert,\n passwordError,\n isSuccessful,\n updatePasswordValue,\n isClickSubmit,\n isLoading,\n submitUpdatePassword,\n handleSetUpdatePasswordValue,\n } = useUpdatePasswordForm({\n isEmailConfirmationRequired,\n signInOnSuccess,\n passwordConfigs,\n routeRedirectOnSignIn,\n routeWrongUrlRedirect,\n onErrorCallback,\n onSuccessCallback,\n handleSetInLineAlertProps,\n routeRedirectOnPasswordUpdate,\n routeSignInPage,\n });\n\n const { isValidUniqueSymbols, defaultLengthMessage } =\n usePasswordValidationMessage({\n password: updatePasswordValue,\n isClickSubmit,\n passwordConfigs,\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 const slotContext = {\n isLoading,\n passwordError,\n isSuccessful,\n };\n\n return (\n <div\n className={classes([\n 'auth-update-password-form',\n `auth-update-password-form--${formSize}`,\n ])}\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-update-password-form__title\"\n />\n </Slot>\n <InLineAlert\n className={classes([\n 'auth-update-password-form__notification',\n [\n 'auth-update-password-form__notification--show',\n !!inLineAlertProps?.text,\n ],\n ])}\n variant=\"secondary\"\n heading={inLineAlertProps?.text as string}\n icon={inLineAlertProps.icon}\n additionalActions={additionalActionsAlert}\n />\n <Slot\n name=\"Form\"\n data-testid=\"form\"\n slot={slots?.Form}\n context={{ ...slotContext }}\n >\n <Form\n name=\"updatePassword_form\"\n className=\"auth-update-password-form__form\"\n onSubmit={submitUpdatePassword}\n loading={isLoading}\n fieldsConfig={[]}\n >\n <div style=\"display: none;\">\n <input\n type=\"text\"\n id=\"username\"\n name=\"username\"\n autoComplete=\"username\"\n />\n </div>\n <InputPassword\n defaultValue={updatePasswordValue}\n onValue={handleSetUpdatePasswordValue}\n className=\"auth-update-password-form__form__item\"\n autoComplete={'new-password'}\n name={'password'}\n errorMessage={\n passwordError ||\n isValidUniqueSymbols === 'error' ||\n defaultLengthMessage?.status === 'error'\n ? translations.requiredFieldError\n : undefined\n }\n minLength={passwordConfigs?.minLength}\n uniqueSymbolsStatus={isValidUniqueSymbols}\n validateLengthConfig={defaultLengthMessage}\n requiredCharacterClasses={passwordConfigs?.requiredCharacterClasses}\n placeholder={translations.placeholder}\n floatingLabel={translations.floatingLabel}\n />\n\n <Slot\n name=\"Buttons\"\n className=\"auth-update-password-form__button\"\n data-testid=\"buttons\"\n slot={slots?.Buttons}\n context={{ ...slotContext }}\n >\n <Button\n type=\"submit\"\n buttonText={translations.buttonPrimary}\n variant=\"primary\"\n enableLoader={isLoading}\n />\n </Slot>\n </Form>\n </Slot>\n </div>\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 { Container } from '@adobe-commerce/elsie/lib';\nimport { UpdatePasswordForm } from '@/auth/components';\nimport { UpdatePasswordProps } from '@/auth/types';\n\nexport const UpdatePassword: Container<UpdatePasswordProps> = ({\n slots,\n formSize,\n signInOnSuccess,\n routeRedirectOnPasswordUpdate,\n routeRedirectOnSignIn,\n routeSignInPage,\n routeWrongUrlRedirect,\n onErrorCallback,\n onSuccessCallback,\n}) => {\n return (\n <div className=\"auth-update-password\">\n <UpdatePasswordForm\n formSize={formSize}\n signInOnSuccess={signInOnSuccess}\n routeSignInPage={routeSignInPage}\n routeRedirectOnSignIn={routeRedirectOnSignIn}\n routeWrongUrlRedirect={routeWrongUrlRedirect}\n onErrorCallback={onErrorCallback}\n onSuccessCallback={onSuccessCallback}\n slots={slots}\n routeRedirectOnPasswordUpdate={routeRedirectOnPasswordUpdate}\n />\n </div>\n );\n};\n"],"names":["getUrlParam","url","param","el","item","useUpdatePasswordForm","isEmailConfirmationRequired","signInOnSuccess","passwordConfigs","routeRedirectOnSignIn","routeWrongUrlRedirect","onErrorCallback","onSuccessCallback","handleSetInLineAlertProps","routeRedirectOnPasswordUpdate","routeSignInPage","translations","useText","isSuccessful","setIsSuccessful","useState","updatePasswordValue","setUpdatePasswordValue","isClickSubmit","setIsClickSubmit","email","setEmail","token","setToken","isLoading","setIsLoading","passwordError","setPasswordError","additionalActionsAlert","setAdditionalActionsAlert","useEffect","search","checkIsFunction","tokenParam","emailParam","submitUpdatePassword","useCallback","event","formValues","getFormValues","validationData","requiredCharacterClasses","minLength","validationUniqueSymbolsPassword","message","success","resetPassword","loginResponse","getCustomerToken","handleSetUpdatePasswordValue","value","UpdatePasswordForm","formSize","slots","useCustomTranslations","useGetStoreConfigs","inLineAlertProps","useInLineAlert","isValidUniqueSymbols","defaultLengthMessage","usePasswordValidationMessage","jsx","Slot","slotContext","jsxs","classes","Header","InLineAlert","Form","InputPassword","Button","UpdatePassword"],"mappings":"28BAiBO,MAAMA,EAAc,CAACC,EAAaC,IACxBD,EACZ,MAAM,GAAG,EACT,OAAQE,GAAOA,EAAG,SAASD,CAAK,CAAC,EACjC,IAAKE,GACGA,EAAK,MAAM,GAAG,EAAE,CAAC,CACzB,EAEW,CAAC,ECIJC,GAAwB,CAAC,CACpC,4BAAAC,EACA,gBAAAC,EACA,gBAAAC,EACA,sBAAAC,EACA,sBAAAC,EACA,gBAAAC,EACA,kBAAAC,EACA,0BAAAC,EACA,8BAAAC,EACA,gBAAAC,CACF,IAAkC,CAChC,MAAMC,EAAeC,GAAQ,CAC3B,kBAAmB,sCACnB,sBAAuB,0CACvB,4BACE,gDACF,0BAA2B,oCAAA,CAC5B,EAEK,CAACC,EAAcC,CAAe,EAAIC,EAAS,CAC/C,SAAU,GACV,OAAQ,EAAA,CACT,EACK,CAACC,EAAqBC,CAAsB,EAAIF,EAAS,EAAE,EAC3D,CAACG,EAAeC,CAAgB,EAAIJ,EAAS,EAAK,EAClD,CAACK,EAAOC,CAAQ,EAAIN,EAAS,EAAE,EAC/B,CAACO,EAAOC,CAAQ,EAAIR,EAAS,EAAE,EAC/B,CAACS,EAAWC,CAAY,EAAIV,EAAS,EAAK,EAC1C,CAACW,EAAeC,CAAgB,EAAIZ,EAAS,EAAK,EAClD,CAACa,EAAwBC,CAAyB,EACtDd,EAAsC,CAAA,CAAE,EAE1Ce,EAAU,IAAM,CACVZ,GAAiB,CAACU,EAAuB,SACvCZ,EAAoB,OACtBW,EAAiB,EAAK,EAEtBA,EAAiB,EAAI,EAG3B,EAAG,CAACT,EAAeF,EAAqBY,CAAsB,CAAC,EAE/DE,EAAU,IAAM,CACd,KAAM,CAAE,OAAAC,GAAW,OAAO,SAGxB,CAACA,EAAO,SAAS,QAAQ,GACzB,CAACA,EAAO,SAAS,QAAQ,GACzBC,EAAgB3B,CAAqB,IAErC,OAAO,SAAS,KAAOA,EAAA,GAGzB,MAAMT,EAAM,mBAAmBmC,CAAM,EAC/BE,EAAatC,EAAYC,EAAK,OAAO,EACrCsC,EAAavC,EAAYC,EAAK,OAAO,EAE3CyB,EAASa,CAAU,EACnBX,EAASU,CAAU,CACrB,EAAG,CAAC5B,CAAqB,CAAC,EAE1B,MAAM8B,EAAuBC,EAC3B,MAAOC,GAAgC,CACrCA,EAAM,eAAA,EAENZ,EAAa,EAAI,EACjBI,EAA0B,CAAA,CAAE,EAE5B,MAAMS,EAAaC,GAAcF,EAAM,MAAM,EACvCG,GAAiBF,GAAA,YAAAA,EAAY,WAAYlB,GAASE,EAEnDgB,GAAA,MAAAA,EAAY,WACfX,EAAiB,EAAI,EACrBF,EAAa,EAAK,GAGpB,MAAMgB,GACJtC,GAAA,YAAAA,EAAiB,2BAA4B,EACzCuC,GAAYvC,GAAA,YAAAA,EAAiB,YAAa,EAEhD,GACE,CAACwC,EACCL,GAAA,YAAAA,EAAY,SACZG,CAAA,GAEFH,EAAW,SAAS,OAAS,CAACI,EAC9B,CACAvB,EAAiB,EAAI,EACrBM,EAAa,EAAK,EAElB,MACF,CAEA,GAAI,CAACe,EAAgB,CACnBhC,EAA0B,CACxB,KAAM,QACN,KAAMG,EAAa,iBAAA,CACpB,EAEDc,EAAa,EAAK,EAElB,MACF,CAEA,KAAM,CAAE,QAAAmB,EAAS,QAAAC,CAAA,EAAY,MAAMC,GACjC1B,EACAE,EACAgB,EAAW,QAAA,EAGb,GAAIO,EAAS,CACX,GACE5C,GACC,CAACA,GAA+B,CAACC,EAClC,CACAK,GAAA,MAAAA,IAEIyB,EAAgBvB,CAA6B,IAC/C,OAAO,SAAS,KAAOA,EAAA,GAGzBU,EAAiB,EAAI,EACrBM,EAAa,EAAK,EAClBE,EAAiB,EAAK,EACtBV,EAAuB,EAAE,EACzBY,EAA0B,CACxB,CACE,MAAOlB,EAAa,4BACpB,QAAS,IAAM,CACb,OAAO,SAAS,KAAOD,GAAA,YAAAA,GACzB,CAAA,CACF,CACD,EACDF,EAA0B,CACxB,KAAM,UACN,KAAMG,EAAa,qBAAA,CACpB,EAED,MACF,CAEA,MAAMoC,EAAgB,MAAMC,GAAiB,CAC3C,MAAA5B,EACA,SAAUkB,EAAW,SACrB,0BAAA9B,EACA,gBAAAF,EACA,aAAAK,CAAA,CACD,EAEGoC,GAAA,MAAAA,EAAe,WACjBxC,GAAA,MAAAA,EAAoBwC,GAAA,YAAAA,EAAe,UAE/Bf,EAAgB5B,CAAqB,EACvC,OAAO,SAAS,KAAOA,EAAA,EAEvBU,EAAgB,CACd,SAAUiC,GAAA,YAAAA,EAAe,SACzB,OAAQ,EAAA,CACT,EAGP,MACEvC,EAA0B,CAAE,KAAM,QAAS,KAAMoC,EAAS,EAC1DtC,GAAA,MAAAA,EAAkB,CAAE,QAAAsC,EAAS,QAAAC,IAG/BpB,EAAa,EAAK,CACpB,EACA,CACEL,EACAE,EACAnB,GAAA,YAAAA,EAAiB,yBACjBA,GAAA,YAAAA,EAAiB,UACjBQ,EACAV,EACAC,EACAQ,EACAJ,EACAC,EACAH,EACAI,EACAC,CAAA,CACF,EAGIwC,EAA+Bb,EAAac,GAAkB,CAClEjC,EAAuBiC,CAAK,CAC9B,EAAG,CAAA,CAAE,EAEL,MAAO,CACL,uBAAAtB,EACA,cAAAF,EACA,aAAAb,EACA,oBAAAG,EACA,cAAAE,EACA,UAAAM,EACA,qBAAAW,EACA,6BAAAc,EACA,iBAAA9B,CAAA,CAEJ,ECzMagC,GAAiE,CAAC,CAC7E,gBAAAjD,EAAkB,GAClB,SAAAkD,EAAW,UACX,sBAAAhD,EACA,sBAAAC,EACA,gBAAAK,EACA,MAAA2C,EACA,gBAAA/C,EACA,kBAAAC,EACA,8BAAAE,CACF,IAAM,CAMJ,MAAME,EAAe2C,EAAsB,CACzC,MAAO,gCACP,cAAe,wCACf,YAAa,iCACb,cAAe,mCACf,mBAAoB,0CAAA,CACrB,EAEK,CAAE,gBAAAnD,EAAiB,4BAAAF,CAAA,EAAgCsD,EAAA,EAEnD,CAAE,iBAAAC,EAAkB,0BAAAhD,CAAA,EAA8BiD,GAAA,EAElD,CACJ,uBAAA7B,EACA,cAAAF,EACA,aAAAb,EACA,oBAAAG,EACA,cAAAE,EACA,UAAAM,EACA,qBAAAW,EACA,6BAAAc,CAAA,EACEjD,GAAsB,CACxB,4BAAAC,EACA,gBAAAC,EACA,gBAAAC,EACA,sBAAAC,EACA,sBAAAC,EACA,gBAAAC,EACA,kBAAAC,EACA,0BAAAC,EACA,8BAAAC,EACA,gBAAAC,CAAA,CACD,EAEK,CAAE,qBAAAgD,EAAsB,qBAAAC,CAAA,EAC5BC,EAA6B,CAC3B,SAAU5C,EACV,cAAAE,EACA,gBAAAf,CAAA,CACD,EAEH,GAAIU,EAAa,SAAUwC,GAAA,MAAAA,EAAO,qBAChC,OACEQ,EAACC,EAAA,CACC,cAAY,4BACZ,KAAK,sBACL,KAAMT,GAAA,YAAAA,EAAO,oBACb,QAAS,CAAE,aAAAxC,CAAA,CAAa,CAAA,EAK9B,MAAMkD,EAAc,CAClB,UAAAvC,EACA,cAAAE,EACA,aAAAb,CAAA,EAGF,OACEmD,EAAC,MAAA,CACC,UAAWC,EAAQ,CACjB,4BACA,8BAA8Bb,CAAQ,EAAA,CACvC,EAED,SAAA,CAAAS,EAACC,EAAA,CACC,KAAK,QACL,cAAY,QACZ,KAAMT,GAAA,YAAAA,EAAO,MACb,QAAS,CAAE,GAAGU,CAAA,EAEd,SAAAF,EAACK,EAAA,CACC,MAAOvD,EAAa,MACpB,QAAS,GACT,UAAU,kCAAA,CAAA,CACZ,CAAA,EAEFkD,EAACM,EAAA,CACC,UAAWF,EAAQ,CACjB,0CACA,CACE,gDACA,CAAC,EAACT,GAAA,MAAAA,EAAkB,KAAA,CACtB,CACD,EACD,QAAQ,YACR,QAASA,GAAA,YAAAA,EAAkB,KAC3B,KAAMA,EAAiB,KACvB,kBAAmB5B,CAAA,CAAA,EAErBiC,EAACC,EAAA,CACC,KAAK,OACL,cAAY,OACZ,KAAMT,GAAA,YAAAA,EAAO,KACb,QAAS,CAAE,GAAGU,CAAA,EAEd,SAAAC,EAACI,EAAA,CACC,KAAK,sBACL,UAAU,kCACV,SAAUjC,EACV,QAASX,EACT,aAAc,CAAA,EAEd,SAAA,CAAAqC,EAAC,MAAA,CAAI,MAAM,iBACT,SAAAA,EAAC,QAAA,CACC,KAAK,OACL,GAAG,WACH,KAAK,WACL,aAAa,UAAA,CAAA,EAEjB,EACAA,EAACQ,EAAA,CACC,aAAcrD,EACd,QAASiC,EACT,UAAU,wCACV,aAAc,eACd,KAAM,WACN,aACEvB,GACEgC,IAAyB,UACzBC,GAAA,YAAAA,EAAsB,UAAW,QAC/BhD,EAAa,mBACb,OAEN,UAAWR,GAAA,YAAAA,EAAiB,UAC5B,oBAAqBuD,EACrB,qBAAsBC,EACtB,yBAA0BxD,GAAA,YAAAA,EAAiB,yBAC3C,YAAaQ,EAAa,YAC1B,cAAeA,EAAa,aAAA,CAAA,EAG9BkD,EAACC,EAAA,CACC,KAAK,UACL,UAAU,oCACV,cAAY,UACZ,KAAMT,GAAA,YAAAA,EAAO,QACb,QAAS,CAAE,GAAGU,CAAA,EAEd,SAAAF,EAACS,GAAA,CACC,KAAK,SACL,WAAY3D,EAAa,cACzB,QAAQ,UACR,aAAca,CAAA,CAAA,CAChB,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CAAA,CAGN,EC9Ka+C,GAAiD,CAAC,CAC7D,MAAAlB,EACA,SAAAD,EACA,gBAAAlD,EACA,8BAAAO,EACA,sBAAAL,EACA,gBAAAM,EACA,sBAAAL,EACA,gBAAAC,EACA,kBAAAC,CACF,IAEIsD,EAAC,MAAA,CAAI,UAAU,uBACb,SAAAA,EAACV,GAAA,CACC,SAAAC,EACA,gBAAAlD,EACA,gBAAAQ,EACA,sBAAAN,EACA,sBAAAC,EACA,gBAAAC,EACA,kBAAAC,EACA,MAAA8C,EACA,8BAAA5C,CAAA,CAAA,EAEJ"}
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name": "@dropins/storefront-auth", "version": "3.
|
|
1
|
+
{"name": "@dropins/storefront-auth", "version": "3.2.0-alpha001", "@dropins/tools": "~1.6.0", "license": "SEE LICENSE IN LICENSE.md"}
|
|
@@ -1,11 +1,20 @@
|
|
|
1
|
+
import { SlotProps } from '@dropins/tools/types/elsie/src/lib';
|
|
1
2
|
import { activeComponentType } from './authCombine.types';
|
|
2
3
|
import { InLineAlertInterface } from './notification.types';
|
|
3
4
|
|
|
5
|
+
type ResetPasswordSlotContext = {
|
|
6
|
+
isLoading: boolean;
|
|
7
|
+
};
|
|
4
8
|
export interface ResetPasswordProps {
|
|
5
9
|
formSize?: 'default' | 'small';
|
|
6
10
|
routeSignIn?: () => string;
|
|
7
11
|
onErrorCallback?: (value?: unknown) => void;
|
|
8
12
|
onSuccessCallback?: () => void | Promise<void>;
|
|
13
|
+
slots?: {
|
|
14
|
+
Title?: SlotProps<ResetPasswordSlotContext>;
|
|
15
|
+
Form?: SlotProps<ResetPasswordSlotContext>;
|
|
16
|
+
Buttons?: SlotProps<ResetPasswordSlotContext>;
|
|
17
|
+
};
|
|
9
18
|
}
|
|
10
19
|
export interface ResetPasswordFormProps extends ResetPasswordProps {
|
|
11
20
|
setActiveComponent?: (componentName: activeComponentType) => void;
|
|
@@ -13,4 +22,5 @@ export interface ResetPasswordFormProps extends ResetPasswordProps {
|
|
|
13
22
|
export interface UseResetPasswordFormProps extends Omit<ResetPasswordFormProps, 'formSize'> {
|
|
14
23
|
handleSetInLineAlertProps?: (value?: InLineAlertInterface) => void;
|
|
15
24
|
}
|
|
25
|
+
export {};
|
|
16
26
|
//# sourceMappingURL=resetPassword.types.d.ts.map
|
package/types/signIn.types.d.ts
CHANGED
|
@@ -10,7 +10,10 @@ type DefaultSlotContext = {
|
|
|
10
10
|
};
|
|
11
11
|
export interface SignInProps {
|
|
12
12
|
slots?: {
|
|
13
|
+
Form?: SlotProps<DefaultSlotContext>;
|
|
14
|
+
Title?: SlotProps<DefaultSlotContext>;
|
|
13
15
|
SuccessNotification?: SlotProps<DefaultSlotContext>;
|
|
16
|
+
Buttons?: SlotProps<DefaultSlotContext>;
|
|
14
17
|
};
|
|
15
18
|
labels?: Record<string, string>;
|
|
16
19
|
formSize?: 'default' | 'small';
|
package/types/signUp.types.d.ts
CHANGED
|
@@ -24,6 +24,9 @@ export interface SignUpProps {
|
|
|
24
24
|
hideCloseBtnOnEmailConfirmation?: boolean;
|
|
25
25
|
routeRedirectOnEmailConfirmationClose?: () => string;
|
|
26
26
|
slots?: {
|
|
27
|
+
Title?: SlotProps<DefaultSlotContext>;
|
|
28
|
+
Form?: SlotProps<DefaultSlotContext>;
|
|
29
|
+
Buttons?: SlotProps<DefaultSlotContext>;
|
|
27
30
|
SuccessNotification?: SlotProps<DefaultSlotContext>;
|
|
28
31
|
PrivacyPolicyConsent: SlotProps;
|
|
29
32
|
};
|
|
@@ -17,6 +17,9 @@ export interface UpdatePasswordProps {
|
|
|
17
17
|
onErrorCallback?: (value: unknown) => void;
|
|
18
18
|
onSuccessCallback?: (value?: string) => void;
|
|
19
19
|
slots?: {
|
|
20
|
+
Title?: SlotProps<DefaultSlotContext>;
|
|
21
|
+
Form?: SlotProps<DefaultSlotContext>;
|
|
22
|
+
Buttons?: SlotProps<DefaultSlotContext>;
|
|
20
23
|
SuccessNotification?: SlotProps<DefaultSlotContext>;
|
|
21
24
|
};
|
|
22
25
|
}
|