@shipengine/elements 2.27.0 → 2.28.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/components/field/rate-select/rate-card/rate-card.cjs +1 -0
- package/dist/cjs/components/forms/warehouse-form/warehouse-form.cjs +10 -1
- package/dist/cjs/components/service-card/service-card.cjs +3 -2
- package/dist/cjs/components/service-card/service-card.styles.cjs +4 -2
- package/dist/cjs/elements/labels-grid/hooks/use-labels-grid.cjs +2 -2
- package/dist/cjs/elements/labels-grid/labels-grid.cjs +29 -9
- package/dist/cjs/elements/labels-grid/labels-grid.styles.cjs +5 -0
- package/dist/cjs/elements/purchase-label/components/rate-form/rate-view.cjs +3 -5
- package/dist/cjs/elements/purchase-label/components/shipment-form/shipment-form.cjs +3 -1
- package/dist/cjs/elements/purchase-label/hooks/use-filter-visible-rate-options/use-filter-visible-rate-options.cjs +5 -5
- package/dist/cjs/elements/shipments-grid/hooks/use-shipments-grid.cjs +2 -2
- package/dist/cjs/elements/shipments-grid/shipments-grid.cjs +20 -6
- package/dist/cjs/elements/shipments-grid/shipments-grid.styles.cjs +5 -0
- package/dist/cjs/features/manage-warehouses/manage-warehouses.cjs +9 -5
- package/dist/cjs/hooks/use-configure-shipment.cjs +8 -0
- package/dist/cjs/hooks/use-get-service-data.cjs +60 -0
- package/dist/cjs/locales/en/list-labels.json.cjs +2 -1
- package/dist/cjs/locales/en/list-shipments.json.cjs +1 -1
- package/dist/cjs/locales/en/manage-warehouses.json.cjs +2 -0
- package/dist/cjs/package.json.cjs +1 -1
- package/dist/cjs/utilities/feature-flags/feature-flags.cjs +2 -1
- package/dist/cjs/workflows/onboarding/components/ship-from-address-step/ship-from-address-step.cjs +1 -1
- package/dist/esm/components/field/rate-select/rate-card/rate-card.js +1 -0
- package/dist/esm/components/forms/warehouse-form/warehouse-form.js +10 -1
- package/dist/esm/components/service-card/service-card.js +3 -2
- package/dist/esm/components/service-card/service-card.styles.js +4 -2
- package/dist/esm/elements/labels-grid/hooks/use-labels-grid.js +2 -2
- package/dist/esm/elements/labels-grid/labels-grid.js +30 -10
- package/dist/esm/elements/labels-grid/labels-grid.styles.js +5 -0
- package/dist/esm/elements/purchase-label/components/rate-form/rate-view.js +3 -5
- package/dist/esm/elements/purchase-label/components/shipment-form/shipment-form.js +3 -1
- package/dist/esm/elements/purchase-label/hooks/use-filter-visible-rate-options/use-filter-visible-rate-options.js +5 -5
- package/dist/esm/elements/shipments-grid/hooks/use-shipments-grid.js +2 -2
- package/dist/esm/elements/shipments-grid/shipments-grid.js +21 -7
- package/dist/esm/elements/shipments-grid/shipments-grid.styles.js +5 -0
- package/dist/esm/features/manage-warehouses/manage-warehouses.js +9 -5
- package/dist/esm/hooks/use-configure-shipment.js +8 -0
- package/dist/esm/hooks/use-get-service-data.js +58 -0
- package/dist/esm/locales/en/list-labels.json.js +2 -1
- package/dist/esm/locales/en/list-shipments.json.js +1 -1
- package/dist/esm/locales/en/manage-warehouses.json.js +2 -0
- package/dist/esm/package.json.js +1 -1
- package/dist/esm/utilities/feature-flags/feature-flags.js +2 -1
- package/dist/esm/workflows/onboarding/components/ship-from-address-step/ship-from-address-step.js +1 -1
- package/dist/types/components/field/rate-select/rate-card/rate-card.d.ts.map +1 -1
- package/dist/types/components/forms/warehouse-form/warehouse-form.d.ts.map +1 -1
- package/dist/types/components/service-card/service-card.d.ts +2 -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 +2 -1
- package/dist/types/components/service-card/service-card.styles.d.ts.map +1 -1
- package/dist/types/elements/customs-form/customs-form-element.d.ts +5 -2
- package/dist/types/elements/customs-form/customs-form-element.d.ts.map +1 -1
- package/dist/types/elements/labels-grid/labels-grid.d.ts +5 -2
- package/dist/types/elements/labels-grid/labels-grid.d.ts.map +1 -1
- package/dist/types/elements/labels-grid/labels-grid.styles.d.ts +5 -0
- package/dist/types/elements/labels-grid/labels-grid.styles.d.ts.map +1 -1
- package/dist/types/elements/manage-carriers/manage-carriers.d.ts +5 -2
- 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 +5 -2
- 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 +5 -2
- package/dist/types/elements/manage-funding/manage-funding-element.d.ts.map +1 -1
- package/dist/types/elements/manage-warehouses/manage-warehouses.d.ts +5 -2
- 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 +5 -2
- 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-view.d.ts +1 -1
- package/dist/types/elements/purchase-label/components/rate-form/rate-view.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 +2 -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/purchase-label.d.ts +5 -2
- 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 +5 -2
- 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 +5 -2
- package/dist/types/elements/shipment-summary/shipment-summary.d.ts.map +1 -1
- package/dist/types/elements/shipments-grid/shipments-grid.d.ts +5 -2
- package/dist/types/elements/shipments-grid/shipments-grid.d.ts.map +1 -1
- package/dist/types/elements/shipments-grid/shipments-grid.styles.d.ts +5 -0
- package/dist/types/elements/shipments-grid/shipments-grid.styles.d.ts.map +1 -1
- package/dist/types/elements/theme-creator/theme-creator.d.ts +5 -2
- package/dist/types/elements/theme-creator/theme-creator.d.ts.map +1 -1
- package/dist/types/elements/transaction-history/transaction-history-element.d.ts +5 -2
- 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 +5 -2
- 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 +5 -2
- package/dist/types/elements/vat-settings/vat-settings-element.d.ts.map +1 -1
- package/dist/types/elements/void-label/void-label.d.ts +5 -2
- package/dist/types/elements/void-label/void-label.d.ts.map +1 -1
- package/dist/types/features/manage-warehouses/manage-warehouses.d.ts.map +1 -1
- package/dist/types/hooks/use-configure-shipment.d.ts.map +1 -1
- package/dist/types/hooks/use-get-service-data.d.ts +14 -0
- package/dist/types/hooks/use-get-service-data.d.ts.map +1 -0
- package/dist/types/locales/en/index.d.ts +5 -2
- package/dist/types/locales/en/index.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/workflows/account-settings/account-settings.d.ts +5 -2
- package/dist/types/workflows/account-settings/account-settings.d.ts.map +1 -1
- package/dist/types/workflows/carrier-services/carrier-services.d.ts +5 -2
- 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 +5 -2
- 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 +5 -2
- package/dist/types/workflows/label-workflow/label-workflow.d.ts.map +1 -1
- package/dist/types/workflows/onboarding/components/ship-from-address-step/ship-from-address-step.d.ts.map +1 -1
- package/dist/types/workflows/onboarding/onboarding.d.ts +5 -2
- package/dist/types/workflows/onboarding/onboarding.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/cjs/hooks/use-get-service-name.cjs +0 -22
- package/dist/esm/hooks/use-get-service-name.js +0 -20
- package/dist/types/hooks/use-get-service-name.d.ts +0 -5
- package/dist/types/hooks/use-get-service-name.d.ts.map +0 -1
|
@@ -190,6 +190,7 @@ const RateCard = ({
|
|
|
190
190
|
carrierCode: carrierCode,
|
|
191
191
|
carrierFriendlyName: carrierFriendlyName,
|
|
192
192
|
costBreakdownProps: costBreakdownCommonProps,
|
|
193
|
+
hasRateAttributes: !!(rateAttributes === null || rateAttributes === void 0 ? void 0 : rateAttributes.length),
|
|
193
194
|
rateDetailsProps: showRateDetails ? {
|
|
194
195
|
rateDetails
|
|
195
196
|
} : undefined,
|
|
@@ -99,13 +99,22 @@ const WarehouseForm = ({
|
|
|
99
99
|
form: form,
|
|
100
100
|
formatFieldName: fieldName => `originAddress.${fieldName}`,
|
|
101
101
|
optionalFields: ["addressLine2", ...(requireEmail ? [] : ["email"])]
|
|
102
|
-
}), !shouldForceDefault
|
|
102
|
+
}), !shouldForceDefault ? jsxRuntime.jsx(checkboxInput.CheckboxInput, {
|
|
103
103
|
ariaLabel: "Is Default Warehouse",
|
|
104
104
|
checkboxLabel: t("manage-warehouses:isDefault"),
|
|
105
105
|
control: form.control,
|
|
106
106
|
form: formId,
|
|
107
107
|
label: "isDefault",
|
|
108
108
|
name: "isDefault"
|
|
109
|
+
}) : jsxRuntime.jsx(checkboxInput.CheckboxInput, {
|
|
110
|
+
ariaLabel: "Is Default Warehouse",
|
|
111
|
+
checkboxLabel: warehouse ? t("manage-warehouses:forcedDefault") : t("manage-warehouses:forcedDefaultNew"),
|
|
112
|
+
control: form.control,
|
|
113
|
+
defaultValue: true,
|
|
114
|
+
disabled: true,
|
|
115
|
+
form: formId,
|
|
116
|
+
label: "isDefault",
|
|
117
|
+
name: "isDefault"
|
|
109
118
|
}), jsxRuntime.jsx(checkboxInput.CheckboxInput, {
|
|
110
119
|
ariaLabel: "Return To Address Is Different",
|
|
111
120
|
checkboxLabel: t("manage-warehouses:returnToAddressIsDifferent"),
|
|
@@ -37,7 +37,8 @@ const ServiceCardHeader = ({
|
|
|
37
37
|
rateDetailsProps,
|
|
38
38
|
costBreakdownProps,
|
|
39
39
|
rightContentCss,
|
|
40
|
-
voided
|
|
40
|
+
voided,
|
|
41
|
+
hasRateAttributes
|
|
41
42
|
}) => {
|
|
42
43
|
const {
|
|
43
44
|
type,
|
|
@@ -48,7 +49,7 @@ const ServiceCardHeader = ({
|
|
|
48
49
|
return jsxRuntime.jsxs("div", {
|
|
49
50
|
"data-testid": "service-card-header",
|
|
50
51
|
children: [jsxRuntime.jsxs("section", {
|
|
51
|
-
css: serviceCard_styles.styles.
|
|
52
|
+
css: serviceCard_styles.styles.getSectionStyles(hasRateAttributes),
|
|
52
53
|
children: [carrierCode && jsxRuntime.jsx("div", {
|
|
53
54
|
css: serviceCard_styles.styles.carrierImage,
|
|
54
55
|
children: jsxRuntime.jsx(carrierIcon.CarrierIcon, {
|
|
@@ -47,12 +47,14 @@ const styles = styles$1.createStyles({
|
|
|
47
47
|
headerChildren: theme => ({
|
|
48
48
|
padding: `${styles$1.scopeTheme(theme).spacing(0)}px ${styles$1.scopeTheme(theme).spacing(2)}px ${styles$1.scopeTheme(theme).spacing(2)}px ${styles$1.scopeTheme(theme).spacing(2)}px`
|
|
49
49
|
}),
|
|
50
|
-
|
|
50
|
+
getSectionStyles: hasRateAttributes => theme => Object.assign({
|
|
51
51
|
alignItems: "flex-start",
|
|
52
52
|
display: "flex",
|
|
53
53
|
flexDirection: "row",
|
|
54
54
|
flexWrap: "nowrap",
|
|
55
|
-
padding: styles$1.scopeTheme(theme).spacing(
|
|
55
|
+
padding: styles$1.scopeTheme(theme).spacing(1.5)
|
|
56
|
+
}, hasRateAttributes && {
|
|
57
|
+
paddingTop: styles$1.scopeTheme(theme).spacing(0.75)
|
|
56
58
|
}),
|
|
57
59
|
serviceInfo: theme => ({
|
|
58
60
|
display: "flex",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var react = require('@emotion/react');
|
|
4
|
-
var
|
|
4
|
+
var useGetServiceData = require('../../../hooks/use-get-service-data.cjs');
|
|
5
5
|
var reactApi = require('@shipengine/react-api');
|
|
6
6
|
var files = require('../../../utilities/files.cjs');
|
|
7
7
|
var styles = require('../../../utilities/styles.cjs');
|
|
@@ -42,7 +42,7 @@ const useLabelsGrid = ({
|
|
|
42
42
|
const theme = react.useTheme();
|
|
43
43
|
const {
|
|
44
44
|
getServiceName
|
|
45
|
-
} =
|
|
45
|
+
} = useGetServiceData.useGetServiceData();
|
|
46
46
|
const {
|
|
47
47
|
page,
|
|
48
48
|
pageSize,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var jsxRuntime = require('@emotion/react/jsx-runtime');
|
|
4
|
+
var useGetServiceData = require('../../hooks/use-get-service-data.cjs');
|
|
4
5
|
var useSortableQuery = require('../../hooks/use-sortable-query.cjs');
|
|
5
6
|
var giger = require('@shipengine/giger');
|
|
6
7
|
var formatString = require('../../utilities/formatString.cjs');
|
|
@@ -21,6 +22,7 @@ var elementsContextProvider = require('../../elements-provider/elements-context-
|
|
|
21
22
|
var spacer = require('../../components/spacer/spacer.cjs');
|
|
22
23
|
var poweredByShipengine = require('../../components/powered-by-shipengine/powered-by-shipengine.cjs');
|
|
23
24
|
var errorFallback = require('../../components/error-fallback/error-fallback.cjs');
|
|
25
|
+
var carrierIcon = require('../../components/carrier-icon/carrier-icon.cjs');
|
|
24
26
|
|
|
25
27
|
const Component = ({
|
|
26
28
|
labelStatus,
|
|
@@ -106,6 +108,10 @@ const Component = ({
|
|
|
106
108
|
sortDir: sortState.dir,
|
|
107
109
|
columns: columnsArray
|
|
108
110
|
});
|
|
111
|
+
const {
|
|
112
|
+
getServiceInfo,
|
|
113
|
+
isLoadingCarriers
|
|
114
|
+
} = useGetServiceData.useGetServiceData();
|
|
109
115
|
React.useEffect(() => {
|
|
110
116
|
if (prevStatus.current !== labelStatus) {
|
|
111
117
|
pageConfig.pagerProps.resetCurrentPage();
|
|
@@ -292,14 +298,22 @@ const Component = ({
|
|
|
292
298
|
}
|
|
293
299
|
},
|
|
294
300
|
shippingService: {
|
|
295
|
-
headerContent: t("list-labels:headers.
|
|
301
|
+
headerContent: t("list-labels:headers.service"),
|
|
296
302
|
renderCellContent: label => {
|
|
303
|
+
const serviceInfo = getServiceInfo(label);
|
|
297
304
|
return jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
298
|
-
children: [jsxRuntime.jsx(giger.
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
305
|
+
children: [isLoadingCarriers ? jsxRuntime.jsx(giger.Skeleton, {}) : jsxRuntime.jsxs("div", {
|
|
306
|
+
css: labelsGrid_styles.styles.serviceCell,
|
|
307
|
+
children: [serviceInfo.hasCarrierIcon && serviceInfo.carrierCode && jsxRuntime.jsx(carrierIcon.CarrierIcon, {
|
|
308
|
+
carrierCode: serviceInfo.carrierCode,
|
|
309
|
+
carrierName: serviceInfo.serviceName || serviceInfo.carrierCode,
|
|
310
|
+
size: giger.IconSize.SIZE_SMALL
|
|
311
|
+
}), jsxRuntime.jsx(giger.Typography, {
|
|
312
|
+
component: "p",
|
|
313
|
+
css: labelsGrid_styles.styles.tableParagraph,
|
|
314
|
+
variant: "body2",
|
|
315
|
+
children: serviceInfo.serviceName || t("list-labels:none")
|
|
316
|
+
})]
|
|
303
317
|
}), label.trackable && jsxRuntime.jsx(giger.Next.Link, {
|
|
304
318
|
bold: false,
|
|
305
319
|
href: label.trackingUrl,
|
|
@@ -352,17 +366,23 @@ const Component = ({
|
|
|
352
366
|
}
|
|
353
367
|
}
|
|
354
368
|
});
|
|
369
|
+
const labelExpired = label => {
|
|
370
|
+
const ninetyDaysAgo = new Date();
|
|
371
|
+
ninetyDaysAgo.setDate(ninetyDaysAgo.getDate() - 90);
|
|
372
|
+
return new Date(label.createdAt) < ninetyDaysAgo;
|
|
373
|
+
};
|
|
355
374
|
// Actual actions are only allowed for completed labels
|
|
356
375
|
if ((features === null || features === void 0 ? void 0 : features.showActions) && labels.some(label => label.status === "completed")) {
|
|
357
376
|
cols.push({
|
|
358
377
|
headerContent: "",
|
|
359
378
|
renderCellContent: label => {
|
|
360
379
|
var _a, _b;
|
|
380
|
+
const isLabelExpired = labelExpired(label);
|
|
361
381
|
const isLabelDelivered = label.trackingStatus === "delivered";
|
|
362
|
-
const isReprintAllowed = !!((_a = label.labelDownload) === null || _a === void 0 ? void 0 : _a.href) && label.status === "completed";
|
|
363
382
|
const isVoidAllowed = !!onClickVoidLabel && label.status === "completed";
|
|
364
|
-
const isPrintFormsAllowed = !!((_b = label.formDownload) === null || _b === void 0 ? void 0 : _b.href) && label.status === "completed";
|
|
365
383
|
const isViewDetailsAllowed = !!onClickViewDetails;
|
|
384
|
+
const isReprintAllowed = !!((_a = label.labelDownload) === null || _a === void 0 ? void 0 : _a.href) && label.status === "completed" && !isLabelExpired;
|
|
385
|
+
const isPrintFormsAllowed = !!((_b = label.formDownload) === null || _b === void 0 ? void 0 : _b.href) && label.status === "completed" && !isLabelExpired;
|
|
366
386
|
const allowActionsMenu = isReprintAllowed || isVoidAllowed || isPrintFormsAllowed || isViewDetailsAllowed;
|
|
367
387
|
if (isLabelDelivered || !allowActionsMenu) {
|
|
368
388
|
return null;
|
|
@@ -391,7 +411,7 @@ const Component = ({
|
|
|
391
411
|
});
|
|
392
412
|
}
|
|
393
413
|
return cols;
|
|
394
|
-
}, [t, toggleCreatedDateSort, sortState.createdAtDir, features === null || features === void 0 ? void 0 : features.columns, features === null || features === void 0 ? void 0 : features.showActions, labels, onClickExternalOrderId, onClickExternalShipmentId, onClickShipmentNumber, onClickTrackingNumber, onClickVoidLabel, onClickViewDetails, onClickPrintLabel, onClickPrintForms]);
|
|
414
|
+
}, [t, toggleCreatedDateSort, sortState.createdAtDir, features === null || features === void 0 ? void 0 : features.columns, features === null || features === void 0 ? void 0 : features.showActions, labels, onClickExternalOrderId, onClickExternalShipmentId, onClickShipmentNumber, getServiceInfo, isLoadingCarriers, onClickTrackingNumber, onClickVoidLabel, onClickViewDetails, onClickPrintLabel, onClickPrintForms]);
|
|
395
415
|
const emptyContentComponent = React.useMemo(() => {
|
|
396
416
|
if (isLoading) {
|
|
397
417
|
return undefined;
|
|
@@ -34,7 +34,6 @@ const RateView = ({
|
|
|
34
34
|
rateOptions,
|
|
35
35
|
rates,
|
|
36
36
|
salesOrder: salesOrder$1,
|
|
37
|
-
selectedRate,
|
|
38
37
|
shipment,
|
|
39
38
|
showVatFeatures
|
|
40
39
|
}) => {
|
|
@@ -78,9 +77,8 @@ const RateView = ({
|
|
|
78
77
|
}, [features === null || features === void 0 ? void 0 : features.enablePudoUI, pudoRateOptions, rateOptions]);
|
|
79
78
|
const {
|
|
80
79
|
collapsedRateOptionList,
|
|
81
|
-
COLLAPSED_RATE_VIEW_LIMIT,
|
|
82
80
|
filterVisibleRateOptions
|
|
83
|
-
} = useFilterVisibleRateOptions.useFilterVisibleRateOptions(expandedRateOptionList);
|
|
81
|
+
} = useFilterVisibleRateOptions.useFilterVisibleRateOptions(expandedRateOptionList, features);
|
|
84
82
|
const handleShowMoreRates = React.useCallback(() => {
|
|
85
83
|
var _a;
|
|
86
84
|
setShowHiddenRates === null || setShowHiddenRates === void 0 ? void 0 : setShowHiddenRates(!showHiddenRates);
|
|
@@ -199,8 +197,8 @@ const RateView = ({
|
|
|
199
197
|
onClick: onSelectRate,
|
|
200
198
|
onPaperlessAcknowledgementChange: onPaperlessAcknowledgementChange,
|
|
201
199
|
onSelectServicePoint: onSelectServicePoint,
|
|
202
|
-
options: showHiddenRates ? expandedRateOptionList : collapsedRateOptionList
|
|
203
|
-
}, rateSelectCommonProps)), expandedRateOptionList.length >
|
|
200
|
+
options: showHiddenRates || !collapsedRateOptionList.length ? expandedRateOptionList : collapsedRateOptionList
|
|
201
|
+
}, rateSelectCommonProps)), expandedRateOptionList.length > collapsedRateOptionList.length && !!collapsedRateOptionList.length && jsxRuntime.jsx(linkAction.LinkAction, {
|
|
204
202
|
css: rateForm_styles.styles.showMoreOrLessRatesButton,
|
|
205
203
|
icon: showHiddenRates ? "chevronTop" : "chevronBottom",
|
|
206
204
|
iconPlacement: "right",
|
|
@@ -517,13 +517,15 @@ const ShipmentForm = ({
|
|
|
517
517
|
React.useEffect(() => {
|
|
518
518
|
hasShipFromAddressErrors && toggleIsEditShipFromAddressFormOpen();
|
|
519
519
|
}, [hasShipFromAddressErrors, toggleIsEditShipFromAddressFormOpen]);
|
|
520
|
+
const warehouseToEdit = React.useMemo(() => warehouses$1 === null || warehouses$1 === void 0 ? void 0 : warehouses$1.find(w => w.warehouseId === editShipFromAddressId), [editShipFromAddressId, warehouses$1]);
|
|
520
521
|
const [editWarehouseForm, isEditWarehouseFormOpen, toggleIsEditWarehouseFormOpen] = useNestedForm.useNestedForm(warehouseForm.WarehouseForm, {
|
|
521
522
|
formId: "edit-warehouse-form",
|
|
522
523
|
onSubmit: payload => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
523
524
|
editShipFromAddressId && (yield handleSubmitEditWarehouse(payload, editShipFromAddressId));
|
|
524
525
|
}),
|
|
525
526
|
submitButtonTitle: t("actions.save"),
|
|
526
|
-
warehouse:
|
|
527
|
+
warehouse: warehouseToEdit,
|
|
528
|
+
shouldForceDefault: warehouseToEdit === null || warehouseToEdit === void 0 ? void 0 : warehouseToEdit.isDefault
|
|
527
529
|
});
|
|
528
530
|
const getFundingSourceInsuranceProviderKey = React.useCallback(provider => {
|
|
529
531
|
if (provider === "parcelguard") {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var React = require('react');
|
|
4
4
|
|
|
5
5
|
const COLLAPSED_RATE_VIEW_LIMIT = 4;
|
|
6
|
-
const filterRateOptions = rateOptions => {
|
|
6
|
+
const filterRateOptions = (rateOptions, showMediaMail) => {
|
|
7
7
|
const hasRateAttributes = option => {
|
|
8
8
|
var _a;
|
|
9
9
|
return !!((_a = option.rateAttributes) === null || _a === void 0 ? void 0 : _a.length);
|
|
@@ -14,7 +14,7 @@ const filterRateOptions = rateOptions => {
|
|
|
14
14
|
const ratesWithoutAttributes = [];
|
|
15
15
|
// Classify rates (excluding Media Mail from both categories)
|
|
16
16
|
for (const option of rateOptions) {
|
|
17
|
-
if (isMediaMail(option)) {
|
|
17
|
+
if (!showMediaMail && isMediaMail(option)) {
|
|
18
18
|
continue; // Skip Media Mail entirely - it will only show in "Show more"
|
|
19
19
|
}
|
|
20
20
|
if (hasRateAttributes(option)) {
|
|
@@ -42,9 +42,9 @@ const filterRateOptions = rateOptions => {
|
|
|
42
42
|
* - Fill remaining slots with regular rates
|
|
43
43
|
* - Media Mail is always excluded from the collapsed view
|
|
44
44
|
*/
|
|
45
|
-
const useFilterVisibleRateOptions = rateOptions => {
|
|
46
|
-
const collapsedRateOptionList = React.useMemo(() => filterRateOptions(rateOptions), [rateOptions]);
|
|
47
|
-
const filterVisibleRateOptions = React.useCallback(options => filterRateOptions(options), []);
|
|
45
|
+
const useFilterVisibleRateOptions = (rateOptions, features) => {
|
|
46
|
+
const collapsedRateOptionList = React.useMemo(() => filterRateOptions(rateOptions, features === null || features === void 0 ? void 0 : features.showMediaMail), [rateOptions, features]);
|
|
47
|
+
const filterVisibleRateOptions = React.useCallback(options => filterRateOptions(options, features === null || features === void 0 ? void 0 : features.showMediaMail), [features]);
|
|
48
48
|
return {
|
|
49
49
|
COLLAPSED_RATE_VIEW_LIMIT,
|
|
50
50
|
collapsedRateOptionList,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var useGetServiceData = require('../../../hooks/use-get-service-data.cjs');
|
|
4
4
|
var reactApi = require('@shipengine/react-api');
|
|
5
5
|
var files = require('../../../utilities/files.cjs');
|
|
6
6
|
var React = require('react');
|
|
@@ -30,7 +30,7 @@ const useShipmentsGrid = ({
|
|
|
30
30
|
const initialFilters = getInitialFilters(showShipmentIdFilter, showCreatedDateFilter);
|
|
31
31
|
const {
|
|
32
32
|
getServiceName
|
|
33
|
-
} =
|
|
33
|
+
} = useGetServiceData.useGetServiceData();
|
|
34
34
|
const {
|
|
35
35
|
page,
|
|
36
36
|
pageSize,
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var _tslib = require('../../_virtual/_tslib.cjs');
|
|
4
4
|
var jsxRuntime = require('@emotion/react/jsx-runtime');
|
|
5
|
+
var useGetServiceData = require('../../hooks/use-get-service-data.cjs');
|
|
5
6
|
var useSortableQuery = require('../../hooks/use-sortable-query.cjs');
|
|
6
7
|
var giger = require('@shipengine/giger');
|
|
7
8
|
var React = require('react');
|
|
@@ -14,6 +15,7 @@ var index = require('../../locales/en/index.cjs');
|
|
|
14
15
|
var createElement = require('../../create-element/create-element.cjs');
|
|
15
16
|
var elementsContextProvider = require('../../elements-provider/elements-context-provider.cjs');
|
|
16
17
|
var errorState = require('../../components/error-state/error-state.cjs');
|
|
18
|
+
var carrierIcon = require('../../components/carrier-icon/carrier-icon.cjs');
|
|
17
19
|
var cellFormattedDate = require('../../components/grid-controller/cell-formatted-date.cjs');
|
|
18
20
|
var sortableHeader = require('../../components/grid-controller/sortable-header/sortable-header.cjs');
|
|
19
21
|
var gridController = require('../../components/grid-controller/grid-controller.cjs');
|
|
@@ -87,6 +89,10 @@ const Component = ({
|
|
|
87
89
|
sortBy: sortState.by,
|
|
88
90
|
sortDir: sortState.dir
|
|
89
91
|
});
|
|
92
|
+
const {
|
|
93
|
+
getServiceInfo,
|
|
94
|
+
isLoadingCarriers
|
|
95
|
+
} = useGetServiceData.useGetServiceData();
|
|
90
96
|
const onRowClick = shipment => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
91
97
|
setActiveShipmentId(shipment.shipmentId);
|
|
92
98
|
yield onRowClickProp === null || onRowClickProp === void 0 ? void 0 : onRowClickProp(shipment);
|
|
@@ -190,13 +196,21 @@ const Component = ({
|
|
|
190
196
|
}) : "--";
|
|
191
197
|
}
|
|
192
198
|
}, {
|
|
193
|
-
headerContent: t("list-shipments:headers.
|
|
199
|
+
headerContent: t("list-shipments:headers.service"),
|
|
194
200
|
renderCellContent: shipment => {
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
css: shipmentsGrid_styles.styles.
|
|
198
|
-
|
|
199
|
-
|
|
201
|
+
const serviceInfo = getServiceInfo(shipment);
|
|
202
|
+
return isLoadingCarriers ? jsxRuntime.jsx(giger.Skeleton, {}) : jsxRuntime.jsxs("div", {
|
|
203
|
+
css: shipmentsGrid_styles.styles.serviceCell,
|
|
204
|
+
children: [serviceInfo.hasCarrierIcon && serviceInfo.carrierCode && jsxRuntime.jsx(carrierIcon.CarrierIcon, {
|
|
205
|
+
carrierCode: serviceInfo.carrierCode,
|
|
206
|
+
carrierName: serviceInfo.serviceName || serviceInfo.carrierCode,
|
|
207
|
+
size: giger.IconSize.SIZE_SMALL
|
|
208
|
+
}), jsxRuntime.jsx(giger.Typography, {
|
|
209
|
+
component: "p",
|
|
210
|
+
css: shipmentsGrid_styles.styles.tableParagraph,
|
|
211
|
+
variant: "body2",
|
|
212
|
+
children: serviceInfo.serviceName || t("list-shipments:none")
|
|
213
|
+
})]
|
|
200
214
|
});
|
|
201
215
|
}
|
|
202
216
|
}, {
|
|
@@ -107,6 +107,7 @@ const ManageWarehouses = ({
|
|
|
107
107
|
yield handleSubmitAddNewWarehouse(payload);
|
|
108
108
|
toggleShowAddNewWarehouseForm(false);
|
|
109
109
|
}),
|
|
110
|
+
shouldForceDefault: !(warehouses === null || warehouses === void 0 ? void 0 : warehouses.length),
|
|
110
111
|
submitButtonTitle: t("actions.save")
|
|
111
112
|
})
|
|
112
113
|
}) : jsxRuntime.jsx(buttonGroup.ButtonGroup, {
|
|
@@ -141,17 +142,20 @@ const ManageWarehouses = ({
|
|
|
141
142
|
yield handleSubmitEditWarehouse(Object.assign(Object.assign({}, rest), warehouseData), warehouse.warehouseId);
|
|
142
143
|
setEditWarehouseId(undefined);
|
|
143
144
|
}),
|
|
144
|
-
children: jsxRuntime.jsx(warehouseForm.WarehouseForm
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
onDelete: warehouse.isDefault ? undefined : () => handleDeleteWarehouse(warehouse.warehouseId),
|
|
145
|
+
children: jsxRuntime.jsx(warehouseForm.WarehouseForm
|
|
146
|
+
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
147
|
+
, {
|
|
148
148
|
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
149
149
|
onSubmit: payload => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
150
150
|
yield handleSubmitEditWarehouse(payload, warehouse.warehouseId);
|
|
151
151
|
setEditWarehouseId(undefined);
|
|
152
152
|
}),
|
|
153
|
+
shouldForceDefault: warehouse.isDefault,
|
|
153
154
|
submitButtonTitle: t("actions.save"),
|
|
154
|
-
warehouse: warehouse
|
|
155
|
+
warehouse: warehouse,
|
|
156
|
+
onCancel: () => setEditWarehouseId(undefined),
|
|
157
|
+
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
158
|
+
onDelete: warehouse.isDefault ? undefined : () => handleDeleteWarehouse(warehouse.warehouseId)
|
|
155
159
|
})
|
|
156
160
|
}, warehouse.warehouseId);
|
|
157
161
|
} else {
|
|
@@ -114,6 +114,14 @@ const useConfigureShipment = ({
|
|
|
114
114
|
isSuccess: salesOrderShipmentCreated
|
|
115
115
|
} = reactApi.useCreateSalesOrderShipment();
|
|
116
116
|
const pendingSalesOrderShipment = shipment.getShipmentByStatus("pending", salesOrderShipments);
|
|
117
|
+
if (pendingSalesOrderShipment) {
|
|
118
|
+
// ensure state code is uppercase for form hydration. SE API may return mixed case state codes.
|
|
119
|
+
pendingSalesOrderShipment.shipFrom.stateProvince = pendingSalesOrderShipment.shipFrom.stateProvince.toUpperCase();
|
|
120
|
+
pendingSalesOrderShipment.shipTo.stateProvince = pendingSalesOrderShipment.shipTo.stateProvince.toUpperCase();
|
|
121
|
+
if (pendingSalesOrderShipment.returnTo) {
|
|
122
|
+
pendingSalesOrderShipment.returnTo.stateProvince = pendingSalesOrderShipment.returnTo.stateProvince.toUpperCase();
|
|
123
|
+
}
|
|
124
|
+
}
|
|
117
125
|
const labelPurchasedSalesOrderShipment = shipment.getShipmentByStatus("label_purchased", salesOrderShipments);
|
|
118
126
|
const cancelledShipment = shipment.getShipmentByStatus("cancelled", salesOrderShipments);
|
|
119
127
|
const defaultWarehouse = warehouses.getDefaultWarehouse(warehouses$1);
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var reactApi = require('@shipengine/react-api');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
|
|
6
|
+
const formatServiceCode = serviceCode => {
|
|
7
|
+
return serviceCode.split("_").map((word, index) => {
|
|
8
|
+
if (index === 0) return word.toUpperCase();
|
|
9
|
+
return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
|
|
10
|
+
}).join(" ");
|
|
11
|
+
};
|
|
12
|
+
const useGetServiceData = () => {
|
|
13
|
+
const {
|
|
14
|
+
data: carrierList,
|
|
15
|
+
isLoading,
|
|
16
|
+
isError
|
|
17
|
+
} = reactApi.useListCarriers();
|
|
18
|
+
const getServiceInfo = React.useCallback(item => {
|
|
19
|
+
const {
|
|
20
|
+
serviceCode,
|
|
21
|
+
carrierId
|
|
22
|
+
} = item;
|
|
23
|
+
const labelCarrierCode = item.carrierCode;
|
|
24
|
+
// Error fetching carriers
|
|
25
|
+
if (isError) {
|
|
26
|
+
return {
|
|
27
|
+
serviceName: serviceCode !== null && serviceCode !== void 0 ? serviceCode : undefined,
|
|
28
|
+
carrierCode: undefined,
|
|
29
|
+
hasCarrierIcon: false
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
const carrier = carrierList === null || carrierList === void 0 ? void 0 : carrierList.find(c => c.carrierId === carrierId || c.carrierCode === labelCarrierCode);
|
|
33
|
+
// No carrier found for the given carrierId or carrierCode
|
|
34
|
+
if (!carrier) {
|
|
35
|
+
const serviceName = serviceCode ? formatServiceCode(serviceCode) : undefined;
|
|
36
|
+
const carrierCode = labelCarrierCode || undefined;
|
|
37
|
+
return {
|
|
38
|
+
serviceName,
|
|
39
|
+
carrierCode,
|
|
40
|
+
hasCarrierIcon: !!carrierCode
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
const service = carrier.services.find(s => s.serviceCode === serviceCode);
|
|
44
|
+
const carrierCode = labelCarrierCode || carrier.carrierCode;
|
|
45
|
+
const serviceName = (service === null || service === void 0 ? void 0 : service.name) || serviceCode || undefined;
|
|
46
|
+
return {
|
|
47
|
+
serviceName,
|
|
48
|
+
carrierCode,
|
|
49
|
+
hasCarrierIcon: !!service && !!carrierCode
|
|
50
|
+
};
|
|
51
|
+
}, [carrierList, isError]);
|
|
52
|
+
const getServiceName = React.useCallback(item => getServiceInfo(item).serviceName, [getServiceInfo]);
|
|
53
|
+
return {
|
|
54
|
+
getServiceInfo,
|
|
55
|
+
getServiceName,
|
|
56
|
+
isLoadingCarriers: isLoading
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
exports.useGetServiceData = useGetServiceData;
|
|
@@ -3,12 +3,13 @@
|
|
|
3
3
|
var listLabels = {
|
|
4
4
|
"list-labels": {
|
|
5
5
|
title: "List Labels",
|
|
6
|
+
none: "None",
|
|
6
7
|
headers: {
|
|
7
8
|
created: "Created Date",
|
|
8
9
|
shipmentId: "Shipment ID",
|
|
9
10
|
parcels: "Parcels",
|
|
10
11
|
recipient: "Recipient",
|
|
11
|
-
|
|
12
|
+
service: "Service",
|
|
12
13
|
shipDate: "Ship Date",
|
|
13
14
|
status: "Label Status",
|
|
14
15
|
trackingStatus: "Delivery Status",
|
|
@@ -7,6 +7,8 @@ var manageWarehouses = {
|
|
|
7
7
|
editWarehouse: "Edit Address",
|
|
8
8
|
contactName: "Contact Name",
|
|
9
9
|
"default": "Default",
|
|
10
|
+
forcedDefault: "This is your default Ship From Address",
|
|
11
|
+
forcedDefaultNew: "This will be your default Ship From Address",
|
|
10
12
|
isDefault: "Set as default Ship From address",
|
|
11
13
|
locationName: "Location Name",
|
|
12
14
|
residentialAddress: "Residential Address",
|
package/dist/cjs/workflows/onboarding/components/ship-from-address-step/ship-from-address-step.cjs
CHANGED
|
@@ -45,7 +45,7 @@ const ShipFromAddressStep = ({
|
|
|
45
45
|
}), jsxRuntime.jsx(warehouseForm.WarehouseForm, {
|
|
46
46
|
onSubmit: onSubmit,
|
|
47
47
|
requireEmail: true,
|
|
48
|
-
shouldForceDefault:
|
|
48
|
+
shouldForceDefault: true,
|
|
49
49
|
submitButtonTitle: t("actions.continue"),
|
|
50
50
|
useStrictSchema: true,
|
|
51
51
|
warehouse: pendingWarehouse !== null && pendingWarehouse !== void 0 ? pendingWarehouse : pendingShipFrom
|
|
@@ -188,6 +188,7 @@ const RateCard = ({
|
|
|
188
188
|
carrierCode: carrierCode,
|
|
189
189
|
carrierFriendlyName: carrierFriendlyName,
|
|
190
190
|
costBreakdownProps: costBreakdownCommonProps,
|
|
191
|
+
hasRateAttributes: !!(rateAttributes === null || rateAttributes === void 0 ? void 0 : rateAttributes.length),
|
|
191
192
|
rateDetailsProps: showRateDetails ? {
|
|
192
193
|
rateDetails
|
|
193
194
|
} : undefined,
|
|
@@ -97,13 +97,22 @@ const WarehouseForm = ({
|
|
|
97
97
|
form: form,
|
|
98
98
|
formatFieldName: fieldName => `originAddress.${fieldName}`,
|
|
99
99
|
optionalFields: ["addressLine2", ...(requireEmail ? [] : ["email"])]
|
|
100
|
-
}), !shouldForceDefault
|
|
100
|
+
}), !shouldForceDefault ? jsx(CheckboxInput, {
|
|
101
101
|
ariaLabel: "Is Default Warehouse",
|
|
102
102
|
checkboxLabel: t("manage-warehouses:isDefault"),
|
|
103
103
|
control: form.control,
|
|
104
104
|
form: formId,
|
|
105
105
|
label: "isDefault",
|
|
106
106
|
name: "isDefault"
|
|
107
|
+
}) : jsx(CheckboxInput, {
|
|
108
|
+
ariaLabel: "Is Default Warehouse",
|
|
109
|
+
checkboxLabel: warehouse ? t("manage-warehouses:forcedDefault") : t("manage-warehouses:forcedDefaultNew"),
|
|
110
|
+
control: form.control,
|
|
111
|
+
defaultValue: true,
|
|
112
|
+
disabled: true,
|
|
113
|
+
form: formId,
|
|
114
|
+
label: "isDefault",
|
|
115
|
+
name: "isDefault"
|
|
107
116
|
}), jsx(CheckboxInput, {
|
|
108
117
|
ariaLabel: "Return To Address Is Different",
|
|
109
118
|
checkboxLabel: t("manage-warehouses:returnToAddressIsDifferent"),
|
|
@@ -35,7 +35,8 @@ const ServiceCardHeader = ({
|
|
|
35
35
|
rateDetailsProps,
|
|
36
36
|
costBreakdownProps,
|
|
37
37
|
rightContentCss,
|
|
38
|
-
voided
|
|
38
|
+
voided,
|
|
39
|
+
hasRateAttributes
|
|
39
40
|
}) => {
|
|
40
41
|
const {
|
|
41
42
|
type,
|
|
@@ -46,7 +47,7 @@ const ServiceCardHeader = ({
|
|
|
46
47
|
return jsxs("div", {
|
|
47
48
|
"data-testid": "service-card-header",
|
|
48
49
|
children: [jsxs("section", {
|
|
49
|
-
css: styles.
|
|
50
|
+
css: styles.getSectionStyles(hasRateAttributes),
|
|
50
51
|
children: [carrierCode && jsx("div", {
|
|
51
52
|
css: styles.carrierImage,
|
|
52
53
|
children: jsx(CarrierIcon, {
|
|
@@ -45,12 +45,14 @@ const styles = createStyles({
|
|
|
45
45
|
headerChildren: theme => ({
|
|
46
46
|
padding: `${scopeTheme(theme).spacing(0)}px ${scopeTheme(theme).spacing(2)}px ${scopeTheme(theme).spacing(2)}px ${scopeTheme(theme).spacing(2)}px`
|
|
47
47
|
}),
|
|
48
|
-
|
|
48
|
+
getSectionStyles: hasRateAttributes => theme => Object.assign({
|
|
49
49
|
alignItems: "flex-start",
|
|
50
50
|
display: "flex",
|
|
51
51
|
flexDirection: "row",
|
|
52
52
|
flexWrap: "nowrap",
|
|
53
|
-
padding: scopeTheme(theme).spacing(
|
|
53
|
+
padding: scopeTheme(theme).spacing(1.5)
|
|
54
|
+
}, hasRateAttributes && {
|
|
55
|
+
paddingTop: scopeTheme(theme).spacing(0.75)
|
|
54
56
|
}),
|
|
55
57
|
serviceInfo: theme => ({
|
|
56
58
|
display: "flex",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useTheme } from '@emotion/react';
|
|
2
|
-
import {
|
|
2
|
+
import { useGetServiceData } from '../../../hooks/use-get-service-data.js';
|
|
3
3
|
import { useListLabels, useExportLabels, useListSalesOrderShipments, useGetLabel } from '@shipengine/react-api';
|
|
4
4
|
import { createLocalFileFromBlobResponse } from '../../../utilities/files.js';
|
|
5
5
|
import { scopeTheme } from '../../../utilities/styles.js';
|
|
@@ -40,7 +40,7 @@ const useLabelsGrid = ({
|
|
|
40
40
|
const theme = useTheme();
|
|
41
41
|
const {
|
|
42
42
|
getServiceName
|
|
43
|
-
} =
|
|
43
|
+
} = useGetServiceData();
|
|
44
44
|
const {
|
|
45
45
|
page,
|
|
46
46
|
pageSize,
|