@shopgate/engage
Version:
Shopgate's ENGAGE library.
5 lines • 1.83 kB
JavaScript
import React,{useMemo,useCallback}from'react';import PropTypes from'prop-types';import{FormBuilder}from'@shopgate/engage/components';import Section from"../../../checkout/components/Checkout/CheckoutSection";import{useRegistration}from"../../hooks";import{ELEMENT_ID_CUSTOMER_ATTRIBUTES}from"../../constants";import generateFormConfig from"./RegistrationFormExtra.config";import{form,section}from"./RegistrationContent.style";/**
* The RegistrationFormExtra component.
* @param {Object} props The component props
* @returns {JSX}
*/var RegistrationFormExtra=function RegistrationFormExtra(_ref){var isGuest=_ref.isGuest;var _useRegistration=useRegistration(isGuest),defaultExtraFormState=_useRegistration.defaultExtraFormState,updateExtraForm=_useRegistration.updateExtraForm,customerAttributes=_useRegistration.customerAttributes,extraFormValidationErrors=_useRegistration.extraFormValidationErrors,supportedCountries=_useRegistration.supportedCountries,countrySortOrder=_useRegistration.countrySortOrder,userLocation=_useRegistration.userLocation;var formConfig=useMemo(function(){return generateFormConfig({customerAttributes:customerAttributes,isGuest:isGuest,supportedCountries:supportedCountries,countrySortOrder:countrySortOrder,userLocation:userLocation});},[countrySortOrder,customerAttributes,isGuest,supportedCountries,userLocation]);var handleUpdate=useCallback(function(values){updateExtraForm(values);},[updateExtraForm]);return React.createElement(Section,{className:section,hasForm:true,id:ELEMENT_ID_CUSTOMER_ATTRIBUTES},React.createElement(FormBuilder,{className:form,name:"RegistrationExtra",config:formConfig,defaults:defaultExtraFormState,validationErrors:extraFormValidationErrors,handleUpdate:handleUpdate}));};RegistrationFormExtra.defaultProps={isGuest:false};export default RegistrationFormExtra;