@shipengine/elements 0.37.4 → 0.37.20

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/index.cjs CHANGED
@@ -14659,6 +14659,7 @@ const RateForm = ({
14659
14659
  carriers,
14660
14660
  disabled,
14661
14661
  displayableRateErrors,
14662
+ displayableSaveRateErrors,
14662
14663
  errors,
14663
14664
  features,
14664
14665
  isLoading,
@@ -14791,6 +14792,12 @@ const RateForm = ({
14791
14792
  title: "errorTypes.rateInvalid"
14792
14793
  };
14793
14794
  }
14795
+ if (displayableSaveRateErrors === null || displayableSaveRateErrors === void 0 ? void 0 : displayableSaveRateErrors.length) {
14796
+ return {
14797
+ messages: displayableSaveRateErrors,
14798
+ title: "errorTypes.saveRate"
14799
+ };
14800
+ }
14794
14801
  if (labelErrors === null || labelErrors === void 0 ? void 0 : labelErrors.length) {
14795
14802
  return {
14796
14803
  messages: labelErrors,
@@ -14798,7 +14805,7 @@ const RateForm = ({
14798
14805
  };
14799
14806
  }
14800
14807
  return undefined;
14801
- }, [rateOptions, labelErrors, displayableRateErrors, outOfBandDisplayableErrors]);
14808
+ }, [displayableRateErrors, outOfBandDisplayableErrors, rateOptions.length, displayableSaveRateErrors, labelErrors]);
14802
14809
  return jsxRuntime.jsxs("form", Object.assign({
14803
14810
  id: "rate-form",
14804
14811
  onSubmit: handleSubmit,
@@ -16907,7 +16914,8 @@ var common = {
16907
16914
  warehouses: "Unable to load warehouses"
16908
16915
  },
16909
16916
  unknown: "Oops! Something went wrong.",
16910
- noRatesAvailable: "No rates available for this shipment. Please check your shipment configuration."
16917
+ noRatesAvailable: "No rates available for this shipment. Please check your shipment configuration.",
16918
+ saveRateError: "An error occurred while attempting to save your rate. Please try again later or save a different rate option."
16911
16919
  },
16912
16920
  errorTypes: {
16913
16921
  accountStatus: "Account status error",
@@ -16915,6 +16923,7 @@ var common = {
16915
16923
  integrations: "Integrations error",
16916
16924
  purchase: "Purchase error",
16917
16925
  rateInvalid: "Invalid rate configuration",
16926
+ saveRate: "Error saving rate",
16918
16927
  security: "Security error",
16919
16928
  shipmentStatus: "Shipment status error",
16920
16929
  system: "System error",
@@ -18195,11 +18204,14 @@ const useRatesForm = ({
18195
18204
  carrierId,
18196
18205
  serviceCode
18197
18206
  }) => __awaiter(void 0, void 0, void 0, function* () {
18207
+ var _d, _e;
18198
18208
  if (!shipment) throw new Error("shipment not found");
18209
+ // clear any errors before attempting to save
18210
+ setBeforeSaveError(undefined);
18199
18211
  try {
18200
18212
  const beforeSaveResponse = yield onBeforeRateSaved === null || onBeforeRateSaved === void 0 ? void 0 : onBeforeRateSaved(carrierId, serviceCode);
18201
18213
  let updatedShipment;
18202
- if (!beforeSaveResponse) {
18214
+ if (!beforeSaveResponse || Object.keys(beforeSaveResponse).length === 0) {
18203
18215
  updatedShipment = yield updateShipment(Object.assign(Object.assign({}, shipment), {
18204
18216
  carrierId,
18205
18217
  serviceCode,
@@ -18232,24 +18244,34 @@ const useRatesForm = ({
18232
18244
  return;
18233
18245
  }
18234
18246
  } catch (e) {
18235
- setBeforeSaveError({
18236
- errorCode: "unknown",
18237
- errorSource: "client",
18238
- errorType: "unknown",
18239
- message: e.message
18240
- });
18247
+ if (Array.isArray(e)) {
18248
+ if (e[0] instanceof alchemy.SE.CodedError) setBeforeSaveError(e[0]);else setBeforeSaveError({
18249
+ errorCode: "unknown",
18250
+ errorSource: "client",
18251
+ errorType: "unknown",
18252
+ message: (_d = e[0].message) !== null && _d !== void 0 ? _d : "An unknown error occurred"
18253
+ });
18254
+ } else {
18255
+ if (e instanceof alchemy.SE.CodedError) setBeforeSaveError(e);else setBeforeSaveError({
18256
+ errorCode: "unknown",
18257
+ errorSource: "client",
18258
+ errorType: "unknown",
18259
+ message: (_e = e.message) !== null && _e !== void 0 ? _e : "An unknown error occurred"
18260
+ });
18261
+ }
18262
+ return;
18241
18263
  }
18242
18264
  }), [onBeforeRateSaved, onUpdatedShipment, resetRates, shipment, updateShipment]);
18243
18265
  const handleSubmit = React.useCallback(rateId => __awaiter(void 0, void 0, void 0, function* () {
18244
- var _d;
18266
+ var _f, _g, _h;
18245
18267
  setBeforeCreateError(undefined);
18246
18268
  if (!shipment) return;
18247
18269
  const preferredRates = preferredRatesResponse === null || preferredRatesResponse === void 0 ? void 0 : preferredRatesResponse.map(r => r.rate);
18248
- const rate = [...((_d = ratesResponse === null || ratesResponse === void 0 ? void 0 : ratesResponse.rates) !== null && _d !== void 0 ? _d : []), ...(preferredRates !== null && preferredRates !== void 0 ? preferredRates : [])].find(r => r.rateId === rateId);
18270
+ const rate = [...((_f = ratesResponse === null || ratesResponse === void 0 ? void 0 : ratesResponse.rates) !== null && _f !== void 0 ? _f : []), ...(preferredRates !== null && preferredRates !== void 0 ? preferredRates : [])].find(r => r.rateId === rateId);
18249
18271
  if (rate) {
18250
18272
  try {
18251
18273
  const beforePurchaseResponse = yield onBeforeLabelCreate === null || onBeforeLabelCreate === void 0 ? void 0 : onBeforeLabelCreate(rate, shipment);
18252
- if (!beforePurchaseResponse) {
18274
+ if (!beforePurchaseResponse || Object.keys(beforePurchaseResponse).length === 0) {
18253
18275
  yield purchaseLabel(rateId, shipment, rate);
18254
18276
  return;
18255
18277
  }
@@ -18276,12 +18298,21 @@ const useRatesForm = ({
18276
18298
  }
18277
18299
  }
18278
18300
  } catch (e) {
18279
- setBeforeCreateError({
18280
- errorCode: "unknown",
18281
- errorSource: "client",
18282
- errorType: "unknown",
18283
- message: e.message
18284
- });
18301
+ if (Array.isArray(e)) {
18302
+ if (e[0] instanceof alchemy.SE.CodedError) setBeforeCreateError(e[0]);else setBeforeCreateError({
18303
+ errorCode: "unknown",
18304
+ errorSource: "client",
18305
+ errorType: "unknown",
18306
+ message: (_g = e[0].message) !== null && _g !== void 0 ? _g : "An unknown error occurred"
18307
+ });
18308
+ } else {
18309
+ if (e instanceof alchemy.SE.CodedError) setBeforeCreateError(e);else setBeforeCreateError({
18310
+ errorCode: "unknown",
18311
+ errorSource: "client",
18312
+ errorType: "unknown",
18313
+ message: (_h = e.message) !== null && _h !== void 0 ? _h : "An unknown error occurred"
18314
+ });
18315
+ }
18285
18316
  return;
18286
18317
  }
18287
18318
  }
@@ -18302,6 +18333,11 @@ const useRatesForm = ({
18302
18333
  name: "CodedError"
18303
18334
  }))) !== null && _b !== void 0 ? _b : [];
18304
18335
  }
18336
+ const displayableSaveRateErrors = useScrubErrors({
18337
+ errors: errors,
18338
+ predicate: React.useCallback(e => e.message.includes("Only residential delivery addresses are allowed for UPS Ground Saver."), []),
18339
+ scrubber: React.useCallback(() => "common:errorMessages.saveRateError", [])
18340
+ });
18305
18341
  const displayableRateErrors = useScrubErrors({
18306
18342
  errors: errors,
18307
18343
  predicate: React.useCallback(e => e.message.includes("No rates are available for service_codes"), []),
@@ -18314,6 +18350,7 @@ const useRatesForm = ({
18314
18350
  return {
18315
18351
  carriers,
18316
18352
  displayableRateErrors,
18353
+ displayableSaveRateErrors,
18317
18354
  errors: errors.length > 0 ? errors : undefined,
18318
18355
  isLoading: ratesCalculating,
18319
18356
  labelErrors: displayableLabelErrors,
package/index.js CHANGED
@@ -14627,6 +14627,7 @@ const RateForm = ({
14627
14627
  carriers,
14628
14628
  disabled,
14629
14629
  displayableRateErrors,
14630
+ displayableSaveRateErrors,
14630
14631
  errors,
14631
14632
  features,
14632
14633
  isLoading,
@@ -14759,6 +14760,12 @@ const RateForm = ({
14759
14760
  title: "errorTypes.rateInvalid"
14760
14761
  };
14761
14762
  }
14763
+ if (displayableSaveRateErrors === null || displayableSaveRateErrors === void 0 ? void 0 : displayableSaveRateErrors.length) {
14764
+ return {
14765
+ messages: displayableSaveRateErrors,
14766
+ title: "errorTypes.saveRate"
14767
+ };
14768
+ }
14762
14769
  if (labelErrors === null || labelErrors === void 0 ? void 0 : labelErrors.length) {
14763
14770
  return {
14764
14771
  messages: labelErrors,
@@ -14766,7 +14773,7 @@ const RateForm = ({
14766
14773
  };
14767
14774
  }
14768
14775
  return undefined;
14769
- }, [rateOptions, labelErrors, displayableRateErrors, outOfBandDisplayableErrors]);
14776
+ }, [displayableRateErrors, outOfBandDisplayableErrors, rateOptions.length, displayableSaveRateErrors, labelErrors]);
14770
14777
  return jsxs("form", Object.assign({
14771
14778
  id: "rate-form",
14772
14779
  onSubmit: handleSubmit,
@@ -16875,7 +16882,8 @@ var common = {
16875
16882
  warehouses: "Unable to load warehouses"
16876
16883
  },
16877
16884
  unknown: "Oops! Something went wrong.",
16878
- noRatesAvailable: "No rates available for this shipment. Please check your shipment configuration."
16885
+ noRatesAvailable: "No rates available for this shipment. Please check your shipment configuration.",
16886
+ saveRateError: "An error occurred while attempting to save your rate. Please try again later or save a different rate option."
16879
16887
  },
16880
16888
  errorTypes: {
16881
16889
  accountStatus: "Account status error",
@@ -16883,6 +16891,7 @@ var common = {
16883
16891
  integrations: "Integrations error",
16884
16892
  purchase: "Purchase error",
16885
16893
  rateInvalid: "Invalid rate configuration",
16894
+ saveRate: "Error saving rate",
16886
16895
  security: "Security error",
16887
16896
  shipmentStatus: "Shipment status error",
16888
16897
  system: "System error",
@@ -18163,11 +18172,14 @@ const useRatesForm = ({
18163
18172
  carrierId,
18164
18173
  serviceCode
18165
18174
  }) => __awaiter(void 0, void 0, void 0, function* () {
18175
+ var _d, _e;
18166
18176
  if (!shipment) throw new Error("shipment not found");
18177
+ // clear any errors before attempting to save
18178
+ setBeforeSaveError(undefined);
18167
18179
  try {
18168
18180
  const beforeSaveResponse = yield onBeforeRateSaved === null || onBeforeRateSaved === void 0 ? void 0 : onBeforeRateSaved(carrierId, serviceCode);
18169
18181
  let updatedShipment;
18170
- if (!beforeSaveResponse) {
18182
+ if (!beforeSaveResponse || Object.keys(beforeSaveResponse).length === 0) {
18171
18183
  updatedShipment = yield updateShipment(Object.assign(Object.assign({}, shipment), {
18172
18184
  carrierId,
18173
18185
  serviceCode,
@@ -18200,24 +18212,34 @@ const useRatesForm = ({
18200
18212
  return;
18201
18213
  }
18202
18214
  } catch (e) {
18203
- setBeforeSaveError({
18204
- errorCode: "unknown",
18205
- errorSource: "client",
18206
- errorType: "unknown",
18207
- message: e.message
18208
- });
18215
+ if (Array.isArray(e)) {
18216
+ if (e[0] instanceof SE.CodedError) setBeforeSaveError(e[0]);else setBeforeSaveError({
18217
+ errorCode: "unknown",
18218
+ errorSource: "client",
18219
+ errorType: "unknown",
18220
+ message: (_d = e[0].message) !== null && _d !== void 0 ? _d : "An unknown error occurred"
18221
+ });
18222
+ } else {
18223
+ if (e instanceof SE.CodedError) setBeforeSaveError(e);else setBeforeSaveError({
18224
+ errorCode: "unknown",
18225
+ errorSource: "client",
18226
+ errorType: "unknown",
18227
+ message: (_e = e.message) !== null && _e !== void 0 ? _e : "An unknown error occurred"
18228
+ });
18229
+ }
18230
+ return;
18209
18231
  }
18210
18232
  }), [onBeforeRateSaved, onUpdatedShipment, resetRates, shipment, updateShipment]);
18211
18233
  const handleSubmit = useCallback(rateId => __awaiter(void 0, void 0, void 0, function* () {
18212
- var _d;
18234
+ var _f, _g, _h;
18213
18235
  setBeforeCreateError(undefined);
18214
18236
  if (!shipment) return;
18215
18237
  const preferredRates = preferredRatesResponse === null || preferredRatesResponse === void 0 ? void 0 : preferredRatesResponse.map(r => r.rate);
18216
- const rate = [...((_d = ratesResponse === null || ratesResponse === void 0 ? void 0 : ratesResponse.rates) !== null && _d !== void 0 ? _d : []), ...(preferredRates !== null && preferredRates !== void 0 ? preferredRates : [])].find(r => r.rateId === rateId);
18238
+ const rate = [...((_f = ratesResponse === null || ratesResponse === void 0 ? void 0 : ratesResponse.rates) !== null && _f !== void 0 ? _f : []), ...(preferredRates !== null && preferredRates !== void 0 ? preferredRates : [])].find(r => r.rateId === rateId);
18217
18239
  if (rate) {
18218
18240
  try {
18219
18241
  const beforePurchaseResponse = yield onBeforeLabelCreate === null || onBeforeLabelCreate === void 0 ? void 0 : onBeforeLabelCreate(rate, shipment);
18220
- if (!beforePurchaseResponse) {
18242
+ if (!beforePurchaseResponse || Object.keys(beforePurchaseResponse).length === 0) {
18221
18243
  yield purchaseLabel(rateId, shipment, rate);
18222
18244
  return;
18223
18245
  }
@@ -18244,12 +18266,21 @@ const useRatesForm = ({
18244
18266
  }
18245
18267
  }
18246
18268
  } catch (e) {
18247
- setBeforeCreateError({
18248
- errorCode: "unknown",
18249
- errorSource: "client",
18250
- errorType: "unknown",
18251
- message: e.message
18252
- });
18269
+ if (Array.isArray(e)) {
18270
+ if (e[0] instanceof SE.CodedError) setBeforeCreateError(e[0]);else setBeforeCreateError({
18271
+ errorCode: "unknown",
18272
+ errorSource: "client",
18273
+ errorType: "unknown",
18274
+ message: (_g = e[0].message) !== null && _g !== void 0 ? _g : "An unknown error occurred"
18275
+ });
18276
+ } else {
18277
+ if (e instanceof SE.CodedError) setBeforeCreateError(e);else setBeforeCreateError({
18278
+ errorCode: "unknown",
18279
+ errorSource: "client",
18280
+ errorType: "unknown",
18281
+ message: (_h = e.message) !== null && _h !== void 0 ? _h : "An unknown error occurred"
18282
+ });
18283
+ }
18253
18284
  return;
18254
18285
  }
18255
18286
  }
@@ -18270,6 +18301,11 @@ const useRatesForm = ({
18270
18301
  name: "CodedError"
18271
18302
  }))) !== null && _b !== void 0 ? _b : [];
18272
18303
  }
18304
+ const displayableSaveRateErrors = useScrubErrors({
18305
+ errors: errors,
18306
+ predicate: useCallback(e => e.message.includes("Only residential delivery addresses are allowed for UPS Ground Saver."), []),
18307
+ scrubber: useCallback(() => "common:errorMessages.saveRateError", [])
18308
+ });
18273
18309
  const displayableRateErrors = useScrubErrors({
18274
18310
  errors: errors,
18275
18311
  predicate: useCallback(e => e.message.includes("No rates are available for service_codes"), []),
@@ -18282,6 +18318,7 @@ const useRatesForm = ({
18282
18318
  return {
18283
18319
  carriers,
18284
18320
  displayableRateErrors,
18321
+ displayableSaveRateErrors,
18285
18322
  errors: errors.length > 0 ? errors : undefined,
18286
18323
  isLoading: ratesCalculating,
18287
18324
  labelErrors: displayableLabelErrors,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shipengine/elements",
3
- "version": "0.37.4",
3
+ "version": "0.37.20",
4
4
  "peerDependencies": {
5
5
  "@packlink/giger": "*",
6
6
  "react-i18next": "*",
@@ -4,6 +4,7 @@ export type RateFormProps = {
4
4
  carriers?: SE.Carrier[];
5
5
  disabled?: boolean;
6
6
  displayableRateErrors?: string[];
7
+ displayableSaveRateErrors?: string[];
7
8
  errors?: SE.CodedError[];
8
9
  features?: ConfigureShipmentFeatures;
9
10
  isLoading?: boolean;
@@ -19,4 +20,4 @@ export type RateFormProps = {
19
20
  rates?: SE.Rate[];
20
21
  shipment?: SE.SalesOrderShipment;
21
22
  };
22
- export declare const RateForm: ({ carriers, disabled, displayableRateErrors, errors, features, isLoading, labelErrors, labels, labelsLoading, onSave, onSelectRate, onSubmit, outOfBandDisplayableErrors, preferredRates, preferredServiceCodes, rates, shipment, }: RateFormProps) => import("@emotion/react/jsx-runtime").JSX.Element;
23
+ export declare const RateForm: ({ carriers, disabled, displayableRateErrors, displayableSaveRateErrors, errors, features, isLoading, labelErrors, labels, labelsLoading, onSave, onSelectRate, onSubmit, outOfBandDisplayableErrors, preferredRates, preferredServiceCodes, rates, shipment, }: RateFormProps) => import("@emotion/react/jsx-runtime").JSX.Element;
@@ -637,6 +637,7 @@ export declare const Element: ({ resources, ...props }: ComponentProps & {
637
637
  };
638
638
  unknown: string;
639
639
  noRatesAvailable: string;
640
+ saveRateError: string;
640
641
  };
641
642
  errorTypes: {
642
643
  accountStatus: string;
@@ -644,6 +645,7 @@ export declare const Element: ({ resources, ...props }: ComponentProps & {
644
645
  integrations: string;
645
646
  purchase: string;
646
647
  rateInvalid: string;
648
+ saveRate: string;
647
649
  security: string;
648
650
  shipmentStatus: string;
649
651
  system: string;
@@ -24,6 +24,7 @@ export type UseRatesFormProps = {
24
24
  export declare const useRatesForm: ({ getPreferredRates, onBeforeRateSaved, onBeforeLabelCreate, onLabelCreateFailure, onLabelCreateSuccess, onRateSaved, onRatesCalculated, onShipmentUpdated, printLabelLayout, shipment, }: UseRatesFormProps) => {
25
25
  carriers: SE.Carrier[] | undefined;
26
26
  displayableRateErrors: string[] | undefined;
27
+ displayableSaveRateErrors: string[] | undefined;
27
28
  errors: SE.CodedError[] | undefined;
28
29
  isLoading: boolean;
29
30
  labelErrors: string[] | undefined;
@@ -621,6 +621,7 @@ export declare const Element: ({ resources, ...props }: ComponentProps & {
621
621
  };
622
622
  unknown: string;
623
623
  noRatesAvailable: string;
624
+ saveRateError: string;
624
625
  };
625
626
  errorTypes: {
626
627
  accountStatus: string;
@@ -628,6 +629,7 @@ export declare const Element: ({ resources, ...props }: ComponentProps & {
628
629
  integrations: string;
629
630
  purchase: string;
630
631
  rateInvalid: string;
632
+ saveRate: string;
631
633
  security: string;
632
634
  shipmentStatus: string;
633
635
  system: string;
@@ -718,6 +718,7 @@ export declare const Element: ({ resources, ...props }: ElementProps & {
718
718
  };
719
719
  unknown: string;
720
720
  noRatesAvailable: string;
721
+ saveRateError: string;
721
722
  };
722
723
  errorTypes: {
723
724
  accountStatus: string;
@@ -725,6 +726,7 @@ export declare const Element: ({ resources, ...props }: ElementProps & {
725
726
  integrations: string;
726
727
  purchase: string;
727
728
  rateInvalid: string;
729
+ saveRate: string;
728
730
  security: string;
729
731
  shipmentStatus: string;
730
732
  system: string;
@@ -762,30 +764,6 @@ export declare const Element: ({ resources, ...props }: ElementProps & {
762
764
  september: string;
763
765
  october: string;
764
766
  november: string;
765
- /**
766
- * # Purchase Label Component
767
- *
768
- * The `<PurchaseLabel />` component is used to purchase shipping labels from various carriers
769
- *
770
- * @param ElementProps The props necessary to render the `<PurchaseLabel />` component for shipment
771
- * based or sales order based label purchasing.
772
- *
773
- * @returns Element An EmotionJSX.Element that will render the `<PurchaseLabel />` component
774
- * with all the appropriate wrappers.
775
- *
776
- * @example
777
- * You can see how the `<Component />` is used in the `createElement` function call below.
778
- * ```tsx
779
- * export const Element = alchemy.createElement(Component, ErrorFallback, {
780
- * css: { height: "100%", maxWidth: "800px", minWidth: "440px", width: "100%" },
781
- * resources: { en },
782
- * });
783
- * ```
784
- *
785
- * <br />
786
- *
787
- * @see {@link PurchaseLabel.Element | The **Element** created to render `<PurchaseLabel />`}
788
- */
789
767
  december: string;
790
768
  };
791
769
  packageCategories: {
@@ -641,6 +641,7 @@ export declare const Element: ({ resources, ...props }: ComponentProps & {
641
641
  };
642
642
  unknown: string;
643
643
  noRatesAvailable: string;
644
+ saveRateError: string;
644
645
  };
645
646
  errorTypes: {
646
647
  accountStatus: string;
@@ -648,6 +649,7 @@ export declare const Element: ({ resources, ...props }: ComponentProps & {
648
649
  integrations: string;
649
650
  purchase: string;
650
651
  rateInvalid: string;
652
+ saveRate: string;
651
653
  security: string;
652
654
  shipmentStatus: string;
653
655
  system: string;
@@ -637,6 +637,7 @@ export declare const Element: ({ resources, ...props }: ComponentProps & {
637
637
  };
638
638
  unknown: string;
639
639
  noRatesAvailable: string;
640
+ saveRateError: string;
640
641
  };
641
642
  errorTypes: {
642
643
  accountStatus: string;
@@ -644,6 +645,7 @@ export declare const Element: ({ resources, ...props }: ComponentProps & {
644
645
  integrations: string;
645
646
  purchase: string;
646
647
  rateInvalid: string;
648
+ saveRate: string;
647
649
  security: string;
648
650
  shipmentStatus: string;
649
651
  system: string;
@@ -509,6 +509,7 @@ declare const _default: {
509
509
  };
510
510
  unknown: string;
511
511
  noRatesAvailable: string;
512
+ saveRateError: string;
512
513
  };
513
514
  errorTypes: {
514
515
  accountStatus: string;
@@ -516,6 +517,7 @@ declare const _default: {
516
517
  integrations: string;
517
518
  purchase: string;
518
519
  rateInvalid: string;
520
+ saveRate: string;
519
521
  security: string;
520
522
  shipmentStatus: string;
521
523
  system: string;