@economist/web-apple-pay 1.7.5 → 1.7.7
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/index.js +137 -85
- package/dist/src/apple-pay-button.js +137 -85
- package/dist/src/apple-pay-button.stories.js +137 -85
- package/dist/src/apple-pay-logo.js +1 -1
- package/dist/src/apple-pay-modal.js +63 -33
- package/dist/src/apple-pay-modal.stories.js +137 -85
- package/dist/src/clients/payment-checkout/apple-session.js +22 -3
- package/dist/src/clients/payment-checkout/messages.d.ts +13 -14
- package/dist/src/clients/payment-checkout/messages.js +0 -4
- package/dist/src/clients/payment-checkout/payment-handler.d.ts +0 -8
- package/dist/src/clients/payment-checkout/payment-handler.js +45 -27
- package/dist/src/clients/payment-checkout/types.d.ts +1 -1
- package/dist/src/index.js +137 -85
- package/dist/src/utils/expressCheckoutRedirect.d.ts +29 -7
- package/dist/src/utils/expressCheckoutRedirect.js +23 -7
- package/package.json +1 -1
|
@@ -71,7 +71,7 @@ function ensureApplePayLogoSymbol() {
|
|
|
71
71
|
return;
|
|
72
72
|
}
|
|
73
73
|
const tmp = document.createElement("div");
|
|
74
|
-
tmp.innerHTML = `<svg aria-hidden="true" style="display:none" id="${LOGO_DEFS_ID}"><defs><symbol id="apple-pay-logo" viewBox="0 0 51 22"><path d="${LOGO_PATH}" fill="
|
|
74
|
+
tmp.innerHTML = `<svg aria-hidden="true" style="display:none" id="${LOGO_DEFS_ID}"><defs><symbol id="apple-pay-logo" viewBox="0 0 51 22"><path d="${LOGO_PATH}" fill="currentColor"/></symbol></defs></svg>`;
|
|
75
75
|
document.body.prepend(tmp.firstElementChild);
|
|
76
76
|
}
|
|
77
77
|
|
|
@@ -109,16 +109,32 @@ var apple_pay_modal_template_default = `<style>
|
|
|
109
109
|
position: absolute;
|
|
110
110
|
top: 1.5rem;
|
|
111
111
|
right: 1.3125rem;
|
|
112
|
-
background:
|
|
112
|
+
background: transparent;
|
|
113
113
|
border: none;
|
|
114
114
|
cursor: pointer;
|
|
115
115
|
padding: 0;
|
|
116
|
+
width: 1.5rem;
|
|
117
|
+
height: 1.5rem;
|
|
116
118
|
display: flex;
|
|
117
119
|
align-items: center;
|
|
118
120
|
justify-content: center;
|
|
121
|
+
color: var(--mb-colour-greyscale-london-20, #1a1a1a);
|
|
122
|
+
transition:
|
|
123
|
+
background-color ease-in-out 0.2s,
|
|
124
|
+
color ease-in-out 0.2s;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.apm__close:hover {
|
|
128
|
+
color: var(--mb-colour-base-chicago-30, #333333);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.apm__close:active {
|
|
132
|
+
background-color: var(--mb-colour-base-chicago-90, #e6e6e6);
|
|
133
|
+
color: var(--mb-colour-base-chicago-30, #333333);
|
|
119
134
|
}
|
|
120
135
|
|
|
121
136
|
.apm__close:focus {
|
|
137
|
+
background-color: var(--mb-colour-base-chicago-90, #e6e6e6);
|
|
122
138
|
outline: solid 0.125rem var(--focus-border-color, #121212);
|
|
123
139
|
border-radius: 0.25rem;
|
|
124
140
|
}
|
|
@@ -301,10 +317,6 @@ var apple_pay_modal_template_default = `<style>
|
|
|
301
317
|
cursor: pointer;
|
|
302
318
|
color: #fff;
|
|
303
319
|
text-align: center;
|
|
304
|
-
font-family: var(
|
|
305
|
-
--mb-typeface-sans,
|
|
306
|
-
var(--wall-type-system-sans, system-ui, sans-serif)
|
|
307
|
-
);
|
|
308
320
|
font-size: 1.25rem;
|
|
309
321
|
font-style: normal;
|
|
310
322
|
font-weight: 500;
|
|
@@ -320,28 +332,41 @@ var apple_pay_modal_template_default = `<style>
|
|
|
320
332
|
cursor: not-allowed;
|
|
321
333
|
}
|
|
322
334
|
|
|
323
|
-
.apm__cta
|
|
324
|
-
|
|
335
|
+
.apm__cta-content {
|
|
336
|
+
display: flex;
|
|
337
|
+
align-items: center;
|
|
338
|
+
gap: 0.375rem;
|
|
325
339
|
}
|
|
326
340
|
|
|
327
|
-
.apm__cta
|
|
341
|
+
.apm__cta-label {
|
|
342
|
+
display: inline-flex;
|
|
343
|
+
align-items: center;
|
|
344
|
+
gap: 0.375rem;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
.apm__cta-loading {
|
|
348
|
+
display: none;
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
.apm__cta[aria-busy="true"]::before {
|
|
328
352
|
content: '';
|
|
329
353
|
position: absolute;
|
|
330
|
-
left: 50%;
|
|
331
354
|
top: 50%;
|
|
332
|
-
|
|
333
|
-
margin-top: -0.625rem;
|
|
355
|
+
left: 50%;
|
|
334
356
|
width: 1.25rem;
|
|
335
357
|
height: 1.25rem;
|
|
336
|
-
border: 2px solid rgba(255, 255, 255, 0.
|
|
358
|
+
border: 2px solid rgba(255, 255, 255, 0.25);
|
|
337
359
|
border-top-color: #fff;
|
|
338
360
|
border-radius: 50%;
|
|
339
361
|
animation: apm-cta-spinner 0.8s linear infinite;
|
|
340
362
|
}
|
|
341
363
|
|
|
342
364
|
@keyframes apm-cta-spinner {
|
|
365
|
+
from {
|
|
366
|
+
transform: translate(-50%, -50%) rotate(0deg);
|
|
367
|
+
}
|
|
343
368
|
to {
|
|
344
|
-
transform: rotate(360deg);
|
|
369
|
+
transform: translate(-50%, -50%) rotate(360deg);
|
|
345
370
|
}
|
|
346
371
|
}
|
|
347
372
|
|
|
@@ -408,7 +433,7 @@ var apple_pay_modal_template_default = `<style>
|
|
|
408
433
|
fill-rule="evenodd"
|
|
409
434
|
clip-rule="evenodd"
|
|
410
435
|
d="M18.75 6.60964L17.3904 5.25L12 10.6404L6.60964 5.25L5.25 6.60964L10.6404 12L5.25 17.3904L6.60964 18.75L12 13.3596L17.3904 18.75L18.75 17.3904L13.3596 12L18.75 6.60964Z"
|
|
411
|
-
fill="
|
|
436
|
+
fill="currentColor"
|
|
412
437
|
/>
|
|
413
438
|
</g>
|
|
414
439
|
<defs>
|
|
@@ -518,11 +543,14 @@ var apple_pay_modal_template_default = `<style>
|
|
|
518
543
|
</div>
|
|
519
544
|
<button class="apm__cta" id="apple-pay-modal-cta" aria-label="Continue with Apple Pay">
|
|
520
545
|
<span class="apm__cta-content">
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
<
|
|
524
|
-
|
|
546
|
+
<span class="apm__cta-label">
|
|
547
|
+
Continue with
|
|
548
|
+
<svg width="51" height="22" aria-hidden="true" role="img">
|
|
549
|
+
<use href="#apple-pay-logo" />
|
|
550
|
+
</svg>
|
|
551
|
+
</span>
|
|
525
552
|
</span>
|
|
553
|
+
<span class="apm__cta-loading" aria-hidden="true">Loading...</span>
|
|
526
554
|
</button>
|
|
527
555
|
</div>
|
|
528
556
|
</div>
|
|
@@ -663,6 +691,8 @@ function renewalPeriodText(unit, duration) {
|
|
|
663
691
|
return "";
|
|
664
692
|
}
|
|
665
693
|
}
|
|
694
|
+
var LI_SEPARATOR = "\0LI_SEP\0";
|
|
695
|
+
var P_SEPARATOR = "\0P_SEP\0";
|
|
666
696
|
function buildTermsContext(offer, country) {
|
|
667
697
|
const isUS = country === "US";
|
|
668
698
|
const isCA = country === "CA";
|
|
@@ -699,19 +729,19 @@ function freeTrialTerms(offer, ctx) {
|
|
|
699
729
|
const trialDuration = offer.subscription_options?.trial_period?.duration ?? 1;
|
|
700
730
|
const trialDateStr = `on ${getRenewalDateText(trialUnit, trialDuration)}${ctx.verificationText}`;
|
|
701
731
|
if (ctx.isUS) {
|
|
702
|
-
return `Your subscription renews at ${ctx.renewalPriceText}${ctx.taxSuffix} ${trialDateStr} when your free trial ends, until cancelled{
|
|
732
|
+
return `Your subscription renews at ${ctx.renewalPriceText}${ctx.taxSuffix} ${trialDateStr} when your free trial ends, until cancelled${LI_SEPARATOR}You\u2019ll be charged the rate in effect at each renewal until cancelled. ${ctx.usCancelNote}${ctx.taxFootnote}`;
|
|
703
733
|
}
|
|
704
|
-
return `Your subscription renews at ${ctx.renewalPriceText}${ctx.taxSuffix} ${trialDateStr} when your free trial ends, until cancelled{
|
|
734
|
+
return `Your subscription renews at ${ctx.renewalPriceText}${ctx.taxSuffix} ${trialDateStr} when your free trial ends, until cancelled${LI_SEPARATOR}You\u2019ll be charged the rate in effect at each renewal. ${ctx.cancelAnytime}${ctx.taxFootnote}`;
|
|
705
735
|
}
|
|
706
736
|
function nytTerms(ctx) {
|
|
707
737
|
const nytAccessText = "Your complimentary access to The New York Times is for one year only and does not auto-renew. We will send your instructions on how to redeem access to The New York Times by email.";
|
|
708
738
|
if (ctx.isUS) {
|
|
709
|
-
return `Your subscription to <em>The Economist</em> auto-renews ${ctx.periodText} until cancelled{
|
|
739
|
+
return `Your subscription to <em>The Economist</em> auto-renews ${ctx.periodText} until cancelled${LI_SEPARATOR}Your subscription renews at ${ctx.renewalPriceText}${ctx.taxSuffix} ${ctx.renewalDateStr}${LI_SEPARATOR}You\u2019ll be charged the rate in effect at each renewal until cancelled. ${ctx.usCancelNote}${ctx.taxFootnote}${P_SEPARATOR}${nytAccessText}`;
|
|
710
740
|
}
|
|
711
741
|
if (ctx.isCA) {
|
|
712
|
-
return `Your subscription to <em>The Economist</em> auto-renews at ${ctx.renewalPriceText}${ctx.taxSuffix} ${ctx.periodText} ${ctx.renewalDateStr} until cancelled
|
|
742
|
+
return `Your subscription to <em>The Economist</em> auto-renews at ${ctx.renewalPriceText}${ctx.taxSuffix} ${ctx.periodText} ${ctx.renewalDateStr} until cancelled.${LI_SEPARATOR}You\u2019ll be charged the rate in effect at each renewal. ${ctx.cancelAnytime}${ctx.taxFootnote}${P_SEPARATOR}${nytAccessText}`;
|
|
713
743
|
}
|
|
714
|
-
return `Your subscription to <em>The Economist</em> auto-renews at ${ctx.renewalPriceText} ${ctx.periodText} ${ctx.renewalDateStr} until cancelled{
|
|
744
|
+
return `Your subscription to <em>The Economist</em> auto-renews at ${ctx.renewalPriceText} ${ctx.periodText} ${ctx.renewalDateStr} until cancelled${LI_SEPARATOR}You\u2019ll be charged the rate in effect at each renewal. ${ctx.cancelAnytime} ${nytAccessText}`;
|
|
715
745
|
}
|
|
716
746
|
function minTermContractTerms(offer, ctx) {
|
|
717
747
|
const duePrice = formatPrice(offer.price.purchase, offer.price.currency_code);
|
|
@@ -721,28 +751,28 @@ function minTermContractTerms(offer, ctx) {
|
|
|
721
751
|
const contractLength = mtDuration && mtUnit ? `${mtDuration} ${mtUnit}` : "";
|
|
722
752
|
const initialContractText = contractLength ? `your initial ${contractLength} contract` : "your initial contract";
|
|
723
753
|
const mtRenewalDateText = mtUnit && mtDuration ? getRenewalDateText(mtUnit, Number(mtDuration)) : ctx.renewalDateText;
|
|
724
|
-
return `You\u2019ll be charged ${duePrice} a month for the duration of ${initialContractText}{
|
|
754
|
+
return `You\u2019ll be charged ${duePrice} a month for the duration of ${initialContractText}${LI_SEPARATOR}Your subscription auto-renews annually at ${ctx.renewalPriceText} a month on ${mtRenewalDateText} until cancelled${LI_SEPARATOR}You\u2019ll be charged the rate in effect at each renewal. ${ctx.cancelAnytime}`;
|
|
725
755
|
}
|
|
726
756
|
function paidTrialTerms(offer, ctx) {
|
|
727
757
|
const trialUnit = offer.subscription_options?.trial_period?.unit ?? ctx.unit;
|
|
728
758
|
const trialDuration = offer.subscription_options?.trial_period?.duration ?? ctx.duration;
|
|
729
759
|
const trialDateText = getRenewalDateText(trialUnit, trialDuration);
|
|
730
760
|
if (ctx.isUS) {
|
|
731
|
-
return `Your subscription auto-renews ${ctx.periodText} until cancelled{
|
|
761
|
+
return `Your subscription auto-renews ${ctx.periodText} until cancelled${LI_SEPARATOR}Your subscription renews at ${ctx.renewalPriceText}${ctx.taxSuffix} on ${trialDateText} when your paid trial ends${LI_SEPARATOR}You\u2019ll be charged the rate in effect at each renewal. ${ctx.usCancelNote}${ctx.taxFootnote}`;
|
|
732
762
|
}
|
|
733
|
-
return `Your subscription auto-renews at ${ctx.renewalPriceText}${ctx.taxSuffix} ${ctx.periodText} on ${trialDateText} when your paid trial ends, until cancelled{
|
|
763
|
+
return `Your subscription auto-renews at ${ctx.renewalPriceText}${ctx.taxSuffix} ${ctx.periodText} on ${trialDateText} when your paid trial ends, until cancelled${LI_SEPARATOR}You\u2019ll be charged the rate in effect at each renewal. ${ctx.cancelAnytime}${ctx.taxFootnote}`;
|
|
734
764
|
}
|
|
735
765
|
function autoRenewalTerms(ctx) {
|
|
736
766
|
if (ctx.isUS) {
|
|
737
|
-
return `Your subscription auto-renews ${ctx.periodText} until cancelled{
|
|
767
|
+
return `Your subscription auto-renews ${ctx.periodText} until cancelled${LI_SEPARATOR}Your subscription renews at ${ctx.renewalPriceText}${ctx.taxSuffix} ${ctx.renewalDateStr}${LI_SEPARATOR}You\u2019ll be charged the rate in effect at each renewal until cancelled. ${ctx.usCancelNote}${ctx.taxFootnote}`;
|
|
738
768
|
}
|
|
739
|
-
return `Your subscription auto-renews at ${ctx.renewalPriceText}${ctx.taxSuffix} ${ctx.periodText} ${ctx.renewalDateStr} until cancelled{
|
|
769
|
+
return `Your subscription auto-renews at ${ctx.renewalPriceText}${ctx.taxSuffix} ${ctx.periodText} ${ctx.renewalDateStr} until cancelled${LI_SEPARATOR}You\u2019ll be charged the rate in effect at each renewal. ${ctx.cancelAnytime}${ctx.taxFootnote}`;
|
|
740
770
|
}
|
|
741
771
|
function noAutoRenewalTerms(ctx) {
|
|
742
772
|
if (ctx.isUS || ctx.isCA) {
|
|
743
|
-
return `Your subscription does not renew automatically${ctx.taxFootnote}{
|
|
773
|
+
return `Your subscription does not renew automatically${ctx.taxFootnote}${LI_SEPARATOR}`;
|
|
744
774
|
}
|
|
745
|
-
return `Your subscription does not renew automatically{
|
|
775
|
+
return `Your subscription does not renew automatically${LI_SEPARATOR}`;
|
|
746
776
|
}
|
|
747
777
|
function generateApplePayModalTerms(offer, country) {
|
|
748
778
|
const ctx = buildTermsContext(offer, country);
|
|
@@ -765,9 +795,9 @@ function generateApplePayModalTerms(offer, country) {
|
|
|
765
795
|
return noAutoRenewalTerms(ctx);
|
|
766
796
|
}
|
|
767
797
|
function renderTermsHtml(termsText) {
|
|
768
|
-
const renewalTextLists = termsText.split(
|
|
798
|
+
const renewalTextLists = termsText.split(LI_SEPARATOR);
|
|
769
799
|
const lastPart = renewalTextLists.pop() || "";
|
|
770
|
-
const renewalTextParagraphs = lastPart.split(
|
|
800
|
+
const renewalTextParagraphs = lastPart.split(P_SEPARATOR);
|
|
771
801
|
const ulHtml = `<ul class="apm__terms-bullets">${renewalTextLists.map((value) => `<li>${value}</li>`).join("")}</ul>`;
|
|
772
802
|
const paragraphHtml = renewalTextParagraphs.filter(Boolean).map((value) => `<p class="apm__terms-legal">${value}</p>`).join("");
|
|
773
803
|
return ulHtml + paragraphHtml;
|