@alma/widgets 2.2.10 → 2.3.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/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ # [2.3.0](https://github.com/alma/widgets/compare/v2.2.10...v2.3.0) (2022-04-21)
2
+
3
+
4
+ ### Features
5
+
6
+ * **payment-plan:** add firstDisplayedPaymentPlan option ([#26](https://github.com/alma/widgets/issues/26)) ([f16fa4a](https://github.com/alma/widgets/commit/f16fa4a068a9e06aec261489065bc1282acee666))
7
+
1
8
  ## [2.2.10](https://github.com/alma/widgets/compare/v2.2.9...v2.2.10) (2022-04-12)
2
9
 
3
10
 
@@ -36,7 +36,7 @@
36
36
  --green-600: #1dcda3;
37
37
  }
38
38
  @font-face {
39
- font-family: 'Eina04';
39
+ font-family: 'Eina04', sans-serif;
40
40
  src: url('./assets/fonts/Eina04-Light.eot?#iefix') format('embedded-opentype'),
41
41
  url('./assets/fonts/Eina04-Light.woff') format('woff'),
42
42
  url('./assets/fonts/Eina04-Light.ttf') format('truetype'),
@@ -46,7 +46,7 @@
46
46
  font-display: swap;
47
47
  }
48
48
  @font-face {
49
- font-family: 'Eina04';
49
+ font-family: 'Eina04', sans-serif;
50
50
  src: url('./assets/fonts/Eina04-Regular.eot?#iefix') format('embedded-opentype'),
51
51
  url('./assets/fonts/Eina04-Regular.woff') format('woff'),
52
52
  url('./assets/fonts/Eina04-Regular.ttf') format('truetype'),
@@ -56,7 +56,7 @@
56
56
  font-display: swap;
57
57
  }
58
58
  @font-face {
59
- font-family: 'Eina04';
59
+ font-family: 'Eina04', sans-serif;
60
60
  src: url('./assets/fonts/Eina04-RegularItalic.eot?#iefix') format('embedded-opentype'),
61
61
  url('./assets/fonts/Eina04-RegularItalic.woff') format('woff'),
62
62
  url('./assets/fonts/Eina04-RegularItalic.ttf') format('truetype'),
@@ -66,7 +66,7 @@
66
66
  font-display: swap;
67
67
  }
68
68
  @font-face {
69
- font-family: 'Eina04';
69
+ font-family: 'Eina04', sans-serif;
70
70
  src: url('./assets/fonts/Eina04-SemiBold.eot?#iefix') format('embedded-opentype'),
71
71
  url('./assets/fonts/Eina04-SemiBold.woff') format('woff'),
72
72
  url('./assets/fonts/Eina04-SemiBold.ttf') format('truetype'),
@@ -76,7 +76,7 @@
76
76
  font-display: swap;
77
77
  }
78
78
  @font-face {
79
- font-family: 'Eina04';
79
+ font-family: 'Eina04', sans-serif;
80
80
  src: url('./assets/fonts/Eina04-SemiboldItalic.eot?#iefix') format('embedded-opentype'),
81
81
  url('./assets/fonts/Eina04-SemiboldItalic.woff') format('woff'),
82
82
  url('./assets/fonts/Eina04-SemiboldItalic.ttf') format('truetype'),
@@ -86,7 +86,7 @@
86
86
  font-display: swap;
87
87
  }
88
88
  @font-face {
89
- font-family: 'Eina04';
89
+ font-family: 'Eina04', sans-serif;
90
90
  src: url('./assets/fonts/Eina04-Bold.eot?#iefix') format('embedded-opentype'),
91
91
  url('./assets/fonts/Eina04-Bold.woff') format('woff'),
92
92
  url('./assets/fonts/Eina04-Bold.ttf') format('truetype'),
@@ -110,7 +110,7 @@
110
110
  }
111
111
 
112
112
  ._2p94X {
113
- font-family: Eina04;
113
+ font-family: 'Eina04', sans-serif;
114
114
  font-weight: bold;
115
115
  line-height: 35px;
116
116
  font-size: 64px;
@@ -286,7 +286,7 @@
286
286
  margin: 0 4px 8px;
287
287
  border: 1px solid var(--gray-300);
288
288
  border-radius: 8px;
289
- font-family: 'Eina04';
289
+ font-family: 'Eina04', sans-serif;
290
290
  font-size: 18px;
291
291
  line-height: 150%;
292
292
  font-weight: 600;
@@ -322,7 +322,6 @@
322
322
  margin-bottom: 40px;
323
323
  border-top: 1px solid var(--gray-300);
324
324
  border-bottom: 1px solid var(--gray-300);
325
-
326
325
  }
327
326
 
328
327
  ._1A7Qv {
@@ -333,13 +332,13 @@
333
332
  }
334
333
 
335
334
  ._14Ejo {
336
- font-family: 'Eina04';
335
+ font-family: 'Eina04', sans-serif;
337
336
  font-weight: 600;
338
337
  font-size: 18px;
339
338
  }
340
339
 
341
340
  ._1ZIgu {
342
- font-family: 'Eina04';
341
+ font-family: 'Eina04', sans-serif;
343
342
  font-weight: 600;
344
343
  font-size: 14px;
345
344
  margin-bottom: 24px;
@@ -408,7 +407,7 @@
408
407
  }
409
408
 
410
409
  ._3ERx- {
411
- font-family: 'Eina04';
410
+ font-family: 'Eina04', sans-serif;
412
411
  font-weight: 600;
413
412
  font-size: 18px;
414
413
  line-height: 150%;
@@ -424,7 +423,7 @@
424
423
  }
425
424
 
426
425
  @media (min-width: 800px) {
427
- ._3ERx- {
426
+ ._3ERx- {
428
427
  font-size: 24px;
429
428
  text-align: start;
430
429
  margin: 0 0 24px 0;
@@ -526,7 +525,7 @@
526
525
  }
527
526
  ._2Kqjn {
528
527
  font-size: 12px;
529
- font-family: 'Eina04';
528
+ font-family: 'Eina04', sans-serif;
530
529
  font-weight: 600;
531
530
  color: var(--blue-300);
532
531
  line-height: 20px;
@@ -544,6 +543,7 @@
544
543
 
545
544
  ._2Kqjn._3dG_J._3O1bg {
546
545
  border-bottom-color: var(--gray-600);
546
+ cursor: not-allowed;
547
547
  }
548
548
 
549
549
  ._25GrF {
@@ -581,3 +581,10 @@
581
581
  ._1ZDMS {
582
582
  align-items: center;
583
583
  }
584
+
585
+ ._UksZa {
586
+ cursor: pointer;
587
+ }
588
+ ._1lr-q {
589
+ cursor: not-allowed;
590
+ }
@@ -1529,7 +1529,7 @@ var messagesDE = {
1529
1529
  "payment-plan-strings.deferred": "{totalAmount} zu zahlen am {dueDate}",
1530
1530
  "payment-plan-strings.ineligible-greater-than-max": "Bis zu {maxAmount}",
1531
1531
  "payment-plan-strings.ineligible-lower-than-min": "Ab {minAmount}",
1532
- "payment-plan-strings.multiple-installments": "{firstInstallmentAmount} dann {numberOfRemainingInstallments} x {othersInstallmentAmount}",
1532
+ "payment-plan-strings.multiple-installments": "{numberOfRemainingInstallments, plural, one {{firstInstallmentAmount} dann {numberOfRemainingInstallments} x {othersInstallmentAmount}} other {{firstInstallmentAmount} dann {numberOfRemainingInstallments} x {othersInstallmentAmount}}}",
1533
1533
  "payment-plan-strings.multiple-installments-same-amount": "{installmentsCount} x {totalAmount}",
1534
1534
  "payment-plan-strings.no-fee": "(gebührenfrei)"
1535
1535
  };
@@ -1551,7 +1551,7 @@ var messagesEN = {
1551
1551
  "payment-plan-strings.deferred": "{totalAmount} to be paid on {dueDate}",
1552
1552
  "payment-plan-strings.ineligible-greater-than-max": "Until {maxAmount}",
1553
1553
  "payment-plan-strings.ineligible-lower-than-min": "From {minAmount}",
1554
- "payment-plan-strings.multiple-installments": "{firstInstallmentAmount} then {numberOfRemainingInstallments} x {othersInstallmentAmount}",
1554
+ "payment-plan-strings.multiple-installments": "{numberOfRemainingInstallments, plural, one {{firstInstallmentAmount} then {numberOfRemainingInstallments} x {othersInstallmentAmount}} other {{firstInstallmentAmount} then {numberOfRemainingInstallments} x {othersInstallmentAmount}}}",
1555
1555
  "payment-plan-strings.multiple-installments-same-amount": "{installmentsCount} x {totalAmount}",
1556
1556
  "payment-plan-strings.no-fee": "(free of charge)"
1557
1557
  };
@@ -1573,7 +1573,7 @@ var messagesES = {
1573
1573
  "payment-plan-strings.deferred": "{totalAmount} a pagar el {dueDate}",
1574
1574
  "payment-plan-strings.ineligible-greater-than-max": "Hasta {maxAmount}",
1575
1575
  "payment-plan-strings.ineligible-lower-than-min": "Desde {minAmount}",
1576
- "payment-plan-strings.multiple-installments": "{firstInstallmentAmount} hoy, después {numberOfRemainingInstallments, plural, one {# mensualidad} other {# mensualidades}} de {othersInstallmentAmount}",
1576
+ "payment-plan-strings.multiple-installments": "{numberOfRemainingInstallments, plural, one {{firstInstallmentAmount} hoy, después {numberOfRemainingInstallments} mensualidad de {othersInstallmentAmount}} other {{firstInstallmentAmount} hoy, después {numberOfRemainingInstallments} de {othersInstallmentAmount} mensualidades }}",
1577
1577
  "payment-plan-strings.multiple-installments-same-amount": "{installmentsCount} plazos de {totalAmount}",
1578
1578
  "payment-plan-strings.no-fee": "(sin intereses)"
1579
1579
  };
@@ -1595,7 +1595,7 @@ var messagesFR = {
1595
1595
  "payment-plan-strings.deferred": "{totalAmount} à payer le {dueDate}",
1596
1596
  "payment-plan-strings.ineligible-greater-than-max": "Jusqu'à {maxAmount}",
1597
1597
  "payment-plan-strings.ineligible-lower-than-min": "À partir de {minAmount}",
1598
- "payment-plan-strings.multiple-installments": "{firstInstallmentAmount} puis {numberOfRemainingInstallments} x {othersInstallmentAmount}",
1598
+ "payment-plan-strings.multiple-installments": "{numberOfRemainingInstallments, plural, one {{firstInstallmentAmount} puis {numberOfRemainingInstallments} x {othersInstallmentAmount}} other {{firstInstallmentAmount} puis {numberOfRemainingInstallments} x {othersInstallmentAmount}}}",
1599
1599
  "payment-plan-strings.multiple-installments-same-amount": "{installmentsCount} x {totalAmount}",
1600
1600
  "payment-plan-strings.no-fee": "(sans frais)"
1601
1601
  };
@@ -1617,7 +1617,7 @@ var messagesIT = {
1617
1617
  "payment-plan-strings.deferred": "{totalAmount} da pagare il {dueDate}",
1618
1618
  "payment-plan-strings.ineligible-greater-than-max": "Disponibile fino a {maxAmount}",
1619
1619
  "payment-plan-strings.ineligible-lower-than-min": "Pagamento rateale disponibile a partire da {minAmount}",
1620
- "payment-plan-strings.multiple-installments": "Oggi paghi {firstInstallmentAmount} poi {numberOfRemainingInstallments} rate mensili di {othersInstallmentAmount}",
1620
+ "payment-plan-strings.multiple-installments": "{numberOfRemainingInstallments, plural, one {Oggi paghi {firstInstallmentAmount} poi {numberOfRemainingInstallments} rata mensile di {othersInstallmentAmount}} other {Oggi paghi {firstInstallmentAmount} poi {numberOfRemainingInstallments} rate mensili di {othersInstallmentAmount}}}",
1621
1621
  "payment-plan-strings.multiple-installments-same-amount": "In {installmentsCount} rate mensili di {totalAmount}",
1622
1622
  "payment-plan-strings.no-fee": "(senza interessi)"
1623
1623
  };
@@ -1639,7 +1639,7 @@ var messagesNL = {
1639
1639
  "payment-plan-strings.deferred": "{totalAmount} te betalen op {dueDate}",
1640
1640
  "payment-plan-strings.ineligible-greater-than-max": "Tot {maxAmount}",
1641
1641
  "payment-plan-strings.ineligible-lower-than-min": "Van {minAmount}",
1642
- "payment-plan-strings.multiple-installments": "{firstInstallmentAmount} dan {numberOfRemainingInstallments} x {othersInstallmentAmount}",
1642
+ "payment-plan-strings.multiple-installments": "{numberOfRemainingInstallments, plural, one {{firstInstallmentAmount} dan {numberOfRemainingInstallments} x {othersInstallmentAmount}} other {{firstInstallmentAmount} dan {numberOfRemainingInstallments} x {othersInstallmentAmount}}}",
1643
1643
  "payment-plan-strings.multiple-installments-same-amount": "{installmentsCount} x {totalAmount}",
1644
1644
  "payment-plan-strings.no-fee": "(gratis)"
1645
1645
  };
@@ -1787,8 +1787,8 @@ var useFetchEligibility = function useFetchEligibility(purchaseAmount, _ref, pla
1787
1787
  }, {
1788
1788
  Authorization: "Alma-Merchant-Auth " + merchantId
1789
1789
  }).then(function (res) {
1790
- setStatus(apiStatus.SUCCESS);
1791
1790
  setEligibility(res);
1791
+ setStatus(apiStatus.SUCCESS);
1792
1792
  })["catch"](function () {
1793
1793
  setStatus(apiStatus.FAILED);
1794
1794
  });
@@ -1970,7 +1970,7 @@ var paymentPlanInfoText = function paymentPlanInfoText(payment) {
1970
1970
 
1971
1971
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(reactIntl.FormattedMessage, {
1972
1972
  id: "payment-plan-strings.multiple-installments",
1973
- defaultMessage: "{firstInstallmentAmount} puis {numberOfRemainingInstallments} x {othersInstallmentAmount}",
1973
+ defaultMessage: "{numberOfRemainingInstallments, plural, one {{firstInstallmentAmount} puis {numberOfRemainingInstallments} x {othersInstallmentAmount}} other {{firstInstallmentAmount} puis {numberOfRemainingInstallments} x {othersInstallmentAmount}}}",
1974
1974
  values: {
1975
1975
  firstInstallmentAmount: /*#__PURE__*/React__default.createElement(reactIntl.FormattedNumber, {
1976
1976
  value: priceFromCents(payment.payment_plan[0].total_amount),
@@ -2336,16 +2336,54 @@ var useButtonAnimation = function useButtonAnimation(iterateValues, transitionDe
2336
2336
  };
2337
2337
  };
2338
2338
 
2339
- var s$b = {"widgetButton":"_TSkFv","logo":"_LJ4nZ","primaryContainer":"_bMClc","paymentPlans":"_17c_S","plan":"_2Kqjn","active":"_3dG_J","notEligible":"_3O1bg","info":"_25GrF","loader":"_30j1O","error":"_R0YlN","errorText":"_2kGhu","errorButton":"_73d_Y","pending":"_1ZDMS"};
2339
+ /**
2340
+ * It returns the **index** of the **first eligible plan** that matches the default installments count
2341
+ *
2342
+ * @param {number | number[]} suggestedPaymentPlan
2343
+ * @param {EligibilityPlan[]} eligibilityPlans
2344
+ * @returns number (index of the first eligible plan that matches the default installments count)
2345
+ */
2346
+ var getIndexOfActivePlan = function getIndexOfActivePlan(_ref) {
2347
+ var suggestedPaymentPlan = _ref.suggestedPaymentPlan,
2348
+ eligibilityPlans = _ref.eligibilityPlans;
2349
+ var suggestedPaymentPlanArray = Array.isArray(suggestedPaymentPlan) ? suggestedPaymentPlan : [suggestedPaymentPlan];
2350
+
2351
+ var _loop = function _loop(index) {
2352
+ var installmentsCount = suggestedPaymentPlanArray[index];
2353
+ var planFound = eligibilityPlans.findIndex(function (plan) {
2354
+ return plan.installments_count === installmentsCount && plan.eligible;
2355
+ });
2356
+
2357
+ if (planFound !== -1) {
2358
+ return {
2359
+ v: planFound
2360
+ };
2361
+ }
2362
+ };
2363
+
2364
+ for (var index in suggestedPaymentPlanArray) {
2365
+ var _ret = _loop(index);
2366
+
2367
+ if (typeof _ret === "object") return _ret.v;
2368
+ }
2369
+
2370
+ return 0;
2371
+ };
2372
+
2373
+ var s$b = {"widgetButton":"_TSkFv","logo":"_LJ4nZ","primaryContainer":"_bMClc","paymentPlans":"_17c_S","plan":"_2Kqjn","active":"_3dG_J","notEligible":"_3O1bg","info":"_25GrF","loader":"_30j1O","error":"_R0YlN","errorText":"_2kGhu","errorButton":"_73d_Y","pending":"_1ZDMS","clickable":"_UksZa","unClickable":"_1lr-q"};
2374
+
2375
+ var VERY_LONG_TIME_IN_MS = 1000 * 3600 * 24 * 365;
2376
+ var DEFAULT_TRANSITION_TIME = 5500;
2340
2377
 
2341
2378
  var PaymentPlanWidget = function PaymentPlanWidget(_ref) {
2342
- var _cx2;
2379
+ var _cx, _cx3;
2343
2380
 
2344
2381
  var purchaseAmount = _ref.purchaseAmount,
2345
2382
  apiData = _ref.apiData,
2346
2383
  configPlans = _ref.configPlans,
2347
2384
  transitionDelay = _ref.transitionDelay,
2348
- hideIfNotEligible = _ref.hideIfNotEligible;
2385
+ hideIfNotEligible = _ref.hideIfNotEligible,
2386
+ suggestedPaymentPlan = _ref.suggestedPaymentPlan;
2349
2387
 
2350
2388
  var _useFetchEligibility = useFetchEligibility(purchaseAmount, apiData, configPlans),
2351
2389
  eligibilityPlans = _useFetchEligibility[0],
@@ -2354,15 +2392,18 @@ var PaymentPlanWidget = function PaymentPlanWidget(_ref) {
2354
2392
  var eligiblePlans = eligibilityPlans.filter(function (plan) {
2355
2393
  return plan.eligible;
2356
2394
  });
2395
+ var activePlanIndex = getIndexOfActivePlan({
2396
+ eligibilityPlans: eligibilityPlans,
2397
+ suggestedPaymentPlan: suggestedPaymentPlan != null ? suggestedPaymentPlan : 0
2398
+ });
2399
+ var isSuggestedPaymentPlanSpecified = suggestedPaymentPlan !== undefined; // 👈 The merchant decided to focus a tab and remove animated transition.
2400
+
2401
+ var isTransitionSpecified = transitionDelay !== undefined; // 👈 The merchant has specified a transition time
2357
2402
 
2358
2403
  var _useState = React.useState(false),
2359
2404
  isOpen = _useState[0],
2360
2405
  setIsOpen = _useState[1];
2361
2406
 
2362
- var _useState2 = React.useState(0),
2363
- initialPlanIndex = _useState2[0],
2364
- setInitialPlanIndex = _useState2[1];
2365
-
2366
2407
  var openModal = function openModal() {
2367
2408
  return setIsOpen(true);
2368
2409
  };
@@ -2374,19 +2415,51 @@ var PaymentPlanWidget = function PaymentPlanWidget(_ref) {
2374
2415
  var eligiblePlanKeys = eligibilityPlans.reduce(function (acc, plan, index) {
2375
2416
  return plan.eligible ? [].concat(acc, [index]) : acc;
2376
2417
  }, []);
2418
+ /**
2419
+ * If merchand specify a suggestedPaymentPlan and no transition, we set a very long transition delay.
2420
+ * Otherwise, we set the transition delay specified by the merchant.
2421
+ * If none of those properties are specified, we set a default transition delay.
2422
+ * @returns
2423
+ */
2424
+
2425
+ var realTransitionTime = function realTransitionTime() {
2426
+ if (isTransitionSpecified) {
2427
+ return transitionDelay != null ? transitionDelay : DEFAULT_TRANSITION_TIME;
2428
+ }
2377
2429
 
2378
- var _useButtonAnimation = useButtonAnimation(eligiblePlanKeys, transitionDelay ? transitionDelay : 5500),
2430
+ if (isSuggestedPaymentPlanSpecified) {
2431
+ return VERY_LONG_TIME_IN_MS;
2432
+ }
2433
+
2434
+ return DEFAULT_TRANSITION_TIME;
2435
+ };
2436
+
2437
+ var _useButtonAnimation = useButtonAnimation(eligiblePlanKeys, realTransitionTime()),
2379
2438
  current = _useButtonAnimation.current,
2380
2439
  onHover = _useButtonAnimation.onHover,
2381
- onLeave = _useButtonAnimation.onLeave; // This hook is needed to update the initial plan index when useButtonAnimation
2382
- // updates the `current` value (i.e. without any hover / click callback).
2383
-
2440
+ onLeave = _useButtonAnimation.onLeave;
2384
2441
 
2385
2442
  React.useEffect(function () {
2386
- if (current !== initialPlanIndex) {
2387
- setInitialPlanIndex(current);
2443
+ // When API has given a response AND the marchand set an active plan by default.
2444
+ if (status === apiStatus.SUCCESS && isSuggestedPaymentPlanSpecified) {
2445
+ onHover(activePlanIndex); // We select the first active plan possible
2446
+
2447
+ onLeave(); // We need to call onLeave to reset the animation
2388
2448
  }
2389
- }, [current, initialPlanIndex]);
2449
+ }, [status]);
2450
+ /**
2451
+ * It takes a plan index and returns the index of that plan within the eligible plans
2452
+ *
2453
+ * @param {number} planIndex - The index of the plan that the user has selected.
2454
+ * @returns The index of the planKey in the eligiblePlanKeys array.
2455
+ */
2456
+
2457
+ var getIndexWithinEligiblePlans = function getIndexWithinEligiblePlans(planIndex) {
2458
+ var index = eligiblePlanKeys.findIndex(function (planKey) {
2459
+ return planKey === planIndex;
2460
+ });
2461
+ return index === -1 ? 0 : index;
2462
+ };
2390
2463
 
2391
2464
  if (status === apiStatus.PENDING) {
2392
2465
  return /*#__PURE__*/React__default.createElement("div", {
@@ -2394,11 +2467,7 @@ var PaymentPlanWidget = function PaymentPlanWidget(_ref) {
2394
2467
  }, /*#__PURE__*/React__default.createElement(Loader, null));
2395
2468
  }
2396
2469
 
2397
- if (hideIfNotEligible && eligiblePlans.length == 0 || eligibilityPlans.length === 0) {
2398
- return null;
2399
- }
2400
-
2401
- if (status === apiStatus.FAILED) {
2470
+ if (hideIfNotEligible && eligiblePlans.length === 0 || eligibilityPlans.length === 0 || status === apiStatus.FAILED) {
2402
2471
  return null;
2403
2472
  }
2404
2473
 
@@ -2410,19 +2479,9 @@ var PaymentPlanWidget = function PaymentPlanWidget(_ref) {
2410
2479
  }
2411
2480
  };
2412
2481
 
2413
- var handleHoverAndClick = function handleHoverAndClick(key, newInitialPlanIndex) {
2414
- // This is needed to update the initial plan index and button style when hovering (desktop) or clicking (mobile).
2415
- // The actual modal opening is triggered by a click on the highest parent div in `handleOpenModal`.
2416
- onHover(key);
2417
- setInitialPlanIndex(newInitialPlanIndex);
2418
- };
2419
-
2420
2482
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("div", {
2421
2483
  onClick: handleOpenModal,
2422
- className: s$b.widgetButton,
2423
- style: {
2424
- cursor: eligiblePlans.length > 0 ? 'pointer' : 'initial'
2425
- },
2484
+ className: cx(s$b.widgetButton, (_cx = {}, _cx[s$b.clickable] = eligiblePlans.length > 0, _cx[s$b.unClickable] = eligiblePlans.length === 0, _cx)),
2426
2485
  "data-testid": "widget-button"
2427
2486
  }, /*#__PURE__*/React__default.createElement("div", {
2428
2487
  className: s$b.primaryContainer
@@ -2431,28 +2490,20 @@ var PaymentPlanWidget = function PaymentPlanWidget(_ref) {
2431
2490
  }), /*#__PURE__*/React__default.createElement("div", {
2432
2491
  className: s$b.paymentPlans
2433
2492
  }, eligibilityPlans.map(function (eligibilityPlan, key) {
2434
- var _cx;
2493
+ var _cx2;
2435
2494
 
2436
- var newInitialPlanIndex = eligiblePlanKeys.includes(key) ? eligiblePlanKeys.findIndex(function (planKey) {
2437
- return planKey === key;
2438
- }) : 0;
2439
2495
  return /*#__PURE__*/React__default.createElement("div", {
2496
+ key: key,
2440
2497
  onMouseEnter: function onMouseEnter() {
2441
- handleHoverAndClick(key, newInitialPlanIndex);
2442
- },
2443
- onMouseOut: function onMouseOut() {
2444
- onLeave();
2498
+ return onHover(key);
2445
2499
  },
2446
- onClick: function onClick() {
2447
- handleHoverAndClick(key, newInitialPlanIndex);
2448
- },
2449
- key: key,
2450
- className: cx(s$b.plan, (_cx = {}, _cx[s$b.active] = current === key, _cx[s$b.notEligible] = !eligibilityPlan.eligible, _cx))
2500
+ onMouseOut: onLeave,
2501
+ className: cx(s$b.plan, (_cx2 = {}, _cx2[s$b.active] = current === key, _cx2[s$b.notEligible] = !eligibilityPlan.eligible, _cx2))
2451
2502
  }, paymentPlanShorthandName(eligibilityPlan));
2452
2503
  }))), /*#__PURE__*/React__default.createElement("div", {
2453
- className: cx(s$b.info, (_cx2 = {}, _cx2[s$b.notEligible] = eligibilityPlans[current] && !eligibilityPlans[current].eligible, _cx2))
2504
+ className: cx(s$b.info, (_cx3 = {}, _cx3[s$b.notEligible] = eligibilityPlans[current] && !eligibilityPlans[current].eligible, _cx3))
2454
2505
  }, eligibilityPlans.length !== 0 && paymentPlanInfoText(eligibilityPlans[current]))), isOpen && /*#__PURE__*/React__default.createElement(EligibilityModal, {
2455
- initialPlanIndex: initialPlanIndex,
2506
+ initialPlanIndex: getIndexWithinEligiblePlans(current),
2456
2507
  onClose: closeModal,
2457
2508
  eligibilityPlans: eligiblePlans,
2458
2509
  status: status
@@ -2481,6 +2532,7 @@ var WidgetsController = /*#__PURE__*/function () {
2481
2532
  plans = options.plans,
2482
2533
  transitionDelay = options.transitionDelay,
2483
2534
  hideIfNotEligible = options.hideIfNotEligible,
2535
+ suggestedPaymentPlan = options.suggestedPaymentPlan,
2484
2536
  _options$locale = options.locale,
2485
2537
  locale = _options$locale === void 0 ? Locale.en : _options$locale;
2486
2538
 
@@ -2492,7 +2544,8 @@ var WidgetsController = /*#__PURE__*/function () {
2492
2544
  apiData: this.apiData,
2493
2545
  configPlans: plans,
2494
2546
  transitionDelay: transitionDelay,
2495
- hideIfNotEligible: hideIfNotEligible
2547
+ hideIfNotEligible: hideIfNotEligible,
2548
+ suggestedPaymentPlan: suggestedPaymentPlan
2496
2549
  })), document.querySelector(container));
2497
2550
  }
2498
2551
  }