@shipengine/elements 2.25.0 → 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/dist/cjs/components/display-term/display-term.cjs +13 -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/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/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/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/package.json.cjs +1 -1
- package/dist/cjs/utilities/files.cjs +35 -0
- package/dist/cjs/utilities/formatString.cjs +9 -0
- package/dist/cjs/utilities/index.cjs +2 -0
- package/dist/cjs/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.cjs +15 -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 +23 -10
- package/dist/cjs/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.styles.cjs +10 -4
- package/dist/esm/components/display-term/display-term.js +14 -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/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/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/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/package.json.js +1 -1
- package/dist/esm/utilities/files.js +32 -0
- package/dist/esm/utilities/formatString.js +9 -1
- package/dist/esm/utilities/index.js +1 -0
- package/dist/esm/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.js +15 -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 +24 -11
- package/dist/esm/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.styles.js +10 -4
- 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/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/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 +18 -2
- package/dist/types/elements/labels-grid/labels-grid.d.ts.map +1 -1
- package/dist/types/elements/manage-carriers/manage-carriers.d.ts +12 -0
- 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 +12 -0
- 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 +12 -0
- package/dist/types/elements/manage-funding/manage-funding-element.d.ts.map +1 -1
- package/dist/types/elements/manage-warehouses/manage-warehouses.d.ts +12 -0
- 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 +12 -0
- package/dist/types/elements/payment-method-settings/payment-method-settings-element.d.ts.map +1 -1
- package/dist/types/elements/purchase-label/purchase-label.d.ts +12 -0
- 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 +12 -0
- 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 +12 -0
- 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 +21 -1
- package/dist/types/elements/shipments-grid/shipments-grid.d.ts.map +1 -1
- package/dist/types/elements/theme-creator/theme-creator.d.ts +12 -0
- package/dist/types/elements/theme-creator/theme-creator.d.ts.map +1 -1
- package/dist/types/elements/transaction-history/transaction-history-element.d.ts +12 -0
- 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 +12 -0
- 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 +12 -0
- package/dist/types/elements/vat-settings/vat-settings-element.d.ts.map +1 -1
- package/dist/types/elements/void-label/void-label.d.ts +12 -0
- 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/locales/en/index.d.ts +12 -0
- 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/terms-with-disclosure.d.ts +7 -0
- package/dist/types/types/terms-with-disclosure.d.ts.map +1 -0
- package/dist/types/utilities/feature-flags/types.d.ts +4 -0
- package/dist/types/utilities/feature-flags/types.d.ts.map +1 -1
- package/dist/types/utilities/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 +1 -0
- package/dist/types/utilities/index.d.ts.map +1 -1
- package/dist/types/workflows/account-settings/account-settings.d.ts +12 -0
- package/dist/types/workflows/account-settings/account-settings.d.ts.map +1 -1
- package/dist/types/workflows/carrier-services/carrier-services.d.ts +12 -0
- 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 +12 -0
- 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 +12 -0
- package/dist/types/workflows/label-workflow/label-workflow.d.ts.map +1 -1
- package/dist/types/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.d.ts +2 -1
- package/dist/types/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.d.ts.map +1 -1
- package/dist/types/workflows/onboarding/components/terms-agreement-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.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/onboarding.d.ts +12 -0
- package/dist/types/workflows/onboarding/onboarding.d.ts.map +1 -1
- package/package.json +1 -1
- 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
|
@@ -45,22 +45,21 @@ const useListFundingSourceCarriers = () => {
|
|
|
45
45
|
}, insurance.getInsuranceProviderWithFriendlyName(t.termType));
|
|
46
46
|
});
|
|
47
47
|
}, [optionalTerms, insuranceProviderAcceptedTerms]);
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
}));
|
|
52
|
-
const fundingSourceCarrierMetadata = carrierProfiles === null || carrierProfiles === void 0 ? void 0 : carrierProfiles.map(cp => {
|
|
48
|
+
const normalizeCarrierCode = (carrierCode, nickname) => carrierCode === "usps" || (nickname === null || nickname === void 0 ? void 0 : nickname.includes("free")) ? "stamps_com" : carrierCode;
|
|
49
|
+
const normalizeConnectedCarrierCodes = new Set(connectedCarriers === null || connectedCarriers === void 0 ? void 0 : connectedCarriers.map(c => normalizeCarrierCode(c.carrierCode, c.nickname)));
|
|
50
|
+
const fundingSourceCarriersData = carrierProfiles === null || carrierProfiles === void 0 ? void 0 : carrierProfiles.map(cp => {
|
|
53
51
|
var _a, _b;
|
|
54
|
-
|
|
52
|
+
const carrier = {
|
|
55
53
|
carrierProfile: cp,
|
|
56
54
|
friendlyName: (_b = (_a = carrierMetadata[cp.carrierCode]) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : cp.carrierCode
|
|
57
55
|
};
|
|
56
|
+
return {
|
|
57
|
+
carrier,
|
|
58
|
+
isConnected: normalizeConnectedCarrierCodes.has(cp.carrierCode)
|
|
59
|
+
};
|
|
58
60
|
});
|
|
59
61
|
return {
|
|
60
|
-
data:
|
|
61
|
-
carrier: m,
|
|
62
|
-
isConnected: normalizeConnectedCarrierCodes.has(m.carrierProfile.carrierCode)
|
|
63
|
-
})),
|
|
62
|
+
data: fundingSourceCarriersData,
|
|
64
63
|
error: error,
|
|
65
64
|
insuranceProviderProfiles,
|
|
66
65
|
isLoading: isInitialLoading || isFundingSourceMetadataLoading || isInsuranceProviderAcceptedTermsLoading,
|
|
@@ -7,6 +7,7 @@ var reactApi = require('@shipengine/react-api');
|
|
|
7
7
|
var React = require('react');
|
|
8
8
|
var reactI18next = require('react-i18next');
|
|
9
9
|
var manageCarriersRow_styles = require('./manage-carriers-row.styles.cjs');
|
|
10
|
+
var upsTermsDisclosure = require('../../../components/ups-terms-disclosure/ups-terms-disclosure.cjs');
|
|
10
11
|
var addressPreferenceContext = require('../../../components/address-preference-context/address-preference-context.cjs');
|
|
11
12
|
var registerFundingSourceCarrierForm = require('../register-funding-source-carrier-form/register-funding-source-carrier-form.cjs');
|
|
12
13
|
var carrierIcon = require('../../../components/carrier-icon/carrier-icon.cjs');
|
|
@@ -34,6 +35,10 @@ const ManageCarriersRow = ({
|
|
|
34
35
|
const requirementTypes = carrierProfile.registrationRequirements.map(r => r.requirementType);
|
|
35
36
|
const requiresAddress = requirementTypes.includes(reactApi.SE.MetadataRequirement.PickupAddress);
|
|
36
37
|
const requiresTermsAcceptance = carrierProfile.requiredTerms.length > 0;
|
|
38
|
+
const requiredCarrierTerms = {
|
|
39
|
+
links: carrierProfile.requiredTerms.flatMap(term => term.links),
|
|
40
|
+
disclosure: carrierProfile.carrierCode === "ups_walleted" ? jsxRuntime.jsx(upsTermsDisclosure.UPSTermsDisclosure, {}) : undefined
|
|
41
|
+
};
|
|
37
42
|
const handleRegister = values => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
38
43
|
setIsSubmitting(true);
|
|
39
44
|
showDropDown && setShowDropDown(false);
|
|
@@ -96,7 +101,7 @@ const ManageCarriersRow = ({
|
|
|
96
101
|
onCancel: () => setShowDropDown(false),
|
|
97
102
|
onSubmit: handleRegister,
|
|
98
103
|
requirementTypes: requirementTypes,
|
|
99
|
-
terms:
|
|
104
|
+
terms: requiredCarrierTerms
|
|
100
105
|
})
|
|
101
106
|
})
|
|
102
107
|
})]
|
|
@@ -151,9 +151,9 @@ const RegisterFundingSourceCarrierForm = ({
|
|
|
151
151
|
children: [jsxRuntime.jsx(giger.Typography, {
|
|
152
152
|
variant: "heading4",
|
|
153
153
|
children: t("terms.carriersTitle")
|
|
154
|
-
}),
|
|
155
|
-
|
|
156
|
-
}
|
|
154
|
+
}), jsxRuntime.jsx(displayTerm.DisplayTerm, {
|
|
155
|
+
terms: terms
|
|
156
|
+
})]
|
|
157
157
|
}), jsxRuntime.jsx(buttonGroup.ButtonGroup, {
|
|
158
158
|
justify: "end",
|
|
159
159
|
children: jsxRuntime.jsx(giger.Button, {
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var gridController = {
|
|
4
|
+
"grid-controller": {
|
|
5
|
+
showExportCSV: {
|
|
6
|
+
button: "Export CSV",
|
|
7
|
+
"generic-error-message": "We couldn’t export your CSV. Please try again.",
|
|
8
|
+
"limit-error": "We're sorry, but exporting more than {{LIMIT_GRID_ITEMS_EXPORT}} items is not supported at this time."
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
module.exports = gridController;
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
var accountSettings = require('./account-settings.json.cjs');
|
|
4
4
|
var common = require('./common.json.cjs');
|
|
5
5
|
var connectCarrier = require('./connect-carrier.json.cjs');
|
|
6
|
+
var gridController = require('./grid-controller.json.cjs');
|
|
6
7
|
var listLabels = require('./list-labels.json.cjs');
|
|
7
8
|
var listShipments = require('./list-shipments.json.cjs');
|
|
8
9
|
var manageCarriers = require('./manage-carriers.json.cjs');
|
|
@@ -20,6 +21,6 @@ var viewShipment = require('./view-shipment.json.cjs');
|
|
|
20
21
|
var voidLabel = require('./void-label.json.cjs');
|
|
21
22
|
var walletHistory = require('./wallet-history.json.cjs');
|
|
22
23
|
|
|
23
|
-
var en = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, accountSettings), common.default), connectCarrier), listLabels), listShipments), manageDefaults), manageDefaults), manageFunding), manageWarehouses), onboarding.default), paymentMethod), purchaseLabel), rateDetails), registerCarrier), registerWallet), manageCarriers), vatSettings), viewShipment), voidLabel), walletHistory);
|
|
24
|
+
var en = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, accountSettings), common.default), connectCarrier), listLabels), listShipments), manageDefaults), manageDefaults), manageFunding), manageWarehouses), onboarding.default), paymentMethod), purchaseLabel), rateDetails), registerCarrier), registerWallet), manageCarriers), vatSettings), viewShipment), voidLabel), walletHistory), gridController);
|
|
24
25
|
|
|
25
26
|
module.exports = en;
|
|
@@ -26,6 +26,11 @@ var onboarding = {
|
|
|
26
26
|
title: "Activate ShipEngine Services",
|
|
27
27
|
subtitle: "Your account includes access to services from these partners."
|
|
28
28
|
},
|
|
29
|
+
upsDisclosure: {
|
|
30
|
+
title: "UPS Promotional Rates and Technology Agreements",
|
|
31
|
+
line1: "I have read and agree to the Terms and Conditions and the Privacy Policy, and I confirm that information I have provided is accurate and truthful.",
|
|
32
|
+
line2: "To start shipping with UPS, you must first agree to the following: UPS®, the UPS brandmark, UPS Ready® and the color brown are trademarks of the United Parcel Service of America, Inc. All Rights Reserved."
|
|
33
|
+
},
|
|
29
34
|
warehouse: {
|
|
30
35
|
title: "Ship From Address",
|
|
31
36
|
subtitle: "Enter your default Ship From Address",
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Creates a local file from an AxiosResponse containing a blob.
|
|
5
|
+
*/
|
|
6
|
+
const createLocalFileFromBlobResponse = (type, {
|
|
7
|
+
data: blob
|
|
8
|
+
}) => {
|
|
9
|
+
const url = URL.createObjectURL(new Blob([blob], {
|
|
10
|
+
type: blob.type
|
|
11
|
+
}));
|
|
12
|
+
const fileName = type === "label" ? "labels-download" : "shipments-download";
|
|
13
|
+
triggerDownload(url, fileName);
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Triggers the download of the sent URL.
|
|
17
|
+
* @param {string} url - The URL for the download.
|
|
18
|
+
* @param {string} filename - The filename for the download.
|
|
19
|
+
*/
|
|
20
|
+
const triggerDownload = (url, filename) => {
|
|
21
|
+
const downloadLink = createInvisibleAnchor(url, filename);
|
|
22
|
+
document.body.appendChild(downloadLink);
|
|
23
|
+
downloadLink.click();
|
|
24
|
+
document.body.removeChild(downloadLink);
|
|
25
|
+
};
|
|
26
|
+
const createInvisibleAnchor = (url, filename) => {
|
|
27
|
+
const downloadLink = document.createElement("a");
|
|
28
|
+
downloadLink.setAttribute("href", url);
|
|
29
|
+
downloadLink.setAttribute("download", filename);
|
|
30
|
+
downloadLink.style.display = "none";
|
|
31
|
+
return downloadLink;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
exports.createLocalFileFromBlobResponse = createLocalFileFromBlobResponse;
|
|
35
|
+
exports.triggerDownload = triggerDownload;
|
|
@@ -19,9 +19,18 @@ const replaceSpacesWithDashes = str => str === null || str === void 0 ? void 0 :
|
|
|
19
19
|
const addSpaceBetweenWords = str => str.replace(/([a-z])([A-Z])/g, "$1 $2") // add space if there is a lowercase letter followed by an uppercase letter
|
|
20
20
|
.replace(/(?<=[a-zA-Z])(\d)/g, " $1") // add space if there is a letter followed by a number
|
|
21
21
|
.trim();
|
|
22
|
+
/**
|
|
23
|
+
* Converts a string from camelCase or PascalCase to snake_case
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* toSnakeCase("helloWorld") // returns "hello_world"
|
|
27
|
+
* toSnakeCase("HelloWorld") // returns "hello_world"
|
|
28
|
+
*/
|
|
29
|
+
const toSnakeCase = str => str.replace(/[A-Z]/g, letter => `_${letter.toLowerCase()}`);
|
|
22
30
|
|
|
23
31
|
exports.addSpaceBetweenWords = addSpaceBetweenWords;
|
|
24
32
|
exports.capitalizeFirstLetter = capitalizeFirstLetter;
|
|
25
33
|
exports.capitalizeFirstLetterOfEachWord = capitalizeFirstLetterOfEachWord;
|
|
26
34
|
exports.pascalize = pascalize;
|
|
27
35
|
exports.replaceSpacesWithDashes = replaceSpacesWithDashes;
|
|
36
|
+
exports.toSnakeCase = toSnakeCase;
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var styles = require('./styles.cjs');
|
|
4
4
|
var checks = require('./checks.cjs');
|
|
5
|
+
var files = require('./files.cjs');
|
|
5
6
|
var address = require('./address.cjs');
|
|
6
7
|
var featureFlags = require('./feature-flags/feature-flags.cjs');
|
|
7
8
|
|
|
@@ -12,6 +13,7 @@ exports.scopeTheme = styles.scopeTheme;
|
|
|
12
13
|
exports.getSellerIdFromToken = checks.getSellerIdFromToken;
|
|
13
14
|
exports.isOnboarded = checks.isOnboarded;
|
|
14
15
|
exports.validateShipFromAddress = checks.validateShipFromAddress;
|
|
16
|
+
exports.createLocalFileFromBlobResponse = files.createLocalFileFromBlobResponse;
|
|
15
17
|
exports.getCountries = address.getCountries;
|
|
16
18
|
exports.getUsStates = address.getUsStates;
|
|
17
19
|
exports.getDefaultFeatures = featureFlags.getDefaultFeatures;
|
package/dist/cjs/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.cjs
CHANGED
|
@@ -88,34 +88,38 @@ const TermsAgreementForm = ({
|
|
|
88
88
|
variant: "body1",
|
|
89
89
|
children: t("terms.shipEngineTitle")
|
|
90
90
|
}), jsxRuntime.jsx(displayTerm.DisplayTerm, {
|
|
91
|
-
|
|
91
|
+
terms: {
|
|
92
92
|
links: [{
|
|
93
93
|
link: "https://www.shipengine.com/terms-of-service/",
|
|
94
|
-
|
|
95
|
-
|
|
94
|
+
title: "ShipEngine Terms of Service",
|
|
95
|
+
locale: "en-US"
|
|
96
96
|
}, {
|
|
97
|
-
link: "https://auctane.com/
|
|
98
|
-
|
|
99
|
-
|
|
97
|
+
link: "https://www.auctane.com/terms-of-service/",
|
|
98
|
+
title: "Auctane Terms of Service",
|
|
99
|
+
locale: "en-US"
|
|
100
|
+
}, {
|
|
101
|
+
link: "https://www.stamps.com/wallet-terms-of-service/",
|
|
102
|
+
title: "Stamps Wallet Terms of Service",
|
|
103
|
+
locale: "en-US"
|
|
100
104
|
}]
|
|
101
105
|
}
|
|
102
106
|
}), requiredTerms.map(term => jsxRuntime.jsx(displayTerm.DisplayTerm, {
|
|
103
|
-
|
|
107
|
+
terms: term
|
|
104
108
|
}, term.termType)), !!carrierTerms.length && jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
105
109
|
children: [jsxRuntime.jsx(spacer.Spacer, {}), jsxRuntime.jsx(giger.Typography, {
|
|
106
110
|
bold: true,
|
|
107
111
|
variant: "body1",
|
|
108
112
|
children: t("terms.carriersTitle")
|
|
109
|
-
}), carrierTerms.map(term => jsxRuntime.jsx(displayTerm.DisplayTerm, {
|
|
110
|
-
|
|
111
|
-
},
|
|
113
|
+
}), carrierTerms.map((term, idx) => jsxRuntime.jsx(displayTerm.DisplayTerm, {
|
|
114
|
+
terms: term
|
|
115
|
+
}, idx))]
|
|
112
116
|
}), enableParcelGuard && !!insuranceProviderTerms.length && jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
113
117
|
children: [jsxRuntime.jsx(spacer.Spacer, {}), jsxRuntime.jsx(giger.Typography, {
|
|
114
118
|
bold: true,
|
|
115
119
|
variant: "body1",
|
|
116
120
|
children: t("terms.insuranceProvidersTitle")
|
|
117
121
|
}), insuranceProviderTerms.map(term => jsxRuntime.jsx(displayTerm.DisplayTerm, {
|
|
118
|
-
|
|
122
|
+
terms: term
|
|
119
123
|
}, term.termType))]
|
|
120
124
|
})]
|
|
121
125
|
}), jsxRuntime.jsx(buttonGroup.ButtonGroup, {
|
|
@@ -15,9 +15,6 @@ const styles = styles$1.createStyles({
|
|
|
15
15
|
display: "inline-flex",
|
|
16
16
|
fontWeight: styles$1.scopeTheme(theme).typography.fontWeight.normal
|
|
17
17
|
}),
|
|
18
|
-
fullWidth: {
|
|
19
|
-
width: "100%"
|
|
20
|
-
},
|
|
21
18
|
termsWell: theme => ({
|
|
22
19
|
backgroundColor: styles$1.scopeTheme(theme).palette.gray.ultraLight,
|
|
23
20
|
marginBottom: styles$1.scopeTheme(theme).spacing(6),
|
package/dist/cjs/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.cjs
CHANGED
|
@@ -8,8 +8,10 @@ var termsAgreementStep_styles = require('./terms-agreement-step.styles.cjs');
|
|
|
8
8
|
var termsAgreementForm = require('../terms-agreement-form/terms-agreement-form.cjs');
|
|
9
9
|
var useCarrierMetadata = require('../../../../features/manage-carriers/hooks/use-carrier-metadata.cjs');
|
|
10
10
|
var elementsContextProvider = require('../../../../elements-provider/elements-context-provider.cjs');
|
|
11
|
+
var upsTermsDisclosure = require('../../../../components/ups-terms-disclosure/ups-terms-disclosure.cjs');
|
|
11
12
|
var spacer = require('../../../../components/spacer/spacer.cjs');
|
|
12
13
|
var stepHeader = require('../step-header/step-header.cjs');
|
|
14
|
+
var carrierIcon = require('../../../../components/carrier-icon/carrier-icon.cjs');
|
|
13
15
|
var carrierLogo = require('../../../../components/carrier-logo/carrier-logo.cjs');
|
|
14
16
|
|
|
15
17
|
const TermsAgreementStep = ({
|
|
@@ -31,11 +33,17 @@ const TermsAgreementStep = ({
|
|
|
31
33
|
} = elementsContextProvider.useElements();
|
|
32
34
|
const carrierFriendlyNames = useCarrierMetadata.useCarrierMetadata();
|
|
33
35
|
const hideTerms = carrierProfilesToRegister.length === 0 && (insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles.length) === 0;
|
|
34
|
-
const carrierTerms = carrierProfilesToRegister.
|
|
36
|
+
const carrierTerms = carrierProfilesToRegister.map(c => {
|
|
37
|
+
const disclosure = c.carrierCode === "ups_walleted" ? jsxRuntime.jsx(upsTermsDisclosure.UPSTermsDisclosure, {}) : undefined;
|
|
38
|
+
return {
|
|
39
|
+
links: c.requiredTerms.flatMap(term => term.links),
|
|
40
|
+
disclosure
|
|
41
|
+
};
|
|
42
|
+
});
|
|
35
43
|
const insuranceProviderTerms = (_a = insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles.flatMap(p => p.terms)) !== null && _a !== void 0 ? _a : [];
|
|
36
44
|
const showParcelGuard = enableParcelGuard && ((_b = insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles.length) !== null && _b !== void 0 ? _b : 0) > 0;
|
|
37
45
|
const hasInsuranceToRegister = showParcelGuard && ((_c = insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles.length) !== null && _c !== void 0 ? _c : 0) > 0;
|
|
38
|
-
const hasEnabledCarriersConfigurationError = !enabledCarrierProfiles || (enabledCarrierProfiles === null || enabledCarrierProfiles === void 0 ? void 0 : enabledCarrierProfiles.length) === 0;
|
|
46
|
+
const hasEnabledCarriersConfigurationError = !showStampsLogo && (!enabledCarrierProfiles || (enabledCarrierProfiles === null || enabledCarrierProfiles === void 0 ? void 0 : enabledCarrierProfiles.length) === 0);
|
|
39
47
|
const hasAlreadyConnectedCarriers = ((_d = enabledCarrierProfiles === null || enabledCarrierProfiles === void 0 ? void 0 : enabledCarrierProfiles.length) !== null && _d !== void 0 ? _d : 0) > 0 && carrierProfilesToRegister.length === 0 && (insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles.length) === 0;
|
|
40
48
|
const hasCarriersToRegister = ((_e = enabledCarrierProfiles === null || enabledCarrierProfiles === void 0 ? void 0 : enabledCarrierProfiles.length) !== null && _e !== void 0 ? _e : 0) > 0 && carrierProfilesToRegister.length > 0;
|
|
41
49
|
// Handle case where partner has not correctly enabled carriers and there is no insurance to register
|
|
@@ -50,28 +58,33 @@ const TermsAgreementStep = ({
|
|
|
50
58
|
children: t("errors.noCarriers.subtitle")
|
|
51
59
|
});
|
|
52
60
|
}
|
|
53
|
-
const
|
|
61
|
+
const renderCarrierIcons = () => {
|
|
54
62
|
var _a;
|
|
55
|
-
if (!carrierProfilesToRegister.length) return null;
|
|
56
63
|
const stampsCarrierProfile = {
|
|
57
64
|
carrierCode: "stamps_com",
|
|
58
65
|
carrierName: (_a = carrierFriendlyNames["stamps_com"]) === null || _a === void 0 ? void 0 : _a.name
|
|
59
66
|
};
|
|
67
|
+
let carriersToDisplay;
|
|
60
68
|
// kind of a goofy way to just display stamps/usps logo without sending it in the payload to register
|
|
61
69
|
// we don't want to register stamps as a carrier if it's not being used as the primary payment method
|
|
62
|
-
|
|
70
|
+
if (showStampsLogo) {
|
|
71
|
+
carriersToDisplay = [stampsCarrierProfile, ...carrierProfilesToRegister];
|
|
72
|
+
} else {
|
|
73
|
+
carriersToDisplay = carrierProfilesToRegister;
|
|
74
|
+
}
|
|
63
75
|
return carriersToDisplay.map(p => {
|
|
64
76
|
var _a;
|
|
65
|
-
return jsxRuntime.jsx(
|
|
77
|
+
return jsxRuntime.jsx(carrierIcon.CarrierIcon, {
|
|
66
78
|
carrierCode: p.carrierCode,
|
|
67
79
|
carrierName: ((_a = carrierFriendlyNames[p.carrierCode]) === null || _a === void 0 ? void 0 : _a.name) || p.carrierCode,
|
|
68
|
-
size:
|
|
80
|
+
size: giger.IconSize.SIZE_EXTRA_LARGE
|
|
69
81
|
}, p.carrierCode);
|
|
70
82
|
});
|
|
71
83
|
};
|
|
72
84
|
const renderInsuranceLogos = () => {
|
|
73
85
|
if (!hasInsuranceToRegister) return null;
|
|
74
|
-
return jsxRuntime.jsxs(
|
|
86
|
+
return jsxRuntime.jsxs("div", {
|
|
87
|
+
css: termsAgreementStep_styles.styles.insuranceLogosContainer,
|
|
75
88
|
children: [hasCarriersToRegister && jsxRuntime.jsx(giger.Icon, {
|
|
76
89
|
css: termsAgreementStep_styles.styles.plus,
|
|
77
90
|
name: gigerTheme.IconNames.PLUS,
|
|
@@ -97,13 +110,13 @@ const TermsAgreementStep = ({
|
|
|
97
110
|
}), jsxRuntime.jsx(spacer.Spacer, {
|
|
98
111
|
multiplier: 4
|
|
99
112
|
})]
|
|
100
|
-
}), (hasCarriersToRegister || hasInsuranceToRegister) && jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
113
|
+
}), (hasCarriersToRegister || hasInsuranceToRegister || showStampsLogo) && jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
101
114
|
children: [jsxRuntime.jsx(stepHeader.StepHeader, {
|
|
102
115
|
subtitle: t("termsAgreement.subtitle"),
|
|
103
116
|
title: t("termsAgreement.title")
|
|
104
117
|
}), jsxRuntime.jsxs("div", {
|
|
105
118
|
css: termsAgreementStep_styles.styles.carrierLogos,
|
|
106
|
-
children: [
|
|
119
|
+
children: [renderCarrierIcons(), renderInsuranceLogos()]
|
|
107
120
|
})]
|
|
108
121
|
}), jsxRuntime.jsx("div", {
|
|
109
122
|
css: termsAgreementStep_styles.styles.fullWidth,
|
|
@@ -9,7 +9,8 @@ const styles = styles$1.createStyles({
|
|
|
9
9
|
flexWrap: "wrap",
|
|
10
10
|
gap: styles$1.scopeTheme(theme).spacing(1),
|
|
11
11
|
justifyContent: "center",
|
|
12
|
-
|
|
12
|
+
alignItems: "center",
|
|
13
|
+
padding: `${styles$1.scopeTheme(theme).spacing(2)}px 0`
|
|
13
14
|
}),
|
|
14
15
|
container: theme => ({
|
|
15
16
|
alignItems: "center",
|
|
@@ -22,9 +23,14 @@ const styles = styles$1.createStyles({
|
|
|
22
23
|
fullWidth: {
|
|
23
24
|
width: "100%"
|
|
24
25
|
},
|
|
25
|
-
plus:
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
plus: theme => ({
|
|
27
|
+
alignSelf: "center",
|
|
28
|
+
paddingBottom: styles$1.scopeTheme(theme).spacing(1)
|
|
29
|
+
}),
|
|
30
|
+
insuranceLogosContainer: theme => ({
|
|
31
|
+
display: "flex",
|
|
32
|
+
gap: styles$1.scopeTheme(theme).spacing(1),
|
|
33
|
+
paddingTop: styles$1.scopeTheme(theme).spacing(1)
|
|
28
34
|
})
|
|
29
35
|
});
|
|
30
36
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsxs, jsx } from '@emotion/react/jsx-runtime';
|
|
2
2
|
import { Link, Icon, IconSize } from '@shipengine/giger';
|
|
3
3
|
import { IconNames } from '@shipengine/giger-theme';
|
|
4
4
|
import { encode } from 'js-base64';
|
|
@@ -6,14 +6,23 @@ import { useTranslation } from 'react-i18next';
|
|
|
6
6
|
import { styles } from './display-term.styles.js';
|
|
7
7
|
|
|
8
8
|
const DisplayTerm = ({
|
|
9
|
-
|
|
9
|
+
terms
|
|
10
10
|
}) => {
|
|
11
11
|
const {
|
|
12
12
|
t
|
|
13
13
|
} = useTranslation();
|
|
14
|
-
|
|
14
|
+
const {
|
|
15
|
+
links,
|
|
16
|
+
disclosure
|
|
17
|
+
} = terms;
|
|
18
|
+
return jsxs("ul", {
|
|
15
19
|
css: styles.container,
|
|
16
|
-
children:
|
|
20
|
+
children: [disclosure && jsx("li", {
|
|
21
|
+
css: {
|
|
22
|
+
listStyle: "none"
|
|
23
|
+
},
|
|
24
|
+
children: disclosure
|
|
25
|
+
}), links.map(({
|
|
17
26
|
link,
|
|
18
27
|
title
|
|
19
28
|
}) => jsx("li", {
|
|
@@ -31,7 +40,7 @@ const DisplayTerm = ({
|
|
|
31
40
|
size: IconSize.SIZE_SMALL
|
|
32
41
|
})]
|
|
33
42
|
})
|
|
34
|
-
}, title))
|
|
43
|
+
}, title))]
|
|
35
44
|
});
|
|
36
45
|
};
|
|
37
46
|
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { jsxs, jsx } from '@emotion/react/jsx-runtime';
|
|
2
|
+
import { Icon, Typography } from '@shipengine/giger';
|
|
3
|
+
import { IconNames } from '@shipengine/giger-theme';
|
|
4
|
+
import { useState, useRef, useEffect } from 'react';
|
|
5
|
+
import SvgReload from '../../../assets/reload.svg.js';
|
|
6
|
+
import { styles } from './error-banner.styles.js';
|
|
7
|
+
import { Label } from '../../history/history-card/label/label.js';
|
|
8
|
+
import { LinkAction } from '../../link-action/link-action.js';
|
|
9
|
+
|
|
10
|
+
// This component is a temporary solution to handle error display, design is working to improve more error patterns to display
|
|
11
|
+
const ErrorBanner = ({
|
|
12
|
+
labelText,
|
|
13
|
+
linkTitle,
|
|
14
|
+
onClick,
|
|
15
|
+
showReloadIcon,
|
|
16
|
+
duration,
|
|
17
|
+
onDurationEnd
|
|
18
|
+
}) => {
|
|
19
|
+
const [isVisible, setIsVisible] = useState(true);
|
|
20
|
+
const timerRef = useRef(null);
|
|
21
|
+
// Set up the timer when the component mounts or duration changes
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
if (duration && duration > 0) {
|
|
24
|
+
// Clear any existing timer
|
|
25
|
+
if (timerRef.current) clearTimeout(timerRef.current);
|
|
26
|
+
// Set up a new timer to hide the component after the specified duration
|
|
27
|
+
timerRef.current = setTimeout(() => {
|
|
28
|
+
setIsVisible(false);
|
|
29
|
+
// Call the onDurationEnd callback if provided
|
|
30
|
+
if (onDurationEnd) {
|
|
31
|
+
onDurationEnd();
|
|
32
|
+
}
|
|
33
|
+
}, duration);
|
|
34
|
+
}
|
|
35
|
+
// Clean up the timer when the component unmounts or duration changes
|
|
36
|
+
return () => {
|
|
37
|
+
if (timerRef.current) clearTimeout(timerRef.current);
|
|
38
|
+
};
|
|
39
|
+
}, [duration, onDurationEnd]);
|
|
40
|
+
if (!isVisible) return null;
|
|
41
|
+
return jsxs("div", {
|
|
42
|
+
css: styles.errorContainer,
|
|
43
|
+
children: [showReloadIcon && jsx(SvgReload, {
|
|
44
|
+
height: 24,
|
|
45
|
+
width: 24
|
|
46
|
+
}), linkTitle && !labelText && !onClick && jsxs("div", {
|
|
47
|
+
css: styles.errorContent,
|
|
48
|
+
children: [jsx(Icon, {
|
|
49
|
+
name: IconNames.ALERT
|
|
50
|
+
}), jsx(Typography, {
|
|
51
|
+
component: "p",
|
|
52
|
+
variant: "body2",
|
|
53
|
+
children: linkTitle
|
|
54
|
+
})]
|
|
55
|
+
}), linkTitle && labelText && onClick && jsx(Label, {
|
|
56
|
+
spacing: 0,
|
|
57
|
+
text: labelText !== null && labelText !== void 0 ? labelText : "",
|
|
58
|
+
textProps: {
|
|
59
|
+
css: styles.errorHeading
|
|
60
|
+
},
|
|
61
|
+
variant: "subtitle",
|
|
62
|
+
children: jsx(LinkAction, {
|
|
63
|
+
css: styles.errorCTA,
|
|
64
|
+
isBold: false,
|
|
65
|
+
onClick: onClick,
|
|
66
|
+
title: linkTitle
|
|
67
|
+
})
|
|
68
|
+
})]
|
|
69
|
+
});
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
export { ErrorBanner };
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
import { createStyles, scopeTheme } from '
|
|
1
|
+
import { createStyles, scopeTheme } from '../../../utilities/styles.js';
|
|
2
2
|
|
|
3
3
|
const styles = createStyles({
|
|
4
4
|
errorContainer: theme => ({
|
|
5
5
|
alignItems: "center",
|
|
6
|
-
backgroundColor: scopeTheme(theme).palette.
|
|
6
|
+
backgroundColor: scopeTheme(theme).palette.error.light,
|
|
7
7
|
display: "flex",
|
|
8
8
|
flexDirection: "column",
|
|
9
|
-
paddingBottom: scopeTheme(theme).spacing(2),
|
|
10
|
-
paddingTop: scopeTheme(theme).spacing(2),
|
|
11
9
|
rowGap: scopeTheme(theme).spacing(1)
|
|
12
10
|
}),
|
|
13
11
|
errorCTA: theme => ({
|
|
@@ -17,6 +15,12 @@ const styles = createStyles({
|
|
|
17
15
|
}),
|
|
18
16
|
errorHeading: theme => ({
|
|
19
17
|
fontSize: scopeTheme(theme).typography.fontSize.S
|
|
18
|
+
}),
|
|
19
|
+
errorContent: theme => ({
|
|
20
|
+
display: "flex",
|
|
21
|
+
alignItems: "center",
|
|
22
|
+
gap: scopeTheme(theme).spacing(),
|
|
23
|
+
color: scopeTheme(theme).palette.error.main
|
|
20
24
|
})
|
|
21
25
|
});
|
|
22
26
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { ErrorBanner } from './error-banner.js';
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
import { jsx, jsxs } from '@emotion/react/jsx-runtime';
|
|
2
|
-
import { TableRow, TableBodyCell, Skeleton, SkeletonVariant, SkeletonAnimation, Table, TableBody, Checkbox, TableHeader, TableHeaderRow, TableHeaderCell, TableFooter } from '@shipengine/giger';
|
|
1
|
+
import { jsx, jsxs, Fragment } from '@emotion/react/jsx-runtime';
|
|
2
|
+
import { TableRow, TableBodyCell, Skeleton, SkeletonVariant, SkeletonAnimation, Button, ButtonVariant, IconTooltip, IconSize, Icon, Table, TableBody, Checkbox, TableHeader, TableHeaderRow, TableHeaderCell, TableFooter } from '@shipengine/giger';
|
|
3
|
+
import { IconNames } from '@shipengine/giger-theme';
|
|
3
4
|
import { useState, useMemo, useCallback } from 'react';
|
|
5
|
+
import { useTranslation } from 'react-i18next';
|
|
4
6
|
import { styles } from './grid-controller.styles.js';
|
|
7
|
+
import { ErrorBanner } from './error-banner/error-banner.js';
|
|
5
8
|
|
|
9
|
+
const LIMIT_GRID_ITEMS_EXPORT = 10000;
|
|
10
|
+
const ERROR_DISPLAY_DURATION = 7000;
|
|
6
11
|
/**
|
|
7
12
|
* @internal
|
|
8
13
|
*
|
|
@@ -20,10 +25,23 @@ const GridController = ({
|
|
|
20
25
|
isLoading = false,
|
|
21
26
|
useCheckboxes = false,
|
|
22
27
|
filters,
|
|
23
|
-
emptyContent
|
|
28
|
+
emptyContent,
|
|
29
|
+
showExportCSV = false,
|
|
30
|
+
onClickExportCSV,
|
|
31
|
+
totalAmountGridItems,
|
|
32
|
+
hasTrackingStatusFilter,
|
|
33
|
+
hasExportCSVError = false,
|
|
34
|
+
isExportCSVLoading = false,
|
|
35
|
+
onExportErrorDurationEnd
|
|
24
36
|
}) => {
|
|
25
37
|
var _a, _b, _c;
|
|
26
38
|
const [isChecked, setIsChecked] = useState((_a = data === null || data === void 0 ? void 0 : data.map(() => false)) !== null && _a !== void 0 ? _a : []);
|
|
39
|
+
const {
|
|
40
|
+
t
|
|
41
|
+
} = useTranslation(["common", "grid-controller"]);
|
|
42
|
+
const dataAvailable = !!data.length;
|
|
43
|
+
const isItemsOverExportLimit = !!((totalAmountGridItems !== null && totalAmountGridItems !== void 0 ? totalAmountGridItems : 0) > LIMIT_GRID_ITEMS_EXPORT);
|
|
44
|
+
const isDisableExportButton = isItemsOverExportLimit || !dataAvailable;
|
|
27
45
|
const columnHeaderContents = useMemo(() => columns.map(column => column.headerContent), [columns]);
|
|
28
46
|
const loadingRows = useMemo(() => {
|
|
29
47
|
const items = [];
|
|
@@ -63,8 +81,36 @@ const GridController = ({
|
|
|
63
81
|
css: styles.wrapper,
|
|
64
82
|
children: [filters && jsx("div", {
|
|
65
83
|
css: styles.filters,
|
|
66
|
-
children:
|
|
67
|
-
|
|
84
|
+
children: jsxs(Fragment, {
|
|
85
|
+
children: [filters, showExportCSV && !hasTrackingStatusFilter && jsxs(Button, {
|
|
86
|
+
bold: false,
|
|
87
|
+
css: styles.button,
|
|
88
|
+
disabled: isItemsOverExportLimit || !dataAvailable || hasExportCSVError,
|
|
89
|
+
isLoading: isExportCSVLoading && !isDisableExportButton,
|
|
90
|
+
onClick: onClickExportCSV,
|
|
91
|
+
type: "button",
|
|
92
|
+
variant: ButtonVariant.FILLED,
|
|
93
|
+
children: [isItemsOverExportLimit ? jsx(IconTooltip, {
|
|
94
|
+
css: styles.iconTooltip,
|
|
95
|
+
icon: IconNames.DOWNLOAD,
|
|
96
|
+
size: IconSize.SIZE_MEDIUM,
|
|
97
|
+
children: jsx("div", {
|
|
98
|
+
children: t("grid-controller:showExportCSV.limit-error", {
|
|
99
|
+
LIMIT_GRID_ITEMS_EXPORT: new Intl.NumberFormat().format(LIMIT_GRID_ITEMS_EXPORT)
|
|
100
|
+
})
|
|
101
|
+
})
|
|
102
|
+
}) : jsx(Icon, {
|
|
103
|
+
css: styles.iconTooltip,
|
|
104
|
+
name: IconNames.UPLOAD,
|
|
105
|
+
size: IconSize.SIZE_MEDIUM
|
|
106
|
+
}), t("grid-controller:showExportCSV.button")]
|
|
107
|
+
})]
|
|
108
|
+
})
|
|
109
|
+
}), hasExportCSVError && !isDisableExportButton && jsx(ErrorBanner, {
|
|
110
|
+
duration: ERROR_DISPLAY_DURATION,
|
|
111
|
+
linkTitle: t("grid-controller:showExportCSV.generic-error-message"),
|
|
112
|
+
onDurationEnd: onExportErrorDurationEnd
|
|
113
|
+
}), !dataAvailable && emptyContent ? emptyContent : jsx(Table, {
|
|
68
114
|
"data-testid": "grid",
|
|
69
115
|
footer: footerContent && !isLoading && jsx(TableFooter, {
|
|
70
116
|
css: styles.tableFooter,
|
|
@@ -5,10 +5,17 @@ const styles = createStyles({
|
|
|
5
5
|
width: scopeTheme(theme).spacing(6)
|
|
6
6
|
}),
|
|
7
7
|
filters: theme => ({
|
|
8
|
+
display: "flex",
|
|
8
9
|
backgroundColor: scopeTheme(theme).palette.white,
|
|
9
10
|
borderBottom: `1px solid ${scopeTheme(theme).palette.gray[200]}`,
|
|
10
11
|
padding: scopeTheme(theme).spacing()
|
|
11
12
|
}),
|
|
13
|
+
button: () => ({
|
|
14
|
+
marginLeft: "auto"
|
|
15
|
+
}),
|
|
16
|
+
iconTooltip: theme => ({
|
|
17
|
+
marginRight: scopeTheme(theme).spacing()
|
|
18
|
+
}),
|
|
12
19
|
skeletonTableRow: () => ({
|
|
13
20
|
height: "68px"
|
|
14
21
|
}),
|
|
@@ -28,7 +35,10 @@ const styles = createStyles({
|
|
|
28
35
|
wrapper: theme => Object.assign({
|
|
29
36
|
height: "auto",
|
|
30
37
|
overflow: "hidden"
|
|
31
|
-
}, scopeTheme(theme).getComponentOverride("Table"))
|
|
38
|
+
}, scopeTheme(theme).getComponentOverride("Table")),
|
|
39
|
+
filtersWrapper: () => ({
|
|
40
|
+
display: "flex"
|
|
41
|
+
})
|
|
32
42
|
});
|
|
33
43
|
|
|
34
44
|
export { styles };
|
|
@@ -6,8 +6,8 @@ import { useMemo } from 'react';
|
|
|
6
6
|
import { useTranslation } from 'react-i18next';
|
|
7
7
|
import SvgFunding from '../../../assets/funding.svg.js';
|
|
8
8
|
import { styles } from './history-card.styles.js';
|
|
9
|
-
import { Label } from './label/label.js';
|
|
10
9
|
import { useElements } from '../../../elements-provider/elements-context-provider.js';
|
|
10
|
+
import { Label } from './label/label.js';
|
|
11
11
|
|
|
12
12
|
const HistoryCard = ({
|
|
13
13
|
transaction,
|