UNPKG

@commercelayer/react-components

Version:
2 lines 2.28 kB
"use client"; "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.CustomerInput=CustomerInput;const tslib_1=require("tslib"),jsx_runtime_1=require("react/jsx-runtime"),react_1=require("react"),BaseInput_1=tslib_1.__importDefault(require("../utils/BaseInput")),rapid_form_1=require("rapid-form"),CustomerContext_1=tslib_1.__importDefault(require("../../context/CustomerContext")),validateFormFields_1=require("../../utils/validateFormFields"),OrderContext_1=tslib_1.__importDefault(require("../../context/OrderContext"));function CustomerInput(props){const{name="customer_email",placeholder="",required=!0,saveOnBlur=!1,type="email",value,onBlur,className,errorClassName,...p}=props,{validation,values,errors,setError}=(0,rapid_form_1.useRapidForm)({fieldEvent:"blur"}),{saveCustomerUser,setCustomerErrors,setCustomerEmail}=(0,react_1.useContext)(CustomerContext_1.default),{setOrderErrors}=(0,react_1.useContext)(OrderContext_1.default),[hasError,setHasError]=(0,react_1.useState)(!1),handleOnBlur=async e=>{const v=e?.target?.value,checkValue=(0,validateFormFields_1.validateValue)(v,name,type,"orders"),isValid=Object.keys(checkValue).length===0;if(saveOnBlur&&Object.keys(values).length>0&&saveCustomerUser!=null&&(await saveCustomerUser(values[name].value),onBlur&&onBlur(values[name].value)),!isValid){const currentError={...checkValue,name:checkValue?.field};setError(currentError)}};(0,react_1.useEffect)(()=>{if(Object.keys(errors).length>0){const formErrors=[];for(const fieldName in errors){const code=errors[fieldName]?.code,message=errors[fieldName]?.message;formErrors.push({code,message:message||"",resource:"orders",field:fieldName})}formErrors.length>0&&(setHasError(!0),setCustomerErrors&&setCustomerErrors(formErrors))}else setCustomerErrors&&setCustomerErrors([]),setOrderErrors&&setOrderErrors([]),setHasError(!1);return Object.keys(values).length>0&&setCustomerEmail&&setCustomerEmail(values[name].value),()=>{setHasError(!1)}},[errors]);const classNameComputed=`${className??""} ${hasError&&errorClassName?errorClassName:""}`;return(0,jsx_runtime_1.jsx)(BaseInput_1.default,{name,type,ref:validation,required,placeholder,defaultValue:value,onBlur:e=>{handleOnBlur(e)},className:classNameComputed,...p})}exports.default=CustomerInput;