@shipengine/elements 2.26.5 → 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/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/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 +47 -14
- package/dist/cjs/hooks/use-get-funding-source-insurance-provider.cjs +7 -7
- package/dist/cjs/hooks/use-import-sales-order.cjs +45 -20
- 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 +1 -1
- package/dist/cjs/locales/en/purchase-label.json.cjs +9 -1
- 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/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/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-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 +47 -14
- package/dist/esm/hooks/use-get-funding-source-insurance-provider.js +7 -7
- package/dist/esm/hooks/use-import-sales-order.js +47 -22
- 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 +1 -1
- package/dist/esm/locales/en/purchase-label.json.js +9 -1
- 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/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/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 -1
- package/dist/types/elements/labels-grid/labels-grid.d.ts.map +1 -1
- package/dist/types/elements/manage-carriers/manage-carriers.d.ts +9 -1
- 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 -1
- 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 -1
- 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 -1
- 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 -1
- 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 -1
- 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 -1
- 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 -1
- package/dist/types/elements/shipment-summary/shipment-summary.d.ts.map +1 -1
- package/dist/types/elements/shipments-grid/shipments-grid.d.ts +9 -1
- package/dist/types/elements/shipments-grid/shipments-grid.d.ts.map +1 -1
- package/dist/types/elements/theme-creator/theme-creator.d.ts +9 -1
- 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 -1
- 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 -1
- 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 -1
- 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 -1
- 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-import-sales-order.d.ts +20 -1
- package/dist/types/hooks/use-import-sales-order.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 -1
- 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 -1
- package/dist/types/workflows/account-settings/account-settings.d.ts.map +1 -1
- package/dist/types/workflows/carrier-services/carrier-services.d.ts +9 -1
- 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 -1
- 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 -1
- 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 -1
- package/dist/types/workflows/onboarding/onboarding.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -20,8 +20,8 @@ const useConfigureShipment = ({
|
|
|
20
20
|
warehouseId,
|
|
21
21
|
useWarehouses = true
|
|
22
22
|
}) => {
|
|
23
|
-
// Track when
|
|
24
|
-
const [
|
|
23
|
+
// Track when user manually created a shipment for a "not found" case
|
|
24
|
+
const [manuallyCreatedShipmentId, setManuallyCreatedShipmentId] = useState();
|
|
25
25
|
// Queue of incomplete requirement keys (i.e., Ship From addresses, Warehouses, Carriers)
|
|
26
26
|
const incompleteRequirementsKeys = useMemo(() => [], []);
|
|
27
27
|
const {
|
|
@@ -45,6 +45,7 @@ const useConfigureShipment = ({
|
|
|
45
45
|
// Dont run Sales Order Import unless the Sales order info is present
|
|
46
46
|
enabled: !!externalOrderNumber || !!orderSourceCode || !!salesOrderId || !!externalOrderId,
|
|
47
47
|
externalOrderId,
|
|
48
|
+
externalOrderNumber,
|
|
48
49
|
orderSourceCode,
|
|
49
50
|
salesOrderId
|
|
50
51
|
});
|
|
@@ -61,24 +62,49 @@ const useConfigureShipment = ({
|
|
|
61
62
|
isInitialLoading: isExternalShipmentInitialLoading,
|
|
62
63
|
isFetching: isExternalShipmentFetching
|
|
63
64
|
} = useGetShipmentByExternalId({
|
|
64
|
-
enabled: !!externalShipmentId && !shipmentId,
|
|
65
|
+
enabled: !!externalShipmentId && !shipmentId && !manuallyCreatedShipmentId,
|
|
65
66
|
queryFnParams: {
|
|
66
67
|
externalId: externalShipmentId !== null && externalShipmentId !== void 0 ? externalShipmentId : ""
|
|
67
68
|
}
|
|
69
|
+
// TODO: weird refetch on focus behavior
|
|
68
70
|
});
|
|
71
|
+
// #region List Sales Order Shipments
|
|
72
|
+
const externalOrderIds = useMemo(() => {
|
|
73
|
+
return externalOrderId ? [externalOrderId] : undefined;
|
|
74
|
+
}, [externalOrderId]);
|
|
75
|
+
const salesOrderIds = useMemo(() => {
|
|
76
|
+
return salesOrderId ? [salesOrderId] : salesOrder ? [salesOrder.salesOrderId] :
|
|
77
|
+
// TODO: current workaround - revert to being undefined rather than empty list
|
|
78
|
+
[];
|
|
79
|
+
}, [salesOrderId, salesOrder]);
|
|
80
|
+
const shipmentIds = useMemo(() => {
|
|
81
|
+
return manuallyCreatedShipmentId ? [manuallyCreatedShipmentId] : shipmentId ? [shipmentId] : externalShipment ? [externalShipment.shipmentId] : newV1Shipment ? [newV1Shipment.shipments[0].shipmentId] : undefined;
|
|
82
|
+
}, [manuallyCreatedShipmentId, shipmentId, externalShipment, newV1Shipment]);
|
|
83
|
+
const listSalesOrderShipmentsParams = useMemo(() => {
|
|
84
|
+
// TODO: useListSalesOrderShipments needs to be able to use the enabled prop, this is a workaround
|
|
85
|
+
// Prevent query with stale params during shipment creation or when V1 shipment exists but manuallyCreatedShipmentId not set
|
|
86
|
+
if (creatingV1Shipment && !manuallyCreatedShipmentId || newV1Shipment && !manuallyCreatedShipmentId) {
|
|
87
|
+
return {};
|
|
88
|
+
}
|
|
89
|
+
if (manuallyCreatedShipmentId) {
|
|
90
|
+
return {
|
|
91
|
+
shipmentIds
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
externalOrderIds,
|
|
96
|
+
salesOrderIds,
|
|
97
|
+
shipmentIds
|
|
98
|
+
};
|
|
99
|
+
}, [manuallyCreatedShipmentId, externalOrderIds, salesOrderIds, shipmentIds, creatingV1Shipment, newV1Shipment]);
|
|
69
100
|
const {
|
|
70
101
|
data: salesOrderShipments,
|
|
71
102
|
error: listSalesOrderShipmentsErrors,
|
|
72
103
|
refetch: refetchSalesOrderShipments,
|
|
73
104
|
isInitialLoading: listSalesOrderShipmentsInitiallyLoading,
|
|
74
105
|
isFetching: listSalesOrderShipmentsIsFetching
|
|
75
|
-
} = useListSalesOrderShipments(
|
|
76
|
-
|
|
77
|
-
salesOrderIds: salesOrderId ? [salesOrderId] : salesOrder ? [salesOrder.salesOrderId] :
|
|
78
|
-
// TODO: current workaround - revert to being undefined rather than empty list
|
|
79
|
-
[],
|
|
80
|
-
shipmentIds: replacementShipmentId ? [replacementShipmentId] : shipmentId ? [shipmentId] : externalShipment ? [externalShipment.shipmentId] : newV1Shipment ? [newV1Shipment.shipments[0].shipmentId] : undefined
|
|
81
|
-
});
|
|
106
|
+
} = useListSalesOrderShipments(listSalesOrderShipmentsParams);
|
|
107
|
+
// #endregion
|
|
82
108
|
const {
|
|
83
109
|
error: createSalesOrderShipmentErrors,
|
|
84
110
|
mutateAsync: createSalesOrderShipment,
|
|
@@ -103,6 +129,7 @@ const useConfigureShipment = ({
|
|
|
103
129
|
}
|
|
104
130
|
return null;
|
|
105
131
|
}), [createV1Shipment, defaultShipFromAddress, defaultWarehouse, warehouseId, refetchSalesOrderShipments]);
|
|
132
|
+
// #region Create Sales Order Shipment
|
|
106
133
|
// Handles the creation of new shipments for the sales order flow and one-off flow
|
|
107
134
|
const handleShipmentCreation = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
108
135
|
var _a, _b, _c;
|
|
@@ -152,17 +179,23 @@ const useConfigureShipment = ({
|
|
|
152
179
|
}
|
|
153
180
|
// Create a Shipment for one-off flow
|
|
154
181
|
if (!salesOrderId && !externalOrderId && !externalOrderNumber && !orderSourceCode && !shipmentId && !externalShipmentId) {
|
|
155
|
-
yield createV1ShipmentWithDefaults();
|
|
182
|
+
const v1Shipment = yield createV1ShipmentWithDefaults();
|
|
183
|
+
// Set manuallyCreatedShipmentId to ensure proper query parameter handling
|
|
184
|
+
if (v1Shipment) {
|
|
185
|
+
setManuallyCreatedShipmentId(v1Shipment.shipments[0].shipmentId);
|
|
186
|
+
}
|
|
156
187
|
}
|
|
157
188
|
}), [createSalesOrderShipment, createV1ShipmentWithDefaults, creatingSalesOrderShipment, creatingV1Shipment, defaultShipFromAddress, defaultWarehouse, externalOrderId, externalOrderNumber, externalShipmentId, incompleteRequirementsKeys, isExternalShipmentFetching, isExternalShipmentInitialLoading, isFetchingWarehouses, isInitialLoadingWarehouses, labelPurchasedSalesOrderShipment, listSalesOrderShipmentsInitiallyLoading, listSalesOrderShipmentsIsFetching, orderSourceCode, pendingSalesOrderShipment, salesOrder, salesOrderId, salesOrderShipmentCreated, shipFromAddresses === null || shipFromAddresses === void 0 ? void 0 : shipFromAddresses.length, shipmentId, useWarehouses, v1shipmentCreated, warehouseId, warehouses]);
|
|
189
|
+
// #endregion
|
|
158
190
|
const createNewShipmentForNotFound = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
159
191
|
// Force create a new shipment even if shipmentId exists (for shipment_not_found case)
|
|
160
192
|
const v1Shipment = yield createV1ShipmentWithDefaults();
|
|
161
193
|
if (v1Shipment) {
|
|
162
|
-
|
|
163
|
-
|
|
194
|
+
setManuallyCreatedShipmentId(v1Shipment.shipments[0].shipmentId);
|
|
195
|
+
// Refetch to ensure we have the latest shipment data
|
|
196
|
+
yield refetchSalesOrderShipments();
|
|
164
197
|
}
|
|
165
|
-
}), [createV1ShipmentWithDefaults]);
|
|
198
|
+
}), [createV1ShipmentWithDefaults, refetchSalesOrderShipments]);
|
|
166
199
|
const refetchPendingSalesOrderShipments = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
167
200
|
const {
|
|
168
201
|
data: shipments
|
|
@@ -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,28 +1,51 @@
|
|
|
1
1
|
import { __awaiter } from '../_virtual/_tslib.js';
|
|
2
|
-
import {
|
|
2
|
+
import { useListSalesOrders, useGetSalesOrder, useListOrderSources, useRefreshOrderSource } from '@shipengine/react-api';
|
|
3
3
|
import { useQueryClient } from '@tanstack/react-query';
|
|
4
|
-
import { useState, useMemo, useEffect } from 'react';
|
|
4
|
+
import { useState, useMemo, useCallback, useEffect } from 'react';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Imports and retrieves sales orders by either:
|
|
8
|
+
* - Sales order ID lookup
|
|
9
|
+
* - External order ID/number search
|
|
10
|
+
*
|
|
11
|
+
* 1. First attempts to find the sales order using provided identifiers
|
|
12
|
+
* 2. If no order is found and initial fetches have run, automatically refreshes order sources
|
|
13
|
+
* 3. Invalidates relevant queries after successful refresh to refetch updated data
|
|
14
|
+
*
|
|
15
|
+
* @returns Object:
|
|
16
|
+
* - `salesOrder`: The found sales order, or undefined
|
|
17
|
+
* - `isLoading`: Boolean indicating if the hook is currently loading data
|
|
18
|
+
* - `errors`: Array of errors from failed queries, or undefined
|
|
19
|
+
*/
|
|
6
20
|
const useImportSalesOrder = ({
|
|
7
21
|
enabled,
|
|
8
22
|
externalOrderId,
|
|
23
|
+
externalOrderNumber,
|
|
9
24
|
orderSourceCode,
|
|
10
25
|
salesOrderId
|
|
11
26
|
}) => {
|
|
12
27
|
var _a, _b, _c;
|
|
13
28
|
const queryClient = useQueryClient();
|
|
14
29
|
const [refreshAttempted, setRefreshAttempted] = useState(false);
|
|
15
|
-
//
|
|
16
|
-
const
|
|
17
|
-
|
|
30
|
+
// Fetch sales order by External Order ID or External Order Number
|
|
31
|
+
const salesOrderByExternalIdQuery = useListSalesOrders({
|
|
32
|
+
externalOrderId,
|
|
33
|
+
externalOrderNumber
|
|
18
34
|
});
|
|
19
35
|
// if an order was found through external search disable this query
|
|
20
|
-
const
|
|
36
|
+
const salesOrderByIdQuery = useGetSalesOrder(salesOrderId, {
|
|
21
37
|
enabled: enabled && !!salesOrderId
|
|
22
38
|
});
|
|
23
|
-
const salesOrder = useMemo(() =>
|
|
39
|
+
const salesOrder = useMemo(() => {
|
|
40
|
+
if (salesOrderId) {
|
|
41
|
+
return salesOrderByIdQuery.data;
|
|
42
|
+
} else if (salesOrderByExternalIdQuery.data && salesOrderByExternalIdQuery.data.length > 0) {
|
|
43
|
+
return salesOrderByExternalIdQuery.data[0];
|
|
44
|
+
}
|
|
45
|
+
return undefined;
|
|
46
|
+
}, [salesOrderId, salesOrderByIdQuery.data, salesOrderByExternalIdQuery.data]);
|
|
24
47
|
// Determine if the initial fetch attempts (if applicable) have settled without finding data
|
|
25
|
-
const initialFetchSettled = (salesOrderId ? !
|
|
48
|
+
const initialFetchSettled = (salesOrderId ? !salesOrderByIdQuery.isInitialLoading && !salesOrderByIdQuery.isFetching : true) && ((externalOrderNumber || externalOrderId) && !salesOrderId ? !salesOrderByExternalIdQuery.isLoading && !salesOrderByExternalIdQuery.isFetching : true);
|
|
26
49
|
const shouldAttemptRefresh = enabled && initialFetchSettled && !salesOrder && !refreshAttempted;
|
|
27
50
|
const listOrderSourcesQuery = useListOrderSources({
|
|
28
51
|
enabled: shouldAttemptRefresh
|
|
@@ -32,6 +55,17 @@ const useImportSalesOrder = ({
|
|
|
32
55
|
isLoading: isRefreshingOrderSource,
|
|
33
56
|
mutateAsync: refreshOrderSource
|
|
34
57
|
} = useRefreshOrderSource();
|
|
58
|
+
const invalidateSalesOrderQueries = useCallback(() => {
|
|
59
|
+
if (salesOrderId) {
|
|
60
|
+
void queryClient.invalidateQueries({
|
|
61
|
+
queryKey: ["useGetSalesOrder", salesOrderId]
|
|
62
|
+
});
|
|
63
|
+
} else if (externalOrderId || externalOrderNumber) {
|
|
64
|
+
void queryClient.invalidateQueries({
|
|
65
|
+
queryKey: ["useListSalesOrders", externalOrderId, externalOrderNumber]
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}, [queryClient, salesOrderId, externalOrderId, externalOrderNumber]);
|
|
35
69
|
useEffect(() => {
|
|
36
70
|
if (listOrderSourcesQuery.isSuccess && listOrderSourcesQuery.data && shouldAttemptRefresh && !isRefreshingOrderSource) {
|
|
37
71
|
const orderSourcesToRefresh = orderSourceCode ? listOrderSourcesQuery.data.filter(o => o.orderSourceCode.includes(orderSourceCode) && o.active) : listOrderSourcesQuery.data.filter(o => o.active);
|
|
@@ -39,29 +73,20 @@ const useImportSalesOrder = ({
|
|
|
39
73
|
setRefreshAttempted(true);
|
|
40
74
|
void (() => __awaiter(void 0, void 0, void 0, function* () {
|
|
41
75
|
yield Promise.all(orderSourcesToRefresh.map(o => refreshOrderSource(o.orderSourceId, {
|
|
42
|
-
// Invalidate relevant queries
|
|
76
|
+
// Invalidate relevant queries
|
|
43
77
|
onSuccess: () => {
|
|
44
|
-
|
|
45
|
-
void queryClient.invalidateQueries({
|
|
46
|
-
queryKey: ["useGetSalesOrder", salesOrderId]
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
if (externalOrderId && !salesOrderId) {
|
|
50
|
-
void queryClient.invalidateQueries({
|
|
51
|
-
queryKey: ["useGetSalesOrderByExternalOrderId", externalOrderId]
|
|
52
|
-
});
|
|
53
|
-
}
|
|
78
|
+
invalidateSalesOrderQueries();
|
|
54
79
|
}
|
|
55
80
|
})));
|
|
56
81
|
}))();
|
|
57
82
|
}
|
|
58
83
|
}
|
|
59
84
|
}, [externalOrderId, isRefreshingOrderSource, listOrderSourcesQuery.data, listOrderSourcesQuery.isSuccess, orderSourceCode, queryClient, refreshOrderSource, salesOrderId, shouldAttemptRefresh]);
|
|
60
|
-
const isLoading =
|
|
61
|
-
const errors = [...((_a =
|
|
85
|
+
const isLoading = salesOrderByIdQuery.isInitialLoading || salesOrderByExternalIdQuery.isInitialLoading || listOrderSourcesQuery.isInitialLoading || isRefreshingOrderSource;
|
|
86
|
+
const errors = [...((_a = salesOrderByIdQuery.error) !== null && _a !== void 0 ? _a : []), ...((_b = salesOrderByExternalIdQuery.error) !== null && _b !== void 0 ? _b : []), ...((_c = listOrderSourcesQuery.error) !== null && _c !== void 0 ? _c : []), ...(refreshOrderSourceErrors !== null && refreshOrderSourceErrors !== void 0 ? refreshOrderSourceErrors : [])];
|
|
62
87
|
return {
|
|
63
88
|
errors: errors.length > 0 ? errors : undefined,
|
|
64
|
-
isLoading,
|
|
89
|
+
isLoading: isLoading && errors.length === 0,
|
|
65
90
|
salesOrder
|
|
66
91
|
};
|
|
67
92
|
};
|
|
@@ -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';
|
|
@@ -91,7 +91,15 @@ var purchaseLabel = {
|
|
|
91
91
|
rateSavings: "Save ${{amount}}",
|
|
92
92
|
upsGroundSaverTermsAcknowledgement: "To start shipping with UPS Ground Saver, you are confirming that you have agreed to the <1>terms and conditions</1>",
|
|
93
93
|
dhlExpressTermsAcknowledgement: "To start shipping with DHL, you are confirming that you have agreed to the <1>terms and conditions</1>",
|
|
94
|
-
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
|
+
}
|
|
95
103
|
},
|
|
96
104
|
windsorFramework: {
|
|
97
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 };
|
|
@@ -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"}
|