@shipengine/elements 2.26.4 → 2.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/assets/xcover/logo.svg.cjs +44 -0
- package/dist/cjs/components/field/rate-select/rate-card/rate-attribute-item/index.cjs +7 -0
- package/dist/cjs/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.cjs +56 -0
- package/dist/cjs/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.styles.cjs +27 -0
- package/dist/cjs/components/field/rate-select/rate-card/rate-card.cjs +52 -42
- package/dist/cjs/components/field/rate-select/rate-card/rate-card.styles.cjs +4 -0
- package/dist/cjs/components/field/rate-select/rate-select.cjs +80 -49
- package/dist/cjs/components/forms/register-funding-source-insurance-form/register-funding-source-insurance-form.cjs +1 -1
- package/dist/cjs/components/shipment-not-found-error/shipment-not-found-error.cjs +2 -17
- package/dist/cjs/components/suspend-purchase/suspend-purchase.cjs +3 -3
- package/dist/cjs/data/insurance-provider-metadatas.json.cjs +10 -4
- package/dist/cjs/elements/customs-form/customs-form-element.cjs +294 -0
- package/dist/cjs/elements/customs-form/customs-form-element.stories.cjs +243 -0
- package/dist/cjs/elements/customs-form/customs-form-schema.cjs +59 -0
- package/dist/cjs/elements/customs-form/customs-form-types.cjs +63 -0
- package/dist/cjs/elements/customs-form/index.cjs +10 -0
- package/dist/cjs/elements/index.cjs +5 -0
- package/dist/cjs/elements/manage-carriers/manage-carriers.cjs +1 -1
- package/dist/cjs/elements/purchase-label/components/customs-forms/tax-ids/tax-ids.cjs +1 -1
- package/dist/cjs/elements/purchase-label/components/index.cjs +2 -0
- package/dist/cjs/elements/purchase-label/components/rate-form/rate-view.cjs +1 -1
- package/dist/cjs/elements/purchase-label/components/shipment-form/shipment-form.cjs +4 -3
- package/dist/cjs/elements/purchase-label/hooks/use-filter-visible-rate-options/use-filter-visible-rate-options.cjs +35 -11
- package/dist/cjs/elements/purchase-label/hooks/use-insurance-provider-options.cjs +2 -2
- package/dist/cjs/elements/purchase-label/purchase-label.cjs +1 -7
- package/dist/cjs/factories/shipengine/address.cjs +114 -0
- package/dist/cjs/factories/shipengine/money.cjs +21 -0
- package/dist/cjs/factories/shipengine/order-source.cjs +37 -0
- package/dist/cjs/factories/shipengine/package.cjs +41 -0
- package/dist/cjs/factories/shipengine/resource.cjs +23 -0
- package/dist/cjs/factories/shipengine/shipment.cjs +176 -0
- package/dist/cjs/factories/shipengine/weight.cjs +44 -0
- package/dist/cjs/factories/utils.cjs +19 -0
- package/dist/cjs/features/manage-carriers/hooks/use-list-funding-source-carriers.cjs +4 -6
- package/dist/cjs/features/manage-carriers/manage-carriers.cjs +8 -6
- package/dist/cjs/hooks/use-configure-shipment.cjs +3 -80
- package/dist/cjs/hooks/use-get-funding-source-insurance-provider.cjs +7 -7
- package/dist/cjs/hooks/use-manage-funding-source-insurance.cjs +15 -23
- package/dist/cjs/index.cjs +5 -0
- package/dist/cjs/locales/en/common.json.cjs +2 -2
- package/dist/cjs/locales/en/purchase-label.json.cjs +9 -8
- package/dist/cjs/package.json.cjs +1 -1
- package/dist/cjs/utilities/feature-flags/feature-flags.cjs +1 -0
- package/dist/cjs/utilities/shipengine/carrier.cjs +4 -0
- package/dist/cjs/utilities/shipengine/index.cjs +3 -0
- package/dist/cjs/utilities/shipengine/insurance.cjs +63 -0
- package/dist/cjs/workflows/label-workflow/label-workflow.cjs +2 -26
- package/dist/cjs/workflows/onboarding/components/confirmation-and-submission-step/use-confirmation-and-submission-step.cjs +9 -9
- package/dist/cjs/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.cjs +3 -2
- package/dist/cjs/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.cjs +8 -6
- package/dist/cjs/workflows/onboarding/components/terms-agreement-step/use-terms-agreement-step.cjs +4 -19
- package/dist/esm/assets/xcover/logo.svg.js +23 -0
- package/dist/esm/components/field/rate-select/rate-card/rate-attribute-item/index.js +1 -0
- package/dist/esm/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.js +54 -0
- package/dist/esm/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.styles.js +25 -0
- package/dist/esm/components/field/rate-select/rate-card/rate-card.js +52 -42
- package/dist/esm/components/field/rate-select/rate-card/rate-card.styles.js +4 -0
- package/dist/esm/components/field/rate-select/rate-select.js +80 -49
- package/dist/esm/components/forms/register-funding-source-insurance-form/register-funding-source-insurance-form.js +1 -1
- package/dist/esm/components/shipment-not-found-error/shipment-not-found-error.js +2 -17
- package/dist/esm/components/suspend-purchase/suspend-purchase.js +3 -3
- package/dist/esm/data/insurance-provider-metadatas.json.js +9 -4
- package/dist/esm/elements/customs-form/customs-form-element.js +291 -0
- package/dist/esm/elements/customs-form/customs-form-element.stories.js +232 -0
- package/dist/esm/elements/customs-form/customs-form-schema.js +56 -0
- package/dist/esm/elements/customs-form/customs-form-types.js +60 -0
- package/dist/esm/elements/customs-form/index.js +3 -0
- package/dist/esm/elements/index.js +3 -0
- package/dist/esm/elements/manage-carriers/manage-carriers.js +1 -1
- package/dist/esm/elements/purchase-label/components/customs-forms/tax-ids/tax-ids.js +1 -1
- package/dist/esm/elements/purchase-label/components/index.js +1 -0
- package/dist/esm/elements/purchase-label/components/rate-form/rate-view.js +1 -1
- package/dist/esm/elements/purchase-label/components/shipment-form/shipment-form.js +4 -3
- package/dist/esm/elements/purchase-label/hooks/use-filter-visible-rate-options/use-filter-visible-rate-options.js +35 -11
- package/dist/esm/elements/purchase-label/hooks/use-insurance-provider-options.js +2 -2
- package/dist/esm/elements/purchase-label/purchase-label.js +1 -7
- package/dist/esm/elements-provider/elements-context-provider.js +1 -1
- package/dist/esm/factories/shipengine/address.js +111 -0
- package/dist/esm/factories/shipengine/money.js +19 -0
- package/dist/esm/factories/shipengine/order-source.js +34 -0
- package/dist/esm/factories/shipengine/package.js +39 -0
- package/dist/esm/factories/shipengine/resource.js +21 -0
- package/dist/esm/factories/shipengine/shipment.js +168 -0
- package/dist/esm/factories/shipengine/weight.js +40 -0
- package/dist/esm/factories/utils.js +15 -0
- package/dist/esm/features/manage-carriers/hooks/use-list-funding-source-carriers.js +5 -7
- package/dist/esm/features/manage-carriers/manage-carriers.js +8 -6
- package/dist/esm/hooks/use-configure-shipment.js +3 -80
- package/dist/esm/hooks/use-get-funding-source-insurance-provider.js +7 -7
- package/dist/esm/hooks/use-manage-funding-source-insurance.js +15 -23
- package/dist/esm/index.js +3 -0
- package/dist/esm/locales/en/common.json.js +2 -2
- package/dist/esm/locales/en/purchase-label.json.js +9 -8
- package/dist/esm/package.json.js +1 -1
- package/dist/esm/utilities/feature-flags/feature-flags.js +1 -0
- package/dist/esm/utilities/shipengine/carrier.js +4 -0
- package/dist/esm/utilities/shipengine/index.js +1 -1
- package/dist/esm/utilities/shipengine/insurance.js +61 -1
- package/dist/esm/workflows/label-workflow/label-workflow.js +2 -26
- package/dist/esm/workflows/onboarding/components/confirmation-and-submission-step/use-confirmation-and-submission-step.js +9 -9
- package/dist/esm/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.js +3 -2
- package/dist/esm/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.js +8 -6
- package/dist/esm/workflows/onboarding/components/terms-agreement-step/use-terms-agreement-step.js +5 -20
- package/dist/types/components/field/rate-select/rate-card/rate-attribute-item/index.d.ts +2 -0
- package/dist/types/components/field/rate-select/rate-card/rate-attribute-item/index.d.ts.map +1 -0
- package/dist/types/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.d.ts +8 -0
- package/dist/types/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.d.ts.map +1 -0
- package/dist/types/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.styles.d.ts +22 -0
- package/dist/types/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.styles.d.ts.map +1 -0
- package/dist/types/components/field/rate-select/rate-card/rate-card.d.ts +3 -2
- package/dist/types/components/field/rate-select/rate-card/rate-card.d.ts.map +1 -1
- package/dist/types/components/field/rate-select/rate-card/rate-card.styles.d.ts +4 -0
- package/dist/types/components/field/rate-select/rate-card/rate-card.styles.d.ts.map +1 -1
- package/dist/types/components/field/rate-select/rate-select.d.ts.map +1 -1
- package/dist/types/components/forms/register-funding-source-insurance-form/register-funding-source-insurance-form.d.ts.map +1 -1
- package/dist/types/components/shipment-not-found-error/shipment-not-found-error.d.ts +2 -3
- package/dist/types/components/shipment-not-found-error/shipment-not-found-error.d.ts.map +1 -1
- package/dist/types/components/suspend-purchase/suspend-purchase.d.ts +2 -3
- package/dist/types/components/suspend-purchase/suspend-purchase.d.ts.map +1 -1
- package/dist/types/elements/customs-form/customs-form-element.d.ts +1219 -0
- package/dist/types/elements/customs-form/customs-form-element.d.ts.map +1 -0
- package/dist/types/elements/customs-form/customs-form-element.stories.d.ts +12 -0
- package/dist/types/elements/customs-form/customs-form-element.stories.d.ts.map +1 -0
- package/dist/types/elements/customs-form/customs-form-schema.d.ts +398 -0
- package/dist/types/elements/customs-form/customs-form-schema.d.ts.map +1 -0
- package/dist/types/elements/customs-form/customs-form-types.d.ts +139 -0
- package/dist/types/elements/customs-form/customs-form-types.d.ts.map +1 -0
- package/dist/types/elements/customs-form/index.d.ts +4 -0
- package/dist/types/elements/customs-form/index.d.ts.map +1 -0
- package/dist/types/elements/index.d.ts +1 -0
- package/dist/types/elements/index.d.ts.map +1 -1
- package/dist/types/elements/labels-grid/labels-grid.d.ts +9 -8
- package/dist/types/elements/labels-grid/labels-grid.d.ts.map +1 -1
- package/dist/types/elements/manage-carriers/manage-carriers.d.ts +9 -8
- package/dist/types/elements/manage-carriers/manage-carriers.d.ts.map +1 -1
- package/dist/types/elements/manage-external-carriers/manage-external-carriers.d.ts +9 -8
- package/dist/types/elements/manage-external-carriers/manage-external-carriers.d.ts.map +1 -1
- package/dist/types/elements/manage-funding/manage-funding-element.d.ts +9 -8
- package/dist/types/elements/manage-funding/manage-funding-element.d.ts.map +1 -1
- package/dist/types/elements/manage-warehouses/manage-warehouses.d.ts +9 -8
- package/dist/types/elements/manage-warehouses/manage-warehouses.d.ts.map +1 -1
- package/dist/types/elements/payment-method-settings/payment-method-settings-element.d.ts +9 -8
- package/dist/types/elements/payment-method-settings/payment-method-settings-element.d.ts.map +1 -1
- package/dist/types/elements/purchase-label/components/index.d.ts +1 -0
- package/dist/types/elements/purchase-label/components/index.d.ts.map +1 -1
- package/dist/types/elements/purchase-label/components/shipment-form/shipment-form.d.ts.map +1 -1
- package/dist/types/elements/purchase-label/hooks/use-filter-visible-rate-options/use-filter-visible-rate-options.d.ts +5 -1
- package/dist/types/elements/purchase-label/hooks/use-filter-visible-rate-options/use-filter-visible-rate-options.d.ts.map +1 -1
- package/dist/types/elements/purchase-label/hooks/use-insurance-provider-options.d.ts.map +1 -1
- package/dist/types/elements/purchase-label/purchase-label.d.ts +9 -8
- package/dist/types/elements/purchase-label/purchase-label.d.ts.map +1 -1
- package/dist/types/elements/select-label-layout/select-label-layout-element.d.ts +9 -8
- package/dist/types/elements/select-label-layout/select-label-layout-element.d.ts.map +1 -1
- package/dist/types/elements/shipment-summary/shipment-summary.d.ts +9 -8
- package/dist/types/elements/shipment-summary/shipment-summary.d.ts.map +1 -1
- package/dist/types/elements/shipments-grid/shipments-grid.d.ts +9 -8
- package/dist/types/elements/shipments-grid/shipments-grid.d.ts.map +1 -1
- package/dist/types/elements/theme-creator/theme-creator.d.ts +9 -8
- package/dist/types/elements/theme-creator/theme-creator.d.ts.map +1 -1
- package/dist/types/elements/transaction-history/transaction-history-element.d.ts +9 -8
- package/dist/types/elements/transaction-history/transaction-history-element.d.ts.map +1 -1
- package/dist/types/elements/unit-settings/unit-settings-element.d.ts +9 -8
- package/dist/types/elements/unit-settings/unit-settings-element.d.ts.map +1 -1
- package/dist/types/elements/vat-settings/vat-settings-element.d.ts +9 -8
- package/dist/types/elements/vat-settings/vat-settings-element.d.ts.map +1 -1
- package/dist/types/elements/void-label/void-label.d.ts +9 -8
- package/dist/types/elements/void-label/void-label.d.ts.map +1 -1
- package/dist/types/features/manage-carriers/hooks/use-list-funding-source-carriers.d.ts.map +1 -1
- package/dist/types/features/manage-carriers/manage-carriers.d.ts.map +1 -1
- package/dist/types/hooks/use-configure-shipment.d.ts.map +1 -1
- package/dist/types/hooks/use-get-funding-source-insurance-provider.d.ts.map +1 -1
- package/dist/types/hooks/use-manage-funding-source-insurance.d.ts +3 -4
- package/dist/types/hooks/use-manage-funding-source-insurance.d.ts.map +1 -1
- package/dist/types/locales/en/index.d.ts +9 -8
- package/dist/types/locales/en/index.d.ts.map +1 -1
- package/dist/types/types/insurance-metadata.d.ts +1 -1
- package/dist/types/types/insurance-metadata.d.ts.map +1 -1
- package/dist/types/types/rates.d.ts +1 -0
- package/dist/types/types/rates.d.ts.map +1 -1
- package/dist/types/utilities/feature-flags/feature-flags.d.ts.map +1 -1
- package/dist/types/utilities/feature-flags/types.d.ts +4 -0
- package/dist/types/utilities/feature-flags/types.d.ts.map +1 -1
- package/dist/types/utilities/shipengine/carrier.d.ts.map +1 -1
- package/dist/types/utilities/shipengine/insurance.d.ts +31 -0
- package/dist/types/utilities/shipengine/insurance.d.ts.map +1 -1
- package/dist/types/workflows/account-settings/account-settings.d.ts +9 -8
- package/dist/types/workflows/account-settings/account-settings.d.ts.map +1 -1
- package/dist/types/workflows/carrier-services/carrier-services.d.ts +9 -8
- package/dist/types/workflows/carrier-services/carrier-services.d.ts.map +1 -1
- package/dist/types/workflows/connect-external-carrier/connect-external-carrier.d.ts +9 -8
- package/dist/types/workflows/connect-external-carrier/connect-external-carrier.d.ts.map +1 -1
- package/dist/types/workflows/label-workflow/label-workflow.d.ts +9 -8
- package/dist/types/workflows/label-workflow/label-workflow.d.ts.map +1 -1
- package/dist/types/workflows/onboarding/components/confirmation-and-submission-step/use-confirmation-and-submission-step.d.ts.map +1 -1
- package/dist/types/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.d.ts.map +1 -1
- package/dist/types/workflows/onboarding/components/terms-agreement-step/use-terms-agreement-step.d.ts +1 -5
- package/dist/types/workflows/onboarding/components/terms-agreement-step/use-terms-agreement-step.d.ts.map +1 -1
- package/dist/types/workflows/onboarding/onboarding.d.ts +9 -8
- package/dist/types/workflows/onboarding/onboarding.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -38,12 +38,10 @@ const useListFundingSourceCarriers = () => {
|
|
|
38
38
|
//TODO: Remove hardcoded carrierMetadata and insuranceProviderMetadata when the friendlyName is available in the funding source metadata response
|
|
39
39
|
const carrierMetadata = useCarrierMetadata.useCarrierMetadata();
|
|
40
40
|
const insuranceProviderProfiles = React.useMemo(() => {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}, insurance.getInsuranceProviderWithFriendlyName(t.termType));
|
|
46
|
-
});
|
|
41
|
+
const groupedProfiles = insurance.groupTermsByProvider(optionalTerms);
|
|
42
|
+
return groupedProfiles.map(profile => Object.assign(Object.assign({}, profile), {
|
|
43
|
+
agreedToTerms: profile.terms.some(term => insurance.getIsInsuraceProviderAccepted(term.termType, insuranceProviderAcceptedTerms === null || insuranceProviderAcceptedTerms === void 0 ? void 0 : insuranceProviderAcceptedTerms.acceptedTerms))
|
|
44
|
+
}));
|
|
47
45
|
}, [optionalTerms, insuranceProviderAcceptedTerms]);
|
|
48
46
|
const normalizeCarrierCode = (carrierCode, nickname) => carrierCode === "usps" || (nickname === null || nickname === void 0 ? void 0 : nickname.includes("free")) ? "stamps_com" : carrierCode;
|
|
49
47
|
const normalizeConnectedCarrierCodes = new Set(connectedCarriers === null || connectedCarriers === void 0 ? void 0 : connectedCarriers.map(c => normalizeCarrierCode(c.carrierCode, c.nickname)));
|
|
@@ -10,6 +10,7 @@ var React = require('react');
|
|
|
10
10
|
var reactI18next = require('react-i18next');
|
|
11
11
|
var manageCarriers_styles = require('./manage-carriers.styles.cjs');
|
|
12
12
|
var useListFundingSourceCarriers = require('./hooks/use-list-funding-source-carriers.cjs');
|
|
13
|
+
var insurance = require('../../utilities/shipengine/insurance.cjs');
|
|
13
14
|
var skeletonCarrierRow = require('../../components/skeleton/skeleton-carrier-row.cjs');
|
|
14
15
|
var manageFunding = require('../manage-funding/manage-funding.cjs');
|
|
15
16
|
var manageCarriersRow = require('./manage-carriers-row/manage-carriers-row.cjs');
|
|
@@ -43,6 +44,7 @@ const ShipEngineCarriers = ({
|
|
|
43
44
|
refetch: refetchCarriers,
|
|
44
45
|
refetchInsuranceProviderAcceptedTerms
|
|
45
46
|
} = useListFundingSourceCarriers.useListFundingSourceCarriers();
|
|
47
|
+
const isInsuranceEnabled = insurance.getIsFundingSourceInsuranceProviderEnabledAndSupported(insuranceProviderProfiles, globalFeatures.enableXCover, globalFeatures.enableParcelGuard);
|
|
46
48
|
const hasConnectedCarriers = React.useMemo(() => fundingSourceCarriers === null || fundingSourceCarriers === void 0 ? void 0 : fundingSourceCarriers.some(c => c.isConnected), [fundingSourceCarriers]);
|
|
47
49
|
const {
|
|
48
50
|
data: warehouses
|
|
@@ -103,10 +105,10 @@ const ShipEngineCarriers = ({
|
|
|
103
105
|
const handleRegisterProvider = React.useCallback(p => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
104
106
|
return yield handleRegistration({
|
|
105
107
|
insuranceProviders: [{
|
|
106
|
-
acceptedTerms: [{
|
|
107
|
-
termType:
|
|
108
|
-
version:
|
|
109
|
-
}],
|
|
108
|
+
acceptedTerms: [...p.terms.map(term => ({
|
|
109
|
+
termType: term.termType,
|
|
110
|
+
version: term.version
|
|
111
|
+
}))],
|
|
110
112
|
agreeToTerms: true,
|
|
111
113
|
fundingSourceId: fundingSourceId !== null && fundingSourceId !== void 0 ? fundingSourceId : "",
|
|
112
114
|
provider: p.provider
|
|
@@ -178,12 +180,12 @@ const ShipEngineCarriers = ({
|
|
|
178
180
|
}),
|
|
179
181
|
setCarrierToConnect: setCarrierToConnect
|
|
180
182
|
})
|
|
181
|
-
}, carrier.carrier.carrierProfile.carrierCode)),
|
|
183
|
+
}, carrier.carrier.carrierProfile.carrierCode)), isInsuranceEnabled && (insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles.map(p => jsxRuntime.jsx("li", {
|
|
182
184
|
children: jsxRuntime.jsx(manageInsuranceProviderRow.ManageInsuranceProviderRow, {
|
|
183
185
|
insuranceProviderProfile: p,
|
|
184
186
|
registerProvider: handleRegisterProvider
|
|
185
187
|
})
|
|
186
|
-
}, p.terms.termType)))]
|
|
188
|
+
}, p.terms[0].termType)))]
|
|
187
189
|
})
|
|
188
190
|
})]
|
|
189
191
|
});
|
|
@@ -221,83 +221,7 @@ const useConfigureShipment = ({
|
|
|
221
221
|
if (isInitialLoadingCarriers || isFetchingCarriers) return;
|
|
222
222
|
if ((carriers === null || carriers === void 0 ? void 0 : carriers.length) === 0) incompleteRequirementsKeys.push("no_carriers");
|
|
223
223
|
}, [carriers, incompleteRequirementsKeys, isFetchingCarriers, isInitialLoadingCarriers]);
|
|
224
|
-
const
|
|
225
|
-
if (isSalesOrderLoading) return true;
|
|
226
|
-
if (listSalesOrderShipmentsInitiallyLoading) return true;
|
|
227
|
-
if (listSalesOrderShipmentsIsFetching) return true;
|
|
228
|
-
if (creatingSalesOrderShipment) return true;
|
|
229
|
-
if (creatingV1Shipment) return true;
|
|
230
|
-
// Include external shipment loading states to prevent premature error display
|
|
231
|
-
// Only keep loading if we're actually fetching and don't have an error yet
|
|
232
|
-
// Skip this check if we already have an error to avoid infinite loading
|
|
233
|
-
if (externalShipmentId && isExternalShipmentFetching && !getExternalShipmentErrors && !isExternalShipmentInitialLoading) {
|
|
234
|
-
return true;
|
|
235
|
-
}
|
|
236
|
-
// Check if this is a one-off flow (no identifiers provided)
|
|
237
|
-
const isOneOffFlow = !salesOrderId && !externalOrderId && !externalOrderNumber && !orderSourceCode && !shipmentId && !externalShipmentId;
|
|
238
|
-
// For one-off flow, keep loading until we have shipment data or V1 creation is complete
|
|
239
|
-
if (isOneOffFlow && !pendingSalesOrderShipment && !labelPurchasedSalesOrderShipment) {
|
|
240
|
-
return true;
|
|
241
|
-
}
|
|
242
|
-
// Only consider empty salesOrderShipments array as loading if we're not initially loading and have valid identifiers
|
|
243
|
-
const shouldReturnTrueForEmptyShipments = (salesOrderShipments === null || salesOrderShipments === void 0 ? void 0 : salesOrderShipments.length) === 0 && !listSalesOrderShipmentsInitiallyLoading && !listSalesOrderShipmentsIsFetching;
|
|
244
|
-
if (shouldReturnTrueForEmptyShipments) {
|
|
245
|
-
return true;
|
|
246
|
-
}
|
|
247
|
-
return false;
|
|
248
|
-
}, [isSalesOrderLoading, listSalesOrderShipmentsInitiallyLoading, listSalesOrderShipmentsIsFetching, creatingSalesOrderShipment, creatingV1Shipment, isExternalShipmentInitialLoading, isExternalShipmentFetching, getExternalShipmentErrors,
|
|
249
|
-
// This was missing!
|
|
250
|
-
salesOrderId, externalOrderId, externalOrderNumber, orderSourceCode, shipmentId, externalShipmentId, pendingSalesOrderShipment, labelPurchasedSalesOrderShipment, salesOrderShipments === null || salesOrderShipments === void 0 ? void 0 : salesOrderShipments.length]);
|
|
251
|
-
// #region Custom Error Mapping
|
|
252
|
-
const hasGetShipmentErrors = React.useMemo(() => {
|
|
253
|
-
// Check for explicit API errors
|
|
254
|
-
if (listSalesOrderShipmentsErrors) return true;
|
|
255
|
-
if (getExternalShipmentErrors) return true;
|
|
256
|
-
if (importSalesOrderErrors) return true;
|
|
257
|
-
// Only treat empty results as error if we're not loading and have finished initial fetch
|
|
258
|
-
if ((salesOrderShipments === null || salesOrderShipments === void 0 ? void 0 : salesOrderShipments.length) === 0 && shipmentId && !listSalesOrderShipmentsInitiallyLoading && !listSalesOrderShipmentsIsFetching) {
|
|
259
|
-
return true;
|
|
260
|
-
}
|
|
261
|
-
return false;
|
|
262
|
-
}, [listSalesOrderShipmentsErrors, getExternalShipmentErrors, importSalesOrderErrors, salesOrderShipments === null || salesOrderShipments === void 0 ? void 0 : salesOrderShipments.length, shipmentId, listSalesOrderShipmentsInitiallyLoading, listSalesOrderShipmentsIsFetching]);
|
|
263
|
-
const hasValidShipmentData = React.useMemo(() => {
|
|
264
|
-
if (manuallyCreatedShipmentId) return true;
|
|
265
|
-
if (pendingSalesOrderShipment) return true;
|
|
266
|
-
if (labelPurchasedSalesOrderShipment) return true;
|
|
267
|
-
return false;
|
|
268
|
-
}, [labelPurchasedSalesOrderShipment, manuallyCreatedShipmentId, pendingSalesOrderShipment]);
|
|
269
|
-
const showShipmentNotFoundError = React.useMemo(() => {
|
|
270
|
-
// Don't show error if we have a manually created shipment
|
|
271
|
-
if (manuallyCreatedShipmentId) {
|
|
272
|
-
return false;
|
|
273
|
-
}
|
|
274
|
-
// Don't show error if we're creating a V1 shipment
|
|
275
|
-
if (creatingV1Shipment || newV1Shipment) {
|
|
276
|
-
return false;
|
|
277
|
-
}
|
|
278
|
-
// For external shipment ID, show error if we're not in loading state
|
|
279
|
-
// and we don't have valid shipment data
|
|
280
|
-
if (externalShipmentId && !isConfigureShipmentLoading && !hasValidShipmentData) {
|
|
281
|
-
return true;
|
|
282
|
-
}
|
|
283
|
-
// Don't show error if external shipment is still loading, unless we have explicit errors
|
|
284
|
-
if (externalShipmentId && (isExternalShipmentInitialLoading || isExternalShipmentFetching) && !getExternalShipmentErrors) {
|
|
285
|
-
return false;
|
|
286
|
-
}
|
|
287
|
-
// Show error immediately if we have shipment errors, even if still loading
|
|
288
|
-
if (hasGetShipmentErrors) {
|
|
289
|
-
return true;
|
|
290
|
-
}
|
|
291
|
-
// Check if this is a one-off flow (no identifiers provided)
|
|
292
|
-
const isOneOffFlow = !salesOrderId && !externalOrderId && !externalOrderNumber && !orderSourceCode && !shipmentId && !externalShipmentId;
|
|
293
|
-
// Don't show error for one-off flow until we've attempted shipment creation
|
|
294
|
-
if (isOneOffFlow && !v1shipmentCreated) {
|
|
295
|
-
return false;
|
|
296
|
-
}
|
|
297
|
-
// Otherwise, only show if not loading and no valid shipment data
|
|
298
|
-
return !isConfigureShipmentLoading && !hasValidShipmentData;
|
|
299
|
-
}, [manuallyCreatedShipmentId, creatingV1Shipment, newV1Shipment, hasGetShipmentErrors, isExternalShipmentInitialLoading, isExternalShipmentFetching, getExternalShipmentErrors, listSalesOrderShipmentsErrors, importSalesOrderErrors, salesOrderId, externalOrderId, externalOrderNumber, orderSourceCode, shipmentId, externalShipmentId, v1shipmentCreated, isConfigureShipmentLoading, hasValidShipmentData, pendingSalesOrderShipment, externalShipment]);
|
|
300
|
-
const errors = [...(listWarehouseErrors !== null && listWarehouseErrors !== void 0 ? listWarehouseErrors : []), ...(createSalesOrderShipmentErrors !== null && createSalesOrderShipmentErrors !== void 0 ? createSalesOrderShipmentErrors : []), ...(createV1ShipmentErrors !== null && createV1ShipmentErrors !== void 0 ? createV1ShipmentErrors : []), ...(errorWhenShipmentCancelled && cancelledShipment ? [new reactApi.CodedError("shipment_cancelled", {
|
|
224
|
+
const errors = [...(listWarehouseErrors !== null && listWarehouseErrors !== void 0 ? listWarehouseErrors : []), ...(createSalesOrderShipmentErrors !== null && createSalesOrderShipmentErrors !== void 0 ? createSalesOrderShipmentErrors : []), ...(createV1ShipmentErrors !== null && createV1ShipmentErrors !== void 0 ? createV1ShipmentErrors : []), ...(listSalesOrderShipmentsErrors !== null && listSalesOrderShipmentsErrors !== void 0 ? listSalesOrderShipmentsErrors : []), ...(getExternalShipmentErrors !== null && getExternalShipmentErrors !== void 0 ? getExternalShipmentErrors : []), ...(importSalesOrderErrors !== null && importSalesOrderErrors !== void 0 ? importSalesOrderErrors : []), ...(errorWhenShipmentCancelled && cancelledShipment ? [new reactApi.CodedError("shipment_cancelled", {
|
|
301
225
|
errorCode: "invalid_status",
|
|
302
226
|
errorSource: "elements",
|
|
303
227
|
errorType: "business_rules"
|
|
@@ -309,17 +233,16 @@ const useConfigureShipment = ({
|
|
|
309
233
|
errorCode: "unknown",
|
|
310
234
|
errorSource: "elements",
|
|
311
235
|
errorType: "business_rules"
|
|
312
|
-
})] : []), ...(
|
|
236
|
+
})] : []), ...((salesOrderShipments === null || salesOrderShipments === void 0 ? void 0 : salesOrderShipments.length) === 0 && shipmentId ? [new reactApi.CodedError("shipment_not_found", {
|
|
313
237
|
errorCode: "invalid_status",
|
|
314
238
|
errorSource: "elements",
|
|
315
239
|
errorType: "business_rules"
|
|
316
240
|
})] : [])];
|
|
317
|
-
// #endregion
|
|
318
241
|
return {
|
|
319
242
|
carriers,
|
|
320
243
|
createNewShipmentForNotFound,
|
|
321
244
|
errors: errors.length > 0 ? errors : undefined,
|
|
322
|
-
isLoading:
|
|
245
|
+
isLoading: (isSalesOrderLoading || !(salesOrderShipments === null || salesOrderShipments === void 0 ? void 0 : salesOrderShipments.length) || creatingSalesOrderShipment) && errors.length === 0,
|
|
323
246
|
refetchPendingSalesOrderShipments,
|
|
324
247
|
salesOrder: salesOrder$1,
|
|
325
248
|
shipment: pendingSalesOrderShipment !== null && pendingSalesOrderShipment !== void 0 ? pendingSalesOrderShipment : labelPurchasedSalesOrderShipment,
|
|
@@ -16,14 +16,15 @@ var elementsContextProvider = require('../elements-provider/elements-context-pro
|
|
|
16
16
|
const useGetFundingSourceInsuranceProvider = () => {
|
|
17
17
|
const {
|
|
18
18
|
globalFeatures: {
|
|
19
|
-
enableParcelGuard
|
|
19
|
+
enableParcelGuard,
|
|
20
|
+
enableXCover
|
|
20
21
|
}
|
|
21
22
|
} = elementsContextProvider.useElements();
|
|
22
23
|
const {
|
|
23
24
|
data,
|
|
24
25
|
refetch: refetchInsuranceAcceptedTerms
|
|
25
26
|
} = reactApi.useGetInsuranceFundingSourceAcceptedTerms({
|
|
26
|
-
enabled: enableParcelGuard
|
|
27
|
+
enabled: enableParcelGuard || enableXCover
|
|
27
28
|
});
|
|
28
29
|
const fundingSourceInsuranceProvider = React.useMemo(() => {
|
|
29
30
|
var _a;
|
|
@@ -32,13 +33,12 @@ const useGetFundingSourceInsuranceProvider = () => {
|
|
|
32
33
|
if (enableParcelGuard && term.termType === "parcelguard_terms") {
|
|
33
34
|
provider = "parcelguard";
|
|
34
35
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
// }
|
|
36
|
+
if (enableXCover && term.termType === "xcover_terms") {
|
|
37
|
+
provider = "x_cover";
|
|
38
|
+
}
|
|
39
39
|
});
|
|
40
40
|
return provider;
|
|
41
|
-
}, [data, enableParcelGuard]);
|
|
41
|
+
}, [data === null || data === void 0 ? void 0 : data.acceptedTerms, enableParcelGuard, enableXCover]);
|
|
42
42
|
return {
|
|
43
43
|
fundingSourceInsuranceProvider,
|
|
44
44
|
refetchInsuranceAcceptedTerms
|
|
@@ -2,14 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
var _tslib = require('../_virtual/_tslib.cjs');
|
|
4
4
|
var reactApi = require('@shipengine/react-api');
|
|
5
|
+
var insurance = require('../utilities/shipengine/insurance.cjs');
|
|
5
6
|
var React = require('react');
|
|
6
7
|
var elementsContextProvider = require('../elements-provider/elements-context-provider.cjs');
|
|
7
8
|
|
|
8
9
|
const useManageFundingSourceInsurance = () => {
|
|
9
|
-
var _a;
|
|
10
|
+
var _a, _b;
|
|
10
11
|
const {
|
|
11
12
|
globalFeatures: {
|
|
12
|
-
enableParcelGuard
|
|
13
|
+
enableParcelGuard,
|
|
14
|
+
enableXCover
|
|
13
15
|
}
|
|
14
16
|
} = elementsContextProvider.useElements();
|
|
15
17
|
const {
|
|
@@ -21,25 +23,12 @@ const useManageFundingSourceInsurance = () => {
|
|
|
21
23
|
data: insuranceAcceptedTerms,
|
|
22
24
|
isLoading: loadingInsuranceAcceptedTerms
|
|
23
25
|
} = reactApi.useGetInsuranceFundingSourceAcceptedTerms({
|
|
24
|
-
enabled: enableParcelGuard
|
|
26
|
+
enabled: enableParcelGuard || enableXCover
|
|
25
27
|
});
|
|
26
28
|
const insuranceProviderProfiles = React.useMemo(() => {
|
|
27
29
|
var _a;
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
parcelguard_terms: "parcelguard"
|
|
31
|
-
};
|
|
32
|
-
const friendlyNameLookup = {
|
|
33
|
-
parcelguard_terms: "ParcelGuard"
|
|
34
|
-
};
|
|
35
|
-
const provider = providerLookup[terms.termType];
|
|
36
|
-
const friendlyName = friendlyNameLookup[terms.termType];
|
|
37
|
-
return {
|
|
38
|
-
friendlyName,
|
|
39
|
-
provider,
|
|
40
|
-
terms
|
|
41
|
-
};
|
|
42
|
-
});
|
|
30
|
+
const optionalTerms = (_a = fundingSourceMetadata === null || fundingSourceMetadata === void 0 ? void 0 : fundingSourceMetadata.data) === null || _a === void 0 ? void 0 : _a.defaultFundingSourceProfile.optionalTerms;
|
|
31
|
+
return insurance.groupTermsByProvider(optionalTerms);
|
|
43
32
|
}, [fundingSourceMetadata]);
|
|
44
33
|
const {
|
|
45
34
|
mutateAsync: registerCarrier
|
|
@@ -79,12 +68,15 @@ const useManageFundingSourceInsurance = () => {
|
|
|
79
68
|
}
|
|
80
69
|
}), [fundingSources, insuranceProviderProfiles, registerCarrier]);
|
|
81
70
|
const hasInsuranceToRegister = React.useMemo(() => {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
71
|
+
var _a, _b;
|
|
72
|
+
const isProviderEnabled = insurance.getIsFundingSourceInsuranceProviderEnabledAndSupported(insuranceProviderProfiles, enableXCover, enableParcelGuard);
|
|
73
|
+
const hasProfiles = Boolean(insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles.length);
|
|
74
|
+
const hasNoAcceptedTerms = ((_b = (_a = insuranceAcceptedTerms === null || insuranceAcceptedTerms === void 0 ? void 0 : insuranceAcceptedTerms.acceptedTerms) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) === 0;
|
|
75
|
+
const hasFundingSources = Boolean(fundingSources === null || fundingSources === void 0 ? void 0 : fundingSources.length);
|
|
76
|
+
return isProviderEnabled && hasProfiles && hasNoAcceptedTerms && hasFundingSources;
|
|
77
|
+
}, [insuranceProviderProfiles, enableXCover, enableParcelGuard, (_a = insuranceAcceptedTerms === null || insuranceAcceptedTerms === void 0 ? void 0 : insuranceAcceptedTerms.acceptedTerms) === null || _a === void 0 ? void 0 : _a.length, fundingSources === null || fundingSources === void 0 ? void 0 : fundingSources.length]);
|
|
86
78
|
return {
|
|
87
|
-
fundingSourceCountryCode: (
|
|
79
|
+
fundingSourceCountryCode: (_b = fundingSourceMetadata === null || fundingSourceMetadata === void 0 ? void 0 : fundingSourceMetadata.data) === null || _b === void 0 ? void 0 : _b.defaultFundingSourceProfile.countryCode,
|
|
88
80
|
hasInsuranceToRegister,
|
|
89
81
|
insuranceAcceptedTerms: insuranceAcceptedTerms === null || insuranceAcceptedTerms === void 0 ? void 0 : insuranceAcceptedTerms.acceptedTerms,
|
|
90
82
|
insuranceProviderProfiles,
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -22,6 +22,8 @@ var selectLabelLayoutElement = require('./elements/select-label-layout/select-la
|
|
|
22
22
|
var paymentMethodSettingsElement = require('./elements/payment-method-settings/payment-method-settings-element.cjs');
|
|
23
23
|
var carrierServices = require('./workflows/carrier-services/carrier-services.cjs');
|
|
24
24
|
var transactionHistoryElement = require('./elements/transaction-history/transaction-history-element.cjs');
|
|
25
|
+
var customsFormElement = require('./elements/customs-form/customs-form-element.cjs');
|
|
26
|
+
var customsFormTypes = require('./elements/customs-form/customs-form-types.cjs');
|
|
25
27
|
var useAddressValidation = require('./hooks/use-address-validation.cjs');
|
|
26
28
|
var useHelpers = require('./hooks/use-helpers.cjs');
|
|
27
29
|
var useConfigureShipment = require('./hooks/use-configure-shipment.cjs');
|
|
@@ -77,6 +79,9 @@ exports.SelectLabelLayout = selectLabelLayoutElement;
|
|
|
77
79
|
exports.PaymentMethodSettings = paymentMethodSettingsElement;
|
|
78
80
|
exports.CarrierServices = carrierServices;
|
|
79
81
|
exports.TransactionHistory = transactionHistoryElement;
|
|
82
|
+
exports.CustomsForm = customsFormElement;
|
|
83
|
+
exports.extractCustomsFormData = customsFormTypes.extractCustomsFormData;
|
|
84
|
+
exports.getDefaultCustomsFormValues = customsFormTypes.getDefaultCustomsFormValues;
|
|
80
85
|
exports.useAddressValidation = useAddressValidation.useAddressValidation;
|
|
81
86
|
exports.useHelpers = useHelpers.useHelpers;
|
|
82
87
|
exports.useConfigureShipment = useConfigureShipment.useConfigureShipment;
|
|
@@ -170,7 +170,7 @@ var common = {
|
|
|
170
170
|
invalidNameOrCompany: "Recipient name and company name (if provided) must have two characters in first and last name.",
|
|
171
171
|
parsingFailure: "Parsing failed. Please check address and try again.",
|
|
172
172
|
incompleteLabelPurchaseRequirements: "Please add your {{requirements}} to continue purchasing a label.",
|
|
173
|
-
shipmentNotFound: "Cannot find
|
|
173
|
+
shipmentNotFound: "Cannot find shipment with ID: {{id}}.",
|
|
174
174
|
shipmentCancelled: "This shipment is Cancelled in ShipStation. Log into ShipStation to restore the order to Awaiting Shipment status.",
|
|
175
175
|
unableToLoad: {
|
|
176
176
|
accountSettings: "Unable to load account settings",
|
|
@@ -248,7 +248,7 @@ var common = {
|
|
|
248
248
|
parcelguard: "ParcelGuard",
|
|
249
249
|
shipsurance: "Shipsurance",
|
|
250
250
|
thirdParty: "Third Party",
|
|
251
|
-
|
|
251
|
+
xCover: "XCover"
|
|
252
252
|
},
|
|
253
253
|
loading: {
|
|
254
254
|
accountSettings: "Loading account settings...",
|
|
@@ -32,13 +32,6 @@ var purchaseLabel = {
|
|
|
32
32
|
saveRateFailedMessage: "Saving DHL Express Worldwide rates is temporarily unavailable. Please try again later.",
|
|
33
33
|
saveRateFailedTitle: "Unable To Save Rate"
|
|
34
34
|
},
|
|
35
|
-
identifierTypes: {
|
|
36
|
-
externalOrderId: "External Order ID",
|
|
37
|
-
externalOrderNumber: "External Order Number",
|
|
38
|
-
externalShipmentId: "External Shipment ID",
|
|
39
|
-
salesOrderId: "Sales Order ID",
|
|
40
|
-
shipmentId: "Shipment ID"
|
|
41
|
-
},
|
|
42
35
|
errorTypes: {
|
|
43
36
|
results: "No results returned"
|
|
44
37
|
},
|
|
@@ -100,7 +93,15 @@ var purchaseLabel = {
|
|
|
100
93
|
rateSavings: "Save ${{amount}}",
|
|
101
94
|
upsGroundSaverTermsAcknowledgement: "To start shipping with UPS Ground Saver, you are confirming that you have agreed to the <1>terms and conditions</1>",
|
|
102
95
|
dhlExpressTermsAcknowledgement: "To start shipping with DHL, you are confirming that you have agreed to the <1>terms and conditions</1>",
|
|
103
|
-
noRateService: "Rate and services will be billed based on carrier."
|
|
96
|
+
noRateService: "Rate and services will be billed based on carrier.",
|
|
97
|
+
rateAttributes: {
|
|
98
|
+
bestValue: "Best Value",
|
|
99
|
+
cheapest: "Cheapest",
|
|
100
|
+
fastest: "Fastest",
|
|
101
|
+
bestValueTooltip: "Lowest cost option arriving on a specified date within 4 days, with free carrier coverage up to $100 and a free dropoff option.",
|
|
102
|
+
cheapestTooltip: "Lowest cost option.",
|
|
103
|
+
fastestTooltip: "Fastest delivery option."
|
|
104
|
+
}
|
|
104
105
|
},
|
|
105
106
|
windsorFramework: {
|
|
106
107
|
movementIndicator: "Movement Indicator",
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var icon = require('../../assets/parcelguard/icon.svg.cjs');
|
|
4
4
|
var logo = require('../../assets/parcelguard/logo.svg.cjs');
|
|
5
|
+
var logo$1 = require('../../assets/xcover/logo.svg.cjs');
|
|
5
6
|
|
|
6
7
|
const USPS_CARRIER_CODES = ["usps", "stamps_com"];
|
|
7
8
|
/**
|
|
@@ -59,6 +60,9 @@ const getLogoOrIconByCarrierCode = (carrierCode, type) => {
|
|
|
59
60
|
if (carrierCode === "parcelguard") {
|
|
60
61
|
return type === "logo" ? logo : icon;
|
|
61
62
|
}
|
|
63
|
+
if (carrierCode === "xcover") {
|
|
64
|
+
return logo$1;
|
|
65
|
+
}
|
|
62
66
|
const carrierCodeOverrides = {
|
|
63
67
|
stamps_com: "stamps_com_wl",
|
|
64
68
|
usps: "stamps_com_wl"
|
|
@@ -54,5 +54,8 @@ exports.isMetricWeightUnit = weight.isMetricWeightUnit;
|
|
|
54
54
|
exports.isFlatRatePackageCode = _package.isFlatRatePackageCode;
|
|
55
55
|
exports.getDefaultWarehouse = warehouses.getDefaultWarehouse;
|
|
56
56
|
exports.getWarehouseById = warehouses.getWarehouseById;
|
|
57
|
+
exports.filterProfilesByAcceptedTerms = insurance.filterProfilesByAcceptedTerms;
|
|
57
58
|
exports.getInsuranceProviderWithFriendlyName = insurance.getInsuranceProviderWithFriendlyName;
|
|
59
|
+
exports.getIsFundingSourceInsuranceProviderEnabledAndSupported = insurance.getIsFundingSourceInsuranceProviderEnabledAndSupported;
|
|
58
60
|
exports.getIsInsuraceProviderAccepted = insurance.getIsInsuraceProviderAccepted;
|
|
61
|
+
exports.groupTermsByProvider = insurance.groupTermsByProvider;
|
|
@@ -12,6 +12,22 @@ var insuranceProviderMetadatas = require('../../data/insurance-provider-metadata
|
|
|
12
12
|
const getInsuranceProviderWithFriendlyName = termType => {
|
|
13
13
|
return insuranceProviderMetadatas.default[termType];
|
|
14
14
|
};
|
|
15
|
+
/**
|
|
16
|
+
* @internal
|
|
17
|
+
*
|
|
18
|
+
* # Insurance Utilities - getIsFundingSourceInsuranceProviderEnabledAndSupported
|
|
19
|
+
*
|
|
20
|
+
* Determines if any insurance providers are enabled and supported based on feature flags and funding source data.
|
|
21
|
+
*
|
|
22
|
+
* @category Utilities
|
|
23
|
+
*/
|
|
24
|
+
const getIsFundingSourceInsuranceProviderEnabledAndSupported = (insuranceProviders, xcoverEnabled, parcelguardEnabled) => {
|
|
25
|
+
if (!(insuranceProviders === null || insuranceProviders === void 0 ? void 0 : insuranceProviders.length)) return false;
|
|
26
|
+
const supportedProviders = insuranceProviders.map(p => p.provider);
|
|
27
|
+
if (xcoverEnabled && supportedProviders.includes("xcover")) return true;
|
|
28
|
+
if (parcelguardEnabled && supportedProviders.includes("parcelguard")) return true;
|
|
29
|
+
return false;
|
|
30
|
+
};
|
|
15
31
|
/**
|
|
16
32
|
* @internal
|
|
17
33
|
*
|
|
@@ -22,6 +38,53 @@ const getInsuranceProviderWithFriendlyName = termType => {
|
|
|
22
38
|
const getIsInsuraceProviderAccepted = (termType, acceptedTerms) => {
|
|
23
39
|
return !!(acceptedTerms === null || acceptedTerms === void 0 ? void 0 : acceptedTerms.map(t => t.termType).includes(termType));
|
|
24
40
|
};
|
|
41
|
+
/**
|
|
42
|
+
* @internal
|
|
43
|
+
*
|
|
44
|
+
* # Insurance Utilities - groupTermsByProvider
|
|
45
|
+
*
|
|
46
|
+
* Groups optional terms by insurance provider, creating InsuranceProviderProfile objects.
|
|
47
|
+
*
|
|
48
|
+
* @category Utilities
|
|
49
|
+
*/
|
|
50
|
+
const groupTermsByProvider = optionalTerms => {
|
|
51
|
+
if (!optionalTerms) return [];
|
|
52
|
+
// Group terms by provider
|
|
53
|
+
const providerTermsMap = new Map();
|
|
54
|
+
optionalTerms.forEach(term => {
|
|
55
|
+
const providerInfo = getInsuranceProviderWithFriendlyName(term.termType);
|
|
56
|
+
if (providerInfo === null || providerInfo === void 0 ? void 0 : providerInfo.provider) {
|
|
57
|
+
const existingTerms = providerTermsMap.get(providerInfo.provider) || [];
|
|
58
|
+
providerTermsMap.set(providerInfo.provider, [...existingTerms, term]);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
// Convert Map to InsuranceProviderProfile array
|
|
62
|
+
return Array.from(providerTermsMap.entries()).map(([, terms]) => {
|
|
63
|
+
const providerInfo = getInsuranceProviderWithFriendlyName(terms[0].termType);
|
|
64
|
+
return Object.assign(Object.assign({}, providerInfo), {
|
|
65
|
+
terms
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* @internal
|
|
71
|
+
*
|
|
72
|
+
* # Insurance Utilities - filterProfilesByAcceptedTerms
|
|
73
|
+
*
|
|
74
|
+
* Filters insurance provider profiles to exclude those that have already been accepted.
|
|
75
|
+
*
|
|
76
|
+
* @category Utilities
|
|
77
|
+
*/
|
|
78
|
+
const filterProfilesByAcceptedTerms = (profiles, acceptedTerms) => {
|
|
79
|
+
if (!(acceptedTerms === null || acceptedTerms === void 0 ? void 0 : acceptedTerms.length)) return profiles;
|
|
80
|
+
const connectedTermTypes = new Set(acceptedTerms.map(t => t.termType));
|
|
81
|
+
return profiles.filter(profile => {
|
|
82
|
+
return !profile.terms.some(term => connectedTermTypes.has(term.termType));
|
|
83
|
+
});
|
|
84
|
+
};
|
|
25
85
|
|
|
86
|
+
exports.filterProfilesByAcceptedTerms = filterProfilesByAcceptedTerms;
|
|
26
87
|
exports.getInsuranceProviderWithFriendlyName = getInsuranceProviderWithFriendlyName;
|
|
88
|
+
exports.getIsFundingSourceInsuranceProviderEnabledAndSupported = getIsFundingSourceInsuranceProviderEnabledAndSupported;
|
|
27
89
|
exports.getIsInsuraceProviderAccepted = getIsInsuraceProviderAccepted;
|
|
90
|
+
exports.groupTermsByProvider = groupTermsByProvider;
|
|
@@ -62,31 +62,7 @@ const Component = _a => {
|
|
|
62
62
|
}));
|
|
63
63
|
// Track if we have a shipment_not_found error to avoid reusing the bad shipment ID
|
|
64
64
|
const hasShipmentNotFoundError = configureShipmentErrors === null || configureShipmentErrors === void 0 ? void 0 : configureShipmentErrors.some(error => error.message === "shipment_not_found");
|
|
65
|
-
const
|
|
66
|
-
if (_multiplexedId && "shipmentId" in _multiplexedId) {
|
|
67
|
-
return {
|
|
68
|
-
shipmentId: _multiplexedId.shipmentId
|
|
69
|
-
};
|
|
70
|
-
} else if (_multiplexedId && "externalShipmentId" in _multiplexedId) {
|
|
71
|
-
return {
|
|
72
|
-
externalShipmentId: _multiplexedId.externalShipmentId
|
|
73
|
-
};
|
|
74
|
-
} else if (_multiplexedId && "salesOrderId" in _multiplexedId) {
|
|
75
|
-
return {
|
|
76
|
-
salesOrderId: _multiplexedId.salesOrderId
|
|
77
|
-
};
|
|
78
|
-
} else if (_multiplexedId && "externalOrderNumber" in _multiplexedId) {
|
|
79
|
-
return {
|
|
80
|
-
externalOrderNumber: _multiplexedId.externalOrderNumber
|
|
81
|
-
};
|
|
82
|
-
} else if (_multiplexedId && "externalOrderId" in _multiplexedId) {
|
|
83
|
-
return {
|
|
84
|
-
externalOrderId: _multiplexedId.externalOrderId
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
return {};
|
|
88
|
-
}, [_multiplexedId]);
|
|
89
|
-
const shipmentId = getMultiplexedIdentifier().shipmentId;
|
|
65
|
+
const shipmentId = _multiplexedId && "shipmentId" in _multiplexedId ? _multiplexedId.shipmentId : undefined;
|
|
90
66
|
const {
|
|
91
67
|
data: insuranceAccount,
|
|
92
68
|
isInitialLoading: insuranceIsLoading
|
|
@@ -204,9 +180,9 @@ const Component = _a => {
|
|
|
204
180
|
return jsxRuntime.jsx(suspendPurchase.SuspendPurchase, {
|
|
205
181
|
data: shipment$1 || salesOrder,
|
|
206
182
|
errors: errors.length ? errors : undefined,
|
|
207
|
-
identifier: getMultiplexedIdentifier(),
|
|
208
183
|
isLoading: isLabelsLoading || isConfiguringShipment || insuranceIsLoading,
|
|
209
184
|
onCreateNewShipment: createNewShipmentForNotFound,
|
|
185
|
+
shipmentId: shipmentId,
|
|
210
186
|
children: element && getElement(element)
|
|
211
187
|
});
|
|
212
188
|
};
|
|
@@ -107,12 +107,12 @@ const useConfirmationAndSubmissionStep = ({
|
|
|
107
107
|
iovationBlackbox
|
|
108
108
|
}) {
|
|
109
109
|
const addressToRegister = address !== null && address !== void 0 ? address : defaultWarehouse.originAddress;
|
|
110
|
-
//
|
|
111
|
-
const insuranceProviders = globalFeatures.enableParcelGuard ? insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles.map(p => ({
|
|
112
|
-
acceptedTerms:
|
|
113
|
-
termType:
|
|
114
|
-
version:
|
|
115
|
-
}
|
|
110
|
+
// funding source insurance check
|
|
111
|
+
const insuranceProviders = globalFeatures.enableParcelGuard || globalFeatures.enableXCover ? insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles.map(p => ({
|
|
112
|
+
acceptedTerms: p.terms.map(term => ({
|
|
113
|
+
termType: term.termType,
|
|
114
|
+
version: term.version
|
|
115
|
+
})),
|
|
116
116
|
agreeToTerms: true,
|
|
117
117
|
fundingSourceId,
|
|
118
118
|
provider: p.provider
|
|
@@ -146,7 +146,7 @@ const useConfirmationAndSubmissionStep = ({
|
|
|
146
146
|
console.error(error);
|
|
147
147
|
throw error;
|
|
148
148
|
}
|
|
149
|
-
}), [
|
|
149
|
+
}), [globalFeatures.enableParcelGuard, globalFeatures.enableXCover, registerCarrier]);
|
|
150
150
|
const onboardSeller = React.useCallback(({
|
|
151
151
|
carrierProfiles,
|
|
152
152
|
fundingSourceRequiredTerms,
|
|
@@ -205,7 +205,7 @@ const useConfirmationAndSubmissionStep = ({
|
|
|
205
205
|
yield createHandleCarrierConnections({
|
|
206
206
|
carrierProfiles,
|
|
207
207
|
defaultWarehouse: warehouse,
|
|
208
|
-
insuranceProviderProfiles
|
|
208
|
+
insuranceProviderProfiles
|
|
209
209
|
})(fundingSource.fundingSource.fundingSourceId, {
|
|
210
210
|
iovationBlackbox
|
|
211
211
|
});
|
|
@@ -215,7 +215,7 @@ const useConfirmationAndSubmissionStep = ({
|
|
|
215
215
|
}
|
|
216
216
|
}
|
|
217
217
|
}
|
|
218
|
-
}), [addSandboxCarriers, createFundingSource, createHandleCarrierConnections, createOrUpdateWarehouse, getToken, globalFeatures.
|
|
218
|
+
}), [addSandboxCarriers, createFundingSource, createHandleCarrierConnections, createOrUpdateWarehouse, getToken, globalFeatures.isSandbox]);
|
|
219
219
|
const updateExistingFundingSource = React.useCallback(({
|
|
220
220
|
carrierProfiles,
|
|
221
221
|
fundingSource,
|
package/dist/cjs/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.cjs
CHANGED
|
@@ -30,7 +30,8 @@ const TermsAgreementForm = ({
|
|
|
30
30
|
} = reactI18next.useTranslation();
|
|
31
31
|
const {
|
|
32
32
|
globalFeatures: {
|
|
33
|
-
enableParcelGuard
|
|
33
|
+
enableParcelGuard,
|
|
34
|
+
enableXCover
|
|
34
35
|
}
|
|
35
36
|
} = elementsContextProvider.useElements();
|
|
36
37
|
const [showTerms, setShowTerms] = React.useState(false);
|
|
@@ -109,7 +110,7 @@ const TermsAgreementForm = ({
|
|
|
109
110
|
}), carrierTerms.map((term, idx) => jsxRuntime.jsx(displayTerm.DisplayTerm, {
|
|
110
111
|
terms: term
|
|
111
112
|
}, idx))]
|
|
112
|
-
}), enableParcelGuard && !!insuranceProviderTerms.length && jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
113
|
+
}), (enableParcelGuard || enableXCover) && !!insuranceProviderTerms.length && jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
113
114
|
children: [jsxRuntime.jsx(spacer.Spacer, {}), jsxRuntime.jsx(giger.Typography, {
|
|
114
115
|
bold: true,
|
|
115
116
|
variant: "body1",
|
package/dist/cjs/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.cjs
CHANGED
|
@@ -22,13 +22,14 @@ const TermsAgreementStep = ({
|
|
|
22
22
|
fundingSourceRequiredTerms,
|
|
23
23
|
showStampsLogo = false
|
|
24
24
|
}) => {
|
|
25
|
-
var _a, _b, _c, _d, _e;
|
|
25
|
+
var _a, _b, _c, _d, _e, _f;
|
|
26
26
|
const {
|
|
27
27
|
t
|
|
28
28
|
} = reactI18next.useTranslation("onboarding");
|
|
29
29
|
const {
|
|
30
30
|
globalFeatures: {
|
|
31
|
-
enableParcelGuard
|
|
31
|
+
enableParcelGuard,
|
|
32
|
+
enableXCover
|
|
32
33
|
}
|
|
33
34
|
} = elementsContextProvider.useElements();
|
|
34
35
|
const carrierFriendlyNames = useCarrierMetadata.useCarrierMetadata();
|
|
@@ -41,11 +42,12 @@ const TermsAgreementStep = ({
|
|
|
41
42
|
};
|
|
42
43
|
});
|
|
43
44
|
const insuranceProviderTerms = (_a = insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles.flatMap(p => p.terms)) !== null && _a !== void 0 ? _a : [];
|
|
44
|
-
const showParcelGuard = enableParcelGuard && ((_b = insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles
|
|
45
|
-
const
|
|
45
|
+
const showParcelGuard = enableParcelGuard && ((_b = insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles[0]) === null || _b === void 0 ? void 0 : _b.friendlyName) === "ParcelGuard";
|
|
46
|
+
const showXCover = enableXCover && ((_c = insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles[0]) === null || _c === void 0 ? void 0 : _c.friendlyName) === "XCover";
|
|
47
|
+
const hasInsuranceToRegister = (showParcelGuard || showXCover) && ((_d = insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles.length) !== null && _d !== void 0 ? _d : 0) > 0;
|
|
46
48
|
const hasEnabledCarriersConfigurationError = !showStampsLogo && (!enabledCarrierProfiles || (enabledCarrierProfiles === null || enabledCarrierProfiles === void 0 ? void 0 : enabledCarrierProfiles.length) === 0);
|
|
47
|
-
const hasAlreadyConnectedCarriers = ((
|
|
48
|
-
const hasCarriersToRegister = ((
|
|
49
|
+
const hasAlreadyConnectedCarriers = ((_e = enabledCarrierProfiles === null || enabledCarrierProfiles === void 0 ? void 0 : enabledCarrierProfiles.length) !== null && _e !== void 0 ? _e : 0) > 0 && carrierProfilesToRegister.length === 0 && (insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles.length) === 0;
|
|
50
|
+
const hasCarriersToRegister = ((_f = enabledCarrierProfiles === null || enabledCarrierProfiles === void 0 ? void 0 : enabledCarrierProfiles.length) !== null && _f !== void 0 ? _f : 0) > 0 && carrierProfilesToRegister.length > 0;
|
|
49
51
|
// Handle case where partner has not correctly enabled carriers and there is no insurance to register
|
|
50
52
|
// Insurance does not get set in the same enabled carriers list and should bypass this check
|
|
51
53
|
if (hasEnabledCarriersConfigurationError && !hasInsuranceToRegister) {
|