@sentecacommerce-theme/lib 0.12.26 → 0.12.30

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 (182) hide show
  1. package/dist/cjs/analytics/Releva/api/query/useRelevaQuery.js +4 -2
  2. package/dist/cjs/analytics/Releva/api/query/useRelevaQuery.js.map +1 -1
  3. package/dist/cjs/analytics/Releva/hooks/useRelevaData.js +2 -2
  4. package/dist/cjs/analytics/Releva/hooks/useRelevaData.js.map +1 -1
  5. package/dist/cjs/analytics/Releva/useReleva.js +8 -1
  6. package/dist/cjs/analytics/Releva/useReleva.js.map +1 -1
  7. package/dist/cjs/cms/api/queries/index.js +16 -0
  8. package/dist/cjs/cms/api/queries/index.js.map +1 -1
  9. package/dist/cjs/cms/api/queries/keys.js +15 -1
  10. package/dist/cjs/cms/api/queries/keys.js.map +1 -1
  11. package/dist/cjs/cms/api/queries/useCMSContentListQuery.js +64 -0
  12. package/dist/cjs/cms/api/queries/useCMSContentListQuery.js.map +1 -0
  13. package/dist/cjs/cms/api/queries/useCMSContentQuery.js +54 -0
  14. package/dist/cjs/cms/api/queries/useCMSContentQuery.js.map +1 -0
  15. package/dist/cjs/cms/hooks/index.js +24 -0
  16. package/dist/cjs/cms/hooks/index.js.map +1 -1
  17. package/dist/cjs/{hooks/cms-content-hooks/useCmsContent/index.js → cms/hooks/useCmsContent.js} +6 -8
  18. package/dist/cjs/cms/hooks/useCmsContent.js.map +1 -0
  19. package/dist/cjs/{hooks/cms-content-hooks/useCmsContentList/index.js → cms/hooks/useCmsContentList.js} +5 -5
  20. package/dist/cjs/cms/hooks/useCmsContentList.js.map +1 -0
  21. package/dist/cjs/{hooks/cms-content-hooks/useContentCategoriesMap/index.js → cms/hooks/useContentCategoriesMap.js} +1 -1
  22. package/dist/cjs/cms/hooks/useContentCategoriesMap.js.map +1 -0
  23. package/dist/cjs/cms/ssr/fetchPagePaths.js.map +1 -1
  24. package/dist/cjs/cms/ssr/index.js +16 -0
  25. package/dist/cjs/cms/ssr/index.js.map +1 -1
  26. package/dist/cjs/cms/ssr/prefetchCmsContent.js +78 -0
  27. package/dist/cjs/cms/ssr/prefetchCmsContent.js.map +1 -0
  28. package/dist/cjs/cms/ssr/prefetchCmsContentList.js +85 -0
  29. package/dist/cjs/cms/ssr/prefetchCmsContentList.js.map +1 -0
  30. package/dist/cjs/cms/utils/getCMSContentListFilter.js +16 -0
  31. package/dist/cjs/cms/utils/getCMSContentListFilter.js.map +1 -0
  32. package/dist/cjs/cms/utils/index.js +8 -0
  33. package/dist/cjs/cms/utils/index.js.map +1 -1
  34. package/dist/cjs/config/SentecaProvider.js.map +1 -1
  35. package/dist/cjs/contexts/CheckoutForm/hooks/useBilling/index.js +4 -2
  36. package/dist/cjs/contexts/CheckoutForm/hooks/useBilling/index.js.map +1 -1
  37. package/dist/cjs/contexts/CheckoutForm/hooks/useShipping/index.js +8 -6
  38. package/dist/cjs/contexts/CheckoutForm/hooks/useShipping/index.js.map +1 -1
  39. package/dist/cjs/contexts/CheckoutForm/index.js +16 -9
  40. package/dist/cjs/contexts/CheckoutForm/index.js.map +1 -1
  41. package/dist/cjs/contexts/CheckoutForm/utils/validateBillingAddress.js +1 -2
  42. package/dist/cjs/contexts/CheckoutForm/utils/validateBillingAddress.js.map +1 -1
  43. package/dist/cjs/contexts/CheckoutForm/utils/validateShipping.js +28 -21
  44. package/dist/cjs/contexts/CheckoutForm/utils/validateShipping.js.map +1 -1
  45. package/dist/cjs/hooks/addresses-hooks/useAddressForm/index.js +4 -2
  46. package/dist/cjs/hooks/addresses-hooks/useAddressForm/index.js.map +1 -1
  47. package/dist/cjs/hooks/order-hooks/useOrder/index.js +12 -1
  48. package/dist/cjs/hooks/order-hooks/useOrder/index.js.map +1 -1
  49. package/dist/cjs/hooks/useAggregateResult/index.js +0 -4
  50. package/dist/cjs/hooks/useAggregateResult/index.js.map +1 -1
  51. package/dist/cjs/hooks/useCheckoutShippingModule/index.js +6 -1
  52. package/dist/cjs/hooks/useCheckoutShippingModule/index.js.map +1 -1
  53. package/dist/cjs/index.js +0 -16
  54. package/dist/cjs/index.js.map +1 -1
  55. package/dist/cjs/seo/api/ssr/getCanonicalUrl.js +27 -0
  56. package/dist/cjs/seo/api/ssr/getCanonicalUrl.js.map +1 -0
  57. package/dist/cjs/seo/api/ssr/index.js +8 -0
  58. package/dist/cjs/seo/api/ssr/index.js.map +1 -1
  59. package/dist/cjs/user/api/index.js +8 -0
  60. package/dist/cjs/user/api/index.js.map +1 -1
  61. package/dist/cjs/user/api/utils/generateAnonymousToken.js +48 -0
  62. package/dist/cjs/user/api/utils/generateAnonymousToken.js.map +1 -0
  63. package/dist/cjs/user/api/utils/index.js +8 -0
  64. package/dist/cjs/user/api/utils/index.js.map +1 -1
  65. package/dist/cjs/user/index.js +8 -0
  66. package/dist/cjs/user/index.js.map +1 -1
  67. package/dist/esm/analytics/Releva/api/query/useRelevaQuery.js +4 -2
  68. package/dist/esm/analytics/Releva/api/query/useRelevaQuery.js.map +1 -1
  69. package/dist/esm/analytics/Releva/hooks/useRelevaData.js +2 -2
  70. package/dist/esm/analytics/Releva/hooks/useRelevaData.js.map +1 -1
  71. package/dist/esm/analytics/Releva/useReleva.js +8 -2
  72. package/dist/esm/analytics/Releva/useReleva.js.map +1 -1
  73. package/dist/esm/cms/api/queries/index.js +2 -0
  74. package/dist/esm/cms/api/queries/index.js.map +1 -1
  75. package/dist/esm/cms/api/queries/keys.js +5 -0
  76. package/dist/esm/cms/api/queries/keys.js.map +1 -1
  77. package/dist/esm/cms/api/queries/useCMSContentListQuery.js +31 -0
  78. package/dist/esm/cms/api/queries/useCMSContentListQuery.js.map +1 -0
  79. package/dist/esm/cms/api/queries/useCMSContentQuery.js +17 -0
  80. package/dist/esm/cms/api/queries/useCMSContentQuery.js.map +1 -0
  81. package/dist/esm/cms/hooks/index.js +3 -0
  82. package/dist/esm/cms/hooks/index.js.map +1 -1
  83. package/dist/esm/{hooks/cms-content-hooks/useCmsContent/index.js → cms/hooks/useCmsContent.js} +6 -8
  84. package/dist/esm/cms/hooks/useCmsContent.js.map +1 -0
  85. package/dist/esm/{hooks/cms-content-hooks/useCmsContentList/index.js → cms/hooks/useCmsContentList.js} +5 -5
  86. package/dist/esm/cms/hooks/useCmsContentList.js.map +1 -0
  87. package/dist/esm/{hooks/cms-content-hooks/useContentCategoriesMap/index.js → cms/hooks/useContentCategoriesMap.js} +1 -1
  88. package/dist/esm/cms/hooks/useContentCategoriesMap.js.map +1 -0
  89. package/dist/esm/cms/ssr/fetchPagePaths.js.map +1 -1
  90. package/dist/esm/cms/ssr/index.js +2 -0
  91. package/dist/esm/cms/ssr/index.js.map +1 -1
  92. package/dist/esm/cms/ssr/prefetchCmsContent.js +30 -0
  93. package/dist/esm/cms/ssr/prefetchCmsContent.js.map +1 -0
  94. package/dist/esm/cms/ssr/prefetchCmsContentList.js +32 -0
  95. package/dist/esm/cms/ssr/prefetchCmsContentList.js.map +1 -0
  96. package/dist/esm/cms/utils/getCMSContentListFilter.js +9 -0
  97. package/dist/esm/cms/utils/getCMSContentListFilter.js.map +1 -0
  98. package/dist/esm/cms/utils/index.js +1 -0
  99. package/dist/esm/cms/utils/index.js.map +1 -1
  100. package/dist/esm/config/SentecaProvider.js.map +1 -1
  101. package/dist/esm/contexts/CheckoutForm/hooks/useBilling/index.js +4 -2
  102. package/dist/esm/contexts/CheckoutForm/hooks/useBilling/index.js.map +1 -1
  103. package/dist/esm/contexts/CheckoutForm/hooks/useShipping/index.js +8 -6
  104. package/dist/esm/contexts/CheckoutForm/hooks/useShipping/index.js.map +1 -1
  105. package/dist/esm/contexts/CheckoutForm/index.js +13 -9
  106. package/dist/esm/contexts/CheckoutForm/index.js.map +1 -1
  107. package/dist/esm/contexts/CheckoutForm/utils/validateBillingAddress.js +1 -2
  108. package/dist/esm/contexts/CheckoutForm/utils/validateBillingAddress.js.map +1 -1
  109. package/dist/esm/contexts/CheckoutForm/utils/validateShipping.js +25 -18
  110. package/dist/esm/contexts/CheckoutForm/utils/validateShipping.js.map +1 -1
  111. package/dist/esm/hooks/addresses-hooks/useAddressForm/index.js +3 -2
  112. package/dist/esm/hooks/addresses-hooks/useAddressForm/index.js.map +1 -1
  113. package/dist/esm/hooks/order-hooks/useOrder/index.js +10 -1
  114. package/dist/esm/hooks/order-hooks/useOrder/index.js.map +1 -1
  115. package/dist/esm/hooks/useAggregateResult/index.js +0 -2
  116. package/dist/esm/hooks/useAggregateResult/index.js.map +1 -1
  117. package/dist/esm/hooks/useCheckoutShippingModule/index.js +6 -1
  118. package/dist/esm/hooks/useCheckoutShippingModule/index.js.map +1 -1
  119. package/dist/esm/index.js +0 -2
  120. package/dist/esm/index.js.map +1 -1
  121. package/dist/esm/seo/api/ssr/getCanonicalUrl.js +18 -0
  122. package/dist/esm/seo/api/ssr/getCanonicalUrl.js.map +1 -0
  123. package/dist/esm/seo/api/ssr/index.js +1 -0
  124. package/dist/esm/seo/api/ssr/index.js.map +1 -1
  125. package/dist/esm/user/api/index.js +1 -0
  126. package/dist/esm/user/api/index.js.map +1 -1
  127. package/dist/esm/user/api/utils/generateAnonymousToken.js +23 -0
  128. package/dist/esm/user/api/utils/generateAnonymousToken.js.map +1 -0
  129. package/dist/esm/user/api/utils/index.js +1 -0
  130. package/dist/esm/user/api/utils/index.js.map +1 -1
  131. package/dist/esm/user/index.js +1 -0
  132. package/dist/esm/user/index.js.map +1 -1
  133. package/dist/types/analytics/Releva/api/query/useRelevaQuery.d.ts +1 -1
  134. package/dist/types/analytics/Releva/hooks/useRelevaData.d.ts +1 -1
  135. package/dist/types/cms/api/queries/index.d.ts +2 -0
  136. package/dist/types/cms/api/queries/keys.d.ts +5 -1
  137. package/dist/types/cms/api/queries/useCMSContentListQuery.d.ts +15 -0
  138. package/dist/types/cms/api/queries/useCMSContentQuery.d.ts +1 -0
  139. package/dist/types/cms/hooks/index.d.ts +3 -0
  140. package/dist/types/{hooks/cms-content-hooks/useCmsContent/index.d.ts → cms/hooks/useCmsContent.d.ts} +0 -0
  141. package/dist/types/{hooks/cms-content-hooks/useCmsContentList/index.d.ts → cms/hooks/useCmsContentList.d.ts} +1 -1
  142. package/dist/types/{hooks/cms-content-hooks/useContentCategoriesMap/index.d.ts → cms/hooks/useContentCategoriesMap.d.ts} +0 -0
  143. package/dist/types/cms/ssr/fetchPagePaths.d.ts +1 -1
  144. package/dist/types/cms/ssr/index.d.ts +2 -0
  145. package/dist/types/cms/ssr/prefetchCmsContent.d.ts +5 -0
  146. package/dist/types/cms/ssr/prefetchCmsContentList.d.ts +3 -0
  147. package/dist/types/cms/utils/getCMSContentListFilter.d.ts +1 -0
  148. package/dist/types/cms/utils/index.d.ts +1 -0
  149. package/dist/types/config/SentecaProvider.d.ts +1 -0
  150. package/dist/types/contexts/CheckoutForm/hooks/useBilling/index.d.ts +4 -2
  151. package/dist/types/contexts/CheckoutForm/hooks/useShipping/index.d.ts +3 -1
  152. package/dist/types/contexts/CheckoutForm/index.d.ts +4 -1
  153. package/dist/types/contexts/CheckoutForm/utils/validateBillingAddress.d.ts +2 -2
  154. package/dist/types/contexts/CheckoutForm/utils/validateShipping.d.ts +1 -1
  155. package/dist/types/hooks/addresses-hooks/useAddressForm/index.d.ts +2 -1
  156. package/dist/types/hooks/order-hooks/useOrder/index.d.ts +7 -1
  157. package/dist/types/hooks/useAggregateResult/index.d.ts +2 -2
  158. package/dist/types/hooks/useCheckoutShippingModule/index.d.ts +2 -2
  159. package/dist/types/index.d.ts +0 -2
  160. package/dist/types/seo/api/ssr/getCanonicalUrl.d.ts +3 -0
  161. package/dist/types/seo/api/ssr/index.d.ts +1 -0
  162. package/dist/types/user/api/index.d.ts +1 -0
  163. package/dist/types/user/api/utils/generateAnonymousToken.d.ts +1 -0
  164. package/dist/types/user/api/utils/index.d.ts +1 -0
  165. package/dist/types/user/index.d.ts +1 -0
  166. package/package.json +3 -3
  167. package/dist/cjs/api/cmsContentApi/index.js +0 -325
  168. package/dist/cjs/api/cmsContentApi/index.js.map +0 -1
  169. package/dist/cjs/hooks/cms-content-hooks/index.js +0 -28
  170. package/dist/cjs/hooks/cms-content-hooks/index.js.map +0 -1
  171. package/dist/cjs/hooks/cms-content-hooks/useCmsContent/index.js.map +0 -1
  172. package/dist/cjs/hooks/cms-content-hooks/useCmsContentList/index.js.map +0 -1
  173. package/dist/cjs/hooks/cms-content-hooks/useContentCategoriesMap/index.js.map +0 -1
  174. package/dist/esm/api/cmsContentApi/index.js +0 -161
  175. package/dist/esm/api/cmsContentApi/index.js.map +0 -1
  176. package/dist/esm/hooks/cms-content-hooks/index.js +0 -4
  177. package/dist/esm/hooks/cms-content-hooks/index.js.map +0 -1
  178. package/dist/esm/hooks/cms-content-hooks/useCmsContent/index.js.map +0 -1
  179. package/dist/esm/hooks/cms-content-hooks/useCmsContentList/index.js.map +0 -1
  180. package/dist/esm/hooks/cms-content-hooks/useContentCategoriesMap/index.js.map +0 -1
  181. package/dist/types/api/cmsContentApi/index.d.ts +0 -37
  182. package/dist/types/hooks/cms-content-hooks/index.d.ts +0 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/contexts/CheckoutForm/hooks/useBilling/index.ts"],"names":["useCallback","useEffect","useMemo","useState","useCheckoutBillingAddress","companiesApi","updateObjProp","useSavedBillingList","usePersistOnBeforeUnload","IS_NEW","useBilling","orderQuery","errorLabels","withSavedBillingAddressList","enableSaveBillingAddress","withPersistBeforePageLeave","countryCode","validateBillingAddress","enabled","emptyBillingAddress","_id","streetName","company","undefined","isDefaultBillingAddress","createdAt","updatedAt","isBillingAddressSubmitting","setIsBillingAddressSubmitting","isWithBillingAddress","setIsWithBillingAddress","saveBillingAddress","useAdd","handleBillingAddressChange","currentBillingAddress","savedBillingAddress","billingAddress","setBillingAddress","isAddingNew","setIsAddingNew","billingAddressList","Boolean","selectedBillingAddress","billingAddressErrors","onInputChange","name","value","data","companyName","companyId","split","persistBillingAddress","Promise","resolve","reject","onSuccess","order","onError","handleSaveBillingAddress","custom","filter","field","Date","now","resetBillingAddress","updateIsWithBillingAddress","callback","initialValue","some","updateIsAddingNew","isSubmitting","errors","isValid","updateIsSubmitting","canSaveBillingAddress"],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useMemo, useState } from 'react'\nimport {\n CheckoutFormErrorLabelsType,\n CheckoutFormErrorsResultType,\n} from '../..'\nimport { useCheckoutBillingAddress } from '../../../../hooks/useCheckoutBillingAddress'\nimport { companiesApi } from '../../../../api/companiesApi'\nimport { AddressDTO, OrderDTO } from '@sentecacommerce/sdk'\n\nimport { updateObjProp } from '../../utils'\nimport { QueryResult } from 'react-query'\nimport {\n useSavedBillingList,\n SavedBillingAddress,\n} from '../useSavedBillingList'\nimport { usePersistOnBeforeUnload } from '../usePersistOnBeforeUnload'\n\nconst IS_NEW = 'isNew'\n\nexport const useBilling = ({\n orderQuery,\n errorLabels,\n withSavedBillingAddressList,\n enableSaveBillingAddress,\n withPersistBeforePageLeave,\n countryCode,\n validateBillingAddress,\n enabled,\n}: UseBillingProps): UseBillingResultType => {\n const emptyBillingAddress = useMemo(() => {\n return {\n _id: '',\n streetName: '',\n company: undefined,\n isDefaultBillingAddress: false,\n createdAt: 0,\n updatedAt: 0,\n countryCode,\n }\n }, [countryCode])\n\n const [isBillingAddressSubmitting, setIsBillingAddressSubmitting] = useState(\n false\n )\n\n const [isWithBillingAddress, setIsWithBillingAddress] = useState<\n null | boolean\n >(null)\n\n const [saveBillingAddress] = companiesApi.useAdd()\n\n const {\n handleBillingAddressChange,\n currentBillingAddress: savedBillingAddress,\n } = useCheckoutBillingAddress(orderQuery)\n\n const [billingAddress, setBillingAddress] = useState(savedBillingAddress)\n const [isAddingNew, setIsAddingNew] = useState<boolean | null>(null)\n\n const billingAddressList = useSavedBillingList({\n enabled: Boolean(\n enabled && isWithBillingAddress && withSavedBillingAddressList\n ),\n selectedBillingAddress: billingAddress,\n setBillingAddress,\n handleBillingAddressChange,\n })\n\n const billingAddressErrors = useMemo(() => {\n return billingAddress && validateBillingAddress(billingAddress, errorLabels)\n }, [billingAddress, errorLabels, validateBillingAddress])\n\n /**\n * On input change with nested fields support\n *\n * @param name example name: 'company.companyPerson'\n * @param value\n */\n const onInputChange = useCallback(\n async (name: string, value: any) => {\n const data = billingAddress && { ...billingAddress }\n\n // add an empty company when company is undefined\n if (data && !data?.company)\n data.company = { companyName: '', companyId: '' }\n\n if (data) updateObjProp(data, value, name.split('.'))\n\n setBillingAddress(data)\n },\n [billingAddress]\n )\n\n /**\n * Save current billing address state\n */\n const persistBillingAddress = useCallback(() => {\n if (!billingAddress || !isWithBillingAddress) return\n\n return new Promise((resolve, reject) => {\n handleBillingAddressChange(billingAddress, {\n onSuccess: (order: OrderDTO) => resolve(order),\n onError: () => reject(),\n })\n })\n }, [billingAddress])\n\n /**\n * Save the filled billing address\n */\n const handleSaveBillingAddress = useCallback(() => {\n if (!enableSaveBillingAddress) return\n\n setIsBillingAddressSubmitting(true)\n\n if (billingAddressErrors || !billingAddress) {\n return\n }\n\n const data = {\n ...billingAddress,\n custom: billingAddress?.custom?.filter(({ field }) => field !== IS_NEW),\n createdAt: Date.now(),\n updatedAt: Date.now(),\n }\n\n saveBillingAddress(data)\n handleBillingAddressChange(data)\n setIsAddingNew(false)\n }, [billingAddress, enableSaveBillingAddress, billingAddressErrors])\n\n /**\n * Clear billing address\n */\n const resetBillingAddress = useCallback(() => {\n handleBillingAddressChange(emptyBillingAddress)\n setBillingAddress(emptyBillingAddress)\n }, [emptyBillingAddress])\n\n const updateIsWithBillingAddress = useCallback(\n (value: boolean) => {\n if (!value) {\n setIsWithBillingAddress(false)\n\n resetBillingAddress()\n return\n }\n\n setIsWithBillingAddress(true)\n },\n [resetBillingAddress]\n )\n\n /**\n * Set initial data\n */\n useEffect(() => {\n if (billingAddress || typeof savedBillingAddress === 'undefined') return\n\n setBillingAddress(savedBillingAddress || emptyBillingAddress)\n }, [savedBillingAddress, billingAddress, emptyBillingAddress])\n\n /**\n * Set initial isWithBillingAddress\n */\n useEffect(() => {\n if (!billingAddress || isWithBillingAddress !== null) return\n\n setIsWithBillingAddress(Boolean(billingAddress.company))\n }, [billingAddress, isWithBillingAddress])\n\n // persist data before page exit\n usePersistOnBeforeUnload({\n enabled: withPersistBeforePageLeave,\n callback: persistBillingAddress,\n })\n\n /**\n * Set initial value\n */\n useEffect(() => {\n if (!billingAddress || isAddingNew !== null) return\n\n const initialValue =\n billingAddress?.custom?.some(\n ({ field, value }) => field === IS_NEW && value === 1\n ) || false\n\n setIsAddingNew(initialValue)\n }, [billingAddress, isAddingNew])\n\n const updateIsAddingNew = useCallback(\n (value: boolean) => {\n const data: AddressDTO = {\n _id: billingAddress?._id || '',\n createdAt: Date.now(),\n updatedAt: Date.now(),\n company: {\n companyName: '',\n companyId: '',\n },\n custom: [\n {\n field: IS_NEW,\n value: value ? 1 : 0,\n },\n ],\n }\n\n setBillingAddress(data)\n setIsAddingNew(value)\n },\n [billingAddress]\n )\n\n return useMemo(() => {\n return {\n isSubmitting: isBillingAddressSubmitting,\n errors: isBillingAddressSubmitting ? billingAddressErrors || null : null,\n data: billingAddress,\n isValid: !billingAddressErrors,\n updateIsSubmitting: setIsBillingAddressSubmitting,\n onInputChange,\n persistBillingAddress,\n billingAddressList,\n saveBillingAddress: handleSaveBillingAddress,\n isWithBillingAddress,\n updateIsWithBillingAddress,\n canSaveBillingAddress: enableSaveBillingAddress,\n isAddingNew: Boolean(isAddingNew),\n updateIsAddingNew,\n }\n }, [\n isBillingAddressSubmitting,\n isAddingNew,\n updateIsAddingNew,\n enableSaveBillingAddress,\n handleSaveBillingAddress,\n billingAddressList,\n persistBillingAddress,\n onInputChange,\n billingAddressErrors,\n billingAddress,\n isWithBillingAddress,\n updateIsWithBillingAddress,\n ])\n}\n\ntype UseBillingProps = {\n orderQuery: QueryResult<OrderDTO, unknown>\n errorLabels: CheckoutFormErrorLabelsType\n withSavedBillingAddressList: boolean\n enableSaveBillingAddress: boolean\n withPersistBeforePageLeave: boolean\n countryCode: string\n enabled: boolean\n validateBillingAddress: (\n address: AddressDTO,\n errors: CheckoutFormErrorLabelsType\n ) => CheckoutFormErrorsResultType\n}\n\nexport type UseBillingResultType = {\n isSubmitting: boolean\n errors?: CheckoutFormErrorsResultType\n isValid: boolean\n data?: AddressDTO\n updateIsSubmitting: (value: boolean) => void\n onInputChange?: (name: string, value: any) => void\n persistBillingAddress: () => void\n saveBillingAddress: () => void\n\n billingAddressList?: SavedBillingAddress[]\n\n canSaveBillingAddress: boolean\n\n isWithBillingAddress: null | boolean\n updateIsWithBillingAddress: (data: boolean) => void\n\n isAddingNew: boolean\n updateIsAddingNew: (value: boolean) => void\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../../../../src/contexts/CheckoutForm/hooks/useBilling/index.ts"],"names":["useCallback","useEffect","useMemo","useState","useCheckoutBillingAddress","companiesApi","updateObjProp","useSavedBillingList","usePersistOnBeforeUnload","IS_NEW","useBilling","orderQuery","errorLabels","withSavedBillingAddressList","enableSaveBillingAddress","withPersistBeforePageLeave","countryCode","validateBillingAddress","enabled","requiredFields","requiredFieldsOnShipping","emptyBillingAddress","_id","streetName","company","undefined","isDefaultBillingAddress","createdAt","updatedAt","isBillingAddressSubmitting","setIsBillingAddressSubmitting","isWithBillingAddress","setIsWithBillingAddress","saveBillingAddress","useAdd","handleBillingAddressChange","currentBillingAddress","savedBillingAddress","billingAddress","setBillingAddress","isAddingNew","setIsAddingNew","billingAddressList","Boolean","selectedBillingAddress","billingAddressErrors","onInputChange","name","value","data","companyName","companyId","split","persistBillingAddress","Promise","resolve","reject","onSuccess","order","onError","handleSaveBillingAddress","custom","filter","field","Date","now","resetBillingAddress","updateIsWithBillingAddress","callback","initialValue","some","updateIsAddingNew","isSubmitting","errors","isValid","updateIsSubmitting","canSaveBillingAddress"],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useMemo, useState } from 'react'\nimport {\n CheckoutFormErrorLabelsType,\n CheckoutFormErrorsResultType,\n} from '../..'\nimport { useCheckoutBillingAddress } from '../../../../hooks/useCheckoutBillingAddress'\nimport { companiesApi } from '../../../../api/companiesApi'\nimport { AddressDTO, OrderDTO } from '@sentecacommerce/sdk'\n\nimport { updateObjProp } from '../../utils'\nimport { QueryResult } from 'react-query'\nimport {\n useSavedBillingList,\n SavedBillingAddress,\n} from '../useSavedBillingList'\nimport { usePersistOnBeforeUnload } from '../usePersistOnBeforeUnload'\n\nconst IS_NEW = 'isNew'\n\nexport const useBilling = ({\n orderQuery,\n errorLabels,\n withSavedBillingAddressList,\n enableSaveBillingAddress,\n withPersistBeforePageLeave,\n countryCode,\n validateBillingAddress,\n enabled,\n requiredFields,\n requiredFieldsOnShipping,\n}: UseBillingProps): UseBillingResultType => {\n const emptyBillingAddress = useMemo(() => {\n return {\n _id: '',\n streetName: '',\n company: undefined,\n isDefaultBillingAddress: false,\n createdAt: 0,\n updatedAt: 0,\n countryCode,\n }\n }, [countryCode])\n\n const [isBillingAddressSubmitting, setIsBillingAddressSubmitting] = useState(\n false\n )\n\n const [isWithBillingAddress, setIsWithBillingAddress] = useState<\n null | boolean\n >(null)\n\n const [saveBillingAddress] = companiesApi.useAdd()\n\n const {\n handleBillingAddressChange,\n currentBillingAddress: savedBillingAddress,\n } = useCheckoutBillingAddress(orderQuery)\n\n const [billingAddress, setBillingAddress] = useState(savedBillingAddress)\n const [isAddingNew, setIsAddingNew] = useState<boolean | null>(null)\n\n const billingAddressList = useSavedBillingList({\n enabled: Boolean(\n enabled && isWithBillingAddress && withSavedBillingAddressList\n ),\n selectedBillingAddress: billingAddress,\n setBillingAddress,\n handleBillingAddressChange,\n })\n\n const billingAddressErrors = useMemo(() => {\n return (\n billingAddress &&\n validateBillingAddress(\n billingAddress,\n errorLabels,\n requiredFields,\n requiredFieldsOnShipping\n )\n )\n }, [billingAddress, errorLabels, validateBillingAddress])\n\n /**\n * On input change with nested fields support\n *\n * @param name example name: 'company.companyPerson'\n * @param value\n */\n const onInputChange = useCallback(\n async (name: string, value: any) => {\n const data = billingAddress && { ...billingAddress }\n\n // add an empty company when company is undefined\n if (data && !data?.company)\n data.company = { companyName: '', companyId: '' }\n\n if (data) updateObjProp(data, value, name.split('.'))\n\n setBillingAddress(data)\n },\n [billingAddress]\n )\n\n /**\n * Save current billing address state\n */\n const persistBillingAddress = useCallback(() => {\n if (!billingAddress || !isWithBillingAddress) return\n\n return new Promise((resolve, reject) => {\n handleBillingAddressChange(billingAddress, {\n onSuccess: (order: OrderDTO) => resolve(order),\n onError: () => reject(),\n })\n })\n }, [billingAddress])\n\n /**\n * Save the filled billing address\n */\n const handleSaveBillingAddress = useCallback(() => {\n if (!enableSaveBillingAddress) return\n\n setIsBillingAddressSubmitting(true)\n\n if (billingAddressErrors || !billingAddress) {\n return\n }\n\n const data = {\n ...billingAddress,\n custom: billingAddress?.custom?.filter(({ field }) => field !== IS_NEW),\n createdAt: Date.now(),\n updatedAt: Date.now(),\n }\n\n saveBillingAddress(data)\n handleBillingAddressChange(data)\n setIsAddingNew(false)\n }, [billingAddress, enableSaveBillingAddress, billingAddressErrors])\n\n /**\n * Clear billing address\n */\n const resetBillingAddress = useCallback(() => {\n handleBillingAddressChange(emptyBillingAddress)\n setBillingAddress(emptyBillingAddress)\n }, [emptyBillingAddress])\n\n const updateIsWithBillingAddress = useCallback(\n (value: boolean) => {\n if (!value) {\n setIsWithBillingAddress(false)\n\n resetBillingAddress()\n return\n }\n\n setIsWithBillingAddress(true)\n },\n [resetBillingAddress]\n )\n\n /**\n * Set initial data\n */\n useEffect(() => {\n if (billingAddress || typeof savedBillingAddress === 'undefined') return\n\n setBillingAddress(savedBillingAddress || emptyBillingAddress)\n }, [savedBillingAddress, billingAddress, emptyBillingAddress])\n\n /**\n * Set initial isWithBillingAddress\n */\n useEffect(() => {\n if (!billingAddress || isWithBillingAddress !== null) return\n\n setIsWithBillingAddress(Boolean(billingAddress.company))\n }, [billingAddress, isWithBillingAddress])\n\n // persist data before page exit\n usePersistOnBeforeUnload({\n enabled: withPersistBeforePageLeave,\n callback: persistBillingAddress,\n })\n\n /**\n * Set initial value\n */\n useEffect(() => {\n if (!billingAddress || isAddingNew !== null) return\n\n const initialValue =\n billingAddress?.custom?.some(\n ({ field, value }) => field === IS_NEW && value === 1\n ) || false\n\n setIsAddingNew(initialValue)\n }, [billingAddress, isAddingNew])\n\n const updateIsAddingNew = useCallback(\n (value: boolean) => {\n const data: AddressDTO = {\n _id: billingAddress?._id || '',\n createdAt: Date.now(),\n updatedAt: Date.now(),\n company: {\n companyName: '',\n companyId: '',\n },\n custom: [\n {\n field: IS_NEW,\n value: value ? 1 : 0,\n },\n ],\n }\n\n setBillingAddress(data)\n setIsAddingNew(value)\n },\n [billingAddress]\n )\n\n return useMemo(() => {\n return {\n isSubmitting: isBillingAddressSubmitting,\n errors: isBillingAddressSubmitting ? billingAddressErrors || null : null,\n data: billingAddress,\n isValid: !billingAddressErrors,\n updateIsSubmitting: setIsBillingAddressSubmitting,\n onInputChange,\n persistBillingAddress,\n billingAddressList,\n saveBillingAddress: handleSaveBillingAddress,\n isWithBillingAddress,\n updateIsWithBillingAddress,\n canSaveBillingAddress: enableSaveBillingAddress,\n isAddingNew: Boolean(isAddingNew),\n updateIsAddingNew,\n }\n }, [\n isBillingAddressSubmitting,\n isAddingNew,\n updateIsAddingNew,\n enableSaveBillingAddress,\n handleSaveBillingAddress,\n billingAddressList,\n persistBillingAddress,\n onInputChange,\n billingAddressErrors,\n billingAddress,\n isWithBillingAddress,\n updateIsWithBillingAddress,\n ])\n}\n\ntype UseBillingProps = {\n orderQuery: QueryResult<OrderDTO, unknown>\n errorLabels: CheckoutFormErrorLabelsType\n withSavedBillingAddressList: boolean\n enableSaveBillingAddress: boolean\n withPersistBeforePageLeave: boolean\n countryCode: string\n enabled: boolean\n requiredFields: string[]\n requiredFieldsOnShipping: string[]\n validateBillingAddress: (\n address: AddressDTO,\n errors: CheckoutFormErrorLabelsType,\n requiredCompanyFields: string[],\n requiredFields: string[]\n ) => CheckoutFormErrorsResultType\n}\n\nexport type UseBillingResultType = {\n isSubmitting: boolean\n errors?: CheckoutFormErrorsResultType\n isValid: boolean\n data?: AddressDTO\n updateIsSubmitting: (value: boolean) => void\n onInputChange?: (name: string, value: any) => void\n persistBillingAddress: () => void\n saveBillingAddress: () => void\n\n billingAddressList?: SavedBillingAddress[]\n\n canSaveBillingAddress: boolean\n\n isWithBillingAddress: null | boolean\n updateIsWithBillingAddress: (data: boolean) => void\n\n isAddingNew: boolean\n updateIsAddingNew: (value: boolean) => void\n}\n"],"file":"index.js"}
@@ -23,7 +23,9 @@ export var useShipping = (_ref) => {
23
23
  autofillShippingPersonalData,
24
24
  userQuery,
25
25
  enabled,
26
- countryCode
26
+ countryCode,
27
+ requiredFields,
28
+ enableNoShippingMethodMode
27
29
  } = _ref;
28
30
  var [isShippingSubmitting, setIsShippingSubmitting] = useState(false);
29
31
  var [saveAddress] = addressesApi.useAdd({});
@@ -32,7 +34,7 @@ export var useShipping = (_ref) => {
32
34
  currentShippingAddress: savedShippingAddress
33
35
  } = useCheckoutShippingAddress(orderQuery);
34
36
  var [shippingAddress, setShippingAddress] = useState();
35
- var mod = useCheckoutShippingModule(orderQuery);
37
+ var mod = useCheckoutShippingModule(orderQuery, !enableNoShippingMethodMode);
36
38
  var {
37
39
  savedAddressList,
38
40
  hasAvailableSavedAddress
@@ -46,19 +48,19 @@ export var useShipping = (_ref) => {
46
48
  var _mod$moduleData, _moduleAddress$city, _moduleAddress$quarte, _moduleAddress$street, _moduleAddress$city$p, _moduleAddress$city2;
47
49
 
48
50
  if (!shippingAddress) return;
49
- var moduleAddress = (_mod$moduleData = mod.moduleData) == null ? void 0 : _mod$moduleData.address;
51
+ var moduleAddress = mod == null ? void 0 : (_mod$moduleData = mod.moduleData) == null ? void 0 : _mod$moduleData.address;
50
52
  return _extends({}, shippingAddress, {
51
53
  city: (moduleAddress == null ? void 0 : (_moduleAddress$city = moduleAddress.city) == null ? void 0 : _moduleAddress$city.name) || shippingAddress.city,
52
54
  quarter: (moduleAddress == null ? void 0 : (_moduleAddress$quarte = moduleAddress.quarter) == null ? void 0 : _moduleAddress$quarte.name) || shippingAddress.quarter,
53
55
  streetName: (moduleAddress == null ? void 0 : (_moduleAddress$street = moduleAddress.street) == null ? void 0 : _moduleAddress$street.name) || shippingAddress.streetName,
54
56
  postalCode: ((_moduleAddress$city$p = moduleAddress == null ? void 0 : (_moduleAddress$city2 = moduleAddress.city) == null ? void 0 : _moduleAddress$city2.postCode) != null ? _moduleAddress$city$p : '') || shippingAddress.postalCode,
55
57
  moduleData: [{
56
- moduleKey: mod.moduleKey,
57
- moduleData: _extends({}, mod.moduleData)
58
+ moduleKey: mod == null ? void 0 : mod.moduleKey,
59
+ moduleData: _extends({}, mod == null ? void 0 : mod.moduleData)
58
60
  }]
59
61
  });
60
62
  }, [shippingAddress, mod]);
61
- var addressErrors = useMemo(() => validateShipping(shippingAddressWithModule, mod, errorLabels, validations), [shippingAddressWithModule, mod, errorLabels, validations]);
63
+ var addressErrors = useMemo(() => validateShipping(shippingAddressWithModule, mod, errorLabels, validations, requiredFields, enableNoShippingMethodMode), [shippingAddressWithModule, mod, errorLabels, validations]);
62
64
  /**
63
65
  * Save the current address
64
66
  */
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/contexts/CheckoutForm/hooks/useShipping/index.ts"],"names":["useCallback","useMemo","useState","addressesApi","useCheckoutShippingModule","useCheckoutShippingAddress","validateShipping","updateObjProp","usePersistOnBeforeUnload","useSavedShippingList","useShippingInitialData","IS_NEW","SELECTED_ADDRESS_ID","useShipping","withPersistBeforePageLeave","orderQuery","validations","enableSavedAddressList","errorLabels","enableSaveAddress","autofillShippingPersonalData","userQuery","enabled","countryCode","isShippingSubmitting","setIsShippingSubmitting","saveAddress","useAdd","handleShippingAddressChange","currentShippingAddress","savedShippingAddress","shippingAddress","setShippingAddress","mod","savedAddressList","hasAvailableSavedAddress","selectedShippingAddress","shippingAddressWithModule","moduleAddress","moduleData","address","city","name","quarter","streetName","street","postalCode","postCode","moduleKey","addressErrors","handleShippingAddressSave","_id","undefined","custom","filter","field","onSuccess","data","createdAt","Date","now","updatedAt","value","onInputChange","split","setGeographicalData","latitude","longitude","placeId","geocoding","geographicalCoordinates","unsetShippingAddress","persistShippingAddress","Promise","resolve","reject","order","onError","callback","isAddingNew","Boolean","some","updateIsAddingNew","autofillData","firstName","lastName","email","phoneNumber","isSubmitting","errors","isValid","updateIsSubmitting","isSavedAddressListEnabled","saveShippingAddress","canSaveAddress"],"mappings":"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","sourcesContent":["import { useCallback, useMemo, useState } from 'react'\nimport { QueryResult } from 'react-query'\nimport { AddressDTO, CustomerDTO, OrderDTO } from '@sentecacommerce/sdk'\n\nimport {\n CheckoutFormErrorLabelsType,\n CheckoutFormErrorsResultType,\n} from '../../'\nimport { addressesApi } from '../../../../api/addressesApi'\nimport { useCheckoutShippingModule } from '../../../../hooks/useCheckoutShippingModule'\nimport { useCheckoutShippingAddress } from '../../../../hooks/useCheckoutShippingAddress'\n\nimport {\n validateShipping,\n updateObjProp,\n ShippingValidationsType,\n} from '../../utils'\nimport { usePersistOnBeforeUnload } from '../usePersistOnBeforeUnload'\nimport { useSavedShippingList } from '../useSavedShippingList'\nimport { useShippingInitialData } from '../useShippingInitialData'\n\nconst IS_NEW = 'isNew'\nconst SELECTED_ADDRESS_ID = 'selectedAddressId'\n\nexport const useShipping = ({\n withPersistBeforePageLeave,\n orderQuery,\n validations,\n enableSavedAddressList,\n errorLabels,\n enableSaveAddress,\n autofillShippingPersonalData,\n userQuery,\n enabled,\n countryCode\n}: UseShippingProps): UseShippingResultType => {\n const [isShippingSubmitting, setIsShippingSubmitting] = useState(false)\n\n const [saveAddress] = addressesApi.useAdd({})\n\n const {\n handleShippingAddressChange,\n currentShippingAddress: savedShippingAddress,\n } = useCheckoutShippingAddress(orderQuery)\n\n const [shippingAddress, setShippingAddress] = useState<\n AddressDTO | undefined\n >()\n\n const mod = useCheckoutShippingModule(orderQuery)\n\n const { savedAddressList, hasAvailableSavedAddress } = useSavedShippingList({\n enabled: enabled && enableSavedAddressList,\n selectedShippingAddress: shippingAddress,\n setShippingAddress,\n handleShippingAddressChange,\n })\n const shippingAddressWithModule: AddressDTO | undefined = useMemo(() => {\n if (!shippingAddress) return\n const moduleAddress = mod.moduleData?.address\n\n return {\n ...shippingAddress,\n city: moduleAddress?.city?.name || shippingAddress.city,\n quarter: moduleAddress?.quarter?.name || shippingAddress.quarter,\n streetName: moduleAddress?.street?.name || shippingAddress.streetName,\n postalCode:\n (moduleAddress?.city?.postCode ?? '') || shippingAddress.postalCode,\n moduleData: [\n {\n moduleKey: mod.moduleKey as string,\n moduleData: {\n ...mod.moduleData,\n },\n },\n ],\n }\n }, [shippingAddress, mod])\n\n const addressErrors = useMemo(\n () =>\n validateShipping(\n shippingAddressWithModule,\n mod,\n errorLabels,\n validations\n ),\n [shippingAddressWithModule, mod, errorLabels, validations]\n )\n\n /**\n * Save the current address\n */\n const handleShippingAddressSave = useCallback(() => {\n if (!enableSaveAddress) return\n\n setIsShippingSubmitting(true)\n if (addressErrors) return\n\n saveAddress(\n {\n ...shippingAddressWithModule,\n _id: undefined,\n countryCode,\n custom: shippingAddressWithModule?.custom?.filter(\n ({ field }) => field !== IS_NEW && field !== SELECTED_ADDRESS_ID\n ),\n },\n {\n onSuccess: (address) => {\n const data = {\n ...address,\n createdAt: Date.now(),\n updatedAt: Date.now(),\n custom: [\n ...(address?.custom || []),\n {\n field: SELECTED_ADDRESS_ID,\n value: address._id,\n },\n ],\n }\n\n setShippingAddress(data)\n handleShippingAddressChange(data)\n },\n }\n )\n }, [addressErrors, enableSaveAddress, shippingAddressWithModule])\n\n /**\n * Name supports nested fields\n *\n * @param name example name: 'example.firstName'\n * @param value\n */\n const onInputChange = useCallback(\n async (name: string, value: any) => {\n if (!shippingAddress) return\n\n const data = { ...shippingAddress }\n\n updateObjProp(data, value, name.split('.'))\n\n setShippingAddress(data)\n },\n [shippingAddress]\n )\n\n const setGeographicalData = useCallback(\n async ({\n latitude,\n longitude,\n placeId,\n geocoding,\n }: UseGeographicalData) => {\n if (!shippingAddressWithModule) return\n\n const data = {\n ...shippingAddressWithModule,\n geographicalCoordinates: {\n latitude,\n longitude,\n },\n custom: [\n ...(shippingAddress?.custom || []),\n { field: 'placeId', value: placeId },\n { field: 'geocoding', value: geocoding },\n ],\n }\n\n setShippingAddress(data)\n return await handleShippingAddressChange(data)\n },\n [shippingAddress, handleShippingAddressChange]\n )\n\n const unsetShippingAddress = useCallback(async () => {\n setShippingAddress(undefined)\n await handleShippingAddressChange()\n }, [])\n\n const persistShippingAddress = useCallback(() => {\n if (!shippingAddressWithModule) return\n\n return new Promise((resolve, reject) => {\n handleShippingAddressChange(shippingAddressWithModule, {\n onSuccess: (order: OrderDTO) => resolve(order),\n onError: () => reject(),\n })\n })\n }, [shippingAddressWithModule])\n\n /**\n * Set initial data\n */\n useShippingInitialData({\n savedShippingAddress,\n shippingAddress,\n setShippingAddress,\n autofillShippingPersonalData,\n userQuery,\n })\n\n // persist data before page exit\n usePersistOnBeforeUnload({\n enabled: withPersistBeforePageLeave,\n callback: persistShippingAddress,\n })\n\n const isAddingNew = Boolean(\n shippingAddressWithModule?.custom?.some(\n ({ field, value }) => field === IS_NEW && value === 1\n )\n )\n\n const updateIsAddingNew = useCallback(\n (value: boolean) => {\n if (isAddingNew === value) return\n\n let autofillData = {}\n\n if (value && autofillShippingPersonalData) {\n autofillData = {\n firstName: userQuery?.data?.firstName,\n lastName: userQuery?.data?.lastName,\n email: userQuery?.data?.email,\n phoneNumber: userQuery?.data?.phoneNumber,\n }\n }\n\n const data: AddressDTO = {\n _id: shippingAddressWithModule?._id as string,\n createdAt: Date.now(),\n updatedAt: Date.now(),\n ...autofillData,\n custom: [\n {\n field: IS_NEW,\n value: value ? 1 : 0,\n },\n ],\n }\n\n setIsShippingSubmitting(false)\n handleShippingAddressChange(data)\n setShippingAddress(data)\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n isAddingNew,\n shippingAddressWithModule,\n autofillShippingPersonalData,\n userQuery?.data?.firstName,\n userQuery?.data?.lastName,\n userQuery?.data?.email,\n userQuery?.data?.phoneNumber,\n ]\n )\n\n return useMemo(() => {\n return {\n isSubmitting: isShippingSubmitting,\n errors: isShippingSubmitting ? addressErrors : null,\n isValid: !addressErrors,\n updateIsSubmitting: setIsShippingSubmitting,\n onInputChange,\n persistShippingAddress,\n isSavedAddressListEnabled: enableSavedAddressList,\n saveShippingAddress: handleShippingAddressSave,\n savedAddressList,\n data: shippingAddressWithModule,\n isAddingNew,\n updateIsAddingNew,\n canSaveAddress: enableSaveAddress,\n hasAvailableSavedAddress,\n unsetShippingAddress,\n setGeographicalData,\n }\n }, [\n isShippingSubmitting,\n addressErrors,\n onInputChange,\n persistShippingAddress,\n enableSavedAddressList,\n handleShippingAddressSave,\n shippingAddressWithModule,\n savedAddressList,\n isAddingNew,\n updateIsAddingNew,\n enableSaveAddress,\n hasAvailableSavedAddress,\n unsetShippingAddress,\n setGeographicalData,\n ])\n}\n\ntype UseGeographicalData = {\n latitude: number\n longitude: number\n placeId: string\n geocoding: string\n}\n\ntype UseShippingProps = {\n withPersistBeforePageLeave: boolean\n orderQuery: QueryResult<OrderDTO, unknown>\n validations: ShippingValidationsType\n enableSavedAddressList: boolean\n enableSaveAddress: boolean\n autofillShippingPersonalData: boolean\n errorLabels: CheckoutFormErrorLabelsType\n userQuery: QueryResult<CustomerDTO, unknown>\n enabled: boolean\n countryCode: string\n}\n\ntype Address = AddressDTO & {\n isSelectable: boolean\n isSelected: boolean\n select: () => void\n}\n\nexport type UseShippingResultType = {\n isSubmitting: boolean\n errors?: CheckoutFormErrorsResultType\n isValid: boolean\n isSavedAddressListEnabled: boolean\n savedAddressList?: Address[]\n hasAvailableSavedAddress: boolean\n updateIsSubmitting: (value: boolean) => void\n onInputChange?: (name: string, value: any) => void\n persistShippingAddress: () => void\n data?: AddressDTO\n saveShippingAddress: () => void\n canSaveAddress: boolean\n\n isAddingNew: boolean\n updateIsAddingNew: (value: boolean) => void\n unsetShippingAddress: () => void\n setGeographicalData: (\n objParams: UseGeographicalData\n ) => Promise<OrderDTO | undefined>\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../../../../src/contexts/CheckoutForm/hooks/useShipping/index.ts"],"names":["useCallback","useMemo","useState","addressesApi","useCheckoutShippingModule","useCheckoutShippingAddress","validateShipping","updateObjProp","usePersistOnBeforeUnload","useSavedShippingList","useShippingInitialData","IS_NEW","SELECTED_ADDRESS_ID","useShipping","withPersistBeforePageLeave","orderQuery","validations","enableSavedAddressList","errorLabels","enableSaveAddress","autofillShippingPersonalData","userQuery","enabled","countryCode","requiredFields","enableNoShippingMethodMode","isShippingSubmitting","setIsShippingSubmitting","saveAddress","useAdd","handleShippingAddressChange","currentShippingAddress","savedShippingAddress","shippingAddress","setShippingAddress","mod","savedAddressList","hasAvailableSavedAddress","selectedShippingAddress","shippingAddressWithModule","moduleAddress","moduleData","address","city","name","quarter","streetName","street","postalCode","postCode","moduleKey","addressErrors","handleShippingAddressSave","_id","undefined","custom","filter","field","onSuccess","data","createdAt","Date","now","updatedAt","value","onInputChange","split","setGeographicalData","latitude","longitude","placeId","geocoding","geographicalCoordinates","unsetShippingAddress","persistShippingAddress","Promise","resolve","reject","order","onError","callback","isAddingNew","Boolean","some","updateIsAddingNew","autofillData","firstName","lastName","email","phoneNumber","isSubmitting","errors","isValid","updateIsSubmitting","isSavedAddressListEnabled","saveShippingAddress","canSaveAddress"],"mappings":"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","sourcesContent":["import { useCallback, useMemo, useState } from 'react'\nimport { QueryResult } from 'react-query'\nimport { AddressDTO, CustomerDTO, OrderDTO } from '@sentecacommerce/sdk'\n\nimport {\n CheckoutFormErrorLabelsType,\n CheckoutFormErrorsResultType,\n} from '../../'\nimport { addressesApi } from '../../../../api/addressesApi'\nimport { useCheckoutShippingModule } from '../../../../hooks/useCheckoutShippingModule'\nimport { useCheckoutShippingAddress } from '../../../../hooks/useCheckoutShippingAddress'\n\nimport {\n validateShipping,\n updateObjProp,\n ShippingValidationsType,\n} from '../../utils'\nimport { usePersistOnBeforeUnload } from '../usePersistOnBeforeUnload'\nimport { useSavedShippingList } from '../useSavedShippingList'\nimport { useShippingInitialData } from '../useShippingInitialData'\n\nconst IS_NEW = 'isNew'\nconst SELECTED_ADDRESS_ID = 'selectedAddressId'\n\nexport const useShipping = ({\n withPersistBeforePageLeave,\n orderQuery,\n validations,\n enableSavedAddressList,\n errorLabels,\n enableSaveAddress,\n autofillShippingPersonalData,\n userQuery,\n enabled,\n countryCode,\n requiredFields,\n enableNoShippingMethodMode,\n}: UseShippingProps): UseShippingResultType => {\n const [isShippingSubmitting, setIsShippingSubmitting] = useState(false)\n\n const [saveAddress] = addressesApi.useAdd({})\n\n const {\n handleShippingAddressChange,\n currentShippingAddress: savedShippingAddress,\n } = useCheckoutShippingAddress(orderQuery)\n\n const [shippingAddress, setShippingAddress] = useState<\n AddressDTO | undefined\n >()\n\n const mod = useCheckoutShippingModule(orderQuery, !enableNoShippingMethodMode)\n\n const { savedAddressList, hasAvailableSavedAddress } = useSavedShippingList({\n enabled: enabled && enableSavedAddressList,\n selectedShippingAddress: shippingAddress,\n setShippingAddress,\n handleShippingAddressChange,\n })\n const shippingAddressWithModule: AddressDTO | undefined = useMemo(() => {\n if (!shippingAddress) return\n const moduleAddress = mod?.moduleData?.address\n\n return {\n ...shippingAddress,\n city: moduleAddress?.city?.name || shippingAddress.city,\n quarter: moduleAddress?.quarter?.name || shippingAddress.quarter,\n streetName: moduleAddress?.street?.name || shippingAddress.streetName,\n postalCode:\n (moduleAddress?.city?.postCode ?? '') || shippingAddress.postalCode,\n moduleData: [\n {\n moduleKey: mod?.moduleKey as string,\n moduleData: {\n ...mod?.moduleData,\n },\n },\n ],\n }\n }, [shippingAddress, mod])\n\n const addressErrors = useMemo(\n () =>\n validateShipping(\n shippingAddressWithModule,\n mod,\n errorLabels,\n validations,\n requiredFields,\n enableNoShippingMethodMode\n ),\n [shippingAddressWithModule, mod, errorLabels, validations]\n )\n\n /**\n * Save the current address\n */\n const handleShippingAddressSave = useCallback(() => {\n if (!enableSaveAddress) return\n\n setIsShippingSubmitting(true)\n if (addressErrors) return\n\n saveAddress(\n {\n ...shippingAddressWithModule,\n _id: undefined,\n countryCode,\n custom: shippingAddressWithModule?.custom?.filter(\n ({ field }) => field !== IS_NEW && field !== SELECTED_ADDRESS_ID\n ),\n },\n {\n onSuccess: (address) => {\n const data = {\n ...address,\n createdAt: Date.now(),\n updatedAt: Date.now(),\n custom: [\n ...(address?.custom || []),\n {\n field: SELECTED_ADDRESS_ID,\n value: address._id,\n },\n ],\n }\n\n setShippingAddress(data)\n handleShippingAddressChange(data)\n },\n }\n )\n }, [addressErrors, enableSaveAddress, shippingAddressWithModule])\n\n /**\n * Name supports nested fields\n *\n * @param name example name: 'example.firstName'\n * @param value\n */\n const onInputChange = useCallback(\n async (name: string, value: any) => {\n if (!shippingAddress) return\n\n const data = { ...shippingAddress }\n\n updateObjProp(data, value, name.split('.'))\n\n setShippingAddress(data)\n },\n [shippingAddress]\n )\n\n const setGeographicalData = useCallback(\n async ({\n latitude,\n longitude,\n placeId,\n geocoding,\n }: UseGeographicalData) => {\n if (!shippingAddressWithModule) return\n\n const data = {\n ...shippingAddressWithModule,\n geographicalCoordinates: {\n latitude,\n longitude,\n },\n custom: [\n ...(shippingAddress?.custom || []),\n { field: 'placeId', value: placeId },\n { field: 'geocoding', value: geocoding },\n ],\n }\n\n setShippingAddress(data)\n return await handleShippingAddressChange(data)\n },\n [shippingAddress, handleShippingAddressChange]\n )\n\n const unsetShippingAddress = useCallback(async () => {\n setShippingAddress(undefined)\n await handleShippingAddressChange()\n }, [])\n\n const persistShippingAddress = useCallback(() => {\n if (!shippingAddressWithModule) return\n\n return new Promise((resolve, reject) => {\n handleShippingAddressChange(shippingAddressWithModule, {\n onSuccess: (order: OrderDTO) => resolve(order),\n onError: () => reject(),\n })\n })\n }, [shippingAddressWithModule])\n\n /**\n * Set initial data\n */\n useShippingInitialData({\n savedShippingAddress,\n shippingAddress,\n setShippingAddress,\n autofillShippingPersonalData,\n userQuery,\n })\n\n // persist data before page exit\n usePersistOnBeforeUnload({\n enabled: withPersistBeforePageLeave,\n callback: persistShippingAddress,\n })\n\n const isAddingNew = Boolean(\n shippingAddressWithModule?.custom?.some(\n ({ field, value }) => field === IS_NEW && value === 1\n )\n )\n\n const updateIsAddingNew = useCallback(\n (value: boolean) => {\n if (isAddingNew === value) return\n\n let autofillData = {}\n\n if (value && autofillShippingPersonalData) {\n autofillData = {\n firstName: userQuery?.data?.firstName,\n lastName: userQuery?.data?.lastName,\n email: userQuery?.data?.email,\n phoneNumber: userQuery?.data?.phoneNumber,\n }\n }\n\n const data: AddressDTO = {\n _id: shippingAddressWithModule?._id as string,\n createdAt: Date.now(),\n updatedAt: Date.now(),\n ...autofillData,\n custom: [\n {\n field: IS_NEW,\n value: value ? 1 : 0,\n },\n ],\n }\n\n setIsShippingSubmitting(false)\n handleShippingAddressChange(data)\n setShippingAddress(data)\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n isAddingNew,\n shippingAddressWithModule,\n autofillShippingPersonalData,\n userQuery?.data?.firstName,\n userQuery?.data?.lastName,\n userQuery?.data?.email,\n userQuery?.data?.phoneNumber,\n ]\n )\n\n return useMemo(() => {\n return {\n isSubmitting: isShippingSubmitting,\n errors: isShippingSubmitting ? addressErrors : null,\n isValid: !addressErrors,\n updateIsSubmitting: setIsShippingSubmitting,\n onInputChange,\n persistShippingAddress,\n isSavedAddressListEnabled: enableSavedAddressList,\n saveShippingAddress: handleShippingAddressSave,\n savedAddressList,\n data: shippingAddressWithModule,\n isAddingNew,\n updateIsAddingNew,\n canSaveAddress: enableSaveAddress,\n hasAvailableSavedAddress,\n unsetShippingAddress,\n setGeographicalData,\n }\n }, [\n isShippingSubmitting,\n addressErrors,\n onInputChange,\n persistShippingAddress,\n enableSavedAddressList,\n handleShippingAddressSave,\n shippingAddressWithModule,\n savedAddressList,\n isAddingNew,\n updateIsAddingNew,\n enableSaveAddress,\n hasAvailableSavedAddress,\n unsetShippingAddress,\n setGeographicalData,\n ])\n}\n\ntype UseGeographicalData = {\n latitude: number\n longitude: number\n placeId: string\n geocoding: string\n}\n\ntype UseShippingProps = {\n withPersistBeforePageLeave: boolean\n orderQuery: QueryResult<OrderDTO, unknown>\n validations: ShippingValidationsType\n enableSavedAddressList: boolean\n enableSaveAddress: boolean\n autofillShippingPersonalData: boolean\n errorLabels: CheckoutFormErrorLabelsType\n userQuery: QueryResult<CustomerDTO, unknown>\n enabled: boolean\n countryCode: string\n requiredFields: string[]\n enableNoShippingMethodMode: boolean\n}\n\ntype Address = AddressDTO & {\n isSelectable: boolean\n isSelected: boolean\n select: () => void\n}\n\nexport type UseShippingResultType = {\n isSubmitting: boolean\n errors?: CheckoutFormErrorsResultType\n isValid: boolean\n isSavedAddressListEnabled: boolean\n savedAddressList?: Address[]\n hasAvailableSavedAddress: boolean\n updateIsSubmitting: (value: boolean) => void\n onInputChange?: (name: string, value: any) => void\n persistShippingAddress: () => void\n data?: AddressDTO\n saveShippingAddress: () => void\n canSaveAddress: boolean\n\n isAddingNew: boolean\n updateIsAddingNew: (value: boolean) => void\n unsetShippingAddress: () => void\n setGeographicalData: (\n objParams: UseGeographicalData\n ) => Promise<OrderDTO | undefined>\n}\n"],"file":"index.js"}
@@ -37,7 +37,10 @@ export function CheckoutFormContextProvider(_ref) {
37
37
  onSuccess,
38
38
  onError: _onError,
39
39
  isBoricaInDevMode,
40
- withPixelMeta = false
40
+ withPixelMeta = false,
41
+ requiredFieldsOnShippingStep = ['firstName', 'lastName', 'email', 'phoneNumber'],
42
+ requiredFieldsOnBillingAddressStep = ['city', 'postalCode', 'streetName'],
43
+ enableNoShippingMethodMode = false
41
44
  } = _ref;
42
45
  var orderQuery = myCartApi.useGet();
43
46
  var [boricaData, setBoricaData] = useState(null);
@@ -91,20 +94,19 @@ export function CheckoutFormContextProvider(_ref) {
91
94
  autofillShippingPersonalData: Boolean(isAuthenticated && autofillShippingPersonalData),
92
95
  userQuery,
93
96
  enabled: isShippingEnabled,
94
- countryCode
97
+ countryCode,
98
+ requiredFields: requiredFieldsOnShippingStep,
99
+ enableNoShippingMethodMode
95
100
  });
96
- var {
97
- moduleKey,
98
- moduleData
99
- } = useCheckoutShippingModule(orderQuery);
101
+ var mod = useCheckoutShippingModule(orderQuery, !enableNoShippingMethodMode);
100
102
 
101
103
  var getIsPaymentMethodsEnabled = () => {
102
104
  if (paymentEnabledOnStep) {
103
105
  return paymentEnabledOnStep === step;
104
106
  }
105
107
 
106
- if (getPaymentMethodsWhenShippingMethodIsSelected) {
107
- return Boolean(moduleKey && moduleData.methodKey);
108
+ if (!enableNoShippingMethodMode && getPaymentMethodsWhenShippingMethodIsSelected) {
109
+ return Boolean((mod == null ? void 0 : mod.moduleKey) && (mod == null ? void 0 : mod.moduleData.methodKey));
108
110
  }
109
111
 
110
112
  return false;
@@ -123,7 +125,9 @@ export function CheckoutFormContextProvider(_ref) {
123
125
  withSavedBillingAddressList: Boolean(isAuthenticated && enableSavedBillingAddressList),
124
126
  withPersistBeforePageLeave: !isRedirecting && withPersistBeforePageLeave,
125
127
  countryCode,
126
- enabled: billingEnabledOnStep === step
128
+ enabled: billingEnabledOnStep === step,
129
+ requiredFields: requiredFieldsOnBillingAddressStep,
130
+ requiredFieldsOnShipping: requiredFieldsOnShippingStep
127
131
  });
128
132
 
129
133
  var onBeforeBoricaRedirect = data => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/contexts/CheckoutForm/index.tsx"],"names":["React","createContext","useCallback","useContext","useMemo","useState","myCartApi","useBilling","usePayment","useShipping","useIsAuthenticated","useCheckoutSubmit","defaultShippingValidations","genericBillingAddressValidation","usersApi","useCheckoutShippingModule","BoricaRedirect","CheckoutFormCustomStateProvider","useScrollTo","getElementOffset","CheckoutFormContext","CheckoutFormContextProvider","children","defaultStep","errorLabels","enableSavedAddressList","withPersistBeforePageLeave","shippingValidations","validateBillingAddress","enableSaveBillingAddress","enableSavedBillingAddressList","countryCode","enableSaveAddress","autofillShippingPersonalData","onSubmit","paymentEnabledOnStep","getPaymentMethodsWhenShippingMethodIsSelected","shippingEnabledOnStep","billingEnabledOnStep","customState","initialCustomState","redirectTimeout","onBeforeRedirect","onSuccess","onError","isBoricaInDevMode","withPixelMeta","orderQuery","useGet","boricaData","setBoricaData","step","setStep","isRedirecting","setIsRedirecting","fieldsWithError","serverErrors","setServerErrors","collectFieldsWithError","error","push","handleStepChange","newStep","window","scrollTo","updateServerErrors","errors","formattedErrors","reduce","data","code","response","internalError","isAuthenticated","isShippingEnabled","userQuery","enabled","shippingState","Boolean","validations","moduleKey","moduleData","getIsPaymentMethodsEnabled","methodKey","paymentState","billingState","withSavedBillingAddressList","onBeforeBoricaRedirect","setTimeout","handleCheckoutSubmit","withMeta","scrollToFirstError","interval","setInterval","errorElement","top","clearInterval","handleSubmit","e","preventDefault","Promise","all","persistShippingAddress","persistBillingAddress","catch","isShippingValid","isValid","setIsShippingSubmitting","updateIsSubmitting","isBillingValid","setIsBillingSubmitting","isPaymentValid","setIsPaymentSubmitting","updateStep","saveOrder","shippingAddress","state","errorRef","errorFields","CheckoutFormStepsEnum","useCheckoutFormStep","context","Error","currentStep","useCheckoutFormOrder","useCheckoutFormErrorLabels","useCheckoutFormServerErrors","useCheckoutFormBillingState","useCheckoutFormShippingState","useCheckoutErrorFields","useCheckoutFormPaymentState"],"mappings":"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","sourcesContent":["import React, {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useState,\n} from 'react'\nimport {\n BoricaGeneratePaymentDataResponse,\n OrderDTO,\n AddressDTO,\n} from '@sentecacommerce/sdk'\nimport { MutateFunction, QueryResult } from 'react-query'\nimport { myCartApi } from '../../api/myCartApi'\nimport {\n useBilling,\n UseBillingResultType,\n usePayment,\n UsePaymentResultType,\n useShipping,\n UseShippingResultType,\n} from './hooks'\nimport { useIsAuthenticated } from '../../user/hooks'\nimport { useCheckoutSubmit } from '../../hooks/useCheckoutSubmit'\n\nimport {\n ShippingValidationsType,\n defaultShippingValidations,\n genericBillingAddressValidation,\n BillingAddressValidationType,\n} from './utils'\nimport { usersApi } from '../../api/usersApi'\nimport { useCheckoutShippingModule } from '../../hooks/useCheckoutShippingModule'\nimport { BoricaRedirect, CheckoutFormCustomStateProvider } from './Components'\nimport { useScrollTo } from '../../hooks/ui-hooks'\nimport { getElementOffset } from '../../utils/getElementOffset'\n\nexport const CheckoutFormContext = createContext<CheckoutFormContextType>(\n {} as any\n)\n\nexport type CheckoutCustomState = {}\n\nexport function CheckoutFormContextProvider({\n children,\n defaultStep,\n errorLabels,\n enableSavedAddressList,\n withPersistBeforePageLeave,\n shippingValidations = defaultShippingValidations,\n validateBillingAddress = genericBillingAddressValidation,\n enableSaveBillingAddress,\n enableSavedBillingAddressList,\n countryCode,\n enableSaveAddress,\n autofillShippingPersonalData,\n onSubmit,\n\n paymentEnabledOnStep,\n getPaymentMethodsWhenShippingMethodIsSelected,\n shippingEnabledOnStep,\n billingEnabledOnStep,\n\n customState: initialCustomState = {},\n redirectTimeout = 420,\n onBeforeRedirect,\n onSuccess,\n onError,\n isBoricaInDevMode,\n withPixelMeta = false,\n}: Props) {\n const orderQuery = myCartApi.useGet()\n const [\n boricaData,\n setBoricaData,\n ] = useState<BoricaGeneratePaymentDataResponse | null>(null)\n const [step, setStep] = useState<CheckoutFormStepsEnum>(defaultStep)\n const [isRedirecting, setIsRedirecting] = useState(false)\n\n const fieldsWithError: HTMLElement[] = []\n\n const [serverErrors, setServerErrors] = useState<ServerErrors>(null)\n\n const collectFieldsWithError = (error: HTMLElement) => {\n fieldsWithError.push(error)\n }\n\n const handleStepChange = useCallback((newStep: CheckoutFormStepsEnum) => {\n window.scrollTo(0, 0)\n\n setStep(newStep)\n }, [])\n\n const updateServerErrors = useCallback((errors: any[]) => {\n // Example Error\n // [{\n // code: \"OutOfStock\"\n // message: \"Some of the ordered line items are out of stock at the time of placing the order.\"\n // responses: {\n // availableQuantity: 1\n // sku: \"200000095849\"\n // status: \"unavailable\"\n // }\n // }]\n const formattedErrors = errors?.reduce?.(\n (data: ServerErrors, error: any) => {\n return {\n ...data,\n [error?.code || 'internal']: error?.response,\n }\n },\n {}\n )\n setServerErrors(formattedErrors || { internalError: errors })\n }, [])\n\n const { isAuthenticated } = useIsAuthenticated()\n\n const isShippingEnabled = shippingEnabledOnStep === step\n\n const userQuery = usersApi.useGet(\n {},\n { enabled: isShippingEnabled && autofillShippingPersonalData }\n )\n\n const shippingState = useShipping({\n errorLabels,\n orderQuery,\n enableSavedAddressList: Boolean(isAuthenticated && enableSavedAddressList),\n enableSaveAddress: Boolean(isAuthenticated && enableSaveAddress),\n withPersistBeforePageLeave: !isRedirecting && withPersistBeforePageLeave,\n validations: shippingValidations,\n autofillShippingPersonalData: Boolean(\n isAuthenticated && autofillShippingPersonalData\n ),\n userQuery,\n enabled: isShippingEnabled,\n countryCode,\n })\n const { moduleKey, moduleData } = useCheckoutShippingModule(orderQuery)\n\n const getIsPaymentMethodsEnabled = () => {\n if (paymentEnabledOnStep) {\n return paymentEnabledOnStep === step\n }\n\n if (getPaymentMethodsWhenShippingMethodIsSelected) {\n return Boolean(moduleKey && moduleData.methodKey)\n }\n\n return false\n }\n\n const paymentState = usePayment({\n errorLabels,\n orderQuery,\n enabled: getIsPaymentMethodsEnabled(),\n })\n\n const billingState = useBilling({\n errorLabels,\n orderQuery,\n validateBillingAddress,\n enableSaveBillingAddress: Boolean(\n isAuthenticated && enableSaveBillingAddress\n ),\n withSavedBillingAddressList: Boolean(\n isAuthenticated && enableSavedBillingAddressList\n ),\n withPersistBeforePageLeave: !isRedirecting && withPersistBeforePageLeave,\n countryCode,\n enabled: billingEnabledOnStep === step,\n })\n\n const onBeforeBoricaRedirect = (data: BoricaGeneratePaymentDataResponse) => {\n onBeforeRedirect?.()\n setIsRedirecting(true)\n setTimeout(() => {\n setBoricaData(data)\n }, redirectTimeout)\n }\n\n const { handleCheckoutSubmit } = useCheckoutSubmit({\n onBeforeBoricaRedirect,\n onSuccess,\n onError: (errors: any) => {\n updateServerErrors(errors)\n onError(errors)\n },\n withMeta: withPixelMeta,\n })\n\n const { scrollTo } = useScrollTo(fieldsWithError[0], 0)\n\n const scrollToFirstError = () => {\n const interval = setInterval(() => {\n const errorElement = fieldsWithError[0]\n if (!errorElement) return\n\n scrollTo(getElementOffset(errorElement).top - 100)\n clearInterval(interval)\n }, 50)\n\n setTimeout(() => {\n clearInterval(interval)\n }, 1000)\n }\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n await Promise.all([\n shippingState.persistShippingAddress(),\n billingState.persistBillingAddress(),\n ]).catch(() => {})\n\n onSubmit({\n isShippingValid: shippingState.isValid,\n setIsShippingSubmitting: shippingState.updateIsSubmitting,\n isBillingValid: billingState.isValid,\n setIsBillingSubmitting: billingState.updateIsSubmitting,\n isPaymentValid: paymentState.isValid,\n setIsPaymentSubmitting: paymentState.updateIsSubmitting,\n step,\n updateStep: setStep,\n saveOrder: handleCheckoutSubmit,\n updateServerErrors,\n scrollToFirstError,\n shippingState,\n shippingAddress: shippingState.data,\n })\n }\n\n const state = {\n setStep: handleStepChange,\n step,\n orderQuery,\n serverErrors,\n updateServerErrors,\n errorLabels,\n shippingState,\n paymentState,\n billingState,\n errorRef: collectFieldsWithError,\n errorFields: fieldsWithError,\n }\n\n return (\n <CheckoutFormContext.Provider value={state}>\n <CheckoutFormCustomStateProvider initialCustomState={initialCustomState}>\n <>\n <form noValidate onSubmit={handleSubmit}>\n {children}\n </form>\n {!!boricaData && (\n <BoricaRedirect\n isInDevMode={isBoricaInDevMode}\n formData={boricaData}\n />\n )}\n </>\n </CheckoutFormCustomStateProvider>\n </CheckoutFormContext.Provider>\n )\n}\n\nexport type CheckoutFormOnSubmitData = {\n isShippingValid: boolean\n setIsShippingSubmitting: (value: boolean) => void\n isBillingValid: boolean\n setIsBillingSubmitting: (value: boolean) => void\n isPaymentValid: boolean\n setIsPaymentSubmitting: (value: boolean) => void\n step: CheckoutFormStepsEnum\n updateStep: (step: CheckoutFormStepsEnum) => void\n saveOrder: MutateFunction<OrderDTO, unknown, any, unknown>\n\n updateServerErrors: (errors: any) => void\n scrollToFirstError: () => void\n shippingState: UseShippingResultType\n shippingAddress?: AddressDTO\n}\n\ntype Props = {\n children: any\n defaultStep: CheckoutFormStepsEnum\n errorLabels: CheckoutFormErrorLabelsType\n withPersistBeforePageLeave: boolean\n countryCode: string\n onSubmit: (data: CheckoutFormOnSubmitData) => void\n onError: (error: any) => void\n onSuccess: (order: OrderDTO) => void\n\n redirectTimeout?: number\n onBeforeRedirect?: () => void\n\n customState?: CheckoutCustomState\n\n enableSavedAddressList: boolean\n shippingValidations?: ShippingValidationsType\n enableSaveAddress: boolean\n autofillShippingPersonalData: boolean\n autoSelectDefaultShippingAddress: boolean\n\n enableSaveBillingAddress: boolean\n validateBillingAddress?: BillingAddressValidationType\n enableSavedBillingAddressList: boolean\n autoSelectDefaultBillingAddress: boolean\n\n paymentEnabledOnStep?: CheckoutFormStepsEnum\n getPaymentMethodsWhenShippingMethodIsSelected?: boolean\n\n shippingEnabledOnStep: CheckoutFormStepsEnum\n\n billingEnabledOnStep: CheckoutFormStepsEnum\n\n isBoricaInDevMode?: boolean\n\n withPixelMeta?: boolean\n}\n\ntype ServerErrors = { [key: string]: any } | null\n\nexport enum CheckoutFormStepsEnum {\n Basket = 'Basket',\n Shipping = 'Shipping',\n BillingAddress = 'BillingAddress',\n Payment = 'Payment',\n Preview = 'Preview',\n All = 'All',\n}\n\nexport type CheckoutFormErrorsResultType =\n | {\n [key: string]: string\n }\n | null\n | undefined\n\nexport type ShippingFormErrorLabels = {\n fieldIsRequired: string\n\n fillStreetNumberBuildingEntranceOrApartment: string\n streetIsRequired: string\n invalidPhoneNumber?: string\n quarterIsRequired: string\n cantFindStreetOrQuarterMessage: string\n cityIsRequired: string\n emailIsRequired: string\n officeIsRequired: string\n selectCourier: string\n\n noStoreSelected: string\n}\n\nexport type CheckoutFormErrorLabelsType = ShippingFormErrorLabels & {\n selectPaymentMethod: string\n}\n\nexport type CheckoutFormContextType = {\n setStep: (step: CheckoutFormStepsEnum) => void\n step: CheckoutFormStepsEnum\n serverErrors: ServerErrors\n updateServerErrors: (errors: any) => void\n errorRef: (error: HTMLElement) => void\n errorFields: HTMLElement[]\n errorLabels: CheckoutFormErrorLabelsType\n orderQuery: QueryResult<OrderDTO, unknown>\n shippingState: UseShippingResultType\n paymentState: UsePaymentResultType\n billingState: UseBillingResultType\n}\n\nexport const useCheckoutFormStep = () => {\n const context = useContext(CheckoutFormContext)\n\n if (!context) {\n throw new Error(\n 'useCheckoutFormStep must be used within a CheckoutFormContextProvider'\n )\n }\n\n return useMemo(() => {\n return {\n currentStep: context.step,\n updateStep: context.setStep,\n }\n }, [context])\n}\n\nexport const useCheckoutFormOrder = () => {\n const context = useContext(CheckoutFormContext)\n\n if (!context) {\n throw new Error(\n 'useCheckoutFormOrder must be used within a CheckoutFormContextProvider'\n )\n }\n\n return context.orderQuery\n}\n\nexport const useCheckoutFormErrorLabels = () => {\n const context = useContext(CheckoutFormContext)\n\n if (!context) {\n throw new Error(\n 'useCheckoutFormErrorLabels must be used within a CheckoutFormContextProvider'\n )\n }\n\n return context.errorLabels\n}\n\nexport const useCheckoutFormServerErrors = () => {\n const context = useContext(CheckoutFormContext)\n\n if (!context) {\n throw new Error(\n 'useCheckoutFormServerErrors must be used within a CheckoutFormContextProvider'\n )\n }\n\n return useMemo(() => {\n return {\n serverErrors: context.serverErrors,\n updateServerErrors: context.updateServerErrors,\n }\n }, [context])\n}\n\nexport const useCheckoutFormBillingState = () => {\n const context = useContext(CheckoutFormContext)\n\n if (!context) {\n throw new Error(\n 'useCheckoutFormBillingState must be used within a CheckoutFormContextProvider'\n )\n }\n\n return context.billingState\n}\n\nexport const useCheckoutFormShippingState = () => {\n const context = useContext(CheckoutFormContext)\n\n if (!context) {\n throw new Error(\n 'useCheckoutFormShippingState must be used within a CheckoutFormContextProvider'\n )\n }\n\n return context.shippingState\n}\n\nexport const useCheckoutErrorFields = () => {\n const context = useContext(CheckoutFormContext)\n\n if (!context) {\n throw new Error(\n 'useCheckoutErrorFields must be used within a CheckoutFormContextProvider'\n )\n }\n\n return {\n errorFields: context.errorFields,\n errorRef: context.errorRef,\n }\n}\n\nexport const useCheckoutFormPaymentState = () => {\n const context = useContext(CheckoutFormContext)\n\n if (!context) {\n throw new Error(\n 'useCheckoutFormPaymentState must be used within a CheckoutFormContextProvider'\n )\n }\n\n return context.paymentState\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../../src/contexts/CheckoutForm/index.tsx"],"names":["React","createContext","useCallback","useContext","useMemo","useState","myCartApi","useBilling","usePayment","useShipping","useIsAuthenticated","useCheckoutSubmit","defaultShippingValidations","genericBillingAddressValidation","usersApi","useCheckoutShippingModule","BoricaRedirect","CheckoutFormCustomStateProvider","useScrollTo","getElementOffset","CheckoutFormContext","CheckoutFormContextProvider","children","defaultStep","errorLabels","enableSavedAddressList","withPersistBeforePageLeave","shippingValidations","validateBillingAddress","enableSaveBillingAddress","enableSavedBillingAddressList","countryCode","enableSaveAddress","autofillShippingPersonalData","onSubmit","paymentEnabledOnStep","getPaymentMethodsWhenShippingMethodIsSelected","shippingEnabledOnStep","billingEnabledOnStep","customState","initialCustomState","redirectTimeout","onBeforeRedirect","onSuccess","onError","isBoricaInDevMode","withPixelMeta","requiredFieldsOnShippingStep","requiredFieldsOnBillingAddressStep","enableNoShippingMethodMode","orderQuery","useGet","boricaData","setBoricaData","step","setStep","isRedirecting","setIsRedirecting","fieldsWithError","serverErrors","setServerErrors","collectFieldsWithError","error","push","handleStepChange","newStep","window","scrollTo","updateServerErrors","errors","formattedErrors","reduce","data","code","response","internalError","isAuthenticated","isShippingEnabled","userQuery","enabled","shippingState","Boolean","validations","requiredFields","mod","getIsPaymentMethodsEnabled","moduleKey","moduleData","methodKey","paymentState","billingState","withSavedBillingAddressList","requiredFieldsOnShipping","onBeforeBoricaRedirect","setTimeout","handleCheckoutSubmit","withMeta","scrollToFirstError","interval","setInterval","errorElement","top","clearInterval","handleSubmit","e","preventDefault","Promise","all","persistShippingAddress","persistBillingAddress","catch","isShippingValid","isValid","setIsShippingSubmitting","updateIsSubmitting","isBillingValid","setIsBillingSubmitting","isPaymentValid","setIsPaymentSubmitting","updateStep","saveOrder","shippingAddress","state","errorRef","errorFields","CheckoutFormStepsEnum","useCheckoutFormStep","context","Error","currentStep","useCheckoutFormOrder","useCheckoutFormErrorLabels","useCheckoutFormServerErrors","useCheckoutFormBillingState","useCheckoutFormShippingState","useCheckoutErrorFields","useCheckoutFormPaymentState"],"mappings":"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","sourcesContent":["import React, {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useState,\n} from 'react'\nimport {\n BoricaGeneratePaymentDataResponse,\n OrderDTO,\n AddressDTO,\n} from '@sentecacommerce/sdk'\nimport { MutateFunction, QueryResult } from 'react-query'\nimport { myCartApi } from '../../api/myCartApi'\nimport {\n useBilling,\n UseBillingResultType,\n usePayment,\n UsePaymentResultType,\n useShipping,\n UseShippingResultType,\n} from './hooks'\nimport { useIsAuthenticated } from '../../user/hooks'\nimport { useCheckoutSubmit } from '../../hooks/useCheckoutSubmit'\n\nimport {\n ShippingValidationsType,\n defaultShippingValidations,\n genericBillingAddressValidation,\n BillingAddressValidationType,\n} from './utils'\nimport { usersApi } from '../../api/usersApi'\nimport { useCheckoutShippingModule } from '../../hooks/useCheckoutShippingModule'\nimport { BoricaRedirect, CheckoutFormCustomStateProvider } from './Components'\nimport { useScrollTo } from '../../hooks/ui-hooks'\nimport { getElementOffset } from '../../utils/getElementOffset'\n\nexport const CheckoutFormContext = createContext<CheckoutFormContextType>(\n {} as any\n)\n\nexport type CheckoutCustomState = {}\n\nexport function CheckoutFormContextProvider({\n children,\n defaultStep,\n errorLabels,\n enableSavedAddressList,\n withPersistBeforePageLeave,\n shippingValidations = defaultShippingValidations,\n validateBillingAddress = genericBillingAddressValidation,\n enableSaveBillingAddress,\n enableSavedBillingAddressList,\n countryCode,\n enableSaveAddress,\n autofillShippingPersonalData,\n onSubmit,\n\n paymentEnabledOnStep,\n getPaymentMethodsWhenShippingMethodIsSelected,\n shippingEnabledOnStep,\n billingEnabledOnStep,\n\n customState: initialCustomState = {},\n redirectTimeout = 420,\n onBeforeRedirect,\n onSuccess,\n onError,\n isBoricaInDevMode,\n withPixelMeta = false,\n requiredFieldsOnShippingStep = [\n 'firstName',\n 'lastName',\n 'email',\n 'phoneNumber',\n ],\n requiredFieldsOnBillingAddressStep = ['city', 'postalCode', 'streetName'],\n enableNoShippingMethodMode = false,\n}: Props) {\n const orderQuery = myCartApi.useGet()\n const [\n boricaData,\n setBoricaData,\n ] = useState<BoricaGeneratePaymentDataResponse | null>(null)\n\n const [step, setStep] = useState<CheckoutFormStepsEnum>(defaultStep)\n const [isRedirecting, setIsRedirecting] = useState(false)\n\n const fieldsWithError: HTMLElement[] = []\n\n const [serverErrors, setServerErrors] = useState<ServerErrors>(null)\n\n const collectFieldsWithError = (error: HTMLElement) => {\n fieldsWithError.push(error)\n }\n\n const handleStepChange = useCallback((newStep: CheckoutFormStepsEnum) => {\n window.scrollTo(0, 0)\n\n setStep(newStep)\n }, [])\n\n const updateServerErrors = useCallback((errors: any[]) => {\n // Example Error\n // [{\n // code: \"OutOfStock\"\n // message: \"Some of the ordered line items are out of stock at the time of placing the order.\"\n // responses: {\n // availableQuantity: 1\n // sku: \"200000095849\"\n // status: \"unavailable\"\n // }\n // }]\n const formattedErrors = errors?.reduce?.(\n (data: ServerErrors, error: any) => {\n return {\n ...data,\n [error?.code || 'internal']: error?.response,\n }\n },\n {}\n )\n setServerErrors(formattedErrors || { internalError: errors })\n }, [])\n\n const { isAuthenticated } = useIsAuthenticated()\n\n const isShippingEnabled = shippingEnabledOnStep === step\n\n const userQuery = usersApi.useGet(\n {},\n { enabled: isShippingEnabled && autofillShippingPersonalData }\n )\n\n const shippingState = useShipping({\n errorLabels,\n orderQuery,\n enableSavedAddressList: Boolean(isAuthenticated && enableSavedAddressList),\n enableSaveAddress: Boolean(isAuthenticated && enableSaveAddress),\n withPersistBeforePageLeave: !isRedirecting && withPersistBeforePageLeave,\n validations: shippingValidations,\n autofillShippingPersonalData: Boolean(\n isAuthenticated && autofillShippingPersonalData\n ),\n userQuery,\n enabled: isShippingEnabled,\n countryCode,\n requiredFields: requiredFieldsOnShippingStep,\n enableNoShippingMethodMode,\n })\n const mod = useCheckoutShippingModule(orderQuery, !enableNoShippingMethodMode)\n\n const getIsPaymentMethodsEnabled = () => {\n if (paymentEnabledOnStep) {\n return paymentEnabledOnStep === step\n }\n\n if (\n !enableNoShippingMethodMode &&\n getPaymentMethodsWhenShippingMethodIsSelected\n ) {\n return Boolean(mod?.moduleKey && mod?.moduleData.methodKey)\n }\n\n return false\n }\n\n const paymentState = usePayment({\n errorLabels,\n orderQuery,\n enabled: getIsPaymentMethodsEnabled(),\n })\n\n const billingState = useBilling({\n errorLabels,\n orderQuery,\n validateBillingAddress,\n enableSaveBillingAddress: Boolean(\n isAuthenticated && enableSaveBillingAddress\n ),\n withSavedBillingAddressList: Boolean(\n isAuthenticated && enableSavedBillingAddressList\n ),\n withPersistBeforePageLeave: !isRedirecting && withPersistBeforePageLeave,\n countryCode,\n enabled: billingEnabledOnStep === step,\n requiredFields: requiredFieldsOnBillingAddressStep,\n requiredFieldsOnShipping: requiredFieldsOnShippingStep,\n })\n\n const onBeforeBoricaRedirect = (data: BoricaGeneratePaymentDataResponse) => {\n onBeforeRedirect?.()\n setIsRedirecting(true)\n setTimeout(() => {\n setBoricaData(data)\n }, redirectTimeout)\n }\n\n const { handleCheckoutSubmit } = useCheckoutSubmit({\n onBeforeBoricaRedirect,\n onSuccess,\n onError: (errors: any) => {\n updateServerErrors(errors)\n onError(errors)\n },\n withMeta: withPixelMeta,\n })\n\n const { scrollTo } = useScrollTo(fieldsWithError[0], 0)\n\n const scrollToFirstError = () => {\n const interval = setInterval(() => {\n const errorElement = fieldsWithError[0]\n if (!errorElement) return\n\n scrollTo(getElementOffset(errorElement).top - 100)\n clearInterval(interval)\n }, 50)\n\n setTimeout(() => {\n clearInterval(interval)\n }, 1000)\n }\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n\n await Promise.all([\n shippingState.persistShippingAddress(),\n billingState.persistBillingAddress(),\n ]).catch(() => {})\n\n onSubmit({\n isShippingValid: shippingState.isValid,\n setIsShippingSubmitting: shippingState.updateIsSubmitting,\n isBillingValid: billingState.isValid,\n setIsBillingSubmitting: billingState.updateIsSubmitting,\n isPaymentValid: paymentState.isValid,\n setIsPaymentSubmitting: paymentState.updateIsSubmitting,\n step,\n updateStep: setStep,\n saveOrder: handleCheckoutSubmit,\n updateServerErrors,\n scrollToFirstError,\n shippingState,\n shippingAddress: shippingState.data,\n })\n }\n\n const state = {\n setStep: handleStepChange,\n step,\n orderQuery,\n serverErrors,\n updateServerErrors,\n errorLabels,\n shippingState,\n paymentState,\n billingState,\n errorRef: collectFieldsWithError,\n errorFields: fieldsWithError,\n }\n\n return (\n <CheckoutFormContext.Provider value={state}>\n <CheckoutFormCustomStateProvider initialCustomState={initialCustomState}>\n <>\n <form noValidate onSubmit={handleSubmit}>\n {children}\n </form>\n {!!boricaData && (\n <BoricaRedirect\n isInDevMode={isBoricaInDevMode}\n formData={boricaData}\n />\n )}\n </>\n </CheckoutFormCustomStateProvider>\n </CheckoutFormContext.Provider>\n )\n}\n\nexport type CheckoutFormOnSubmitData = {\n isShippingValid: boolean\n setIsShippingSubmitting: (value: boolean) => void\n isBillingValid: boolean\n setIsBillingSubmitting: (value: boolean) => void\n isPaymentValid: boolean\n setIsPaymentSubmitting: (value: boolean) => void\n step: CheckoutFormStepsEnum\n updateStep: (step: CheckoutFormStepsEnum) => void\n saveOrder: MutateFunction<OrderDTO, unknown, any, unknown>\n\n updateServerErrors: (errors: any) => void\n scrollToFirstError: () => void\n shippingState: UseShippingResultType\n shippingAddress?: AddressDTO\n}\n\ntype Props = {\n children: any\n defaultStep: CheckoutFormStepsEnum\n errorLabels: CheckoutFormErrorLabelsType\n withPersistBeforePageLeave: boolean\n countryCode: string\n onSubmit: (data: CheckoutFormOnSubmitData) => void\n onError: (error: any) => void\n onSuccess: (order: OrderDTO) => void\n\n redirectTimeout?: number\n onBeforeRedirect?: () => void\n\n customState?: CheckoutCustomState\n\n enableSavedAddressList: boolean\n shippingValidations?: ShippingValidationsType\n enableSaveAddress: boolean\n autofillShippingPersonalData: boolean\n autoSelectDefaultShippingAddress: boolean\n\n enableSaveBillingAddress: boolean\n validateBillingAddress?: BillingAddressValidationType\n enableSavedBillingAddressList: boolean\n autoSelectDefaultBillingAddress: boolean\n\n paymentEnabledOnStep?: CheckoutFormStepsEnum\n getPaymentMethodsWhenShippingMethodIsSelected?: boolean\n\n shippingEnabledOnStep: CheckoutFormStepsEnum\n\n billingEnabledOnStep: CheckoutFormStepsEnum\n\n isBoricaInDevMode?: boolean\n\n withPixelMeta?: boolean\n requiredFieldsOnShippingStep?: string[]\n requiredFieldsOnBillingAddressStep?: string[]\n enableNoShippingMethodMode?: boolean\n}\n\ntype ServerErrors = { [key: string]: any } | null\n\nexport enum CheckoutFormStepsEnum {\n Basket = 'Basket',\n Shipping = 'Shipping',\n BillingAddress = 'BillingAddress',\n Payment = 'Payment',\n Preview = 'Preview',\n All = 'All',\n}\n\nexport type CheckoutFormErrorsResultType =\n | {\n [key: string]: string\n }\n | null\n | undefined\n\nexport type ShippingFormErrorLabels = {\n fieldIsRequired: string\n\n fillStreetNumberBuildingEntranceOrApartment: string\n streetIsRequired: string\n invalidPhoneNumber?: string\n quarterIsRequired: string\n cantFindStreetOrQuarterMessage: string\n cityIsRequired: string\n emailIsRequired: string\n officeIsRequired: string\n selectCourier: string\n\n noStoreSelected: string\n}\n\nexport type CheckoutFormErrorLabelsType = ShippingFormErrorLabels & {\n selectPaymentMethod: string\n}\n\nexport type CheckoutFormContextType = {\n setStep: (step: CheckoutFormStepsEnum) => void\n step: CheckoutFormStepsEnum\n serverErrors: ServerErrors\n updateServerErrors: (errors: any) => void\n errorRef: (error: HTMLElement) => void\n errorFields: HTMLElement[]\n errorLabels: CheckoutFormErrorLabelsType\n orderQuery: QueryResult<OrderDTO, unknown>\n shippingState: UseShippingResultType\n paymentState: UsePaymentResultType\n billingState: UseBillingResultType\n}\n\nexport const useCheckoutFormStep = () => {\n const context = useContext(CheckoutFormContext)\n\n if (!context) {\n throw new Error(\n 'useCheckoutFormStep must be used within a CheckoutFormContextProvider'\n )\n }\n\n return useMemo(() => {\n return {\n currentStep: context.step,\n updateStep: context.setStep,\n }\n }, [context])\n}\n\nexport const useCheckoutFormOrder = () => {\n const context = useContext(CheckoutFormContext)\n\n if (!context) {\n throw new Error(\n 'useCheckoutFormOrder must be used within a CheckoutFormContextProvider'\n )\n }\n\n return context.orderQuery\n}\n\nexport const useCheckoutFormErrorLabels = () => {\n const context = useContext(CheckoutFormContext)\n\n if (!context) {\n throw new Error(\n 'useCheckoutFormErrorLabels must be used within a CheckoutFormContextProvider'\n )\n }\n\n return context.errorLabels\n}\n\nexport const useCheckoutFormServerErrors = () => {\n const context = useContext(CheckoutFormContext)\n\n if (!context) {\n throw new Error(\n 'useCheckoutFormServerErrors must be used within a CheckoutFormContextProvider'\n )\n }\n\n return useMemo(() => {\n return {\n serverErrors: context.serverErrors,\n updateServerErrors: context.updateServerErrors,\n }\n }, [context])\n}\n\nexport const useCheckoutFormBillingState = () => {\n const context = useContext(CheckoutFormContext)\n\n if (!context) {\n throw new Error(\n 'useCheckoutFormBillingState must be used within a CheckoutFormContextProvider'\n )\n }\n\n return context.billingState\n}\n\nexport const useCheckoutFormShippingState = () => {\n const context = useContext(CheckoutFormContext)\n\n if (!context) {\n throw new Error(\n 'useCheckoutFormShippingState must be used within a CheckoutFormContextProvider'\n )\n }\n\n return context.shippingState\n}\n\nexport const useCheckoutErrorFields = () => {\n const context = useContext(CheckoutFormContext)\n\n if (!context) {\n throw new Error(\n 'useCheckoutErrorFields must be used within a CheckoutFormContextProvider'\n )\n }\n\n return {\n errorFields: context.errorFields,\n errorRef: context.errorRef,\n }\n}\n\nexport const useCheckoutFormPaymentState = () => {\n const context = useContext(CheckoutFormContext)\n\n if (!context) {\n throw new Error(\n 'useCheckoutFormPaymentState must be used within a CheckoutFormContextProvider'\n )\n }\n\n return context.paymentState\n}\n"],"file":"index.js"}
@@ -3,9 +3,8 @@ import _extends from "@babel/runtime/helpers/extends";
3
3
  /* eslint-disable eqeqeq */
4
4
 
5
5
  /* eslint-disable prefer-const */
6
- var requiredCompanyFields = ['vatId', 'companyId', 'companyPerson', 'companyName'];
7
6
  var requiredFields = ['city', 'postalCode', 'streetName'];
8
- export function genericBillingAddressValidation(data, errorLabels) {
7
+ export function genericBillingAddressValidation(data, errorLabels, requiredCompanyFields) {
9
8
  var isWithInvoice = Boolean(data.company);
10
9
  if (!isWithInvoice) return null;
11
10
  var companyErrors = requiredCompanyFields.reduce((errors, field) => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/contexts/CheckoutForm/utils/validateBillingAddress.ts"],"names":["requiredCompanyFields","requiredFields","genericBillingAddressValidation","data","errorLabels","isWithInvoice","Boolean","company","companyErrors","reduce","errors","field","trim","fieldIsRequired","fieldErrors","Object","keys","length"],"mappings":";;AAAA;;AACA;AAIA,IAAMA,qBAAqB,GAAG,CAC5B,OAD4B,EAE5B,WAF4B,EAG5B,eAH4B,EAI5B,aAJ4B,CAA9B;AAOA,IAAMC,cAAc,GAAG,CAAC,MAAD,EAAS,YAAT,EAAuB,YAAvB,CAAvB;AAOA,OAAO,SAASC,+BAAT,CACLC,IADK,EAELC,WAFK,EAGyB;AAC9B,MAAMC,aAAa,GAAGC,OAAO,CAACH,IAAI,CAACI,OAAN,CAA7B;AACA,MAAI,CAACF,aAAL,EAAoB,OAAO,IAAP;AAEpB,MAAMG,aAAa,GAAGR,qBAAqB,CAACS,MAAtB,CAA6B,CAACC,MAAD,EAASC,KAAT,KAAmB;AAAA;;AACpE,QAAI,EAACR,IAAD,6BAACA,IAAI,CAAEI,OAAP,oCAAC,cAAgBI,KAAhB,CAAD,aAAC,oBAAwBC,IAAxB,EAAD,CAAJ,EAAqC;AACnC,0BAAYF,MAAZ;AAAoB,SAACC,KAAD,GAASP,WAAW,CAACS;AAAzC;AACD;;AAED,WAAOH,MAAP;AACD,GANqB,EAMnB,EANmB,CAAtB;AAQA,MAAMI,WAAW,GAAGb,cAAc,CAACQ,MAAf,CAAsB,CAACC,MAAD,EAASC,KAAT,KAAmB;AAAA;;AAC3D,QAAI,iBAACR,IAAI,CAACQ,KAAD,CAAL,aAAC,YAAaC,IAAb,EAAD,CAAJ,EAA0B;AACxB,0BAAYF,MAAZ;AAAoB,SAACC,KAAD,GAASP,WAAW,CAACS;AAAzC;AACD;;AAED,WAAOH,MAAP;AACD,GANmB,EAMjB,EANiB,CAApB;;AAQA,MAAMA,MAAM,gBACPF,aADO,EAEPM,WAFO,CAAZ;;AAKA,SAAOC,MAAM,CAACC,IAAP,CAAYN,MAAZ,EAAoBO,MAApB,GAA6BP,MAA7B,GAAsC,IAA7C;AACD","sourcesContent":["/* eslint-disable eqeqeq */\n/* eslint-disable prefer-const */\nimport { AddressDTO } from '@sentecacommerce/sdk'\nimport { CheckoutFormErrorLabelsType, CheckoutFormErrorsResultType } from '..'\n\nconst requiredCompanyFields = [\n 'vatId',\n 'companyId',\n 'companyPerson',\n 'companyName',\n]\n\nconst requiredFields = ['city', 'postalCode', 'streetName']\n\nexport type BillingAddressValidationType = (\n data: AddressDTO,\n errorLabels: CheckoutFormErrorLabelsType\n) => CheckoutFormErrorsResultType\n\nexport function genericBillingAddressValidation(\n data: AddressDTO,\n errorLabels: CheckoutFormErrorLabelsType\n): CheckoutFormErrorsResultType {\n const isWithInvoice = Boolean(data.company)\n if (!isWithInvoice) return null\n\n const companyErrors = requiredCompanyFields.reduce((errors, field) => {\n if (!data?.company?.[field]?.trim()) {\n return { ...errors, [field]: errorLabels.fieldIsRequired }\n }\n\n return errors\n }, {})\n\n const fieldErrors = requiredFields.reduce((errors, field) => {\n if (!data[field]?.trim()) {\n return { ...errors, [field]: errorLabels.fieldIsRequired }\n }\n\n return errors\n }, {})\n\n const errors = {\n ...companyErrors,\n ...fieldErrors,\n }\n\n return Object.keys(errors).length ? errors : null\n}\n"],"file":"validateBillingAddress.js"}
1
+ {"version":3,"sources":["../../../../../src/contexts/CheckoutForm/utils/validateBillingAddress.ts"],"names":["requiredFields","genericBillingAddressValidation","data","errorLabels","requiredCompanyFields","isWithInvoice","Boolean","company","companyErrors","reduce","errors","field","trim","fieldIsRequired","fieldErrors","Object","keys","length"],"mappings":";;AAAA;;AACA;AAIA,IAAMA,cAAc,GAAG,CAAC,MAAD,EAAS,YAAT,EAAuB,YAAvB,CAAvB;AASA,OAAO,SAASC,+BAAT,CACLC,IADK,EAELC,WAFK,EAGLC,qBAHK,EAIyB;AAC9B,MAAMC,aAAa,GAAGC,OAAO,CAACJ,IAAI,CAACK,OAAN,CAA7B;AACA,MAAI,CAACF,aAAL,EAAoB,OAAO,IAAP;AAEpB,MAAMG,aAAa,GAAGJ,qBAAqB,CAACK,MAAtB,CAA6B,CAACC,MAAD,EAASC,KAAT,KAAmB;AAAA;;AACpE,QAAI,EAACT,IAAD,6BAACA,IAAI,CAAEK,OAAP,oCAAC,cAAgBI,KAAhB,CAAD,aAAC,oBAAwBC,IAAxB,EAAD,CAAJ,EAAqC;AACnC,0BAAYF,MAAZ;AAAoB,SAACC,KAAD,GAASR,WAAW,CAACU;AAAzC;AACD;;AAED,WAAOH,MAAP;AACD,GANqB,EAMnB,EANmB,CAAtB;AAQA,MAAMI,WAAW,GAAGd,cAAc,CAACS,MAAf,CAAsB,CAACC,MAAD,EAASC,KAAT,KAAmB;AAAA;;AAC3D,QAAI,iBAACT,IAAI,CAACS,KAAD,CAAL,aAAC,YAAaC,IAAb,EAAD,CAAJ,EAA0B;AACxB,0BAAYF,MAAZ;AAAoB,SAACC,KAAD,GAASR,WAAW,CAACU;AAAzC;AACD;;AAED,WAAOH,MAAP;AACD,GANmB,EAMjB,EANiB,CAApB;;AAQA,MAAMA,MAAM,gBACPF,aADO,EAEPM,WAFO,CAAZ;;AAKA,SAAOC,MAAM,CAACC,IAAP,CAAYN,MAAZ,EAAoBO,MAApB,GAA6BP,MAA7B,GAAsC,IAA7C;AACD","sourcesContent":["/* eslint-disable eqeqeq */\n/* eslint-disable prefer-const */\nimport { AddressDTO } from '@sentecacommerce/sdk'\nimport { CheckoutFormErrorLabelsType, CheckoutFormErrorsResultType } from '..'\n\nconst requiredFields = ['city', 'postalCode', 'streetName']\n\nexport type BillingAddressValidationType = (\n data: AddressDTO,\n errorLabels: CheckoutFormErrorLabelsType,\n requiredFields: string[],\n requiredFieldsOnShipping: string[]\n) => CheckoutFormErrorsResultType\n\nexport function genericBillingAddressValidation(\n data: AddressDTO,\n errorLabels: CheckoutFormErrorLabelsType,\n requiredCompanyFields: string[]\n): CheckoutFormErrorsResultType {\n const isWithInvoice = Boolean(data.company)\n if (!isWithInvoice) return null\n\n const companyErrors = requiredCompanyFields.reduce((errors, field) => {\n if (!data?.company?.[field]?.trim()) {\n return { ...errors, [field]: errorLabels.fieldIsRequired }\n }\n\n return errors\n }, {})\n\n const fieldErrors = requiredFields.reduce((errors, field) => {\n if (!data[field]?.trim()) {\n return { ...errors, [field]: errorLabels.fieldIsRequired }\n }\n\n return errors\n }, {})\n\n const errors = {\n ...companyErrors,\n ...fieldErrors,\n }\n\n return Object.keys(errors).length ? errors : null\n}\n"],"file":"validateBillingAddress.js"}
@@ -3,7 +3,6 @@ import _extends from "@babel/runtime/helpers/extends";
3
3
  /* eslint-disable prefer-const */
4
4
  import { emailRegex, phoneNumberRegex } from '../../../utils/validations';
5
5
  import { ShippingModulesTypeEnum } from '../../../api.v2';
6
- var alwaysRequiredField = ['firstName', 'lastName', 'email', 'phoneNumber'];
7
6
  export function genericAddressValidation(_ref) {
8
7
  var _mod$moduleData, _data$quarter, _data$streetName, _data$additionalAddre;
9
8
 
@@ -126,10 +125,14 @@ export var defaultShippingValidations = {
126
125
  Default: pickupFromStoreValidation
127
126
  }
128
127
  };
129
- export function validateShipping(data, mod, errorLabels, validations) {
130
- var _mod$moduleData5, _validations$mod$modu;
128
+ var defaultRequiredFields = ['firstName', 'lastName', 'email', 'phoneNumber'];
129
+ export function validateShipping(data, mod, errorLabels, validations, requiredFields, enableNoShippingMethodMode) {
130
+ if (requiredFields === void 0) {
131
+ requiredFields = defaultRequiredFields;
132
+ }
131
133
 
132
- var globalErrors = alwaysRequiredField.reduce((errors, field) => {
134
+ var validateErrors = {};
135
+ var globalErrors = requiredFields.reduce((errors, field) => {
133
136
  var _data$field;
134
137
 
135
138
  if (!(data != null && (_data$field = data[field]) != null && _data$field.trim != null && _data$field.trim())) {
@@ -149,23 +152,27 @@ export function validateShipping(data, mod, errorLabels, validations) {
149
152
  globalErrors.phoneNumber = (errorLabels == null ? void 0 : errorLabels.invalidPhoneNumber) || '';
150
153
  }
151
154
 
152
- if (!(mod != null && mod.moduleKey) || !(mod != null && (_mod$moduleData5 = mod.moduleData) != null && _mod$moduleData5.methodKey)) {
153
- return _extends({}, globalErrors, {
154
- courier: errorLabels.selectCourier
155
- });
156
- }
155
+ if (!enableNoShippingMethodMode) {
156
+ var _mod$moduleData5, _validations;
157
157
 
158
- var validate = (_validations$mod$modu = validations[mod.moduleKey]) == null ? void 0 : _validations$mod$modu[mod.moduleData.methodKey];
158
+ if (!(mod != null && mod.moduleKey) || !(mod != null && (_mod$moduleData5 = mod.moduleData) != null && _mod$moduleData5.methodKey)) {
159
+ return _extends({}, globalErrors, {
160
+ courier: errorLabels.selectCourier
161
+ });
162
+ }
159
163
 
160
- if (!validate) {
161
- throw new Error("Validation for shipping with provider: " + mod.moduleKey + " and method key: " + mod.moduleData.methodKey + " not found");
162
- }
164
+ var validate = (_validations = validations[mod == null ? void 0 : mod.moduleKey]) == null ? void 0 : _validations[mod == null ? void 0 : mod.moduleData.methodKey];
163
165
 
164
- var validateErrors = validate({
165
- data,
166
- mod,
167
- errorLabels
168
- }) || {};
166
+ if (!validate) {
167
+ throw new Error("Validation for shipping with provider: " + (mod == null ? void 0 : mod.moduleKey) + " and method key: " + (mod == null ? void 0 : mod.moduleData.methodKey) + " not found");
168
+ }
169
+
170
+ validateErrors = validate({
171
+ data,
172
+ mod,
173
+ errorLabels
174
+ }) || {};
175
+ }
169
176
 
170
177
  var errors = _extends({}, globalErrors, validateErrors);
171
178
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/contexts/CheckoutForm/utils/validateShipping.ts"],"names":["emailRegex","phoneNumberRegex","ShippingModulesTypeEnum","alwaysRequiredField","genericAddressValidation","data","mod","errorLabels","address","moduleData","city","cityIsRequired","quarter","trim","streetNumber","entrance","building","apartment","any","fillStreetNumberBuildingEntranceOrApartment","street","streetName","additionalAddressInfo","cantFindStreetOrQuarterMessage","streetIsRequired","quarterIsRequired","fanAddressValidation","errors","fieldIsRequired","Object","keys","length","genericOfficeValidation","office","officeIsRequired","pickupFromStoreValidation","stockLocation","pickupFromStore","noStoreSelected","undefined","defaultShippingValidations","Speedy","Address","Office","Econt","Evropat","Fan","PickUpFromStore","Default","validateShipping","validations","globalErrors","reduce","field","email","test","emailIsRequired","phoneNumber","invalidPhoneNumber","moduleKey","methodKey","courier","selectCourier","validate","Error","validateErrors"],"mappings":";;AAAA;AAQA,SAASA,UAAT,EAAqBC,gBAArB,QAA6C,4BAA7C;AACA,SAASC,uBAAT,QAAwC,iBAAxC;AAEA,IAAMC,mBAAmB,GAAG,CAAC,WAAD,EAAc,UAAd,EAA0B,OAA1B,EAAmC,aAAnC,CAA5B;AAQA,OAAO,SAASC,wBAAT,OAI2C;AAAA;;AAAA,MAJT;AACvCC,IAAAA,IADuC;AAEvCC,IAAAA,GAFuC;AAGvCC,IAAAA;AAHuC,GAIS;AAChD,MAAMC,OAAO,GAAGF,GAAH,uCAAGA,GAAG,CAAEG,UAAR,qBAAG,gBAAiBD,OAAjC;AAEA,MAAI,CAACH,IAAL,EAAW;;AAEX,MAAI,EAACG,OAAD,YAACA,OAAO,CAAEE,IAAV,CAAJ,EAAoB;AAClB;AACA,WAAO;AACLA,MAAAA,IAAI,EAAEH,WAAW,CAACI;AADb,KAAP;AAGD,GAV+C,CAYhD;;;AACA,MAAIH,OAAO,QAAP,IAAAA,OAAO,CAAEI,OAAT,qBAAoBP,IAAI,CAACO,OAAzB,aAAoB,cAAcC,IAAd,EAAxB,EAA8C;AAAA;;AAC5C,QACE,wBAACR,IAAI,CAACS,YAAN,aAAC,mBAAmBD,IAAnB,EAAD,KACA,oBAACR,IAAI,CAACU,QAAN,aAAC,eAAeF,IAAf,EAAD,CADA,IAEA,oBAACR,IAAI,CAACW,QAAN,aAAC,eAAeH,IAAf,EAAD,CAFA,IAGA,qBAACR,IAAI,CAACY,SAAN,aAAC,gBAAgBJ,IAAhB,EAAD,CAJF,EAKE;AACA,aAAO;AACLK,QAAAA,GAAG,EAAEX,WAAW,CAACY;AADZ,OAAP;AAGD;AACF,GAXD,CAYA;AAZA,OAaK,IAAIX,OAAO,QAAP,IAAAA,OAAO,CAAEY,MAAT,wBAAmBf,IAAI,CAACgB,UAAxB,aAAmB,iBAAiBR,IAAjB,EAAvB,EAAgD;AAAA;;AACnD,UACE,yBAACR,IAAI,CAACS,YAAN,aAAC,oBAAmBD,IAAnB,EAAD,KACA,qBAACR,IAAI,CAACU,QAAN,aAAC,gBAAeF,IAAf,EAAD,CADA,IAEA,qBAACR,IAAI,CAACW,QAAN,aAAC,gBAAeH,IAAf,EAAD,CAFA,IAGA,sBAACR,IAAI,CAACY,SAAN,aAAC,iBAAgBJ,IAAhB,EAAD,CAJF,EAKE;AACA,eAAO;AACLK,UAAAA,GAAG,EAAEX,WAAW,CAACY;AADZ,SAAP;AAGD;AACF,KAXI,CAYL;AAZK,SAaA,IAAI,2BAACd,IAAI,CAACiB,qBAAN,aAAC,sBAA4BT,IAA5B,EAAD,CAAJ,EAAyC;AAC5C,eAAO;AACLS,UAAAA,qBAAqB,EAAEf,WAAW,CAACgB,8BAD9B;AAELH,UAAAA,MAAM,EAAEb,WAAW,CAACiB,gBAFf;AAGLZ,UAAAA,OAAO,EAAEL,WAAW,CAACkB;AAHhB,SAAP;AAKD;AACF;AAED,OAAO,SAASC,oBAAT,QAI2C;AAAA;;AAAA,MAJb;AACnCrB,IAAAA,IADmC;AAEnCC,IAAAA,GAFmC;AAGnCC,IAAAA;AAHmC,GAIa;AAChD,MAAMC,OAAO,GAAGF,GAAH,wCAAGA,GAAG,CAAEG,UAAR,qBAAG,iBAAiBD,OAAjC;AACA,MAAMmB,MAAoC,GAAG,EAA7C;AAEA,MAAI,CAACtB,IAAL,EAAW,OAJqC,CAMhD;;AACA,MAAI,EAACG,OAAD,YAACA,OAAO,CAAEE,IAAV,CAAJ,EAAoB;AAClBiB,IAAAA,MAAM,CAACjB,IAAP,GAAcH,WAAW,CAACI,cAA1B;AACD;;AAED,MAAI,EAACH,OAAD,YAACA,OAAO,CAAEY,MAAV,CAAJ,EAAsB;AACpBO,IAAAA,MAAM,CAACP,MAAP,GAAgBb,WAAW,CAACiB,gBAA5B;AACD;;AAED,MAAI,CAACnB,IAAI,CAACS,YAAV,EAAwB;AACtBa,IAAAA,MAAM,CAACb,YAAP,GAAsBP,WAAW,CAACqB,eAAlC;AACD;;AAED,SAAOC,MAAM,CAACC,IAAP,CAAYH,MAAZ,EAAoBI,MAApB,GAA6BJ,MAA7B,GAAsC,IAA7C;AACD;AAED,OAAO,SAASK,uBAAT,QAG2C;AAAA;;AAAA,MAHV;AACtC1B,IAAAA,GADsC;AAEtCC,IAAAA;AAFsC,GAGU;AAChD,MAAIoB,MAAoC,GAAG,EAA3C;AAEA,MAAMnB,OAAO,GAAGF,GAAH,wCAAGA,GAAG,CAAEG,UAAR,qBAAG,iBAAiBD,OAAjC;;AAEA,MAAI,EAACA,OAAD,YAACA,OAAO,CAAEE,IAAV,CAAJ,EAAoB;AAClBiB,IAAAA,MAAM,CAACjB,IAAP,GAAcH,WAAW,CAACI,cAA1B;AACD;;AAED,MAAI,EAACH,OAAD,YAACA,OAAO,CAAEyB,MAAV,CAAJ,EAAsB;AACpBN,IAAAA,MAAM,CAACM,MAAP,GAAgB1B,WAAW,CAAC2B,gBAA5B;AACD;;AAED,SAAOL,MAAM,CAACC,IAAP,CAAYH,MAAZ,EAAoBI,MAApB,GAA6BJ,MAA7B,GAAsC,IAA7C;AACD;AAED,OAAO,SAASQ,yBAAT,QAG2C;AAAA;;AAAA,MAHR;AACxC7B,IAAAA,GADwC;AAExCC,IAAAA;AAFwC,GAGQ;AAChD,SAAO,EAACD,GAAD,gCAACA,GAAG,CAAEG,UAAN,aAAC,iBAAiB2B,aAAlB,IACH;AAAEC,IAAAA,eAAe,EAAE9B,WAAW,CAAC+B;AAA/B,GADG,GAEHC,SAFJ;AAGD;AAED,OAAO,IAAMC,0BAAmD,GAAG;AACjE,GAACtC,uBAAuB,CAACuC,MAAzB,GAAkC;AAChCC,IAAAA,OAAO,EAAEtC,wBADuB;AAEhCuC,IAAAA,MAAM,EAAEX;AAFwB,GAD+B;AAKjE,GAAC9B,uBAAuB,CAAC0C,KAAzB,GAAiC;AAC/BF,IAAAA,OAAO,EAAEtC,wBADsB;AAE/BuC,IAAAA,MAAM,EAAEX;AAFuB,GALgC;AASjE,GAAC9B,uBAAuB,CAAC2C,OAAzB,GAAmC;AACjCH,IAAAA,OAAO,EAAEtC,wBADwB;AAEjCuC,IAAAA,MAAM,EAAEX;AAFyB,GAT8B;AAajE,GAAC9B,uBAAuB,CAAC4C,GAAzB,GAA+B;AAC7BJ,IAAAA,OAAO,EAAEhB;AADoB,GAbkC;AAgBjE,GAACxB,uBAAuB,CAAC6C,eAAzB,GAA2C;AACzCC,IAAAA,OAAO,EAAEb;AADgC;AAhBsB,CAA5D;AA6BP,OAAO,SAASc,gBAAT,CACL5C,IADK,EAELC,GAFK,EAGLC,WAHK,EAIL2C,WAJK,EAKyB;AAAA;;AAC9B,MAAMC,YAA0C,GAAGhD,mBAAmB,CAACiD,MAApB,CACjD,CAACzB,MAAD,EAAS0B,KAAT,KAAmB;AAAA;;AACjB,QAAI,EAAChD,IAAD,2BAACA,IAAI,CAAGgD,KAAH,CAAL,aAAC,YAAexC,IAAhB,YAAC,YAAeA,IAAf,EAAD,CAAJ,EAA8B;AAC5B,0BACKc,MADL;AAEE,SAAC0B,KAAD,GAAS9C,WAAW,CAACqB;AAFvB;AAID;;AAED,WAAOD,MAAP;AACD,GAVgD,EAWjD,EAXiD,CAAnD;;AAcA,MAAItB,IAAI,QAAJ,IAAAA,IAAI,CAAEiD,KAAN,IAAe,CAACtD,UAAU,CAACuD,IAAX,CAAgBlD,IAAI,CAACiD,KAArB,CAApB,EAAiD;AAC/CH,IAAAA,YAAY,CAACG,KAAb,GAAqB/C,WAAW,CAACiD,eAAjC;AACD;;AAED,MAAInD,IAAI,QAAJ,IAAAA,IAAI,CAAEoD,WAAN,IAAqB,CAACxD,gBAAgB,CAACsD,IAAjB,CAAsBlD,IAAtB,oBAAsBA,IAAI,CAAEoD,WAA5B,CAA1B,EAAoE;AAClEN,IAAAA,YAAY,CAACM,WAAb,GAA2B,CAAAlD,WAAW,QAAX,YAAAA,WAAW,CAAEmD,kBAAb,KAAmC,EAA9D;AACD;;AAED,MAAI,EAACpD,GAAD,YAACA,GAAG,CAAEqD,SAAN,KAAmB,EAACrD,GAAD,gCAACA,GAAG,CAAEG,UAAN,aAAC,iBAAiBmD,SAAlB,CAAvB,EAAoD;AAClD,wBACKT,YADL;AAEEU,MAAAA,OAAO,EAAEtD,WAAW,CAACuD;AAFvB;AAID;;AAED,MAAMC,QAAQ,4BAAGb,WAAW,CAAC5C,GAAG,CAACqD,SAAL,CAAd,qBAAG,sBAA6BrD,GAAG,CAACG,UAAJ,CAAemD,SAA5C,CAAjB;;AAEA,MAAI,CAACG,QAAL,EAAe;AACb,UAAM,IAAIC,KAAJ,6CACsC1D,GAAG,CAACqD,SAD1C,yBACuErD,GAAG,CAACG,UAAJ,CAAemD,SADtF,gBAAN;AAGD;;AAED,MAAMK,cAAc,GAAGF,QAAQ,CAAC;AAAE1D,IAAAA,IAAF;AAAQC,IAAAA,GAAR;AAAaC,IAAAA;AAAb,GAAD,CAAR,IAAwC,EAA/D;;AAEA,MAAMoB,MAAoC,gBACrCwB,YADqC,EAErCc,cAFqC,CAA1C;;AAKA,SAAOpC,MAAM,CAACC,IAAP,CAAYH,MAAZ,EAAoBI,MAApB,GAA6BJ,MAA7B,GAAsC,IAA7C;AACD","sourcesContent":["/* eslint-disable prefer-const */\nimport { AddressDTO } from '@sentecacommerce/sdk'\nimport { ShippingModule } from '../../../hooks/useCheckoutShippingModule'\n\nimport {\n CheckoutFormErrorLabelsType,\n CheckoutFormErrorsResultType,\n} from '../index'\nimport { emailRegex, phoneNumberRegex } from '../../../utils/validations'\nimport { ShippingModulesTypeEnum } from '../../../api.v2'\n\nconst alwaysRequiredField = ['firstName', 'lastName', 'email', 'phoneNumber']\n\ntype ValidationProps = {\n data?: AddressDTO | null\n mod?: ShippingModule | null\n errorLabels: CheckoutFormErrorLabelsType\n}\n\nexport function genericAddressValidation({\n data,\n mod,\n errorLabels,\n}: ValidationProps): CheckoutFormErrorsResultType {\n const address = mod?.moduleData?.address\n\n if (!data) return\n\n if (!address?.city) {\n // City is always required\n return {\n city: errorLabels.cityIsRequired,\n }\n }\n\n // case 1: city + quarter + anything else\n if (address?.quarter || data.quarter?.trim()) {\n if (\n !data.streetNumber?.trim() &&\n !data.entrance?.trim() &&\n !data.building?.trim() &&\n !data.apartment?.trim()\n ) {\n return {\n any: errorLabels.fillStreetNumberBuildingEntranceOrApartment,\n }\n }\n }\n // case 2: city + street + anything else\n else if (address?.street || data.streetName?.trim()) {\n if (\n !data.streetNumber?.trim() &&\n !data.entrance?.trim() &&\n !data.building?.trim() &&\n !data.apartment?.trim()\n ) {\n return {\n any: errorLabels.fillStreetNumberBuildingEntranceOrApartment,\n }\n }\n }\n // case 3: city + additional info\n else if (!data.additionalAddressInfo?.trim()) {\n return {\n additionalAddressInfo: errorLabels.cantFindStreetOrQuarterMessage,\n street: errorLabels.streetIsRequired,\n quarter: errorLabels.quarterIsRequired,\n }\n }\n}\n\nexport function fanAddressValidation({\n data,\n mod,\n errorLabels,\n}: ValidationProps): CheckoutFormErrorsResultType {\n const address = mod?.moduleData?.address\n const errors: CheckoutFormErrorsResultType = {}\n\n if (!data) return\n\n // City, Street and StreetNumber are always required\n if (!address?.city) {\n errors.city = errorLabels.cityIsRequired\n }\n\n if (!address?.street) {\n errors.street = errorLabels.streetIsRequired\n }\n\n if (!data.streetNumber) {\n errors.streetNumber = errorLabels.fieldIsRequired\n }\n\n return Object.keys(errors).length ? errors : null\n}\n\nexport function genericOfficeValidation({\n mod,\n errorLabels,\n}: ValidationProps): CheckoutFormErrorsResultType {\n let errors: CheckoutFormErrorsResultType = {}\n\n const address = mod?.moduleData?.address\n\n if (!address?.city) {\n errors.city = errorLabels.cityIsRequired\n }\n\n if (!address?.office) {\n errors.office = errorLabels.officeIsRequired\n }\n\n return Object.keys(errors).length ? errors : null\n}\n\nexport function pickupFromStoreValidation({\n mod,\n errorLabels,\n}: ValidationProps): CheckoutFormErrorsResultType {\n return !mod?.moduleData?.stockLocation\n ? { pickupFromStore: errorLabels.noStoreSelected }\n : undefined\n}\n\nexport const defaultShippingValidations: ShippingValidationsType = {\n [ShippingModulesTypeEnum.Speedy]: {\n Address: genericAddressValidation,\n Office: genericOfficeValidation,\n },\n [ShippingModulesTypeEnum.Econt]: {\n Address: genericAddressValidation,\n Office: genericOfficeValidation,\n },\n [ShippingModulesTypeEnum.Evropat]: {\n Address: genericAddressValidation,\n Office: genericOfficeValidation,\n },\n [ShippingModulesTypeEnum.Fan]: {\n Address: fanAddressValidation,\n },\n [ShippingModulesTypeEnum.PickUpFromStore]: {\n Default: pickupFromStoreValidation,\n },\n}\n\nexport interface ShippingValidationsType {\n [key: string]: {\n [key: string]: (\n data: ValidationProps\n ) => { [key: string]: string } | null | undefined\n }\n}\n\nexport function validateShipping(\n data: AddressDTO | null | undefined,\n mod: ShippingModule | undefined,\n errorLabels: CheckoutFormErrorLabelsType,\n validations: ShippingValidationsType\n): CheckoutFormErrorsResultType {\n const globalErrors: CheckoutFormErrorsResultType = alwaysRequiredField.reduce(\n (errors, field) => {\n if (!data?.[field]?.trim?.()) {\n return {\n ...errors,\n [field]: errorLabels.fieldIsRequired,\n }\n }\n\n return errors\n },\n {}\n )\n\n if (data?.email && !emailRegex.test(data.email)) {\n globalErrors.email = errorLabels.emailIsRequired\n }\n\n if (data?.phoneNumber && !phoneNumberRegex.test(data?.phoneNumber)) {\n globalErrors.phoneNumber = errorLabels?.invalidPhoneNumber || ''\n }\n\n if (!mod?.moduleKey || !mod?.moduleData?.methodKey) {\n return {\n ...globalErrors,\n courier: errorLabels.selectCourier,\n }\n }\n\n const validate = validations[mod.moduleKey]?.[mod.moduleData.methodKey]\n\n if (!validate) {\n throw new Error(\n `Validation for shipping with provider: ${mod.moduleKey} and method key: ${mod.moduleData.methodKey} not found`\n )\n }\n\n const validateErrors = validate({ data, mod, errorLabels }) || {}\n\n const errors: CheckoutFormErrorsResultType = {\n ...globalErrors,\n ...validateErrors,\n }\n\n return Object.keys(errors).length ? errors : null\n}\n"],"file":"validateShipping.js"}
1
+ {"version":3,"sources":["../../../../../src/contexts/CheckoutForm/utils/validateShipping.ts"],"names":["emailRegex","phoneNumberRegex","ShippingModulesTypeEnum","genericAddressValidation","data","mod","errorLabels","address","moduleData","city","cityIsRequired","quarter","trim","streetNumber","entrance","building","apartment","any","fillStreetNumberBuildingEntranceOrApartment","street","streetName","additionalAddressInfo","cantFindStreetOrQuarterMessage","streetIsRequired","quarterIsRequired","fanAddressValidation","errors","fieldIsRequired","Object","keys","length","genericOfficeValidation","office","officeIsRequired","pickupFromStoreValidation","stockLocation","pickupFromStore","noStoreSelected","undefined","defaultShippingValidations","Speedy","Address","Office","Econt","Evropat","Fan","PickUpFromStore","Default","defaultRequiredFields","validateShipping","validations","requiredFields","enableNoShippingMethodMode","validateErrors","globalErrors","reduce","field","email","test","emailIsRequired","phoneNumber","invalidPhoneNumber","moduleKey","methodKey","courier","selectCourier","validate","Error"],"mappings":"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","sourcesContent":["/* eslint-disable prefer-const */\nimport { AddressDTO } from '@sentecacommerce/sdk'\nimport { ShippingModule } from '../../../hooks/useCheckoutShippingModule'\n\nimport {\n CheckoutFormErrorLabelsType,\n CheckoutFormErrorsResultType,\n} from '../index'\nimport { emailRegex, phoneNumberRegex } from '../../../utils/validations'\nimport { ShippingModulesTypeEnum } from '../../../api.v2'\n\ntype ValidationProps = {\n data?: AddressDTO | null\n mod?: ShippingModule | null\n errorLabels: CheckoutFormErrorLabelsType\n}\n\nexport function genericAddressValidation({\n data,\n mod,\n errorLabels,\n}: ValidationProps): CheckoutFormErrorsResultType {\n const address = mod?.moduleData?.address\n\n if (!data) return\n\n if (!address?.city) {\n // City is always required\n return {\n city: errorLabels.cityIsRequired,\n }\n }\n\n // case 1: city + quarter + anything else\n if (address?.quarter || data.quarter?.trim()) {\n if (\n !data.streetNumber?.trim() &&\n !data.entrance?.trim() &&\n !data.building?.trim() &&\n !data.apartment?.trim()\n ) {\n return {\n any: errorLabels.fillStreetNumberBuildingEntranceOrApartment,\n }\n }\n }\n // case 2: city + street + anything else\n else if (address?.street || data.streetName?.trim()) {\n if (\n !data.streetNumber?.trim() &&\n !data.entrance?.trim() &&\n !data.building?.trim() &&\n !data.apartment?.trim()\n ) {\n return {\n any: errorLabels.fillStreetNumberBuildingEntranceOrApartment,\n }\n }\n }\n // case 3: city + additional info\n else if (!data.additionalAddressInfo?.trim()) {\n return {\n additionalAddressInfo: errorLabels.cantFindStreetOrQuarterMessage,\n street: errorLabels.streetIsRequired,\n quarter: errorLabels.quarterIsRequired,\n }\n }\n}\n\nexport function fanAddressValidation({\n data,\n mod,\n errorLabels,\n}: ValidationProps): CheckoutFormErrorsResultType {\n const address = mod?.moduleData?.address\n const errors: CheckoutFormErrorsResultType = {}\n\n if (!data) return\n\n // City, Street and StreetNumber are always required\n if (!address?.city) {\n errors.city = errorLabels.cityIsRequired\n }\n\n if (!address?.street) {\n errors.street = errorLabels.streetIsRequired\n }\n\n if (!data.streetNumber) {\n errors.streetNumber = errorLabels.fieldIsRequired\n }\n\n return Object.keys(errors).length ? errors : null\n}\n\nexport function genericOfficeValidation({\n mod,\n errorLabels,\n}: ValidationProps): CheckoutFormErrorsResultType {\n let errors: CheckoutFormErrorsResultType = {}\n\n const address = mod?.moduleData?.address\n\n if (!address?.city) {\n errors.city = errorLabels.cityIsRequired\n }\n\n if (!address?.office) {\n errors.office = errorLabels.officeIsRequired\n }\n\n return Object.keys(errors).length ? errors : null\n}\n\nexport function pickupFromStoreValidation({\n mod,\n errorLabels,\n}: ValidationProps): CheckoutFormErrorsResultType {\n return !mod?.moduleData?.stockLocation\n ? { pickupFromStore: errorLabels.noStoreSelected }\n : undefined\n}\n\nexport const defaultShippingValidations: ShippingValidationsType = {\n [ShippingModulesTypeEnum.Speedy]: {\n Address: genericAddressValidation,\n Office: genericOfficeValidation,\n },\n [ShippingModulesTypeEnum.Econt]: {\n Address: genericAddressValidation,\n Office: genericOfficeValidation,\n },\n [ShippingModulesTypeEnum.Evropat]: {\n Address: genericAddressValidation,\n Office: genericOfficeValidation,\n },\n [ShippingModulesTypeEnum.Fan]: {\n Address: fanAddressValidation,\n },\n [ShippingModulesTypeEnum.PickUpFromStore]: {\n Default: pickupFromStoreValidation,\n },\n}\n\nexport interface ShippingValidationsType {\n [key: string]: {\n [key: string]: (\n data: ValidationProps\n ) => { [key: string]: string } | null | undefined\n }\n}\n\nconst defaultRequiredFields = ['firstName', 'lastName', 'email', 'phoneNumber']\n\nexport function validateShipping(\n data: AddressDTO | null | undefined,\n mod: ShippingModule | undefined,\n errorLabels: CheckoutFormErrorLabelsType,\n validations: ShippingValidationsType,\n requiredFields: string[] = defaultRequiredFields,\n enableNoShippingMethodMode?: boolean\n): CheckoutFormErrorsResultType {\n let validateErrors: { [key: string]: string } = {}\n\n const globalErrors: CheckoutFormErrorsResultType = requiredFields.reduce(\n (errors, field) => {\n if (!data?.[field]?.trim?.()) {\n return {\n ...errors,\n [field]: errorLabels.fieldIsRequired,\n }\n }\n\n return errors\n },\n {}\n )\n\n if (data?.email && !emailRegex.test(data.email)) {\n globalErrors.email = errorLabels.emailIsRequired\n }\n\n if (data?.phoneNumber && !phoneNumberRegex.test(data?.phoneNumber)) {\n globalErrors.phoneNumber = errorLabels?.invalidPhoneNumber || ''\n }\n\n if (!enableNoShippingMethodMode) {\n if (!mod?.moduleKey || !mod?.moduleData?.methodKey) {\n return {\n ...globalErrors,\n courier: errorLabels.selectCourier,\n }\n }\n\n const validate =\n validations[mod?.moduleKey as string]?.[mod?.moduleData.methodKey]\n\n if (!validate) {\n throw new Error(\n `Validation for shipping with provider: ${mod?.moduleKey} and method key: ${mod?.moduleData.methodKey} not found`\n )\n }\n\n validateErrors = validate({ data, mod, errorLabels }) || {}\n }\n\n const errors: CheckoutFormErrorsResultType = {\n ...globalErrors,\n ...validateErrors,\n }\n\n return Object.keys(errors).length ? errors : null\n}\n"],"file":"validateShipping.js"}
@@ -21,7 +21,8 @@ export var AddressFormContextProvider = (_ref) => {
21
21
  address: currentAddress,
22
22
  onSuccess,
23
23
  validations = defaultShippingValidations,
24
- errorLabels
24
+ errorLabels,
25
+ requiredFields = ['firstName', 'lastName', 'email', 'phoneNumber']
25
26
  } = _ref;
26
27
  var emptyAddress = {
27
28
  _id: (currentAddress == null ? void 0 : currentAddress._id) || '',
@@ -82,7 +83,7 @@ export var AddressFormContextProvider = (_ref) => {
82
83
  };
83
84
  }, []);
84
85
  var addressErrors = useMemo(() => {
85
- return validateShipping(address, moduleData, errorLabels, validations);
86
+ return validateShipping(address, moduleData, errorLabels, validations, requiredFields);
86
87
  }, [address, moduleData, errorLabels, validations]);
87
88
  /**
88
89
  * Format all platform and merchant modules