udp-react-enterprise-component-library 26.5.0-beta.11 → 26.5.0-beta.13
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/.tsbuildinfo +1 -1
- package/dist/inquiry/InquiryContainer.d.ts.map +1 -1
- package/dist/inquiry/InquiryContainer.js +7 -2
- package/dist/inquiry/InquiryContainer.js.map +1 -1
- package/dist/inquiry/InquiryContainer.mjs +5 -2
- package/dist/inquiry/InquiryContainer.mjs.map +1 -1
- package/dist/utilities/form/paymentForm/BankAccountForm.d.ts +12 -29
- package/dist/utilities/form/paymentForm/BankAccountForm.d.ts.map +1 -1
- package/dist/utilities/form/paymentForm/BankAccountForm.js +64 -78
- package/dist/utilities/form/paymentForm/BankAccountForm.js.map +1 -1
- package/dist/utilities/form/paymentForm/BankAccountForm.mjs +77 -196
- package/dist/utilities/form/paymentForm/BankAccountForm.mjs.map +1 -1
- package/dist/utilities/form/paymentForm/CashForm.d.ts +1 -1
- package/dist/utilities/form/paymentForm/CashForm.d.ts.map +1 -1
- package/dist/utilities/form/paymentForm/CashForm.js +19 -51
- package/dist/utilities/form/paymentForm/CashForm.js.map +1 -1
- package/dist/utilities/form/paymentForm/CashForm.mjs +80 -119
- package/dist/utilities/form/paymentForm/CashForm.mjs.map +1 -1
- package/dist/utilities/form/paymentForm/CreditCardForm.d.ts +10 -21
- package/dist/utilities/form/paymentForm/CreditCardForm.d.ts.map +1 -1
- package/dist/utilities/form/paymentForm/CreditCardForm.js +81 -87
- package/dist/utilities/form/paymentForm/CreditCardForm.js.map +1 -1
- package/dist/utilities/form/paymentForm/CreditCardForm.mjs +84 -195
- package/dist/utilities/form/paymentForm/CreditCardForm.mjs.map +1 -1
- package/dist/utilities/form/paymentForm/CreditCardUtils.d.ts.map +1 -1
- package/dist/utilities/form/paymentForm/CreditCardUtils.js +5 -0
- package/dist/utilities/form/paymentForm/CreditCardUtils.js.map +1 -1
- package/dist/utilities/form/paymentForm/CreditCardUtils.mjs +1 -0
- package/dist/utilities/form/paymentForm/CreditCardUtils.mjs.map +1 -1
- package/dist/utilities/form/paymentForm/HostedPaymentError.d.ts +5 -16
- package/dist/utilities/form/paymentForm/HostedPaymentError.d.ts.map +1 -1
- package/dist/utilities/form/paymentForm/HostedPaymentError.js +6 -18
- package/dist/utilities/form/paymentForm/HostedPaymentError.js.map +1 -1
- package/dist/utilities/form/paymentForm/HostedPaymentError.mjs +18 -55
- package/dist/utilities/form/paymentForm/HostedPaymentError.mjs.map +1 -1
- package/dist/utilities/form/paymentForm/NewCreditCardForm.d.ts +12 -14
- package/dist/utilities/form/paymentForm/NewCreditCardForm.d.ts.map +1 -1
- package/dist/utilities/form/paymentForm/NewCreditCardForm.js +45 -58
- package/dist/utilities/form/paymentForm/NewCreditCardForm.js.map +1 -1
- package/dist/utilities/form/paymentForm/NewCreditCardForm.mjs +185 -262
- package/dist/utilities/form/paymentForm/NewCreditCardForm.mjs.map +1 -1
- package/dist/utilities/form/paymentForm/NewECheckForm.d.ts +9 -14
- package/dist/utilities/form/paymentForm/NewECheckForm.d.ts.map +1 -1
- package/dist/utilities/form/paymentForm/NewECheckForm.js +28 -68
- package/dist/utilities/form/paymentForm/NewECheckForm.js.map +1 -1
- package/dist/utilities/form/paymentForm/NewECheckForm.mjs +184 -227
- package/dist/utilities/form/paymentForm/NewECheckForm.mjs.map +1 -1
- package/dist/utilities/form/paymentForm/PaymentBankDetails.d.ts.map +1 -1
- package/dist/utilities/form/paymentForm/PaymentBankDetails.js +4 -2
- package/dist/utilities/form/paymentForm/PaymentBankDetails.js.map +1 -1
- package/dist/utilities/form/paymentForm/PaymentCardDetail.d.ts.map +1 -1
- package/dist/utilities/form/paymentForm/PaymentCardDetail.js +4 -2
- package/dist/utilities/form/paymentForm/PaymentCardDetail.js.map +1 -1
- package/dist/utilities/form/paymentForm/PaymentForm.d.ts +67 -3
- package/dist/utilities/form/paymentForm/PaymentForm.d.ts.map +1 -1
- package/dist/utilities/form/paymentForm/PaymentForm.js +265 -246
- package/dist/utilities/form/paymentForm/PaymentForm.js.map +1 -1
- package/dist/utilities/form/paymentForm/PaymentForm.mjs +275 -296
- package/dist/utilities/form/paymentForm/PaymentForm.mjs.map +1 -1
- package/dist/utilities/form/paymentForm/usePaymentContext.d.ts +22 -0
- package/dist/utilities/form/paymentForm/usePaymentContext.d.ts.map +1 -0
- package/dist/utilities/form/paymentForm/usePaymentContext.js +117 -0
- package/dist/utilities/form/paymentForm/usePaymentContext.js.map +1 -0
- package/dist/utilities/form/paymentForm/usePaymentContext.mjs +119 -0
- package/dist/utilities/form/paymentForm/usePaymentContext.mjs.map +1 -0
- package/dist/utilities/form/paymentForm/vendorsForms/FiservForm.d.ts.map +1 -1
- package/dist/utilities/form/paymentForm/vendorsForms/FiservForm.js +22 -28
- package/dist/utilities/form/paymentForm/vendorsForms/FiservForm.js.map +1 -1
- package/dist/utilities/form/paymentForm/vendorsForms/FiservForm.mjs +37 -32
- package/dist/utilities/form/paymentForm/vendorsForms/FiservForm.mjs.map +1 -1
- package/dist/utilities/form/paymentForm/vendorsForms/ICheckForm.d.ts.map +1 -1
- package/dist/utilities/form/paymentForm/vendorsForms/ICheckForm.js +25 -27
- package/dist/utilities/form/paymentForm/vendorsForms/ICheckForm.js.map +1 -1
- package/dist/utilities/form/paymentForm/vendorsForms/ICheckForm.mjs +40 -38
- package/dist/utilities/form/paymentForm/vendorsForms/ICheckForm.mjs.map +1 -1
- package/dist/utilities/form/paymentForm/vendorsForms/PaymentusForm.d.ts.map +1 -1
- package/dist/utilities/form/paymentForm/vendorsForms/PaymentusForm.js +25 -32
- package/dist/utilities/form/paymentForm/vendorsForms/PaymentusForm.js.map +1 -1
- package/dist/utilities/form/paymentForm/vendorsForms/PaymentusForm.mjs +38 -43
- package/dist/utilities/form/paymentForm/vendorsForms/PaymentusForm.mjs.map +1 -1
- package/package.json +6 -42
- package/dist/utilities/form/paymentForm/BankIcon.mjs +0 -56
- package/dist/utilities/form/paymentForm/BankIcon.mjs.map +0 -1
- package/dist/utilities/form/paymentForm/CashIcon.mjs +0 -55
- package/dist/utilities/form/paymentForm/CashIcon.mjs.map +0 -1
- package/dist/utilities/form/paymentForm/CheckIcon.mjs +0 -62
- package/dist/utilities/form/paymentForm/CheckIcon.mjs.map +0 -1
- package/dist/utilities/form/paymentForm/CreditCardIcon.mjs +0 -85
- package/dist/utilities/form/paymentForm/CreditCardIcon.mjs.map +0 -1
- package/dist/utilities/form/paymentForm/DisableOverlay.mjs +0 -44
- package/dist/utilities/form/paymentForm/DisableOverlay.mjs.map +0 -1
- package/dist/utilities/form/paymentForm/PaymentBankDetails.mjs +0 -161
- package/dist/utilities/form/paymentForm/PaymentBankDetails.mjs.map +0 -1
- package/dist/utilities/form/paymentForm/PaymentCard.d.ts +0 -13
- package/dist/utilities/form/paymentForm/PaymentCard.d.ts.map +0 -1
- package/dist/utilities/form/paymentForm/PaymentCard.js +0 -54
- package/dist/utilities/form/paymentForm/PaymentCard.js.map +0 -1
- package/dist/utilities/form/paymentForm/PaymentCard.mjs +0 -96
- package/dist/utilities/form/paymentForm/PaymentCard.mjs.map +0 -1
- package/dist/utilities/form/paymentForm/PaymentCardDetail.mjs +0 -284
- package/dist/utilities/form/paymentForm/PaymentCardDetail.mjs.map +0 -1
- package/dist/utilities/form/paymentForm/PaymentDropdown.mjs +0 -142
- package/dist/utilities/form/paymentForm/PaymentDropdown.mjs.map +0 -1
- package/dist/utilities/form/paymentForm/TabPanel.mjs +0 -74
- package/dist/utilities/form/paymentForm/TabPanel.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreditCardForm.js","sourceRoot":"","sources":["../../../../src/utilities/form/paymentForm/CreditCardForm.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CreditCardForm.js","sourceRoot":"","sources":["../../../../src/utilities/form/paymentForm/CreditCardForm.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,209 +1,98 @@
|
|
|
1
|
-
import { c } from "../../../reactCompilerRuntime.mjs";
|
|
2
|
-
import { FluentButton } from "../../../UI/inputs/buttons/FluentButton.mjs";
|
|
3
1
|
import { ConfigService } from "../../../configService/index.mjs";
|
|
4
|
-
import { useUser } from "../../auth/useUser.mjs";
|
|
5
|
-
import { UnityFluentIcon } from "../../iconLibrary/UnityFluentIcon.mjs";
|
|
6
|
-
import { getIconFromName } from "../../tree/TreeUtilities.mjs";
|
|
7
|
-
import { useAxiosGet } from "../../useAxiosGet.mjs";
|
|
8
2
|
import { PaymentTenderTypeEnum } from "../../../enums/paymentTenderTypeEnum.mjs";
|
|
9
|
-
import {
|
|
3
|
+
import { useApiQuery } from "../../useApiQuery.mjs";
|
|
4
|
+
import { UdpFlexbox } from "../../../UI/fluent-web-components/UdpFlexbox.mjs";
|
|
5
|
+
import { UdpRadioGroup } from "../../../UI/fluent-web-components/UdpRadioGroup.mjs";
|
|
6
|
+
import { UdpSpinner } from "../../../UI/fluent-web-components/UdpSpinner.mjs";
|
|
10
7
|
import { usePaymentProviderForm } from "./usePaymentProviderForm.mjs";
|
|
11
|
-
import PaymentDropdown from "./PaymentDropdown.mjs";
|
|
12
8
|
import { HostedPaymentError } from "./HostedPaymentError.mjs";
|
|
13
9
|
import { NewCreditCardForm } from "./NewCreditCardForm.mjs";
|
|
14
|
-
import React, { useEffect, useState } from "react";
|
|
15
|
-
import { Box, makeStyles } from "@material-ui/core";
|
|
10
|
+
import React, { useEffect, useMemo, useState } from "react";
|
|
16
11
|
import { useTranslation } from "react-i18next";
|
|
17
12
|
//#region src/utilities/form/paymentForm/CreditCardForm.tsx
|
|
18
|
-
const
|
|
19
|
-
cardNumber: {
|
|
20
|
-
width: "100%",
|
|
21
|
-
marginBottom: "10px"
|
|
22
|
-
},
|
|
23
|
-
formControl: {
|
|
24
|
-
width: "100%",
|
|
25
|
-
"&.cardNumber": { marginBottom: "10px" },
|
|
26
|
-
"&.submitControl": { marginTop: "35px" }
|
|
27
|
-
},
|
|
28
|
-
formControlCheck: {
|
|
29
|
-
width: "100%",
|
|
30
|
-
marginTop: "5px",
|
|
31
|
-
marginLeft: "3px"
|
|
32
|
-
}
|
|
33
|
-
}));
|
|
13
|
+
const OTHER_RADIO_VALUE = "__other__";
|
|
34
14
|
/**
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
* @param {string} externalId - External identifier for the payment form.
|
|
41
|
-
* @param {object} paymentDetails - Details of the payment.
|
|
42
|
-
* @param {string|null} providerType - Type of the payment provider.
|
|
43
|
-
* @param {object|null} providerProps - Properties for the payment provider.
|
|
44
|
-
* @param {boolean} isHostedPaymentPage - Flag to indicate if it is a hosted payment page.
|
|
45
|
-
* @param {boolean} hasReadPropertiesError - Flag to indicate if there was an error reading properties.
|
|
46
|
-
* @param {string} readPropertiesMessageError - Error message for reading properties.
|
|
47
|
-
* @param {boolean} enabled - Flag to indicate if the form is enabled.
|
|
48
|
-
* @param {function} onStatusChange - Callback function to handle status changes.
|
|
49
|
-
* @param {function} setSelectedPaymentAccount - Callback function to set the selected payment account.
|
|
50
|
-
* @param {string} actionLabel - Label for the action button.
|
|
51
|
-
* @param {object} restProps - Additional properties.
|
|
52
|
-
*
|
|
53
|
-
* @returns {JSX.Element} The rendered CreditCardForm component.
|
|
15
|
+
* Credit-card branch of the payment form. Shows:
|
|
16
|
+
* - A radio list of saved cards (when any exist) + an "Other / new card"
|
|
17
|
+
* option, per D3 of REFACTOR_PLAN.md
|
|
18
|
+
* - Either the hosted-payment iframe (when `isHostedPaymentPage`) or the
|
|
19
|
+
* manual `NewCreditCardForm` once the user picks "Other".
|
|
54
20
|
*/
|
|
55
|
-
const CreditCardForm = (
|
|
56
|
-
const $ = c(38);
|
|
57
|
-
const { isFormDisabled: t1, data, externalId, paymentDetails, providerType: t2, providerProps: t3, isHostedPaymentPage, hasReadPropertiesError, readPropertiesMessageError, actionLabel, onStatusChange, setSelectedPaymentAccount } = t0;
|
|
58
|
-
const isFormDisabled = t1 === void 0 ? false : t1;
|
|
59
|
-
const providerType = t2 === void 0 ? null : t2;
|
|
60
|
-
const providerProps = t3 === void 0 ? null : t3;
|
|
21
|
+
const CreditCardForm = ({ isFormDisabled = false, data, externalId, paymentDetails, providerType = null, providerProps = null, isHostedPaymentPage, hasReadPropertiesError, readPropertiesMessageError, actionLabel, allowSaveMethod = true, onStatusChange, setSelectedPaymentAccount }) => {
|
|
61
22
|
const { t } = useTranslation();
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
const
|
|
65
|
-
const [
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
let t7;
|
|
85
|
-
if ($[3] !== isHostedPaymentPage || $[4] !== onStatusChange || $[5] !== paymentAccounts?.length) {
|
|
86
|
-
t7 = () => {
|
|
87
|
-
const showHostedPaymentPageByDefault = isHostedPaymentPage && paymentAccounts?.length > 0;
|
|
88
|
-
const enableSubmitForm = isHostedPaymentPage === false || paymentAccounts?.length > 0;
|
|
89
|
-
setShowHostedPaymentPage(!showHostedPaymentPageByDefault);
|
|
90
|
-
onStatusChange && onStatusChange({ isValid: enableSubmitForm });
|
|
91
|
-
};
|
|
92
|
-
$[3] = isHostedPaymentPage;
|
|
93
|
-
$[4] = onStatusChange;
|
|
94
|
-
$[5] = paymentAccounts?.length;
|
|
95
|
-
$[6] = t7;
|
|
96
|
-
} else t7 = $[6];
|
|
97
|
-
let t8;
|
|
98
|
-
if ($[7] !== isHostedPaymentPage || $[8] !== paymentAccounts) {
|
|
99
|
-
t8 = [isHostedPaymentPage, paymentAccounts];
|
|
100
|
-
$[7] = isHostedPaymentPage;
|
|
101
|
-
$[8] = paymentAccounts;
|
|
102
|
-
$[9] = t8;
|
|
103
|
-
} else t8 = $[9];
|
|
104
|
-
useEffect(t7, t8);
|
|
105
|
-
if (loadingPaymentAccounts) {
|
|
106
|
-
let t9;
|
|
107
|
-
if ($[10] === Symbol.for("react.memo_cache_sentinel")) {
|
|
108
|
-
t9 = /* @__PURE__ */ React.createElement(Box, { sx: { width: "100%" } }, /* @__PURE__ */ React.createElement(LinearProgress$1, null));
|
|
109
|
-
$[10] = t9;
|
|
110
|
-
} else t9 = $[10];
|
|
111
|
-
return t9;
|
|
112
|
-
}
|
|
113
|
-
if (!showHostedPaymentPage && paymentAccounts?.length > 0) {
|
|
114
|
-
let t9;
|
|
115
|
-
if ($[11] !== paymentAccounts || $[12] !== setSelectedPaymentAccount) {
|
|
116
|
-
t9 = /* @__PURE__ */ React.createElement(PaymentDropdown, {
|
|
117
|
-
paymentAccounts,
|
|
118
|
-
setSelectedPaymentAccount,
|
|
119
|
-
paymentType: PaymentTenderTypeEnum.CreditCard
|
|
120
|
-
});
|
|
121
|
-
$[11] = paymentAccounts;
|
|
122
|
-
$[12] = setSelectedPaymentAccount;
|
|
123
|
-
$[13] = t9;
|
|
124
|
-
} else t9 = $[13];
|
|
125
|
-
let t10;
|
|
126
|
-
let t11;
|
|
127
|
-
if ($[14] === Symbol.for("react.memo_cache_sentinel")) {
|
|
128
|
-
t10 = /* @__PURE__ */ React.createElement(UnityFluentIcon, { icon: getIconFromName("PaymentCardIcon") });
|
|
129
|
-
t11 = { padding: "18px 20px" };
|
|
130
|
-
$[14] = t10;
|
|
131
|
-
$[15] = t11;
|
|
132
|
-
} else {
|
|
133
|
-
t10 = $[14];
|
|
134
|
-
t11 = $[15];
|
|
23
|
+
const { data: paymentAccounts, isLoading: loadingPaymentAccounts } = useApiQuery(ConfigService.pgV1ApiUrl, `PaymentTokenCreditCard/${externalId}`, {}, { enabled: Boolean(externalId) });
|
|
24
|
+
const savedMethods = paymentAccounts ?? [];
|
|
25
|
+
const hasSavedMethods = savedMethods.length > 0;
|
|
26
|
+
const [selected, setSelected] = useState(OTHER_RADIO_VALUE);
|
|
27
|
+
useEffect(() => {
|
|
28
|
+
setSelected(savedMethods[0]?.paymentTokenID || OTHER_RADIO_VALUE);
|
|
29
|
+
}, [savedMethods]);
|
|
30
|
+
useEffect(() => {
|
|
31
|
+
if (selected && selected !== OTHER_RADIO_VALUE) {
|
|
32
|
+
const sel = savedMethods.find((s) => s?.paymentTokenID === selected);
|
|
33
|
+
setSelectedPaymentAccount?.(sel || null);
|
|
34
|
+
} else setSelectedPaymentAccount?.(null);
|
|
35
|
+
}, [
|
|
36
|
+
selected,
|
|
37
|
+
savedMethods,
|
|
38
|
+
setSelectedPaymentAccount
|
|
39
|
+
]);
|
|
40
|
+
const showOtherForm = selected === OTHER_RADIO_VALUE;
|
|
41
|
+
useEffect(() => {
|
|
42
|
+
if (!showOtherForm) {
|
|
43
|
+
onStatusChange?.({ isValid: true });
|
|
44
|
+
return;
|
|
135
45
|
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
return t10;
|
|
187
|
-
}
|
|
188
|
-
let t9;
|
|
189
|
-
if ($[30] !== classes || $[31] !== creditCardNumberInput || $[32] !== isFormDisabled || $[33] !== isHostedPaymentPage || $[34] !== paymentDetails || $[35] !== paymentProviderForm || $[36] !== showHostedPaymentPage) {
|
|
190
|
-
t9 = showHostedPaymentPage && isHostedPaymentPage ? paymentProviderForm : /* @__PURE__ */ React.createElement(NewCreditCardForm, {
|
|
191
|
-
isFormDisabled,
|
|
192
|
-
classes,
|
|
193
|
-
paymentDetails,
|
|
194
|
-
creditCardNumberInput,
|
|
195
|
-
setCreditCardNumberInput
|
|
196
|
-
});
|
|
197
|
-
$[30] = classes;
|
|
198
|
-
$[31] = creditCardNumberInput;
|
|
199
|
-
$[32] = isFormDisabled;
|
|
200
|
-
$[33] = isHostedPaymentPage;
|
|
201
|
-
$[34] = paymentDetails;
|
|
202
|
-
$[35] = paymentProviderForm;
|
|
203
|
-
$[36] = showHostedPaymentPage;
|
|
204
|
-
$[37] = t9;
|
|
205
|
-
} else t9 = $[37];
|
|
206
|
-
return t9;
|
|
46
|
+
if (isHostedPaymentPage === false) onStatusChange?.({ isValid: true });
|
|
47
|
+
else onStatusChange?.({ isValid: false });
|
|
48
|
+
}, [showOtherForm, isHostedPaymentPage]);
|
|
49
|
+
const paymentProviderForm = usePaymentProviderForm(PaymentTenderTypeEnum.CreditCard, providerType, providerProps, onStatusChange, paymentDetails, data);
|
|
50
|
+
const items = useMemo(() => {
|
|
51
|
+
return [...savedMethods.map((m) => {
|
|
52
|
+
const nickname = m?.paymentToken?.nickname ?? t("Saved card");
|
|
53
|
+
const exp = m?.expirationDate ? new Date(m.expirationDate).toLocaleDateString("en-US", {
|
|
54
|
+
month: "2-digit",
|
|
55
|
+
year: "2-digit"
|
|
56
|
+
}) : null;
|
|
57
|
+
return {
|
|
58
|
+
label: exp ? `${nickname} (${exp})` : nickname,
|
|
59
|
+
value: String(m?.paymentTokenID ?? "")
|
|
60
|
+
};
|
|
61
|
+
}), {
|
|
62
|
+
label: actionLabel || t("Use a different card"),
|
|
63
|
+
value: OTHER_RADIO_VALUE
|
|
64
|
+
}];
|
|
65
|
+
}, [
|
|
66
|
+
savedMethods,
|
|
67
|
+
actionLabel,
|
|
68
|
+
t
|
|
69
|
+
]);
|
|
70
|
+
if (loadingPaymentAccounts) return /* @__PURE__ */ React.createElement(UdpFlexbox, {
|
|
71
|
+
direction: "row",
|
|
72
|
+
justify: "center",
|
|
73
|
+
align: "center"
|
|
74
|
+
}, /* @__PURE__ */ React.createElement(UdpSpinner, { size: "medium" }));
|
|
75
|
+
if (hasReadPropertiesError) return /* @__PURE__ */ React.createElement(HostedPaymentError, {
|
|
76
|
+
error: t("Configuration error"),
|
|
77
|
+
message: readPropertiesMessageError || t("Unknown error")
|
|
78
|
+
});
|
|
79
|
+
return /* @__PURE__ */ React.createElement(UdpFlexbox, {
|
|
80
|
+
direction: "column",
|
|
81
|
+
gap: "sm",
|
|
82
|
+
wrap: "nowrap"
|
|
83
|
+
}, hasSavedMethods && /* @__PURE__ */ React.createElement(UdpRadioGroup, {
|
|
84
|
+
label: t("Saved cards"),
|
|
85
|
+
name: "savedCreditCard",
|
|
86
|
+
orientation: "vertical",
|
|
87
|
+
disabled: isFormDisabled,
|
|
88
|
+
value: selected,
|
|
89
|
+
items,
|
|
90
|
+
onChange: (e) => setSelected(String(e.target.value))
|
|
91
|
+
}), showOtherForm && (isHostedPaymentPage ? paymentProviderForm : /* @__PURE__ */ React.createElement(NewCreditCardForm, {
|
|
92
|
+
isFormDisabled,
|
|
93
|
+
paymentDetails,
|
|
94
|
+
allowSaveMethod
|
|
95
|
+
})));
|
|
207
96
|
};
|
|
208
97
|
//#endregion
|
|
209
98
|
export { CreditCardForm };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreditCardForm.mjs","names":["React","useState","useEffect","Box","makeStyles","UnityFluentIcon","getIconFromName","useTranslation","usePaymentProviderForm","PaymentDetails","PaymentMethodData","PaymentTenderTypeEnum","PaymentVendorFactoryEnum","LinearProgress","useUser","useAxiosGet","PaymentDropdown","FluentButton","HostedPaymentError","NewCreditCardForm","ConfigService","useStyles","theme","cardNumber","width","marginBottom","formControl","marginTop","formControlCheck","marginLeft","CreditCardFormProps","isFormDisabled","paymentDetails","externalId","tenantId","providerType","providerProps","isHostedPaymentPage","hasReadPropertiesError","readPropertiesMessageError","enabled","data","actionLabel","setSelectedPaymentAccount","paymentAccount","onStatusChange","paymentFormResult","CreditCardForm","t0","$","_c","t1","t2","t3","undefined","t","classes","paymentProviderForm","CreditCard","showHostedPaymentPage","setShowHostedPaymentPage","creditCardNumberInput","setCreditCardNumberInput","t4","Symbol","for","t5","pgV1ApiUrl","paymentAccounts","loading","loadingPaymentAccounts","t6","isValid","handleShowHostedPaymentPage","t7","length","showHostedPaymentPageByDefault","enableSubmitForm","t8","t9","t10","t11","padding","t12","t13","t14"],"sources":["../../../../src/utilities/form/paymentForm/CreditCardForm.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport {\n Box,\n makeStyles} from '@material-ui/core';\nimport { UnityFluentIcon } from '../../iconLibrary/UnityFluentIcon'\nimport { getIconFromName } from '../../tree/TreeUtilities';\nimport { useTranslation } from 'react-i18next';\nimport { usePaymentProviderForm } from './usePaymentProviderForm';\nimport { PaymentDetails, PaymentMethodData } from './AccountPayment.model';\nimport { PaymentTenderTypeEnum } from '../../../enums/paymentTenderTypeEnum';\nimport { PaymentVendorFactoryEnum } from '../../../enums/paymentVendorFactoryEnum';\nimport { LinearProgress } from '../../../UI/loading/LinearProgress';\nimport { useUser } from '../../auth/useUser';\nimport { useAxiosGet } from '../../useAxiosGet';\nimport PaymentDropdown from './PaymentDropdown';\nimport { FluentButton } from '../../../UI/inputs/buttons/FluentButton';\nimport { HostedPaymentError } from './HostedPaymentError';\nimport { NewCreditCardForm } from './NewCreditCardForm';\nimport { ConfigService } from '../../../configService';\n\nconst useStyles = makeStyles(theme => ({\n cardNumber: {\n width: '100%',\n marginBottom: '10px'\n },\n formControl: {\n width: '100%',\n '&.cardNumber': {\n marginBottom: '10px',\n },\n '&.submitControl': {\n marginTop: '35px',\n },\n },\n formControlCheck: {\n width: '100%',\n marginTop: '5px',\n marginLeft: '3px',\n },\n}));\n\ninterface CreditCardFormProps {\n isFormDisabled?: boolean;\n paymentDetails: PaymentDetails;\n externalId?: string;\n tenantId: string;\n providerType?: PaymentVendorFactoryEnum | null;\n providerProps?: any;\n isHostedPaymentPage?: boolean | null;\n hasReadPropertiesError?: boolean | null;\n readPropertiesMessageError?: string | null;\n enabled?: boolean | null;\n data?: PaymentMethodData;\n actionLabel?: string;\n setSelectedPaymentAccount?: (paymentAccount: any) => void;\n onStatusChange?: (paymentFormResult: any) => void;\n}\n\n/**\n * CreditCardForm component handles the rendering of a credit card payment form.\n * It supports both hosted payment pages and direct credit card input forms.\n *\n * @param {boolean} isFormDisabled - Flag to disable the form.\n * @param {object} data - Data related to the payment form.\n * @param {string} externalId - External identifier for the payment form.\n * @param {object} paymentDetails - Details of the payment.\n * @param {string|null} providerType - Type of the payment provider.\n * @param {object|null} providerProps - Properties for the payment provider.\n * @param {boolean} isHostedPaymentPage - Flag to indicate if it is a hosted payment page.\n * @param {boolean} hasReadPropertiesError - Flag to indicate if there was an error reading properties.\n * @param {string} readPropertiesMessageError - Error message for reading properties.\n * @param {boolean} enabled - Flag to indicate if the form is enabled.\n * @param {function} onStatusChange - Callback function to handle status changes.\n * @param {function} setSelectedPaymentAccount - Callback function to set the selected payment account.\n * @param {string} actionLabel - Label for the action button.\n * @param {object} restProps - Additional properties.\n *\n * @returns {JSX.Element} The rendered CreditCardForm component.\n */\nexport const CreditCardForm = ({\n isFormDisabled = false,\n data,\n externalId,\n paymentDetails,\n providerType = null,\n providerProps = null,\n isHostedPaymentPage,\n hasReadPropertiesError,\n readPropertiesMessageError,\n enabled,\n actionLabel,\n onStatusChange,\n setSelectedPaymentAccount,\n ...restProps\n}: CreditCardFormProps): any => {\n\n const { t } = useTranslation();\n const classes = useStyles();\n const user = useUser();\n\n const paymentProviderForm = usePaymentProviderForm(\n PaymentTenderTypeEnum.CreditCard,\n providerType,\n providerProps,\n onStatusChange,\n paymentDetails,\n data\n );\n\n const [showHostedPaymentPage, setShowHostedPaymentPage] = useState(false);\n const [creditCardNumberInput, setCreditCardNumberInput] = useState('');\n // @ts-ignore\n const [{ data: paymentAccounts, loading: loadingPaymentAccounts }] = useAxiosGet(\n ConfigService.pgV1ApiUrl,\n `PaymentTokenCreditCard/${externalId}`,\n {},\n false\n );\n\n const handleShowHostedPaymentPage = () => {\n setShowHostedPaymentPage(true);\n onStatusChange && onStatusChange({ isValid: false });\n };\n\n useEffect(() => {\n const showHostedPaymentPageByDefault = (isHostedPaymentPage && paymentAccounts?.length > 0);\n const enableSubmitForm = (isHostedPaymentPage === false || paymentAccounts?.length > 0);\n\n setShowHostedPaymentPage(!showHostedPaymentPageByDefault);\n onStatusChange && onStatusChange({ isValid: enableSubmitForm });\n }, [isHostedPaymentPage, paymentAccounts]);\n\n if (loadingPaymentAccounts) {\n return (\n // @ts-ignore\n <Box sx={{ width: '100%' }}>\n <LinearProgress />\n </Box>\n );\n }\n\n if (!showHostedPaymentPage && paymentAccounts?.length > 0) {\n return (\n <>\n <PaymentDropdown\n paymentAccounts={paymentAccounts}\n setSelectedPaymentAccount={setSelectedPaymentAccount}\n paymentType={PaymentTenderTypeEnum.CreditCard}\n />\n { /* @ts-ignore */ }\n <Box textAlign=\"center\" mt={3}>\n <FluentButton\n variant=\"outlined\"\n color=\"primary\"\n onClick={handleShowHostedPaymentPage}\n size=\"small\"\n startIcon={\n <UnityFluentIcon icon={getIconFromName('PaymentCardIcon')} />\n }\n style={{ padding: \"18px 20px\" }}\n >\n {actionLabel || t('Enter Card Details')}\n </FluentButton>\n </Box>\n </>\n );\n }\n\n if (hasReadPropertiesError) {\n return (\n <HostedPaymentError error=\"Error\" message={readPropertiesMessageError || t('Unknown error')} />\n );\n }\n\n return showHostedPaymentPage &&\n isHostedPaymentPage ?\n paymentProviderForm : (\n <NewCreditCardForm\n isFormDisabled={isFormDisabled}\n classes={classes}\n paymentDetails={paymentDetails}\n creditCardNumberInput={creditCardNumberInput}\n setCreditCardNumberInput={setCreditCardNumberInput}\n />\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CreditCardForm.mjs","names":["React","useEffect","useMemo","useState","useTranslation","UdpFlexbox","UdpRadioGroup","UdpSpinner","usePaymentProviderForm","PaymentDetails","PaymentMethodData","PaymentTenderTypeEnum","PaymentVendorFactoryEnum","useApiQuery","HostedPaymentError","NewCreditCardForm","ConfigService","OTHER_RADIO_VALUE","CreditCardFormProps","isFormDisabled","paymentDetails","externalId","tenantId","providerType","providerProps","isHostedPaymentPage","hasReadPropertiesError","readPropertiesMessageError","enabled","data","actionLabel","allowSaveMethod","setSelectedPaymentAccount","paymentAccount","onStatusChange","paymentFormResult","CreditCardForm","t","paymentAccounts","isLoading","loadingPaymentAccounts","pgV1ApiUrl","Boolean","savedMethods","hasSavedMethods","length","selected","setSelected","paymentTokenID","sel","find","s","showOtherForm","isValid","paymentProviderForm","CreditCard","items","savedItems","map","m","nickname","paymentToken","exp","expirationDate","Date","toLocaleDateString","month","year","label","value","String","e","target"],"sources":["../../../../src/utilities/form/paymentForm/CreditCardForm.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { UdpFlexbox } from '../../../UI/fluent-web-components/UdpFlexbox';\nimport { UdpRadioGroup } from '../../../UI/fluent-web-components/UdpRadioGroup';\nimport { UdpSpinner } from '../../../UI/fluent-web-components/UdpSpinner';\nimport { usePaymentProviderForm } from './usePaymentProviderForm';\nimport { PaymentDetails, PaymentMethodData } from './AccountPayment.model';\nimport { PaymentTenderTypeEnum } from '../../../enums/paymentTenderTypeEnum';\nimport { PaymentVendorFactoryEnum } from '../../../enums/paymentVendorFactoryEnum';\nimport { useApiQuery } from '../../useApiQuery';\nimport { HostedPaymentError } from './HostedPaymentError';\nimport { NewCreditCardForm } from './NewCreditCardForm';\nimport { ConfigService } from '../../../configService';\n\nconst OTHER_RADIO_VALUE = '__other__';\n\ninterface CreditCardFormProps {\n isFormDisabled?: boolean;\n paymentDetails: PaymentDetails;\n externalId?: string;\n tenantId?: string;\n providerType?: PaymentVendorFactoryEnum | null;\n providerProps?: any;\n isHostedPaymentPage?: boolean | null;\n hasReadPropertiesError?: boolean | null;\n readPropertiesMessageError?: string | null;\n enabled?: boolean | null;\n data?: PaymentMethodData;\n actionLabel?: string;\n /** When false, the manual card form hides its \"save this card\" checkbox. */\n allowSaveMethod?: boolean;\n setSelectedPaymentAccount?: (paymentAccount: any) => void;\n onStatusChange?: (paymentFormResult: any) => void;\n}\n\n/**\n * Credit-card branch of the payment form. Shows:\n * - A radio list of saved cards (when any exist) + an \"Other / new card\"\n * option, per D3 of REFACTOR_PLAN.md\n * - Either the hosted-payment iframe (when `isHostedPaymentPage`) or the\n * manual `NewCreditCardForm` once the user picks \"Other\".\n */\nexport const CreditCardForm = ({\n isFormDisabled = false,\n data,\n externalId,\n paymentDetails,\n providerType = null,\n providerProps = null,\n isHostedPaymentPage,\n hasReadPropertiesError,\n readPropertiesMessageError,\n actionLabel,\n allowSaveMethod = true,\n onStatusChange,\n setSelectedPaymentAccount,\n}: CreditCardFormProps) => {\n const { t } = useTranslation();\n\n const { data: paymentAccounts, isLoading: loadingPaymentAccounts } = useApiQuery<any[]>(\n ConfigService.pgV1ApiUrl,\n `PaymentTokenCreditCard/${externalId}`,\n {},\n { enabled: Boolean(externalId) },\n );\n\n const savedMethods = paymentAccounts ?? [];\n const hasSavedMethods = savedMethods.length > 0;\n\n const [selected, setSelected] = useState<string>(OTHER_RADIO_VALUE);\n\n // Default to the first saved method, or \"Other\" if none on file.\n useEffect(() => {\n setSelected(savedMethods[0]?.paymentTokenID || OTHER_RADIO_VALUE);\n }, [savedMethods]);\n\n // Push the selected saved token up so the submit flow can include it.\n useEffect(() => {\n if (selected && selected !== OTHER_RADIO_VALUE) {\n const sel = savedMethods.find((s: any) => s?.paymentTokenID === selected);\n setSelectedPaymentAccount?.(sel || null);\n } else {\n setSelectedPaymentAccount?.(null);\n }\n }, [selected, savedMethods, setSelectedPaymentAccount]);\n\n const showOtherForm = selected === OTHER_RADIO_VALUE;\n\n // Report validity to the parent picker so submit can be enabled. The hosted\n // iframe component reports its own granular status; we only set a coarse\n // \"ready to submit\" signal here.\n useEffect(() => {\n if (!showOtherForm) {\n onStatusChange?.({ isValid: true });\n return;\n }\n if (isHostedPaymentPage === false) {\n // Manual entry — RFF blocks invalid submits at submit time.\n onStatusChange?.({ isValid: true });\n } else {\n // Hosted iframe — wait for the iframe to report a token.\n onStatusChange?.({ isValid: false });\n }\n // onStatusChange is intentionally omitted from deps; consumers may pass\n // unstable references and we only want to fire when the selection / mode\n // changes.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [showOtherForm, isHostedPaymentPage]);\n\n const paymentProviderForm = usePaymentProviderForm(\n PaymentTenderTypeEnum.CreditCard,\n providerType,\n providerProps,\n onStatusChange,\n paymentDetails,\n data,\n );\n\n const items = useMemo(() => {\n const savedItems = savedMethods.map((m: any) => {\n const nickname = m?.paymentToken?.nickname ?? t('Saved card');\n const exp = m?.expirationDate\n ? new Date(m.expirationDate).toLocaleDateString('en-US', {\n month: '2-digit',\n year: '2-digit',\n })\n : null;\n return {\n label: exp ? `${nickname} (${exp})` : nickname,\n value: String(m?.paymentTokenID ?? ''),\n };\n });\n return [\n ...savedItems,\n {\n label: actionLabel || t('Use a different card'),\n value: OTHER_RADIO_VALUE,\n },\n ];\n }, [savedMethods, actionLabel, t]);\n\n if (loadingPaymentAccounts) {\n return (\n <UdpFlexbox direction=\"row\" justify=\"center\" align=\"center\">\n <UdpSpinner size=\"medium\" />\n </UdpFlexbox>\n );\n }\n\n if (hasReadPropertiesError) {\n return (\n <HostedPaymentError\n error={t('Configuration error')}\n message={readPropertiesMessageError || t('Unknown error')}\n />\n );\n }\n\n return (\n <UdpFlexbox direction=\"column\" gap=\"sm\" wrap=\"nowrap\">\n {hasSavedMethods && (\n <UdpRadioGroup\n label={t('Saved cards')}\n name=\"savedCreditCard\"\n orientation=\"vertical\"\n disabled={isFormDisabled}\n value={selected}\n items={items}\n onChange={(e) => setSelected(String(e.target.value))}\n />\n )}\n\n {showOtherForm &&\n (isHostedPaymentPage ? (\n paymentProviderForm\n ) : (\n <NewCreditCardForm\n isFormDisabled={isFormDisabled}\n paymentDetails={paymentDetails}\n allowSaveMethod={allowSaveMethod}\n />\n ))}\n </UdpFlexbox>\n );\n};\n"],"mappings":";;;;;;;;;;;;AAcA,MAAMiB,oBAAoB;;;;;;;;AA4B1B,MAAamB,kBAAkB,EAC7BjB,iBAAiB,OACjBU,MACAR,YACAD,gBACAG,eAAe,MACfC,gBAAgB,MAChBC,qBACAC,wBACAC,4BACAG,aACAC,kBAAkB,MAClBG,gBACAF,gCACyB;CACzB,MAAM,EAAEK,MAAMjC,gBAAgB;CAE9B,MAAM,EAAEyB,MAAMS,iBAAiBC,WAAWC,2BAA2B3B,YACnEG,cAAcyB,YACd,0BAA0BpB,cAC1B,EAAE,EACF,EAAEO,SAASc,QAAQrB,WAAU,EAC/B,CAAC;CAED,MAAMsB,eAAeL,mBAAmB,EAAE;CAC1C,MAAMM,kBAAkBD,aAAaE,SAAS;CAE9C,MAAM,CAACC,UAAUC,eAAe5C,SAAiBc,kBAAkB;AAGnEhB,iBAAgB;AACd8C,cAAYJ,aAAa,IAAIK,kBAAkB/B,kBAAkB;IAChE,CAAC0B,aAAa,CAAC;AAGlB1C,iBAAgB;AACd,MAAI6C,YAAYA,aAAa7B,mBAAmB;GAC9C,MAAMgC,MAAMN,aAAaO,MAAMC,MAAWA,GAAGH,mBAAmBF,SAAS;AACzEd,+BAA4BiB,OAAO,KAAK;QAExCjB,6BAA4B,KAAK;IAElC;EAACc;EAAUH;EAAcX;EAA0B,CAAC;CAEvD,MAAMoB,gBAAgBN,aAAa7B;AAKnChB,iBAAgB;AACd,MAAI,CAACmD,eAAe;AAClBlB,oBAAiB,EAAEmB,SAAS,MAAM,CAAC;AACnC;;AAEF,MAAI5B,wBAAwB,MAE1BS,kBAAiB,EAAEmB,SAAS,MAAM,CAAC;MAGnCnB,kBAAiB,EAAEmB,SAAS,OAAO,CAAC;IAMrC,CAACD,eAAe3B,oBAAoB,CAAC;CAExC,MAAM6B,sBAAsB9C,uBAC1BG,sBAAsB4C,YACtBhC,cACAC,eACAU,gBACAd,gBACAS,KACD;CAED,MAAM2B,QAAQtD,cAAc;AAc1B,SAAO,CACL,GAdiByC,aAAae,KAAKC,MAAW;GAC9C,MAAMC,WAAWD,GAAGE,cAAcD,YAAYvB,EAAE,aAAa;GAC7D,MAAMyB,MAAMH,GAAGI,iBACX,IAAIC,KAAKL,EAAEI,eAAe,CAACE,mBAAmB,SAAS;IACrDC,OAAO;IACPC,MAAM;IACP,CAAC,GACF;AACJ,UAAO;IACLC,OAAON,MAAM,GAAGF,SAAQ,IAAKE,IAAG,KAAMF;IACtCS,OAAOC,OAAOX,GAAGX,kBAAkB,GAAE;IACtC;IACD,EAGA;GACEoB,OAAOtC,eAAeO,EAAE,uBAAuB;GAC/CgC,OAAOpD;GACR,CACF;IACA;EAAC0B;EAAcb;EAAaO;EAAE,CAAC;AAElC,KAAIG,uBACF,QACE,sBAAA,cAAC,YAAD;EAAY,WAAU;EAAM,SAAQ;EAAS,OAAM;EAEtC,EADX,sBAAA,cAAC,YAAD,EAAY,MAAK,UAAQ,CAAA,CACd;AAIjB,KAAId,uBACF,QACE,sBAAA,cAAC,oBAAD;EACE,OAAOW,EAAE,sBAAsB;EAC/B,SAASV,8BAA8BU,EAAE,gBAAgB;EACzD,CAAA;AAIN,QACE,sBAAA,cAAC,YAAD;EAAY,WAAU;EAAS,KAAI;EAAK,MAAK;EAuBhC,EAtBVO,mBACC,sBAAA,cAAC,eAAD;EACE,OAAOP,EAAE,cAAc;EACvB,MAAK;EACL,aAAY;EACZ,UAAUlB;EACV,OAAO2B;EACAU;EACP,WAAWe,MAAMxB,YAAYuB,OAAOC,EAAEC,OAAOH,MAAM,CAAC;EAEvD,CAAA,EAEAjB,kBACE3B,sBACC6B,sBAEA,sBAAA,cAAC,mBAAD;EACkBnC;EACAC;EACCW;EAEpB,CAAA,EACQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreditCardUtils.d.ts","sourceRoot":"","sources":["../../../../src/utilities/form/paymentForm/CreditCardUtils.ts"],"names":[],"mappings":"AAmBA;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,KAAA,OA+B3C;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,KAAK,KAAA,EAAE,SAAS,KAAA,EAAE,SAAS,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,UAU9E;AACD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,KAAA,
|
|
1
|
+
{"version":3,"file":"CreditCardUtils.d.ts","sourceRoot":"","sources":["../../../../src/utilities/form/paymentForm/CreditCardUtils.ts"],"names":[],"mappings":"AAmBA;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,KAAA,OA+B3C;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,KAAK,KAAA,EAAE,SAAS,KAAA,EAAE,SAAS,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,UAU9E;AACD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,KAAA,UAczC;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,KAAA,UAS5C;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,KAAA,UAGxC;AAED,qFAAqF;AACrF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQ1D,CAAC;AAEF,eAAO,MAAM,0BAA0B,sCAGtC,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,uBAAuB,sCAA6B,CAAC"}
|
|
@@ -68,6 +68,11 @@ export function formatCVC(value, prevValue, allValues = {}) {
|
|
|
68
68
|
*/
|
|
69
69
|
export function formatExpirationDate(value) {
|
|
70
70
|
const clearValue = clearNumber(value);
|
|
71
|
+
// Exactly 6 digits is MM + a 4-digit year ("07/2027" from paste or browser
|
|
72
|
+
// autofill): keep the year's last two digits, not its first two.
|
|
73
|
+
if (clearValue.length === 6) {
|
|
74
|
+
return `${clearValue.slice(0, 2)}/${clearValue.slice(4, 6)}`;
|
|
75
|
+
}
|
|
71
76
|
if (clearValue.length >= 3) {
|
|
72
77
|
return `${clearValue.slice(0, 2)}/${clearValue.slice(2, 4)}`;
|
|
73
78
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreditCardUtils.js","sourceRoot":"","sources":["../../../../src/utilities/form/paymentForm/CreditCardUtils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CreditCardUtils.js","sourceRoot":"","sources":["../../../../src/utilities/form/paymentForm/CreditCardUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -64,6 +64,7 @@ function formatCVC(value, prevValue, allValues = {}) {
|
|
|
64
64
|
*/
|
|
65
65
|
function formatExpirationDate(value) {
|
|
66
66
|
const clearValue = clearNumber(value);
|
|
67
|
+
if (clearValue.length === 6) return `${clearValue.slice(0, 2)}/${clearValue.slice(4, 6)}`;
|
|
67
68
|
if (clearValue.length >= 3) return `${clearValue.slice(0, 2)}/${clearValue.slice(2, 4)}`;
|
|
68
69
|
return clearValue;
|
|
69
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreditCardUtils.mjs","names":["Payment","visa","mastercard","amex","discover","diners","unionpay","jcb","clearNumber","value","replace","formatCreditCardNumber","issuer","fns","cardType","clearValue","nextValue","slice","trim","formatCVC","prevValue","allValues","number","maxLength","formatExpirationDate","length","formatBankAccountNumber","formatRoutingNumber","CreditCardBrandIconUrls","Record","dinersclub","getCreditCardMethodIconUrl","creditCardNumber","getCreditCardMethodIcon"],"sources":["../../../../src/utilities/form/paymentForm/CreditCardUtils.ts"],"sourcesContent":["import Payment from 'payment';\nimport visa from '../../../assets/paymentIcons/visa.svg';\nimport mastercard from '../../../assets/paymentIcons/mastercard.svg';\nimport amex from '../../../assets/paymentIcons/amex.svg';\nimport discover from '../../../assets/paymentIcons/discover.svg';\nimport diners from '../../../assets/paymentIcons/diners.svg';\nimport unionpay from '../../../assets/paymentIcons/unionpay.svg';\nimport jcb from '../../../assets/paymentIcons/jcb.svg';\n\n/**\n * clearNumber\n *\n * @param {string} [value='']\n * @return {*}\n */\nfunction clearNumber(value = '') {\n return value.replace(/\\D+/g, '');\n}\n\n/**\n * formatCreditCardNumber - Format credit card number\n *\n * @export\n * @param {*} value\n * @return {*}\n */\nexport function formatCreditCardNumber(value) {\n if (!value) {\n return value;\n }\n\n const issuer = Payment.fns.cardType(value);\n const clearValue = clearNumber(value);\n let nextValue;\n\n switch (issuer) {\n case 'amex':\n nextValue = `${clearValue.slice(0, 4)} ${clearValue.slice(\n 4,\n 10\n )} ${clearValue.slice(10, 15)}`;\n break;\n case 'dinersclub':\n nextValue = `${clearValue.slice(0, 4)} ${clearValue.slice(\n 4,\n 10\n )} ${clearValue.slice(10, 14)}`;\n break;\n default:\n nextValue = `${clearValue.slice(0, 4)} ${clearValue.slice(\n 4,\n 8\n )} ${clearValue.slice(8, 12)} ${clearValue.slice(12, 19)}`;\n break;\n }\n\n return nextValue.trim();\n}\n\n/**\n * formatCVC - formats the CVC value\n *\n * @export\n * @param {*} value\n * @param {*} prevValue\n * @param {*} [allValues={}]\n * @return {*}\n */\nexport function formatCVC(value, prevValue, allValues: { number?: string } = {}) {\n const clearValue = clearNumber(value);\n let maxLength = 4;\n\n if (allValues?.number) {\n const issuer = Payment.fns.cardType(allValues?.number);\n maxLength = issuer === 'amex' ? 4 : 3;\n }\n\n return clearValue.slice(0, maxLength);\n}\n/**\n * formatExpirationDate - format expiration date\n * @export\n * @param {*} value\n * @return {*}\n */\nexport function formatExpirationDate(value) {\n const clearValue = clearNumber(value);\n\n if (clearValue.length >= 3) {\n return `${clearValue.slice(0, 2)}/${clearValue.slice(2, 4)}`;\n }\n\n return clearValue;\n}\n\n/**\n * formatBankAccountNumber - Format bank account number\n * @export\n * @param {*} value\n * @return {*}\n */\nexport function formatBankAccountNumber(value) {\n const clearValue = clearNumber(value);\n return `${clearValue.slice(0, 4)} ${clearValue.slice(\n 4,\n 8\n )} ${clearValue.slice(8, 12)} ${clearValue.slice(12, 16)} ${clearValue.slice(\n 16,\n 20\n )}`;\n}\n\n/**\n * formatRoutingNumber - format routing number\n * @export\n * @param {*} value\n * @return {*}\n */\nexport function formatRoutingNumber(value) {\n const clearValue = clearNumber(value);\n return `${clearValue.slice(0, 3)} ${clearValue.slice(3, 9)}`;\n}\n\n// Map of payment brand -> icon URL. Render with <SvgIcon src={...} /> in components.\nexport const CreditCardBrandIconUrls: Record<string, string> = {\n visa,\n mastercard,\n amex,\n discover,\n jcb,\n dinersclub: diners,\n unionpay,\n};\n\nexport const getCreditCardMethodIconUrl = (creditCardNumber: string): string | null => {\n const issuer = Payment.fns.cardType(creditCardNumber);\n return CreditCardBrandIconUrls[issuer] ?? null;\n};\n\n// Back-compat alias (returns URL); prefer getCreditCardMethodIconUrl\nexport const getCreditCardMethodIcon = getCreditCardMethodIconUrl;\n"],"mappings":";;;;;;;;;;;;;;;AAeA,SAASQ,YAAYC,QAAQ,IAAI;AAC/B,QAAOA,MAAMC,QAAQ,QAAQ,GAAG;;;;;;;;;AAUlC,SAAgBC,uBAAuBF,OAAO;AAC5C,KAAI,CAACA,MACH,QAAOA;CAGT,MAAMG,SAASZ,QAAQa,IAAIC,SAASL,MAAM;CAC1C,MAAMM,aAAaP,YAAYC,MAAM;CACrC,IAAIO;AAEJ,SAAQJ,QAAR;EACE,KAAK;AACHI,eAAY,GAAGD,WAAWE,MAAM,GAAG,EAAE,CAAA,GAAIF,WAAWE,MAClD,GACA,GACD,CAAA,GAAIF,WAAWE,MAAM,IAAI,GAAG;AAC7B;EACF,KAAK;AACHD,eAAY,GAAGD,WAAWE,MAAM,GAAG,EAAE,CAAA,GAAIF,WAAWE,MAClD,GACA,GACD,CAAA,GAAIF,WAAWE,MAAM,IAAI,GAAG;AAC7B;EACF;AACED,eAAY,GAAGD,WAAWE,MAAM,GAAG,EAAE,CAAA,GAAIF,WAAWE,MAClD,GACA,EACD,CAAA,GAAIF,WAAWE,MAAM,GAAG,GAAG,CAAA,GAAIF,WAAWE,MAAM,IAAI,GAAG;AACxD;;AAGJ,QAAOD,UAAUE,MAAM;;;;;;;;;;;AAYzB,SAAgBC,UAAUV,OAAOW,WAAWC,YAAiC,EAAE,EAAE;CAC/E,MAAMN,aAAaP,YAAYC,MAAM;CACrC,IAAIc,YAAY;AAEhB,KAAIF,WAAWC,OAEbC,aADevB,QAAQa,IAAIC,SAASO,WAAWC,OAAO,KAC/B,SAAS,IAAI;AAGtC,QAAOP,WAAWE,MAAM,GAAGM,UAAU;;;;;;;;AAQvC,SAAgBC,qBAAqBf,OAAO;CAC1C,MAAMM,aAAaP,YAAYC,MAAM;
|
|
1
|
+
{"version":3,"file":"CreditCardUtils.mjs","names":["Payment","visa","mastercard","amex","discover","diners","unionpay","jcb","clearNumber","value","replace","formatCreditCardNumber","issuer","fns","cardType","clearValue","nextValue","slice","trim","formatCVC","prevValue","allValues","number","maxLength","formatExpirationDate","length","formatBankAccountNumber","formatRoutingNumber","CreditCardBrandIconUrls","Record","dinersclub","getCreditCardMethodIconUrl","creditCardNumber","getCreditCardMethodIcon"],"sources":["../../../../src/utilities/form/paymentForm/CreditCardUtils.ts"],"sourcesContent":["import Payment from 'payment';\nimport visa from '../../../assets/paymentIcons/visa.svg';\nimport mastercard from '../../../assets/paymentIcons/mastercard.svg';\nimport amex from '../../../assets/paymentIcons/amex.svg';\nimport discover from '../../../assets/paymentIcons/discover.svg';\nimport diners from '../../../assets/paymentIcons/diners.svg';\nimport unionpay from '../../../assets/paymentIcons/unionpay.svg';\nimport jcb from '../../../assets/paymentIcons/jcb.svg';\n\n/**\n * clearNumber\n *\n * @param {string} [value='']\n * @return {*}\n */\nfunction clearNumber(value = '') {\n return value.replace(/\\D+/g, '');\n}\n\n/**\n * formatCreditCardNumber - Format credit card number\n *\n * @export\n * @param {*} value\n * @return {*}\n */\nexport function formatCreditCardNumber(value) {\n if (!value) {\n return value;\n }\n\n const issuer = Payment.fns.cardType(value);\n const clearValue = clearNumber(value);\n let nextValue;\n\n switch (issuer) {\n case 'amex':\n nextValue = `${clearValue.slice(0, 4)} ${clearValue.slice(\n 4,\n 10\n )} ${clearValue.slice(10, 15)}`;\n break;\n case 'dinersclub':\n nextValue = `${clearValue.slice(0, 4)} ${clearValue.slice(\n 4,\n 10\n )} ${clearValue.slice(10, 14)}`;\n break;\n default:\n nextValue = `${clearValue.slice(0, 4)} ${clearValue.slice(\n 4,\n 8\n )} ${clearValue.slice(8, 12)} ${clearValue.slice(12, 19)}`;\n break;\n }\n\n return nextValue.trim();\n}\n\n/**\n * formatCVC - formats the CVC value\n *\n * @export\n * @param {*} value\n * @param {*} prevValue\n * @param {*} [allValues={}]\n * @return {*}\n */\nexport function formatCVC(value, prevValue, allValues: { number?: string } = {}) {\n const clearValue = clearNumber(value);\n let maxLength = 4;\n\n if (allValues?.number) {\n const issuer = Payment.fns.cardType(allValues?.number);\n maxLength = issuer === 'amex' ? 4 : 3;\n }\n\n return clearValue.slice(0, maxLength);\n}\n/**\n * formatExpirationDate - format expiration date\n * @export\n * @param {*} value\n * @return {*}\n */\nexport function formatExpirationDate(value) {\n const clearValue = clearNumber(value);\n\n // Exactly 6 digits is MM + a 4-digit year (\"07/2027\" from paste or browser\n // autofill): keep the year's last two digits, not its first two.\n if (clearValue.length === 6) {\n return `${clearValue.slice(0, 2)}/${clearValue.slice(4, 6)}`;\n }\n\n if (clearValue.length >= 3) {\n return `${clearValue.slice(0, 2)}/${clearValue.slice(2, 4)}`;\n }\n\n return clearValue;\n}\n\n/**\n * formatBankAccountNumber - Format bank account number\n * @export\n * @param {*} value\n * @return {*}\n */\nexport function formatBankAccountNumber(value) {\n const clearValue = clearNumber(value);\n return `${clearValue.slice(0, 4)} ${clearValue.slice(\n 4,\n 8\n )} ${clearValue.slice(8, 12)} ${clearValue.slice(12, 16)} ${clearValue.slice(\n 16,\n 20\n )}`;\n}\n\n/**\n * formatRoutingNumber - format routing number\n * @export\n * @param {*} value\n * @return {*}\n */\nexport function formatRoutingNumber(value) {\n const clearValue = clearNumber(value);\n return `${clearValue.slice(0, 3)} ${clearValue.slice(3, 9)}`;\n}\n\n// Map of payment brand -> icon URL. Render with <SvgIcon src={...} /> in components.\nexport const CreditCardBrandIconUrls: Record<string, string> = {\n visa,\n mastercard,\n amex,\n discover,\n jcb,\n dinersclub: diners,\n unionpay,\n};\n\nexport const getCreditCardMethodIconUrl = (creditCardNumber: string): string | null => {\n const issuer = Payment.fns.cardType(creditCardNumber);\n return CreditCardBrandIconUrls[issuer] ?? null;\n};\n\n// Back-compat alias (returns URL); prefer getCreditCardMethodIconUrl\nexport const getCreditCardMethodIcon = getCreditCardMethodIconUrl;\n"],"mappings":";;;;;;;;;;;;;;;AAeA,SAASQ,YAAYC,QAAQ,IAAI;AAC/B,QAAOA,MAAMC,QAAQ,QAAQ,GAAG;;;;;;;;;AAUlC,SAAgBC,uBAAuBF,OAAO;AAC5C,KAAI,CAACA,MACH,QAAOA;CAGT,MAAMG,SAASZ,QAAQa,IAAIC,SAASL,MAAM;CAC1C,MAAMM,aAAaP,YAAYC,MAAM;CACrC,IAAIO;AAEJ,SAAQJ,QAAR;EACE,KAAK;AACHI,eAAY,GAAGD,WAAWE,MAAM,GAAG,EAAE,CAAA,GAAIF,WAAWE,MAClD,GACA,GACD,CAAA,GAAIF,WAAWE,MAAM,IAAI,GAAG;AAC7B;EACF,KAAK;AACHD,eAAY,GAAGD,WAAWE,MAAM,GAAG,EAAE,CAAA,GAAIF,WAAWE,MAClD,GACA,GACD,CAAA,GAAIF,WAAWE,MAAM,IAAI,GAAG;AAC7B;EACF;AACED,eAAY,GAAGD,WAAWE,MAAM,GAAG,EAAE,CAAA,GAAIF,WAAWE,MAClD,GACA,EACD,CAAA,GAAIF,WAAWE,MAAM,GAAG,GAAG,CAAA,GAAIF,WAAWE,MAAM,IAAI,GAAG;AACxD;;AAGJ,QAAOD,UAAUE,MAAM;;;;;;;;;;;AAYzB,SAAgBC,UAAUV,OAAOW,WAAWC,YAAiC,EAAE,EAAE;CAC/E,MAAMN,aAAaP,YAAYC,MAAM;CACrC,IAAIc,YAAY;AAEhB,KAAIF,WAAWC,OAEbC,aADevB,QAAQa,IAAIC,SAASO,WAAWC,OAAO,KAC/B,SAAS,IAAI;AAGtC,QAAOP,WAAWE,MAAM,GAAGM,UAAU;;;;;;;;AAQvC,SAAgBC,qBAAqBf,OAAO;CAC1C,MAAMM,aAAaP,YAAYC,MAAM;AAIrC,KAAIM,WAAWU,WAAW,EACxB,QAAO,GAAGV,WAAWE,MAAM,GAAG,EAAE,CAAA,GAAIF,WAAWE,MAAM,GAAG,EAAE;AAG5D,KAAIF,WAAWU,UAAU,EACvB,QAAO,GAAGV,WAAWE,MAAM,GAAG,EAAE,CAAA,GAAIF,WAAWE,MAAM,GAAG,EAAE;AAG5D,QAAOF;;;;;;;;AAST,SAAgBW,wBAAwBjB,OAAO;CAC7C,MAAMM,aAAaP,YAAYC,MAAM;AACrC,QAAO,GAAGM,WAAWE,MAAM,GAAG,EAAE,CAAA,GAAIF,WAAWE,MAC7C,GACA,EACD,CAAA,GAAIF,WAAWE,MAAM,GAAG,GAAG,CAAA,GAAIF,WAAWE,MAAM,IAAI,GAAG,CAAA,GAAIF,WAAWE,MACrE,IACA,GACD;;;;;;;;AASH,SAAgBU,oBAAoBlB,OAAO;CACzC,MAAMM,aAAaP,YAAYC,MAAM;AACrC,QAAO,GAAGM,WAAWE,MAAM,GAAG,EAAE,CAAA,GAAIF,WAAWE,MAAM,GAAG,EAAE;;AAI5D,MAAaW,0BAAkD;CAC7D3B;CACAC;CACAC;CACAC;CACAG;CACAuB,YAAYzB;CACZC;CACD;AAED,MAAayB,8BAA8BC,qBAA4C;AAErF,QAAOJ,wBADQ5B,QAAQa,IAAIC,SAASkB,iBAAiB,KACX;;AAI5C,MAAaC,0BAA0BF"}
|
|
@@ -1,22 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
3
|
+
* Inline error surface for failures while preparing the hosted-payment iframe
|
|
4
|
+
* (bad config string, missing baseUrl, etc.). Rendered above the payment form
|
|
5
|
+
* so the user can see the problem without losing context.
|
|
5
6
|
*/
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
*
|
|
9
|
-
* This component is used to display an error message when there is an issue rendering the hosted payment form.
|
|
10
|
-
* It utilizes the `useTranslation` hook to support internationalization.
|
|
11
|
-
*
|
|
12
|
-
* @param {Object} props - The properties object.
|
|
13
|
-
* @param {string} props.error - The error string.
|
|
14
|
-
* @param {string} props.message - The error message to be displayed.
|
|
15
|
-
*
|
|
16
|
-
* @returns {JSX.Element} The rendered error message component.
|
|
17
|
-
*/
|
|
18
|
-
export declare const HostedPaymentError: ({ error, message }: {
|
|
19
|
-
error: string;
|
|
7
|
+
export declare const HostedPaymentError: ({ error, message, }: {
|
|
8
|
+
error?: string;
|
|
20
9
|
message: string;
|
|
21
10
|
}) => React.JSX.Element;
|
|
22
11
|
//# sourceMappingURL=HostedPaymentError.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HostedPaymentError.d.ts","sourceRoot":"","sources":["../../../../src/utilities/form/paymentForm/HostedPaymentError.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"HostedPaymentError.d.ts","sourceRoot":"","sources":["../../../../src/utilities/form/paymentForm/HostedPaymentError.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B;;;;GAIG;AACH,eAAO,MAAM,kBAAkB;;;uBAkB9B,CAAC"}
|
|
@@ -1,25 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { useTranslation } from 'react-i18next';
|
|
3
|
-
import {
|
|
4
|
-
import { LayoutUnit } from '../../../layout/LayoutUnit';
|
|
3
|
+
import { UdpMessageBar } from '../../../UI/fluent-web-components/UdpMessageBar';
|
|
5
4
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* Inline error surface for failures while preparing the hosted-payment iframe
|
|
6
|
+
* (bad config string, missing baseUrl, etc.). Rendered above the payment form
|
|
7
|
+
* so the user can see the problem without losing context.
|
|
8
8
|
*/
|
|
9
|
-
|
|
10
|
-
* HostedPaymentError component
|
|
11
|
-
*
|
|
12
|
-
* This component is used to display an error message when there is an issue rendering the hosted payment form.
|
|
13
|
-
* It utilizes the `useTranslation` hook to support internationalization.
|
|
14
|
-
*
|
|
15
|
-
* @param {Object} props - The properties object.
|
|
16
|
-
* @param {string} props.error - The error string.
|
|
17
|
-
* @param {string} props.message - The error message to be displayed.
|
|
18
|
-
*
|
|
19
|
-
* @returns {JSX.Element} The rendered error message component.
|
|
20
|
-
*/
|
|
21
|
-
export const HostedPaymentError = ({ error, message }) => {
|
|
9
|
+
export const HostedPaymentError = ({ error, message, }) => {
|
|
22
10
|
const { t } = useTranslation();
|
|
23
|
-
return (React.createElement(
|
|
11
|
+
return (React.createElement(UdpMessageBar, { intent: "error", layout: "multiline" }, t('There was an error rendering the hosted payment form. Please check your settings and try again'), ': ', error ? `${error}: ` : '', message));
|
|
24
12
|
};
|
|
25
13
|
//# sourceMappingURL=HostedPaymentError.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HostedPaymentError.js","sourceRoot":"","sources":["../../../../src/utilities/form/paymentForm/HostedPaymentError.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"HostedPaymentError.js","sourceRoot":"","sources":["../../../../src/utilities/form/paymentForm/HostedPaymentError.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAEhF;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,EACjC,KAAK,EACL,OAAO,GAIR,EAAE,EAAE,CAAC;IACJ,MAAM,EAAE,CAAC,EAAE,GAAG,cAAc,EAAE,CAAC;IAC/B,OAAO,CACL,oBAAC,aAAa,IAAC,MAAM,EAAC,OAAO,EAAC,MAAM,EAAC,WAAW,IAC7C,CAAC,CACA,gGAAgG,CACjG,EACA,IAAI,EACJ,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,EACzB,OAAO,CACM,CACjB,CAAC;AAAA,CACH,CAAC"}
|