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