@shipengine/elements 2.24.1 → 2.26.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/display-term/display-term.cjs +13 -4
- 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/grid-controller/error-banner/error-banner.cjs +74 -0
- package/dist/cjs/components/{error-display/error-display.styles.cjs → grid-controller/error-banner/error-banner.styles.cjs} +8 -4
- package/dist/cjs/components/grid-controller/error-banner/index.cjs +7 -0
- package/dist/cjs/components/grid-controller/grid-controller.cjs +49 -3
- package/dist/cjs/components/grid-controller/grid-controller.styles.cjs +11 -1
- package/dist/cjs/components/history/history-card/history-card.cjs +1 -1
- package/dist/cjs/components/history/history-card-extension/history-card-extension.cjs +0 -1
- 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/components/ups-terms-disclosure/index.cjs +7 -0
- package/dist/cjs/components/ups-terms-disclosure/ups-terms-disclosure.cjs +35 -0
- package/dist/cjs/elements/labels-grid/hooks/use-labels-grid.cjs +45 -5
- package/dist/cjs/elements/labels-grid/labels-grid.cjs +24 -6
- 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/elements/shipments-grid/hooks/use-shipments-grid.cjs +41 -3
- package/dist/cjs/elements/shipments-grid/shipments-grid.cjs +18 -3
- package/dist/cjs/features/manage-carriers/hooks/use-list-funding-source-carriers.cjs +9 -10
- package/dist/cjs/features/manage-carriers/manage-carriers-row/manage-carriers-row.cjs +6 -1
- package/dist/cjs/features/manage-carriers/register-funding-source-carrier-form/register-funding-source-carrier-form.cjs +3 -3
- 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/grid-controller.json.cjs +13 -0
- package/dist/cjs/locales/en/index.cjs +2 -1
- package/dist/cjs/locales/en/onboarding.json.cjs +5 -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/files.cjs +35 -0
- package/dist/cjs/utilities/formatString.cjs +9 -0
- package/dist/cjs/utilities/index.cjs +5 -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 +18 -11
- package/dist/cjs/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.styles.cjs +0 -3
- package/dist/cjs/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.cjs +36 -12
- package/dist/cjs/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.styles.cjs +10 -4
- package/dist/cjs/workflows/onboarding/components/terms-agreement-step/use-terms-agreement-step.cjs +12 -12
- package/dist/esm/components/display-term/display-term.js +14 -5
- 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/grid-controller/error-banner/error-banner.js +72 -0
- package/dist/esm/components/{error-display/error-display.styles.js → grid-controller/error-banner/error-banner.styles.js} +8 -4
- package/dist/esm/components/grid-controller/error-banner/index.js +1 -0
- package/dist/esm/components/grid-controller/grid-controller.js +51 -5
- package/dist/esm/components/grid-controller/grid-controller.styles.js +11 -1
- package/dist/esm/components/history/history-card/history-card.js +1 -1
- package/dist/esm/components/history/history-card-extension/history-card-extension.js +0 -1
- 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/components/ups-terms-disclosure/index.js +1 -0
- package/dist/esm/components/ups-terms-disclosure/ups-terms-disclosure.js +33 -0
- package/dist/esm/elements/labels-grid/hooks/use-labels-grid.js +46 -6
- package/dist/esm/elements/labels-grid/labels-grid.js +24 -6
- 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/elements/shipments-grid/hooks/use-shipments-grid.js +42 -4
- package/dist/esm/elements/shipments-grid/shipments-grid.js +18 -3
- package/dist/esm/features/manage-carriers/hooks/use-list-funding-source-carriers.js +9 -10
- package/dist/esm/features/manage-carriers/manage-carriers-row/manage-carriers-row.js +7 -2
- package/dist/esm/features/manage-carriers/register-funding-source-carrier-form/register-funding-source-carrier-form.js +3 -3
- 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/grid-controller.json.js +11 -0
- package/dist/esm/locales/en/index.js +2 -1
- package/dist/esm/locales/en/onboarding.json.js +5 -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/files.js +32 -0
- package/dist/esm/utilities/formatString.js +9 -1
- package/dist/esm/utilities/index.js +2 -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 +18 -11
- package/dist/esm/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.styles.js +0 -3
- package/dist/esm/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.js +37 -13
- package/dist/esm/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.styles.js +10 -4
- package/dist/esm/workflows/onboarding/components/terms-agreement-step/use-terms-agreement-step.js +12 -12
- package/dist/types/components/display-term/display-term.d.ts +3 -3
- package/dist/types/components/display-term/display-term.d.ts.map +1 -1
- 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/grid-controller/error-banner/error-banner.d.ts +10 -0
- package/dist/types/components/grid-controller/error-banner/error-banner.d.ts.map +1 -0
- package/dist/types/components/grid-controller/error-banner/error-banner.styles.d.ts +24 -0
- package/dist/types/components/grid-controller/error-banner/error-banner.styles.d.ts.map +1 -0
- package/dist/types/components/grid-controller/error-banner/index.d.ts +2 -0
- package/dist/types/components/grid-controller/error-banner/index.d.ts.map +1 -0
- package/dist/types/components/grid-controller/grid-controller.d.ts +8 -1
- package/dist/types/components/grid-controller/grid-controller.d.ts.map +1 -1
- package/dist/types/components/grid-controller/grid-controller.styles.d.ts +10 -0
- package/dist/types/components/grid-controller/grid-controller.styles.d.ts.map +1 -1
- package/dist/types/components/history/history-card-extension/history-card-extension.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/components/ups-terms-disclosure/index.d.ts +2 -0
- package/dist/types/components/ups-terms-disclosure/index.d.ts.map +1 -0
- package/dist/types/components/ups-terms-disclosure/ups-terms-disclosure.d.ts +2 -0
- package/dist/types/components/ups-terms-disclosure/ups-terms-disclosure.d.ts.map +1 -0
- package/dist/types/elements/labels-grid/hooks/use-labels-grid.d.ts +7 -2
- package/dist/types/elements/labels-grid/hooks/use-labels-grid.d.ts.map +1 -1
- package/dist/types/elements/labels-grid/labels-grid.d.ts +29 -3
- package/dist/types/elements/labels-grid/labels-grid.d.ts.map +1 -1
- package/dist/types/elements/manage-carriers/manage-carriers.d.ts +23 -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 +23 -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 +23 -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 +23 -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 +23 -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 +23 -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 +23 -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 +23 -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 +6 -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 +32 -2
- package/dist/types/elements/shipments-grid/shipments-grid.d.ts.map +1 -1
- package/dist/types/elements/theme-creator/theme-creator.d.ts +23 -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 +23 -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 +23 -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 +23 -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 +23 -1
- package/dist/types/elements/void-label/void-label.d.ts.map +1 -1
- package/dist/types/features/manage-carriers/hooks/use-list-funding-source-carriers.d.ts.map +1 -1
- package/dist/types/features/manage-carriers/manage-carriers-row/manage-carriers-row.d.ts.map +1 -1
- package/dist/types/features/manage-carriers/register-funding-source-carrier-form/register-funding-source-carrier-form.d.ts +3 -2
- package/dist/types/features/manage-carriers/register-funding-source-carrier-form/register-funding-source-carrier-form.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 +23 -1
- package/dist/types/locales/en/index.d.ts.map +1 -1
- package/dist/types/types/index.d.ts +5 -4
- package/dist/types/types/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/types/terms-with-disclosure.d.ts +7 -0
- package/dist/types/types/terms-with-disclosure.d.ts.map +1 -0
- 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 +5 -1
- package/dist/types/utilities/feature-flags/types.d.ts.map +1 -1
- package/dist/types/utilities/files.d.ts +12 -0
- package/dist/types/utilities/files.d.ts.map +1 -0
- package/dist/types/utilities/formatString.d.ts +8 -0
- package/dist/types/utilities/formatString.d.ts.map +1 -1
- package/dist/types/utilities/index.d.ts +2 -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 +23 -1
- package/dist/types/workflows/account-settings/account-settings.d.ts.map +1 -1
- package/dist/types/workflows/carrier-services/carrier-services.d.ts +23 -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 +23 -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 +23 -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 +4 -2
- 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-form/terms-agreement-form.styles.d.ts +0 -3
- package/dist/types/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.styles.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/terms-agreement-step.styles.d.ts +8 -2
- package/dist/types/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.styles.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 +23 -1
- package/dist/types/workflows/onboarding/onboarding.d.ts.map +1 -1
- package/package.json +3 -3
- package/dist/cjs/components/error-display/error-display.cjs +0 -34
- package/dist/cjs/components/error-display/index.cjs +0 -7
- package/dist/esm/components/error-display/error-display.js +0 -32
- package/dist/esm/components/error-display/index.js +0 -1
- package/dist/types/components/error-display/error-display.d.ts +0 -7
- package/dist/types/components/error-display/error-display.d.ts.map +0 -1
- package/dist/types/components/error-display/error-display.styles.d.ts +0 -20
- package/dist/types/components/error-display/error-display.styles.d.ts.map +0 -1
- package/dist/types/components/error-display/index.d.ts +0 -2
- package/dist/types/components/error-display/index.d.ts.map +0 -1
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { jsxs, jsx } from '@emotion/react/jsx-runtime';
|
|
2
|
+
import { Typography } from '@shipengine/giger';
|
|
3
|
+
import { createStyles, scopeTheme } from '../../utilities/styles.js';
|
|
4
|
+
import { useTranslation } from 'react-i18next';
|
|
5
|
+
|
|
6
|
+
const styles = createStyles({
|
|
7
|
+
upsDisclosure: theme => ({
|
|
8
|
+
display: "flex",
|
|
9
|
+
flexDirection: "column",
|
|
10
|
+
gap: scopeTheme(theme).spacing(1)
|
|
11
|
+
})
|
|
12
|
+
});
|
|
13
|
+
const UPSTermsDisclosure = () => {
|
|
14
|
+
const {
|
|
15
|
+
t
|
|
16
|
+
} = useTranslation();
|
|
17
|
+
return jsxs("div", {
|
|
18
|
+
css: styles.upsDisclosure,
|
|
19
|
+
children: [jsx(Typography, {
|
|
20
|
+
bold: true,
|
|
21
|
+
variant: "body1",
|
|
22
|
+
children: t("onboarding:upsDisclosure.title")
|
|
23
|
+
}), jsx(Typography, {
|
|
24
|
+
variant: "body1",
|
|
25
|
+
children: t("onboarding:upsDisclosure.line1")
|
|
26
|
+
}), jsx(Typography, {
|
|
27
|
+
variant: "body1",
|
|
28
|
+
children: t("onboarding:upsDisclosure.line2")
|
|
29
|
+
})]
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export { UPSTermsDisclosure };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { useTheme } from '@emotion/react';
|
|
2
2
|
import { useGetServiceName } from '../../../hooks/use-get-service-name.js';
|
|
3
|
-
import { useListLabels, useListSalesOrderShipments, useGetLabel } from '@shipengine/react-api';
|
|
3
|
+
import { useListLabels, useExportLabels, useListSalesOrderShipments, useGetLabel } from '@shipengine/react-api';
|
|
4
|
+
import { createLocalFileFromBlobResponse } from '../../../utilities/files.js';
|
|
4
5
|
import { scopeTheme } from '../../../utilities/styles.js';
|
|
5
6
|
import { useState, useCallback, useEffect, useMemo } from 'react';
|
|
6
7
|
import { useTrackingStatusFilter } from './use-tracking-status-filter.js';
|
|
@@ -14,9 +15,10 @@ const useLabelsGrid = ({
|
|
|
14
15
|
showStatusFilter,
|
|
15
16
|
showTrackingStatusFilter,
|
|
16
17
|
fetchShipments,
|
|
17
|
-
sortDir
|
|
18
|
+
sortDir,
|
|
19
|
+
columns
|
|
18
20
|
}) => {
|
|
19
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
21
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
20
22
|
const initialFilters = {
|
|
21
23
|
labelId: {
|
|
22
24
|
enabled: !!showLabelIdFilter,
|
|
@@ -45,6 +47,7 @@ const useLabelsGrid = ({
|
|
|
45
47
|
pagerProps
|
|
46
48
|
} = usePager(PAGE_SIZE);
|
|
47
49
|
const [filters, setFilters] = useState(initialFilters);
|
|
50
|
+
const [enabledLabelsExport, setEnabledLabelsExport] = useState(false);
|
|
48
51
|
const clearAllFilters = () => {
|
|
49
52
|
setFilters(initialFilters);
|
|
50
53
|
};
|
|
@@ -132,6 +135,39 @@ const useLabelsGrid = ({
|
|
|
132
135
|
sortDir: sortDir !== null && sortDir !== void 0 ? sortDir : "desc"
|
|
133
136
|
}
|
|
134
137
|
});
|
|
138
|
+
const {
|
|
139
|
+
data: exportLabelsData,
|
|
140
|
+
isInitialLoading: isExportLabelsinitialLoading,
|
|
141
|
+
isRefetching,
|
|
142
|
+
isError: isExportLabelsError
|
|
143
|
+
} = useExportLabels({
|
|
144
|
+
enabled: enabledLabelsExport,
|
|
145
|
+
queryFnParams: {
|
|
146
|
+
labelStatus: ((_g = filters.status) === null || _g === void 0 ? void 0 : _g.value) || labelStatus,
|
|
147
|
+
labelId: ((_h = filters.labelId) === null || _h === void 0 ? void 0 : _h.value) || undefined,
|
|
148
|
+
shipmentId: filters.shipmentId.value || undefined,
|
|
149
|
+
sortDir: sortDir !== null && sortDir !== void 0 ? sortDir : "desc",
|
|
150
|
+
columns
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
useEffect(() => {
|
|
154
|
+
if (exportLabelsData && !isExportLabelsinitialLoading && !isRefetching) {
|
|
155
|
+
createLocalFileFromBlobResponse("label", exportLabelsData);
|
|
156
|
+
setEnabledLabelsExport(false);
|
|
157
|
+
}
|
|
158
|
+
}, [isExportLabelsinitialLoading, isRefetching, exportLabelsData]);
|
|
159
|
+
// This function will be called when the error display duration ends
|
|
160
|
+
const onExportErrorDurationEnd = () => {
|
|
161
|
+
setEnabledLabelsExport(false);
|
|
162
|
+
};
|
|
163
|
+
const onClickExportLabelsCSV = () => {
|
|
164
|
+
if (exportLabelsData) {
|
|
165
|
+
createLocalFileFromBlobResponse("label", exportLabelsData);
|
|
166
|
+
setEnabledLabelsExport(false);
|
|
167
|
+
} else {
|
|
168
|
+
setEnabledLabelsExport(true);
|
|
169
|
+
}
|
|
170
|
+
};
|
|
135
171
|
const labels = useMemo(() => {
|
|
136
172
|
// If tracking status filter is active, use the filtered labels from the hook
|
|
137
173
|
if (isTrackingStatusFilterActive) {
|
|
@@ -167,8 +203,8 @@ const useLabelsGrid = ({
|
|
|
167
203
|
data: labelFilterData,
|
|
168
204
|
isError: isLabelFilterError,
|
|
169
205
|
isInitialLoading: isLabelFilterLoading
|
|
170
|
-
} = useGetLabel(((
|
|
171
|
-
const isLabelFilterActive = (
|
|
206
|
+
} = useGetLabel(((_j = filters.labelId) === null || _j === void 0 ? void 0 : _j.value) || undefined);
|
|
207
|
+
const isLabelFilterActive = (_k = filters.labelId) === null || _k === void 0 ? void 0 : _k.value;
|
|
172
208
|
const isStatusFilteredOut = (status, filter) => {
|
|
173
209
|
return (filter === null || filter === void 0 ? void 0 : filter.length) && !filter.includes(status);
|
|
174
210
|
};
|
|
@@ -225,13 +261,16 @@ const useLabelsGrid = ({
|
|
|
225
261
|
return [];
|
|
226
262
|
};
|
|
227
263
|
return {
|
|
264
|
+
onClickExportLabelsCSV,
|
|
228
265
|
clearAllFilters,
|
|
229
266
|
filters,
|
|
230
267
|
getGridData,
|
|
231
268
|
hasMoreUnfetchedResults: isTrackingStatusFilterActive ? hasMoreUnfetchedResults : false,
|
|
232
269
|
isAnyFilterActive,
|
|
270
|
+
isExportLabelsError,
|
|
233
271
|
isError: isListLabelsError || isListShipmentsError && fetchShipments,
|
|
234
272
|
isFetchingNextPage: isTrackingStatusFilterActive ? isFetchingNextPage : false,
|
|
273
|
+
onExportErrorDurationEnd,
|
|
235
274
|
// Calculate isLoading based on which query should be active
|
|
236
275
|
isLoading:
|
|
237
276
|
// Always include label filter loading when label ID filter is active
|
|
@@ -249,7 +288,8 @@ const useLabelsGrid = ({
|
|
|
249
288
|
totalElements: labelFilteredById ? 1 : isTrackingStatusFilterActive ? (statusFilteredPaginationInfo === null || statusFilteredPaginationInfo === void 0 ? void 0 : statusFilteredPaginationInfo.totalCount) || 0 : (listLabelsData === null || listLabelsData === void 0 ? void 0 : listLabelsData.total) || 0
|
|
250
289
|
},
|
|
251
290
|
setFilters: onSetFilters,
|
|
252
|
-
shouldShowFilters: isAnyFilterEnabled
|
|
291
|
+
shouldShowFilters: isAnyFilterEnabled,
|
|
292
|
+
isExportLabelsLoading: isExportLabelsinitialLoading || isRefetching
|
|
253
293
|
};
|
|
254
294
|
};
|
|
255
295
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from '@emotion/react/jsx-runtime';
|
|
2
2
|
import { useSortableQuery } from '../../hooks/use-sortable-query.js';
|
|
3
3
|
import { EmptyState, Button, Tag, TagColor, TagVariant, Typography, Next } from '@shipengine/giger';
|
|
4
|
+
import { toSnakeCase } from '../../utilities/formatString.js';
|
|
4
5
|
import { useRef, useMemo, useEffect, useCallback } from 'react';
|
|
5
6
|
import { useTranslation } from 'react-i18next';
|
|
6
7
|
import { useLabelsGrid } from './hooks/use-labels-grid.js';
|
|
@@ -30,9 +31,10 @@ const Component = ({
|
|
|
30
31
|
onRowClick,
|
|
31
32
|
onClickExternalOrderId,
|
|
32
33
|
onClickExternalShipmentId,
|
|
33
|
-
onClickShipmentNumber
|
|
34
|
+
onClickShipmentNumber,
|
|
35
|
+
onLabelsCSVExportClick
|
|
34
36
|
}) => {
|
|
35
|
-
var _a, _b, _c;
|
|
37
|
+
var _a, _b, _c, _d;
|
|
36
38
|
const {
|
|
37
39
|
t
|
|
38
40
|
} = useTranslation(["common", "list-labels"]);
|
|
@@ -74,6 +76,7 @@ const Component = ({
|
|
|
74
76
|
const showShipmentIdFilter = shipmentIdColumn && ((_b = shipmentIdColumn.allowFilter) !== null && _b !== void 0 ? _b : true);
|
|
75
77
|
const showStatusFilter = statusColumn && ((_c = statusColumn.allowFilter) !== null && _c !== void 0 ? _c : true);
|
|
76
78
|
const showTrackingStatusFilter = trackingStatusColumn && !!trackingStatusColumn.allowFilter;
|
|
79
|
+
const columnsArray = (_d = features === null || features === void 0 ? void 0 : features.columns) === null || _d === void 0 ? void 0 : _d.map(column => toSnakeCase(column.name));
|
|
77
80
|
const {
|
|
78
81
|
labels,
|
|
79
82
|
getGridData,
|
|
@@ -86,7 +89,11 @@ const Component = ({
|
|
|
86
89
|
pageConfig,
|
|
87
90
|
isAnyFilterActive,
|
|
88
91
|
shouldShowFilters,
|
|
89
|
-
clearAllFilters
|
|
92
|
+
clearAllFilters,
|
|
93
|
+
onClickExportLabelsCSV,
|
|
94
|
+
isExportLabelsError,
|
|
95
|
+
isExportLabelsLoading,
|
|
96
|
+
onExportErrorDurationEnd
|
|
90
97
|
} = useLabelsGrid({
|
|
91
98
|
fetchShipments: !!shipmentNumberColumn,
|
|
92
99
|
labelStatus,
|
|
@@ -94,7 +101,8 @@ const Component = ({
|
|
|
94
101
|
showShipmentIdFilter,
|
|
95
102
|
showStatusFilter,
|
|
96
103
|
showTrackingStatusFilter,
|
|
97
|
-
sortDir: sortState.dir
|
|
104
|
+
sortDir: sortState.dir,
|
|
105
|
+
columns: columnsArray
|
|
98
106
|
});
|
|
99
107
|
useEffect(() => {
|
|
100
108
|
if (prevStatus.current !== labelStatus) {
|
|
@@ -381,7 +389,7 @@ const Component = ({
|
|
|
381
389
|
});
|
|
382
390
|
}
|
|
383
391
|
return cols;
|
|
384
|
-
}, [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, onClickVoidLabel, onClickViewDetails, onClickPrintLabel, onClickPrintForms]);
|
|
392
|
+
}, [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]);
|
|
385
393
|
const emptyContentComponent = useMemo(() => {
|
|
386
394
|
if (isLoading) {
|
|
387
395
|
return undefined;
|
|
@@ -432,8 +440,18 @@ const Component = ({
|
|
|
432
440
|
showPagination: pageConfig.showPagination,
|
|
433
441
|
total: pageConfig.totalElements
|
|
434
442
|
}),
|
|
443
|
+
hasExportCSVError: isExportLabelsError,
|
|
444
|
+
hasTrackingStatusFilter: showTrackingStatusFilter,
|
|
445
|
+
isExportCSVLoading: isExportLabelsLoading,
|
|
435
446
|
isLoading: isLoading,
|
|
436
|
-
|
|
447
|
+
onClickExportCSV: () => {
|
|
448
|
+
onClickExportLabelsCSV();
|
|
449
|
+
onLabelsCSVExportClick === null || onLabelsCSVExportClick === void 0 ? void 0 : onLabelsCSVExportClick();
|
|
450
|
+
},
|
|
451
|
+
onExportErrorDurationEnd: onExportErrorDurationEnd,
|
|
452
|
+
onRowClick: onRowClick,
|
|
453
|
+
showExportCSV: features === null || features === void 0 ? void 0 : features.showExportCSVButton,
|
|
454
|
+
totalAmountGridItems: pageConfig.totalElements
|
|
437
455
|
}), globalFeatures.poweredByShipEngine && jsxs(Fragment, {
|
|
438
456
|
children: [jsx(Spacer, {}), jsx(PoweredByShipEngine, {})]
|
|
439
457
|
})]
|
|
@@ -3,7 +3,7 @@ import { jsxs, jsx, Fragment } from '@emotion/react/jsx-runtime';
|
|
|
3
3
|
import { useQueryClient } from '@tanstack/react-query';
|
|
4
4
|
import { formLogger } from '../../../../utilities/form-logger.js';
|
|
5
5
|
import { validationResolver } from '../../../../utilities/validation.js';
|
|
6
|
-
import { useRef, useState,
|
|
6
|
+
import { useRef, useState, useCallback, useMemo, useEffect } from 'react';
|
|
7
7
|
import { useForm } from 'react-hook-form';
|
|
8
8
|
import { useTranslation } from 'react-i18next';
|
|
9
9
|
import { rateSchema } from './rate-schema.js';
|
|
@@ -62,19 +62,28 @@ const RateForm = ({
|
|
|
62
62
|
defaultValues: {
|
|
63
63
|
rate: {
|
|
64
64
|
isAcknowledged: true,
|
|
65
|
-
rateId: undefined
|
|
65
|
+
rateId: undefined,
|
|
66
|
+
labelDisplayScheme: undefined
|
|
66
67
|
}
|
|
67
68
|
},
|
|
68
69
|
mode: "onChange",
|
|
69
70
|
resolver: validationResolver(rateSchema)
|
|
70
71
|
});
|
|
72
|
+
const handlePaperlessAcknowledgementChange = useCallback((_usePaperlessLabel, labelDisplayScheme) => {
|
|
73
|
+
form.setValue("rate.labelDisplayScheme", labelDisplayScheme, {
|
|
74
|
+
shouldDirty: true
|
|
75
|
+
});
|
|
76
|
+
}, [form]);
|
|
71
77
|
const {
|
|
72
78
|
rateId: selectedRateId
|
|
73
79
|
} = form.watch("rate");
|
|
74
80
|
const handleSubmit = formLogger.capture(form.handleSubmit(values => __awaiter(void 0, void 0, void 0, function* () {
|
|
75
|
-
const
|
|
81
|
+
const {
|
|
82
|
+
rateId,
|
|
83
|
+
labelDisplayScheme
|
|
84
|
+
} = values;
|
|
76
85
|
try {
|
|
77
|
-
yield onSubmit === null || onSubmit === void 0 ? void 0 : onSubmit(rateId, selectedServicePoint);
|
|
86
|
+
yield onSubmit === null || onSubmit === void 0 ? void 0 : onSubmit(rateId, selectedServicePoint, labelDisplayScheme);
|
|
78
87
|
} finally {
|
|
79
88
|
// Invalidate carrier queries after the rate form is submitted, regardless of success.
|
|
80
89
|
// This allows the carrier balance to refresh if the purchase failed but funding succeeded.
|
|
@@ -177,6 +186,7 @@ const RateForm = ({
|
|
|
177
186
|
form: form,
|
|
178
187
|
isCalculatingRates: isCalculatingRates,
|
|
179
188
|
isSavingRate: isSavingRate,
|
|
189
|
+
onPaperlessAcknowledgementChange: handlePaperlessAcknowledgementChange,
|
|
180
190
|
onSelectRate: rateId => {
|
|
181
191
|
const selectedRate = rateOptions.find(r => r.rateId === rateId);
|
|
182
192
|
if (selectedRate) {
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
|
|
3
|
+
const labelDisplaySchemeEnum = z.enum(["label", "paperless", "qr_code", "label_and_paperless"]);
|
|
3
4
|
const rateSchema = z.object({
|
|
4
5
|
rate: z.object({
|
|
5
6
|
isAcknowledged: z.boolean().refine(v => v === true, "purchase-label:schemaErrors.needToAcknowledge"),
|
|
6
|
-
rateId: z.string()
|
|
7
|
+
rateId: z.string(),
|
|
8
|
+
labelDisplayScheme: labelDisplaySchemeEnum.optional()
|
|
7
9
|
})
|
|
8
|
-
}).transform(schema =>
|
|
10
|
+
}).transform(schema => ({
|
|
11
|
+
rateId: schema.rate.rateId,
|
|
12
|
+
labelDisplayScheme: schema.rate.labelDisplayScheme
|
|
13
|
+
}));
|
|
9
14
|
|
|
10
15
|
export { rateSchema };
|
|
@@ -21,6 +21,7 @@ const RateView = ({
|
|
|
21
21
|
form,
|
|
22
22
|
isCalculatingRates,
|
|
23
23
|
isSavingRate,
|
|
24
|
+
onPaperlessAcknowledgementChange,
|
|
24
25
|
onSelectRate,
|
|
25
26
|
preferredServiceCodes,
|
|
26
27
|
pudoServicePointDetails = {
|
|
@@ -194,6 +195,7 @@ const RateView = ({
|
|
|
194
195
|
label: "Rate",
|
|
195
196
|
name: "rate",
|
|
196
197
|
onClick: onSelectRate,
|
|
198
|
+
onPaperlessAcknowledgementChange: onPaperlessAcknowledgementChange,
|
|
197
199
|
onSelectServicePoint: onSelectServicePoint,
|
|
198
200
|
options: showHiddenRates ? expandedRateOptionList : collapsedRateOptionList
|
|
199
201
|
}, rateSelectCommonProps)), expandedRateOptionList.length > COLLAPSED_RATE_VIEW_LIMIT && jsx(LinkAction, {
|
|
@@ -9,6 +9,22 @@ import { useWindsorFramework } from './use-windsor-framework.js';
|
|
|
9
9
|
import { PudoType } from '../../../types/pudo.js';
|
|
10
10
|
import { CanadaDeliveredDutyOptions } from '../../../types/canada-ddp.js';
|
|
11
11
|
|
|
12
|
+
/* https://auctane.atlassian.net/browse/ENGINE-7329
|
|
13
|
+
* For iteration one we would hardcode services for which it will be available (in the future this data will be in the registry. We will change hardcoding then)
|
|
14
|
+
* carriersWithPaperless and servicesWithPaperless are hardcoded for iteration one
|
|
15
|
+
*/
|
|
16
|
+
const hermesPaperlessSupportedServices = ["hermes_domestic_parcelshop_dropoff", "hermes_domestic_parcelshop_dropoff_next_day", "hermes_postable", "hermes_postable_next_day"];
|
|
17
|
+
const paperlessSupportedCarriers = [{
|
|
18
|
+
carrier: "hermes",
|
|
19
|
+
services: hermesPaperlessSupportedServices,
|
|
20
|
+
displaySchemes: ["label_and_paperless"]
|
|
21
|
+
}, {
|
|
22
|
+
carrier: "usps",
|
|
23
|
+
displaySchemes: ["qr_code"]
|
|
24
|
+
}, {
|
|
25
|
+
carrier: "stamps_com",
|
|
26
|
+
displaySchemes: ["qr_code"]
|
|
27
|
+
}];
|
|
12
28
|
/**
|
|
13
29
|
* @internal
|
|
14
30
|
*
|
|
@@ -35,6 +51,17 @@ const useRateOptions = (rates, fundingOrigin, preferredRates, carriers, shipment
|
|
|
35
51
|
var _a;
|
|
36
52
|
return ((_a = shipment === null || shipment === void 0 ? void 0 : shipment.advancedOptions) === null || _a === void 0 ? void 0 : _a.canadaDeliveredDuty) === CanadaDeliveredDutyOptions.SENDER_PREPAY;
|
|
37
53
|
}, [(_a = shipment === null || shipment === void 0 ? void 0 : shipment.advancedOptions) === null || _a === void 0 ? void 0 : _a.canadaDeliveredDuty]);
|
|
54
|
+
const buildSupportedLabelDisplaySchemes = (carrierCode, serviceCode) => {
|
|
55
|
+
const carrier = paperlessSupportedCarriers.find(c => c.carrier === carrierCode);
|
|
56
|
+
if (!carrier || carrier.services && !carrier.services.includes(serviceCode)) {
|
|
57
|
+
return [];
|
|
58
|
+
}
|
|
59
|
+
// Only return USPS/stamps_com display schemes for domestic shipments
|
|
60
|
+
if ((carrierCode === 'usps' || carrierCode === 'stamps_com') && isInternational) {
|
|
61
|
+
return [];
|
|
62
|
+
}
|
|
63
|
+
return [...carrier.displaySchemes];
|
|
64
|
+
};
|
|
38
65
|
const rateOptionsFilters = useCallback(carrierCode => {
|
|
39
66
|
return (
|
|
40
67
|
// Filter out non-USPS carriers for Canada Delivered Duty prepaid shipments
|
|
@@ -57,7 +84,8 @@ const useRateOptions = (rates, fundingOrigin, preferredRates, carriers, shipment
|
|
|
57
84
|
messages: r.rate.warningMessages,
|
|
58
85
|
rateAcknowledgementMessage: r.rateAcknowledgementMessage,
|
|
59
86
|
requiresAcknowledgement: !!r.rateAcknowledgementMessage,
|
|
60
|
-
requiresFundedAmount: false
|
|
87
|
+
requiresFundedAmount: false,
|
|
88
|
+
paperlessDisplaySchemes: buildSupportedLabelDisplaySchemes(r.rate.carrierCode, r.rate.serviceCode)
|
|
61
89
|
}));
|
|
62
90
|
}, [preferredRates, rateOptionsFilters]);
|
|
63
91
|
const noRatesForServiceMessage = t("purchase-label:rates.noRateService");
|
|
@@ -73,7 +101,8 @@ const useRateOptions = (rates, fundingOrigin, preferredRates, carriers, shipment
|
|
|
73
101
|
balance: fundingOrigin === null || fundingOrigin === void 0 ? void 0 : fundingOrigin.balance,
|
|
74
102
|
messages: r.warningMessages,
|
|
75
103
|
requiresAcknowledgement: getRateRequiresAcknowledgement(r.serviceCode, r.packageType, !!requireDhlTermsAcknowledgement),
|
|
76
|
-
requiresFundedAmount
|
|
104
|
+
requiresFundedAmount,
|
|
105
|
+
paperlessDisplaySchemes: buildSupportedLabelDisplaySchemes(r.carrierCode, r.serviceCode)
|
|
77
106
|
});
|
|
78
107
|
if (r.shippingAmount.amount === 0 && !r.warningMessages.includes(noRatesForServiceMessage)) {
|
|
79
108
|
baseRateOption.messages.push(noRatesForServiceMessage);
|
|
@@ -12,11 +12,6 @@ import { useRatesWithCache } from './use-rates-with-cache.js';
|
|
|
12
12
|
import { useServicePoints } from './use-service-points.js';
|
|
13
13
|
import { useElements } from '../../../elements-provider/elements-context-provider.js';
|
|
14
14
|
|
|
15
|
-
/* https://auctane.atlassian.net/browse/ENGINE-7329
|
|
16
|
-
* For iteration one we would hardcode services for which it will be available (in the future this data will be in the registry. We will change hardcoding then)
|
|
17
|
-
* carriersWithPaperless and servicesWithPaperless are hardcoded for iteration one
|
|
18
|
-
*/
|
|
19
|
-
const servicesWithPaperless = ["hermes_domestic_parcelshop_dropoff", "hermes_domestic_parcelshop_dropoff_next_day", "hermes_postable", "hermes_postable_next_day"];
|
|
20
15
|
const useRatesForm = ({
|
|
21
16
|
getPreferredRates,
|
|
22
17
|
disabledShippingServices,
|
|
@@ -89,17 +84,11 @@ const useRatesForm = ({
|
|
|
89
84
|
listServicePointsErrors,
|
|
90
85
|
servicePointSearchQuery
|
|
91
86
|
} = useServicePoints(ratesResponse === null || ratesResponse === void 0 ? void 0 : ratesResponse.rates, shipment);
|
|
92
|
-
const
|
|
93
|
-
if ("hermes" === rate.carrierCode) {
|
|
94
|
-
return !!servicesWithPaperless.find(service => service === rate.serviceCode);
|
|
95
|
-
}
|
|
96
|
-
return false;
|
|
97
|
-
};
|
|
98
|
-
const purchaseLabel = useCallback((rateId, shipment, rate, servicePoint) => __awaiter(void 0, void 0, void 0, function* () {
|
|
87
|
+
const purchaseLabel = useCallback((rateId, shipment, rate, servicePoint, displayScheme) => __awaiter(void 0, void 0, void 0, function* () {
|
|
99
88
|
var _a;
|
|
100
89
|
try {
|
|
101
90
|
const label = yield createLabel({
|
|
102
|
-
displayScheme:
|
|
91
|
+
displayScheme: displayScheme !== null && displayScheme !== void 0 ? displayScheme : "label",
|
|
103
92
|
labelDownloadType: "url",
|
|
104
93
|
labelFormat: "pdf",
|
|
105
94
|
labelLayout: (_a = printLabelLayout === null || printLabelLayout === void 0 ? void 0 : printLabelLayout.toLowerCase()) !== null && _a !== void 0 ? _a : "4x6",
|
|
@@ -112,8 +101,15 @@ const useRatesForm = ({
|
|
|
112
101
|
} else {
|
|
113
102
|
yield onLabelCreateFailure === null || onLabelCreateFailure === void 0 ? void 0 : onLabelCreateFailure(rate, shipment);
|
|
114
103
|
}
|
|
115
|
-
} catch (
|
|
116
|
-
|
|
104
|
+
} catch (error) {
|
|
105
|
+
// Only return errors from the createLabel mutation in the callback
|
|
106
|
+
let callbackErrors;
|
|
107
|
+
if (Array.isArray(error)) {
|
|
108
|
+
if (error[0] instanceof SE.CodedError) {
|
|
109
|
+
callbackErrors = error;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
yield onLabelCreateFailure === null || onLabelCreateFailure === void 0 ? void 0 : onLabelCreateFailure(rate, shipment, callbackErrors);
|
|
117
113
|
}
|
|
118
114
|
}), [createLabel, onLabelCreateFailure, onLabelCreateSuccess, printLabelLayout]);
|
|
119
115
|
const onUpdatedShipment = useCallback(shipment => __awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -187,7 +183,7 @@ const useRatesForm = ({
|
|
|
187
183
|
return;
|
|
188
184
|
}
|
|
189
185
|
}), [onBeforeRateSaved, onUpdatedShipment, resetRates, shipment, updateShipment]);
|
|
190
|
-
const handleSubmit = useCallback((rateId, servicePoint) => __awaiter(void 0, void 0, void 0, function* () {
|
|
186
|
+
const handleSubmit = useCallback((rateId, servicePoint, displayScheme) => __awaiter(void 0, void 0, void 0, function* () {
|
|
191
187
|
var _a, _b, _c, _d;
|
|
192
188
|
setBeforeCreateError(undefined);
|
|
193
189
|
if (!shipment) return;
|
|
@@ -235,12 +231,12 @@ const useRatesForm = ({
|
|
|
235
231
|
});
|
|
236
232
|
throw new Error("Insufficient funds. Please add funds before purchasing and try again.");
|
|
237
233
|
} else {
|
|
238
|
-
yield purchaseLabel(rate.rateId, updatedShipment !== null && updatedShipment !== void 0 ? updatedShipment : shipment, rate, servicePoint);
|
|
234
|
+
yield purchaseLabel(rate.rateId, updatedShipment !== null && updatedShipment !== void 0 ? updatedShipment : shipment, rate, servicePoint, displayScheme);
|
|
239
235
|
return;
|
|
240
236
|
}
|
|
241
237
|
}
|
|
242
238
|
// The user has selected a standard rate and no further action is required before purchase
|
|
243
|
-
yield purchaseLabel(rateId, shipment, rate, servicePoint);
|
|
239
|
+
yield purchaseLabel(rateId, shipment, rate, servicePoint, displayScheme);
|
|
244
240
|
return;
|
|
245
241
|
} catch (e) {
|
|
246
242
|
if (Array.isArray(e)) {
|
|
@@ -2,7 +2,7 @@ import { __awaiter } from '../../../_virtual/_tslib.js';
|
|
|
2
2
|
import { useListCarriers, useListCustomPackageTypes, useCalculateRates } from '@shipengine/react-api';
|
|
3
3
|
import { omitTime } from '../../../utilities/date.js';
|
|
4
4
|
import { useCallback, useMemo } from 'react';
|
|
5
|
-
import
|
|
5
|
+
import { buildRateWarningMessages } from '../../../utilities/rate-warning-messages.js';
|
|
6
6
|
import { useRequestPreferredRates } from './use-request-preferred-rates.js';
|
|
7
7
|
import { isShippingServiceServiceDisabled } from '../../../utilities/feature-flags/utils.js';
|
|
8
8
|
|
|
@@ -89,26 +89,26 @@ const useRequestRates = ({
|
|
|
89
89
|
}, [ratedShipment]);
|
|
90
90
|
const ratesCalculating = getPreferredRates ? preferredRatesCalculating || standardRatesCalculating : standardRatesCalculating;
|
|
91
91
|
ratesResponse = useMemo(() => ratesResponse && Object.assign(Object.assign({}, ratesResponse), {
|
|
92
|
-
rates: ratesResponse.rates.map(rate => {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
})
|
|
99
|
-
})
|
|
92
|
+
rates: ratesResponse.rates.map(rate => Object.assign(Object.assign({}, rate), {
|
|
93
|
+
warningMessages: buildRateWarningMessages({
|
|
94
|
+
serviceCode: rate.serviceCode,
|
|
95
|
+
packageType: rate.packageType,
|
|
96
|
+
shipDay,
|
|
97
|
+
existingWarningMessages: rate.warningMessages
|
|
98
|
+
})
|
|
99
|
+
}))
|
|
100
100
|
}), [ratesResponse, shipDay]);
|
|
101
|
-
const preferredRatesResponse = useMemo(() => preferredResponse && preferredResponse.map(r => {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
})
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
}), [preferredResponse, shipDay]);
|
|
101
|
+
const preferredRatesResponse = useMemo(() => preferredResponse && preferredResponse.map(r => ({
|
|
102
|
+
rate: Object.assign(Object.assign({}, r.rate), {
|
|
103
|
+
warningMessages: buildRateWarningMessages({
|
|
104
|
+
serviceCode: r.rate.serviceCode,
|
|
105
|
+
packageType: r.rate.packageType,
|
|
106
|
+
shipDay,
|
|
107
|
+
existingWarningMessages: r.rate.warningMessages
|
|
108
|
+
})
|
|
109
|
+
}),
|
|
110
|
+
rateAcknowledgementMessage: r.rateAcknowledgementMessage
|
|
111
|
+
})), [preferredResponse, shipDay]);
|
|
112
112
|
return {
|
|
113
113
|
isCalculating: ratesCalculating,
|
|
114
114
|
preferredRatesResponse,
|
|
@@ -63,7 +63,8 @@ const Component = _a => {
|
|
|
63
63
|
salesOrder,
|
|
64
64
|
refetchPendingSalesOrderShipments,
|
|
65
65
|
isLoading,
|
|
66
|
-
errors
|
|
66
|
+
errors,
|
|
67
|
+
createNewShipmentForNotFound
|
|
67
68
|
} = useConfigureShipment({
|
|
68
69
|
errorWhenShipmentCancelled: features === null || features === void 0 ? void 0 : features.enableErrorWhenShipmentCancelled,
|
|
69
70
|
externalOrderId,
|
|
@@ -90,6 +91,8 @@ const Component = _a => {
|
|
|
90
91
|
data: shipment || salesOrder,
|
|
91
92
|
errors: errors,
|
|
92
93
|
isLoading: isLoading || insuranceIsLoading,
|
|
94
|
+
onCreateNewShipment: createNewShipmentForNotFound,
|
|
95
|
+
shipmentId: shipmentId,
|
|
93
96
|
children: jsx(ConfigureShipment, Object.assign({
|
|
94
97
|
currency: currency,
|
|
95
98
|
features: features,
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { jsxs, jsx, Fragment } from '@emotion/react/jsx-runtime';
|
|
2
2
|
import { useToggle } from '../../../../hooks/use-toggle.js';
|
|
3
|
-
import {
|
|
3
|
+
import { Icon, IconSize, Tag, Next, Typography } from '@shipengine/giger';
|
|
4
4
|
import { IconNames } from '@shipengine/giger-theme';
|
|
5
5
|
import { formatDateDDMMYY } from '../../../../utilities/date.js';
|
|
6
6
|
import { trackingStatusFormatter } from '../../../../utilities/tracking-formatter.js';
|
|
7
|
-
import { useRef } from 'react';
|
|
7
|
+
import { useRef, useMemo } from 'react';
|
|
8
8
|
import { useTranslation } from 'react-i18next';
|
|
9
9
|
import { styles } from './label-card.styles.js';
|
|
10
|
+
import { PaperlessLabelDisplay } from './paperless-label-display.js';
|
|
10
11
|
import { ServiceCardContainer, ServiceCardHeader, ServiceCardFooter } from '../../../../components/service-card/service-card.js';
|
|
11
12
|
import { InsurancePopover } from '../../../../components/insurance-popover/insurance-popover.js';
|
|
12
13
|
import { useElements } from '../../../../elements-provider/elements-context-provider.js';
|
|
@@ -44,7 +45,8 @@ const LabelCard = ({
|
|
|
44
45
|
trackable = undefined,
|
|
45
46
|
trackingNumber = undefined,
|
|
46
47
|
trackingStatus = undefined,
|
|
47
|
-
trackingUrl = undefined
|
|
48
|
+
trackingUrl = undefined,
|
|
49
|
+
qrCodeDownload = undefined
|
|
48
50
|
} = !displayAsVoided ? label : {};
|
|
49
51
|
const carrierCode = carrier === null || carrier === void 0 ? void 0 : carrier.carrierCode;
|
|
50
52
|
const carrierFriendlyName = carrier === null || carrier === void 0 ? void 0 : carrier.friendlyName;
|
|
@@ -142,6 +144,18 @@ const LabelCard = ({
|
|
|
142
144
|
shippingAmount,
|
|
143
145
|
showExtendedData: selected
|
|
144
146
|
};
|
|
147
|
+
const paperlessDownloadProps = useMemo(() => {
|
|
148
|
+
// USPS paperless labels populate the qrCodeDownload property instead of paperlessDownload, use qrCodeDownload href if available and paperlessDownload is empty
|
|
149
|
+
if (!paperlessDownload || Object.keys(paperlessDownload).length === 0) {
|
|
150
|
+
if (qrCodeDownload && qrCodeDownload.href) {
|
|
151
|
+
return {
|
|
152
|
+
href: qrCodeDownload.href
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
return undefined;
|
|
156
|
+
}
|
|
157
|
+
return paperlessDownload;
|
|
158
|
+
}, [paperlessDownload, qrCodeDownload]);
|
|
145
159
|
return jsxs(ServiceCardContainer, {
|
|
146
160
|
selected: selected,
|
|
147
161
|
voided: displayAsVoided,
|
|
@@ -158,36 +172,7 @@ const LabelCard = ({
|
|
|
158
172
|
},
|
|
159
173
|
voided: displayAsVoided,
|
|
160
174
|
children: trackable && jsx(TrackingNumberDisplay, {})
|
|
161
|
-
}),
|
|
162
|
-
css: styles.paperlessDownloadwrapper,
|
|
163
|
-
children: [jsxs("div", {
|
|
164
|
-
css: styles.codewrapper,
|
|
165
|
-
children: [jsx("img", {
|
|
166
|
-
alt: "paperless code",
|
|
167
|
-
css: styles.codeImage,
|
|
168
|
-
src: paperlessDownload === null || paperlessDownload === void 0 ? void 0 : paperlessDownload.href
|
|
169
|
-
}), jsx("div", {
|
|
170
|
-
css: styles.handoffCode,
|
|
171
|
-
children: paperlessDownload === null || paperlessDownload === void 0 ? void 0 : paperlessDownload.handoffCode.toString()
|
|
172
|
-
}), jsxs(Next.Link, {
|
|
173
|
-
buttonProps: {
|
|
174
|
-
variant: ButtonVariant.OUTLINED
|
|
175
|
-
},
|
|
176
|
-
css: styles.button,
|
|
177
|
-
download: true,
|
|
178
|
-
href: paperlessDownload === null || paperlessDownload === void 0 ? void 0 : paperlessDownload.href,
|
|
179
|
-
isButton: true,
|
|
180
|
-
children: [jsx(Icon, {
|
|
181
|
-
name: IconNames.PRINTER,
|
|
182
|
-
size: IconSize.SIZE_SMALL
|
|
183
|
-
}), jsx("span", {
|
|
184
|
-
children: t("view-shipment:actions.download")
|
|
185
|
-
})]
|
|
186
|
-
})]
|
|
187
|
-
}), jsx(Typography, {
|
|
188
|
-
children: paperlessDownload === null || paperlessDownload === void 0 ? void 0 : paperlessDownload.instructions
|
|
189
|
-
})]
|
|
190
|
-
}), showFooter && jsx(ServiceCardFooter, {
|
|
175
|
+
}), paperlessDownloadProps && "href" in paperlessDownloadProps && jsx(PaperlessLabelDisplay, Object.assign({}, paperlessDownloadProps)), showFooter && jsx(ServiceCardFooter, {
|
|
191
176
|
messages: labelMessages
|
|
192
177
|
})]
|
|
193
178
|
});
|
|
@@ -1,31 +1,12 @@
|
|
|
1
1
|
import { createStyles, scopeTheme } from '../../../../utilities/styles.js';
|
|
2
2
|
|
|
3
3
|
const styles = createStyles({
|
|
4
|
-
button: () => ({
|
|
5
|
-
cursor: "pointer"
|
|
6
|
-
}),
|
|
7
|
-
codeImage: () => ({
|
|
8
|
-
height: "120px",
|
|
9
|
-
maxWidth: "200px",
|
|
10
|
-
width: "auto"
|
|
11
|
-
}),
|
|
12
|
-
codewrapper: () => ({
|
|
13
|
-
alignItems: "center",
|
|
14
|
-
display: "flex",
|
|
15
|
-
flexDirection: "column"
|
|
16
|
-
}),
|
|
17
|
-
handoffCode: theme => ({
|
|
18
|
-
margin: `${scopeTheme(theme).spacing(2)}px 0`
|
|
19
|
-
}),
|
|
20
4
|
insuranceInfoIcon: theme => ({
|
|
21
5
|
":hover": {
|
|
22
6
|
cursor: "pointer"
|
|
23
7
|
},
|
|
24
8
|
marginLeft: scopeTheme(theme).spacing(0.5)
|
|
25
9
|
}),
|
|
26
|
-
paperlessDownloadwrapper: theme => ({
|
|
27
|
-
padding: scopeTheme(theme).spacing(2)
|
|
28
|
-
}),
|
|
29
10
|
trackingNumber: () => ({
|
|
30
11
|
maxWidth: "100%",
|
|
31
12
|
overflow: "hidden",
|