@shopgate/engage 7.8.0-beta.4 → 7.8.0

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.
Files changed (26) hide show
  1. package/account/components/Profile/Profile.config.js +1 -0
  2. package/account/components/Profile/Profile.provider.js +1 -1
  3. package/account/components/Profile/ProfileForm.js +1 -1
  4. package/account/components/ProfileContact/ProfileContact.config.js +8 -6
  5. package/account/components/ProfileContact/ProfileContact.js +1 -1
  6. package/account/helper/form.js +2 -1
  7. package/checkout/components/Checkout/CheckoutPickupContactForm.config.js +5 -3
  8. package/checkout/components/Checkout/CheckoutPickupContactForm.js +1 -1
  9. package/checkout/providers/CheckoutProvider.js +1 -1
  10. package/components/Form/Builder/ElementPhoneNumber.js +17 -5
  11. package/components/Form/Builder/stylePresets.js +1 -1
  12. package/orders/components/OrderDetails/OrderDetailsAuthenticate.js +1 -1
  13. package/orders/components/OrderDetails/OrderDetailsAuthenticateForm.config.js +5 -3
  14. package/orders/providers/OrderDetailsPrivateProvider.js +1 -1
  15. package/orders/providers/OrderDetailsProvider.js +1 -1
  16. package/package.json +8 -8
  17. package/registration/components/GuestRegistration/GuestRegistrationFormPickup.config.js +5 -2
  18. package/registration/components/GuestRegistration/GuestRegistrationFormPickup.js +1 -1
  19. package/registration/components/Registration/RegistrationFormBilling.config.js +1 -1
  20. package/registration/components/Registration/RegistrationFormBilling.js +1 -1
  21. package/registration/components/Registration/RegistrationFormExtra.config.js +1 -1
  22. package/registration/components/Registration/RegistrationFormExtra.js +1 -1
  23. package/registration/components/Registration/RegistrationFormShipping.config.js +1 -1
  24. package/registration/components/Registration/RegistrationFormShipping.js +1 -1
  25. package/registration/providers/GuestRegistrationProvider.js +2 -2
  26. package/registration/providers/RegistrationProvider.js +1 -1
@@ -3,6 +3,7 @@ function _extends(){_extends=Object.assign||function(target){for(var i=1;i<argum
3
3
  * @param {Object} additionalOptions Options for the customer attributes creation helper
4
4
  * @param {Array} additionalOptions.customerAttributes Customer attributes.
5
5
  * @param {Array} additionalOptions.supportedCountries A list of supported countries.
6
+ * @param {Array} additionalOptions.countrySortOrder Sort order for supported countries.
6
7
  * @param {Object} additionalOptions.userLocation User location for better phone picker defaults.
7
8
  * @param {boolean} [additionalOptions.allowPleaseChoose] Allows please choose option for required
8
9
  * attributes.
@@ -18,5 +18,5 @@ var constraints=useMemo(function(){return createConstraints(merchantCustomerAttr
18
18
  * @param {string} message String
19
19
  */var confirmation=/*#__PURE__*/function(){var _ref3=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(message){var confirmed;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1){switch(_context2.prev=_context2.next){case 0:_context2.next=2;return showDialog({title:i18n.text('account.profile.confirm.title'),message:i18n.text(message),confirm:i18n.text('account.profile.confirm.confirm')});case 2:confirmed=_context2.sent;return _context2.abrupt("return",!!confirmed);case 4:case"end":return _context2.stop();}}},_callee2);}));return function confirmation(_x2){return _ref3.apply(this,arguments);};}();// Deletes a contact.
20
20
  /* eslint-disable react-hooks/exhaustive-deps */var deleteContactWrapper=useCallback(/*#__PURE__*/function(){var _ref4=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(contactId){return _regeneratorRuntime.wrap(function _callee3$(_context3){while(1){switch(_context3.prev=_context3.next){case 0:_context3.next=2;return confirmation('account.profile.confirm.messageContact');case 2:if(_context3.sent){_context3.next=4;break;}return _context3.abrupt("return");case 4:LoadingProvider.setLoading(pathname);_context3.prev=5;_context3.next=8;return deleteContact(contactId);case 8:_context3.next=10;return fetchContacts();case 10:if(!deleteContactFromOrder){_context3.next=13;break;}_context3.next=13;return deleteContactFromOrder(contactId);case 13:_context3.next=17;break;case 15:_context3.prev=15;_context3.t0=_context3["catch"](5);case 17:LoadingProvider.unsetLoading(pathname);case 18:case"end":return _context3.stop();}}},_callee3,null,[[5,15]]);}));return function(_x3){return _ref4.apply(this,arguments);};}(),[deleteContact,fetchContacts,pathname]);var deleteCustomerWrapper=useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(){return _regeneratorRuntime.wrap(function _callee4$(_context4){while(1){switch(_context4.prev=_context4.next){case 0:_context4.next=2;return confirmation('account.profile.confirm.messageCustomer');case 2:if(_context4.sent){_context4.next=4;break;}return _context4.abrupt("return");case 4:LoadingProvider.setLoading(pathname);_context4.prev=5;_context4.next=8;return deleteCustomer();case 8:_context4.next=12;break;case 10:_context4.prev=10;_context4.t0=_context4["catch"](5);case 12:LoadingProvider.unsetLoading(pathname);case 13:case"end":return _context4.stop();}}},_callee4,null,[[5,10]]);})),[deleteContact,fetchContacts,pathname]);/* eslint-enable react-hooks/exhaustive-deps */var editContact=useCallback(function(contact){var editPathname=isCheckout?"".concat(CHECKOUT_ADDRESS_BOOK_CONTACT_PATTERN).replace(':type',type):PROFILE_ADDRESS_PATH;push({pathname:editPathname,state:{contact:contact}});},[isCheckout,push,type]);// Store context value.
21
- var contextValue=useMemo(function(){return{contacts:contacts,validationErrors:validationErrors,merchantCustomerAttributes:merchantCustomerAttributes,customer:defaultState,isCheckout:isCheckout,supportedCountries:shopSettings.supportedCountries,userLocation:userLocation,formState:formState,saveForm:formState.handleSubmit,editContact:editContact,deleteContact:deleteContactWrapper,deleteCustomer:deleteCustomerWrapper};},[userLocation,shopSettings.supportedCountries,contacts,merchantCustomerAttributes,isCheckout,defaultState,deleteContactWrapper,deleteCustomerWrapper,editContact,formState,validationErrors]);// Fetch all required data for the profile page.
21
+ var contextValue=useMemo(function(){return{contacts:contacts,validationErrors:validationErrors,merchantCustomerAttributes:merchantCustomerAttributes,customer:defaultState,isCheckout:isCheckout,supportedCountries:shopSettings.supportedCountries,countrySortOrder:shopSettings.countrySortOrder,userLocation:userLocation,formState:formState,saveForm:formState.handleSubmit,editContact:editContact,deleteContact:deleteContactWrapper,deleteCustomer:deleteCustomerWrapper};},[userLocation,shopSettings.supportedCountries,shopSettings.countrySortOrder,contacts,merchantCustomerAttributes,isCheckout,defaultState,deleteContactWrapper,deleteCustomerWrapper,editContact,formState,validationErrors]);// Fetch all required data for the profile page.
22
22
  useEffect(function(){fetchContacts();fetchCustomer();},[fetchContacts,fetchCustomer]);if(!customer){return null;}return React.createElement(ProfileContext.Provider,{value:contextValue},children);};ProfileProvider.defaultProps={customer:null,formContainerRef:null};export default connect(mapStateToProps,mapDispatchToProps)(ProfileProvider);
@@ -1,3 +1,3 @@
1
1
  function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};return _extends.apply(this,arguments);}import React,{useMemo,useCallback,forwardRef}from'react';import{css}from'glamor';import{i18n}from'@shopgate/engage/core';import{responsiveMediaQuery}from'@shopgate/engage/styles';import{FormBuilder,RippleButton}from'@shopgate/engage/components';import{StylePresets}from'@shopgate/engage/components/Form';import{useProfileContext}from"./Profile.provider";import generateFormConfig from"./Profile.config";var styles={root:css({display:'flex',flexDirection:'column',marginBottom:16}).toString(),form:css(_extends({},StylePresets.OUTLINED_FORM_FIELDS,{},StylePresets.TWO_COLUMN_LAYOUT,{' .container-checkbox':_defineProperty({},responsiveMediaQuery('>=md',{webOnly:false}),{marginRight:'50%'})})).toString(),button:css({'&&':_defineProperty({marginTop:8,marginRight:16,backgroundColor:'var(--color-primary)',borderRadius:5,fontSize:14,textTransform:'none',padding:0},responsiveMediaQuery('<md',{webOnly:false}),{marginRight:0})}).toString(),buttonDelete:css({'&&':_defineProperty({marginTop:8,marginRight:16,border:'1px solid var(--color-state-alert)',backgroundColor:'#fff',color:'var(--color-state-alert)',borderRadius:5,fontSize:14,textTransform:'none',padding:0},responsiveMediaQuery('<md',{webOnly:false}),{marginRight:0})}).toString(),ripple:css({padding:'8px 16px'}).toString(),actions:css(_defineProperty({display:'flex',justifyContent:'flex-end',flexDirection:'row'},responsiveMediaQuery('<md',{webOnly:false}),{marginTop:8,flexDirection:'column-reverse'})).toString()};/**
2
2
  * @returns {JSX}
3
- */var ProfileForm=forwardRef(function(_,ref){var _useProfileContext=useProfileContext(),formState=_useProfileContext.formState,customer=_useProfileContext.customer,saveForm=_useProfileContext.saveForm,deleteCustomer=_useProfileContext.deleteCustomer,validationErrors=_useProfileContext.validationErrors,merchantCustomerAttributes=_useProfileContext.merchantCustomerAttributes,supportedCountries=_useProfileContext.supportedCountries,userLocation=_useProfileContext.userLocation;var formConfig=useMemo(function(){return generateFormConfig({customerAttributes:merchantCustomerAttributes,supportedCountries:supportedCountries,userLocation:userLocation});},[merchantCustomerAttributes,supportedCountries,userLocation]);/* eslint-disable react-hooks/exhaustive-deps */var handleUpdate=useCallback(function(values){formState.setValues(values);},[formState.setValues]);/* eslint-enable react-hooks/exhaustive-deps */if(!customer){return null;}return React.createElement("div",{className:styles.root,ref:ref},React.createElement(FormBuilder,{name:"ProfileForm",className:styles.form,config:formConfig,defaults:customer,validationErrors:validationErrors,handleUpdate:handleUpdate}),React.createElement("div",{className:styles.actions},React.createElement(RippleButton,{className:styles.buttonDelete,rippleClassName:styles.ripple,type:"primary",onClick:deleteCustomer},i18n.text('account.profile.delete')),React.createElement(RippleButton,{className:styles.button,rippleClassName:styles.ripple,type:"primary",onClick:saveForm},i18n.text('account.profile.form.save'))));});export default ProfileForm;
3
+ */var ProfileForm=forwardRef(function(_,ref){var _useProfileContext=useProfileContext(),formState=_useProfileContext.formState,customer=_useProfileContext.customer,saveForm=_useProfileContext.saveForm,deleteCustomer=_useProfileContext.deleteCustomer,validationErrors=_useProfileContext.validationErrors,merchantCustomerAttributes=_useProfileContext.merchantCustomerAttributes,supportedCountries=_useProfileContext.supportedCountries,countrySortOrder=_useProfileContext.countrySortOrder,userLocation=_useProfileContext.userLocation;var formConfig=useMemo(function(){return generateFormConfig({customerAttributes:merchantCustomerAttributes,supportedCountries:supportedCountries,countrySortOrder:countrySortOrder,userLocation:userLocation});},[countrySortOrder,merchantCustomerAttributes,supportedCountries,userLocation]);/* eslint-disable react-hooks/exhaustive-deps */var handleUpdate=useCallback(function(values){formState.setValues(values);},[formState.setValues]);/* eslint-enable react-hooks/exhaustive-deps */if(!customer){return null;}return React.createElement("div",{className:styles.root,ref:ref},React.createElement(FormBuilder,{name:"ProfileForm",className:styles.form,config:formConfig,defaults:customer,validationErrors:validationErrors,handleUpdate:handleUpdate}),React.createElement("div",{className:styles.actions},React.createElement(RippleButton,{className:styles.buttonDelete,rippleClassName:styles.ripple,type:"primary",onClick:deleteCustomer},i18n.text('account.profile.delete')),React.createElement(RippleButton,{className:styles.button,rippleClassName:styles.ripple,type:"primary",onClick:saveForm},i18n.text('account.profile.form.save'))));});export default ProfileForm;
@@ -1,9 +1,11 @@
1
1
  function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};return _extends.apply(this,arguments);}import{i18n}from'@shopgate/engage/core';import{ADDRESS_TYPE_SHIPPING,ADDRESS_TYPE_BILLING}from'@shopgate/engage/checkout';/**
2
2
  * Generates form configuration.
3
- * @param {Array} supportedCountries A list of supported countries.
4
- * @param {Object} userLocation User location for better phone picker defaults.
5
- * @param {boolean} isCheckout Whether the form is shown within the checkout process
6
- * @param {string} type An address type
7
- * @param {number} numberOfAddressLines The number of address lines
3
+ * @param {Object} options Options for the helper
4
+ * @param {Array} options.supportedCountries A list of supported countries.
5
+ * @param {Array} options.countrySortOrder Sort order for supported countries.
6
+ * @param {Object} options.userLocation User location for better phone picker defaults.
7
+ * @param {boolean} options.isCheckout Whether the form is shown within the checkout process
8
+ * @param {string} options.type An address type
9
+ * @param {number} options.numberOfAddressLines The number of address lines
8
10
  * @returns {Object}
9
- */export var generateFormConfig=function generateFormConfig(supportedCountries,userLocation,isCheckout,type,numberOfAddressLines){return{fields:_extends({firstName:{type:'text',label:"".concat(i18n.text('account.profile.form.firstName')," *")}},!isCheckout?{middleName:{type:'text',label:"".concat(i18n.text('account.profile.form.middleName'))}}:{},{lastName:{type:'text',label:"".concat(i18n.text('account.profile.form.lastName')," *")}},!isCheckout?{emailAddress:{type:'email',label:"".concat(i18n.text('account.profile.form.emailAddress')," *")},mobile:{type:'phone_picker',label:"".concat(i18n.text('checkout.pickup_contact.form.mobile')," *"),config:{supportedCountries:supportedCountries,userLocation:userLocation}}}:{},{address1:{type:'text',label:"".concat(i18n.text('account.profile.form.address1')," *")}},numberOfAddressLines>=2?{address2:{type:'text',label:i18n.text('account.profile.form.address2')}}:{},{},numberOfAddressLines>=3?{address3:{type:'text',label:i18n.text('account.profile.form.address3')}}:{},{},numberOfAddressLines>=4?{address4:{type:'text',label:i18n.text('account.profile.form.address4')}}:{},{postalCode:{type:'text',label:"".concat(i18n.text('account.profile.form.postalCode')," *")},city:{type:'text',label:"".concat(i18n.text('account.profile.form.city')," *")},country:{type:'country',label:"".concat(i18n.text('account.profile.form.country')," *"),countries:supportedCountries},region:{type:'province',label:"".concat(i18n.text('account.profile.form.region')," *"),required:true}},!isCheckout||type===ADDRESS_TYPE_BILLING?{isDefaultBilling:{type:'checkbox',label:i18n.text(!isCheckout?'account.profile.form.default_billing':'account.profile.form.save_default_billing')}}:{},{},!isCheckout||type===ADDRESS_TYPE_SHIPPING?{isDefaultShipping:{type:'checkbox',label:i18n.text(!isCheckout?'account.profile.form.default_shipping':'account.profile.form.save_default_shipping')}}:{})};};export default generateFormConfig;
11
+ */export var generateFormConfig=function generateFormConfig(_ref){var supportedCountries=_ref.supportedCountries,countrySortOrder=_ref.countrySortOrder,userLocation=_ref.userLocation,isCheckout=_ref.isCheckout,type=_ref.type,numberOfAddressLines=_ref.numberOfAddressLines;return{fields:_extends({firstName:{type:'text',label:"".concat(i18n.text('account.profile.form.firstName')," *")}},!isCheckout?{middleName:{type:'text',label:"".concat(i18n.text('account.profile.form.middleName'))}}:{},{lastName:{type:'text',label:"".concat(i18n.text('account.profile.form.lastName')," *")}},!isCheckout?{emailAddress:{type:'email',label:"".concat(i18n.text('account.profile.form.emailAddress')," *")},mobile:{type:'phone_picker',label:"".concat(i18n.text('checkout.pickup_contact.form.mobile')," *"),config:{supportedCountries:supportedCountries,countrySortOrder:countrySortOrder,userLocation:userLocation}}}:{},{address1:{type:'text',label:"".concat(i18n.text('account.profile.form.address1')," *")}},numberOfAddressLines>=2?{address2:{type:'text',label:i18n.text('account.profile.form.address2')}}:{},{},numberOfAddressLines>=3?{address3:{type:'text',label:i18n.text('account.profile.form.address3')}}:{},{},numberOfAddressLines>=4?{address4:{type:'text',label:i18n.text('account.profile.form.address4')}}:{},{postalCode:{type:'text',label:"".concat(i18n.text('account.profile.form.postalCode')," *")},city:{type:'text',label:"".concat(i18n.text('account.profile.form.city')," *")},country:{type:'country',label:"".concat(i18n.text('account.profile.form.country')," *"),countries:supportedCountries},region:{type:'province',label:"".concat(i18n.text('account.profile.form.region')," *"),required:true}},!isCheckout||type===ADDRESS_TYPE_BILLING?{isDefaultBilling:{type:'checkbox',label:i18n.text(!isCheckout?'account.profile.form.default_billing':'account.profile.form.save_default_billing')}}:{},{},!isCheckout||type===ADDRESS_TYPE_SHIPPING?{isDefaultShipping:{type:'checkbox',label:i18n.text(!isCheckout?'account.profile.form.default_shipping':'account.profile.form.save_default_shipping')}}:{})};};export default generateFormConfig;
@@ -10,4 +10,4 @@ import _regeneratorRuntime from"@babel/runtime/regenerator";function _slicedToAr
10
10
  */var ProfileContact=function ProfileContact(_ref){var shopSettings=_ref.shopSettings,userLocation=_ref.userLocation,addContact=_ref.addContact,updateContact=_ref.updateContact,pop=_ref.pop,customer=_ref.customer,numberOfAddressLines=_ref.numberOfAddressLines;var _useAddressBook=useAddressBook(),updateOrderWithContact=_useAddressBook.updateOrderWithContact,type=_useAddressBook.type,isCheckout=_useAddressBook.isCheckout;var formContainerRef=useRef(null);var _useRoute=useRoute(),pathname=_useRoute.pathname,_useRoute$state$conta=_useRoute.state.contact,contact=_useRoute$state$conta===void 0?{}:_useRoute$state$conta;var addressLines=useMemo(function(){/**
11
11
  * Determine the number of address fields with a value. Customers are supposed to edit their
12
12
  * old addresses after the numberOfAddressLines shop setting was changed.
13
- */var addressLinesInContact=Object.keys(contact).reduce(function(acc,key){if(key.startsWith('address')&&contact[key]){return parseInt(key.charAt(key.length-1),10);}return acc;},0);return Math.max(numberOfAddressLines,addressLinesInContact);},[contact,numberOfAddressLines]);var formConfig=useMemo(function(){return generateFormConfig(shopSettings===null||shopSettings===void 0?void 0:shopSettings.supportedCountries,userLocation,isCheckout,type,addressLines);},[addressLines,isCheckout,shopSettings,type,userLocation]);var constraints=useMemo(function(){return generateConstraints(isCheckout);},[isCheckout]);var handleSubmit=useCallback(/*#__PURE__*/function(){var _ref2=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(values){var contactId,finalValues,fieldsUpdated,_ref3,_ref3$contactIds;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:LoadingProvider.setLoading(pathname);contactId=contact.id;finalValues=_extends({},values,{},isCheckout&&!(contact===null||contact===void 0?void 0:contact.emailAddress)?{emailAddress:customer===null||customer===void 0?void 0:customer.emailAddress}:{});fieldsUpdated=Object.keys(values).filter(function(key){return!['isDefaultBilling','isDefaultShipping'].includes(key);}).some(function(key){return values[key]!==contact[key];});_context.prev=4;if(!(contact===null||contact===void 0?void 0:contact.id)){_context.next=10;break;}_context.next=8;return updateContact(contact.id,finalValues);case 8:_context.next=15;break;case 10:_context.next=12;return addContact(finalValues);case 12:_ref3=_context.sent;_ref3$contactIds=_slicedToArray(_ref3.contactIds,1);contactId=_ref3$contactIds[0];case 15:if(!(updateOrderWithContact&&fieldsUpdated)){_context.next=19;break;}_context.next=18;return updateOrderWithContact(contactId);case 18:return _context.abrupt("return");case 19:pop();_context.next=24;break;case 22:_context.prev=22;_context.t0=_context["catch"](4);case 24:LoadingProvider.unsetLoading(pathname);case 25:case"end":return _context.stop();}}},_callee,null,[[4,22]]);}));return function(_x){return _ref2.apply(this,arguments);};}(),[addContact,contact,customer,isCheckout,pathname,pop,updateContact,updateOrderWithContact]);var formState=useFormState(contact,handleSubmit,constraints,formContainerRef);var validationErrors=useMemo(function(){return convertValidationErrors(formState.validationErrors||{});},[formState.validationErrors]);/* eslint-disable react-hooks/exhaustive-deps */var handleUpdate=useCallback(function(values){formState.setValues(values);},[formState.setValues]);/* eslint-enable react-hooks/exhaustive-deps */return React.createElement("div",{className:styles.root,ref:formContainerRef},React.createElement(FormBuilder,{name:"ProfileAddressForm",className:styles.form,config:formConfig,defaults:contact,validationErrors:validationErrors,handleUpdate:handleUpdate}),React.createElement("div",{className:styles.actions},React.createElement(RippleButton,{className:styles.button,rippleClassName:styles.ripple,type:"primary",onClick:formState.handleSubmit},i18n.text('account.profile.form.save'))));};ProfileContact.defaultProps={customer:null,numberOfAddressLines:null};export default connect(mapStateToProps,mapDispatchToProps)(ProfileContact);
13
+ */var addressLinesInContact=Object.keys(contact).reduce(function(acc,key){if(key.startsWith('address')&&contact[key]){return parseInt(key.charAt(key.length-1),10);}return acc;},0);return Math.max(numberOfAddressLines,addressLinesInContact);},[contact,numberOfAddressLines]);var formConfig=useMemo(function(){return generateFormConfig({supportedCountries:shopSettings===null||shopSettings===void 0?void 0:shopSettings.supportedCountries,countrySortOrder:shopSettings===null||shopSettings===void 0?void 0:shopSettings.countrySortOrder,userLocation:userLocation,isCheckout:isCheckout,type:type,numberOfAddressLines:addressLines});},[addressLines,isCheckout,shopSettings,type,userLocation]);var constraints=useMemo(function(){return generateConstraints(isCheckout);},[isCheckout]);var handleSubmit=useCallback(/*#__PURE__*/function(){var _ref2=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(values){var contactId,finalValues,fieldsUpdated,_ref3,_ref3$contactIds;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:LoadingProvider.setLoading(pathname);contactId=contact.id;finalValues=_extends({},values,{},isCheckout&&!(contact===null||contact===void 0?void 0:contact.emailAddress)?{emailAddress:customer===null||customer===void 0?void 0:customer.emailAddress}:{});fieldsUpdated=Object.keys(values).filter(function(key){return!['isDefaultBilling','isDefaultShipping'].includes(key);}).some(function(key){return values[key]!==contact[key];});_context.prev=4;if(!(contact===null||contact===void 0?void 0:contact.id)){_context.next=10;break;}_context.next=8;return updateContact(contact.id,finalValues);case 8:_context.next=15;break;case 10:_context.next=12;return addContact(finalValues);case 12:_ref3=_context.sent;_ref3$contactIds=_slicedToArray(_ref3.contactIds,1);contactId=_ref3$contactIds[0];case 15:if(!(updateOrderWithContact&&fieldsUpdated)){_context.next=19;break;}_context.next=18;return updateOrderWithContact(contactId);case 18:return _context.abrupt("return");case 19:pop();_context.next=24;break;case 22:_context.prev=22;_context.t0=_context["catch"](4);case 24:LoadingProvider.unsetLoading(pathname);case 25:case"end":return _context.stop();}}},_callee,null,[[4,22]]);}));return function(_x){return _ref2.apply(this,arguments);};}(),[addContact,contact,customer,isCheckout,pathname,pop,updateContact,updateOrderWithContact]);var formState=useFormState(contact,handleSubmit,constraints,formContainerRef);var validationErrors=useMemo(function(){return convertValidationErrors(formState.validationErrors||{});},[formState.validationErrors]);/* eslint-disable react-hooks/exhaustive-deps */var handleUpdate=useCallback(function(values){formState.setValues(values);},[formState.setValues]);/* eslint-enable react-hooks/exhaustive-deps */return React.createElement("div",{className:styles.root,ref:formContainerRef},React.createElement(FormBuilder,{name:"ProfileAddressForm",className:styles.form,config:formConfig,defaults:contact,validationErrors:validationErrors,handleUpdate:handleUpdate}),React.createElement("div",{className:styles.actions},React.createElement(RippleButton,{className:styles.button,rippleClassName:styles.ripple,type:"primary",onClick:formState.handleSubmit},i18n.text('account.profile.form.save'))));};ProfileContact.defaultProps={customer:null,numberOfAddressLines:null};export default connect(mapStateToProps,mapDispatchToProps)(ProfileContact);
@@ -6,10 +6,11 @@ function _typeof(obj){if(typeof Symbol==="function"&&typeof Symbol.iterator==="s
6
6
  * @param {Object} options Options for the helper
7
7
  * @param {Array} options.customerAttributes Customer attributes.
8
8
  * @param {Array} options.supportedCountries A list of supported countries.
9
+ * @param {Array} options.countrySortOrder Sort order for supported countries.
9
10
  * @param {Object} options.userLocation User location for better phone picker defaults.
10
11
  * @param {boolean} options.allowPleaseChoose Allows please choose option for required attributes.
11
12
  * @returns {Object}
12
- */export var generateCustomerAttributesFields=function generateCustomerAttributesFields(_ref){var customerAttributes=_ref.customerAttributes,supportedCountries=_ref.supportedCountries,userLocation=_ref.userLocation,_ref$allowPleaseChoos=_ref.allowPleaseChoose,allowPleaseChoose=_ref$allowPleaseChoos===void 0?true:_ref$allowPleaseChoos;return _extends({},Object.assign.apply(Object,[{}].concat(sortBy(customerAttributes,['sequenceId']).map(function(attribute){return _defineProperty({},"attribute_".concat(attribute.code),_extends({type:mapCustomerAttributeType(attribute),label:"".concat(attribute.name," ").concat(attribute.isRequired?'*':'')},attribute.values?{options:_extends({},!attribute.isRequired?{'':''}:{},{},attribute.isRequired&&attribute.type!=='collectionOfValues'&&allowPleaseChoose?{'':i18n.text('common.please_choose')}:{},{},Object.assign.apply(Object,[{}].concat(sortBy(attribute.values,['sequenceId']).map(function(option){return _defineProperty({},option.code,option.name);}))))}:{},{},attribute.type==='callingNumber'?{config:{supportedCountries:supportedCountries,userLocation:userLocation}}:null));}))));};/**
13
+ */export var generateCustomerAttributesFields=function generateCustomerAttributesFields(_ref){var customerAttributes=_ref.customerAttributes,supportedCountries=_ref.supportedCountries,countrySortOrder=_ref.countrySortOrder,userLocation=_ref.userLocation,_ref$allowPleaseChoos=_ref.allowPleaseChoose,allowPleaseChoose=_ref$allowPleaseChoos===void 0?true:_ref$allowPleaseChoos;return _extends({},Object.assign.apply(Object,[{}].concat(sortBy(customerAttributes,['sequenceId']).map(function(attribute){return _defineProperty({},"attribute_".concat(attribute.code),_extends({type:mapCustomerAttributeType(attribute),label:"".concat(attribute.name," ").concat(attribute.isRequired?'*':'')},attribute.values?{options:_extends({},!attribute.isRequired?{'':''}:{},{},attribute.isRequired&&attribute.type!=='collectionOfValues'&&allowPleaseChoose?{'':i18n.text('common.please_choose')}:{},{},Object.assign.apply(Object,[{}].concat(sortBy(attribute.values,['sequenceId']).map(function(option){return _defineProperty({},option.code,option.name);}))))}:{},{},attribute.type==='callingNumber'?{config:{supportedCountries:supportedCountries,countrySortOrder:countrySortOrder,userLocation:userLocation}}:null));}))));};/**
13
14
  * Generates form constraints for attributes.
14
15
  * @param {Object} customerAttributes Customer attributes.
15
16
  * @returns {Object}
@@ -1,6 +1,8 @@
1
1
  import{i18n}from'@shopgate/engage/core';var pickupFieldActions=[{type:'setVisibility',rules:[{context:'pickupPerson',type:'oneOf',data:['someoneElse']}]}];/**
2
2
  * Generates form configuration.
3
- * @param {Array} supportedCountries A list of supported countries.
4
- * @param {Object} userLocation User location for better phone picker defaults.
3
+ * @param {Object} options Options for the helper
4
+ * @param {Array} options.supportedCountries A list of supported countries.
5
+ * @param {Array} options.countrySortOrder Sort order for supported countries.
6
+ * @param {Object} options.userLocation User location for better phone picker defaults.
5
7
  * @returns {Object}
6
- */var generateFormConfig=function generateFormConfig(supportedCountries,userLocation){return{fields:{instructions:{type:'text',label:i18n.text('checkout.pickup_contact.form.instructions'),placeholder:i18n.text('checkout.pickup_contact.form.instructionsPlaceholder')},pickupPerson:{type:'radio',label:i18n.text('checkout.pickup_contact.form.who_will_pickup'),options:{me:i18n.text('checkout.pickup_contact.form.me'),someoneElse:i18n.text('checkout.pickup_contact.form.someone_else')}},firstName:{type:'text',actions:pickupFieldActions,label:"".concat(i18n.text('checkout.pickup_contact.form.firstName')," *")},lastName:{type:'text',actions:pickupFieldActions,label:"".concat(i18n.text('checkout.pickup_contact.form.lastName')," *")},emailAddress:{type:'email',actions:pickupFieldActions,label:"".concat(i18n.text('checkout.pickup_contact.form.emailAddress')," *")},mobile:{type:'phone_picker',label:"".concat(i18n.text('checkout.pickup_contact.form.mobile')," *"),actions:pickupFieldActions,config:{supportedCountries:supportedCountries,userLocation:userLocation}}}};};export default generateFormConfig;
8
+ */var generateFormConfig=function generateFormConfig(_ref){var supportedCountries=_ref.supportedCountries,countrySortOrder=_ref.countrySortOrder,userLocation=_ref.userLocation;return{fields:{instructions:{type:'text',label:i18n.text('checkout.pickup_contact.form.instructions'),placeholder:i18n.text('checkout.pickup_contact.form.instructionsPlaceholder')},pickupPerson:{type:'radio',label:i18n.text('checkout.pickup_contact.form.who_will_pickup'),options:{me:i18n.text('checkout.pickup_contact.form.me'),someoneElse:i18n.text('checkout.pickup_contact.form.someone_else')}},firstName:{type:'text',actions:pickupFieldActions,label:"".concat(i18n.text('checkout.pickup_contact.form.firstName')," *")},lastName:{type:'text',actions:pickupFieldActions,label:"".concat(i18n.text('checkout.pickup_contact.form.lastName')," *")},emailAddress:{type:'email',actions:pickupFieldActions,label:"".concat(i18n.text('checkout.pickup_contact.form.emailAddress')," *")},mobile:{type:'phone_picker',label:"".concat(i18n.text('checkout.pickup_contact.form.mobile')," *"),actions:pickupFieldActions,config:{supportedCountries:supportedCountries,countrySortOrder:countrySortOrder,userLocation:userLocation}}}};};export default generateFormConfig;
@@ -1,4 +1,4 @@
1
1
  function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};return _extends.apply(this,arguments);}import React from'react';import{css}from'glamor';import{themeConfig}from'@shopgate/engage';import{FormBuilder,SurroundPortals}from'@shopgate/engage/components';import{StylePresets}from'@shopgate/engage/components/Form';import generateFormConfig from"./CheckoutPickupContactForm.config";import Section from"./CheckoutSection";import{useCheckoutContext}from"../../hooks/common";import{CHECKOUT_PICKUP_CONTACT_FORM}from"../../constants";var variables=themeConfig.variables;var styles={root:css({padding:16,paddingTop:0,display:'flex',flex:'0 0 auto',flexDirection:'column'}).toString(),h1:css({fontSize:24,marginBottom:4,color:'var(--color-text-high-emphasis)'}).toString(),h2:css({fontSize:16}).toString(),form:css(_extends({' .pickupFormPickupPerson':{marginTop:variables.gap.small},' .pickupFormPickupPerson .me':{marginRight:variables.gap.big},' .pickupFormPickupPerson .label span':{color:'var(--color-text-high-emphasis)',fontWeight:'bold'},' .pickupFormPickupPerson .radioGroup':{marginTop:variables.gap.small,flexDirection:'row',' .uncheckedIcon':{color:'var(--color-text-medium-emphasis)'}}},StylePresets.OUTLINED_FORM_FIELDS)).toString()};/**
2
2
  * PickupContactForm
3
3
  * @returns {JSX}
4
- */var PickupContactForm=function PickupContactForm(){var _useCheckoutContext=useCheckoutContext(),supportedCountries=_useCheckoutContext.supportedCountries,userLocation=_useCheckoutContext.userLocation,defaultPickupPersonState=_useCheckoutContext.defaultPickupPersonState,formValidationErrors=_useCheckoutContext.formValidationErrors,formSetValues=_useCheckoutContext.formSetValues,isPickupContactSelectionEnabled=_useCheckoutContext.isPickupContactSelectionEnabled;var formConfig=React.useMemo(function(){return generateFormConfig(supportedCountries,userLocation);},[supportedCountries,userLocation]);var handleUpdate=React.useCallback(function(values){formSetValues(values);},[formSetValues]);if(!isPickupContactSelectionEnabled){return null;}return React.createElement(SurroundPortals,{portalName:CHECKOUT_PICKUP_CONTACT_FORM},React.createElement("div",{className:styles.root},React.createElement(Section,{title:"checkout.pickup_contact.headline",hasForm:true},React.createElement(FormBuilder,{className:styles.form,name:"PickupForm",config:formConfig,defaults:defaultPickupPersonState,validationErrors:formValidationErrors,handleUpdate:handleUpdate}))));};export default PickupContactForm;
4
+ */var PickupContactForm=function PickupContactForm(){var _useCheckoutContext=useCheckoutContext(),supportedCountries=_useCheckoutContext.supportedCountries,countrySortOrder=_useCheckoutContext.countrySortOrder,userLocation=_useCheckoutContext.userLocation,defaultPickupPersonState=_useCheckoutContext.defaultPickupPersonState,formValidationErrors=_useCheckoutContext.formValidationErrors,formSetValues=_useCheckoutContext.formSetValues,isPickupContactSelectionEnabled=_useCheckoutContext.isPickupContactSelectionEnabled;var formConfig=React.useMemo(function(){return generateFormConfig({supportedCountries:supportedCountries,countrySortOrder:countrySortOrder,userLocation:userLocation});},[countrySortOrder,supportedCountries,userLocation]);var handleUpdate=React.useCallback(function(values){formSetValues(values);},[formSetValues]);if(!isPickupContactSelectionEnabled){return null;}return React.createElement(SurroundPortals,{portalName:CHECKOUT_PICKUP_CONTACT_FORM},React.createElement("div",{className:styles.root},React.createElement(Section,{title:"checkout.pickup_contact.headline",hasForm:true},React.createElement(FormBuilder,{className:styles.form,name:"PickupForm",config:formConfig,defaults:defaultPickupPersonState,validationErrors:formValidationErrors,handleUpdate:handleUpdate}))));};export default PickupContactForm;
@@ -21,7 +21,7 @@ case 70:case"end":return _context2.stop();}}},_callee2,null,[[2,7],[15,20],[34,5
21
21
  React.useEffect(function(){if(isLocked){setLoading(true);return;}setLoading(false);},[isLocked]);React.useEffect(function(){if(isLoading){LoadingProvider.setLoading(pathPattern);return;}LoadingProvider.resetLoading(pathPattern);},[isLoading,pathPattern]);// Hold form states.
22
22
  var formState=useFormState(defaultPickupPersonState,handleSubmitOrder,validationRules);// When "someone-else" is picked for pickup the validation rules need to change.
23
23
  React.useEffect(function(){setValidationRules(formState.values.pickupPerson==='me'||isGuestCheckout?selfPickupConstraints:pickupConstraints);},[formState.values.pickupPerson,isGuestCheckout]);var isOrderable=React.useMemo(function(){return typeof(checkoutOrder===null||checkoutOrder===void 0?void 0:checkoutOrder.isOrderable)!=='undefined'?checkoutOrder.isOrderable:true;},[checkoutOrder]);// Create memoized context value.
24
- var value=React.useMemo(function(){return{setPaymentHandler:function setPaymentHandler(handler){setPaymentButton(function(){return handler.getCustomPayButton();});paymentHandlerRef.current=handler;},paymentButton:paymentButton,paymentData:paymentData,setPaymentData:setPaymentData,paymentTransactions:paymentTransactions,isLocked:isLocked,isButtonLocked:(isLocked||isButtonLocked)&&needsPayment||!isOrderable,isLoading:isLoading,supportedCountries:shopSettings.supportedCountries,formValidationErrors:convertValidationErrors(formState.validationErrors||{}),formSetValues:formState.setValues,handleSubmitOrder:function handleSubmitOrder(){var promise=new Promise(function(resolve,reject){submitPromise.current={resolve:resolve,reject:reject};});formState.handleSubmit.apply(formState,arguments);return promise;},handleValidation:function handleValidation(){return formState.validate(formState.values);},updateShippingMethod:handleUpdateShippingMethod,defaultPickupPersonState:defaultPickupPersonState,userLocation:userLocation,billingAddress:billingAddress,shippingAddress:shippingAddress,pickupAddress:pickupAddress,taxLines:taxLines,order:checkoutOrder,currencyCode:checkoutOrder===null||checkoutOrder===void 0?void 0:checkoutOrder.currencyCode,needsPayment:needsPayment,orderReserveOnly:orderReserveOnly,isShippingAddressSelectionEnabled:isShippingAddressSelectionEnabled,isPickupContactSelectionEnabled:isPickupContactSelectionEnabled,isGuestCheckout:isGuestCheckout,fulfillmentSlot:fulfillmentSlot,optInFormSetValues:optInFormState.setValues,defaultOptInFormState:defaultOptInFormState,setUpdateOptIns:function setUpdateOptIns(){var val=arguments.length>0&&arguments[0]!==undefined?arguments[0]:true;_setUpdateOptIns(val);},setButtonLocked:setButtonLocked,setLoading:setLoading,setLocked:setLocked};},[paymentButton,paymentData,paymentTransactions,isLocked,isButtonLocked,needsPayment,isOrderable,isLoading,shopSettings.supportedCountries,formState,handleUpdateShippingMethod,userLocation,billingAddress,shippingAddress,pickupAddress,taxLines,checkoutOrder,orderReserveOnly,isShippingAddressSelectionEnabled,isPickupContactSelectionEnabled,isGuestCheckout,fulfillmentSlot,optInFormState.setValues,defaultOptInFormState]);// Handle deeplinks from external payment site.
24
+ var value=React.useMemo(function(){return{setPaymentHandler:function setPaymentHandler(handler){setPaymentButton(function(){return handler.getCustomPayButton();});paymentHandlerRef.current=handler;},paymentButton:paymentButton,paymentData:paymentData,setPaymentData:setPaymentData,paymentTransactions:paymentTransactions,isLocked:isLocked,isButtonLocked:(isLocked||isButtonLocked)&&needsPayment||!isOrderable,isLoading:isLoading,supportedCountries:shopSettings.supportedCountries,countrySortOrder:shopSettings.countrySortOrder,formValidationErrors:convertValidationErrors(formState.validationErrors||{}),formSetValues:formState.setValues,handleSubmitOrder:function handleSubmitOrder(){var promise=new Promise(function(resolve,reject){submitPromise.current={resolve:resolve,reject:reject};});formState.handleSubmit.apply(formState,arguments);return promise;},handleValidation:function handleValidation(){return formState.validate(formState.values);},updateShippingMethod:handleUpdateShippingMethod,defaultPickupPersonState:defaultPickupPersonState,userLocation:userLocation,billingAddress:billingAddress,shippingAddress:shippingAddress,pickupAddress:pickupAddress,taxLines:taxLines,order:checkoutOrder,currencyCode:checkoutOrder===null||checkoutOrder===void 0?void 0:checkoutOrder.currencyCode,needsPayment:needsPayment,orderReserveOnly:orderReserveOnly,isShippingAddressSelectionEnabled:isShippingAddressSelectionEnabled,isPickupContactSelectionEnabled:isPickupContactSelectionEnabled,isGuestCheckout:isGuestCheckout,fulfillmentSlot:fulfillmentSlot,optInFormSetValues:optInFormState.setValues,defaultOptInFormState:defaultOptInFormState,setUpdateOptIns:function setUpdateOptIns(){var val=arguments.length>0&&arguments[0]!==undefined?arguments[0]:true;_setUpdateOptIns(val);},setButtonLocked:setButtonLocked,setLoading:setLoading,setLocked:setLocked};},[paymentButton,paymentData,paymentTransactions,isLocked,isButtonLocked,needsPayment,isOrderable,isLoading,shopSettings.supportedCountries,shopSettings.countrySortOrder,formState,handleUpdateShippingMethod,userLocation,billingAddress,shippingAddress,pickupAddress,taxLines,checkoutOrder,orderReserveOnly,isShippingAddressSelectionEnabled,isPickupContactSelectionEnabled,isGuestCheckout,fulfillmentSlot,optInFormState.setValues,defaultOptInFormState]);// Handle deeplinks from external payment site.
25
25
  React.useEffect(function(){if(!isAvailable())return undefined;/**
26
26
  * @param {Object} event Event
27
27
  */var listener=/*#__PURE__*/function(){var _ref9=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(event){var _ref10,_ref10$link,link,_link$match,_link$match2,_,_scheme,path,_ref11,_ref12,order;return _regeneratorRuntime.wrap(function _callee4$(_context4){while(1){switch(_context4.prev=_context4.next){case 0:_ref10=(event===null||event===void 0?void 0:event.detail)||{},_ref10$link=_ref10.link,link=_ref10$link===void 0?'':_ref10$link;/* eslint-disable-next-line no-unused-vars */_link$match=link.match(/(.*):\/\/([a-zA-Z0-9-/]*)(.*)/),_link$match2=_slicedToArray(_link$match,3),_=_link$match2[0],_scheme=_link$match2[1],path=_link$match2[2];// Order is done, fetch again to retrieve infos for success page
@@ -1,8 +1,20 @@
1
- import _camelCase from"lodash/camelCase";function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_nonIterableRest();}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance");}function _iterableToArrayLimit(arr,i){var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=arr[Symbol.iterator](),_s;!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break;}}catch(err){_d=true;_e=err;}finally{try{if(!_n&&_i["return"]!=null)_i["return"]();}finally{if(_d)throw _e;}}return _arr;}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr;}import*as React from'react';import classnames from'classnames';import{i18n}from'@shopgate/engage/core';import{parsePhoneNumber}from'react-phone-number-input';import PhoneInput from'react-phone-number-input/mobile';import{getCountries}from'react-phone-number-input/input';import en from'react-phone-number-input/locale/en';import de from'react-phone-number-input/locale/de';import es from'react-phone-number-input/locale/es';import fr from'react-phone-number-input/locale/fr';import pt from'react-phone-number-input/locale/pt';import flags from'react-phone-number-input/flags';import TextField from'@shopgate/pwa-ui-shared/TextField';import{useCountriesNames}from'@shopgate/engage/i18n';import{css}from'glamor';import{themeConfig}from'@shopgate/engage';import FormHelper from"./FormHelper";var variables=themeConfig.variables,colors=themeConfig.colors;var styles={formField:css({width:'100%',marginBottom:'0px !important'}).toString(),phoneField:css({position:'relative',width:'100%',paddingTop:variables.gap.big*0.75,paddingBottom:variables.gap.big*1.25,' input.PhoneInputInput':{outline:'none',fontSize:'1rem',lineHeight:'1.1875rem',borderRadius:0,paddingBottom:variables.gap.xsmall*1.5,borderBottom:"1px solid ".concat(colors.shade12),'&:focus':{borderBottom:"2px solid ".concat(colors.primary),paddingBottom:variables.gap.xsmall*1.5-1}}}),phoneFieldError:css({' input.PhoneInputInput':{borderBottom:"2px solid var(--color-state-alert, ".concat(colors.error,")"),paddingBottom:variables.gap.xsmall*1.5-1}}).toString(),phoneFieldErrorText:css({position:'absolute',width:'100%',bottom:'-10px',fontSize:'0.75rem',lineHeight:0.875,color:"var(--color-state-alert, ".concat(colors.error,")"),overflow:'hidden',whiteSpace:'nowrap',textOverflow:'ellipsis',marginLeft:'38px'})};var builtInCountries=getCountries();var locales={en:en,de:de,es:es,fr:fr,pt:pt};/**
1
+ import _isEqual from"lodash/isEqual";import _upperCase from"lodash/upperCase";import _camelCase from"lodash/camelCase";function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};return _extends.apply(this,arguments);}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_nonIterableRest();}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance");}function _iterableToArrayLimit(arr,i){var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=arr[Symbol.iterator](),_s;!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break;}}catch(err){_d=true;_e=err;}finally{try{if(!_n&&_i["return"]!=null)_i["return"]();}finally{if(_d)throw _e;}}return _arr;}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr;}import*as React from'react';import classnames from'classnames';import{i18n}from'@shopgate/engage/core';import{parsePhoneNumber}from'react-phone-number-input';import PhoneInputCountrySelect from'react-phone-number-input/mobile';import PhoneInput from'react-phone-number-input/input-mobile';import{getCountries}from'react-phone-number-input/input';import en from'react-phone-number-input/locale/en';import de from'react-phone-number-input/locale/de';import es from'react-phone-number-input/locale/es';import fr from'react-phone-number-input/locale/fr';import pt from'react-phone-number-input/locale/pt';import flags from'react-phone-number-input/flags';import{useCountriesNames}from'@shopgate/engage/i18n';import{css}from'glamor';import{themeConfig}from'@shopgate/engage';import Label from'@shopgate/pwa-ui-shared/TextField/components/Label';import FormHelper from"./FormHelper";var variables=themeConfig.variables,colors=themeConfig.colors;var styles={formField:css({width:'100%',marginBottom:'0px !important'}).toString(),phoneField:css({position:'relative',width:'100%',paddingTop:variables.gap.big*0.75,paddingBottom:variables.gap.big*1.25,' input.PhoneInputInput':{outline:'none',fontSize:'1rem',lineHeight:'1.1875rem',borderRadius:0,paddingBottom:variables.gap.xsmall*1.5,borderBottom:"1px solid ".concat(colors.shade12),'&:focus':{borderBottom:"2px solid ".concat(colors.primary),paddingBottom:variables.gap.xsmall*1.5-1}}}),phoneFieldError:css({' input.PhoneInputInput':{borderBottom:"2px solid var(--color-state-alert, ".concat(colors.error,")"),paddingBottom:variables.gap.xsmall*1.5-1}}).toString(),phoneFieldErrorText:css({position:'absolute',width:'100%',bottom:'-10px',fontSize:'0.75rem',lineHeight:0.875,color:"var(--color-state-alert, ".concat(colors.error,")"),overflow:'hidden',whiteSpace:'nowrap',textOverflow:'ellipsis',marginLeft:'38px'})};var builtInCountries=getCountries();var locales={en:en,de:de,es:es,fr:fr,pt:pt};/**
2
2
  * Renders the reserve form phone input maybe with country selection.
3
3
  * @param {Object} props The component props.
4
4
  * @returns {JSX.Element}
5
- */var UnwrappedElementPhoneNumber=React.memo(function(props){var _classnames;var element=props.element,name=props.name,errorText=props.errorText,value=props.value,visible=props.visible,formName=props.formName;var label=element.label,handleChange=element.handleChange,_element$default=element["default"],defaultValue=_element$default===void 0?'':_element$default,_element$disabled=element.disabled,disabled=_element$disabled===void 0?false:_element$disabled,_element$config=element.config;_element$config=_element$config===void 0?{}:_element$config;var _element$config$suppo=_element$config.supportedCountries,supportedCountries=_element$config$suppo===void 0?[]:_element$config$suppo,_element$config$userL=_element$config.userLocation,userLocation=_element$config$userL===void 0?{}:_element$config$userL;var _React$useState=React.useState(false),_React$useState2=_slicedToArray(_React$useState,2),isFocused=_React$useState2[0],setIsFocused=_React$useState2[1];// Maps available countries to correct format.
6
- var countries=React.useMemo(function(){if(!supportedCountries){return builtInCountries;}var sortedCountries=[].concat(builtInCountries);var sanitizedSupportedCountries=supportedCountries.map(function(country){var pieces=country.split('_');return pieces[0];});sanitizedSupportedCountries.forEach(function(country){sortedCountries.splice(sortedCountries.indexOf(country),1);});return[].concat(sanitizedSupportedCountries,sortedCountries);},[supportedCountries]);var countriesNames=useCountriesNames(supportedCountries,locales);// Get labels for supported countries.
7
- var labels=React.useMemo(function(){var output={};if(!countries){return output;}countries.forEach(function(key){var pieces=key.split('_');output[pieces[0]]=countriesNames[key];});return output;},[countries,countriesNames]);// Sets the default country based on the users location.
8
- var defaultCountry=React.useMemo(function(){if(!defaultValue&&!value&&userLocation){return userLocation.country;}var phoneNumber=parsePhoneNumber(value||'');if(phoneNumber&&phoneNumber.country){return phoneNumber.country;}if(userLocation){return userLocation.country;}return i18n.getLang().split('-')[1];},[defaultValue,userLocation,value]);var handleChangeWrapped=React.useCallback(function(phoneValue){handleChange(phoneValue,{target:{name:name}});},[handleChange,name]);var phoneClasses=classnames((_classnames={},_defineProperty(_classnames,_camelCase(name),true),_defineProperty(_classnames,"phonePicker",true),_defineProperty(_classnames,"phonePickerError",!!errorText),_defineProperty(_classnames,"validationError",!!errorText),_defineProperty(_classnames,"phonePickerFocused",isFocused),_defineProperty(_classnames,styles.phoneField,true),_defineProperty(_classnames,styles.phoneFieldError,!!errorText),_classnames));if(!visible){return null;}if(!countries||countries.length===0){return React.createElement(React.Fragment,null,React.createElement(TextField,{name:name,value:value,onChange:handleChange,onFocus:function onFocus(){return setIsFocused(true);},onBlur:function onBlur(){return setIsFocused(false);},label:label,className:classnames(styles.formField,{validationError:!!errorText}),disabled:disabled}),React.createElement(FormHelper,{errorText:errorText,element:element,formName:formName}));}return React.createElement("div",{className:"formBuilderField"},React.createElement("div",{className:phoneClasses},React.createElement(PhoneInput,{defaultCountry:defaultCountry,addInternationalOption:false,flags:flags,name:name,value:value||'',onChange:handleChangeWrapped,onFocus:function onFocus(){return setIsFocused(true);},onBlur:function onBlur(){return setIsFocused(false);},placeholder:label,countries:countries,labels:labels,disabled:disabled,countryOptionsOrder:supportedCountries.length?[].concat(supportedCountries,['|']):[]})),React.createElement(FormHelper,{errorText:errorText,element:element,formName:formName}));});export default UnwrappedElementPhoneNumber;
5
+ */var UnwrappedElementPhoneNumber=React.memo(function(props){var _classnames;var element=props.element,name=props.name,errorText=props.errorText,value=props.value,visible=props.visible,formName=props.formName;var label=element.label,handleChange=element.handleChange,_element$disabled=element.disabled,disabled=_element$disabled===void 0?false:_element$disabled,_element$config=element.config;_element$config=_element$config===void 0?{}:_element$config;var _element$config$suppo=_element$config.supportedCountries,supportedCountries=_element$config$suppo===void 0?[]:_element$config$suppo,_element$config$count=_element$config.countrySortOrder,countrySortOrder=_element$config$count===void 0?[]:_element$config$count,_element$config$userL=_element$config.userLocation,userLocation=_element$config$userL===void 0?{}:_element$config$userL;var _React$useState=React.useState(false),_React$useState2=_slicedToArray(_React$useState,2),isFocused=_React$useState2[0],setIsFocused=_React$useState2[1];// Maps available countries to correct format.
6
+ var countries=React.useMemo(function(){if(supportedCountries.length===0){return builtInCountries;}return supportedCountries.map(function(country){var pieces=country.split('_');return _upperCase(pieces[0]);});},[supportedCountries]);var countriesNames=useCountriesNames(countries,locales);// Get labels for supported countries.
7
+ var labels=React.useMemo(function(){var output={};if(!countries){return output;}countries.forEach(function(key){var pieces=key.split('_');output[pieces[0]]=countriesNames[key];});return output;},[countries,countriesNames]);var defaultCountry=React.useMemo(function(){var country;if(value){// Try to parse the value to determine a country
8
+ var phoneNumber=parsePhoneNumber(value||'');if(phoneNumber&&phoneNumber.country){country=phoneNumber.country;}}if(!country&&userLocation){// Take the country from the user location if present
9
+ country=userLocation.country;}if(!country){// If no country could be determined yet, take the country from the language
10
+ var _i18n$getLang$split=i18n.getLang().split('-');var _i18n$getLang$split2=_slicedToArray(_i18n$getLang$split,2);country=_i18n$getLang$split2[1];}// Check if the determined country is included inside the available countries
11
+ if(!countries.includes(country)){if((countrySortOrder===null||countrySortOrder===void 0?void 0:countrySortOrder.length)&&countries.includes(countrySortOrder[0])){// Take first country if the sort order list if present
12
+ var _countrySortOrder=_slicedToArray(countrySortOrder,1);country=_countrySortOrder[0];}else{// Take first country from the list
13
+ var _countries=_slicedToArray(countries,1);country=_countries[0];}}return country;},[countries,countrySortOrder,userLocation,value]);var countryOptionsOrder=React.useMemo(function(){/**
14
+ * To avoid component errors remove countries from the sort order array that are not part
15
+ * of the counties array.
16
+ */var sanitizedCountrySortOrder=countrySortOrder.filter(function(countryCode){return countries.includes(countryCode);});var countryListsEqual=_isEqual([].concat(countries).sort(),[].concat(sanitizedCountrySortOrder).sort());/**
17
+ * When list with supported countries has the same entries as the country sort order, we don't
18
+ * need to add a separator to the countryOptionsOrder array since the country picker lists
19
+ * will not show a section with unordered countries.
20
+ */return sanitizedCountrySortOrder.length?[].concat(sanitizedCountrySortOrder,countryListsEqual?[]:['|']):[];},[countries,countrySortOrder]);var hasCountrySelect=React.useMemo(function(){return countries.length>1;},[countries.length]);var handleChangeWrapped=React.useCallback(function(phoneValue){handleChange(phoneValue,{target:{name:name}});},[handleChange,name]);var phoneClasses=classnames('textField',(_classnames={simpleInput:!hasCountrySelect},_defineProperty(_classnames,_camelCase(name),true),_defineProperty(_classnames,"phonePicker",true),_defineProperty(_classnames,"phonePickerError",!!errorText),_defineProperty(_classnames,"validationError",!!errorText),_defineProperty(_classnames,"phonePickerFocused",isFocused),_defineProperty(_classnames,styles.phoneField,true),_defineProperty(_classnames,styles.phoneFieldError,!!errorText),_classnames));if(!visible){return null;}var Component=hasCountrySelect?PhoneInputCountrySelect:PhoneInput;return React.createElement("div",{className:"formBuilderField"},React.createElement("div",{className:phoneClasses},React.createElement(Label,{label:label,isFocused:isFocused,isFloating:isFocused||!!value}),React.createElement(Component,_extends({defaultCountry:defaultCountry,name:name,value:value||'',onChange:handleChangeWrapped,onFocus:function onFocus(){return setIsFocused(true);},onBlur:function onBlur(){return setIsFocused(false);},disabled:disabled},hasCountrySelect?{countryOptionsOrder:countryOptionsOrder,addInternationalOption:false,flags:flags,countries:countries,labels:labels}:{className:'PhoneInputInput'}))),React.createElement(FormHelper,{errorText:errorText,element:element,formName:formName}));});export default UnwrappedElementPhoneNumber;
@@ -1 +1 @@
1
- function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}import{themeConfig}from'@shopgate/engage';import{responsiveMediaQuery}from'@shopgate/engage/styles';var colors=themeConfig.colors;export var TWO_COLUMN_LAYOUT=_defineProperty({},responsiveMediaQuery('>=md',{webOnly:false}),{display:'flex',flexDirection:'row',flexWrap:'wrap',margin:-8,marginTop:16,marginBottom:8,'>div':{flex:'1 1 50%',padding:'0 8px',maxWidth:'50%'},'>.phonePicker':{marginLeft:8,marginRight:8,flexBasis:'calc(50% - 16px)'}});export var OUTLINED_FORM_FIELDS={' .formHelper':{minHeight:32,' .errorText':{position:'relative',textOverflow:'unset',whiteSpace:'unset',lineHeight:'15px',bottom:'unset',padding:'8px 8px 8px 16px'}},' .formBuilderField':{' .textField, .formElement:not(.radioGroup):not(.checkbox), .phonePicker':{marginBottom:'unset',paddingBottom:'unset'}},' .radioGroup + .formHelper, .checkbox + .formHelper':{minHeight:16},' .checkbox':{paddingBottom:0},' .textField, .formElement:not(.radioGroup):not(.checkbox), .phonePicker':{paddingBottom:8,background:"var(--color-background-accent, ".concat(colors.shade8,")"),padding:0,marginBottom:32,borderTopLeftRadius:4,borderTopRightRadius:4,borderBottom:"1px solid ".concat(colors.shade12)},' .phonePickerError':{borderBottom:"2px solid var(--color-state-alert, ".concat(colors.error,")")},' .phonePickerFocused:not(.phonePickerError)':{borderBottom:'2px solid var(--color-primary)'},' .formElement:not(.radioGroup) label':{paddingLeft:24,color:'var(--color-text-low-emphasis)',transform:'translate3d(0, -18px, 0) scale3d(0.75, 0.75, 0.75)'},' .textField label':{paddingLeft:17,color:'var(--color-text-low-emphasis)','.floating':{transform:'translate3d(3px, -18px, 0) scale3d(0.75, 0.75, 0.75)'}},' .formElement:not(.radioGroup) select, .formElement .info-field':{paddingLeft:16,color:'var(--color-text-high-emphasis)'},' .formElement:not(.radioGroup):not(.checkbox) svg':{marginTop:8,right:8},' .formElement:not(.radioGroup) .placeholder':{paddingLeft:20,color:'var(--color-text-low-emphasis)'},' .formElement.disabled, .textField.disabled':{' input, select, svg':{opacity:0.28},' .label':{opacity:0.6}},' .textField input':{paddingLeft:16,color:'var(--color-text-high-emphasis)'},' .underline':{marginBottom:0,borderBottom:'none'},' .errorText':{bottom:-20,paddingLeft:16},' .phonePicker':{paddingTop:24,paddingBottom:2},' .phonePicker .PhoneInputInput':{borderBottom:'none',color:'var(--color-text-high-emphasis)','&:focus':{borderBottom:'none'},'::placeholder':{color:'var(--color-text-low-emphasis)'}},' .phonePicker .errorText':{marginLeft:-8},' .PhoneInputCountryIcon':{marginBottom:8,marginLeft:16},' .PhoneInputCountrySelectArrow':{marginRight:6,marginLeft:10,marginBottom:8},' .placeholder':{color:colors.shade12}};
1
+ function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}import{themeConfig}from'@shopgate/engage';import{responsiveMediaQuery}from'@shopgate/engage/styles';var colors=themeConfig.colors;export var TWO_COLUMN_LAYOUT=_defineProperty({},responsiveMediaQuery('>=md',{webOnly:false}),{display:'flex',flexDirection:'row',flexWrap:'wrap',margin:-8,marginTop:16,marginBottom:8,'>div':{flex:'1 1 50%',padding:'0 8px',maxWidth:'50%'},'>.phonePicker':{marginLeft:8,marginRight:8,flexBasis:'calc(50% - 16px)'}});export var OUTLINED_FORM_FIELDS={' .formHelper':{minHeight:32,' .errorText':{position:'relative',textOverflow:'unset',whiteSpace:'unset',lineHeight:'15px',bottom:'unset',padding:'8px 8px 8px 16px'}},' .formBuilderField':{' .textField, .formElement:not(.radioGroup):not(.checkbox), .phonePicker':{marginBottom:'unset',paddingBottom:'unset'}},' .radioGroup + .formHelper, .checkbox + .formHelper':{minHeight:16},' .checkbox':{paddingBottom:0},' .textField, .formElement:not(.radioGroup):not(.checkbox), .phonePicker':{paddingBottom:8,background:"var(--color-background-accent, ".concat(colors.shade8,")"),padding:0,marginBottom:32,borderTopLeftRadius:4,borderTopRightRadius:4,borderBottom:"1px solid ".concat(colors.shade12)},' .phonePickerError':{borderBottom:"2px solid var(--color-state-alert, ".concat(colors.error,")")},' .phonePickerFocused:not(.phonePickerError)':{borderBottom:'2px solid var(--color-primary)'},' .formElement:not(.radioGroup) label':{paddingLeft:24,color:'var(--color-text-low-emphasis)',transform:'translate3d(0, -18px, 0) scale3d(0.75, 0.75, 0.75)'},' .textField label':{paddingLeft:17,color:'var(--color-text-low-emphasis)','.floating':{transform:'translate3d(3px, -18px, 0) scale3d(0.75, 0.75, 0.75)'}},' .formElement:not(.radioGroup) select, .formElement .info-field':{paddingLeft:16,color:'var(--color-text-high-emphasis)'},' .formElement:not(.radioGroup):not(.checkbox) svg':{marginTop:8,right:8},' .formElement:not(.radioGroup) .placeholder':{paddingLeft:20,color:'var(--color-text-low-emphasis)'},' .formElement.disabled, .textField.disabled':{' input, select, svg':{opacity:0.28},' .label':{opacity:0.6}},' .textField input':{paddingLeft:16,color:'var(--color-text-high-emphasis)'},' .underline':{marginBottom:0,borderBottom:'none'},' .errorText':{bottom:-20,paddingLeft:16},' .phonePicker':{paddingTop:24,paddingBottom:2},' .textField.phonePicker:not(.simpleInput) .label':{left:48,'&.floating':{left:0}},' .textField.phonePicker:not(.simpleInput) input':{paddingLeft:0},' .phonePicker > .PhoneInputInput':{paddingLeft:16,width:'100%'},' .phonePicker .PhoneInputInput':{borderBottom:'none',color:'var(--color-text-high-emphasis)','&:focus':{borderBottom:'none'},'::placeholder':{color:'var(--color-text-low-emphasis)'}},' .phonePicker .errorText':{marginLeft:-8},' .PhoneInputCountryIcon':{marginBottom:8,marginLeft:16},' .PhoneInputCountrySelectArrow':{marginRight:6,marginLeft:10,marginBottom:8},' .placeholder':{color:colors.shade12}};
@@ -1,3 +1,3 @@
1
1
  import React,{useMemo,useCallback,Fragment}from'react';import{FormBuilder,I18n,Link,RippleButton,MessageBar,ResponsiveContainer}from'@shopgate/engage/components';import{LOGIN_PATH,useRoute,i18n}from'@shopgate/engage/core';import generateFormConfig from"./OrderDetailsAuthenticateForm.config";import{useOrderDetails}from"../../hooks";import{container,form,submitButton,loginLink,messageBarContainer}from"./OrderDetailsAuthenticate.style";/**
2
2
  * @returns {JSX}
3
- */var OrderDetailsAuthenticate=function OrderDetailsAuthenticate(){var _useRoute=useRoute(),pathname=_useRoute.pathname;var _useOrderDetails=useOrderDetails(),supportedCountries=_useOrderDetails.supportedCountries,userLocation=_useOrderDetails.userLocation,validationErrors=_useOrderDetails.validationErrors,updateForm=_useOrderDetails.updateForm,showForm=_useOrderDetails.showForm,handleSubmit=_useOrderDetails.handleSubmit,defaultFormState=_useOrderDetails.defaultFormState,isUserLoggedIn=_useOrderDetails.isUserLoggedIn,isLoading=_useOrderDetails.isLoading,errorMessage=_useOrderDetails.errorMessage;var formConfig=useMemo(function(){return generateFormConfig(supportedCountries,userLocation);},[supportedCountries,userLocation]);var handleUpdate=useCallback(function(values){updateForm(values);},[updateForm]);var messages=useMemo(function(){if(!errorMessage){return null;}return[{type:'error',message:errorMessage}];},[errorMessage]);if(!showForm&&!messages){return null;}return React.createElement(Fragment,null,React.createElement(ResponsiveContainer,{appAlways:true,breakpoint:"<=xs"},messages&&React.createElement(MessageBar,{messages:messages,showIcons:true,classNames:{container:messageBarContainer}})),React.createElement("div",{className:container},React.createElement(ResponsiveContainer,{webOnly:true,breakpoint:">xs"},messages&&React.createElement(MessageBar,{messages:messages,showIcons:true,classNames:{container:messageBarContainer}})),showForm&&React.createElement(Fragment,null,React.createElement("p",null,React.createElement(I18n.Text,{string:"order_details.authenticate.instructions"}),!isUserLoggedIn&&React.createElement(Fragment,null,' ',React.createElement(Link,{className:loginLink,tag:"span",href:LOGIN_PATH,state:{redirect:{location:pathname}}},React.createElement(I18n.Text,{string:"order_details.authenticate.or_login"})))),React.createElement(FormBuilder,{className:form,name:"orderDetailsAuthenticate",config:formConfig,defaults:defaultFormState,validationErrors:validationErrors,handleUpdate:handleUpdate,onSubmit:handleSubmit}),React.createElement("div",null,React.createElement(RippleButton,{type:"secondary",onClick:handleSubmit,disabled:isLoading,className:submitButton},i18n.text('common.submit'))))));};export default OrderDetailsAuthenticate;
3
+ */var OrderDetailsAuthenticate=function OrderDetailsAuthenticate(){var _useRoute=useRoute(),pathname=_useRoute.pathname;var _useOrderDetails=useOrderDetails(),supportedCountries=_useOrderDetails.supportedCountries,countrySortOrder=_useOrderDetails.countrySortOrder,userLocation=_useOrderDetails.userLocation,validationErrors=_useOrderDetails.validationErrors,updateForm=_useOrderDetails.updateForm,showForm=_useOrderDetails.showForm,handleSubmit=_useOrderDetails.handleSubmit,defaultFormState=_useOrderDetails.defaultFormState,isUserLoggedIn=_useOrderDetails.isUserLoggedIn,isLoading=_useOrderDetails.isLoading,errorMessage=_useOrderDetails.errorMessage;var formConfig=useMemo(function(){return generateFormConfig({supportedCountries:supportedCountries,countrySortOrder:countrySortOrder,userLocation:userLocation});},[countrySortOrder,supportedCountries,userLocation]);var handleUpdate=useCallback(function(values){updateForm(values);},[updateForm]);var messages=useMemo(function(){if(!errorMessage){return null;}return[{type:'error',message:errorMessage}];},[errorMessage]);if(!showForm&&!messages){return null;}return React.createElement(Fragment,null,React.createElement(ResponsiveContainer,{appAlways:true,breakpoint:"<=xs"},messages&&React.createElement(MessageBar,{messages:messages,showIcons:true,classNames:{container:messageBarContainer}})),React.createElement("div",{className:container},React.createElement(ResponsiveContainer,{webOnly:true,breakpoint:">xs"},messages&&React.createElement(MessageBar,{messages:messages,showIcons:true,classNames:{container:messageBarContainer}})),showForm&&React.createElement(Fragment,null,React.createElement("p",null,React.createElement(I18n.Text,{string:"order_details.authenticate.instructions"}),!isUserLoggedIn&&React.createElement(Fragment,null,' ',React.createElement(Link,{className:loginLink,tag:"span",href:LOGIN_PATH,state:{redirect:{location:pathname}}},React.createElement(I18n.Text,{string:"order_details.authenticate.or_login"})))),React.createElement(FormBuilder,{className:form,name:"orderDetailsAuthenticate",config:formConfig,defaults:defaultFormState,validationErrors:validationErrors,handleUpdate:handleUpdate,onSubmit:handleSubmit}),React.createElement("div",null,React.createElement(RippleButton,{type:"secondary",onClick:handleSubmit,disabled:isLoading,className:submitButton},i18n.text('common.submit'))))));};export default OrderDetailsAuthenticate;
@@ -1,6 +1,8 @@
1
1
  import{i18n}from'@shopgate/engage/core';/**
2
2
  * Generates form configuration.
3
- * @param {Array} supportedCountries A list of supported countries.
4
- * @param {Object} userLocation User location for better phone picker defaults.
3
+ * @param {Object} options Options for the helper
4
+ * @param {Array} options.supportedCountries A list of supported countries.
5
+ * @param {Array} options.countrySortOrder Sort order for supported countries.
6
+ * @param {Object} options.userLocation User location for better phone picker defaults.
5
7
  * @returns {Object}
6
- */var generateFormConfig=function generateFormConfig(supportedCountries,userLocation){return{fields:{email:{type:'email',label:"".concat(i18n.text('checkout.pickup_contact.form.emailAddress')," *")},phone:{type:'phone_picker',label:"".concat(i18n.text('checkout.pickup_contact.form.mobile')," *"),config:{supportedCountries:supportedCountries,userLocation:userLocation}}}};};export default generateFormConfig;
8
+ */var generateFormConfig=function generateFormConfig(_ref){var supportedCountries=_ref.supportedCountries,countrySortOrder=_ref.countrySortOrder,userLocation=_ref.userLocation;return{fields:{email:{type:'email',label:"".concat(i18n.text('checkout.pickup_contact.form.emailAddress')," *")},phone:{type:'phone_picker',label:"".concat(i18n.text('checkout.pickup_contact.form.mobile')," *"),config:{supportedCountries:supportedCountries,countrySortOrder:countrySortOrder,userLocation:userLocation}}}};};export default generateFormConfig;
@@ -2,4 +2,4 @@ import _regeneratorRuntime from"@babel/runtime/regenerator";function asyncGenera
2
2
  * @param {Object} props The component props.
3
3
  * @returns {JSX}
4
4
  */var OrderDetailsProvider=function OrderDetailsProvider(_ref){var order=_ref.order,orderNumber=_ref.orderNumber,shopSettings=_ref.shopSettings,userLocation=_ref.userLocation,fetchOrderDetails=_ref.fetchOrderDetails,cancelOrder=_ref.cancelOrder,children=_ref.children;var _useRoute=useRoute(),pathname=_useRoute.pathname;var _useState=useState(false),_useState2=_slicedToArray(_useState,2),isLoading=_useState2[0],setIsLoading=_useState2[1];var handleRequest=useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(){return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:setIsLoading(true);_context.next=3;return fetchOrderDetails(orderNumber);case 3:setIsLoading(false);case 4:case"end":return _context.stop();}}},_callee);})),[fetchOrderDetails,orderNumber]);var handleCancel=useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(){return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1){switch(_context2.prev=_context2.next){case 0:setIsLoading(true);_context2.next=3;return cancelOrder(orderNumber);case 3:setIsLoading(false);case 4:case"end":return _context2.stop();}}},_callee2);})),[cancelOrder,orderNumber]);// Loading state
5
- useEffect(function(){if(isLoading){LoadingProvider.setLoading(pathname);return;}LoadingProvider.unsetLoading(pathname);},[isLoading,pathname]);useEffect(function(){handleRequest();},[handleRequest]);var value=useMemo(function(){return{order:order,isLoading:isLoading,supportedCountries:shopSettings.supportedCountries,userLocation:userLocation,fetchOrderDetails:fetchOrderDetails,cancelOrder:handleCancel};},[order,isLoading,shopSettings.supportedCountries,userLocation,fetchOrderDetails,handleCancel]);return React.createElement(Context.Provider,{value:value},children);};OrderDetailsProvider.defaultProps={children:null,shopSettings:null,userLocation:null,order:null};export default connect(OrderDetailsProvider);
5
+ useEffect(function(){if(isLoading){LoadingProvider.setLoading(pathname);return;}LoadingProvider.unsetLoading(pathname);},[isLoading,pathname]);useEffect(function(){handleRequest();},[handleRequest]);var value=useMemo(function(){return{order:order,isLoading:isLoading,supportedCountries:shopSettings.supportedCountries,countrySortOrder:shopSettings.countrySortOrder,userLocation:userLocation,fetchOrderDetails:fetchOrderDetails,cancelOrder:handleCancel};},[order,isLoading,shopSettings.supportedCountries,shopSettings.countrySortOrder,userLocation,fetchOrderDetails,handleCancel]);return React.createElement(Context.Provider,{value:value},children);};OrderDetailsProvider.defaultProps={children:null,shopSettings:null,userLocation:null,order:null};export default connect(OrderDetailsProvider);
@@ -8,4 +8,4 @@ import _regeneratorRuntime from"@babel/runtime/regenerator";function asyncGenera
8
8
  */var OrderDetailsProvider=function OrderDetailsProvider(_ref){var isUserLoggedIn=_ref.isUserLoggedIn,order=_ref.order,orderId=_ref.orderId,shopSettings=_ref.shopSettings,userLocation=_ref.userLocation,fetchOrderDetails=_ref.fetchOrderDetails,cancelOrder=_ref.cancelOrder,children=_ref.children;var _useRoute=useRoute(),pathname=_useRoute.pathname;var _useState=useState(!isUserLoggedIn),_useState2=_slicedToArray(_useState,2),showForm=_useState2[0],setShowForm=_useState2[1];var _useState3=useState(false),_useState4=_slicedToArray(_useState3,2),isLoading=_useState4[0],setIsLoading=_useState4[1];var _useState5=useState(''),_useState6=_slicedToArray(_useState5,2),errorMessage=_useState6[0],setErrorMessage=_useState6[1];var orderTokenCookie=["shopgate_order_token_".concat(orderId)];var _useCookies=useCookies([orderTokenCookie]),_useCookies2=_slicedToArray(_useCookies,2),cookies=_useCookies2[0],setCookie=_useCookies2[1];var orderToken=cookies[orderTokenCookie];// Form visibility
9
9
  useEffect(function(){if(isUserLoggedIn){setShowForm(errorMessage);}else{setShowForm(!order&&!orderToken||errorMessage);}},[errorMessage,isUserLoggedIn,order,orderToken]);var handleRequest=useCallback(/*#__PURE__*/function(){var _ref2=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(email,phone,token){var message,response,code;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:setIsLoading(true);_context.prev=1;_context.next=4;return fetchOrderDetails(orderId,{email:email,phone:phone,token:token});case 4:response=_context.sent;if(response.token&&response.tokenExpires){setCookie(orderTokenCookie,response.token,{expires:new Date(response.tokenExpires)});}setErrorMessage('');_context.next=13;break;case 9:_context.prev=9;_context.t0=_context["catch"](1);code=_context.t0.code;if(code===EUNAUTHORIZED){message='order_details.errors.authorize';}else if(code===EAUTHENTICATION){message='order_details.errors.authenticate';}else if(code===ENOTFOUND){message='order_details.errors.not_found';}case 13:if(message){setErrorMessage(i18n.text(message));}setIsLoading(false);case 15:case"end":return _context.stop();}}},_callee,null,[[1,9]]);}));return function(_x,_x2,_x3){return _ref2.apply(this,arguments);};}(),[fetchOrderDetails,orderTokenCookie,orderId,setCookie]);var handleCancel=useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(){var message,code;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1){switch(_context2.prev=_context2.next){case 0:setIsLoading(true);_context2.prev=1;_context2.next=4;return cancelOrder(orderId,orderToken);case 4:setErrorMessage('');_context2.next=11;break;case 7:_context2.prev=7;_context2.t0=_context2["catch"](1);code=_context2.t0.code;if(code===EAUTHENTICATION){message='order_details.errors.expired';}else if(code===ENOTFOUND){message='order_details.errors.not_found';}case 11:if(message){setErrorMessage(i18n.text(message));}setIsLoading(false);case 13:case"end":return _context2.stop();}}},_callee2,null,[[1,7]]);})),[cancelOrder,orderId,orderToken]);// Loading state
10
10
  useEffect(function(){if(isLoading){LoadingProvider.setLoading(pathname);return;}LoadingProvider.unsetLoading(pathname);},[isLoading,pathname]);useEffect(function(){if(!isUserLoggedIn&&!orderToken){return;}_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(){return _regeneratorRuntime.wrap(function _callee3$(_context3){while(1){switch(_context3.prev=_context3.next){case 0:_context3.next=2;return handleRequest(undefined,undefined,!isUserLoggedIn?orderToken:undefined);case 2:case"end":return _context3.stop();}}},_callee3);}))();/* eslint-disable react-hooks/exhaustive-deps */},[]);/* eslint-enable react-hooks/exhaustive-deps */var authenticateFormState={valid:false,values:[]};// Authentication form
11
- var handleAuthenticateFormSubmit=useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(){var _authenticateFormStat,email,phone;return _regeneratorRuntime.wrap(function _callee4$(_context4){while(1){switch(_context4.prev=_context4.next){case 0:if(authenticateFormState.valid){_context4.next=2;break;}return _context4.abrupt("return");case 2:_authenticateFormStat=authenticateFormState.values,email=_authenticateFormStat.email,phone=_authenticateFormStat.phone;_context4.next=5;return handleRequest(email,phone);case 5:case"end":return _context4.stop();}}},_callee4);})),[authenticateFormState.valid,authenticateFormState.values,handleRequest]);authenticateFormState=useFormState(defaultFormState,handleAuthenticateFormSubmit,authenticateConstraints);var handleSubmit=useCallback(function(){authenticateFormState.handleSubmit(new Event('submit'));},[authenticateFormState]);var value=useMemo(function(){return{isUserLoggedIn:isUserLoggedIn,order:order,handleSubmit:handleSubmit,isLoading:isLoading,showForm:showForm,supportedCountries:shopSettings.supportedCountries,validationErrors:convertValidationErrors(authenticateFormState.validationErrors||{}),updateForm:authenticateFormState.setValues,defaultFormState:defaultFormState,userLocation:userLocation,fetchOrderDetails:fetchOrderDetails,cancelOrder:handleCancel,errorMessage:errorMessage};},[authenticateFormState.setValues,authenticateFormState.validationErrors,fetchOrderDetails,handleCancel,handleSubmit,isUserLoggedIn,showForm,isLoading,order,shopSettings.supportedCountries,userLocation,errorMessage]);return React.createElement(Context.Provider,{value:value},children);};OrderDetailsProvider.defaultProps={children:null,shopSettings:null,userLocation:null,order:null,orderId:null};export default connect(OrderDetailsProvider);
11
+ var handleAuthenticateFormSubmit=useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(){var _authenticateFormStat,email,phone;return _regeneratorRuntime.wrap(function _callee4$(_context4){while(1){switch(_context4.prev=_context4.next){case 0:if(authenticateFormState.valid){_context4.next=2;break;}return _context4.abrupt("return");case 2:_authenticateFormStat=authenticateFormState.values,email=_authenticateFormStat.email,phone=_authenticateFormStat.phone;_context4.next=5;return handleRequest(email,phone);case 5:case"end":return _context4.stop();}}},_callee4);})),[authenticateFormState.valid,authenticateFormState.values,handleRequest]);authenticateFormState=useFormState(defaultFormState,handleAuthenticateFormSubmit,authenticateConstraints);var handleSubmit=useCallback(function(){authenticateFormState.handleSubmit(new Event('submit'));},[authenticateFormState]);var value=useMemo(function(){return{isUserLoggedIn:isUserLoggedIn,order:order,handleSubmit:handleSubmit,isLoading:isLoading,showForm:showForm,supportedCountries:shopSettings.supportedCountries,countrySortOrder:shopSettings.countrySortOrder,validationErrors:convertValidationErrors(authenticateFormState.validationErrors||{}),updateForm:authenticateFormState.setValues,defaultFormState:defaultFormState,userLocation:userLocation,fetchOrderDetails:fetchOrderDetails,cancelOrder:handleCancel,errorMessage:errorMessage};},[authenticateFormState.setValues,authenticateFormState.validationErrors,fetchOrderDetails,handleCancel,handleSubmit,isUserLoggedIn,showForm,isLoading,order,shopSettings.supportedCountries,shopSettings.countrySortOrder,userLocation,errorMessage]);return React.createElement(Context.Provider,{value:value},children);};OrderDetailsProvider.defaultProps={children:null,shopSettings:null,userLocation:null,order:null,orderId:null};export default connect(OrderDetailsProvider);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shopgate/engage",
3
- "version": "7.8.0-beta.4",
3
+ "version": "7.8.0",
4
4
  "description": "Shopgate's ENGAGE library.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Shopgate <support@shopgate.com>",
@@ -16,12 +16,12 @@
16
16
  ],
17
17
  "dependencies": {
18
18
  "@shopgate/native-modules": "1.0.0-beta.18",
19
- "@shopgate/pwa-common": "7.8.0-beta.4",
20
- "@shopgate/pwa-common-commerce": "7.8.0-beta.4",
21
- "@shopgate/pwa-core": "7.8.0-beta.4",
22
- "@shopgate/pwa-ui-ios": "7.8.0-beta.4",
23
- "@shopgate/pwa-ui-material": "7.8.0-beta.4",
24
- "@shopgate/pwa-ui-shared": "7.8.0-beta.4",
19
+ "@shopgate/pwa-common": "7.8.0",
20
+ "@shopgate/pwa-common-commerce": "7.8.0",
21
+ "@shopgate/pwa-core": "7.8.0",
22
+ "@shopgate/pwa-ui-ios": "7.8.0",
23
+ "@shopgate/pwa-ui-material": "7.8.0",
24
+ "@shopgate/pwa-ui-shared": "7.8.0",
25
25
  "@stripe/react-stripe-js": "^1.1.2",
26
26
  "@stripe/stripe-js": "^1.3.1",
27
27
  "@virtuous/conductor": "~2.5.0",
@@ -36,7 +36,7 @@
36
36
  "moment": "^2.27.0",
37
37
  "react-helmet": "^5.1.3",
38
38
  "react-leaflet": "^2.7.0",
39
- "react-phone-number-input": "^3.0.22",
39
+ "react-phone-number-input": "^3.2.16",
40
40
  "react-player": "1.11.0",
41
41
  "react-portal": "^3.1.0",
42
42
  "react-swipeable": "^4.0.1",
@@ -1,5 +1,8 @@
1
1
  import{i18n}from'@shopgate/engage/core';var pickupFieldActions=[{type:'setVisibility',rules:[{context:'pickupPerson',type:'oneOf',data:['someoneElse']}]}];/**
2
2
  * Generates form configuration.
3
- * @param {Object} params Additional parameters
3
+ * @param {Object} options Options for the helper
4
+ * @param {Array} options.supportedCountries A list of supported countries.
5
+ * @param {Array} options.countrySortOrder Sort order for supported countries.
6
+ * @param {Object} options.userLocation User location for better phone picker defaults.
4
7
  * @returns {Object}
5
- */var generateFormConfig=function generateFormConfig(_ref){var supportedCountries=_ref.supportedCountries,userLocation=_ref.userLocation;return{fields:{pickupPerson:{type:'radio',label:i18n.text('checkout.pickup_contact.form.who_will_pickup'),options:{me:i18n.text('checkout.pickup_contact.form.me'),someoneElse:i18n.text('checkout.pickup_contact.form.someone_else')}},firstName:{type:'text',actions:pickupFieldActions,label:"".concat(i18n.text('checkout.pickup_contact.form.firstName')," *")},lastName:{type:'text',actions:pickupFieldActions,label:"".concat(i18n.text('checkout.pickup_contact.form.lastName')," *")},emailAddress:{type:'email',actions:pickupFieldActions,label:"".concat(i18n.text('checkout.pickup_contact.form.emailAddress')," *")},mobile:{type:'phone_picker',label:"".concat(i18n.text('checkout.pickup_contact.form.mobile')," *"),actions:pickupFieldActions,config:{supportedCountries:supportedCountries,userLocation:userLocation}}}};};export default generateFormConfig;
8
+ */var generateFormConfig=function generateFormConfig(_ref){var supportedCountries=_ref.supportedCountries,countrySortOrder=_ref.countrySortOrder,userLocation=_ref.userLocation;return{fields:{pickupPerson:{type:'radio',label:i18n.text('checkout.pickup_contact.form.who_will_pickup'),options:{me:i18n.text('checkout.pickup_contact.form.me'),someoneElse:i18n.text('checkout.pickup_contact.form.someone_else')}},firstName:{type:'text',actions:pickupFieldActions,label:"".concat(i18n.text('checkout.pickup_contact.form.firstName')," *")},lastName:{type:'text',actions:pickupFieldActions,label:"".concat(i18n.text('checkout.pickup_contact.form.lastName')," *")},emailAddress:{type:'email',actions:pickupFieldActions,label:"".concat(i18n.text('checkout.pickup_contact.form.emailAddress')," *")},mobile:{type:'phone_picker',label:"".concat(i18n.text('checkout.pickup_contact.form.mobile')," *"),actions:pickupFieldActions,config:{supportedCountries:supportedCountries,countrySortOrder:countrySortOrder,userLocation:userLocation}}}};};export default generateFormConfig;
@@ -1,4 +1,4 @@
1
1
  function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};return _extends.apply(this,arguments);}import React,{useMemo,useCallback}from'react';import{css}from'glamor';import{themeConfig}from'@shopgate/engage';import{FormBuilder}from'@shopgate/engage/components';import{StylePresets}from'@shopgate/engage/components/Form';import{ELEMENT_ID_PICKUP_CONTACT}from"../../constants";import generateFormConfig from"./GuestRegistrationFormPickup.config";import Section from"../../../checkout/components/Checkout/CheckoutSection";import{useRegistration}from"../../hooks";var variables=themeConfig.variables;var styles={root:css({display:'flex',flex:'0 0 auto',flexDirection:'column'}).toString(),form:css(_extends({' .guestFormPickupPerson':{marginTop:variables.gap.small},' .guestFormPickupPerson .me':{marginRight:variables.gap.big},' .guestFormPickupPerson .label span':{color:'var(--color-text-high-emphasis)',fontWeight:'bold'},' .guestFormPickupPerson .radioGroup':{marginTop:variables.gap.small,flexDirection:'row',' .uncheckedIcon':{color:'var(--color-text-medium-emphasis)'}}},StylePresets.OUTLINED_FORM_FIELDS)).toString()};/**
2
2
  * PickupContactForm
3
3
  * @returns {JSX}
4
- */var GuestRegistrationFormPickup=function GuestRegistrationFormPickup(){var _useRegistration=useRegistration(true),supportedCountries=_useRegistration.supportedCountries,userLocation=_useRegistration.userLocation,defaultPickupFormState=_useRegistration.defaultPickupFormState,pickupFormValidationErrors=_useRegistration.pickupFormValidationErrors,updatePickupForm=_useRegistration.updatePickupForm,orderReserveOnly=_useRegistration.orderReserveOnly,isPickupContactSelectionEnabled=_useRegistration.isPickupContactSelectionEnabled;var formConfig=React.useMemo(function(){return generateFormConfig({supportedCountries:supportedCountries,userLocation:userLocation});},[supportedCountries,userLocation]);var handleUpdate=useCallback(function(values){updatePickupForm(values);},[updatePickupForm]);var headline=useMemo(function(){return orderReserveOnly?'checkout.pickup_contact.headline_reserve':'checkout.pickup_contact.headline';},[orderReserveOnly]);if(!isPickupContactSelectionEnabled){return null;}return React.createElement("div",{className:styles.root},React.createElement(Section,{title:headline,hasForm:true,id:ELEMENT_ID_PICKUP_CONTACT},React.createElement(FormBuilder,{className:styles.form,name:"GuestForm",config:formConfig,defaults:defaultPickupFormState,validationErrors:pickupFormValidationErrors,handleUpdate:handleUpdate})));};export default GuestRegistrationFormPickup;
4
+ */var GuestRegistrationFormPickup=function GuestRegistrationFormPickup(){var _useRegistration=useRegistration(true),supportedCountries=_useRegistration.supportedCountries,countrySortOrder=_useRegistration.countrySortOrder,userLocation=_useRegistration.userLocation,defaultPickupFormState=_useRegistration.defaultPickupFormState,pickupFormValidationErrors=_useRegistration.pickupFormValidationErrors,updatePickupForm=_useRegistration.updatePickupForm,orderReserveOnly=_useRegistration.orderReserveOnly,isPickupContactSelectionEnabled=_useRegistration.isPickupContactSelectionEnabled;var formConfig=React.useMemo(function(){return generateFormConfig({supportedCountries:supportedCountries,countrySortOrder:countrySortOrder,userLocation:userLocation});},[countrySortOrder,supportedCountries,userLocation]);var handleUpdate=useCallback(function(values){updatePickupForm(values);},[updatePickupForm]);var headline=useMemo(function(){return orderReserveOnly?'checkout.pickup_contact.headline_reserve':'checkout.pickup_contact.headline';},[orderReserveOnly]);if(!isPickupContactSelectionEnabled){return null;}return React.createElement("div",{className:styles.root},React.createElement(Section,{title:headline,hasForm:true,id:ELEMENT_ID_PICKUP_CONTACT},React.createElement(FormBuilder,{className:styles.form,name:"GuestForm",config:formConfig,defaults:defaultPickupFormState,validationErrors:pickupFormValidationErrors,handleUpdate:handleUpdate})));};export default GuestRegistrationFormPickup;
@@ -2,4 +2,4 @@ function _extends(){_extends=Object.assign||function(target){for(var i=1;i<argum
2
2
  * Generates form configuration.
3
3
  * @param {Object} params Additional parameters
4
4
  * @returns {Object}
5
- */var generateFormConfig=function generateFormConfig(_ref){var supportedCountries=_ref.supportedCountries,userLocation=_ref.userLocation,numberOfAddressLines=_ref.numberOfAddressLines,isGuest=_ref.isGuest,_ref$isReserveOnly=_ref.isReserveOnly,isReserveOnly=_ref$isReserveOnly===void 0?false:_ref$isReserveOnly;return{fields:_extends({firstName:{type:'text',label:"".concat(i18n.text('checkout.pickup_contact.form.firstName')," *")},lastName:{type:'text',label:"".concat(i18n.text('checkout.pickup_contact.form.lastName')," *")}},isGuest?{emailAddress:{type:'email',label:"".concat(i18n.text('checkout.pickup_contact.form.emailAddress')," *")}}:{},{mobile:{type:'phone_picker',label:"".concat(i18n.text('checkout.pickup_contact.form.mobile')," *"),config:{supportedCountries:supportedCountries,userLocation:userLocation}}},!isGuest||isGuest&&!isReserveOnly?_extends({companyName:{type:'text',label:i18n.text('checkout.pickup_contact.form.company')},address1:{type:'text',label:"".concat(i18n.text('checkout.pickup_contact.form.address1')," *")}},numberOfAddressLines>=2?{address2:{type:'text',label:i18n.text('account.profile.form.address2')}}:{},{},numberOfAddressLines>=3?{address3:{type:'text',label:i18n.text('account.profile.form.address3')}}:{},{},numberOfAddressLines>=4?{address4:{type:'text',label:i18n.text('account.profile.form.address4')}}:{},{postalCode:{type:'text',label:"".concat(i18n.text('checkout.pickup_contact.form.postalCode')," *")},city:{type:'text',label:"".concat(i18n.text('checkout.pickup_contact.form.city')," *")},country:{type:'country',label:"".concat(i18n.text('checkout.pickup_contact.form.country')," *"),countries:supportedCountries},region:{type:'province',label:"".concat(i18n.text('checkout.pickup_contact.form.region')," *"),required:true}}):{})};};export default generateFormConfig;
5
+ */var generateFormConfig=function generateFormConfig(_ref){var supportedCountries=_ref.supportedCountries,countrySortOrder=_ref.countrySortOrder,userLocation=_ref.userLocation,numberOfAddressLines=_ref.numberOfAddressLines,isGuest=_ref.isGuest,_ref$isReserveOnly=_ref.isReserveOnly,isReserveOnly=_ref$isReserveOnly===void 0?false:_ref$isReserveOnly;return{fields:_extends({firstName:{type:'text',label:"".concat(i18n.text('checkout.pickup_contact.form.firstName')," *")},lastName:{type:'text',label:"".concat(i18n.text('checkout.pickup_contact.form.lastName')," *")}},isGuest?{emailAddress:{type:'email',label:"".concat(i18n.text('checkout.pickup_contact.form.emailAddress')," *")}}:{},{mobile:{type:'phone_picker',label:"".concat(i18n.text('checkout.pickup_contact.form.mobile')," *"),config:{supportedCountries:supportedCountries,countrySortOrder:countrySortOrder,userLocation:userLocation}}},!isGuest||isGuest&&!isReserveOnly?_extends({companyName:{type:'text',label:i18n.text('checkout.pickup_contact.form.company')},address1:{type:'text',label:"".concat(i18n.text('checkout.pickup_contact.form.address1')," *")}},numberOfAddressLines>=2?{address2:{type:'text',label:i18n.text('account.profile.form.address2')}}:{},{},numberOfAddressLines>=3?{address3:{type:'text',label:i18n.text('account.profile.form.address3')}}:{},{},numberOfAddressLines>=4?{address4:{type:'text',label:i18n.text('account.profile.form.address4')}}:{},{postalCode:{type:'text',label:"".concat(i18n.text('checkout.pickup_contact.form.postalCode')," *")},city:{type:'text',label:"".concat(i18n.text('checkout.pickup_contact.form.city')," *")},country:{type:'country',label:"".concat(i18n.text('checkout.pickup_contact.form.country')," *"),countries:supportedCountries},region:{type:'province',label:"".concat(i18n.text('checkout.pickup_contact.form.region')," *"),required:true}}):{})};};export default generateFormConfig;
@@ -2,4 +2,4 @@ import React,{useMemo,useCallback}from'react';import PropTypes from'prop-types';
2
2
  * The RegistrationFormBilling component.
3
3
  * @param {Object} props The component props
4
4
  * @returns {JSX}
5
- */var RegistrationFormBilling=function RegistrationFormBilling(_ref){var isGuest=_ref.isGuest;var _useRegistration=useRegistration(isGuest),supportedCountries=_useRegistration.supportedCountries,userLocation=_useRegistration.userLocation,defaultBillingFormState=_useRegistration.defaultBillingFormState,billingFormValidationErrors=_useRegistration.billingFormValidationErrors,updateBillingForm=_useRegistration.updateBillingForm,numberOfAddressLines=_useRegistration.numberOfAddressLines,orderReserveOnly=_useRegistration.orderReserveOnly,isBillingAddressSelectionEnabled=_useRegistration.isBillingAddressSelectionEnabled;var formConfig=useMemo(function(){return generateFormConfig({supportedCountries:supportedCountries,userLocation:userLocation,numberOfAddressLines:numberOfAddressLines,isGuest:isGuest,isReserveOnly:orderReserveOnly});},[isGuest,numberOfAddressLines,orderReserveOnly,supportedCountries,userLocation]);var title=useMemo(function(){if(isGuest&&orderReserveOnly){return'registration.headlines.billing_address_reserve';}return'registration.headlines.billing_address';},[isGuest,orderReserveOnly]);var handleUpdate=useCallback(function(values){updateBillingForm(values);},[updateBillingForm]);if(!isBillingAddressSelectionEnabled){return null;}return React.createElement(Section,{title:title,className:section,hasForm:true,id:ELEMENT_ID_BILLING_CONTACT},React.createElement(FormBuilder,{className:form,name:"RegistrationBilling",config:formConfig,defaults:defaultBillingFormState,validationErrors:billingFormValidationErrors,handleUpdate:handleUpdate}));};RegistrationFormBilling.defaultProps={isGuest:false};export default RegistrationFormBilling;
5
+ */var RegistrationFormBilling=function RegistrationFormBilling(_ref){var isGuest=_ref.isGuest;var _useRegistration=useRegistration(isGuest),supportedCountries=_useRegistration.supportedCountries,countrySortOrder=_useRegistration.countrySortOrder,userLocation=_useRegistration.userLocation,defaultBillingFormState=_useRegistration.defaultBillingFormState,billingFormValidationErrors=_useRegistration.billingFormValidationErrors,updateBillingForm=_useRegistration.updateBillingForm,numberOfAddressLines=_useRegistration.numberOfAddressLines,orderReserveOnly=_useRegistration.orderReserveOnly,isBillingAddressSelectionEnabled=_useRegistration.isBillingAddressSelectionEnabled;var formConfig=useMemo(function(){return generateFormConfig({supportedCountries:supportedCountries,countrySortOrder:countrySortOrder,userLocation:userLocation,numberOfAddressLines:numberOfAddressLines,isGuest:isGuest,isReserveOnly:orderReserveOnly});},[countrySortOrder,isGuest,numberOfAddressLines,orderReserveOnly,supportedCountries,userLocation]);var title=useMemo(function(){if(isGuest&&orderReserveOnly){return'registration.headlines.billing_address_reserve';}return'registration.headlines.billing_address';},[isGuest,orderReserveOnly]);var handleUpdate=useCallback(function(values){updateBillingForm(values);},[updateBillingForm]);if(!isBillingAddressSelectionEnabled){return null;}return React.createElement(Section,{title:title,className:section,hasForm:true,id:ELEMENT_ID_BILLING_CONTACT},React.createElement(FormBuilder,{className:form,name:"RegistrationBilling",config:formConfig,defaults:defaultBillingFormState,validationErrors:billingFormValidationErrors,handleUpdate:handleUpdate}));};RegistrationFormBilling.defaultProps={isGuest:false};export default RegistrationFormBilling;
@@ -2,4 +2,4 @@ function _extends(){_extends=Object.assign||function(target){for(var i=1;i<argum
2
2
  * Generates form configuration.
3
3
  * @param {Object} params Additional parameters
4
4
  * @returns {Object}
5
- */var generateFormConfig=function generateFormConfig(_ref){var customerAttributes=_ref.customerAttributes,isGuest=_ref.isGuest,supportedCountries=_ref.supportedCountries,userLocation=_ref.userLocation;return{fields:_extends({},!isGuest&&{marketingOptIn:{type:'checkbox',label:i18n.text('registration.marketing_opt_in_label')}},{},generateCustomerAttributesFields({customerAttributes:customerAttributes,supportedCountries:supportedCountries,userLocation:userLocation}))};};export default generateFormConfig;
5
+ */var generateFormConfig=function generateFormConfig(_ref){var customerAttributes=_ref.customerAttributes,isGuest=_ref.isGuest,supportedCountries=_ref.supportedCountries,countrySortOrder=_ref.countrySortOrder,userLocation=_ref.userLocation;return{fields:_extends({},!isGuest?{marketingOptIn:{type:'checkbox',label:i18n.text('registration.marketing_opt_in_label')}}:{},{},generateCustomerAttributesFields({customerAttributes:customerAttributes,supportedCountries:supportedCountries,countrySortOrder:countrySortOrder,userLocation:userLocation}))};};export default generateFormConfig;
@@ -2,4 +2,4 @@ import React,{useMemo,useCallback}from'react';import PropTypes from'prop-types';
2
2
  * The RegistrationFormExtra component.
3
3
  * @param {Object} props The component props
4
4
  * @returns {JSX}
5
- */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,userLocation=_useRegistration.userLocation;var formConfig=useMemo(function(){return generateFormConfig({customerAttributes:customerAttributes,isGuest:isGuest,supportedCountries:supportedCountries,userLocation:userLocation});},[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;
5
+ */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;
@@ -2,4 +2,4 @@ function _extends(){_extends=Object.assign||function(target){for(var i=1;i<argum
2
2
  * Generates form configuration.
3
3
  * @param {Object} params Additional parameters
4
4
  * @returns {Object}
5
- */var generateFormConfig=function generateFormConfig(_ref){var supportedCountries=_ref.supportedCountries,userLocation=_ref.userLocation,numberOfAddressLines=_ref.numberOfAddressLines;return{fields:_extends({firstName:{type:'text',label:"".concat(i18n.text('checkout.pickup_contact.form.firstName')," *")},lastName:{type:'text',label:"".concat(i18n.text('checkout.pickup_contact.form.lastName')," *")},mobile:{type:'phone_picker',label:"".concat(i18n.text('checkout.pickup_contact.form.mobile')," *"),config:{supportedCountries:supportedCountries,userLocation:userLocation}},companyName:{type:'text',label:i18n.text('checkout.pickup_contact.form.company')},address1:{type:'text',label:"".concat(i18n.text('checkout.pickup_contact.form.address1')," *")}},numberOfAddressLines>=2?{address2:{type:'text',label:i18n.text('account.profile.form.address2')}}:{},{},numberOfAddressLines>=3?{address3:{type:'text',label:i18n.text('account.profile.form.address3')}}:{},{},numberOfAddressLines>=4?{address4:{type:'text',label:i18n.text('account.profile.form.address4')}}:{},{postalCode:{type:'text',label:"".concat(i18n.text('checkout.pickup_contact.form.postalCode')," *")},city:{type:'text',label:"".concat(i18n.text('checkout.pickup_contact.form.city')," *")},country:{type:'country',label:"".concat(i18n.text('checkout.pickup_contact.form.country')," *"),countries:supportedCountries},region:{type:'province',label:"".concat(i18n.text('checkout.pickup_contact.form.region')," *"),required:true}})};};export default generateFormConfig;
5
+ */var generateFormConfig=function generateFormConfig(_ref){var supportedCountries=_ref.supportedCountries,countrySortOrder=_ref.countrySortOrder,userLocation=_ref.userLocation,numberOfAddressLines=_ref.numberOfAddressLines;return{fields:_extends({firstName:{type:'text',label:"".concat(i18n.text('checkout.pickup_contact.form.firstName')," *")},lastName:{type:'text',label:"".concat(i18n.text('checkout.pickup_contact.form.lastName')," *")},mobile:{type:'phone_picker',label:"".concat(i18n.text('checkout.pickup_contact.form.mobile')," *"),config:{supportedCountries:supportedCountries,countrySortOrder:countrySortOrder,userLocation:userLocation}},companyName:{type:'text',label:i18n.text('checkout.pickup_contact.form.company')},address1:{type:'text',label:"".concat(i18n.text('checkout.pickup_contact.form.address1')," *")}},numberOfAddressLines>=2?{address2:{type:'text',label:i18n.text('account.profile.form.address2')}}:{},{},numberOfAddressLines>=3?{address3:{type:'text',label:i18n.text('account.profile.form.address3')}}:{},{},numberOfAddressLines>=4?{address4:{type:'text',label:i18n.text('account.profile.form.address4')}}:{},{postalCode:{type:'text',label:"".concat(i18n.text('checkout.pickup_contact.form.postalCode')," *")},city:{type:'text',label:"".concat(i18n.text('checkout.pickup_contact.form.city')," *")},country:{type:'country',label:"".concat(i18n.text('checkout.pickup_contact.form.country')," *"),countries:supportedCountries},region:{type:'province',label:"".concat(i18n.text('checkout.pickup_contact.form.region')," *"),required:true}})};};export default generateFormConfig;
@@ -2,4 +2,4 @@ import React,{useMemo,useCallback}from'react';import PropTypes from'prop-types';
2
2
  * The RegistrationFormShipping component.
3
3
  * @param {Object} props The component props
4
4
  * @returns {JSX}
5
- */var RegistrationFormShipping=function RegistrationFormShipping(_ref){var isGuest=_ref.isGuest;var _useRegistration=useRegistration(isGuest),supportedCountries=_useRegistration.supportedCountries,userLocation=_useRegistration.userLocation,defaultShippingFormState=_useRegistration.defaultShippingFormState,shippingFormValidationErrors=_useRegistration.shippingFormValidationErrors,updateShippingForm=_useRegistration.updateShippingForm,isShippingFormVisible=_useRegistration.isShippingFormVisible,isShippingAddressSelectionEnabled=_useRegistration.isShippingAddressSelectionEnabled,numberOfAddressLines=_useRegistration.numberOfAddressLines;var formConfig=useMemo(function(){return generateFormConfig({supportedCountries:supportedCountries,userLocation:userLocation,numberOfAddressLines:numberOfAddressLines});},[numberOfAddressLines,supportedCountries,userLocation]);var handleUpdate=useCallback(function(values){updateShippingForm(values);},[updateShippingForm]);if(!isShippingAddressSelectionEnabled||!isShippingFormVisible){return null;}return React.createElement(Section,{title:"registration.headlines.shipping_address",className:classNames(section,shippingFormSection),hasForm:true,id:ELEMENT_ID_SHIPPING_CONTACT},React.createElement(FormBuilder,{className:form,name:"RegistrationShipping",config:formConfig,defaults:defaultShippingFormState,validationErrors:shippingFormValidationErrors,handleUpdate:handleUpdate}));};RegistrationFormShipping.defaultProps={isGuest:false};export default RegistrationFormShipping;
5
+ */var RegistrationFormShipping=function RegistrationFormShipping(_ref){var isGuest=_ref.isGuest;var _useRegistration=useRegistration(isGuest),supportedCountries=_useRegistration.supportedCountries,countrySortOrder=_useRegistration.countrySortOrder,userLocation=_useRegistration.userLocation,defaultShippingFormState=_useRegistration.defaultShippingFormState,shippingFormValidationErrors=_useRegistration.shippingFormValidationErrors,updateShippingForm=_useRegistration.updateShippingForm,isShippingFormVisible=_useRegistration.isShippingFormVisible,isShippingAddressSelectionEnabled=_useRegistration.isShippingAddressSelectionEnabled,numberOfAddressLines=_useRegistration.numberOfAddressLines;var formConfig=useMemo(function(){return generateFormConfig({supportedCountries:supportedCountries,countrySortOrder:countrySortOrder,userLocation:userLocation,numberOfAddressLines:numberOfAddressLines});},[countrySortOrder,numberOfAddressLines,supportedCountries,userLocation]);var handleUpdate=useCallback(function(values){updateShippingForm(values);},[updateShippingForm]);if(!isShippingAddressSelectionEnabled||!isShippingFormVisible){return null;}return React.createElement(Section,{title:"registration.headlines.shipping_address",className:classNames(section,shippingFormSection),hasForm:true,id:ELEMENT_ID_SHIPPING_CONTACT},React.createElement(FormBuilder,{className:form,name:"RegistrationShipping",config:formConfig,defaults:defaultShippingFormState,validationErrors:shippingFormValidationErrors,handleUpdate:handleUpdate}));};RegistrationFormShipping.defaultProps={isGuest:false};export default RegistrationFormShipping;
@@ -14,9 +14,9 @@ var defaultPickupFormState=useMemo(function(){return _extends({},initialPickupFo
14
14
  var defaultExtraFormState=useMemo(function(){return _extends({},initialOptInFormState,{},extractDefaultValues((customer===null||customer===void 0?void 0:customer.attributes)||[]));},[customer]);var extraConstraints=useMemo(function(){return generateExtraConstraints(customerAttributes);},[customerAttributes]);var handleExtraFormSubmit=useCallback(function(){setIsExtraFormSubmitted(true);},[]);var extraFormState=useFormState(defaultExtraFormState,handleExtraFormSubmit,extraConstraints,formContainerRef);var handleSubmit=useCallback(function(){billingFormState.handleSubmit();shippingFormState.handleSubmit();pickupFormState.handleSubmit();extraFormState.handleSubmit();},[billingFormState,extraFormState,pickupFormState,shippingFormState]);useEffect(function(){if(!isBillingFormSubmitted||!isShippingFormSubmitted||!isPickupFormSubmitted||!isExtraFormSubmitted){return;}// Break the process when one of the forms has validation errors from the constraints
15
15
  if(!billingFormState.valid||!shippingFormState.valid||!pickupFormState.valid||!extraFormState.valid){setIsBillingFormSubmitted(false);setIsShippingFormSubmitted(false);setIsPickupFormSubmitted(false);setIsExtraFormSubmitted(false);}/** Async wrapper for submit registration */var fn=/*#__PURE__*/function(){var _ref3=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(){var response,_ref4,errors;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1){switch(_context2.prev=_context2.next){case 0:setIsLocked(true);_context2.prev=1;_context2.next=4;return submitGuestRegistration(_extends({billingFormData:billingFormState.values},isShippingFormVisible?{shippingFormData:shippingFormState.values}:{},{},isPickupContactSelectionEnabled?{pickupFormData:pickupFormState.values}:{},{extraFormData:extraFormState.values,processShipping:isShippingAddressSelectionEnabled}));case 4:response=_context2.sent;_context2.next=11;break;case 7:_context2.prev=7;_context2.t0=_context2["catch"](1);setIsLocked(false);return _context2.abrupt("return");case 11:_ref4=response||{},errors=_ref4.errors;if(errors){_context2.next=17;break;}setIsLocked(false);LoadingProvider.setLoading(GUEST_CHECKOUT_PAYMENT_PATTERN);if(guestRegistrationEditMode){historyPop();}else{historyPush({pathname:GUEST_CHECKOUT_PAYMENT_PATTERN});}return _context2.abrupt("return");case 17:// Updated the request validation errors
16
16
  setBillingFormRequestErrors((errors===null||errors===void 0?void 0:errors.billingFormData)||null);setShippingFormRequestErrors((errors===null||errors===void 0?void 0:errors.shippingFormData)||null);setPickupFormRequestErrors((errors===null||errors===void 0?void 0:errors.pickupFormData)||null);setExtraFormRequestErrors((errors===null||errors===void 0?void 0:errors.extraFormData)||null);// Release forms for additional submits
17
- setIsBillingFormSubmitted(false);setIsShippingFormSubmitted(false);setIsPickupFormSubmitted(false);setIsExtraFormSubmitted(false);setIsLocked(false);case 26:case"end":return _context2.stop();}}},_callee2,null,[[1,7]]);}));return function fn(){return _ref3.apply(this,arguments);};}();fn();/* eslint-disable react-hooks/exhaustive-deps */},[isBillingFormSubmitted,isShippingFormSubmitted,isPickupFormSubmitted,isExtraFormSubmitted]);/* eslint-enable react-hooks/exhaustive-deps */ /* eslint-disable react-hooks/exhaustive-deps */useEffect(function(){billingFormState.scrollToError();},[billingFormRequestErrors,shippingFormRequestErrors,pickupFormRequestErrors,billingFormState.scrollToError]);/* eslint-enable react-hooks/exhaustive-deps */useEffect(function(){if(isLocked){LoadingProvider.setLoading(GUEST_CHECKOUT_PATTERN);return;}LoadingProvider.unsetLoading(GUEST_CHECKOUT_PATTERN);},[isLocked]);useEffect(function(){var timer=setTimeout(function(){if(!guestRegistrationEditMode){return;}var scrollToElement;if(guestRegistrationEditMode===ADDRESS_TYPE_SHIPPING){if(isShippingFormVisible){scrollToElement=ELEMENT_ID_SHIPPING_CONTACT;}else{scrollToElement=ELEMENT_ID_SHIPPING_CONTACT_TOGGLE;}}else if(guestRegistrationEditMode===ADDRESS_TYPE_PICKUP){scrollToElement=ELEMENT_ID_PICKUP_CONTACT;}if(scrollToElement){scrollTo("#".concat(scrollToElement));}},500);return function(){return clearTimeout(timer);};/* eslint-disable react-hooks/exhaustive-deps */},[]);/* eslint-enable react-hooks/exhaustive-deps */var value=useMemo(function(){return{isShippingFormEnabled:isShippingFormEnabled,isShippingFormVisible:isShippingFormVisible,setIsShippingFormVisible:setIsShippingFormVisible,orderReserveOnly:orderReserveOnly,orderNeedsPayment:orderNeedsPayment,guestRegistrationEditMode:guestRegistrationEditMode,defaultBillingFormState:defaultBillingFormState,updateBillingForm:billingFormState.setValues,defaultShippingFormState:defaultShippingFormState,updateShippingForm:shippingFormState.setValues,defaultPickupFormState:defaultPickupFormState,updatePickupForm:pickupFormState.setValues,defaultExtraFormState:defaultExtraFormState,updateExtraForm:extraFormState.setValues,billingFormValidationErrors:convertValidationErrors(billingFormState.validationErrors||billingFormRequestErrors||{}),shippingFormValidationErrors:convertValidationErrors(shippingFormState.validationErrors||shippingFormRequestErrors||{}),pickupFormValidationErrors:convertValidationErrors(pickupFormState.validationErrors||pickupFormRequestErrors||{}),extraFormValidationErrors:convertValidationErrors(extraFormState.validationErrors||extraFormRequestErrors||{}),isShippingAddressSelectionEnabled:isShippingAddressSelectionEnabled,isPickupContactSelectionEnabled:isPickupContactSelectionEnabled,customerAttributes:customerAttributes,numberOfAddressLines:numberOfAddressLines,userLocation:userLocation,supportedCountries:shopSettings.supportedCountries,isLocked:isLocked,handleSubmit:handleSubmit,/**
17
+ setIsBillingFormSubmitted(false);setIsShippingFormSubmitted(false);setIsPickupFormSubmitted(false);setIsExtraFormSubmitted(false);setIsLocked(false);case 26:case"end":return _context2.stop();}}},_callee2,null,[[1,7]]);}));return function fn(){return _ref3.apply(this,arguments);};}();fn();/* eslint-disable react-hooks/exhaustive-deps */},[isBillingFormSubmitted,isShippingFormSubmitted,isPickupFormSubmitted,isExtraFormSubmitted]);/* eslint-enable react-hooks/exhaustive-deps */ /* eslint-disable react-hooks/exhaustive-deps */useEffect(function(){billingFormState.scrollToError();},[billingFormRequestErrors,shippingFormRequestErrors,pickupFormRequestErrors,billingFormState.scrollToError]);/* eslint-enable react-hooks/exhaustive-deps */useEffect(function(){if(isLocked){LoadingProvider.setLoading(GUEST_CHECKOUT_PATTERN);return;}LoadingProvider.unsetLoading(GUEST_CHECKOUT_PATTERN);},[isLocked]);useEffect(function(){var timer=setTimeout(function(){if(!guestRegistrationEditMode){return;}var scrollToElement;if(guestRegistrationEditMode===ADDRESS_TYPE_SHIPPING){if(isShippingFormVisible){scrollToElement=ELEMENT_ID_SHIPPING_CONTACT;}else{scrollToElement=ELEMENT_ID_SHIPPING_CONTACT_TOGGLE;}}else if(guestRegistrationEditMode===ADDRESS_TYPE_PICKUP){scrollToElement=ELEMENT_ID_PICKUP_CONTACT;}if(scrollToElement){scrollTo("#".concat(scrollToElement));}},500);return function(){return clearTimeout(timer);};/* eslint-disable react-hooks/exhaustive-deps */},[]);/* eslint-enable react-hooks/exhaustive-deps */var value=useMemo(function(){return{isShippingFormEnabled:isShippingFormEnabled,isShippingFormVisible:isShippingFormVisible,setIsShippingFormVisible:setIsShippingFormVisible,orderReserveOnly:orderReserveOnly,orderNeedsPayment:orderNeedsPayment,guestRegistrationEditMode:guestRegistrationEditMode,defaultBillingFormState:defaultBillingFormState,updateBillingForm:billingFormState.setValues,defaultShippingFormState:defaultShippingFormState,updateShippingForm:shippingFormState.setValues,defaultPickupFormState:defaultPickupFormState,updatePickupForm:pickupFormState.setValues,defaultExtraFormState:defaultExtraFormState,updateExtraForm:extraFormState.setValues,billingFormValidationErrors:convertValidationErrors(billingFormState.validationErrors||billingFormRequestErrors||{}),shippingFormValidationErrors:convertValidationErrors(shippingFormState.validationErrors||shippingFormRequestErrors||{}),pickupFormValidationErrors:convertValidationErrors(pickupFormState.validationErrors||pickupFormRequestErrors||{}),extraFormValidationErrors:convertValidationErrors(extraFormState.validationErrors||extraFormRequestErrors||{}),isShippingAddressSelectionEnabled:isShippingAddressSelectionEnabled,isPickupContactSelectionEnabled:isPickupContactSelectionEnabled,customerAttributes:customerAttributes,numberOfAddressLines:numberOfAddressLines,userLocation:userLocation,supportedCountries:shopSettings.supportedCountries,countrySortOrder:shopSettings.countrySortOrder,isLocked:isLocked,handleSubmit:handleSubmit,/**
18
18
  * Handling of registrationMode "simple" is not implemented for checkout. But since
19
19
  * the guest registration is actually an order update and not a real registration, we
20
20
  * hardcode the registration mode here, since the provider value will be used inside
21
21
  * the shared form components.
22
- */registrationMode:SHOP_SETTING_REGISTRATION_MODE_EXTENDED,isBillingAddressSelectionEnabled:true};},[isShippingFormEnabled,isShippingFormVisible,defaultBillingFormState,billingFormState.setValues,billingFormState.validationErrors,defaultShippingFormState,shippingFormState.setValues,shippingFormState.validationErrors,defaultExtraFormState,extraFormState.setValues,extraFormState.validationErrors,extraFormRequestErrors,defaultPickupFormState,pickupFormState.setValues,pickupFormState.validationErrors,billingFormRequestErrors,shippingFormRequestErrors,pickupFormRequestErrors,orderReserveOnly,orderNeedsPayment,guestRegistrationEditMode,isShippingAddressSelectionEnabled,isPickupContactSelectionEnabled,customerAttributes,numberOfAddressLines,userLocation,shopSettings.supportedCountries,isLocked,handleSubmit]);if(!isDataReady||!isInitialized){return null;}return React.createElement(Context.Provider,{value:value},children);};GuestRegistrationProvider.defaultProps={children:null,customer:null,formContainerRef:null,billingAddress:null,shippingAddress:null,pickupAddress:null,billingPickupEquals:true,billingShippingEquals:true,cartHasDirectShipItems:false,orderReserveOnly:false,orderNeedsPayment:false,numberOfAddressLines:null,isShippingAddressSelectionEnabled:false,isPickupContactSelectionEnabled:false};export default connect(GuestRegistrationProvider);
22
+ */registrationMode:SHOP_SETTING_REGISTRATION_MODE_EXTENDED,isBillingAddressSelectionEnabled:true};},[isShippingFormEnabled,isShippingFormVisible,defaultBillingFormState,billingFormState.setValues,billingFormState.validationErrors,defaultShippingFormState,shippingFormState.setValues,shippingFormState.validationErrors,defaultExtraFormState,extraFormState.setValues,extraFormState.validationErrors,extraFormRequestErrors,defaultPickupFormState,pickupFormState.setValues,pickupFormState.validationErrors,billingFormRequestErrors,shippingFormRequestErrors,pickupFormRequestErrors,orderReserveOnly,orderNeedsPayment,guestRegistrationEditMode,isShippingAddressSelectionEnabled,isPickupContactSelectionEnabled,customerAttributes,numberOfAddressLines,userLocation,shopSettings.supportedCountries,shopSettings.countrySortOrder,isLocked,handleSubmit]);if(!isDataReady||!isInitialized){return null;}return React.createElement(Context.Provider,{value:value},children);};GuestRegistrationProvider.defaultProps={children:null,customer:null,formContainerRef:null,billingAddress:null,shippingAddress:null,pickupAddress:null,billingPickupEquals:true,billingShippingEquals:true,cartHasDirectShipItems:false,orderReserveOnly:false,orderNeedsPayment:false,numberOfAddressLines:null,isShippingAddressSelectionEnabled:false,isPickupContactSelectionEnabled:false};export default connect(GuestRegistrationProvider);
@@ -14,4 +14,4 @@ var handleSubmit=useCallback(function(){baseFormState.handleSubmit(new Event('su
14
14
  if(!isBaseFormSubmitted||!isBillingFormSubmitted||!isShippingFormSubmitted||!isExtraFormSubmitted){return;}// Break the process when one of the forms has validation errors from the constraints
15
15
  if(!baseFormState.valid||!billingFormState.valid||isShippingFormVisible&&!shippingFormState.valid||!extraFormState.valid){setIsBaseFormSubmitted(false);setIsBillingFormSubmitted(false);setIsShippingFormSubmitted(false);setIsExtraFormSubmitted(false);return;}/** Async wrapper for submit registration */var fn=/*#__PURE__*/function(){var _ref2=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(){var response,_ref3,errors;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:setLocked(true);_context.next=3;return submitRegistration(_extends({baseFormData:baseFormState.values,billingFormData:billingFormState.values,additionalFormData:extraFormState.values},isShippingFormVisible?{shippingFormData:shippingFormState.values}:{}));case 3:response=_context.sent;_ref3=response||{},errors=_ref3.errors;// Updated the request validation errors
16
16
  setBaseFormRequestErrors((errors===null||errors===void 0?void 0:errors.baseFormData)||null);setBillingFormRequestErrors((errors===null||errors===void 0?void 0:errors.billingFormData)||null);setShippingFormRequestErrors((errors===null||errors===void 0?void 0:errors.shippingFormData)||null);setExtraFormRequestErrors((errors===null||errors===void 0?void 0:errors.extraFormData)||null);// Release forms for additional submits
17
- setIsBaseFormSubmitted(false);setIsBillingFormSubmitted(false);setIsShippingFormSubmitted(false);setIsExtraFormSubmitted(false);setLocked(false);case 14:case"end":return _context.stop();}}},_callee);}));return function fn(){return _ref2.apply(this,arguments);};}();fn();/* eslint-disable react-hooks/exhaustive-deps */},[isBaseFormSubmitted,isBillingFormSubmitted,isShippingFormSubmitted,isExtraFormSubmitted,baseFormState.valid,billingFormState.valid,shippingFormState.valid,extraFormState.valid,isShippingFormVisible,submitRegistration]);/* eslint-enable react-hooks/exhaustive-deps */ /* eslint-disable react-hooks/exhaustive-deps */useEffect(function(){baseFormState.scrollToError();},[baseFormRequestErrors,billingFormRequestErrors,shippingFormRequestErrors,baseFormState.scrollToError]);/* eslint-enable react-hooks/exhaustive-deps */ /* eslint-disable react-hooks/exhaustive-deps */useEffect(function(){shippingFormState.setIgnoreErrors(!isShippingFormVisible);},[isShippingFormVisible]);/* eslint-enable react-hooks/exhaustive-deps */useEffect(function(){if(isLocked){LoadingProvider.setLoading(REGISTER_PATH);return;}LoadingProvider.unsetLoading(REGISTER_PATH);},[isLocked]);var value=useMemo(function(){return{supportedCountries:shopSettings.supportedCountries||[],customerAttributes:customerAttributes,userLocation:userLocation,defaultBaseFormState:defaultBaseFormState,defaultBillingFormState:defaultBillingFormState,defaultShippingFormState:defaultShippingFormState,defaultExtraFormState:defaultExtraFormState,baseFormValidationErrors:convertValidationErrors(baseFormState.validationErrors||baseFormRequestErrors||{}),billingFormValidationErrors:convertValidationErrors(billingFormState.validationErrors||billingFormRequestErrors||{}),shippingFormValidationErrors:convertValidationErrors(shippingFormState.validationErrors||shippingFormRequestErrors||{}),extraFormValidationErrors:convertValidationErrors(extraFormState.validationErrors||extraFormRequestErrors||{}),handleSubmit:handleSubmit,updateBaseForm:baseFormState.setValues,updateBillingForm:billingFormState.setValues,updateShippingForm:shippingFormState.setValues,updateExtraForm:extraFormState.setValues,isShippingAddressSelectionEnabled:isShippingAddressSelectionEnabled,isBillingAddressSelectionEnabled:isBillingAddressSelectionEnabled,isShippingFormVisible:isShippingFormVisible,setIsShippingFormVisible:setIsShippingFormVisible,numberOfAddressLines:numberOfAddressLines,registrationMode:registrationMode};},[shopSettings.supportedCountries,customerAttributes,userLocation,defaultBaseFormState,defaultBillingFormState,defaultShippingFormState,baseFormState.validationErrors,baseFormState.setValues,baseFormRequestErrors,billingFormState.validationErrors,billingFormState.setValues,billingFormRequestErrors,shippingFormState.validationErrors,shippingFormState.setValues,shippingFormRequestErrors,handleSubmit,defaultExtraFormState,extraFormState.setValues,extraFormState.validationErrors,extraFormRequestErrors,isShippingAddressSelectionEnabled,isBillingAddressSelectionEnabled,isShippingFormVisible,setIsShippingFormVisible,numberOfAddressLines,registrationMode]);if(!isDataReady){return null;}return React.createElement(Context.Provider,{value:value},children);};RegistrationProvider.defaultProps={formContainerRef:null,cartHasDirectShipItems:false,numberOfAddressLines:null};export default connect(RegistrationProvider);
17
+ setIsBaseFormSubmitted(false);setIsBillingFormSubmitted(false);setIsShippingFormSubmitted(false);setIsExtraFormSubmitted(false);setLocked(false);case 14:case"end":return _context.stop();}}},_callee);}));return function fn(){return _ref2.apply(this,arguments);};}();fn();/* eslint-disable react-hooks/exhaustive-deps */},[isBaseFormSubmitted,isBillingFormSubmitted,isShippingFormSubmitted,isExtraFormSubmitted,baseFormState.valid,billingFormState.valid,shippingFormState.valid,extraFormState.valid,isShippingFormVisible,submitRegistration]);/* eslint-enable react-hooks/exhaustive-deps */ /* eslint-disable react-hooks/exhaustive-deps */useEffect(function(){baseFormState.scrollToError();},[baseFormRequestErrors,billingFormRequestErrors,shippingFormRequestErrors,baseFormState.scrollToError]);/* eslint-enable react-hooks/exhaustive-deps */ /* eslint-disable react-hooks/exhaustive-deps */useEffect(function(){shippingFormState.setIgnoreErrors(!isShippingFormVisible);},[isShippingFormVisible]);/* eslint-enable react-hooks/exhaustive-deps */useEffect(function(){if(isLocked){LoadingProvider.setLoading(REGISTER_PATH);return;}LoadingProvider.unsetLoading(REGISTER_PATH);},[isLocked]);var value=useMemo(function(){return{supportedCountries:shopSettings.supportedCountries||[],countrySortOrder:shopSettings.countrySortOrder||[],customerAttributes:customerAttributes,userLocation:userLocation,defaultBaseFormState:defaultBaseFormState,defaultBillingFormState:defaultBillingFormState,defaultShippingFormState:defaultShippingFormState,defaultExtraFormState:defaultExtraFormState,baseFormValidationErrors:convertValidationErrors(baseFormState.validationErrors||baseFormRequestErrors||{}),billingFormValidationErrors:convertValidationErrors(billingFormState.validationErrors||billingFormRequestErrors||{}),shippingFormValidationErrors:convertValidationErrors(shippingFormState.validationErrors||shippingFormRequestErrors||{}),extraFormValidationErrors:convertValidationErrors(extraFormState.validationErrors||extraFormRequestErrors||{}),handleSubmit:handleSubmit,updateBaseForm:baseFormState.setValues,updateBillingForm:billingFormState.setValues,updateShippingForm:shippingFormState.setValues,updateExtraForm:extraFormState.setValues,isShippingAddressSelectionEnabled:isShippingAddressSelectionEnabled,isBillingAddressSelectionEnabled:isBillingAddressSelectionEnabled,isShippingFormVisible:isShippingFormVisible,setIsShippingFormVisible:setIsShippingFormVisible,numberOfAddressLines:numberOfAddressLines,registrationMode:registrationMode};},[shopSettings.supportedCountries,shopSettings.countrySortOrder,customerAttributes,userLocation,defaultBaseFormState,defaultBillingFormState,defaultShippingFormState,baseFormState.validationErrors,baseFormState.setValues,baseFormRequestErrors,billingFormState.validationErrors,billingFormState.setValues,billingFormRequestErrors,shippingFormState.validationErrors,shippingFormState.setValues,shippingFormRequestErrors,handleSubmit,defaultExtraFormState,extraFormState.setValues,extraFormState.validationErrors,extraFormRequestErrors,isShippingAddressSelectionEnabled,isBillingAddressSelectionEnabled,isShippingFormVisible,setIsShippingFormVisible,numberOfAddressLines,registrationMode]);if(!isDataReady){return null;}return React.createElement(Context.Provider,{value:value},children);};RegistrationProvider.defaultProps={formContainerRef:null,cartHasDirectShipItems:false,numberOfAddressLines:null};export default connect(RegistrationProvider);