@dropins/storefront-auth 3.3.0-beta.2 → 4.0.0-alpha-20260601092829
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/CHANGELOG.md +3 -11
- package/api/createCustomer/graphql/createCustomer.graphql.d.ts +1 -1
- package/api/createCustomer/graphql/createCustomerV2.graphql.d.ts +1 -1
- package/api/getCustomerData/graphql/getCustomerData.graphql.d.ts +2 -2
- package/api/getCustomerToken/graphql/getCustomerToken.graphql.d.ts +1 -1
- package/api/getStoreConfig/graphql/getStoreConfig.graphql.d.ts +2 -2
- package/api/graphql/CustomerFragment.graphql.d.ts +2 -2
- package/api/revokeCustomerToken/graphql/revokeCustomerToken.graphql.d.ts +1 -1
- package/api/verifyToken/graphql/verifyToken.graphql.d.ts +1 -1
- package/api/verifyToken/verifyToken.d.ts +1 -1
- package/api.js +1 -179
- package/api.js.map +1 -1
- package/chunks/Button.js +4 -0
- package/chunks/Button.js.map +1 -0
- package/chunks/RemoteShoppingAssistanceConsent.js +4 -0
- package/chunks/RemoteShoppingAssistanceConsent.js.map +1 -0
- package/chunks/RemoteShoppingAssistanceConsent2.js +4 -0
- package/chunks/RemoteShoppingAssistanceConsent2.js.map +1 -0
- package/chunks/ResetPasswordForm.js +4 -0
- package/chunks/ResetPasswordForm.js.map +1 -0
- package/chunks/SignInForm.js +4 -0
- package/chunks/SignInForm.js.map +1 -0
- package/chunks/SkeletonLoader.js +4 -0
- package/chunks/SkeletonLoader.js.map +1 -0
- package/chunks/acdl.js +4 -0
- package/chunks/acdl.js.map +1 -0
- package/chunks/confirmEmail.js +14 -0
- package/chunks/confirmEmail.js.map +1 -0
- package/chunks/createCustomerAddress.js +60 -0
- package/chunks/createCustomerAddress.js.map +1 -0
- package/chunks/focusOnEmptyPasswordField.js +4 -0
- package/chunks/focusOnEmptyPasswordField.js.map +1 -0
- package/chunks/getAdobeCommerceOptimizerData.js +70 -0
- package/chunks/getAdobeCommerceOptimizerData.js.map +1 -0
- package/chunks/getCustomerToken.js +17 -0
- package/chunks/getCustomerToken.js.map +1 -0
- package/chunks/index.js +4 -0
- package/chunks/index.js.map +1 -0
- package/chunks/index2.js +4 -0
- package/chunks/index2.js.map +1 -0
- package/chunks/index3.js +4 -0
- package/chunks/index3.js.map +1 -0
- package/chunks/network-error.js +4 -0
- package/chunks/network-error.js.map +1 -0
- package/chunks/requestPasswordResetEmail.js +8 -0
- package/chunks/requestPasswordResetEmail.js.map +1 -0
- package/chunks/resendConfirmationEmail.js +8 -0
- package/chunks/resendConfirmationEmail.js.map +1 -0
- package/chunks/resetPassword.js +16 -0
- package/chunks/resetPassword.js.map +1 -0
- package/chunks/revokeCustomerToken.js +11 -0
- package/chunks/revokeCustomerToken.js.map +1 -0
- package/chunks/setReCaptchaToken.js +4 -0
- package/chunks/setReCaptchaToken.js.map +1 -0
- package/chunks/simplifyTransformAttributesForm.js +4 -0
- package/chunks/simplifyTransformAttributesForm.js.map +1 -0
- package/chunks/transform-attributes-form.js +4 -0
- package/chunks/transform-attributes-form.js.map +1 -0
- package/chunks/usePasswordValidationMessage.js +4 -0
- package/chunks/usePasswordValidationMessage.js.map +1 -0
- package/components/RemoteShoppingAssistanceConsent/RemoteShoppingAssistanceConsent.d.ts +12 -0
- package/components/RemoteShoppingAssistanceConsent/index.d.ts +19 -0
- package/components/index.d.ts +2 -1
- package/configs/cookieConfigs.d.ts +3 -1
- package/containers/AuthCombine.js +1 -1
- package/containers/AuthCombine.js.map +1 -1
- package/containers/ResetPassword.js +1 -1
- package/containers/ResetPassword.js.map +1 -1
- package/containers/SignIn.js +1 -1
- package/containers/SignIn.js.map +1 -1
- package/containers/SignUp.js +1 -1
- package/containers/SignUp.js.map +1 -1
- package/containers/SuccessNotification.js +1 -1
- package/containers/SuccessNotification.js.map +1 -1
- package/containers/UpdatePassword.js +1 -1
- package/containers/UpdatePassword.js.map +1 -1
- package/data/models/customer-data.d.ts +2 -1
- package/data/models/store-config.d.ts +5 -1
- package/fragments.js +12 -1
- package/fragments.js.map +1 -1
- package/hooks/api/useGetStoreConfigs.d.ts +6 -1
- package/i18n/en_US.json.d.ts +2 -0
- package/lib/acdl.d.ts +1 -1
- package/lib/cookieUtils.d.ts +1 -1
- package/lib/emitAuthGroupId.d.ts +1 -1
- package/lib/jwtUtils.d.ts +50 -0
- package/lib/mergeFormObjects.d.ts +1 -1
- package/package.json +1 -1
- package/render.js +2 -2
- package/render.js.map +1 -1
- package/types/api/getCustomerData.types.d.ts +2 -1
- package/types/api/storeConfig.types.d.ts +5 -1
- package/types/signUp.types.d.ts +4 -2
- package/chunks/components.js +0 -4
- package/chunks/components.js.map +0 -1
package/chunks/Button.js
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/*! Copyright 2026 Adobe
|
|
2
|
+
All Rights Reserved. */
|
|
3
|
+
import{jsx as s,jsxs as f}from"@dropins/tools/preact-jsx-runtime.js";import{useState as g,useCallback as i}from"@dropins/tools/preact-hooks.js";import*as t from"@dropins/tools/preact-compat.js";import{classes as d}from"@dropins/tools/lib.js";import{Button as w}from"@dropins/tools/components.js";import"./RemoteShoppingAssistanceConsent.js";const M=e=>{if(!e)return null;const r=new FormData(e);if(r&&typeof r.entries=="function"){const n=r.entries();if(n&&typeof n[Symbol.iterator]=="function")return JSON.parse(JSON.stringify(Object.fromEntries(n)))||{}}return{}},S=e=>typeof e=="function",E=e=>t.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},t.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M0.75 12C0.75 5.78421 5.78421 0.75 12 0.75C18.2158 0.75 23.25 5.78421 23.25 12C23.25 18.2158 18.2158 23.25 12 23.25C5.78421 23.25 0.75 18.2158 0.75 12Z",stroke:"currentColor"}),t.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M6.75 12.762L10.2385 15.75L17.25 9",stroke:"currentColor"})),k=e=>t.createElement("svg",{id:"Icon_Warning_Base",width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},t.createElement("g",{clipPath:"url(#clip0_841_1324)"},t.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M11.9949 2.30237L0.802734 21.6977H23.1977L11.9949 2.30237Z",stroke:"currentColor",strokeWidth:1,strokeLinecap:"round",strokeLinejoin:"round"}),t.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M12.4336 10.5504L12.3373 14.4766H11.6632L11.5669 10.5504V9.51273H12.4336V10.5504ZM11.5883 18.2636V17.2687H12.4229V18.2636H11.5883Z",stroke:"currentColor",strokeWidth:1,strokeLinecap:"round",strokeLinejoin:"round"})),t.createElement("defs",null,t.createElement("clipPath",{id:"clip0_841_1324"},t.createElement("rect",{width:24,height:21,fill:"white",transform:"translate(0 1.5)",strokeWidth:1})))),v=e=>t.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},t.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M0.75 12C0.75 5.78421 5.78421 0.75 12 0.75C18.2158 0.75 23.25 5.78421 23.25 12C23.25 18.2158 18.2158 23.25 12 23.25C5.78421 23.25 0.75 18.2158 0.75 12Z",stroke:"currentColor"}),t.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M11.75 5.88423V4.75H12.25V5.88423L12.0485 13.0713H11.9515L11.75 5.88423ZM11.7994 18.25V16.9868H12.2253V18.25H11.7994Z",stroke:"currentColor"})),L={success:s(E,{}),warning:s(k,{}),error:s(v,{})},W=()=>{const[e,r]=g({}),n=i(o=>{if(!o||!o.type){r({});return}const c=L[o.type];r({...o,icon:c})},[]);return{inLineAlertProps:e,handleSetInLineAlertProps:n}},b=({type:e,buttonText:r,variant:n,className:o="",enableLoader:c=!1,onClick:a,style:l,icon:u,...h})=>{const m=i(p=>{a==null||a(p)},[a]);return f(w,{icon:u,style:l,type:e,variant:n,className:d(["auth-button",o,c?"enableLoader":""]),onClick:m,...h,children:[s("span",{className:"auth-button__text",children:r}),c?s("div",{className:"auth-button__wrapper",children:s("span",{className:"auth-button__loader"})}):null]})};export{b as B,S as c,M as g,W as u};
|
|
4
|
+
//# sourceMappingURL=Button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button.js","sources":["/@dropins/storefront-auth/src/lib/getFormValues.ts","/@dropins/storefront-auth/src/lib/checkIsFunction.ts","../../node_modules/@adobe-commerce/elsie/src/icons/CheckWithCircle.svg","../../node_modules/@adobe-commerce/elsie/src/icons/Warning.svg","../../node_modules/@adobe-commerce/elsie/src/icons/WarningWithCircle.svg","/@dropins/storefront-auth/src/hooks/useInLineAlert.tsx","/@dropins/storefront-auth/src/components/Button/Button.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 getFormValues = (form: any) => {\n if (!form) return null;\n\n const formData = new FormData(form);\n\n if (formData && typeof formData.entries === 'function') {\n const entries = formData.entries();\n if (entries && typeof entries[Symbol.iterator] === 'function') {\n return JSON.parse(JSON.stringify(Object.fromEntries(entries))) || {};\n }\n }\n return {};\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 checkIsFunction = (value: any): value is Function => {\n return typeof value === 'function';\n};\n","import * as React from \"react\";\nconst SvgCheckWithCircle = (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: \"M0.75 12C0.75 5.78421 5.78421 0.75 12 0.75C18.2158 0.75 23.25 5.78421 23.25 12C23.25 18.2158 18.2158 23.25 12 23.25C5.78421 23.25 0.75 18.2158 0.75 12Z\", stroke: \"currentColor\" }), /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M6.75 12.762L10.2385 15.75L17.25 9\", stroke: \"currentColor\" }));\nexport default SvgCheckWithCircle;\n","import * as React from \"react\";\nconst SvgWarning = (props) => /* @__PURE__ */ React.createElement(\"svg\", { id: \"Icon_Warning_Base\", width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { clipPath: \"url(#clip0_841_1324)\" }, /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M11.9949 2.30237L0.802734 21.6977H23.1977L11.9949 2.30237Z\", stroke: \"currentColor\", strokeWidth: 1, strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M12.4336 10.5504L12.3373 14.4766H11.6632L11.5669 10.5504V9.51273H12.4336V10.5504ZM11.5883 18.2636V17.2687H12.4229V18.2636H11.5883Z\", stroke: \"currentColor\", strokeWidth: 1, strokeLinecap: \"round\", strokeLinejoin: \"round\" })), /* @__PURE__ */ React.createElement(\"defs\", null, /* @__PURE__ */ React.createElement(\"clipPath\", { id: \"clip0_841_1324\" }, /* @__PURE__ */ React.createElement(\"rect\", { width: 24, height: 21, fill: \"white\", transform: \"translate(0 1.5)\", strokeWidth: 1 }))));\nexport default SvgWarning;\n","import * as React from \"react\";\nconst SvgWarningWithCircle = (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: \"M0.75 12C0.75 5.78421 5.78421 0.75 12 0.75C18.2158 0.75 23.25 5.78421 23.25 12C23.25 18.2158 18.2158 23.25 12 23.25C5.78421 23.25 0.75 18.2158 0.75 12Z\", stroke: \"currentColor\" }), /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M11.75 5.88423V4.75H12.25V5.88423L12.0485 13.0713H11.9515L11.75 5.88423ZM11.7994 18.25V16.9868H12.2253V18.25H11.7994Z\", stroke: \"currentColor\" }));\nexport default SvgWarningWithCircle;\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 { useState, useCallback } from 'preact/hooks';\nimport { InLineAlertInterface } from '../types';\nimport {\n CheckWithCircle as Success,\n Warning,\n WarningWithCircle as Error,\n} from '@adobe-commerce/elsie/icons';\n\nconst iconsList = {\n success: <Success />,\n warning: <Warning />,\n error: <Error />,\n};\n\nexport const useInLineAlert = () => {\n const [inLineAlertProps, setInLineAlertProps] =\n useState<InLineAlertInterface>({});\n\n const handleSetInLineAlertProps = useCallback(\n (notification: InLineAlertInterface | undefined) => {\n if (!notification || !notification.type) {\n setInLineAlertProps({});\n return;\n }\n\n const icon = iconsList[notification.type];\n\n setInLineAlertProps({\n ...notification,\n icon,\n });\n },\n []\n );\n\n return { inLineAlertProps, handleSetInLineAlertProps };\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, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { useCallback } from 'preact/hooks';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { Button as ElsieButton } from '@adobe-commerce/elsie/components';\nimport '@/auth/components/Button/Button.css';\n\nexport interface ButtonProps {\n type: 'submit' | 'button';\n variant?: 'primary' | 'secondary' | 'tertiary';\n className?: string;\n buttonText: string;\n enableLoader?: boolean;\n onClick?: (event: MouseEvent) => void;\n style?: Record<string, string | number>;\n icon?: VNode<HTMLAttributes<SVGSVGElement>>;\n disabled?: boolean;\n}\n\nexport const Button: FunctionComponent<ButtonProps> = ({\n type,\n buttonText,\n variant,\n className = '',\n enableLoader = false,\n onClick,\n style,\n icon,\n ...props\n}) => {\n const handleOnclick = useCallback(\n (event: MouseEvent) => {\n onClick?.(event);\n },\n [onClick]\n );\n\n const isLoader = enableLoader ? 'enableLoader' : '';\n\n return (\n <ElsieButton\n icon={icon}\n style={style}\n type={type}\n variant={variant}\n className={classes(['auth-button', className, isLoader])}\n onClick={handleOnclick}\n {...props}\n >\n <span className=\"auth-button__text\">{buttonText}</span>\n {enableLoader ? (\n <div className=\"auth-button__wrapper\">\n <span className=\"auth-button__loader\" />\n </div>\n ) : null}\n </ElsieButton>\n );\n};\n"],"names":["getFormValues","form","formData","entries","checkIsFunction","value","SvgCheckWithCircle","props","React","SvgWarning","SvgWarningWithCircle","iconsList","Success","Warning","Error","useInLineAlert","inLineAlertProps","setInLineAlertProps","useState","handleSetInLineAlertProps","useCallback","notification","icon","Button","type","buttonText","variant","className","enableLoader","onClick","style","handleOnclick","event","jsxs","ElsieButton","classes","jsx"],"mappings":"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","x_google_ignoreList":[2,3,4]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/*! Copyright 2026 Adobe
|
|
2
|
+
All Rights Reserved. */
|
|
3
|
+
import{jsx as h,jsxs as j,Fragment as q}from"@dropins/tools/preact-jsx-runtime.js";import{useRef as H,useState as B,useCallback as U,useEffect as k}from"@dropins/tools/preact-hooks.js";import{initReCaptcha as z}from"@dropins/tools/recaptcha.js";import{useText as v}from"@dropins/tools/i18n.js";import{classes as w,Slot as W}from"@dropins/tools/lib.js";import{memo as F}from"@dropins/tools/preact-compat.js";import{Field as K,Input as V,Picker as J,InputDate as Y,Checkbox as Q,TextArea as rr}from"@dropins/tools/components.js";var I=(r=>(r.REQUIRED_FIELD_ERROR="requiredFieldError",r.NUMERIC_ERROR="numericError",r.ALPHA_NUM_WITH_SPACES_ERROR="alphaNumWithSpacesError",r.ALPHA_NUMERIC_ERROR="alphaNumericError",r.ALPHA_ERROR="alphaError",r.EMAIL_ERROR="emailError",r.DATE_ERROR="dateError",r.DATE_RANGE_ERROR="dateRangeError",r.DATE_MAX_ERROR="dateMaxError",r.DATE_MIN_ERROR="dateMinError",r.URL_ERROR="urlError",r.LENGTH_TEXT_ERROR="lengthTextError",r))(I||{});const M="/",er=r=>{const e=v(r),t=Object.entries(e).filter(([o,d])=>d===null&&Object.values(I).includes(o)).map(([o])=>o),a=t.reduce((o,d)=>(o[d]=`Auth.FormText.${d}`,o),{}),n=v(a);return{...e,...t.reduce((o,d)=>(o[d]=n[d],o),{})}},tr=r=>r.reduce((e,t)=>({...e,[t.name]:t.value}),{}),ar=r=>/^\d+$/.test(r),nr=r=>/^[a-zA-Z0-9\s]+$/.test(r),or=r=>/^[a-zA-Z0-9]+$/.test(r),ur=r=>/^[a-zA-Z]+$/.test(r),lr=r=>/^[a-z0-9,!\#\$%&'\*\+\/=\?\^_`\{\|\}~-]+(\.[a-z0-9,!\#\$%&'\*\+\/=\?\^_`\{\|\}~-]+)*@([a-z0-9-]+\.)+[a-z]{2,}$/i.test(r),sr=r=>/^\d{4}-\d{2}-\d{2}$/.test(r)&&!isNaN(Date.parse(r)),cr=(r,e,t)=>{const a=new Date(r).getTime()/1e3;return!(isNaN(a)||a<0||typeof e<"u"&&a<e||typeof t<"u"&&a>t)},S=r=>{if(!r||r.trim()==="")return"";const e=parseInt(r,10);if(!isNaN(e)){const n=new Date(e*1e3);return isNaN(n.getTime())?"":n.toISOString().split("T")[0]}const t=new Date(r);if(isNaN(t.getTime()))return"";const a=parseInt(r.split("-")[1],10);return a>12||a<1?"":t.toISOString().split("T")[0]},dr=r=>/^(https?|ftp):\/\/(([A-Z0-9]([A-Z0-9_-]*[A-Z0-9]|))(\.[A-Z0-9]([A-Z0-9_-]*[A-Z0-9]|))*)(:(\d+))?(\/[A-Z0-9~](([A-Z0-9_~-]|\.)*[A-Z0-9~]|))*\/?(.*)?$/i.test(r),Er=(r,e,t)=>{const a=r.length;return a>=e&&a<=t},P=(r,e,t,a)=>{var g,G;const{requiredFieldError:n,lengthTextError:o,numericError:d,alphaNumWithSpacesError:u,alphaNumericError:_,alphaError:i,emailError:$,dateError:x,urlError:D,dateRangeError:f,dateMaxError:p,dateMinError:R}=t,s=e==null?void 0:e.customUpperCode,T={[s]:""};if(a[s]&&delete a[s],e!=null&&e.required&&(!r||r==="false"))return{[s]:`${I.REQUIRED_FIELD_ERROR}${M}${n}`};if(!(e!=null&&e.required)&&!r||!((g=e==null?void 0:e.validateRules)!=null&&g.length))return T;const O=tr(e==null?void 0:e.validateRules),E=O.MIN_TEXT_LENGTH??1,A=O.MAX_TEXT_LENGTH??255,l=O.DATE_RANGE_MIN,c=O.DATE_RANGE_MAX;if(!Er(r,+E,+A)&&!(l||c)){const b=o.replace("{min}",E).replace("{max}",A);return{[s]:`${I.LENGTH_TEXT_ERROR}${M}${b}`}}if(!cr(r,+l,+c)&&(l||c)){if(l&&l){const b=f.replace("{min}",S(l)).replace("{max}",S(c));return{[s]:`${I.DATE_RANGE_ERROR}${M}${b}`}}if(typeof l>"u"&&typeof c<"u"){const b=p.replace("{max}",S(c));return{[s]:`${I.DATE_MAX_ERROR}${M}${b}`}}if(typeof c>"u"&&typeof l<"u"){const b=R.replace("{min}",S(l));return{[s]:`${I.DATE_MIN_ERROR}${M}${b}`}}}const C={numeric:{validate:ar,error:`${I.NUMERIC_ERROR}${M}${d}`},"alphanum-with-spaces":{validate:nr,error:`${I.ALPHA_NUM_WITH_SPACES_ERROR}${M}${u}`},alphanumeric:{validate:or,error:`${I.ALPHA_NUMERIC_ERROR}${M}${_}`},alpha:{validate:ur,error:`${I.ALPHA_ERROR}${M}${i}`},email:{validate:lr,error:`${I.EMAIL_ERROR}${M}${$}`},date:{validate:sr,error:`${I.DATE_ERROR}${M}${x}`},url:{validate:dr,error:`${I.URL_ERROR}${M}${D}`}}[O.INPUT_VALIDATION];return C&&!C.validate(r)&&!((G=a[s])!=null&&G.length)?{[s]:C.error}:T},Rr=r=>r.reduce((e,{customUpperCode:t,required:a,defaultValue:n})=>(a&&t&&(e.initialData[t]=n||"",e.errorList[t]=""),e),{initialData:{},errorList:{}}),hr=["auth-reset-password-form__buttons--signin","auth-sign-up-form-buttons--signin","auth-sign-in-form__button--forgot","auth-sign-in-form__button--signup"],pr=({fieldsConfig:r,onSubmit:e})=>{const t=er({requiredFieldError:"Auth.FormText.requiredFieldError.default",lengthTextError:"Auth.FormText.lengthTextError.default",numericError:"Auth.FormText.numericError.default",alphaNumWithSpacesError:"Account.FormText.alphaNumWithSpacesError.default",alphaNumericError:"Auth.FormText.alphaNumericError.default",alphaError:"Auth.FormText.alphaError.default",emailError:"Auth.FormText.emailError.default",dateError:"Auth.FormText.dateError.default",dateRangeError:"Auth.FormText.dateRangeError.default",dateMaxError:"Auth.FormText.dateMaxError.default",dateMinError:"Auth.FormText.dateMinError.default",urlError:"Auth.FormText.urlError.default"}),a=H(null),n=H(!1),[o,d]=B({}),[u,_]=B({}),i=U(()=>{let p=!0;const R={...u};let s=null;for(const[T,O]of Object.entries(o)){const E=r==null?void 0:r.find(l=>{var c;return(c=l==null?void 0:l.customUpperCode)==null?void 0:c.includes(T)}),A=P(O.toString(),E,t,R);A[T]&&(Object.assign(R,A),p=!1),s||(s=Object.keys(R).find(l=>R[l])??null)}if(_(R),s&&a.current){const T=a.current.elements.namedItem(s);T==null||T.focus()}return p},[u,r,o,t]);k(()=>{if(r!=null&&r.length){const{initialData:p,errorList:R}=Rr(r);d(s=>({...p,...s})),_(R)}},[JSON.stringify(r)]);const $=U(async p=>{const R=p.target,s=!hr.some(T=>R.classList.contains(T));!n.current&&s&&(await z(0),n.current=!0)},[]),x=U(p=>{const{name:R,value:s,type:T,checked:O}=p==null?void 0:p.target,E=T==="checkbox"?O:s;d(c=>({...c,[R]:E}));const A=r==null?void 0:r.find(c=>{var N;return(N=c==null?void 0:c.customUpperCode)==null?void 0:N.includes(R)});let l={...u};if(A){const c=P(E.toString(),A,t,l);c&&Object.assign(l,c),_(l)}},[r,u,t]),D=U(p=>{const{name:R,value:s,type:T,checked:O}=p==null?void 0:p.target,E=T==="checkbox"?O:s,A=r==null?void 0:r.find(l=>l.customUpperCode===R);if(A){const l={...u},c=P(E.toString(),A,t,l);c&&Object.assign(l,c),_(l)}},[u,r,t]),f=U(p=>{p.preventDefault();const R=i();e==null||e(p,R)},[i,e]);return{formData:o,errors:u,formRef:a,handleChange:x,handleBlur:D,handleSubmit:f,handleFocus:$}};var m=(r=>(r.BOOLEAN="BOOLEAN",r.DATE="DATE",r.DATETIME="DATETIME",r.DROPDOWN="DROPDOWN",r.FILE="FILE",r.GALLERY="GALLERY",r.HIDDEN="HIDDEN",r.IMAGE="IMAGE",r.MEDIA_IMAGE="MEDIA_IMAGE",r.MULTILINE="MULTILINE",r.MULTISELECT="MULTISELECT",r.PRICE="PRICE",r.SELECT="SELECT",r.TEXT="TEXT",r.TEXTAREA="TEXTAREA",r.UNDEFINED="UNDEFINED",r.VISUAL="VISUAL",r.WEIGHT="WEIGHT",r.EMPTY="",r))(m||{});const Z=r=>{const e={errorKey:"",defaultErrorMessage:""};if(!r)return e;const t=r.indexOf(M);return t===-1?e:{errorKey:r.substring(0,t).trim(),defaultErrorMessage:r.substring(t+M.length).trim()}},L=F(({item:r,errorConfig:e,className:t,itemClassName:a,loading:n,children:o})=>{const{errorKey:d,defaultErrorMessage:u}=Z(e),_=v(`Auth.FormText.${d}.${r.code}`)[r.code];let i="";return u.length&&(i=_||u),h(K,{error:i,className:w([a,`${a}--${r.id}`,[`${a}--${r.id}-hidden`,r.isHidden],r.className]),"data-testid":`${t}--${r.id}`,disabled:n||r.disabled,children:o},r.id)}),X=F(({item:r,valueMessage:e,errorConfig:t,onBlur:a,onChange:n,onFocus:o,className:d,itemClassName:u,loading:_})=>h(L,{item:r,errorConfig:t,className:d,itemClassName:u,loading:_,children:h(V,{type:"text",name:r.customUpperCode,value:e??r.defaultValue,placeholder:r.label,floatingLabel:`${r.label} ${r.required?"*":""}`,autocomplete:r.autocomplete,onBlur:a,onChange:n,onFocus:o})})),y=F(({item:r,valueMessage:e,errorConfig:t,onBlur:a,onChange:n,className:o,itemClassName:d,loading:u})=>{var i;const _=(i=r.options.find($=>$.isDefault))==null?void 0:i.value;return h(L,{item:r,errorConfig:t,className:o,itemClassName:d,loading:u,children:h(J,{name:r.customUpperCode,floatingLabel:`${r.label} ${r.required?"*":""}`,placeholder:r.label,"aria-label":r.label,options:r.options,onBlur:a,handleSelect:n,defaultValue:_??e??r.defaultValue,value:_??e??r.defaultValue})})}),Ar=F(({item:r,valueMessage:e,errorConfig:t,onBlur:a,onChange:n,className:o,itemClassName:d,loading:u})=>h(L,{item:r,errorConfig:t,className:o,itemClassName:d,loading:u,children:h(Y,{type:"text",name:r.customUpperCode,value:e||r.defaultValue,placeholder:r.label,floatingLabel:`${r.label} ${r.required?"*":""}`,onBlur:a,onChange:n,disabled:u||r.disabled})})),Tr=F(({item:r,valueMessage:e,errorConfig:t,onBlur:a,onChange:n,className:o,itemClassName:d,loading:u})=>h(L,{item:r,errorConfig:t,className:o,itemClassName:d,loading:u,children:h(Q,{name:r.customUpperCode,checked:e||r.defaultValue,placeholder:r.label,label:`${r.label} ${r.required?"*":""}`,onBlur:a,onChange:n})})),_r=F(({item:r,valueMessage:e,errorConfig:t,onBlur:a,onChange:n,className:o,itemClassName:d,loading:u})=>h(L,{item:r,errorConfig:t,className:o,itemClassName:d,loading:u,children:h(rr,{name:r.customUpperCode,value:e??r.defaultValue,label:`${r.label} ${r.required?"*":""}`,onBlur:a,onChange:n})})),ir=({slots:r,item:e,handleOnChange:t,handleOnBlur:a,handleOnFocus:n,errorConfig:o,errors:d})=>{const{errorKey:u,defaultErrorMessage:_}=Z(o),i=v(`Auth.FormText.${u}.${e.code}`)[e.code];let $="";_.length&&($=i||_);const x={inputName:e.customUpperCode,handleOnChange:t,handleOnBlur:a,handleOnFocus:n,errorMessage:$,errors:d,config:e};return h(W,{"data-testid":`signUpFormInput_${e.code}`,name:`SignUpFormInput_${e.code}`,slot:r==null?void 0:r[`SignUpFormInput_${e.code}`],context:x},e.id)},xr=F(({slots:r,name:e,loading:t,children:a,className:n="defaultForm",fieldsConfig:o=[],onSubmit:d,formSlot:u,..._})=>{const{formData:i,errors:$,formRef:x,handleChange:D,handleBlur:f,handleSubmit:p,handleFocus:R}=pr({onSubmit:d,fieldsConfig:o}),s=`${n}__field`,T=j(q,{children:[o.map(E=>{const A=$==null?void 0:$[E.customUpperCode],l=i==null?void 0:i[E.customUpperCode],c=!!(r!=null&&r[`SignUpFormInput_${E.code}`]),N=h(ir,{slots:r,item:E,handleOnChange:D,handleOnBlur:f,handleOnFocus:R,errorConfig:A,errors:$});switch(E.fieldType){case m.TEXT:return c?N:E.options.length?h(y,{item:E,valueMessage:l,errorConfig:A,onBlur:f,onChange:D,onFocus:R,itemClassName:s,className:n,loading:t}):h(X,{item:E,valueMessage:l,errorConfig:A,onBlur:f,onChange:D,onFocus:R,itemClassName:s,className:n,loading:t});case m.MULTILINE:return c?N:h(X,{item:E,valueMessage:l,errorConfig:A,onBlur:f,onChange:D,onFocus:R,itemClassName:s,className:n,loading:t});case m.SELECT:return c?N:h(y,{item:E,valueMessage:l,errorConfig:A,onBlur:f,onChange:D,itemClassName:s,className:n,loading:t});case m.DATE:return c?N:h(Ar,{item:E,valueMessage:l,errorConfig:A,onBlur:f,onChange:D,itemClassName:s,className:n,loading:t});case m.BOOLEAN:return c?N:h(Tr,{item:E,valueMessage:l,errorConfig:A,onBlur:f,onChange:D,itemClassName:s,className:n,loading:t});case m.TEXTAREA:return c?N:h(_r,{item:E,valueMessage:l,errorConfig:A,onBlur:f,onChange:D,itemClassName:s,className:n,loading:t});default:return null}}),a]}),O={...(u==null?void 0:u.context)??{},__formContentKey:[o.map(E=>E.id||E.code).join(","),JSON.stringify($),JSON.stringify(i)].join("|")};return h("form",{onSubmit:p,name:e,ref:x,onFocus:R,..._,children:u?h(W,{name:u.name,slot:u.slot,context:O,className:n,"data-testid":u.dataTestId,children:T}):T})});export{xr as F,er as u,lr as v};
|
|
4
|
+
//# sourceMappingURL=RemoteShoppingAssistanceConsent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RemoteShoppingAssistanceConsent.js","sources":["/@dropins/storefront-auth/src/types/validationErrors.types.ts","/@dropins/storefront-auth/src/hooks/useCustomTranslations.tsx","/@dropins/storefront-auth/src/lib/validationFields.ts","/@dropins/storefront-auth/src/lib/initializeFormDataAndErrors.ts","/@dropins/storefront-auth/src/configs/excludedFocusClasses.ts","/@dropins/storefront-auth/src/hooks/components/useForm.tsx","/@dropins/storefront-auth/src/data/models/attributes-form.ts","/@dropins/storefront-auth/src/lib/extractErrorKeyAndMessage.tsx","/@dropins/storefront-auth/src/components/Form/Elements/FieldElement.tsx","/@dropins/storefront-auth/src/components/Form/Elements/InputElement.tsx","/@dropins/storefront-auth/src/components/Form/Elements/SelectElement.tsx","/@dropins/storefront-auth/src/components/Form/Elements/InputDateElement.tsx","/@dropins/storefront-auth/src/components/Form/Elements/InputCheckBoxElement.tsx","/@dropins/storefront-auth/src/components/Form/Elements/TextAreaElement.tsx","/@dropins/storefront-auth/src/components/Form/Elements/FormSlot.tsx","/@dropins/storefront-auth/src/components/Form/Form.tsx"],"sourcesContent":["/**\n * Error types in this enum are used to provide custom i18n translations for specific validation errors.\n * Each key corresponds to an error type that maps to the `Auth.FormText` i18n values in `src/i18n/en_US.json`.\n */\nexport enum ValidationErrorTypes {\n REQUIRED_FIELD_ERROR = 'requiredFieldError',\n NUMERIC_ERROR = 'numericError',\n ALPHA_NUM_WITH_SPACES_ERROR = 'alphaNumWithSpacesError',\n ALPHA_NUMERIC_ERROR = 'alphaNumericError',\n ALPHA_ERROR = 'alphaError',\n EMAIL_ERROR = 'emailError',\n DATE_ERROR = 'dateError',\n DATE_RANGE_ERROR = 'dateRangeError',\n DATE_MAX_ERROR = 'dateMaxError',\n DATE_MIN_ERROR = 'dateMinError',\n URL_ERROR = 'urlError',\n LENGTH_TEXT_ERROR = 'lengthTextError',\n}\n\n/**\n * `ERROR_CONFIG_SEPARATOR` uses the ASCII 31 (Unit Separator) character,\n * a rarely used control character, to avoid conflicts with custom i18n error messages.\n *\n * Learn more: https://theasciicode.com.ar/ascii-control-characters/unit-separator-ascii-code-31.html\n */\nexport const ERROR_CONFIG_SEPARATOR = `${String.fromCharCode(\n 31\n)}/${String.fromCharCode(31)}`;\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 { useText } from 'preact-i18n';\nimport { ValidationErrorTypes } from '@/auth/types';\n\n/**\n * A custom hook for handling translations with support for extensible error messages.\n *\n * @param defaultKeys - A mapping of keys to their translation paths.\n * @returns A complete set of translations, including dynamically updated values for null error keys.\n */\nexport const useCustomTranslations = (\n defaultKeys: Record<string, string>\n): Record<string, string> => {\n /**\n * Step 1: Fetch initial translations using the provided keys\n * Translations are fetched from the i18n system based on the provided defaultKeys.\n */\n const translations = useText(defaultKeys);\n\n /**\n * Step 2: Identify keys that require updates\n * - These keys correspond to validation errors (defined in ValidationErrorTypes).\n * - A key needs an update if:\n * 1. Its value in the initial translations is `null`.\n * 2. The key exists in ValidationErrorTypes (indicating it’s a known error type).\n *\n * Null values typically occur when translations for the given error key are not overridden\n * and instead rely on a plain structure, e.g., \"requiredFieldError\": \"This is a required field.\"\n */\n const keysToUpdate = Object.entries(translations)\n .filter(\n ([key, value]) =>\n value === null &&\n (Object.values(ValidationErrorTypes) as string[]).includes(key)\n )\n .map(([key]) => key);\n\n /**\n * Step 3: Prepare paths for fetching updated translations\n * - For each key needing an update, create a path to its extended translation.\n * - Example: For the key \"requiredFieldError\", the updated path would be \"Auth.FormText.requiredFieldError\".\n */\n const translationKeys = keysToUpdate.reduce((acc, key) => {\n acc[key] = `Auth.FormText.${key}`; // Build the updated translation path\n return acc;\n }, {} as Record<string, string>);\n\n // Step 4: Fetch updated translations for the keys identified in Step 2\n const updatedTranslations = useText(translationKeys);\n\n /**\n * Step 5: Merge updated translations back into the initial translations\n * - Replace `null` values with the fetched updated translations.\n * - Preserve all other original translations.\n */\n return {\n ...translations, // Include original translations\n ...keysToUpdate.reduce<Record<string, string>>((acc, key) => {\n acc[key] = updatedTranslations[key]; // Overwrite `null` values with updated translations\n return acc;\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 { ValidationErrorTypes, ERROR_CONFIG_SEPARATOR } from '@/auth/types';\n\n/* eslint-disable no-useless-escape */\ntype ValidationConfig = Record<string, string>;\ntype TranslationList = Record<string, string>;\ntype ErrorsList = Record<string, string>;\nexport type ValidationFieldsConfig = {\n validateRules: Record<string, string>[];\n code?: string;\n customUpperCode: string;\n required: boolean;\n};\n\nenum ConfigEnumLength {\n MIN_TEXT_LENGTH = 'MIN_TEXT_LENGTH',\n MAX_TEXT_LENGTH = 'MAX_TEXT_LENGTH',\n DATE_RANGE_MIN = 'DATE_RANGE_MIN',\n DATE_RANGE_MAX = 'DATE_RANGE_MAX',\n}\n\nexport enum InputValidation {\n Numeric = 'numeric',\n AlphanumWithSpaces = 'alphanum-with-spaces',\n Alphanumeric = 'alphanumeric',\n Alpha = 'alpha',\n Email = 'email',\n Length = 'length',\n Date = 'date',\n Url = 'url',\n}\n\nconst flattenObjectsArray = (arr: ValidationConfig[]): ValidationConfig => {\n return arr.reduce((acc, obj) => {\n return { ...acc, [obj.name]: obj.value };\n }, {});\n};\n\n//The basic material for the functions responsible for validation was taken from https://github.com/magento/magento2/blob/2.4/app/code/Magento/Ui/view/base/web/js/lib/validation/rules.js\nexport const validateNumeric = (value: string): boolean => /^\\d+$/.test(value);\n\nexport const validateAlphanumWithSpaces = (value: string): boolean =>\n /^[a-zA-Z0-9\\s]+$/.test(value);\n\nexport const validateAlphanumeric = (value: string): boolean =>\n /^[a-zA-Z0-9]+$/.test(value);\n\nexport const validateAlpha = (value: string): boolean =>\n /^[a-zA-Z]+$/.test(value);\n\nexport const validateEmail = (value: string): boolean =>\n /^[a-z0-9,!\\#\\$%&'\\*\\+\\/=\\?\\^_`\\{\\|\\}~-]+(\\.[a-z0-9,!\\#\\$%&'\\*\\+\\/=\\?\\^_`\\{\\|\\}~-]+)*@([a-z0-9-]+\\.)+[a-z]{2,}$/i.test(\n value\n );\n\nexport const validateDate = (value: string): boolean =>\n /^\\d{4}-\\d{2}-\\d{2}$/.test(value) && !isNaN(Date.parse(value));\n\nexport const isDateWithinRange = (\n date: string,\n minTimestamp?: number,\n maxTimestamp?: number\n): boolean => {\n const dateTimestamp = new Date(date).getTime() / 1000;\n\n if (isNaN(dateTimestamp) || dateTimestamp < 0) {\n return false;\n }\n\n if (typeof minTimestamp !== 'undefined' && dateTimestamp < minTimestamp) {\n return false;\n }\n\n if (typeof maxTimestamp !== 'undefined' && dateTimestamp > maxTimestamp) {\n return false;\n }\n\n return true;\n};\n\nexport const convertTimestampToDate = (\n timestamp: string | undefined | null\n): string => {\n if (!timestamp || timestamp.trim() === '') return '';\n\n const parsedTimestamp = parseInt(timestamp, 10);\n\n if (!isNaN(parsedTimestamp)) {\n const date = new Date(parsedTimestamp * 1000);\n\n if (isNaN(date.getTime())) return '';\n\n return date.toISOString().split('T')[0];\n }\n\n const isoDate = new Date(timestamp);\n\n if (isNaN(isoDate.getTime())) return '';\n\n const month = parseInt(timestamp.split('-')[1], 10);\n\n if (month > 12 || month < 1) return '';\n\n return isoDate.toISOString().split('T')[0];\n};\n\nexport const validateUrl = (url: string) => {\n const urlPattern =\n /^(https?|ftp):\\/\\/(([A-Z0-9]([A-Z0-9_-]*[A-Z0-9]|))(\\.[A-Z0-9]([A-Z0-9_-]*[A-Z0-9]|))*)(:(\\d+))?(\\/[A-Z0-9~](([A-Z0-9_~-]|\\.)*[A-Z0-9~]|))*\\/?(.*)?$/i;\n return urlPattern.test(url);\n};\n\nexport const validateLength = (\n value: string,\n minLength: number,\n maxLength: number\n): boolean => {\n const length = value.length;\n return length >= minLength && length <= maxLength;\n};\n\nexport const validationFields = (\n value: string,\n configs: ValidationFieldsConfig,\n translations: TranslationList,\n errorsList: ErrorsList\n) => {\n const {\n requiredFieldError,\n lengthTextError,\n numericError,\n alphaNumWithSpacesError,\n alphaNumericError,\n alphaError,\n emailError,\n dateError,\n urlError,\n dateRangeError,\n dateMaxError,\n dateMinError,\n } = translations;\n\n const fieldName = configs?.customUpperCode as string;\n\n const defaultFields = { [fieldName]: '' };\n\n if (errorsList[fieldName]) {\n delete errorsList[fieldName];\n }\n\n if (configs?.required && (!value || value === 'false')) {\n return {\n [fieldName]: `${ValidationErrorTypes.REQUIRED_FIELD_ERROR}${ERROR_CONFIG_SEPARATOR}${requiredFieldError}`,\n };\n }\n\n if (!configs?.required && !value) {\n return defaultFields;\n }\n\n if (!configs?.validateRules?.length) return defaultFields;\n\n const validateRulesConfig = flattenObjectsArray(configs?.validateRules);\n\n const min = validateRulesConfig[ConfigEnumLength.MIN_TEXT_LENGTH] ?? 1;\n const max = validateRulesConfig[ConfigEnumLength.MAX_TEXT_LENGTH] ?? 255;\n const dateMin = validateRulesConfig[ConfigEnumLength.DATE_RANGE_MIN];\n const dateMax = validateRulesConfig[ConfigEnumLength.DATE_RANGE_MAX];\n\n if (!validateLength(value, +min, +max) && !(dateMin || dateMax)) {\n const parsedErrorMessage = lengthTextError\n .replace('{min}', min)\n .replace('{max}', max);\n\n return {\n [fieldName]: `${ValidationErrorTypes.LENGTH_TEXT_ERROR}${ERROR_CONFIG_SEPARATOR}${parsedErrorMessage}`,\n };\n }\n\n if (!isDateWithinRange(value, +dateMin, +dateMax) && (dateMin || dateMax)) {\n if (dateMin && dateMin) {\n const parsedErrorMessage = dateRangeError\n .replace('{min}', convertTimestampToDate(dateMin))\n .replace('{max}', convertTimestampToDate(dateMax));\n\n return {\n [fieldName]: `${ValidationErrorTypes.DATE_RANGE_ERROR}${ERROR_CONFIG_SEPARATOR}${parsedErrorMessage}`,\n };\n }\n\n if (typeof dateMin === 'undefined' && typeof dateMax !== 'undefined') {\n const parsedErrorMessage = dateMaxError.replace(\n '{max}',\n convertTimestampToDate(dateMax)\n );\n\n return {\n [fieldName]: `${ValidationErrorTypes.DATE_MAX_ERROR}${ERROR_CONFIG_SEPARATOR}${parsedErrorMessage}`,\n };\n }\n\n if (typeof dateMax === 'undefined' && typeof dateMin !== 'undefined') {\n const parsedErrorMessage = dateMinError.replace(\n '{min}',\n convertTimestampToDate(dateMin)\n );\n\n return {\n [fieldName]: `${ValidationErrorTypes.DATE_MIN_ERROR}${ERROR_CONFIG_SEPARATOR}${parsedErrorMessage}`,\n };\n }\n }\n\n const validationMap = {\n [InputValidation.Numeric]: {\n validate: validateNumeric,\n error: `${ValidationErrorTypes.NUMERIC_ERROR}${ERROR_CONFIG_SEPARATOR}${numericError}`,\n },\n [InputValidation.AlphanumWithSpaces]: {\n validate: validateAlphanumWithSpaces,\n error: `${ValidationErrorTypes.ALPHA_NUM_WITH_SPACES_ERROR}${ERROR_CONFIG_SEPARATOR}${alphaNumWithSpacesError}`,\n },\n [InputValidation.Alphanumeric]: {\n validate: validateAlphanumeric,\n error: `${ValidationErrorTypes.ALPHA_NUMERIC_ERROR}${ERROR_CONFIG_SEPARATOR}${alphaNumericError}`,\n },\n [InputValidation.Alpha]: {\n validate: validateAlpha,\n error: `${ValidationErrorTypes.ALPHA_ERROR}${ERROR_CONFIG_SEPARATOR}${alphaError}`,\n },\n [InputValidation.Email]: {\n validate: validateEmail,\n error: `${ValidationErrorTypes.EMAIL_ERROR}${ERROR_CONFIG_SEPARATOR}${emailError}`,\n },\n [InputValidation.Date]: {\n validate: validateDate,\n error: `${ValidationErrorTypes.DATE_ERROR}${ERROR_CONFIG_SEPARATOR}${dateError}`,\n },\n [InputValidation.Url]: {\n validate: validateUrl,\n error: `${ValidationErrorTypes.URL_ERROR}${ERROR_CONFIG_SEPARATOR}${urlError}`,\n },\n };\n\n const validation =\n validationMap[\n validateRulesConfig['INPUT_VALIDATION'] as keyof typeof validationMap\n ];\n\n if (\n validation &&\n !validation.validate(value) &&\n !errorsList[fieldName]?.length\n ) {\n return { [fieldName]: validation.error };\n }\n\n return defaultFields;\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 default (\n fieldsConfig: Array<{\n customUpperCode?: string;\n required?: boolean;\n defaultValue?: unknown;\n }>\n): {\n initialData: Record<string, unknown>;\n errorList: Record<string, string>;\n} => {\n return fieldsConfig.reduce(\n (\n acc: {\n initialData: Record<string, unknown>;\n errorList: Record<string, string>;\n },\n { customUpperCode, required, defaultValue }\n ) => {\n if (required && customUpperCode) {\n acc.initialData[customUpperCode] = defaultValue || '';\n acc.errorList[customUpperCode] = '';\n }\n\n return acc;\n },\n {\n initialData: {},\n errorList: {},\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\n/**\n * This file defines an array of class names that should be excluded\n * from specific init Recaptcha logic.\n *\n * The array contains class names representing elements that should be\n * ignored when certain operations, such as focusing or applying event\n * handlers, are executed.\n *\n * By checking if an element's class matches any class in this array,\n * you can easily bypass unwanted logic for those elements, ensuring\n * precise and predictable behavior in your application.\n *\n */\n\nexport const excludedFocusClasses = [\n 'auth-reset-password-form__buttons--signin',\n 'auth-sign-up-form-buttons--signin',\n 'auth-sign-in-form__button--forgot',\n 'auth-sign-in-form__button--signup',\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 { useCallback, useRef, useState, useEffect } from 'preact/hooks';\nimport { FieldsProps, useFormProps } from '@/auth/types';\nimport { initReCaptcha } from '@adobe-commerce/recaptcha';\nimport initializeFormDataAndErrors from '@/auth/lib/initializeFormDataAndErrors';\nimport {\n validationFields,\n ValidationFieldsConfig,\n} from '@/auth/lib/validationFields';\nimport { excludedFocusClasses } from '@/auth/configs/excludedFocusClasses';\nimport { useCustomTranslations } from '@/auth/hooks/useCustomTranslations';\n\nexport const useForm = ({ fieldsConfig, onSubmit }: useFormProps) => {\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 requiredFieldError: 'Auth.FormText.requiredFieldError.default',\n lengthTextError: 'Auth.FormText.lengthTextError.default',\n numericError: 'Auth.FormText.numericError.default',\n alphaNumWithSpacesError: 'Account.FormText.alphaNumWithSpacesError.default',\n alphaNumericError: 'Auth.FormText.alphaNumericError.default',\n alphaError: 'Auth.FormText.alphaError.default',\n emailError: 'Auth.FormText.emailError.default',\n dateError: 'Auth.FormText.dateError.default',\n dateRangeError: 'Auth.FormText.dateRangeError.default',\n dateMaxError: 'Auth.FormText.dateMaxError.default',\n dateMinError: 'Auth.FormText.dateMinError.default',\n urlError: 'Auth.FormText.urlError.default',\n });\n\n const formRef = useRef<HTMLFormElement>(null);\n const focusExecutedRef = useRef<boolean>(false);\n const [formData, setFormData] = useState<\n Record<string, string | boolean | number>\n >({});\n const [errors, setErrors] = useState<Record<string, string>>({});\n\n const handleValidationSubmit = useCallback(() => {\n let formValid = true;\n const errorsList = { ...errors };\n let firstErrorField: string | null = null;\n\n for (const [name, value] of Object.entries(formData)) {\n const fieldConfig = fieldsConfig?.find((config: FieldsProps) =>\n config?.customUpperCode?.includes(name)\n );\n\n const validationResult = validationFields(\n value.toString(),\n fieldConfig as ValidationFieldsConfig,\n translations,\n errorsList\n );\n\n if (validationResult[name]) {\n Object.assign(errorsList, validationResult);\n formValid = false;\n }\n\n if (!firstErrorField) {\n firstErrorField =\n Object.keys(errorsList).find((key) => errorsList[key]) ?? null;\n }\n }\n\n setErrors(errorsList);\n\n if (firstErrorField && formRef.current) {\n const input = formRef.current.elements.namedItem(\n firstErrorField\n ) as HTMLElement;\n input?.focus();\n }\n\n return formValid;\n }, [errors, fieldsConfig, formData, translations]);\n\n useEffect(() => {\n if (fieldsConfig?.length) {\n const { initialData, errorList } =\n initializeFormDataAndErrors(fieldsConfig);\n\n setFormData((prev) => ({\n ...(initialData as Record<string, string | number>),\n ...prev,\n }));\n\n setErrors(errorList);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify(fieldsConfig)]);\n\n const handleFocus = useCallback(async (event: FocusEvent) => {\n const target = event.target as HTMLInputElement;\n const isFocusable = !excludedFocusClasses.some((className) =>\n target.classList.contains(className)\n );\n\n if (!focusExecutedRef.current && isFocusable) {\n await initReCaptcha(0);\n focusExecutedRef.current = true;\n }\n }, []);\n\n const handleChange = useCallback(\n (event: Event) => {\n const { name, value, type, checked } = event?.target as HTMLInputElement;\n const fieldValue = type === 'checkbox' ? checked : value;\n\n setFormData((prev) => {\n const updatedFormData = {\n ...prev,\n [name]: fieldValue,\n };\n\n return updatedFormData as Record<string, string | number>;\n });\n\n const fieldConfig = fieldsConfig?.find((config: FieldsProps) =>\n config?.customUpperCode?.includes(name)\n );\n\n let errorsList = { ...errors };\n\n if (fieldConfig) {\n const validationResult = validationFields(\n fieldValue.toString(),\n fieldConfig as ValidationFieldsConfig,\n translations,\n errorsList\n );\n\n if (validationResult) {\n Object.assign(errorsList, validationResult);\n }\n\n setErrors(errorsList);\n }\n },\n [fieldsConfig, errors, translations]\n );\n\n const handleBlur = useCallback(\n (event: Event) => {\n const { name, value, type, checked } = event?.target as HTMLInputElement;\n const fieldValue = type === 'checkbox' ? checked : value;\n\n const fieldConfig = fieldsConfig?.find(\n (config: FieldsProps) => config.customUpperCode === name\n );\n\n if (fieldConfig) {\n const errorsList = { ...errors };\n\n const validationResult = validationFields(\n fieldValue.toString(),\n fieldConfig as ValidationFieldsConfig,\n translations,\n errorsList\n );\n\n if (validationResult) {\n Object.assign(errorsList, validationResult);\n }\n\n setErrors(errorsList);\n }\n },\n [errors, fieldsConfig, translations]\n );\n\n const handleSubmit = useCallback(\n (event: SubmitEvent) => {\n event.preventDefault();\n\n const formValid = handleValidationSubmit();\n\n onSubmit?.(event, formValid);\n },\n [handleValidationSubmit, onSubmit]\n );\n\n return {\n formData,\n errors,\n formRef,\n handleChange,\n handleBlur,\n handleSubmit,\n handleFocus,\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 enum FieldEnumList {\n BOOLEAN = 'BOOLEAN',\n DATE = 'DATE',\n DATETIME = 'DATETIME',\n DROPDOWN = 'DROPDOWN',\n FILE = 'FILE',\n GALLERY = 'GALLERY',\n HIDDEN = 'HIDDEN',\n IMAGE = 'IMAGE',\n MEDIA_IMAGE = 'MEDIA_IMAGE',\n MULTILINE = 'MULTILINE',\n MULTISELECT = 'MULTISELECT',\n PRICE = 'PRICE',\n SELECT = 'SELECT',\n TEXT = 'TEXT',\n TEXTAREA = 'TEXTAREA',\n UNDEFINED = 'UNDEFINED',\n VISUAL = 'VISUAL',\n WEIGHT = 'WEIGHT',\n EMPTY = '',\n}\n\nexport interface AttributesFormItemsProps {\n code?: string;\n name?: string;\n id?: string;\n defaultValue?: string | boolean | number;\n entityType?: string;\n className?: string;\n fieldType?: FieldEnumList;\n multilineCount: number;\n required?: boolean;\n unique?: boolean;\n label?: string;\n orderNumber: number;\n options?: { is_default: boolean; label: string; value: string }[];\n hidden?: boolean;\n customUpperCode: string;\n}\n\nexport interface AttributesFormModel extends AttributesFormItemsProps {}\n","import { ERROR_CONFIG_SEPARATOR } from '@/auth/types';\n\ntype ExtractErrorKeyAndMessage = {\n errorKey: string;\n defaultErrorMessage: string;\n};\n\nexport const extractErrorKeyAndMessage = (\n errorConfig: string\n): ExtractErrorKeyAndMessage => {\n const fallbackData = { errorKey: '', defaultErrorMessage: '' };\n\n if (!errorConfig) return fallbackData;\n\n const index = errorConfig.indexOf(ERROR_CONFIG_SEPARATOR);\n\n if (index === -1) return fallbackData;\n\n return {\n errorKey: errorConfig.substring(0, index).trim(),\n defaultErrorMessage: errorConfig\n .substring(index + ERROR_CONFIG_SEPARATOR.length)\n .trim(),\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 { FieldElementProps } from '@/auth/types';\nimport { Field } from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { memo } from 'preact/compat';\nimport { extractErrorKeyAndMessage } from '@/auth/lib/extractErrorKeyAndMessage';\nimport { VNode } from 'preact';\n\nexport const FieldElement = memo(\n ({\n item,\n errorConfig,\n className,\n itemClassName,\n loading,\n children,\n }: FieldElementProps) => {\n const { errorKey, defaultErrorMessage } =\n extractErrorKeyAndMessage(errorConfig);\n const customErrorMessage = useText(\n `Auth.FormText.${errorKey}.${item.code}`\n )[item.code];\n\n let errorMessage = '';\n\n // This check indicates that validation identified an error\n if (defaultErrorMessage.length) {\n errorMessage = customErrorMessage || defaultErrorMessage;\n }\n\n return (\n <Field\n key={item.id}\n error={errorMessage}\n className={classes([\n itemClassName,\n `${itemClassName}--${item.id}`,\n [`${itemClassName}--${item.id}-hidden`, item.isHidden],\n item.className,\n ])}\n data-testid={`${className}--${item.id}`}\n disabled={loading || item.disabled}\n >\n {children as VNode<{}>}\n </Field>\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 { FormElementProps } from '@/auth/types';\nimport { Input } from '@adobe-commerce/elsie/components';\nimport { memo } from 'preact/compat';\nimport { FieldElement } from './FieldElement';\n\nexport const InputElement = memo(\n ({\n item,\n valueMessage,\n errorConfig,\n onBlur,\n onChange,\n onFocus,\n className,\n itemClassName,\n loading,\n }: FormElementProps) => {\n return (\n <FieldElement\n item={item}\n errorConfig={errorConfig}\n className={className}\n itemClassName={itemClassName}\n loading={loading}\n >\n <Input\n type=\"text\"\n name={item.customUpperCode}\n value={valueMessage ?? item.defaultValue}\n placeholder={item.label}\n floatingLabel={`${item.label} ${item.required ? '*' : ''}`}\n autocomplete={item.autocomplete}\n onBlur={onBlur}\n onChange={onChange}\n onFocus={onFocus}\n />\n </FieldElement>\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 { FormElementProps } from '@/auth/types';\nimport { Picker } from '@adobe-commerce/elsie/components';\nimport { memo } from 'preact/compat';\nimport { FieldElement } from './FieldElement';\n\nexport const SelectElement = memo(\n ({\n item,\n valueMessage,\n errorConfig,\n onBlur,\n onChange,\n className,\n itemClassName,\n loading,\n }: FormElementProps) => {\n const defaultSelectValue = item.options.find(\n (option: { isDefault: boolean; value: string; text: string }) =>\n option.isDefault\n )?.value;\n\n return (\n <FieldElement\n item={item}\n errorConfig={errorConfig}\n className={className}\n itemClassName={itemClassName}\n loading={loading}\n >\n <Picker\n name={item.customUpperCode}\n floatingLabel={`${item.label} ${item.required ? '*' : ''}`}\n placeholder={item.label}\n aria-label={item.label}\n options={item.options}\n onBlur={onBlur}\n handleSelect={onChange}\n defaultValue={defaultSelectValue ?? valueMessage ?? item.defaultValue}\n value={defaultSelectValue ?? valueMessage ?? item.defaultValue}\n />\n </FieldElement>\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 { FormElementProps } from '@/auth/types';\nimport { InputDate } from '@adobe-commerce/elsie/components';\nimport { memo } from 'preact/compat';\nimport { FieldElement } from './FieldElement';\n\nexport const InputDateElement = memo(\n ({\n item,\n valueMessage,\n errorConfig,\n onBlur,\n onChange,\n className,\n itemClassName,\n loading,\n }: FormElementProps) => {\n return (\n <FieldElement\n item={item}\n errorConfig={errorConfig}\n className={className}\n itemClassName={itemClassName}\n loading={loading}\n >\n <InputDate\n // @ts-ignore\n type=\"text\"\n name={item.customUpperCode}\n value={valueMessage || item.defaultValue}\n placeholder={item.label}\n floatingLabel={`${item.label} ${item.required ? '*' : ''}`}\n onBlur={onBlur}\n onChange={onChange}\n disabled={loading || item.disabled}\n />\n </FieldElement>\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 { FormElementProps } from '@/auth/types';\nimport { Checkbox } from '@adobe-commerce/elsie/components';\nimport { memo } from 'preact/compat';\nimport { FieldElement } from './FieldElement';\n\nexport const InputCheckBoxElement = memo(\n ({\n item,\n valueMessage,\n errorConfig,\n onBlur,\n onChange,\n className,\n itemClassName,\n loading,\n }: FormElementProps) => {\n return (\n <FieldElement\n item={item}\n errorConfig={errorConfig}\n className={className}\n itemClassName={itemClassName}\n loading={loading}\n >\n <Checkbox\n name={item.customUpperCode}\n checked={valueMessage || item.defaultValue}\n placeholder={item.label}\n label={`${item.label} ${item.required ? '*' : ''}`}\n onBlur={onBlur}\n onChange={onChange}\n />\n </FieldElement>\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 { FormElementProps } from '@/auth/types';\nimport { TextArea } from '@adobe-commerce/elsie/components';\nimport { memo } from 'preact/compat';\nimport { FieldElement } from './FieldElement';\n\nexport const TextAreaElement = memo(\n ({\n item,\n valueMessage,\n errorConfig,\n onBlur,\n onChange,\n className,\n itemClassName,\n loading,\n }: FormElementProps) => {\n return (\n <FieldElement\n item={item}\n errorConfig={errorConfig}\n className={className}\n itemClassName={itemClassName}\n loading={loading}\n >\n <TextArea\n name={item.customUpperCode}\n value={valueMessage ?? item.defaultValue}\n label={`${item.label} ${item.required ? '*' : ''}`}\n onBlur={onBlur}\n onChange={onChange}\n />\n </FieldElement>\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 { extractErrorKeyAndMessage } from '@/auth/lib/extractErrorKeyAndMessage';\nimport { FormSlotProps } from '@/auth/types';\nimport { useText } from 'preact-i18n';\nimport { Slot } from '@adobe-commerce/elsie/lib';\n\nexport const FormSlot = ({\n slots,\n item,\n handleOnChange,\n handleOnBlur,\n handleOnFocus,\n errorConfig,\n errors,\n}: FormSlotProps) => {\n const { errorKey, defaultErrorMessage } =\n extractErrorKeyAndMessage(errorConfig);\n const customErrorMessage = useText(`Auth.FormText.${errorKey}.${item.code}`)[\n item.code\n ];\n\n let errorMessage = '';\n\n // This check indicates that validation identified an error\n if (defaultErrorMessage.length) {\n errorMessage = customErrorMessage || defaultErrorMessage;\n }\n\n const contextValue = {\n inputName: item.customUpperCode,\n handleOnChange,\n handleOnBlur,\n handleOnFocus,\n errorMessage,\n errors,\n config: item,\n };\n\n return (\n <Slot\n data-testid={`signUpFormInput_${item.code}`}\n name={`SignUpFormInput_${item.code}`}\n slot={slots?.[`SignUpFormInput_${item.code}`]}\n context={contextValue}\n key={item.id}\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 { FieldsProps, FormProps } from '@/auth/types';\nimport { useForm } from '@/auth/hooks/components/useForm';\nimport { FieldEnumList } from '@/auth/data/models';\nimport { Slot } from '@adobe-commerce/elsie/lib';\nimport {\n SelectElement,\n InputElement,\n InputDateElement,\n InputCheckBoxElement,\n TextAreaElement,\n FormSlot,\n} from './Elements';\nimport { memo } from 'preact/compat';\n\nexport const Form = memo(\n ({\n slots,\n name,\n loading,\n children,\n className = 'defaultForm',\n fieldsConfig = [],\n onSubmit,\n formSlot,\n ...props\n }: FormProps) => {\n const {\n formData,\n errors,\n formRef,\n handleChange,\n handleBlur,\n handleSubmit,\n handleFocus,\n } = useForm({\n onSubmit,\n fieldsConfig,\n });\n\n const itemClassName = `${className}__field`;\n\n const formContent = (\n <>\n {fieldsConfig.map((item: FieldsProps) => {\n const errorConfig = errors?.[item.customUpperCode];\n const valueMessage = formData?.[item.customUpperCode] as string;\n const isSlot = !!slots?.[`SignUpFormInput_${item.code}`];\n\n const renderSlot = (\n <FormSlot\n slots={slots}\n item={item}\n handleOnChange={handleChange}\n handleOnBlur={handleBlur}\n handleOnFocus={handleFocus}\n errorConfig={errorConfig}\n errors={errors}\n />\n );\n\n switch (item.fieldType) {\n case FieldEnumList.TEXT: {\n if (isSlot) return renderSlot;\n\n if (item.options.length) {\n return (\n <SelectElement\n item={item}\n valueMessage={valueMessage}\n errorConfig={errorConfig}\n onBlur={handleBlur}\n onChange={handleChange}\n onFocus={handleFocus}\n itemClassName={itemClassName}\n className={className}\n loading={loading}\n />\n );\n }\n\n return (\n <InputElement\n item={item}\n valueMessage={valueMessage}\n errorConfig={errorConfig}\n onBlur={handleBlur}\n onChange={handleChange}\n onFocus={handleFocus}\n itemClassName={itemClassName}\n className={className}\n loading={loading}\n />\n );\n }\n\n case FieldEnumList.MULTILINE: {\n if (isSlot) return renderSlot;\n\n return (\n <InputElement\n item={item}\n valueMessage={valueMessage}\n errorConfig={errorConfig}\n onBlur={handleBlur}\n onChange={handleChange}\n onFocus={handleFocus}\n itemClassName={itemClassName}\n className={className}\n loading={loading}\n />\n );\n }\n\n case FieldEnumList.SELECT: {\n if (isSlot) return renderSlot;\n\n return (\n <SelectElement\n item={item}\n valueMessage={valueMessage}\n errorConfig={errorConfig}\n onBlur={handleBlur}\n onChange={handleChange}\n itemClassName={itemClassName}\n className={className}\n loading={loading}\n />\n );\n }\n\n case FieldEnumList.DATE: {\n if (isSlot) return renderSlot;\n\n return (\n <InputDateElement\n item={item}\n valueMessage={valueMessage}\n errorConfig={errorConfig}\n onBlur={handleBlur}\n onChange={handleChange}\n itemClassName={itemClassName}\n className={className}\n loading={loading}\n />\n );\n }\n\n case FieldEnumList.BOOLEAN: {\n if (isSlot) return renderSlot;\n\n return (\n <InputCheckBoxElement\n item={item}\n valueMessage={valueMessage}\n errorConfig={errorConfig}\n onBlur={handleBlur}\n onChange={handleChange}\n itemClassName={itemClassName}\n className={className}\n loading={loading}\n />\n );\n }\n\n case FieldEnumList.TEXTAREA: {\n if (isSlot) return renderSlot;\n\n return (\n <TextAreaElement\n item={item}\n valueMessage={valueMessage}\n errorConfig={errorConfig}\n onBlur={handleBlur}\n onChange={handleChange}\n itemClassName={itemClassName}\n className={className}\n loading={loading}\n />\n );\n }\n\n default:\n return null;\n }\n })}\n {children}\n </>\n );\n\n const slotContext = {\n ...(formSlot?.context ?? {}),\n __formContentKey: [\n fieldsConfig.map((f: FieldsProps) => f.id || f.code).join(','),\n JSON.stringify(errors),\n JSON.stringify(formData),\n ].join('|'),\n };\n\n return (\n <form\n onSubmit={handleSubmit}\n name={name}\n ref={formRef}\n onFocus={handleFocus}\n {...props}\n >\n {formSlot ? (\n <Slot\n name={formSlot.name}\n slot={formSlot.slot}\n context={slotContext}\n className={className}\n data-testid={formSlot.dataTestId}\n >\n {formContent}\n </Slot>\n ) : formContent }\n </form>\n );\n }\n);\n"],"names":["ValidationErrorTypes","ERROR_CONFIG_SEPARATOR","useCustomTranslations","defaultKeys","translations","useText","keysToUpdate","key","value","translationKeys","acc","updatedTranslations","flattenObjectsArray","arr","obj","validateNumeric","validateAlphanumWithSpaces","validateAlphanumeric","validateAlpha","validateEmail","validateDate","isDateWithinRange","date","minTimestamp","maxTimestamp","dateTimestamp","convertTimestampToDate","timestamp","parsedTimestamp","isoDate","month","validateUrl","url","validateLength","minLength","maxLength","length","validationFields","configs","errorsList","requiredFieldError","lengthTextError","numericError","alphaNumWithSpacesError","alphaNumericError","alphaError","emailError","dateError","urlError","dateRangeError","dateMaxError","dateMinError","fieldName","defaultFields","_a","validateRulesConfig","min","max","dateMin","dateMax","parsedErrorMessage","validation","_b","initializeFormDataAndErrors","fieldsConfig","customUpperCode","required","defaultValue","excludedFocusClasses","useForm","onSubmit","formRef","useRef","focusExecutedRef","formData","setFormData","useState","errors","setErrors","handleValidationSubmit","useCallback","formValid","firstErrorField","name","fieldConfig","config","validationResult","input","useEffect","initialData","errorList","prev","handleFocus","event","target","isFocusable","className","initReCaptcha","handleChange","type","checked","fieldValue","handleBlur","handleSubmit","FieldEnumList","extractErrorKeyAndMessage","errorConfig","fallbackData","index","FieldElement","memo","item","itemClassName","loading","children","errorKey","defaultErrorMessage","customErrorMessage","errorMessage","jsx","Field","classes","InputElement","valueMessage","onBlur","onChange","onFocus","Input","SelectElement","defaultSelectValue","option","Picker","InputDateElement","InputDate","InputCheckBoxElement","Checkbox","TextAreaElement","TextArea","FormSlot","slots","handleOnChange","handleOnBlur","handleOnFocus","contextValue","Slot","Form","formSlot","props","formContent","jsxs","Fragment","isSlot","renderSlot","slotContext","f"],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/*! Copyright 2026 Adobe
|
|
2
|
+
All Rights Reserved. */
|
|
3
|
+
import{jsx as a,jsxs as v}from"@dropins/tools/preact-jsx-runtime.js";import{Slot as O,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 Ne,a as Ee}from"./createCustomerAddress.js";import{useState as p,useEffect as Ce,useCallback as A,useMemo as Le}from"@dropins/tools/preact-hooks.js";import{s as ce,b as xe}from"./simplifyTransformAttributesForm.js";import{v as Me,u as Te,a as Ue}from"./usePasswordValidationMessage.js";import{a as Se}from"./getCustomerToken.js";import{p as ye,E as Ae}from"./acdl.js";import{c as J,g as ve,u as qe,B as ue}from"./Button.js";import{c as Be}from"./transform-attributes-form.js";import{f as de,E as ke}from"./focusOnEmptyPasswordField.js";import{Header as Ie,InLineAlert as Ke,InputPassword as le,Field as ge,Checkbox as pe}from"@dropins/tools/components.js";import{u as je,F as Ge}from"./RemoteShoppingAssistanceConsent.js";import{S as He}from"./SkeletonLoader.js";const he=(u,r)=>r!=null&&r.length?u.map(e=>{var m;const s=(m=r.find(({code:n})=>n===e.code))==null?void 0:m.defaultValue;return s?{...e,defaultValue:s}:e}):u,$e=({inputsDefaultValueSet:u,fieldsConfigForApiVersion1:r,apiVersion2:e})=>{const[s,m]=p([]);return Ce(()=>{(async()=>{if(e){const t=await Pe("customer_account_create");if(t!=null&&t.length)if(u!=null&&u.length){const f=he(t,u);m(f)}else m(t)}else{const t=ce(xe),f=ce(r),N=he(t,u);m(r&&r.length?f:N)}})()},[e,r,u]),{fieldsListConfigs:s.map(n=>({...n,...n.code==="email"?{autocomplete:"username"}:{}}))}},Oe=(u,r)=>{const e=["dob","email","firstname","gender","lastname","middlename","password","prefix","suffix","taxvat","allow_remote_shopping_assistance"],s=Be(u,"snakeCase",{firstName:"firstname",lastName:"lastname"});if(!r)return{...s,...s!=null&&s.gender?{gender:Number(s==null?void 0:s.gender)}:{}};const m={},n=[];return Object.keys(s).forEach(t=>{e.includes(t)?t.includes("gender")?m[t]=Number(s[t]):t==="allow_remote_shopping_assistance"?m[t]=s[t]==="true":m[t]=s[t]:n.push({attribute_code:t,value:s[t]})}),n.length>0&&(m.custom_attributes=n),m},Ve=({requireRetypePassword:u,addressesData:r,translations:e,isEmailConfirmationRequired:s,apiVersion2:m=!0,passwordConfigs:n,isAutoSignInEnabled:t,routeRedirectOnSignIn:f,routeSignIn:N,onErrorCallback:C,onSuccessCallback:l,setActiveComponent:_,handleSetInLineAlertProps:b,routeRedirectOnEmailConfirmationClose:L})=>{const[o,d]=p(!1),[c,V]=p(""),[x,g]=p(""),[U,q]=p(""),[B,k]=p(!1),[W,I]=p({userName:"",status:!1}),[h,K]=p(""),[j,Q]=p(!1),[G,E]=p(!1),[X,Y]=p(!0),Z=A(i=>{const w=i.target.value;d(!w.length),w.length&&c.length&&w!==c&&g(e.passwordMismatch)},[c,e.passwordMismatch]),z=A(i=>{const w=i.target.value;g(w.length?"":e.requiredFieldError),w.length&&h.length&&w!==h&&g(e.passwordMismatch)},[h,e.passwordMismatch,e.requiredFieldError]),R=A(i=>{V(i),g(i?h===i?"":e.passwordMismatch:e.requiredFieldError)},[e,h]),D=A(({target:i})=>{Y(i.checked)},[]),ee=A(()=>{if(J(_)){_("signInForm");return}J(N)&&(window.location.href=N())},[_,N]),te=A(i=>{K(i),d(!i.length),i===c&&g("")},[c]),H=A(()=>{b(),K(""),J(L)?window.location.href=L():(k(!1),_==null||_("signInForm"))},[b,L,_]),P=()=>{Q(!0),E(!1)},re=(i,w)=>{const oe=h.length&&c.length,$=h!==c,M=()=>{d(!h.length),c||g(e.requiredFieldError),oe&&$&&g(e.passwordMismatch)},S=()=>{g(c.length?e.passwordMismatch:e.requiredFieldError),de(i,h,c)};return w?u&&(x.length||$)?(P(),S(),!0):(de(i,h,""),M(),!1):(P(),M(),!0)};return{showPasswordErrorMessage:o,confirmPassword:c,confirmPasswordMessage:x,isKeepMeLogged:X,userEmail:U,showEmailConfirmationForm:B,isSuccessful:W,isClickSubmit:j,signUpPasswordValue:h,isLoading:G,onSubmitSignUp:async(i,w)=>{var ie,ae,ne;if(b(),g(""),E(!0),re(i,w))return;const{confirmPasswordField:oe,...$}=ve(i.target),{email:M,password:S}=$,we=(n==null?void 0:n.requiredCharacterClasses)||0,Fe=(n==null?void 0:n.minLength)||1;if(!Me(S,we)||Fe>(S==null?void 0:S.length)){P();return}const _e=Oe({...$},m),T=await Ne(_e,m);if((ie=T==null?void 0:T.errors)!=null&&ie.length){const{errors:y}=T;b==null||b({type:"error",text:(ae=y[0])==null?void 0:ae.message}),C==null||C(y),q(M)}else{const y=T==null?void 0:T.firstName;if(ye(Ae.CREATE_ACCOUNT_EVENT,{...T}),s||!t){if(l==null||l({userName:y,userEmail:M,status:!0}),s){(ne=i.target)==null||ne.reset(),K(""),k(!0),q(M),E(!1);return}if(!t){E(!1),I({userName:y,status:!0});return}}const F=await Se({email:M,password:S,translations:e,handleSetInLineAlertProps:b,onErrorCallback:C});if(F!=null&&F.userName){if(r!=null&&r.length)for(const me of r)try{await Ee(me)}catch(be){console.error(e.failedCreateCustomerAddress,me,be)}l==null||l({userName:F==null?void 0:F.userName,userEmail:F==null?void 0:F.userEmail,status:!0}),J(f)?window.location.href=f():I({userName:F==null?void 0:F.userName,status:!0})}else l==null||l({userName:y,userEmail:M,status:!0}),I({userName:y,status:!0})}E(!1)},signInButton:ee,handleSetSignUpPasswordValue:te,onKeepMeLoggedChange:D,handleHideEmailConfirmationForm:H,handleConfirmPasswordChange:R,onBlurPassword:Z,onBlurConfirmPassword:z}},mt=({requireRetypePassword:u=!1,addressesData:r,formSize:e="default",inputsDefaultValueSet:s,fieldsConfigForApiVersion1:m,apiVersion2:n=!0,isAutoSignInEnabled:t=!0,hideCloseBtnOnEmailConfirmation:f=!1,routeRedirectOnEmailConfirmationClose:N,routeRedirectOnSignIn:C,routeSignIn:l,onErrorCallback:_,onSuccessCallback:b,setActiveComponent:L,slots:o})=>{const d=je({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",shoppingAssistanceCheckboxTitle:"Auth.SignUpForm.shoppingAssistanceCheckboxTitle",shoppingAssistanceCheckboxTooltip:"Auth.SignUpForm.shoppingAssistanceCheckboxTooltip"}),{passwordConfigs:c,isEmailConfirmationRequired:V,remoteShoppingAssistanceConfigs:x}=Te(),{fieldsListConfigs:g}=$e({fieldsConfigForApiVersion1:m,apiVersion2:n,inputsDefaultValueSet:s}),{inLineAlertProps:U,handleSetInLineAlertProps:q}=qe(),{showPasswordErrorMessage:B,confirmPassword:k,confirmPasswordMessage:W,isKeepMeLogged:I,userEmail:h,showEmailConfirmationForm:K,isSuccessful:j,isClickSubmit:Q,signUpPasswordValue:G,isLoading:E,onSubmitSignUp:X,signInButton:Y,handleSetSignUpPasswordValue:Z,onKeepMeLoggedChange:z,handleHideEmailConfirmationForm:R,handleConfirmPasswordChange:D,onBlurPassword:ee,onBlurConfirmPassword:te}=Ve({requireRetypePassword:u,addressesData:r,translations:d,isEmailConfirmationRequired:V,apiVersion2:n,passwordConfigs:c,isAutoSignInEnabled:t,routeRedirectOnSignIn:C,routeSignIn:l,onErrorCallback:_,onSuccessCallback:b,setActiveComponent:L,handleSetInLineAlertProps:q,routeRedirectOnEmailConfirmationClose:N}),{isValidUniqueSymbols:H,defaultLengthMessage:P}=Ue({password:G,isClickSubmit:Q,passwordConfigs:c}),re=Le(()=>B?d.requiredFieldError:H==="error"||(P==null?void 0:P.status)==="error"?" ":"",[P==null?void 0:P.status,H,B,d.requiredFieldError]),se=!V&&(r==null?void 0:r.length);if(!g.length&&n)return a("div",{className:`auth-sign-up-form auth-sign-up-form--${e} skeleton-loader`,"data-testid":"SignUpForm",children:a(He,{activeSkeleton:"signUpForm"})});if(j.status&&(o!=null&&o.SuccessNotification))return a(O,{"data-testid":"successNotificationTestId",name:"SuccessNotification",slot:o==null?void 0:o.SuccessNotification,context:{isSuccessful:j}});if(K)return a(ke,{formSize:e,userEmail:h,inLineAlertProps:U,hideCloseBtnOnEmailConfirmation:f,handleSetInLineAlertProps:q,onPrimaryButtonClick:R});const i={userEmail:h,signUpPasswordValue:G,confirmPassword:k,showPasswordErrorMessage:B,confirmPasswordMessage:W,isLoading:E,isSuccessful:j};return v("div",{className:fe(["auth-sign-up-form",`auth-sign-up-form--${e}`]),"data-testid":"SignUpForm",children:[a(O,{name:"Title","data-testid":"title",slot:o==null?void 0:o.Title,context:{...i},children:a(Ie,{title:d.title,divider:!1,className:"auth-sign-up-form__title"})}),U.text?a(Ke,{className:"auth-sign-up-form__notification",type:U.type,variant:"secondary",heading:U.text,icon:U.icon}):null,v(Ge,{onSubmit:X,className:"auth-sign-up-form__form",loading:E,name:"signUp_form",fieldsConfig:g,slots:o,formSlot:{name:"Form",slot:o==null?void 0:o.Form,context:i,dataTestId:"form"},children:[v(le,{validateLengthConfig:P,className:"auth-sign-up-form__form__field",autoComplete:"current-password",name:"password",minLength:c==null?void 0:c.minLength,errorMessage:re,defaultValue:G,uniqueSymbolsStatus:H,requiredCharacterClasses:c==null?void 0:c.requiredCharacterClasses,onValue:Z,placeholder:d.placeholder,floatingLabel:d.floatingLabel,onBlur:ee,children:[u?a("div",{className:"auth-sign-up-form__form__confirm-wrapper",children:a(le,{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:k,onValue:D,onBlur:te})}):null,se?a("div",{className:"auth-sign-up-form__automatic-login","data-testid":"automaticLogin",children:a(ge,{children:a(pe,{name:"",placeholder:d.keepMeLoggedText,label:d.keepMeLoggedText,checked:I,onChange:z})})}):null]}),x!=null&&x.shoppingAssistanceEnabled?a(O,{name:"RemoteShoppingAssistanceConsent","data-testid":"remoteShoppingAssistanceConsent",slot:o==null?void 0:o.RemoteShoppingAssistanceConsent,children:a(We,{label:x.shoppingAssistanceCheckboxTitle||d.shoppingAssistanceCheckboxTitle,tooltip:x.shoppingAssistanceCheckboxTooltip||d.shoppingAssistanceCheckboxTooltip})},"remoteShoppingAssistanceConsent"):null,a(O,{name:"PrivacyPolicyConsent","data-testid":"privacyPolicyConsent",slot:o==null?void 0:o.PrivacyPolicyConsent},"privacyPolicyConsent"),v(O,{name:"Buttons",className:"auth-sign-up-form-buttons","data-testid":"buttons",slot:o==null?void 0:o.Buttons,context:{...i},children:[a(ue,{className:"auth-sign-up-form-buttons--signin",type:"button",variant:"tertiary",style:{padding:0},buttonText:d.buttonSecondary,enableLoader:!1,onClick:Y}),a(ue,{type:"submit",buttonText:d.buttonPrimary,variant:"primary",enableLoader:E})]})]}),a("div",{id:"createCustomerV2"})]})},We=({label:u="",tooltip:r="",name:e="allowRemoteShoppingAssistance",defaultChecked:s=!1,onChange:m,className:n=""})=>{const[t,f]=p(!1),[N,C]=p(s),l=`${e}-tooltip`,_=({currentTarget:b})=>{const L=b.checked;C(L),m==null||m(L)};return a("div",{className:fe(["remote-shopping-assistance-consent",n]),children:v("div",{className:"remote-shopping-assistance-consent__wrapper",children:[a(ge,{children:a(pe,{name:e,value:"true",placeholder:u,label:u,checked:N,onChange:_})}),r?v("div",{className:"remote-shopping-assistance-consent__info-container",children:[a("button",{type:"button",className:"remote-shopping-assistance-consent__info-icon",onMouseEnter:()=>f(!0),onMouseLeave:()=>f(!1),onFocusIn:()=>f(!0),onFocusOut:()=>f(!1),"aria-describedby":t?l:void 0,"aria-label":r,children:"?"}),t?v("span",{className:"remote-shopping-assistance-consent__tooltip",id:l,role:"tooltip",children:[r,a("span",{className:"remote-shopping-assistance-consent__tooltip-arrow"})]}):null]}):null]})})};export{mt as S};
|
|
4
|
+
//# sourceMappingURL=RemoteShoppingAssistanceConsent2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RemoteShoppingAssistanceConsent2.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","/@dropins/storefront-auth/src/components/RemoteShoppingAssistanceConsent/RemoteShoppingAssistanceConsent.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 2026 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 'allow_remote_shopping_assistance',\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 if (key.includes('gender')) {\n result[key] = Number(newInputs[key]);\n } else if (key === 'allow_remote_shopping_assistance') {\n // Convert string \"true\" from checkbox to boolean\n result[key] = newInputs[key] === 'true';\n } else {\n result[key] = newInputs[key];\n }\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 2026 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 {\n Form,\n Button,\n EmailConfirmationForm,\n RemoteShoppingAssistanceConsent,\n} 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 shoppingAssistanceCheckboxTitle:\n 'Auth.SignUpForm.shoppingAssistanceCheckboxTitle',\n shoppingAssistanceCheckboxTooltip:\n 'Auth.SignUpForm.shoppingAssistanceCheckboxTooltip',\n });\n\n const {\n passwordConfigs,\n isEmailConfirmationRequired,\n remoteShoppingAssistanceConfigs,\n } = 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 userEmail,\n signUpPasswordValue,\n confirmPassword,\n showPasswordErrorMessage,\n confirmPasswordMessage,\n isLoading,\n isSuccessful,\n };\n\n return (\n <div\n className={classes([\n 'auth-sign-up-form',\n `auth-sign-up-form--${formSize}`,\n ])}\n data-testid=\"SignUpForm\"\n >\n <Slot\n name=\"Title\"\n data-testid=\"title\"\n slot={slots?.Title}\n context={{ ...slotContext }}\n >\n <Header\n title={translations.title}\n divider={false}\n className=\"auth-sign-up-form__title\"\n />\n </Slot>\n {inLineAlertProps.text ? (\n <InLineAlert\n className=\"auth-sign-up-form__notification\"\n type={inLineAlertProps.type}\n variant=\"secondary\"\n heading={inLineAlertProps.text}\n icon={inLineAlertProps.icon}\n />\n ) : null}\n <Form\n onSubmit={onSubmitSignUp}\n className=\"auth-sign-up-form__form\"\n loading={isLoading}\n name=\"signUp_form\"\n fieldsConfig={fieldsListConfigs}\n slots={slots}\n formSlot={{\n name: 'Form',\n slot: slots?.Form,\n context: slotContext,\n dataTestId: 'form',\n }}\n >\n <InputPassword\n validateLengthConfig={defaultLengthMessage}\n className=\"auth-sign-up-form__form__field\"\n autoComplete={'current-password'}\n name={'password'}\n minLength={passwordConfigs?.minLength}\n errorMessage={validationPasswordMessage}\n defaultValue={signUpPasswordValue}\n uniqueSymbolsStatus={isValidUniqueSymbols}\n requiredCharacterClasses={passwordConfigs?.requiredCharacterClasses}\n onValue={handleSetSignUpPasswordValue}\n placeholder={translations.placeholder}\n floatingLabel={translations.floatingLabel}\n onBlur={onBlurPassword}\n >\n {requireRetypePassword ? (\n <div className=\"auth-sign-up-form__form__confirm-wrapper\">\n <InputPassword\n className=\"auth-sign-up-form__form__field auth-sign-up-form__form__field--confirm-password\"\n autoComplete=\"confirmPassword\"\n name=\"confirmPasswordField\"\n placeholder={translations.confirmPasswordPlaceholder}\n floatingLabel={translations.confirmPasswordFloatingLabel}\n errorMessage={confirmPasswordMessage}\n defaultValue={confirmPassword}\n onValue={handleConfirmPasswordChange}\n onBlur={onBlurConfirmPassword}\n />\n </div>\n ) : null}\n\n {shouldShowPersistLoginCheckbox ? (\n <div\n className={'auth-sign-up-form__automatic-login'}\n data-testid=\"automaticLogin\"\n >\n <Field>\n <Checkbox\n name=\"\"\n placeholder={translations.keepMeLoggedText}\n label={translations.keepMeLoggedText}\n checked={isKeepMeLogged}\n onChange={onKeepMeLoggedChange}\n />\n </Field>\n </div>\n ) : null}\n </InputPassword>\n\n {remoteShoppingAssistanceConfigs?.shoppingAssistanceEnabled ? (\n <Slot\n name=\"RemoteShoppingAssistanceConsent\"\n data-testid={'remoteShoppingAssistanceConsent'}\n slot={slots?.RemoteShoppingAssistanceConsent}\n key={'remoteShoppingAssistanceConsent'}\n >\n <RemoteShoppingAssistanceConsent\n label={\n remoteShoppingAssistanceConfigs.shoppingAssistanceCheckboxTitle ||\n translations.shoppingAssistanceCheckboxTitle\n }\n tooltip={\n remoteShoppingAssistanceConfigs.shoppingAssistanceCheckboxTooltip ||\n translations.shoppingAssistanceCheckboxTooltip\n }\n />\n </Slot>\n ) : null}\n\n <Slot\n name=\"PrivacyPolicyConsent\"\n data-testid={'privacyPolicyConsent'}\n slot={slots?.PrivacyPolicyConsent}\n key={'privacyPolicyConsent'}\n />\n\n <Slot\n name=\"Buttons\"\n className=\"auth-sign-up-form-buttons\"\n data-testid=\"buttons\"\n slot={slots?.Buttons}\n context={{ ...slotContext }}\n >\n <Button\n className=\"auth-sign-up-form-buttons--signin\"\n type=\"button\"\n variant=\"tertiary\"\n style={{ padding: 0 }}\n buttonText={translations.buttonSecondary}\n enableLoader={false}\n onClick={signInButton}\n />\n <Button\n type=\"submit\"\n buttonText={translations.buttonPrimary}\n variant=\"primary\"\n enableLoader={isLoading}\n />\n </Slot>\n </Form>\n <div id=\"createCustomerV2\" />\n </div>\n );\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2026 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, JSX } from 'preact';\nimport { useState } from 'preact/hooks';\nimport '@/auth/components/RemoteShoppingAssistanceConsent/RemoteShoppingAssistanceConsent.css';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { Field, Checkbox } from '@adobe-commerce/elsie/components';\n\nexport interface RemoteShoppingAssistanceConsentProps {\n label?: string;\n tooltip?: string;\n name?: string;\n defaultChecked?: boolean;\n onChange?: (checked: boolean) => void;\n className?: string;\n}\n\nexport const RemoteShoppingAssistanceConsent: FunctionComponent<\n RemoteShoppingAssistanceConsentProps\n> = ({\n label = '',\n tooltip = '',\n name = 'allowRemoteShoppingAssistance',\n defaultChecked = false,\n onChange,\n className = '',\n}) => {\n const [showTooltip, setShowTooltip] = useState(false);\n const [checked, setChecked] = useState(defaultChecked);\n const tooltipId = `${name}-tooltip`;\n\n const handleChange = ({\n currentTarget,\n }: JSX.TargetedEvent<HTMLInputElement>) => {\n const isChecked = currentTarget.checked;\n setChecked(isChecked);\n onChange?.(isChecked);\n };\n\n return (\n <div className={classes(['remote-shopping-assistance-consent', className])}>\n <div className=\"remote-shopping-assistance-consent__wrapper\">\n <Field>\n <Checkbox\n name={name}\n value=\"true\"\n placeholder={label}\n label={label}\n checked={checked}\n onChange={handleChange}\n />\n </Field>\n {tooltip ? (\n <div className=\"remote-shopping-assistance-consent__info-container\">\n <button\n type=\"button\"\n className=\"remote-shopping-assistance-consent__info-icon\"\n onMouseEnter={() => setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n onFocusIn={() => setShowTooltip(true)}\n onFocusOut={() => setShowTooltip(false)}\n aria-describedby={showTooltip ? tooltipId : undefined}\n aria-label={tooltip}\n >\n ?\n </button>\n {showTooltip ? (\n <span\n className=\"remote-shopping-assistance-consent__tooltip\"\n id={tooltipId}\n role=\"tooltip\"\n >\n {tooltip}\n <span className=\"remote-shopping-assistance-consent__tooltip-arrow\" />\n </span>\n ) : null}\n </div>\n ) : null}\n </div>\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","remoteShoppingAssistanceConfigs","useGetStoreConfigs","inLineAlertProps","useInLineAlert","onSubmitSignUp","isValidUniqueSymbols","defaultLengthMessage","usePasswordValidationMessage","validationPasswordMessage","useMemo","shouldShowPersistLoginCheckbox","jsx","SkeletonLoader","Slot","EmailConfirmationForm","slotContext","jsxs","classes","Header","InLineAlert","Form","InputPassword","Field","Checkbox","RemoteShoppingAssistanceConsent","Button","label","tooltip","name","defaultChecked","onChange","className","showTooltip","setShowTooltip","checked","setChecked","tooltipId","handleChange","currentTarget","isChecked"],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/*! Copyright 2026 Adobe
|
|
2
|
+
All Rights Reserved. */
|
|
3
|
+
import{jsxs as p,jsx as s}from"@dropins/tools/preact-jsx-runtime.js";import{classes as x,Slot as g}from"@dropins/tools/lib.js";import{v as _,F as P}from"./RemoteShoppingAssistanceConsent.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 T,B as b}from"./Button.js";import{useState as E,useCallback as R}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 h from"@dropins/tools/preact-compat.js";const j=a=>h.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...a},h.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]=E(!1),m=R(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=R(()=>{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}=T(),{isLoading:n,submitResetPassword:o,redirectToSignInPage:u}=q({routeSignIn:i,setActiveComponent:c,onErrorCallback:d,onSuccessCallback:e,handleSetInLineAlertProps:w}),l={isLoading:n};return p("div",{...f,className:x(["auth-reset-password-form",`auth-reset-password-form--${a}`]),"data-testid":"resetPasswordForm",children:[s(g,{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,{"aria-labelledby":r.formAriaLabel,name:"resetPassword_form",className:"auth-reset-password-form__form",onSubmit:o,loading:n,fieldsConfig:B(A),formSlot:{name:"Form",slot:t==null?void 0:t.Form,context:l,dataTestId:"form"},children:p(g,{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
|
+
//# sourceMappingURL=ResetPasswordForm.js.map
|
|
@@ -0,0 +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, 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 <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 formSlot={{\n name: 'Form',\n slot: slots?.Form,\n context: slotContext,\n dataTestId: 'form',\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 <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]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/*! Copyright 2026 Adobe
|
|
2
|
+
All Rights Reserved. */
|
|
3
|
+
import{jsx as u,jsxs as k,Fragment as R}from"@dropins/tools/preact-jsx-runtime.js";import{Slot as J,classes as tt}from"@dropins/tools/lib.js";import{c as E,g as rt,u as at,B as Q}from"./Button.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 ot}from"./getCustomerToken.js";import{r as it}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"./RemoteShoppingAssistanceConsent.js";const _t=({emailConfirmationStatusMessage:t,translations:e,initialEmailValue:n,routeSignUp:h,routeForgotPassword:c,routeRedirectOnSignIn:F,onErrorCallback:y,setActiveComponent:a,onSuccessCallback:f,onSignUpLinkClick:g,handleSetInLineAlertProps:i,routeRedirectOnEmailConfirmationClose:N,apiErrorMessageOverride:p})=>{const[v,j]=_(""),[q,s]=_(!1),[w,d]=_(""),[B,l]=_(!1),[V,D]=_({userName:"",status:!1}),[C,x]=_(!1),[I,T]=_([]),S=m(async r=>{i(),s(!0),l(!1),T([]),await it(r)},[i]),G=m(r=>{r.length?l(!1):l(!0),d(r)},[]);X(()=>{t!=null&&t.text&&i({text:t.text,type:t.status?t.status:void 0})},[t,i]);const H=m(()=>{w.length||l(!0)},[w]),L=m((r,o)=>w.length?!1:(l(!0),o&&ut(r,w,""),!0),[w]),M=m((r,o)=>{o!=null&&o.userName&&(r.target.reset(),E(F)?window.location.href=F():(f==null||f({userName:o==null?void 0:o.userName,status:!0}),D({userName:o==null?void 0:o.userName,status:!0})))},[f,F]),U=m((r,o)=>{var P;if((P=r==null?void 0:r.errorMessage)!=null&&P.length){j(o);const $=r.errorMessage.includes("This account isn't confirmed. Verify and try again."),b=$?e.resendEmailInformationText:r.displayErrorMessage;T($?[{label:e.resendEmailButtonText,onClick:()=>{S(o)}}]:[]),i({text:b,type:"error"}),d("")}},[S,i,e.resendEmailButtonText,e.resendEmailInformationText]),K=m(async(r,o)=>{if(i(),L(r,o))return;x(!0);const P=rt(r.target);if(Object.values(P).every(b=>b)){const{email:b,password:O}=P,W=await ot({email:b,password:O,handleSetInLineAlertProps:i,onErrorCallback:y,translations:e,apiErrorMessageOverride:p});U(W,b),M(r,W),l(!1)}x(!1)},[e,y,L,U,M,i,p]),A=m(()=>{if(E(a)){a("resetPasswordForm");return}E(c)&&(window.location.href=c())},[c,a]),Y=m(()=>{if(E(g)&&g(),E(a)){a("signUpForm");return}E(h)&&(window.location.href=h())},[g,h,a]),Z=et(()=>{const r=nt(st);return n!=null&&n.length?r==null?void 0:r.map(o=>({...o,defaultValue:n})):r},[n]),z=m(()=>{i(),E(N)?window.location.href=N():s(!1)},[i,N]);return{additionalActionsAlert:I,userEmail:v,defaultEnhancedEmailFields:Z,passwordError:B,isSuccessful:V,isLoading:C,signInPasswordValue:w,showEmailConfirmationForm:q,setShowEmailConfirmationForm:s,setSignInPasswordValue:d,submitLogInUser:K,forgotPasswordCallback:A,onSignUpLinkClickCallback:Y,handledOnPrimaryButtonClick:z,handleSetPassword:G,onBlurPassword:H}},yt=()=>{let t=new URL(window.location.href),e=t.searchParams.get("email"),n=t.searchParams.get("key");e&&n&&(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"}),[n,h]=_({text:"",status:""});return X(()=>{if(t){const{search:c}=window.location;c.includes("email=")&&c.includes("key=")&&(async()=>{var f,g,i;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?h({text:a==null?void 0:a.errors[0].message,status:"error"}):(h({text:a.data.confirmEmail.customer.email?e.accountConfirmationEmailSuccessMessage.replace("{email}",(i=(g=a==null?void 0:a.data)==null?void 0:g.confirmEmail.customer)==null?void 0:i.email):e.accountConfirmMessage,status:"success"}),yt())})()}},[t,e]),{emailConfirmationStatusMessage:n}},Mt=({slots:t,labels:e,formSize:n="default",initialEmailValue:h="",renderSignUpLink:c=!1,enableEmailConfirmation:F=!1,hideCloseBtnOnEmailConfirmation:y=!1,routeRedirectOnEmailConfirmationClose:a,routeRedirectOnSignIn:f,routeForgotPassword:g,routeSignUp:i,onSuccessCallback:N,setActiveComponent:p,onErrorCallback:v,onSignUpLinkClick:j,apiErrorMessageOverride:q})=>{const s=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:w}=Et({enableEmailConfirmation:F}),{inLineAlertProps:d,handleSetInLineAlertProps:B}=at(),{userEmail:l,additionalActionsAlert:V,defaultEnhancedEmailFields:D,passwordError:C,isSuccessful:x,isLoading:I,signInPasswordValue:T,showEmailConfirmationForm:S,submitLogInUser:G,forgotPasswordCallback:H,onSignUpLinkClickCallback:L,handledOnPrimaryButtonClick:M,handleSetPassword:U,onBlurPassword:K}=_t({translations:s,emailConfirmationStatusMessage:w,initialEmailValue:h,routeSignUp:i,routeForgotPassword:g,routeRedirectOnSignIn:f,setActiveComponent:p,onErrorCallback:v,onSuccessCallback:N,onSignUpLinkClick:j,handleSetInLineAlertProps:B,routeRedirectOnEmailConfirmationClose:a,apiErrorMessageOverride:q});if(x.status&&(t!=null&&t.SuccessNotification))return u(J,{"data-testid":"successNotificationTestId",name:"SuccessNotification",slot:t==null?void 0:t.SuccessNotification,context:{isSuccessful:x}});if(S)return u(mt,{formSize:n,userEmail:l,inLineAlertProps:d,hideCloseBtnOnEmailConfirmation:y,handleSetInLineAlertProps:B,onPrimaryButtonClick:M});const A={userEmail:l,signInPasswordValue:T,isLoading:I,passwordError:C,isSuccessful:x};return k("div",{className:tt(["auth-sign-in-form",`auth-sign-in-form--${n}`]),"data-testid":"signInForm",children:[u(J,{name:"Title","data-testid":"title",slot:t==null?void 0:t.Title,context:{...A},children:u(dt,{title:(e==null?void 0:e.formTitleText)??s.title,divider:!1,className:"auth-sign-in-form__title"})}),d.text?u(lt,{"data-testid":"authInLineAlert",className:"auth-sign-in-form__notification",type:d.type,variant:"secondary",heading:d.text,icon:d.icon,additionalActions:V}):null,k(wt,{name:"signIn_form",className:"auth-sign-in-form__form",onSubmit:G,loading:I,fieldsConfig:D,formSlot:{name:"Form",slot:t==null?void 0:t.Form,context:A,dataTestId:"form"},children:[u(ht,{hideStatusIndicator:!0,className:"auth-sign-in-form__form__password",autoComplete:"current-password",errorMessage:C?s.requiredFieldError:void 0,defaultValue:T,onValue:U,onBlur:K,placeholder:s.placeholder,floatingLabel:s.floatingLabel}),u("div",{className:"auth-sign-in-form__form__buttons__wrapper",children:k(J,{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:[u(Q,{type:"button",variant:"tertiary",style:{padding:0},buttonText:s.buttonTertiary,className:"auth-sign-in-form__button auth-sign-in-form__button--forgot",enableLoader:!1,onClick:H,"data-testid":"switchToSignUp"}),c?k(R,{children:[u("span",{}),u(Q,{type:"button",variant:"tertiary",style:{padding:0},buttonText:s.buttonSecondary,className:"auth-sign-in-form__button auth-sign-in-form__button--signup",enableLoader:!1,onClick:L})]}):null]}),u(Q,{type:"submit",buttonText:(e==null?void 0:e.primaryButtonText)??s.buttonPrimary,variant:"primary",className:"auth-sign-in-form__button auth-sign-in-form__button--submit",enableLoader:I})]})})]}),u("div",{id:"generateCustomerToken"})]})};export{Mt as S};
|
|
4
|
+
//# sourceMappingURL=SignInForm.js.map
|
|
@@ -0,0 +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 const slotContext = {\n userEmail,\n signInPasswordValue,\n isLoading,\n passwordError,\n isSuccessful,\n };\n\n return (\n <div\n className={classes([\n 'auth-sign-in-form',\n `auth-sign-in-form--${formSize}`,\n ])}\n data-testid=\"signInForm\"\n >\n <Slot\n name=\"Title\"\n data-testid=\"title\"\n slot={slots?.Title}\n context={{ ...slotContext }}\n >\n <Header\n title={labels?.formTitleText ?? translations.title}\n divider={false}\n className=\"auth-sign-in-form__title\"\n />\n </Slot>\n {inLineAlertProps.text ? (\n <InLineAlert\n data-testid=\"authInLineAlert\"\n className=\"auth-sign-in-form__notification\"\n type={inLineAlertProps.type}\n variant=\"secondary\"\n heading={inLineAlertProps.text}\n icon={inLineAlertProps.icon}\n additionalActions={additionalActionsAlert}\n />\n ) : null}\n <Form\n name=\"signIn_form\"\n className=\"auth-sign-in-form__form\"\n onSubmit={submitLogInUser}\n loading={isLoading}\n fieldsConfig={defaultEnhancedEmailFields}\n formSlot={{\n name: 'Form',\n slot: slots?.Form,\n context: slotContext,\n dataTestId: 'form',\n }}\n >\n <InputPassword\n hideStatusIndicator\n className=\"auth-sign-in-form__form__password\"\n autoComplete={'current-password'}\n errorMessage={\n passwordError ? translations.requiredFieldError : undefined\n }\n defaultValue={signInPasswordValue}\n onValue={handleSetPassword}\n onBlur={onBlurPassword}\n placeholder={translations.placeholder}\n floatingLabel={translations.floatingLabel}\n />\n <div className=\"auth-sign-in-form__form__buttons__wrapper\">\n <Slot\n name=\"Buttons\"\n className=\"auth-sign-in-form__form__buttons\"\n data-testid=\"buttons\"\n slot={slots?.Buttons}\n context={{ ...slotContext }}\n >\n <div className=\"auth-sign-in-form__form__buttons__combine\">\n <Button\n type=\"button\"\n variant=\"tertiary\"\n style={{ padding: 0 }}\n buttonText={translations.buttonTertiary}\n className=\"auth-sign-in-form__button auth-sign-in-form__button--forgot\"\n enableLoader={false}\n onClick={forgotPasswordCallback}\n data-testid=\"switchToSignUp\"\n />\n {renderSignUpLink ? (\n <>\n <span />\n <Button\n type=\"button\"\n variant=\"tertiary\"\n style={{ padding: 0 }}\n buttonText={translations.buttonSecondary}\n className=\"auth-sign-in-form__button auth-sign-in-form__button--signup\"\n enableLoader={false}\n onClick={onSignUpLinkClickCallback}\n />\n </>\n ) : null}\n </div>\n <Button\n type=\"submit\"\n buttonText={labels?.primaryButtonText ?? translations.buttonPrimary}\n variant=\"primary\"\n className=\"auth-sign-in-form__button auth-sign-in-form__button--submit\"\n enableLoader={isLoading}\n />\n </Slot>\n </div>\n </Form>\n <div id=\"generateCustomerToken\" />\n </div>\n );\n};\n"],"names":["useSignInForm","emailConfirmationStatusMessage","translations","initialEmailValue","routeSignUp","routeForgotPassword","routeRedirectOnSignIn","onErrorCallback","setActiveComponent","onSuccessCallback","onSignUpLinkClick","handleSetInLineAlertProps","routeRedirectOnEmailConfirmationClose","apiErrorMessageOverride","userEmail","setUserEmail","useState","showEmailConfirmationForm","setShowEmailConfirmationForm","signInPasswordValue","setSignInPasswordValue","passwordError","setPasswordError","isSuccessful","setIsSuccessful","isLoading","setIsLoading","additionalActionsAlert","setAdditionalActionsAlert","actionsShowNotificationForm","useCallback","email","resendConfirmationEmail","handleSetPassword","value","useEffect","onBlurPassword","checkPasswordAndFocus","event","isValid","focusOnEmptyPasswordField","onAuthenticationSuccess","loginResponse","checkIsFunction","onAuthenticationFailed","_a","isIncludesMessage","errorMessage","submitLogInUser","formValues","getFormValues","password","getCustomerToken","forgotPasswordCallback","onSignUpLinkClickCallback","defaultEnhancedEmailFields","useMemo","fieldsList","simplifyTransformAttributesForm","DEFAULT__SIGN_IN_EMAIL_FIELD","el","handledOnPrimaryButtonClick","clearUrlAndReplace","url","token","useEmailConfirmation","enableEmailConfirmation","useText","setEmailConfirmationStatusMessage","search","params","response","confirmEmail","_c","_b","SignInForm","slots","labels","formSize","renderSignUpLink","hideCloseBtnOnEmailConfirmation","useCustomTranslations","inLineAlertProps","useInLineAlert","jsx","Slot","EmailConfirmationForm","slotContext","jsxs","classes","Header","InLineAlert","Form","InputPassword","Button","Fragment"],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/*! Copyright 2026 Adobe
|
|
2
|
+
All Rights Reserved. */
|
|
3
|
+
import{jsxs as l,jsx as e,Fragment as r}from"@dropins/tools/preact-jsx-runtime.js";import{useMemo as s}from"@dropins/tools/preact-hooks.js";import{Skeleton as a,SkeletonRow as i}from"@dropins/tools/components.js";const d=()=>l(a,{children:[e(i,{variant:"heading",size:"xlarge",fullWidth:!1,lines:1}),e(i,{variant:"heading",size:"xlarge",fullWidth:!0,lines:1}),e(i,{variant:"heading",size:"medium",fullWidth:!1,lines:1}),e(i,{variant:"heading",size:"medium",fullWidth:!1,lines:1})," ",e(i,{variant:"heading",size:"xlarge",fullWidth:!0,lines:1}),e(i,{variant:"heading",size:"xlarge",fullWidth:!0,lines:1}),e(i,{variant:"heading",size:"medium",fullWidth:!0,lines:1}),e(i,{variant:"heading",size:"xlarge",fullWidth:!0,lines:1}),e(i,{variant:"heading",size:"xlarge",fullWidth:!0,lines:1}),e(i,{variant:"heading",size:"medium",fullWidth:!1,lines:1}),e(i,{variant:"heading",size:"medium",fullWidth:!1,lines:1})]}),h=()=>l(a,{children:[e(i,{variant:"heading",size:"xlarge",fullWidth:!1,lines:1}),e(i,{variant:"heading",size:"xlarge",fullWidth:!0,lines:1}),e(i,{variant:"heading",size:"xlarge",fullWidth:!0,lines:1}),e(i,{variant:"heading",size:"medium",fullWidth:!1,lines:1})," ",e(i,{variant:"heading",size:"medium",fullWidth:!1,lines:1})]}),u=()=>l(a,{children:[e(i,{variant:"heading",size:"xlarge",fullWidth:!1,lines:1}),e(i,{variant:"heading",size:"xlarge",fullWidth:!0,lines:1}),e(i,{variant:"heading",size:"xlarge",fullWidth:!0,lines:1}),e(i,{variant:"heading",size:"medium",fullWidth:!1,lines:1})," ",e(i,{variant:"heading",size:"medium",fullWidth:!1,lines:1})]}),o=({activeSkeleton:n})=>{const t=s(()=>({signInForm:e(h,{}),signUpForm:e(d,{}),resetPasswordForm:e(u,{})}),[]);return e(r,{children:t[n]})};export{o as S};
|
|
4
|
+
//# sourceMappingURL=SkeletonLoader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SkeletonLoader.js","sources":["/@dropins/storefront-auth/src/components/SkeletonLoader/Skeletons/SignUpSkeleton.tsx","/@dropins/storefront-auth/src/components/SkeletonLoader/Skeletons/SignInSkeleton.tsx","/@dropins/storefront-auth/src/components/SkeletonLoader/Skeletons/ResetPasswordSkeleton.tsx","/@dropins/storefront-auth/src/components/SkeletonLoader/SkeletonLoader.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 { Skeleton, SkeletonRow } from '@adobe-commerce/elsie/components';\n\nexport const SignUpSkeleton = () => {\n return (\n <Skeleton>\n <SkeletonRow\n variant=\"heading\"\n size=\"xlarge\"\n fullWidth={false}\n lines={1}\n />\n <SkeletonRow variant=\"heading\" size=\"xlarge\" fullWidth={true} lines={1} />\n <SkeletonRow\n variant=\"heading\"\n size=\"medium\"\n fullWidth={false}\n lines={1}\n />\n <SkeletonRow\n variant=\"heading\"\n size=\"medium\"\n fullWidth={false}\n lines={1}\n />{' '}\n <SkeletonRow variant=\"heading\" size=\"xlarge\" fullWidth={true} lines={1} />\n <SkeletonRow variant=\"heading\" size=\"xlarge\" fullWidth={true} lines={1} />\n <SkeletonRow variant=\"heading\" size=\"medium\" fullWidth={true} lines={1} />\n <SkeletonRow variant=\"heading\" size=\"xlarge\" fullWidth={true} lines={1} />\n <SkeletonRow variant=\"heading\" size=\"xlarge\" fullWidth={true} lines={1} />\n <SkeletonRow\n variant=\"heading\"\n size=\"medium\"\n fullWidth={false}\n lines={1}\n />\n <SkeletonRow\n variant=\"heading\"\n size=\"medium\"\n fullWidth={false}\n lines={1}\n />\n </Skeleton>\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 { Skeleton, SkeletonRow } from '@adobe-commerce/elsie/components';\n\nexport const SignInSkeleton = () => {\n return (\n <Skeleton>\n <SkeletonRow\n variant=\"heading\"\n size=\"xlarge\"\n fullWidth={false}\n lines={1}\n />\n <SkeletonRow variant=\"heading\" size=\"xlarge\" fullWidth={true} lines={1} />\n <SkeletonRow variant=\"heading\" size=\"xlarge\" fullWidth={true} lines={1} />\n <SkeletonRow\n variant=\"heading\"\n size=\"medium\"\n fullWidth={false}\n lines={1}\n />{' '}\n <SkeletonRow\n variant=\"heading\"\n size=\"medium\"\n fullWidth={false}\n lines={1}\n />\n </Skeleton>\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 { Skeleton, SkeletonRow } from '@adobe-commerce/elsie/components';\n\nexport const ResetPasswordSkeleton = () => {\n return (\n <Skeleton>\n <SkeletonRow\n variant=\"heading\"\n size=\"xlarge\"\n fullWidth={false}\n lines={1}\n />\n <SkeletonRow variant=\"heading\" size=\"xlarge\" fullWidth={true} lines={1} />\n <SkeletonRow variant=\"heading\" size=\"xlarge\" fullWidth={true} lines={1} />\n <SkeletonRow\n variant=\"heading\"\n size=\"medium\"\n fullWidth={false}\n lines={1}\n />{' '}\n <SkeletonRow\n variant=\"heading\"\n size=\"medium\"\n fullWidth={false}\n lines={1}\n />\n </Skeleton>\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 { useMemo } from 'preact/hooks';\nimport { Container } from '@adobe-commerce/elsie/lib';\nimport { SkeletonLoaderProps } from '@/auth/types';\nimport {\n SignUpSkeleton,\n SignInSkeleton,\n ResetPasswordSkeleton,\n} from './Skeletons';\n\nexport const SkeletonLoader: Container<SkeletonLoaderProps> = ({\n activeSkeleton,\n}) => {\n const renderSkeleton = useMemo(\n () => ({\n signInForm: <SignInSkeleton />,\n signUpForm: <SignUpSkeleton />,\n resetPasswordForm: <ResetPasswordSkeleton />,\n }),\n []\n );\n\n return <>{renderSkeleton[activeSkeleton]}</>;\n};\n"],"names":["SignUpSkeleton","Skeleton","jsx","SkeletonRow","SignInSkeleton","ResetPasswordSkeleton","SkeletonLoader","activeSkeleton","renderSkeleton","useMemo","Fragment"],"mappings":"qNAmBO,MAAMA,EAAiB,MAEzBC,EAAA,CACC,SAAA,CAAAC,EAACC,EAAA,CACC,QAAQ,UACR,KAAK,SACL,UAAW,GACX,MAAO,CAAA,CAAA,EAETD,EAACC,GAAY,QAAQ,UAAU,KAAK,SAAS,UAAW,GAAM,MAAO,CAAA,CAAG,EACxED,EAACC,EAAA,CACC,QAAQ,UACR,KAAK,SACL,UAAW,GACX,MAAO,CAAA,CAAA,EAETD,EAACC,EAAA,CACC,QAAQ,UACR,KAAK,SACL,UAAW,GACX,MAAO,CAAA,CAAA,EACN,IACHD,EAACC,GAAY,QAAQ,UAAU,KAAK,SAAS,UAAW,GAAM,MAAO,CAAA,CAAG,EACxED,EAACC,GAAY,QAAQ,UAAU,KAAK,SAAS,UAAW,GAAM,MAAO,CAAA,CAAG,EACxED,EAACC,GAAY,QAAQ,UAAU,KAAK,SAAS,UAAW,GAAM,MAAO,CAAA,CAAG,EACxED,EAACC,GAAY,QAAQ,UAAU,KAAK,SAAS,UAAW,GAAM,MAAO,CAAA,CAAG,EACxED,EAACC,GAAY,QAAQ,UAAU,KAAK,SAAS,UAAW,GAAM,MAAO,CAAA,CAAG,EACxED,EAACC,EAAA,CACC,QAAQ,UACR,KAAK,SACL,UAAW,GACX,MAAO,CAAA,CAAA,EAETD,EAACC,EAAA,CACC,QAAQ,UACR,KAAK,SACL,UAAW,GACX,MAAO,CAAA,CAAA,CACT,EACF,ECvCSC,EAAiB,MAEzBH,EAAA,CACC,SAAA,CAAAC,EAACC,EAAA,CACC,QAAQ,UACR,KAAK,SACL,UAAW,GACX,MAAO,CAAA,CAAA,EAETD,EAACC,GAAY,QAAQ,UAAU,KAAK,SAAS,UAAW,GAAM,MAAO,CAAA,CAAG,EACxED,EAACC,GAAY,QAAQ,UAAU,KAAK,SAAS,UAAW,GAAM,MAAO,CAAA,CAAG,EACxED,EAACC,EAAA,CACC,QAAQ,UACR,KAAK,SACL,UAAW,GACX,MAAO,CAAA,CAAA,EACN,IACHD,EAACC,EAAA,CACC,QAAQ,UACR,KAAK,SACL,UAAW,GACX,MAAO,CAAA,CAAA,CACT,EACF,ECvBSE,EAAwB,MAEhCJ,EAAA,CACC,SAAA,CAAAC,EAACC,EAAA,CACC,QAAQ,UACR,KAAK,SACL,UAAW,GACX,MAAO,CAAA,CAAA,EAETD,EAACC,GAAY,QAAQ,UAAU,KAAK,SAAS,UAAW,GAAM,MAAO,CAAA,CAAG,EACxED,EAACC,GAAY,QAAQ,UAAU,KAAK,SAAS,UAAW,GAAM,MAAO,CAAA,CAAG,EACxED,EAACC,EAAA,CACC,QAAQ,UACR,KAAK,SACL,UAAW,GACX,MAAO,CAAA,CAAA,EACN,IACHD,EAACC,EAAA,CACC,QAAQ,UACR,KAAK,SACL,UAAW,GACX,MAAO,CAAA,CAAA,CACT,EACF,EChBSG,EAAiD,CAAC,CAC7D,eAAAC,CACF,IAAM,CACJ,MAAMC,EAAiBC,EACrB,KAAO,CACL,aAAaL,EAAA,EAAe,EAC5B,aAAaJ,EAAA,EAAe,EAC5B,oBAAoBK,EAAA,CAAA,CAAsB,CAAA,GAE5C,CAAA,CAAC,EAGH,OAAOH,EAAAQ,EAAA,CAAG,SAAAF,EAAeD,CAAc,EAAE,CAC3C"}
|