@shipengine/elements 2.24.1 → 2.25.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/README.md +187 -6
- package/dist/cjs/components/field/credit-card-input/credit-card-input.cjs +46 -29
- package/dist/cjs/components/field/rate-select/rate-card/rate-card.cjs +29 -5
- package/dist/cjs/components/field/rate-select/rate-card/rate-card.styles.cjs +8 -3
- package/dist/cjs/components/field/rate-select/rate-select.cjs +26 -5
- package/dist/cjs/components/forms/address-form/address-form-schema.cjs +3 -3
- package/dist/cjs/components/forms/edit-billing-form/edit-billing-form.cjs +57 -4
- package/dist/cjs/components/service-card/service-card.cjs +4 -4
- package/dist/cjs/components/service-card/service-card.styles.cjs +5 -2
- package/dist/cjs/components/service-point-display/service-point-display.cjs +1 -36
- package/dist/cjs/components/service-point-display/service-point-display.styles.cjs +0 -12
- package/dist/cjs/components/shipment-not-found-error/index.cjs +7 -0
- package/dist/cjs/components/shipment-not-found-error/shipment-not-found-error.cjs +40 -0
- package/dist/cjs/components/shipment-not-found-error/shipment-not-found-error.styles.cjs +24 -0
- package/dist/cjs/components/suspend-purchase/suspend-purchase.cjs +11 -3
- package/dist/cjs/elements/purchase-label/components/rate-form/rate-form.cjs +13 -3
- package/dist/cjs/elements/purchase-label/components/rate-form/rate-schema.cjs +7 -2
- package/dist/cjs/elements/purchase-label/components/rate-form/rate-view.cjs +2 -0
- package/dist/cjs/elements/purchase-label/hooks/use-rate-options.cjs +31 -2
- package/dist/cjs/elements/purchase-label/hooks/use-rates-form.cjs +14 -18
- package/dist/cjs/elements/purchase-label/hooks/use-request-rates.cjs +20 -20
- package/dist/cjs/elements/purchase-label/purchase-label.cjs +4 -1
- package/dist/cjs/elements/shipment-summary/components/label-display/label-card.cjs +16 -31
- package/dist/cjs/elements/shipment-summary/components/label-display/label-card.styles.cjs +0 -19
- package/dist/cjs/elements/shipment-summary/components/label-display/paperless-label-display.cjs +54 -0
- package/dist/cjs/elements/shipment-summary/components/label-display/paperless-label-display.styles.cjs +27 -0
- package/dist/cjs/features/payment-method-settings/payment-method-settings.cjs +56 -18
- package/dist/cjs/hooks/use-configure-shipment.cjs +32 -11
- package/dist/cjs/hooks/use-helpers.cjs +4 -1
- package/dist/cjs/index.cjs +15 -12
- package/dist/cjs/locales/en/account-settings.json.cjs +6 -0
- package/dist/cjs/locales/en/common.json.cjs +2 -0
- package/dist/cjs/locales/en/purchase-label.json.cjs +5 -3
- package/dist/cjs/package.json.cjs +1 -1
- package/dist/cjs/utilities/address.cjs +29 -0
- package/dist/cjs/utilities/index.cjs +3 -0
- package/dist/cjs/utilities/money.cjs +14 -0
- package/dist/cjs/utilities/rate-warning-messages.cjs +25 -0
- package/dist/cjs/utilities/shipengine/warehouses.cjs +2 -1
- package/dist/cjs/workflows/connect-external-carrier/connect-external-carrier.cjs +7 -3
- package/dist/cjs/workflows/label-workflow/label-workflow.cjs +11 -3
- package/dist/cjs/workflows/onboarding/components/confirmation-and-submission-step/confirmation-and-submission-step.cjs +1 -1
- package/dist/cjs/workflows/onboarding/components/confirmation-and-submission-step/use-confirmation-and-submission-step.cjs +17 -1
- package/dist/cjs/workflows/onboarding/components/onboarding-wizard/onboarding-wizard.cjs +4 -1
- package/dist/cjs/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.cjs +4 -1
- package/dist/cjs/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.cjs +14 -3
- package/dist/cjs/workflows/onboarding/components/terms-agreement-step/use-terms-agreement-step.cjs +12 -12
- package/dist/esm/components/field/credit-card-input/credit-card-input.js +47 -30
- package/dist/esm/components/field/rate-select/rate-card/rate-card.js +30 -6
- package/dist/esm/components/field/rate-select/rate-card/rate-card.styles.js +8 -3
- package/dist/esm/components/field/rate-select/rate-select.js +26 -5
- package/dist/esm/components/forms/address-form/address-form-schema.js +3 -3
- package/dist/esm/components/forms/edit-billing-form/edit-billing-form.js +58 -5
- package/dist/esm/components/service-card/service-card.js +4 -4
- package/dist/esm/components/service-card/service-card.styles.js +5 -2
- package/dist/esm/components/service-point-display/service-point-display.js +2 -37
- package/dist/esm/components/service-point-display/service-point-display.styles.js +0 -12
- package/dist/esm/components/shipment-not-found-error/index.js +1 -0
- package/dist/esm/components/shipment-not-found-error/shipment-not-found-error.js +38 -0
- package/dist/esm/components/shipment-not-found-error/shipment-not-found-error.styles.js +22 -0
- package/dist/esm/components/suspend-purchase/suspend-purchase.js +11 -3
- package/dist/esm/elements/purchase-label/components/rate-form/rate-form.js +14 -4
- package/dist/esm/elements/purchase-label/components/rate-form/rate-schema.js +7 -2
- package/dist/esm/elements/purchase-label/components/rate-form/rate-view.js +2 -0
- package/dist/esm/elements/purchase-label/hooks/use-rate-options.js +31 -2
- package/dist/esm/elements/purchase-label/hooks/use-rates-form.js +14 -18
- package/dist/esm/elements/purchase-label/hooks/use-request-rates.js +20 -20
- package/dist/esm/elements/purchase-label/purchase-label.js +4 -1
- package/dist/esm/elements/shipment-summary/components/label-display/label-card.js +18 -33
- package/dist/esm/elements/shipment-summary/components/label-display/label-card.styles.js +0 -19
- package/dist/esm/elements/shipment-summary/components/label-display/paperless-label-display.js +52 -0
- package/dist/esm/elements/shipment-summary/components/label-display/paperless-label-display.styles.js +25 -0
- package/dist/esm/features/payment-method-settings/payment-method-settings.js +57 -19
- package/dist/esm/hooks/use-configure-shipment.js +33 -12
- package/dist/esm/hooks/use-helpers.js +4 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/locales/en/account-settings.json.js +6 -0
- package/dist/esm/locales/en/common.json.js +2 -0
- package/dist/esm/locales/en/purchase-label.json.js +5 -3
- package/dist/esm/package.json.js +1 -1
- package/dist/esm/utilities/address.js +26 -0
- package/dist/esm/utilities/index.js +1 -0
- package/dist/esm/utilities/money.js +14 -1
- package/dist/esm/utilities/rate-warning-messages.js +23 -0
- package/dist/esm/utilities/shipengine/warehouses.js +2 -1
- package/dist/esm/workflows/connect-external-carrier/connect-external-carrier.js +7 -3
- package/dist/esm/workflows/label-workflow/label-workflow.js +11 -3
- package/dist/esm/workflows/onboarding/components/confirmation-and-submission-step/confirmation-and-submission-step.js +1 -1
- package/dist/esm/workflows/onboarding/components/confirmation-and-submission-step/use-confirmation-and-submission-step.js +17 -1
- package/dist/esm/workflows/onboarding/components/onboarding-wizard/onboarding-wizard.js +4 -1
- package/dist/esm/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.js +4 -1
- package/dist/esm/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.js +14 -3
- package/dist/esm/workflows/onboarding/components/terms-agreement-step/use-terms-agreement-step.js +12 -12
- package/dist/types/components/field/credit-card-input/credit-card-input.d.ts.map +1 -1
- package/dist/types/components/field/rate-select/rate-card/rate-card.d.ts +4 -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 +7 -2
- 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 +1 -0
- package/dist/types/components/field/rate-select/rate-select.d.ts.map +1 -1
- package/dist/types/components/forms/address-form/address-form-schema.d.ts.map +1 -1
- package/dist/types/components/forms/edit-billing-form/edit-billing-form.d.ts +2 -1
- package/dist/types/components/forms/edit-billing-form/edit-billing-form.d.ts.map +1 -1
- package/dist/types/components/service-card/service-card.d.ts +1 -1
- package/dist/types/components/service-card/service-card.d.ts.map +1 -1
- package/dist/types/components/service-card/service-card.styles.d.ts +4 -1
- package/dist/types/components/service-card/service-card.styles.d.ts.map +1 -1
- package/dist/types/components/service-point-display/service-point-display.d.ts.map +1 -1
- package/dist/types/components/service-point-display/service-point-display.styles.d.ts +0 -12
- package/dist/types/components/service-point-display/service-point-display.styles.d.ts.map +1 -1
- package/dist/types/components/shipment-not-found-error/index.d.ts +2 -0
- package/dist/types/components/shipment-not-found-error/index.d.ts.map +1 -0
- package/dist/types/components/shipment-not-found-error/shipment-not-found-error.d.ts +6 -0
- package/dist/types/components/shipment-not-found-error/shipment-not-found-error.d.ts.map +1 -0
- package/dist/types/components/shipment-not-found-error/shipment-not-found-error.styles.d.ts +19 -0
- package/dist/types/components/shipment-not-found-error/shipment-not-found-error.styles.d.ts.map +1 -0
- package/dist/types/components/suspend-purchase/suspend-purchase.d.ts +4 -2
- package/dist/types/components/suspend-purchase/suspend-purchase.d.ts.map +1 -1
- package/dist/types/elements/labels-grid/labels-grid.d.ts +11 -1
- package/dist/types/elements/labels-grid/labels-grid.d.ts.map +1 -1
- package/dist/types/elements/manage-carriers/manage-carriers.d.ts +11 -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 +11 -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 +11 -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 +11 -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 +11 -1
- package/dist/types/elements/payment-method-settings/payment-method-settings-element.d.ts.map +1 -1
- package/dist/types/elements/purchase-label/components/rate-form/rate-form.d.ts +1 -1
- package/dist/types/elements/purchase-label/components/rate-form/rate-form.d.ts.map +1 -1
- package/dist/types/elements/purchase-label/components/rate-form/rate-schema.d.ts +10 -1
- package/dist/types/elements/purchase-label/components/rate-form/rate-schema.d.ts.map +1 -1
- package/dist/types/elements/purchase-label/components/rate-form/rate-view.d.ts +2 -1
- package/dist/types/elements/purchase-label/components/rate-form/rate-view.d.ts.map +1 -1
- package/dist/types/elements/purchase-label/hooks/use-rate-options.d.ts.map +1 -1
- package/dist/types/elements/purchase-label/hooks/use-rates-form.d.ts +2 -2
- package/dist/types/elements/purchase-label/hooks/use-rates-form.d.ts.map +1 -1
- package/dist/types/elements/purchase-label/hooks/use-request-rates.d.ts.map +1 -1
- package/dist/types/elements/purchase-label/purchase-label.d.ts +11 -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 +11 -1
- package/dist/types/elements/select-label-layout/select-label-layout-element.d.ts.map +1 -1
- package/dist/types/elements/shipment-summary/components/label-display/label-card.d.ts.map +1 -1
- package/dist/types/elements/shipment-summary/components/label-display/label-card.styles.d.ts +0 -19
- package/dist/types/elements/shipment-summary/components/label-display/label-card.styles.d.ts.map +1 -1
- package/dist/types/elements/shipment-summary/components/label-display/paperless-label-display.d.ts +8 -0
- package/dist/types/elements/shipment-summary/components/label-display/paperless-label-display.d.ts.map +1 -0
- package/dist/types/elements/shipment-summary/components/label-display/paperless-label-display.styles.d.ts +22 -0
- package/dist/types/elements/shipment-summary/components/label-display/paperless-label-display.styles.d.ts.map +1 -0
- package/dist/types/elements/shipment-summary/shipment-summary.d.ts +11 -1
- package/dist/types/elements/shipment-summary/shipment-summary.d.ts.map +1 -1
- package/dist/types/elements/shipments-grid/hooks/use-shipments-grid.d.ts.map +1 -1
- package/dist/types/elements/shipments-grid/shipments-grid.d.ts +11 -1
- package/dist/types/elements/shipments-grid/shipments-grid.d.ts.map +1 -1
- package/dist/types/elements/theme-creator/theme-creator.d.ts +11 -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 +11 -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 +11 -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 +11 -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 +11 -1
- package/dist/types/elements/void-label/void-label.d.ts.map +1 -1
- package/dist/types/features/payment-method-settings/payment-method-settings.d.ts.map +1 -1
- package/dist/types/hooks/use-configure-shipment.d.ts +1 -0
- package/dist/types/hooks/use-configure-shipment.d.ts.map +1 -1
- package/dist/types/hooks/use-helpers.d.ts +2 -0
- package/dist/types/hooks/use-helpers.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/locales/en/index.d.ts +11 -1
- package/dist/types/locales/en/index.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/address.d.ts +21 -0
- package/dist/types/utilities/address.d.ts.map +1 -0
- package/dist/types/utilities/feature-flags/types.d.ts +1 -1
- package/dist/types/utilities/feature-flags/types.d.ts.map +1 -1
- package/dist/types/utilities/index.d.ts +1 -0
- package/dist/types/utilities/index.d.ts.map +1 -1
- package/dist/types/utilities/money.d.ts +6 -0
- package/dist/types/utilities/money.d.ts.map +1 -1
- package/dist/types/utilities/rate-warning-messages.d.ts +15 -0
- package/dist/types/utilities/rate-warning-messages.d.ts.map +1 -0
- package/dist/types/workflows/account-settings/account-settings.d.ts +11 -1
- package/dist/types/workflows/account-settings/account-settings.d.ts.map +1 -1
- package/dist/types/workflows/carrier-services/carrier-services.d.ts +11 -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 +11 -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 +11 -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/onboarding-wizard/onboarding-wizard.d.ts.map +1 -1
- package/dist/types/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.d.ts +2 -1
- package/dist/types/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.d.ts.map +1 -1
- package/dist/types/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.d.ts +3 -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 -0
- 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 +11 -1
- package/dist/types/workflows/onboarding/onboarding.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -4,7 +4,7 @@ import { getDefaultShipFromAddress } from '../utilities/shipengine/address.js';
|
|
|
4
4
|
import { getIsCustomsRequiredForSalesOrder, getCustomsFromSalesOrder } from '../utilities/shipengine/sales-order.js';
|
|
5
5
|
import { getShipmentByStatus } from '../utilities/shipengine/shipment.js';
|
|
6
6
|
import { getDefaultWarehouse, getWarehouseById } from '../utilities/shipengine/warehouses.js';
|
|
7
|
-
import { useMemo, useCallback, useEffect } from 'react';
|
|
7
|
+
import { useState, useMemo, useCallback, useEffect } from 'react';
|
|
8
8
|
import { useImportSalesOrder } from './use-import-sales-order.js';
|
|
9
9
|
|
|
10
10
|
const useConfigureShipment = ({
|
|
@@ -20,6 +20,8 @@ const useConfigureShipment = ({
|
|
|
20
20
|
warehouseId,
|
|
21
21
|
useWarehouses = true
|
|
22
22
|
}) => {
|
|
23
|
+
// Track when we've created a replacement shipment for a "not found" case
|
|
24
|
+
const [replacementShipmentId, setReplacementShipmentId] = useState();
|
|
23
25
|
// Queue of incomplete requirement keys (i.e., Ship From addresses, Warehouses, Carriers)
|
|
24
26
|
const incompleteRequirementsKeys = useMemo(() => [], []);
|
|
25
27
|
const {
|
|
@@ -75,7 +77,7 @@ const useConfigureShipment = ({
|
|
|
75
77
|
salesOrderIds: salesOrderId ? [salesOrderId] : salesOrder ? [salesOrder.salesOrderId] :
|
|
76
78
|
// TODO: current workaround - revert to being undefined rather than empty list
|
|
77
79
|
[],
|
|
78
|
-
shipmentIds: shipmentId ? [shipmentId] : externalShipment ? [externalShipment.shipmentId] : newV1Shipment ? [newV1Shipment.shipments[0].shipmentId] : undefined
|
|
80
|
+
shipmentIds: replacementShipmentId ? [replacementShipmentId] : shipmentId ? [shipmentId] : externalShipment ? [externalShipment.shipmentId] : newV1Shipment ? [newV1Shipment.shipments[0].shipmentId] : undefined
|
|
79
81
|
});
|
|
80
82
|
const {
|
|
81
83
|
error: createSalesOrderShipmentErrors,
|
|
@@ -88,6 +90,19 @@ const useConfigureShipment = ({
|
|
|
88
90
|
const cancelledShipment = getShipmentByStatus("cancelled", salesOrderShipments);
|
|
89
91
|
const defaultWarehouse = getDefaultWarehouse(warehouses);
|
|
90
92
|
const defaultShipFromAddress = getDefaultShipFromAddress(shipFromAddresses);
|
|
93
|
+
// Common function to create a V1 shipment
|
|
94
|
+
const createV1ShipmentWithDefaults = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
95
|
+
const v1Shipment = yield createV1Shipment(Object.assign({}, (defaultShipFromAddress === null || defaultShipFromAddress === void 0 ? void 0 : defaultShipFromAddress.originAddress) ? {
|
|
96
|
+
shipFrom: defaultShipFromAddress.originAddress
|
|
97
|
+
} : {
|
|
98
|
+
warehouseId: warehouseId ? warehouseId : defaultWarehouse.warehouseId
|
|
99
|
+
}));
|
|
100
|
+
if (v1Shipment) {
|
|
101
|
+
yield refetchSalesOrderShipments();
|
|
102
|
+
return v1Shipment;
|
|
103
|
+
}
|
|
104
|
+
return null;
|
|
105
|
+
}), [createV1Shipment, defaultShipFromAddress, defaultWarehouse, warehouseId, refetchSalesOrderShipments]);
|
|
91
106
|
// Handles the creation of new shipments for the sales order flow and one-off flow
|
|
92
107
|
const handleShipmentCreation = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
93
108
|
var _a, _b, _c;
|
|
@@ -137,16 +152,17 @@ const useConfigureShipment = ({
|
|
|
137
152
|
}
|
|
138
153
|
// Create a Shipment for one-off flow
|
|
139
154
|
if (!salesOrderId && !externalOrderId && !externalOrderNumber && !orderSourceCode && !shipmentId && !externalShipmentId) {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
155
|
+
yield createV1ShipmentWithDefaults();
|
|
156
|
+
}
|
|
157
|
+
}), [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]);
|
|
158
|
+
const createNewShipmentForNotFound = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
159
|
+
// Force create a new shipment even if shipmentId exists (for shipment_not_found case)
|
|
160
|
+
const v1Shipment = yield createV1ShipmentWithDefaults();
|
|
161
|
+
if (v1Shipment) {
|
|
162
|
+
// Store the new shipment ID to override the stale one
|
|
163
|
+
setReplacementShipmentId(v1Shipment.shipments[0].shipmentId);
|
|
148
164
|
}
|
|
149
|
-
}), [
|
|
165
|
+
}), [createV1ShipmentWithDefaults]);
|
|
150
166
|
const refetchPendingSalesOrderShipments = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
151
167
|
const {
|
|
152
168
|
data: shipments
|
|
@@ -178,13 +194,18 @@ const useConfigureShipment = ({
|
|
|
178
194
|
errorCode: "invalid_status",
|
|
179
195
|
errorSource: "elements",
|
|
180
196
|
errorType: "business_rules"
|
|
181
|
-
})] : []), ...(incompleteRequirementsKeys.length > 0 ? [new CodedError(incompleteRequirementsKeys.length
|
|
197
|
+
})] : []), ...(incompleteRequirementsKeys.length > 0 ? [new CodedError(incompleteRequirementsKeys.length === 1 ? "no_carriers_and_warehouses" : incompleteRequirementsKeys[0], {
|
|
182
198
|
errorCode: "unknown",
|
|
183
199
|
errorSource: "elements",
|
|
184
200
|
errorType: "business_rules"
|
|
201
|
+
})] : []), ...((salesOrderShipments === null || salesOrderShipments === void 0 ? void 0 : salesOrderShipments.length) === 0 && shipmentId ? [new CodedError("shipment_not_found", {
|
|
202
|
+
errorCode: "invalid_status",
|
|
203
|
+
errorSource: "elements",
|
|
204
|
+
errorType: "business_rules"
|
|
185
205
|
})] : [])];
|
|
186
206
|
return {
|
|
187
207
|
carriers,
|
|
208
|
+
createNewShipmentForNotFound,
|
|
188
209
|
errors: errors.length > 0 ? errors : undefined,
|
|
189
210
|
isLoading: (isSalesOrderLoading || !(salesOrderShipments === null || salesOrderShipments === void 0 ? void 0 : salesOrderShipments.length) || creatingSalesOrderShipment) && errors.length === 0,
|
|
190
211
|
refetchPendingSalesOrderShipments,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { useListCarriers, useListWarehouses } from '@shipengine/react-api';
|
|
2
|
+
import { getUsStates, getCountries } from '../utilities/address.js';
|
|
2
3
|
import { isOnboarded, validateShipFromAddress } from '../utilities/checks.js';
|
|
3
4
|
|
|
4
5
|
const useHelpers = () => {
|
|
@@ -15,7 +16,9 @@ const useHelpers = () => {
|
|
|
15
16
|
return {
|
|
16
17
|
helpersReady,
|
|
17
18
|
sellerOnboarded,
|
|
18
|
-
validateShipFromAddress
|
|
19
|
+
validateShipFromAddress,
|
|
20
|
+
getCountries,
|
|
21
|
+
getUsStates
|
|
19
22
|
};
|
|
20
23
|
};
|
|
21
24
|
|
package/dist/esm/index.js
CHANGED
|
@@ -2,6 +2,7 @@ export * from '@shipengine/react-api';
|
|
|
2
2
|
export { createStyles, scopeTheme } from './utilities/styles.js';
|
|
3
3
|
export { getDefaultFeatures } from './utilities/feature-flags/feature-flags.js';
|
|
4
4
|
export { getSellerIdFromToken, isOnboarded, validateShipFromAddress } from './utilities/checks.js';
|
|
5
|
+
export { getCountries, getUsStates } from './utilities/address.js';
|
|
5
6
|
export { Country, UsState, UsaCity, addressNameRegex, countries, countryCodes, euCountryCodes, postalCodeRegex, usCities, usStateCodes, usStates } from './constants/shipengine/address.js';
|
|
6
7
|
import * as manageCarriers from './elements/manage-carriers/manage-carriers.js';
|
|
7
8
|
export { manageCarriers as ManageCarriers };
|
|
@@ -24,6 +24,12 @@ var accoutSettings = {
|
|
|
24
24
|
labelLayout: "Shipping Label Layout",
|
|
25
25
|
unitSettings: "Units of Measure",
|
|
26
26
|
vatSettings: "Tax Settings"
|
|
27
|
+
},
|
|
28
|
+
errors: {
|
|
29
|
+
paymentMethod: {
|
|
30
|
+
title: "Error Updating Payment Method",
|
|
31
|
+
description: "There was an error updating your payment method. Ensure your payment information is correct and try again. If the problem persists, contact support at {{email}}."
|
|
32
|
+
}
|
|
27
33
|
}
|
|
28
34
|
}
|
|
29
35
|
};
|
|
@@ -161,10 +161,12 @@ var common = {
|
|
|
161
161
|
total: "Total"
|
|
162
162
|
},
|
|
163
163
|
errorMessages: {
|
|
164
|
+
fundingSourceCreationFailed: "Please check your payment and billing details, and confirm that your bank hasn’t blocked the payment method. If the issue persists, please contact support at {{email}}.",
|
|
164
165
|
contactSupport: "Your transaction may not have processed as expected. Please contact support at {{email}}.",
|
|
165
166
|
invalidNameOrCompany: "Recipient name and company name (if provided) must have two characters in first and last name.",
|
|
166
167
|
parsingFailure: "Parsing failed. Please check address and try again.",
|
|
167
168
|
incompleteLabelPurchaseRequirements: "Please add your {{requirements}} to continue purchasing a label.",
|
|
169
|
+
shipmentNotFound: "Cannot find shipment with ID: {{id}}.",
|
|
168
170
|
shipmentCancelled: "This shipment is Cancelled in ShipStation. Log into ShipStation to restore the order to Awaiting Shipment status.",
|
|
169
171
|
unableToLoad: {
|
|
170
172
|
accountSettings: "Unable to load account settings",
|
|
@@ -10,7 +10,8 @@ var purchaseLabel = {
|
|
|
10
10
|
showItems: "Show items",
|
|
11
11
|
showMoreRates: "Show more rates",
|
|
12
12
|
showFewerRates: "Show fewer rates",
|
|
13
|
-
saveRate: "Save Rate"
|
|
13
|
+
saveRate: "Save Rate",
|
|
14
|
+
createNewShipment: "Create New Shipment"
|
|
14
15
|
},
|
|
15
16
|
balance: {
|
|
16
17
|
currentBalance: "Available Funds:",
|
|
@@ -127,7 +128,6 @@ var purchaseLabel = {
|
|
|
127
128
|
otherLocations: "Other drop off points near you:",
|
|
128
129
|
noServicePointsForService: "There are no drop off locations for this service within 10km of your search area.",
|
|
129
130
|
error: "Unable to find drop off locations within 10km of your search area.",
|
|
130
|
-
paperless: "Print & Paperless",
|
|
131
131
|
localTimeDisclaimer: "Hours shown in local time"
|
|
132
132
|
},
|
|
133
133
|
shipToAddressFormFields: "Ship To Address Form Fields",
|
|
@@ -141,7 +141,9 @@ var purchaseLabel = {
|
|
|
141
141
|
},
|
|
142
142
|
warnings: {
|
|
143
143
|
parcelGuardShipDate: "ParcelGuard must be purchased within 48 hours of the ship date. Please update the ship date to continue."
|
|
144
|
-
}
|
|
144
|
+
},
|
|
145
|
+
paperlessAvailable: "Paperless available",
|
|
146
|
+
usePaperlessLabel: "Use Paperless Label (QR Code)"
|
|
145
147
|
}
|
|
146
148
|
};
|
|
147
149
|
|
package/dist/esm/package.json.js
CHANGED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { usStates, countries } from '../constants/shipengine/address.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Returns a simplified list of countries for use in dropdowns and forms.
|
|
5
|
+
*
|
|
6
|
+
* @returns Array of country objects with name and code properties
|
|
7
|
+
*/
|
|
8
|
+
const getCountries = () => {
|
|
9
|
+
return countries.map(country => ({
|
|
10
|
+
name: country.name,
|
|
11
|
+
code: country.code
|
|
12
|
+
}));
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Returns a simplified list of US states for use in dropdowns and forms.
|
|
16
|
+
*
|
|
17
|
+
* @returns Array of US state objects with name and code properties
|
|
18
|
+
*/
|
|
19
|
+
const getUsStates = () => {
|
|
20
|
+
return usStates.map(state => ({
|
|
21
|
+
name: state.name,
|
|
22
|
+
code: state.code
|
|
23
|
+
}));
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export { getCountries, getUsStates };
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export { createStyles, scopeTheme } from './styles.js';
|
|
2
2
|
export { getSellerIdFromToken, isOnboarded, validateShipFromAddress } from './checks.js';
|
|
3
|
+
export { getCountries, getUsStates } from './address.js';
|
|
3
4
|
export { getDefaultFeatures } from './feature-flags/feature-flags.js';
|
|
@@ -36,6 +36,19 @@ const calculateTotal = (...values) => {
|
|
|
36
36
|
return value ? total + ((_a = value.amount) !== null && _a !== void 0 ? _a : 0) : total;
|
|
37
37
|
}, 0);
|
|
38
38
|
};
|
|
39
|
+
/**
|
|
40
|
+
* @internal
|
|
41
|
+
*
|
|
42
|
+
* # Money Utils - maskCreditCardNumber
|
|
43
|
+
*/
|
|
44
|
+
const maskCreditCardNumber = cc => {
|
|
45
|
+
const sanitizedCC = cc.replace(/\s/g, "");
|
|
46
|
+
if (!sanitizedCC || sanitizedCC.length < 15 || sanitizedCC.length > 16) {
|
|
47
|
+
return cc;
|
|
48
|
+
}
|
|
49
|
+
const maskedCCNumber = "*".repeat(sanitizedCC.length - 4) + sanitizedCC.slice(-4);
|
|
50
|
+
return maskedCCNumber.replace(/(.{4})/g, "$1 ").trim();
|
|
51
|
+
};
|
|
39
52
|
/**
|
|
40
53
|
* @internal
|
|
41
54
|
*
|
|
@@ -94,4 +107,4 @@ const getCurrencySymbolFromString = currency => {
|
|
|
94
107
|
return currencySymbol;
|
|
95
108
|
};
|
|
96
109
|
|
|
97
|
-
export { calculateTotal, currencySymbol, formatCreditCardNumber, formatExpiration, formatMoney, getCurrencyFromString, getCurrencySymbolFromString };
|
|
110
|
+
export { calculateTotal, currencySymbol, formatCreditCardNumber, formatExpiration, formatMoney, getCurrencyFromString, getCurrencySymbolFromString, maskCreditCardNumber };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import rateMessages from '../data/rate-messages.json.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Builds warning messages for a rate by combining messages from different sources:
|
|
5
|
+
* 1. Messages for serviceCode:shipDay combination
|
|
6
|
+
* 2. Messages for serviceCode:packageType combination
|
|
7
|
+
* 3. Messages for serviceCode only
|
|
8
|
+
* 4. Existing warning messages from the rate
|
|
9
|
+
*/
|
|
10
|
+
const buildRateWarningMessages = ({
|
|
11
|
+
serviceCode,
|
|
12
|
+
packageType,
|
|
13
|
+
shipDay,
|
|
14
|
+
existingWarningMessages = []
|
|
15
|
+
}) => {
|
|
16
|
+
const keys = [shipDay && `${serviceCode}:${shipDay}`, packageType && `${serviceCode}:${packageType}`, serviceCode].filter(Boolean);
|
|
17
|
+
return [...keys.flatMap(key => {
|
|
18
|
+
var _a;
|
|
19
|
+
return (_a = rateMessages[key]) !== null && _a !== void 0 ? _a : [];
|
|
20
|
+
}), ...existingWarningMessages];
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export { buildRateWarningMessages };
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
const getDefaultWarehouse = warehouses => {
|
|
2
|
-
|
|
2
|
+
var _a;
|
|
3
|
+
return (_a = warehouses === null || warehouses === void 0 ? void 0 : warehouses.find(w => w.isDefault)) !== null && _a !== void 0 ? _a : warehouses === null || warehouses === void 0 ? void 0 : warehouses[0];
|
|
3
4
|
};
|
|
4
5
|
const getWarehouseById = (warehouseId, warehouses) => {
|
|
5
6
|
return warehouses === null || warehouses === void 0 ? void 0 : warehouses.find(w => w.warehouseId === warehouseId);
|
|
@@ -64,7 +64,7 @@ const Component = ({
|
|
|
64
64
|
refetch: refetchSchema
|
|
65
65
|
} = useGetCarrierConnectionForm({
|
|
66
66
|
carrierName: selectedCarrier !== null && selectedCarrier !== void 0 ? selectedCarrier : "apicode-dummy-carrier",
|
|
67
|
-
enabled:
|
|
67
|
+
enabled: !!selectedCarrier
|
|
68
68
|
});
|
|
69
69
|
useEffect(() => {
|
|
70
70
|
if (selectedCarrier && needsRefetch) {
|
|
@@ -131,7 +131,9 @@ const Component = ({
|
|
|
131
131
|
const updatedSchema = Object.assign({}, schema);
|
|
132
132
|
// camelize required fields, as casing varies between carriers
|
|
133
133
|
if (updatedSchema.required && Array.isArray(updatedSchema.required)) {
|
|
134
|
-
updatedSchema.required = updatedSchema.required.map(
|
|
134
|
+
updatedSchema.required = updatedSchema.required.map(item => {
|
|
135
|
+
return typeof item === "string" ? humps.camelize(item) : item;
|
|
136
|
+
});
|
|
135
137
|
}
|
|
136
138
|
// camelize property keys
|
|
137
139
|
// fail safe to ensure schema properties and required array match in the event the camelizeKeys from shipengine/js-api isn't consistent
|
|
@@ -153,7 +155,9 @@ const Component = ({
|
|
|
153
155
|
const updatedUiSchema = Object.assign({}, uiSchemaClone);
|
|
154
156
|
// add nickname to ui:order and camelize the values to ensure consistency with jsonSchema properties and required array
|
|
155
157
|
if (!hasNicknameProperty && updatedUiSchema["ui:order"]) {
|
|
156
|
-
|
|
158
|
+
// ui:order is typically an array of strings, but apparently can also be an array of arrays of strings, so we need to recursively camelize the items
|
|
159
|
+
const camelizeUIOrderItem = item => typeof item === "string" ? humps.camelize(item) : item.map(i => humps.camelize(i));
|
|
160
|
+
updatedUiSchema["ui:order"] = [...updatedUiSchema["ui:order"], "nickname"].map(camelizeUIOrderItem);
|
|
157
161
|
}
|
|
158
162
|
return updatedUiSchema;
|
|
159
163
|
}, [uiSchema, hasNicknameProperty]);
|
|
@@ -44,6 +44,7 @@ const Component = _a => {
|
|
|
44
44
|
data: accountSettings
|
|
45
45
|
} = useGetAccountSettings();
|
|
46
46
|
const {
|
|
47
|
+
createNewShipmentForNotFound,
|
|
47
48
|
shipment,
|
|
48
49
|
salesOrder,
|
|
49
50
|
isLoading: isConfiguringShipment,
|
|
@@ -57,19 +58,24 @@ const Component = _a => {
|
|
|
57
58
|
useWarehouses: (_b = propFeatures === null || propFeatures === void 0 ? void 0 : propFeatures.shipmentForm) === null || _b === void 0 ? void 0 : _b.useWarehouses,
|
|
58
59
|
warehouseId
|
|
59
60
|
}));
|
|
61
|
+
// Track if we have a shipment_not_found error to avoid reusing the bad shipment ID
|
|
62
|
+
const hasShipmentNotFoundError = configureShipmentErrors === null || configureShipmentErrors === void 0 ? void 0 : configureShipmentErrors.some(error => error.message === "shipment_not_found");
|
|
63
|
+
const shipmentId = _multiplexedId && "shipmentId" in _multiplexedId ? _multiplexedId.shipmentId : undefined;
|
|
60
64
|
const {
|
|
61
65
|
data: insuranceAccount,
|
|
62
66
|
isInitialLoading: insuranceIsLoading
|
|
63
67
|
} = useGetInsuranceAccount((shipment === null || shipment === void 0 ? void 0 : shipment.insuranceProvider) === SE.InsuranceProviderType.SHIPSURANCE ? SE.InsuranceProviderType.SHIPSURANCE : undefined);
|
|
64
68
|
const {
|
|
65
69
|
data: labelsResponse,
|
|
66
|
-
|
|
70
|
+
isFetching: isLabelsLoading,
|
|
67
71
|
error: listLabelsErrors,
|
|
68
72
|
refetch: refetchLabels
|
|
69
73
|
} = useListLabels({
|
|
70
|
-
enabled:
|
|
74
|
+
enabled:
|
|
75
|
+
// Don't enable if we have a shipment_not_found error (avoid reusing bad ID)
|
|
76
|
+
hasShipmentNotFoundError ? false : _multiplexedId && "shipmentId" in _multiplexedId ? true : !!(shipment === null || shipment === void 0 ? void 0 : shipment.shipmentId),
|
|
71
77
|
queryFnParams: {
|
|
72
|
-
shipmentId:
|
|
78
|
+
shipmentId: (shipment === null || shipment === void 0 ? void 0 : shipment.shipmentId) || (!hasShipmentNotFoundError ? shipmentId : undefined)
|
|
73
79
|
}
|
|
74
80
|
});
|
|
75
81
|
/**
|
|
@@ -173,6 +179,8 @@ const Component = _a => {
|
|
|
173
179
|
data: shipment || salesOrder,
|
|
174
180
|
errors: errors.length ? errors : undefined,
|
|
175
181
|
isLoading: isLabelsLoading || isConfiguringShipment || insuranceIsLoading,
|
|
182
|
+
onCreateNewShipment: createNewShipmentForNotFound,
|
|
183
|
+
shipmentId: shipmentId,
|
|
176
184
|
children: element && getElement(element)
|
|
177
185
|
});
|
|
178
186
|
};
|
|
@@ -71,7 +71,7 @@ const ConfirmationAndSubmissionStep = ({
|
|
|
71
71
|
}),
|
|
72
72
|
children: [jsx(CcProviderLogo, {
|
|
73
73
|
provider: provider,
|
|
74
|
-
width:
|
|
74
|
+
width: 56
|
|
75
75
|
}), jsx(Typography, {
|
|
76
76
|
variant: "body2",
|
|
77
77
|
children: `**** **** **** ${last4 !== null && last4 !== void 0 ? last4 : "****"}`
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { __awaiter } from '../../../../_virtual/_tslib.js';
|
|
2
|
+
import { useScrubErrors } from '../../../../hooks/use-scrub-errors.js';
|
|
2
3
|
import { useAddSandboxCarriers, useCreateFundingSource, useUpdateFundingSource, useRegisterCarrier } from '@shipengine/react-api';
|
|
3
4
|
import { getSellerIdFromToken } from '../../../../utilities/checks.js';
|
|
4
5
|
import { getDefaultWarehouse } from '../../../../utilities/shipengine/warehouses.js';
|
|
5
6
|
import { useState, useCallback } from 'react';
|
|
7
|
+
import { useTranslation } from 'react-i18next';
|
|
6
8
|
import { useManageWarehouses } from '../../../../features/manage-warehouses/use-manage-warehouses.js';
|
|
7
9
|
import { useElements } from '../../../../elements-provider/elements-context-provider.js';
|
|
8
10
|
|
|
@@ -13,6 +15,9 @@ const useConfirmationAndSubmissionStep = ({
|
|
|
13
15
|
globalFeatures,
|
|
14
16
|
getToken
|
|
15
17
|
} = useElements();
|
|
18
|
+
const {
|
|
19
|
+
t
|
|
20
|
+
} = useTranslation();
|
|
16
21
|
const [isSubmittingOnboarding, setIsSubmittingOnboarding] = useState(false);
|
|
17
22
|
const {
|
|
18
23
|
createWarehouse,
|
|
@@ -33,6 +38,15 @@ const useConfirmationAndSubmissionStep = ({
|
|
|
33
38
|
mutateAsync: createFundingSource,
|
|
34
39
|
reset: resetCreateFundingSource
|
|
35
40
|
} = useCreateFundingSource();
|
|
41
|
+
const displayableCreateFundingSourceErrors = useScrubErrors({
|
|
42
|
+
errors: createFundingSourceErrors !== null && createFundingSourceErrors !== void 0 ? createFundingSourceErrors : undefined,
|
|
43
|
+
predicate: useCallback(e => e.message.includes("An unexpected error occurred."), []),
|
|
44
|
+
scrubber: useCallback(() => {
|
|
45
|
+
return `${t("common:errorMessages.fundingSourceCreationFailed", {
|
|
46
|
+
email: globalFeatures.supportEmailAddress
|
|
47
|
+
})} `;
|
|
48
|
+
}, [globalFeatures.supportEmailAddress, t])
|
|
49
|
+
});
|
|
36
50
|
const {
|
|
37
51
|
error: updatePaymentMethodErrors,
|
|
38
52
|
isLoading: isUpdatingPaymentMethod,
|
|
@@ -294,7 +308,9 @@ const useConfirmationAndSubmissionStep = ({
|
|
|
294
308
|
setIsSubmittingOnboarding(false);
|
|
295
309
|
}), [onboardSeller, updateExistingFundingSource, onStepComplete, createFundingSourceErrors, registerCarrierErrors, updatePaymentMethodErrors, updateWarehouseErrors]);
|
|
296
310
|
return {
|
|
297
|
-
createFundingSourceErrors
|
|
311
|
+
createFundingSourceErrors: displayableCreateFundingSourceErrors === null || displayableCreateFundingSourceErrors === void 0 ? void 0 : displayableCreateFundingSourceErrors.map(message => ({
|
|
312
|
+
message
|
|
313
|
+
})),
|
|
298
314
|
createOnboardingSubmissionHandler,
|
|
299
315
|
isLoading: {
|
|
300
316
|
connectingCarriers: isRegisteringCarriers,
|
|
@@ -59,6 +59,7 @@ const OnboardingWizard = ({
|
|
|
59
59
|
isLoadingTermsAgreementStep,
|
|
60
60
|
fundingSourceRequiredTerms,
|
|
61
61
|
fundingSourceMetadata,
|
|
62
|
+
hasFreeStampsConnected,
|
|
62
63
|
handleSubmitTermsAgreement,
|
|
63
64
|
refetchCarriers,
|
|
64
65
|
refetchFundingSources,
|
|
@@ -165,8 +166,10 @@ const OnboardingWizard = ({
|
|
|
165
166
|
return jsx(TermsAgreementStep, {
|
|
166
167
|
carrierProfilesToRegister: carrierProfilesToRegister,
|
|
167
168
|
enabledCarrierProfiles: enabledCarrierProfiles,
|
|
169
|
+
fundingSourceRequiredTerms: fundingSourceRequiredTerms,
|
|
168
170
|
insuranceProviderProfiles: insuranceProviderProfiles,
|
|
169
|
-
onSubmit: handleSubmitTermsAgreement
|
|
171
|
+
onSubmit: handleSubmitTermsAgreement,
|
|
172
|
+
showStampsLogo: hasFreeStampsConnected
|
|
170
173
|
});
|
|
171
174
|
},
|
|
172
175
|
label: t("onboarding:stepLabel.termsAgreement")
|
package/dist/esm/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.js
CHANGED
|
@@ -18,6 +18,7 @@ import { SubmitButton } from '../../../../components/field/submit-button/submit-
|
|
|
18
18
|
const TermsAgreementForm = ({
|
|
19
19
|
carrierTerms,
|
|
20
20
|
hideTerms,
|
|
21
|
+
requiredTerms = [],
|
|
21
22
|
insuranceProviderTerms,
|
|
22
23
|
isSubmitDisabled,
|
|
23
24
|
onSubmit
|
|
@@ -96,7 +97,9 @@ const TermsAgreementForm = ({
|
|
|
96
97
|
title: t("onboarding:termsAndAgreementLinkText.auctanePrivacyPolicy")
|
|
97
98
|
}]
|
|
98
99
|
}
|
|
99
|
-
}),
|
|
100
|
+
}), requiredTerms.map(term => jsx(DisplayTerm, {
|
|
101
|
+
term: term
|
|
102
|
+
}, term.termType)), !!carrierTerms.length && jsxs(Fragment, {
|
|
100
103
|
children: [jsx(Spacer, {}), jsx(Typography, {
|
|
101
104
|
bold: true,
|
|
102
105
|
variant: "body1",
|
package/dist/esm/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.js
CHANGED
|
@@ -14,7 +14,9 @@ const TermsAgreementStep = ({
|
|
|
14
14
|
carrierProfilesToRegister,
|
|
15
15
|
insuranceProviderProfiles,
|
|
16
16
|
onSubmit,
|
|
17
|
-
enabledCarrierProfiles
|
|
17
|
+
enabledCarrierProfiles,
|
|
18
|
+
fundingSourceRequiredTerms,
|
|
19
|
+
showStampsLogo = false
|
|
18
20
|
}) => {
|
|
19
21
|
var _a, _b, _c, _d, _e;
|
|
20
22
|
const {
|
|
@@ -47,8 +49,16 @@ const TermsAgreementStep = ({
|
|
|
47
49
|
});
|
|
48
50
|
}
|
|
49
51
|
const renderCarrierLogos = () => {
|
|
52
|
+
var _a;
|
|
50
53
|
if (!carrierProfilesToRegister.length) return null;
|
|
51
|
-
|
|
54
|
+
const stampsCarrierProfile = {
|
|
55
|
+
carrierCode: "stamps_com",
|
|
56
|
+
carrierName: (_a = carrierFriendlyNames["stamps_com"]) === null || _a === void 0 ? void 0 : _a.name
|
|
57
|
+
};
|
|
58
|
+
// kind of a goofy way to just display stamps/usps logo without sending it in the payload to register
|
|
59
|
+
// we don't want to register stamps as a carrier if it's not being used as the primary payment method
|
|
60
|
+
const carriersToDisplay = showStampsLogo ? [stampsCarrierProfile, ...carrierProfilesToRegister] : carrierProfilesToRegister;
|
|
61
|
+
return carriersToDisplay.map(p => {
|
|
52
62
|
var _a;
|
|
53
63
|
return jsx(CarrierLogo, {
|
|
54
64
|
carrierCode: p.carrierCode,
|
|
@@ -99,7 +109,8 @@ const TermsAgreementStep = ({
|
|
|
99
109
|
carrierTerms: carrierTerms,
|
|
100
110
|
hideTerms: hideTerms,
|
|
101
111
|
insuranceProviderTerms: insuranceProviderTerms,
|
|
102
|
-
onSubmit: onSubmit
|
|
112
|
+
onSubmit: onSubmit,
|
|
113
|
+
requiredTerms: fundingSourceRequiredTerms
|
|
103
114
|
})
|
|
104
115
|
})]
|
|
105
116
|
});
|
package/dist/esm/workflows/onboarding/components/terms-agreement-step/use-terms-agreement-step.js
CHANGED
|
@@ -32,26 +32,25 @@ const useTermsAgreementStep = ({
|
|
|
32
32
|
const fundingSourceRegion = fundingSourceMetadata === null || fundingSourceMetadata === void 0 ? void 0 : fundingSourceMetadata.defaultRegionProfile.countryCode;
|
|
33
33
|
const fundingSourceCarrierProfiles = fundingSourceMetadata === null || fundingSourceMetadata === void 0 ? void 0 : fundingSourceMetadata.defaultRegionProfile.carrierProfiles;
|
|
34
34
|
const carrierProfilesFilteredByRegion = filterFundingSourceCarriers(fundingSourceCarrierProfiles, fundingSourceRegion);
|
|
35
|
+
const hasFreeStampsConnected = carriers === null || carriers === void 0 ? void 0 : carriers.some(c => c.carrierCode === "stamps_com" && c.fundingSourceId === null);
|
|
35
36
|
// filter carrier profiles based on enabled carriers
|
|
36
|
-
const enabledCarrierProfiles = carrierProfilesFilteredByRegion === null || carrierProfilesFilteredByRegion === void 0 ? void 0 : carrierProfilesFilteredByRegion.filter(c =>
|
|
37
|
+
const enabledCarrierProfiles = carrierProfilesFilteredByRegion === null || carrierProfilesFilteredByRegion === void 0 ? void 0 : carrierProfilesFilteredByRegion.filter(c => {
|
|
38
|
+
if (c.carrierCode === "stamps_com" && hasFreeStampsConnected) {
|
|
39
|
+
// if stamps_com is connected as a free account, we don't want to show it in the list of carriers to register. The funding source creation will convert it to a walleted carrier as the default carrier.
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
// filter out carriers that are not enabled by the feature flag
|
|
43
|
+
return enabledCarriers.includes(c.carrierCode);
|
|
44
|
+
});
|
|
37
45
|
const carrierProfilesToRegister = useMemo(() => {
|
|
38
46
|
if (!enabledCarrierProfiles) return [];
|
|
39
|
-
// add Stamps/USPS carrier ToS from funding source terms
|
|
40
|
-
const carrierProfiles = enabledCarrierProfiles.map(c => {
|
|
41
|
-
if (c.carrierCode === "stamps_com" && fundingSourceRequiredTerms) {
|
|
42
|
-
return Object.assign(Object.assign({}, c), {
|
|
43
|
-
requiredTerms: [...fundingSourceRequiredTerms, ...c.requiredTerms]
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
return c;
|
|
47
|
-
});
|
|
48
47
|
// handle existing funding source
|
|
49
48
|
const {
|
|
50
49
|
fundingSourceId
|
|
51
50
|
} = (fundingSources === null || fundingSources === void 0 ? void 0 : fundingSources[0]) || {};
|
|
52
|
-
if (!fundingSourceId || !carriers) return
|
|
51
|
+
if (!fundingSourceId || !carriers) return enabledCarrierProfiles;
|
|
53
52
|
const connectedCarriers = carriers.filter(c => c.fundingSourceId === fundingSourceId);
|
|
54
|
-
return
|
|
53
|
+
return enabledCarrierProfiles.filter(profile => {
|
|
55
54
|
// filter out carriers that are already connected
|
|
56
55
|
const isConnected = connectedCarriers.some(c => c.carrierCode === profile.carrierCode && c.fundingSourceId === fundingSourceId);
|
|
57
56
|
// if stamps_com is enabled, and usps is connected to the funding source,
|
|
@@ -98,6 +97,7 @@ const useTermsAgreementStep = ({
|
|
|
98
97
|
carrierProfilesToRegister,
|
|
99
98
|
enabledCarrierProfiles,
|
|
100
99
|
fundingSourceMetadata,
|
|
100
|
+
hasFreeStampsConnected,
|
|
101
101
|
fundingSourceRequiredTerms,
|
|
102
102
|
fundingSources,
|
|
103
103
|
handleSubmitTermsAgreement,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credit-card-input.d.ts","sourceRoot":"","sources":["../../../../../src/components/field/credit-card-input/credit-card-input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,IAAI,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"credit-card-input.d.ts","sourceRoot":"","sources":["../../../../../src/components/field/credit-card-input/credit-card-input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,IAAI,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAKxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAgBlE,eAAO,MAAM,eAAe,EAAE,eAAe,CAAC,gBAAgB,CAoC7D,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { WithCommonProps } from "@shipengine/giger";
|
|
2
|
-
import type { ServicePoint } from "@shipengine/react-api";
|
|
2
|
+
import type { LabelDisplayScheme, ServicePoint } from "@shipengine/react-api";
|
|
3
3
|
import type { RateOption } from "@types";
|
|
4
4
|
export type RateCardProps = Partial<RateOption> & WithCommonProps<{
|
|
5
5
|
isAcknowledged?: boolean;
|
|
@@ -8,10 +8,12 @@ export type RateCardProps = Partial<RateOption> & WithCommonProps<{
|
|
|
8
8
|
mapViewEnabled?: boolean;
|
|
9
9
|
onClick?: (rateId: string) => void;
|
|
10
10
|
onClickAcknowledgement?: (isAcknowledged: boolean) => void;
|
|
11
|
+
onPaperlessAcknowledgementChange?: (usePaperless?: boolean, labelDisplayScheme?: LabelDisplayScheme) => void;
|
|
11
12
|
onSelectServicePoint?: (servicePoint?: ServicePoint) => void;
|
|
12
13
|
selected?: boolean;
|
|
13
14
|
selectedRateCost?: number;
|
|
14
15
|
showVatFeatures?: boolean;
|
|
16
|
+
paperlessLabelChecked?: boolean;
|
|
15
17
|
}>;
|
|
16
|
-
export declare const RateCard: ({ carrierCode, carrierFriendlyName, carrierNickname, className, confirmationAmount, deliveryDays, insuranceAmount, isAcknowledged, messages, onClick, onClickAcknowledgement, onSelectServicePoint, otherAmount, rateId, requiresAcknowledgement, rateAcknowledgementMessage, selected, serviceCode, packageType, serviceType, shippingAmount, taxAmount, showVatFeatures, isLoading: servicePointsLoading, isPreferredRate, selectedRateCost, servicePoints, mapViewEnabled, rateDetails, }: RateCardProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
18
|
+
export declare const RateCard: ({ carrierCode, carrierFriendlyName, carrierNickname, className, confirmationAmount, deliveryDays, insuranceAmount, isAcknowledged, messages, onClick, onClickAcknowledgement, onPaperlessAcknowledgementChange, onSelectServicePoint, otherAmount, rateId, requiresAcknowledgement, rateAcknowledgementMessage, selected, serviceCode, packageType, serviceType, shippingAmount, taxAmount, showVatFeatures, isLoading: servicePointsLoading, isPreferredRate, selectedRateCost, servicePoints, mapViewEnabled, rateDetails, paperlessDisplaySchemes, paperlessLabelChecked, }: RateCardProps) => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
17
19
|
//# sourceMappingURL=rate-card.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-card.d.ts","sourceRoot":"","sources":["../../../../../../src/components/field/rate-select/rate-card/rate-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"rate-card.d.ts","sourceRoot":"","sources":["../../../../../../src/components/field/rate-select/rate-card/rate-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,KAAK,EAAuC,UAAU,EAAE,MAAM,QAAQ,CAAC;AA2F9E,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,GAC7C,eAAe,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,sBAAsB,CAAC,EAAE,CAAC,cAAc,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3D,gCAAgC,CAAC,EAAE,CACjC,YAAY,CAAC,EAAE,OAAO,EACtB,kBAAkB,CAAC,EAAE,kBAAkB,KACpC,IAAI,CAAC;IACV,oBAAoB,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,YAAY,KAAK,IAAI,CAAC;IAC7D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,CAAC,CAAC;AAEL,eAAO,MAAM,QAAQ,GAAI,gjBAiCtB,aAAa,qDAkKf,CAAC"}
|
|
@@ -2,10 +2,8 @@ import type { Theme } from "@emotion/react";
|
|
|
2
2
|
export declare const getRateCardFirstLineSize: (theme: Theme) => string;
|
|
3
3
|
export declare const styles: {
|
|
4
4
|
acknowledgment: (theme: import("../../../../../typings/emotion").ScopedGigerTheme) => {
|
|
5
|
-
alignItems: string;
|
|
6
5
|
color: string;
|
|
7
6
|
display: string;
|
|
8
|
-
paddingTop: number;
|
|
9
7
|
};
|
|
10
8
|
divider: (theme: import("../../../../../typings/emotion").ScopedGigerTheme) => {
|
|
11
9
|
borderColor: string;
|
|
@@ -27,5 +25,12 @@ export declare const styles: {
|
|
|
27
25
|
right: number;
|
|
28
26
|
top: number;
|
|
29
27
|
};
|
|
28
|
+
paperlessText: (theme: import("../../../../../typings/emotion").ScopedGigerTheme) => {
|
|
29
|
+
display: string;
|
|
30
|
+
gap: number;
|
|
31
|
+
paddingTop: number;
|
|
32
|
+
color: string;
|
|
33
|
+
alignItems: string;
|
|
34
|
+
};
|
|
30
35
|
};
|
|
31
36
|
//# sourceMappingURL=rate-card.styles.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-card.styles.d.ts","sourceRoot":"","sources":["../../../../../../src/components/field/rate-select/rate-card/rate-card.styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAG5C,eAAO,MAAM,wBAAwB,GAAI,OAAO,KAAK,WAA2C,CAAC;AAEjG,eAAO,MAAM,MAAM
|
|
1
|
+
{"version":3,"file":"rate-card.styles.d.ts","sourceRoot":"","sources":["../../../../../../src/components/field/rate-select/rate-card/rate-card.styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAG5C,eAAO,MAAM,wBAAwB,GAAI,OAAO,KAAK,WAA2C,CAAC;AAEjG,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCjB,CAAC"}
|
|
@@ -7,6 +7,7 @@ export type RateSelectProps = {
|
|
|
7
7
|
isLoading?: boolean;
|
|
8
8
|
mapViewEnabled?: boolean;
|
|
9
9
|
nicknameFeature?: boolean;
|
|
10
|
+
onPaperlessAcknowledgementChange?: (usePaperlessLabel?: boolean, labelDisplayScheme?: SE.LabelDisplayScheme) => void;
|
|
10
11
|
onSelectServicePoint?: (servicePoint?: SE.ServicePoint) => void;
|
|
11
12
|
options: RateOption[];
|
|
12
13
|
preferredServiceCodes?: RateFormProps["preferredServiceCodes"];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-select.d.ts","sourceRoot":"","sources":["../../../../../src/components/field/rate-select/rate-select.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAIzC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAMlE,MAAM,MAAM,eAAe,GAAG;IAC5B,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oBAAoB,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,YAAY,KAAK,IAAI,CAAC;IAChE,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,qBAAqB,CAAC,EAAE,aAAa,CAAC,uBAAuB,CAAC,CAAC;IAC/D,mBAAmB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IACvD,kBAAkB,CAAC,EAAE,CAAC,eAAe,EAAE,OAAO,KAAK,IAAI,CAAC;IACxD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAaF,KAAK,iBAAiB,GAAG;IACvB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,eAAe,CAAC,eAAe,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"rate-select.d.ts","sourceRoot":"","sources":["../../../../../src/components/field/rate-select/rate-select.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAIzC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAMlE,MAAM,MAAM,eAAe,GAAG;IAC5B,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gCAAgC,CAAC,EAAE,CACjC,iBAAiB,CAAC,EAAE,OAAO,EAC3B,kBAAkB,CAAC,EAAE,EAAE,CAAC,kBAAkB,KACvC,IAAI,CAAC;IACV,oBAAoB,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,YAAY,KAAK,IAAI,CAAC;IAChE,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,qBAAqB,CAAC,EAAE,aAAa,CAAC,uBAAuB,CAAC,CAAC;IAC/D,mBAAmB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IACvD,kBAAkB,CAAC,EAAE,CAAC,eAAe,EAAE,OAAO,KAAK,IAAI,CAAC;IACxD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAaF,KAAK,iBAAiB,GAAG;IACvB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,eAAe,CAAC,eAAe,EAAE,iBAAiB,CAgF1E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"address-form-schema.d.ts","sourceRoot":"","sources":["../../../../../src/components/forms/address-form/address-form-schema.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"address-form-schema.d.ts","sourceRoot":"","sources":["../../../../../src/components/forms/address-form/address-form-schema.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAU7B,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgC7B,CAAC;AAEJ,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAK7B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAClE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
|