@akinon/pz-saved-card 1.101.0-rc.74 → 1.101.0-rc.76

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/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @akinon/pz-saved-card
2
2
 
3
+ ## 1.101.0-rc.76
4
+
5
+ ### Minor Changes
6
+
7
+ - 6bfbdc2: ZERO-3653: optimize saved card option
8
+
9
+ ## 1.101.0-rc.75
10
+
11
+ ### Minor Changes
12
+
13
+ - 9442cf0: ZERO-3653: make the register_consumer_card option optional
14
+
3
15
  ## 1.101.0-rc.74
4
16
 
5
17
  ## 1.101.0-rc.73
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@akinon/pz-saved-card",
3
- "version": "1.101.0-rc.74",
3
+ "version": "1.101.0-rc.76",
4
4
  "license": "MIT",
5
5
  "main": "src/index.tsx",
6
6
  "peerDependencies": {
@@ -14,6 +14,7 @@ export interface CardFormSectionProps {
14
14
  expiryDate?: string;
15
15
  cvv?: string;
16
16
  cvvTooltip?: string;
17
+ saveCardForFuture?: string;
17
18
  };
18
19
  }
19
20
 
@@ -23,24 +24,14 @@ export const CardFormSection = ({
23
24
  errors,
24
25
  months,
25
26
  years,
26
- translations = {}
27
+ translations = {},
27
28
  }: CardFormSectionProps) => {
28
- const defaultTranslations = {
29
- cardHolder: 'Cardholder Name',
30
- cardNumber: 'Card Number',
31
- expiryDate: 'Expiration Date',
32
- cvv: 'CVV',
33
- cvvTooltip: 'CVV'
34
- };
35
-
36
- const mergedTranslations = { ...defaultTranslations, ...translations };
37
-
38
29
  return (
39
30
  <div className="w-full bg-white">
40
31
  <div className="px-4 my-2 w-full flex justify-between flex-wrap">
41
32
  <div className="my-2 w-full sm:px-4">
42
33
  <Input
43
- label={mergedTranslations.cardHolder}
34
+ label={translations.cardHolder}
44
35
  {...register('card_holder')}
45
36
  error={errors.card_holder}
46
37
  />
@@ -48,7 +39,7 @@ export const CardFormSection = ({
48
39
 
49
40
  <div className="my-2 w-full flex flex-col sm:px-4">
50
41
  <div className="text-xs text-gray-800 mb-2 w-full flex justify-between items-center">
51
- <span>{mergedTranslations.cardNumber}</span>
42
+ <span>{translations.cardNumber}</span>
52
43
  </div>
53
44
 
54
45
  <Input
@@ -67,7 +58,7 @@ export const CardFormSection = ({
67
58
  className="flex w-full text-xs text-start text-black-400 mb-1.5"
68
59
  htmlFor="card_month"
69
60
  >
70
- {mergedTranslations.expiryDate}
61
+ {translations.expiryDate}
71
62
  </label>
72
63
 
73
64
  <div className="flex w-full h-10 space-x-2.5">
@@ -96,7 +87,7 @@ export const CardFormSection = ({
96
87
  className="flex w-full text-xs text-start text-black-400 mb-1.5"
97
88
  htmlFor="card_cvv"
98
89
  >
99
- {mergedTranslations.cvv}
90
+ {translations.cvv}
100
91
  </label>
101
92
  <Input
102
93
  format="###"
@@ -108,7 +99,7 @@ export const CardFormSection = ({
108
99
  />
109
100
  <div className="group relative flex items-center justify-start text-gray-600 cursor-pointer mt-2 transition-all hover:text-secondary">
110
101
  <span className="text-xs underline">
111
- {mergedTranslations.cvvTooltip}
102
+ {translations.cvv}
112
103
  </span>
113
104
  <Icon name="cvc" size={16} className="leading-none ml-2" />
114
105
  <div className="hidden group-hover:block absolute right-0 bottom-5 w-[11rem] lg:w-[21rem] lg:left-auto lg:right-auto border-2">
@@ -118,7 +109,18 @@ export const CardFormSection = ({
118
109
  </div>
119
110
  </div>
120
111
 
121
- <div id="ucs-permission"></div>
112
+ <div className="my-2 w-full flex flex-col sm:px-4">
113
+ <label className="flex items-center space-x-2">
114
+ <input
115
+ type="checkbox"
116
+ {...register('register_consumer_card')}
117
+ className="h-4 w-4 text-primary focus:ring-primary border-gray-300 rounded"
118
+ />
119
+ <span className="text-sm text-gray-700">
120
+ {translations.saveCardForFuture}
121
+ </span>
122
+ </label>
123
+ </div>
122
124
  </div>
123
125
  </div>
124
126
  );
@@ -41,6 +41,7 @@ export type IyzicoSavedCardOptionTexts = {
41
41
  cardNumber?: string;
42
42
  expiryDate?: string;
43
43
  cvv?: string;
44
+ saveCardForFuture?: string;
44
45
  };
45
46
  placeholder?: {
46
47
  cardHolder?: string;
@@ -69,7 +69,8 @@ const defaultTranslations: IyzicoSavedCardOptionTexts = {
69
69
  cardHolder: 'Cardholder Name',
70
70
  cardNumber: 'Card Number',
71
71
  expiryDate: 'Expiration Date',
72
- cvv: 'CVV'
72
+ cvv: 'CVV',
73
+ saveCardForFuture: 'Save this card for future payments',
73
74
  },
74
75
  placeholder: {
75
76
  cardHolder: 'Name on Card',
@@ -113,7 +114,8 @@ const createFormSchema = (
113
114
  const baseSchema = {
114
115
  agreement: yup
115
116
  .boolean()
116
- .oneOf([true], errors?.required ?? defaultTranslations.errors.required)
117
+ .oneOf([true], errors?.required ?? defaultTranslations.errors.required),
118
+ register_consumer_card: yup.boolean().default(false)
117
119
  };
118
120
 
119
121
  if (type === 'new-card') {
@@ -208,23 +210,15 @@ const IyzicoSavedCardOption = ({
208
210
  if (type === 'existing-card') {
209
211
  const res = await completeSavedCard({
210
212
  agreement: data.agreement,
211
- register_consumer_card:
212
- window.universalCardStorage.registerConsumerCard,
213
213
  consumer_token: window.universalCardStorage.consumerToken,
214
- card_token: window.universalCardStorage.cardToken
214
+ card_token: window.universalCardStorage.cardToken,
215
+ register_consumer_card: true
215
216
  });
216
217
 
217
218
  if ('data' in res && res.data?.errors) {
218
219
  setFormError(res.data.errors);
219
220
  }
220
221
  } else {
221
- if (!window.universalCardStorage?.registerConsumerCard) {
222
- setFormError({
223
- register_consumer_card: mergedTexts.errors?.saveCardRequired
224
- });
225
- return;
226
- }
227
-
228
222
  const res = await completeSavedCard({
229
223
  agreement: data.agreement,
230
224
  card_holder: data.card_holder,
@@ -232,8 +226,7 @@ const IyzicoSavedCardOption = ({
232
226
  card_month: data.card_month,
233
227
  card_year: data.card_year,
234
228
  card_cvv: data.card_cvv,
235
- register_consumer_card:
236
- window.universalCardStorage.registerConsumerCard
229
+ register_consumer_card: data.register_consumer_card || false
237
230
  });
238
231
 
239
232
  if ('data' in res && res.data?.errors) {
@@ -301,7 +294,6 @@ const IyzicoSavedCardOption = ({
301
294
  useEffect(() => {
302
295
  if (window.iyziUcsInit?.scriptType === 'CONSUMER_WITH_CARD_EXIST') {
303
296
  if (
304
- !window.universalCardStorage?.consumerToken ||
305
297
  window.universalCardStorage?.cardToken
306
298
  ) {
307
299
  setType('existing-card');
@@ -312,20 +304,15 @@ const IyzicoSavedCardOption = ({
312
304
  setType('new-card');
313
305
  }
314
306
 
315
- const checkInterval = setInterval(() => {
316
- if (window.iyziUcsInit?.scriptType === 'CONSUMER_WITH_CARD_EXIST') {
317
- if (
318
- !window.universalCardStorage?.consumerToken ||
319
- window.universalCardStorage?.cardToken
320
- ) {
321
- setType('existing-card');
322
- } else {
323
- setType('new-card');
324
- }
307
+ const checkboxInterval = setInterval(() => {
308
+ if (window.universalCardStorage?.cardToken !== undefined) {
309
+ setType('existing-card');
310
+ } else {
311
+ setType('new-card');
325
312
  }
326
- }, 500);
313
+ }, 100);
327
314
 
328
- return () => clearInterval(checkInterval);
315
+ return () => clearInterval(checkboxInterval);
329
316
  }, [type]);
330
317
 
331
318
  return (