@sentecacommerce-theme/lib 0.12.29 → 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.
- package/dist/cjs/contexts/CheckoutForm/hooks/useBilling/index.js +4 -2
- package/dist/cjs/contexts/CheckoutForm/hooks/useBilling/index.js.map +1 -1
- package/dist/cjs/contexts/CheckoutForm/hooks/useShipping/index.js +8 -6
- package/dist/cjs/contexts/CheckoutForm/hooks/useShipping/index.js.map +1 -1
- package/dist/cjs/contexts/CheckoutForm/index.js +16 -9
- package/dist/cjs/contexts/CheckoutForm/index.js.map +1 -1
- package/dist/cjs/contexts/CheckoutForm/utils/validateBillingAddress.js +1 -2
- package/dist/cjs/contexts/CheckoutForm/utils/validateBillingAddress.js.map +1 -1
- package/dist/cjs/contexts/CheckoutForm/utils/validateShipping.js +28 -21
- package/dist/cjs/contexts/CheckoutForm/utils/validateShipping.js.map +1 -1
- package/dist/cjs/hooks/addresses-hooks/useAddressForm/index.js +4 -2
- package/dist/cjs/hooks/addresses-hooks/useAddressForm/index.js.map +1 -1
- package/dist/cjs/hooks/order-hooks/useOrder/index.js +12 -1
- package/dist/cjs/hooks/order-hooks/useOrder/index.js.map +1 -1
- package/dist/cjs/hooks/useCheckoutShippingModule/index.js +6 -1
- package/dist/cjs/hooks/useCheckoutShippingModule/index.js.map +1 -1
- package/dist/cjs/user/api/utils/generateAnonymousToken.js +4 -4
- package/dist/cjs/user/api/utils/generateAnonymousToken.js.map +1 -1
- package/dist/esm/contexts/CheckoutForm/hooks/useBilling/index.js +4 -2
- package/dist/esm/contexts/CheckoutForm/hooks/useBilling/index.js.map +1 -1
- package/dist/esm/contexts/CheckoutForm/hooks/useShipping/index.js +8 -6
- package/dist/esm/contexts/CheckoutForm/hooks/useShipping/index.js.map +1 -1
- package/dist/esm/contexts/CheckoutForm/index.js +13 -9
- package/dist/esm/contexts/CheckoutForm/index.js.map +1 -1
- package/dist/esm/contexts/CheckoutForm/utils/validateBillingAddress.js +1 -2
- package/dist/esm/contexts/CheckoutForm/utils/validateBillingAddress.js.map +1 -1
- package/dist/esm/contexts/CheckoutForm/utils/validateShipping.js +25 -18
- package/dist/esm/contexts/CheckoutForm/utils/validateShipping.js.map +1 -1
- package/dist/esm/hooks/addresses-hooks/useAddressForm/index.js +3 -2
- package/dist/esm/hooks/addresses-hooks/useAddressForm/index.js.map +1 -1
- package/dist/esm/hooks/order-hooks/useOrder/index.js +10 -1
- package/dist/esm/hooks/order-hooks/useOrder/index.js.map +1 -1
- package/dist/esm/hooks/useCheckoutShippingModule/index.js +6 -1
- package/dist/esm/hooks/useCheckoutShippingModule/index.js.map +1 -1
- package/dist/esm/user/api/utils/generateAnonymousToken.js +4 -4
- package/dist/esm/user/api/utils/generateAnonymousToken.js.map +1 -1
- package/dist/types/contexts/CheckoutForm/hooks/useBilling/index.d.ts +4 -2
- package/dist/types/contexts/CheckoutForm/hooks/useShipping/index.d.ts +3 -1
- package/dist/types/contexts/CheckoutForm/index.d.ts +4 -1
- package/dist/types/contexts/CheckoutForm/utils/validateBillingAddress.d.ts +2 -2
- package/dist/types/contexts/CheckoutForm/utils/validateShipping.d.ts +1 -1
- package/dist/types/hooks/addresses-hooks/useAddressForm/index.d.ts +2 -1
- package/dist/types/hooks/order-hooks/useOrder/index.d.ts +7 -1
- package/dist/types/hooks/useCheckoutShippingModule/index.d.ts +2 -2
- package/dist/types/user/api/utils/generateAnonymousToken.d.ts +1 -1
- package/package.json +3 -3
@@ -33,7 +33,9 @@ var useBilling = function useBilling(_ref) {
|
|
33
33
|
withPersistBeforePageLeave = _ref.withPersistBeforePageLeave,
|
34
34
|
countryCode = _ref.countryCode,
|
35
35
|
validateBillingAddress = _ref.validateBillingAddress,
|
36
|
-
enabled = _ref.enabled
|
36
|
+
enabled = _ref.enabled,
|
37
|
+
requiredFields = _ref.requiredFields,
|
38
|
+
requiredFieldsOnShipping = _ref.requiredFieldsOnShipping;
|
37
39
|
var emptyBillingAddress = (0, _react.useMemo)(function () {
|
38
40
|
return {
|
39
41
|
_id: '',
|
@@ -76,7 +78,7 @@ var useBilling = function useBilling(_ref) {
|
|
76
78
|
handleBillingAddressChange: handleBillingAddressChange
|
77
79
|
});
|
78
80
|
var billingAddressErrors = (0, _react.useMemo)(function () {
|
79
|
-
return billingAddress && validateBillingAddress(billingAddress, errorLabels);
|
81
|
+
return billingAddress && validateBillingAddress(billingAddress, errorLabels, requiredFields, requiredFieldsOnShipping);
|
80
82
|
}, [billingAddress, errorLabels, validateBillingAddress]);
|
81
83
|
/**
|
82
84
|
* On input change with nested fields support
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/contexts/CheckoutForm/hooks/useBilling/index.ts"],"names":["IS_NEW","useBilling","orderQuery","errorLabels","withSavedBillingAddressList","enableSaveBillingAddress","withPersistBeforePageLeave","countryCode","validateBillingAddress","enabled","emptyBillingAddress","_id","streetName","company","undefined","isDefaultBillingAddress","createdAt","updatedAt","isBillingAddressSubmitting","setIsBillingAddressSubmitting","isWithBillingAddress","setIsWithBillingAddress","companiesApi","useAdd","saveBillingAddress","handleBillingAddressChange","savedBillingAddress","currentBillingAddress","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":["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","companiesApi","useAdd","saveBillingAddress","handleBillingAddressChange","savedBillingAddress","currentBillingAddress","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"}
|
@@ -42,7 +42,9 @@ var useShipping = function useShipping(_ref) {
|
|
42
42
|
autofillShippingPersonalData = _ref.autofillShippingPersonalData,
|
43
43
|
userQuery = _ref.userQuery,
|
44
44
|
enabled = _ref.enabled,
|
45
|
-
countryCode = _ref.countryCode
|
45
|
+
countryCode = _ref.countryCode,
|
46
|
+
requiredFields = _ref.requiredFields,
|
47
|
+
enableNoShippingMethodMode = _ref.enableNoShippingMethodMode;
|
46
48
|
|
47
49
|
var _useState = (0, _react.useState)(false),
|
48
50
|
isShippingSubmitting = _useState[0],
|
@@ -59,7 +61,7 @@ var useShipping = function useShipping(_ref) {
|
|
59
61
|
shippingAddress = _useState2[0],
|
60
62
|
setShippingAddress = _useState2[1];
|
61
63
|
|
62
|
-
var mod = (0, _useCheckoutShippingModule.useCheckoutShippingModule)(orderQuery);
|
64
|
+
var mod = (0, _useCheckoutShippingModule.useCheckoutShippingModule)(orderQuery, !enableNoShippingMethodMode);
|
63
65
|
|
64
66
|
var _useSavedShippingList = (0, _useSavedShippingList2.useSavedShippingList)({
|
65
67
|
enabled: enabled && enableSavedAddressList,
|
@@ -74,20 +76,20 @@ var useShipping = function useShipping(_ref) {
|
|
74
76
|
var _mod$moduleData, _moduleAddress$city, _moduleAddress$quarte, _moduleAddress$street, _moduleAddress$city$p, _moduleAddress$city2;
|
75
77
|
|
76
78
|
if (!shippingAddress) return;
|
77
|
-
var moduleAddress = (_mod$moduleData = mod.moduleData) == null ? void 0 : _mod$moduleData.address;
|
79
|
+
var moduleAddress = mod == null ? void 0 : (_mod$moduleData = mod.moduleData) == null ? void 0 : _mod$moduleData.address;
|
78
80
|
return (0, _extends2["default"])({}, shippingAddress, {
|
79
81
|
city: (moduleAddress == null ? void 0 : (_moduleAddress$city = moduleAddress.city) == null ? void 0 : _moduleAddress$city.name) || shippingAddress.city,
|
80
82
|
quarter: (moduleAddress == null ? void 0 : (_moduleAddress$quarte = moduleAddress.quarter) == null ? void 0 : _moduleAddress$quarte.name) || shippingAddress.quarter,
|
81
83
|
streetName: (moduleAddress == null ? void 0 : (_moduleAddress$street = moduleAddress.street) == null ? void 0 : _moduleAddress$street.name) || shippingAddress.streetName,
|
82
84
|
postalCode: ((_moduleAddress$city$p = moduleAddress == null ? void 0 : (_moduleAddress$city2 = moduleAddress.city) == null ? void 0 : _moduleAddress$city2.postCode) != null ? _moduleAddress$city$p : '') || shippingAddress.postalCode,
|
83
85
|
moduleData: [{
|
84
|
-
moduleKey: mod.moduleKey,
|
85
|
-
moduleData: (0, _extends2["default"])({}, mod.moduleData)
|
86
|
+
moduleKey: mod == null ? void 0 : mod.moduleKey,
|
87
|
+
moduleData: (0, _extends2["default"])({}, mod == null ? void 0 : mod.moduleData)
|
86
88
|
}]
|
87
89
|
});
|
88
90
|
}, [shippingAddress, mod]);
|
89
91
|
var addressErrors = (0, _react.useMemo)(function () {
|
90
|
-
return (0, _utils.validateShipping)(shippingAddressWithModule, mod, errorLabels, validations);
|
92
|
+
return (0, _utils.validateShipping)(shippingAddressWithModule, mod, errorLabels, validations, requiredFields, enableNoShippingMethodMode);
|
91
93
|
}, [shippingAddressWithModule, mod, errorLabels, validations]);
|
92
94
|
/**
|
93
95
|
* Save the current address
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/contexts/CheckoutForm/hooks/useShipping/index.ts"],"names":["IS_NEW","SELECTED_ADDRESS_ID","useShipping","withPersistBeforePageLeave","orderQuery","validations","enableSavedAddressList","errorLabels","enableSaveAddress","autofillShippingPersonalData","userQuery","enabled","countryCode","isShippingSubmitting","setIsShippingSubmitting","addressesApi","useAdd","saveAddress","handleShippingAddressChange","savedShippingAddress","currentShippingAddress","shippingAddress","setShippingAddress","mod","selectedShippingAddress","savedAddressList","hasAvailableSavedAddress","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":["IS_NEW","SELECTED_ADDRESS_ID","useShipping","withPersistBeforePageLeave","orderQuery","validations","enableSavedAddressList","errorLabels","enableSaveAddress","autofillShippingPersonalData","userQuery","enabled","countryCode","requiredFields","enableNoShippingMethodMode","isShippingSubmitting","setIsShippingSubmitting","addressesApi","useAdd","saveAddress","handleShippingAddressChange","savedShippingAddress","currentShippingAddress","shippingAddress","setShippingAddress","mod","selectedShippingAddress","savedAddressList","hasAvailableSavedAddress","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"}
|
@@ -68,7 +68,13 @@ function CheckoutFormContextProvider(_ref) {
|
|
68
68
|
_onError = _ref.onError,
|
69
69
|
isBoricaInDevMode = _ref.isBoricaInDevMode,
|
70
70
|
_ref$withPixelMeta = _ref.withPixelMeta,
|
71
|
-
withPixelMeta = _ref$withPixelMeta === void 0 ? false : _ref$withPixelMeta
|
71
|
+
withPixelMeta = _ref$withPixelMeta === void 0 ? false : _ref$withPixelMeta,
|
72
|
+
_ref$requiredFieldsOn = _ref.requiredFieldsOnShippingStep,
|
73
|
+
requiredFieldsOnShippingStep = _ref$requiredFieldsOn === void 0 ? ['firstName', 'lastName', 'email', 'phoneNumber'] : _ref$requiredFieldsOn,
|
74
|
+
_ref$requiredFieldsOn2 = _ref.requiredFieldsOnBillingAddressStep,
|
75
|
+
requiredFieldsOnBillingAddressStep = _ref$requiredFieldsOn2 === void 0 ? ['city', 'postalCode', 'streetName'] : _ref$requiredFieldsOn2,
|
76
|
+
_ref$enableNoShipping = _ref.enableNoShippingMethodMode,
|
77
|
+
enableNoShippingMethodMode = _ref$enableNoShipping === void 0 ? false : _ref$enableNoShipping;
|
72
78
|
|
73
79
|
var orderQuery = _myCartApi.myCartApi.useGet();
|
74
80
|
|
@@ -138,20 +144,19 @@ function CheckoutFormContextProvider(_ref) {
|
|
138
144
|
autofillShippingPersonalData: Boolean(isAuthenticated && autofillShippingPersonalData),
|
139
145
|
userQuery: userQuery,
|
140
146
|
enabled: isShippingEnabled,
|
141
|
-
countryCode: countryCode
|
147
|
+
countryCode: countryCode,
|
148
|
+
requiredFields: requiredFieldsOnShippingStep,
|
149
|
+
enableNoShippingMethodMode: enableNoShippingMethodMode
|
142
150
|
});
|
143
|
-
|
144
|
-
var _useCheckoutShippingM = (0, _useCheckoutShippingModule.useCheckoutShippingModule)(orderQuery),
|
145
|
-
moduleKey = _useCheckoutShippingM.moduleKey,
|
146
|
-
moduleData = _useCheckoutShippingM.moduleData;
|
151
|
+
var mod = (0, _useCheckoutShippingModule.useCheckoutShippingModule)(orderQuery, !enableNoShippingMethodMode);
|
147
152
|
|
148
153
|
var getIsPaymentMethodsEnabled = function getIsPaymentMethodsEnabled() {
|
149
154
|
if (paymentEnabledOnStep) {
|
150
155
|
return paymentEnabledOnStep === step;
|
151
156
|
}
|
152
157
|
|
153
|
-
if (getPaymentMethodsWhenShippingMethodIsSelected) {
|
154
|
-
return Boolean(moduleKey && moduleData.methodKey);
|
158
|
+
if (!enableNoShippingMethodMode && getPaymentMethodsWhenShippingMethodIsSelected) {
|
159
|
+
return Boolean((mod == null ? void 0 : mod.moduleKey) && (mod == null ? void 0 : mod.moduleData.methodKey));
|
155
160
|
}
|
156
161
|
|
157
162
|
return false;
|
@@ -170,7 +175,9 @@ function CheckoutFormContextProvider(_ref) {
|
|
170
175
|
withSavedBillingAddressList: Boolean(isAuthenticated && enableSavedBillingAddressList),
|
171
176
|
withPersistBeforePageLeave: !isRedirecting && withPersistBeforePageLeave,
|
172
177
|
countryCode: countryCode,
|
173
|
-
enabled: billingEnabledOnStep === step
|
178
|
+
enabled: billingEnabledOnStep === step,
|
179
|
+
requiredFields: requiredFieldsOnBillingAddressStep,
|
180
|
+
requiredFieldsOnShipping: requiredFieldsOnShippingStep
|
174
181
|
});
|
175
182
|
|
176
183
|
var onBeforeBoricaRedirect = function onBeforeBoricaRedirect(data) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/contexts/CheckoutForm/index.tsx"],"names":["CheckoutFormContext","CheckoutFormContextProvider","children","defaultStep","errorLabels","enableSavedAddressList","withPersistBeforePageLeave","shippingValidations","defaultShippingValidations","validateBillingAddress","genericBillingAddressValidation","enableSaveBillingAddress","enableSavedBillingAddressList","countryCode","enableSaveAddress","autofillShippingPersonalData","onSubmit","paymentEnabledOnStep","getPaymentMethodsWhenShippingMethodIsSelected","shippingEnabledOnStep","billingEnabledOnStep","customState","initialCustomState","redirectTimeout","onBeforeRedirect","onSuccess","onError","isBoricaInDevMode","withPixelMeta","orderQuery","myCartApi","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","usersApi","enabled","shippingState","Boolean","validations","moduleKey","moduleData","getIsPaymentMethodsEnabled","methodKey","paymentState","billingState","withSavedBillingAddressList","onBeforeBoricaRedirect","setTimeout","withMeta","handleCheckoutSubmit","scrollToFirstError","interval","setInterval","errorElement","top","clearInterval","handleSubmit","e","preventDefault","Promise","all","persistShippingAddress","persistBillingAddress","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":["CheckoutFormContext","CheckoutFormContextProvider","children","defaultStep","errorLabels","enableSavedAddressList","withPersistBeforePageLeave","shippingValidations","defaultShippingValidations","validateBillingAddress","genericBillingAddressValidation","enableSaveBillingAddress","enableSavedBillingAddressList","countryCode","enableSaveAddress","autofillShippingPersonalData","onSubmit","paymentEnabledOnStep","getPaymentMethodsWhenShippingMethodIsSelected","shippingEnabledOnStep","billingEnabledOnStep","customState","initialCustomState","redirectTimeout","onBeforeRedirect","onSuccess","onError","isBoricaInDevMode","withPixelMeta","requiredFieldsOnShippingStep","requiredFieldsOnBillingAddressStep","enableNoShippingMethodMode","orderQuery","myCartApi","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","usersApi","enabled","shippingState","Boolean","validations","requiredFields","mod","getIsPaymentMethodsEnabled","moduleKey","moduleData","methodKey","paymentState","billingState","withSavedBillingAddressList","requiredFieldsOnShipping","onBeforeBoricaRedirect","setTimeout","withMeta","handleCheckoutSubmit","scrollToFirstError","interval","setInterval","errorElement","top","clearInterval","handleSubmit","e","preventDefault","Promise","all","persistShippingAddress","persistBillingAddress","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"}
|
@@ -10,10 +10,9 @@ var _extends4 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
10
10
|
/* eslint-disable eqeqeq */
|
11
11
|
|
12
12
|
/* eslint-disable prefer-const */
|
13
|
-
var requiredCompanyFields = ['vatId', 'companyId', 'companyPerson', 'companyName'];
|
14
13
|
var requiredFields = ['city', 'postalCode', 'streetName'];
|
15
14
|
|
16
|
-
function genericBillingAddressValidation(data, errorLabels) {
|
15
|
+
function genericBillingAddressValidation(data, errorLabels, requiredCompanyFields) {
|
17
16
|
var isWithInvoice = Boolean(data.company);
|
18
17
|
if (!isWithInvoice) return null;
|
19
18
|
var companyErrors = requiredCompanyFields.reduce(function (errors, field) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../../src/contexts/CheckoutForm/utils/validateBillingAddress.ts"],"names":["
|
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;;AASO,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,UAACC,MAAD,EAASC,KAAT,EAAmB;AAAA;;AACpE,QAAI,EAACT,IAAD,6BAACA,IAAI,CAAEK,OAAP,oCAAC,cAAgBI,KAAhB,CAAD,aAAC,oBAAwBC,IAAxB,EAAD,CAAJ,EAAqC;AAAA;;AACnC,2CAAYF,MAAZ,6BAAqBC,KAArB,IAA6BR,WAAW,CAACU,eAAzC;AACD;;AAED,WAAOH,MAAP;AACD,GANqB,EAMnB,EANmB,CAAtB;AAQA,MAAMI,WAAW,GAAGd,cAAc,CAACS,MAAf,CAAsB,UAACC,MAAD,EAASC,KAAT,EAAmB;AAAA;;AAC3D,QAAI,iBAACT,IAAI,CAACS,KAAD,CAAL,aAAC,YAAaC,IAAb,EAAD,CAAJ,EAA0B;AAAA;;AACxB,2CAAYF,MAAZ,6BAAqBC,KAArB,IAA6BR,WAAW,CAACU,eAAzC;AACD;;AAED,WAAOH,MAAP;AACD,GANmB,EAMjB,EANiB,CAApB;AAQA,MAAMA,MAAM,iCACPF,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"}
|
@@ -12,14 +12,12 @@ exports.defaultShippingValidations = void 0;
|
|
12
12
|
|
13
13
|
var _extends3 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
14
14
|
|
15
|
-
var
|
15
|
+
var _validations2 = require("../../../utils/validations");
|
16
16
|
|
17
17
|
var _api = require("../../../api.v2");
|
18
18
|
|
19
19
|
var _defaultShippingValid;
|
20
20
|
|
21
|
-
var alwaysRequiredField = ['firstName', 'lastName', 'email', 'phoneNumber'];
|
22
|
-
|
23
21
|
function genericAddressValidation(_ref) {
|
24
22
|
var _mod$moduleData, _data$quarter, _data$streetName, _data$additionalAddre;
|
25
23
|
|
@@ -133,11 +131,15 @@ var defaultShippingValidations = (_defaultShippingValid = {}, _defaultShippingVa
|
|
133
131
|
Default: pickupFromStoreValidation
|
134
132
|
}, _defaultShippingValid);
|
135
133
|
exports.defaultShippingValidations = defaultShippingValidations;
|
134
|
+
var defaultRequiredFields = ['firstName', 'lastName', 'email', 'phoneNumber'];
|
136
135
|
|
137
|
-
function validateShipping(data, mod, errorLabels, validations) {
|
138
|
-
|
136
|
+
function validateShipping(data, mod, errorLabels, validations, requiredFields, enableNoShippingMethodMode) {
|
137
|
+
if (requiredFields === void 0) {
|
138
|
+
requiredFields = defaultRequiredFields;
|
139
|
+
}
|
139
140
|
|
140
|
-
var
|
141
|
+
var validateErrors = {};
|
142
|
+
var globalErrors = requiredFields.reduce(function (errors, field) {
|
141
143
|
var _data$field;
|
142
144
|
|
143
145
|
if (!(data != null && (_data$field = data[field]) != null && _data$field.trim != null && _data$field.trim())) {
|
@@ -149,31 +151,36 @@ function validateShipping(data, mod, errorLabels, validations) {
|
|
149
151
|
return errors;
|
150
152
|
}, {});
|
151
153
|
|
152
|
-
if (data != null && data.email && !
|
154
|
+
if (data != null && data.email && !_validations2.emailRegex.test(data.email)) {
|
153
155
|
globalErrors.email = errorLabels.emailIsRequired;
|
154
156
|
}
|
155
157
|
|
156
|
-
if (data != null && data.phoneNumber && !
|
158
|
+
if (data != null && data.phoneNumber && !_validations2.phoneNumberRegex.test(data == null ? void 0 : data.phoneNumber)) {
|
157
159
|
globalErrors.phoneNumber = (errorLabels == null ? void 0 : errorLabels.invalidPhoneNumber) || '';
|
158
160
|
}
|
159
161
|
|
160
|
-
if (!
|
161
|
-
|
162
|
-
courier: errorLabels.selectCourier
|
163
|
-
});
|
164
|
-
}
|
162
|
+
if (!enableNoShippingMethodMode) {
|
163
|
+
var _mod$moduleData5, _validations;
|
165
164
|
|
166
|
-
|
165
|
+
if (!(mod != null && mod.moduleKey) || !(mod != null && (_mod$moduleData5 = mod.moduleData) != null && _mod$moduleData5.methodKey)) {
|
166
|
+
return (0, _extends3["default"])({}, globalErrors, {
|
167
|
+
courier: errorLabels.selectCourier
|
168
|
+
});
|
169
|
+
}
|
170
|
+
|
171
|
+
var validate = (_validations = validations[mod == null ? void 0 : mod.moduleKey]) == null ? void 0 : _validations[mod == null ? void 0 : mod.moduleData.methodKey];
|
172
|
+
|
173
|
+
if (!validate) {
|
174
|
+
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");
|
175
|
+
}
|
167
176
|
|
168
|
-
|
169
|
-
|
177
|
+
validateErrors = validate({
|
178
|
+
data: data,
|
179
|
+
mod: mod,
|
180
|
+
errorLabels: errorLabels
|
181
|
+
}) || {};
|
170
182
|
}
|
171
183
|
|
172
|
-
var validateErrors = validate({
|
173
|
-
data: data,
|
174
|
-
mod: mod,
|
175
|
-
errorLabels: errorLabels
|
176
|
-
}) || {};
|
177
184
|
var errors = (0, _extends3["default"])({}, globalErrors, validateErrors);
|
178
185
|
return Object.keys(errors).length ? errors : null;
|
179
186
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../../src/contexts/CheckoutForm/utils/validateShipping.ts"],"names":["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","ShippingModulesTypeEnum","Speedy","Address","Office","Econt","Evropat","Fan","PickUpFromStore","Default","validateShipping","validations","globalErrors","reduce","field","email","emailRegex","test","emailIsRequired","phoneNumber","phoneNumberRegex","invalidPhoneNumber","moduleKey","methodKey","courier","selectCourier","validate","Error","validateErrors"],"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\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":["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","ShippingModulesTypeEnum","Speedy","Address","Office","Econt","Evropat","Fan","PickUpFromStore","Default","defaultRequiredFields","validateShipping","validations","requiredFields","enableNoShippingMethodMode","validateErrors","globalErrors","reduce","field","email","emailRegex","test","emailIsRequired","phoneNumber","phoneNumberRegex","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"}
|