@financial-times/n-conversion-forms 20.3.1 → 20.3.5
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/.circleci/config.yml +8 -6
- package/.circleci/shared-helpers/helper-npm-install-peer-deps +6 -6
- package/.eslintignore +3 -0
- package/.github/workflows/gh-pages-deploy.yml +2 -1
- package/build-state/npm-shrinkwrap.json +47829 -8580
- package/components/__snapshots__/accept-terms.spec.js.snap +94 -6
- package/components/__snapshots__/app-banner.spec.js.snap +2 -0
- package/components/__snapshots__/confirmation.spec.js.snap +11 -11
- package/components/__snapshots__/delivery-address.spec.js.snap +2 -2
- package/components/__snapshots__/graduation-date.spec.js.snap +3 -3
- package/components/__snapshots__/registration-confirmation.spec.js.snap +2 -2
- package/components/accept-terms.jsx +67 -9
- package/components/accept-terms.spec.js +12 -0
- package/components/app-banner.jsx +3 -1
- package/components/b2c-partnership-confirmation.jsx +7 -8
- package/components/b2c-partnership-confirmation.spec.js +1 -1
- package/components/b2c-partnership-payment-term.jsx +5 -2
- package/components/billing-country.jsx +1 -1
- package/components/billing-postcode.jsx +1 -1
- package/components/company-name.spec.js +9 -3
- package/components/confirmation.jsx +1 -1
- package/components/continue-reading.jsx +1 -1
- package/components/country.jsx +3 -2
- package/components/customer-care.jsx +1 -1
- package/components/debug.jsx +1 -1
- package/components/decision-maker.jsx +1 -1
- package/components/delivery-address-type.jsx +9 -9
- package/components/delivery-address-type.stories.js +10 -2
- package/components/delivery-address.jsx +108 -77
- package/components/delivery-address.spec.js +3 -1
- package/components/delivery-address.stories.js +1 -1
- package/components/delivery-city.jsx +2 -2
- package/components/delivery-county.jsx +1 -1
- package/components/delivery-instructions.jsx +48 -18
- package/components/delivery-instructions.spec.js +6 -2
- package/components/delivery-option.jsx +6 -2
- package/components/delivery-option.spec.js +4 -4
- package/components/delivery-option.stories.js +17 -5
- package/components/delivery-po-box.jsx +3 -5
- package/components/delivery-po-box.spec.js +3 -1
- package/components/delivery-po-box.stories.js +1 -1
- package/components/delivery-postcode.jsx +6 -3
- package/components/delivery-security-instructions.jsx +1 -2
- package/components/delivery-start-date.jsx +3 -1
- package/components/education-job-title.jsx +1 -1
- package/components/email.jsx +1 -1
- package/components/error-page.jsx +1 -1
- package/components/fieldset.jsx +1 -1
- package/components/first-name.jsx +1 -1
- package/components/form.jsx +1 -1
- package/components/google-sign-in.jsx +8 -4
- package/components/google-sign-in.stories.js +2 -1
- package/components/graduation-date.jsx +1 -1
- package/components/graduation-date.spec.js +1 -9
- package/components/industry.jsx +2 -2
- package/components/industry.spec.js +3 -1
- package/components/job-title.jsx +2 -2
- package/components/job-title.spec.js +3 -1
- package/components/last-name.jsx +1 -1
- package/components/licence-confirmation.jsx +7 -5
- package/components/licence-confirmation.stories.js +3 -1
- package/components/licence-header.jsx +2 -2
- package/components/licence-sign-in.jsx +2 -2
- package/components/licence-title.jsx +2 -2
- package/components/lite-sub-confirmation.jsx +92 -40
- package/components/lite-sub-confirmation.stories.js +3 -3
- package/components/loader.jsx +1 -1
- package/components/message.jsx +1 -1
- package/components/message.spec.jsx +1 -1
- package/components/organisation.jsx +1 -1
- package/components/package-change.jsx +13 -4
- package/components/password.jsx +1 -1
- package/components/payment-term.jsx +1 -1
- package/components/payment-type.jsx +7 -4
- package/components/personal-title.jsx +0 -1
- package/components/personal-title.spec.js +8 -6
- package/components/phone.jsx +2 -2
- package/components/phone.spec.js +3 -1
- package/components/position.jsx +2 -2
- package/components/position.spec.js +3 -1
- package/components/progress-indicator.jsx +4 -4
- package/components/registration-confirmation.jsx +1 -1
- package/components/responsibility.jsx +3 -5
- package/components/responsibility.spec.js +3 -1
- package/components/section.jsx +1 -1
- package/components/state.jsx +1 -1
- package/components/submit.jsx +1 -1
- package/components/trial-banner.jsx +1 -1
- package/dist/accept-terms.js +42 -7
- package/dist/app-banner.js +4 -2
- package/dist/confirmation.js +3 -3
- package/dist/continue-reading.js +2 -2
- package/dist/decision-maker.js +2 -2
- package/dist/delivery-address.js +7 -7
- package/dist/delivery-instructions.js +2 -2
- package/dist/delivery-security-instructions.js +2 -3
- package/dist/delivery-start-date.js +2 -2
- package/dist/fieldset.js +2 -2
- package/dist/licence-confirmation.js +2 -2
- package/dist/lite-sub-confirmation.js +7 -7
- package/dist/loader.js +2 -2
- package/dist/message.spec.js +2 -2
- package/dist/package-change.js +1 -1
- package/dist/payment-term.js +2 -2
- package/dist/payment-type.js +3 -3
- package/dist/registration-confirmation.js +1 -1
- package/jest.config.js +6 -1
- package/package.json +23 -12
- package/utils/billing-country.js +2 -3
- package/utils/company-name.spec.js +11 -3
- package/utils/delivery-address-type.js +4 -1
- package/utils/delivery-address-type.spec.js +11 -3
- package/utils/delivery-option-messages.js +61 -32
- package/utils/delivery-option-messages.spec.js +42 -12
- package/utils/delivery-option.js +14 -7
- package/utils/delivery-option.spec.js +7 -3
- package/utils/delivery-start-date.js +5 -3
- package/utils/zuora.js +6 -1
|
@@ -1,5 +1,93 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
|
+
exports[`AcceptTerms renders appropriately if a isAuthFirstAccount 1`] = `
|
|
4
|
+
<div id="acceptTermsField"
|
|
5
|
+
class="o-forms-field o-layout-typography ncf__validation-error"
|
|
6
|
+
data-validate="required,checked"
|
|
7
|
+
>
|
|
8
|
+
<ul class="o-typography-list ncf__accept-terms-list">
|
|
9
|
+
<li>
|
|
10
|
+
<span class="terms-auth-first-step">
|
|
11
|
+
For more information about how we use your data, please refer to our
|
|
12
|
+
<a class="ncf__link--external"
|
|
13
|
+
href="http://help.ft.com/help/legal-privacy/terms-conditions/"
|
|
14
|
+
target="_blank"
|
|
15
|
+
rel="noopener noreferrer"
|
|
16
|
+
data-trackable="terms-and-conditions"
|
|
17
|
+
>
|
|
18
|
+
privacy
|
|
19
|
+
</a>
|
|
20
|
+
and
|
|
21
|
+
<a class="ncf__link--external"
|
|
22
|
+
href="http://help.ft.com/help/legal-privacy/terms-conditions/"
|
|
23
|
+
target="_blank"
|
|
24
|
+
rel="noopener noreferrer"
|
|
25
|
+
data-trackable="terms-and-conditions"
|
|
26
|
+
>
|
|
27
|
+
cookie
|
|
28
|
+
</a>
|
|
29
|
+
policies.
|
|
30
|
+
</span>
|
|
31
|
+
</li>
|
|
32
|
+
</ul>
|
|
33
|
+
<label class="o-forms-input o-forms-input--checkbox"
|
|
34
|
+
for="termsAcceptance"
|
|
35
|
+
>
|
|
36
|
+
<input type="checkbox"
|
|
37
|
+
id="termsAcceptance"
|
|
38
|
+
name="termsAcceptance"
|
|
39
|
+
value="true"
|
|
40
|
+
data-trackable="field-terms"
|
|
41
|
+
aria-required="true"
|
|
42
|
+
required
|
|
43
|
+
>
|
|
44
|
+
<span class="o-forms-input__label terms-auth-first-step">
|
|
45
|
+
I confirm that I am 16 years or older and agree to the full
|
|
46
|
+
<a class="ncf__link--external"
|
|
47
|
+
href="http://help.ft.com/help/legal-privacy/terms-conditions/"
|
|
48
|
+
target="_blank"
|
|
49
|
+
rel="noopener noreferrer"
|
|
50
|
+
data-trackable="terms-and-conditions"
|
|
51
|
+
>
|
|
52
|
+
Terms & Conditions
|
|
53
|
+
</a>
|
|
54
|
+
.
|
|
55
|
+
</span>
|
|
56
|
+
<p class="o-forms-input__error">
|
|
57
|
+
Please accept our terms & conditions
|
|
58
|
+
</p>
|
|
59
|
+
</label>
|
|
60
|
+
</div>
|
|
61
|
+
`;
|
|
62
|
+
|
|
63
|
+
exports[`AcceptTerms renders appropriately if a isAuthFirstPayment 1`] = `
|
|
64
|
+
<div id="acceptTermsField"
|
|
65
|
+
class="o-forms-field o-layout-typography ncf__validation-error"
|
|
66
|
+
data-validate="required,checked"
|
|
67
|
+
>
|
|
68
|
+
<ul class="o-typography-list ncf__accept-terms-list">
|
|
69
|
+
</ul>
|
|
70
|
+
<label class="o-forms-input o-forms-input--checkbox"
|
|
71
|
+
for="termsAcceptance"
|
|
72
|
+
>
|
|
73
|
+
<input type="checkbox"
|
|
74
|
+
id="termsAcceptance"
|
|
75
|
+
name="termsAcceptance"
|
|
76
|
+
value="true"
|
|
77
|
+
data-trackable="field-terms"
|
|
78
|
+
aria-required="true"
|
|
79
|
+
required
|
|
80
|
+
>
|
|
81
|
+
<span class="o-forms-input__label">
|
|
82
|
+
I agree to the above terms & conditions.
|
|
83
|
+
</span>
|
|
84
|
+
<p class="o-forms-input__error">
|
|
85
|
+
Please accept our terms & conditions
|
|
86
|
+
</p>
|
|
87
|
+
</label>
|
|
88
|
+
</div>
|
|
89
|
+
`;
|
|
90
|
+
|
|
3
91
|
exports[`AcceptTerms renders appropriately if a registration 1`] = `
|
|
4
92
|
<div id="acceptTermsField"
|
|
5
93
|
class="o-forms-field o-layout-typography ncf__validation-error"
|
|
@@ -72,7 +160,7 @@ exports[`AcceptTerms renders appropriately if a signup 1`] = `
|
|
|
72
160
|
</li>
|
|
73
161
|
<li>
|
|
74
162
|
<span class="terms-signup">
|
|
75
|
-
By placing my order, my subscription will start immediately.
|
|
163
|
+
By placing my order, my subscription will start immediately and I am aware and agree that I will therefore lose my statutory right to cancel my subscription within 14 days of acceptance of my order. Any notice of cancellation that I provide will only take effect at the end of my subscription period and previously paid amounts are non-refundable, except in the event that there is a fault in the provision of the services.
|
|
76
164
|
</span>
|
|
77
165
|
</li>
|
|
78
166
|
<li>
|
|
@@ -146,7 +234,7 @@ exports[`AcceptTerms renders appropriately if a signup and has special terms 1`]
|
|
|
146
234
|
</li>
|
|
147
235
|
<li>
|
|
148
236
|
<span class="terms-signup">
|
|
149
|
-
By placing my order, my subscription will start immediately.
|
|
237
|
+
By placing my order, my subscription will start immediately and I am aware and agree that I will therefore lose my statutory right to cancel my subscription within 14 days of acceptance of my order. Any notice of cancellation that I provide will only take effect at the end of my subscription period and previously paid amounts are non-refundable, except in the event that there is a fault in the provision of the services.
|
|
150
238
|
</span>
|
|
151
239
|
</li>
|
|
152
240
|
<li>
|
|
@@ -408,7 +496,7 @@ exports[`AcceptTerms renders appropriately if a signup not for the print product
|
|
|
408
496
|
</li>
|
|
409
497
|
<li>
|
|
410
498
|
<span class="terms-signup">
|
|
411
|
-
By placing my order, my subscription will start immediately.
|
|
499
|
+
By placing my order, my subscription will start immediately and I am aware and agree that I will therefore lose my statutory right to cancel my subscription within 14 days of acceptance of my order. Any notice of cancellation that I provide will only take effect at the end of my subscription period and previously paid amounts are non-refundable, except in the event that there is a fault in the provision of the services.
|
|
412
500
|
</span>
|
|
413
501
|
</li>
|
|
414
502
|
<li>
|
|
@@ -482,7 +570,7 @@ exports[`AcceptTerms renders appropriately if a signup not for the print product
|
|
|
482
570
|
</li>
|
|
483
571
|
<li>
|
|
484
572
|
<span class="terms-signup">
|
|
485
|
-
By placing my order, my subscription will start immediately.
|
|
573
|
+
By placing my order, my subscription will start immediately and I am aware and agree that I will therefore lose my statutory right to cancel my subscription within 14 days of acceptance of my order. Any notice of cancellation that I provide will only take effect at the end of my subscription period and previously paid amounts are non-refundable, except in the event that there is a fault in the provision of the services.
|
|
486
574
|
</span>
|
|
487
575
|
</li>
|
|
488
576
|
<li>
|
|
@@ -556,7 +644,7 @@ exports[`AcceptTerms renders appropriately if a signup not for the print product
|
|
|
556
644
|
</li>
|
|
557
645
|
<li>
|
|
558
646
|
<span class="terms-signup">
|
|
559
|
-
By placing my order, my subscription will start immediately.
|
|
647
|
+
By placing my order, my subscription will start immediately and I am aware and agree that I will therefore lose my statutory right to cancel my subscription within 14 days of acceptance of my order. Any notice of cancellation that I provide will only take effect at the end of my subscription period and previously paid amounts are non-refundable, except in the event that there is a fault in the provision of the services.
|
|
560
648
|
</span>
|
|
561
649
|
</li>
|
|
562
650
|
<li>
|
|
@@ -1155,7 +1243,7 @@ exports[`AcceptTerms renders appropriately if is transition with transition type
|
|
|
1155
1243
|
</li>
|
|
1156
1244
|
<li>
|
|
1157
1245
|
<span class="terms-transition terms-transition--immediate">
|
|
1158
|
-
By placing my order, my subscription will start immediately.
|
|
1246
|
+
By placing my order, my subscription will start immediately and I am aware and agree that I will therefore lose my statutory right to cancel my subscription within 14 days of acceptance of my order. Any notice of cancellation that I provide will only take effect at the end of my subscription period and previously paid amounts are non-refundable, except in the event that there is a fault in the provision of the services.
|
|
1159
1247
|
</span>
|
|
1160
1248
|
</li>
|
|
1161
1249
|
<li>
|
|
@@ -25,6 +25,7 @@ exports[`AppBanner renders 1`] = `
|
|
|
25
25
|
<a href="https://itunes.apple.com/app/apple-store/id1200842933?pt=246269&ct=onsite-app-promotion&mt=8"
|
|
26
26
|
target="_blank"
|
|
27
27
|
role="link"
|
|
28
|
+
rel="noreferrer"
|
|
28
29
|
>
|
|
29
30
|
<img src="https://www.ft.com/__assets/creatives/tour/apps/ios-download.svg"
|
|
30
31
|
alt="Download from the iOS App store"
|
|
@@ -36,6 +37,7 @@ exports[`AppBanner renders 1`] = `
|
|
|
36
37
|
<a href="https://play.google.com/store/apps/details?id=com.ft.news&referrer=utm_source%3Donsite-app-promotion%26utm_campaign%3DOnsite%2520Messaging"
|
|
37
38
|
target="_blank"
|
|
38
39
|
role="link"
|
|
40
|
+
rel="noreferrer"
|
|
39
41
|
>
|
|
40
42
|
<img src="https://www.ft.com/__origami/service/image/v2/images/raw/https%253A%252F%252Fwww.ft.com%252F__assets%252Fcreatives%252Ftour%252Fapps%252Fgoogle-play-badge-3x.png?source=ip-envoy"
|
|
41
43
|
height="35"
|
|
@@ -29,7 +29,7 @@ exports[`Confirmation renders appropriately if is B2C Partnership 1`] = `
|
|
|
29
29
|
<a class="ncf__link ncf__link--external"
|
|
30
30
|
href="https://www.ft.com/myaccount/personal-details"
|
|
31
31
|
target="_blank"
|
|
32
|
-
rel="noopener"
|
|
32
|
+
rel="noopener noreferrer"
|
|
33
33
|
data-trackable="yourAccount"
|
|
34
34
|
>
|
|
35
35
|
account settings
|
|
@@ -86,7 +86,7 @@ exports[`Confirmation renders appropriately if is trial 1`] = `
|
|
|
86
86
|
<a class="ncf__link ncf__link--external"
|
|
87
87
|
href="https://www.ft.com/myaccount/personal-details"
|
|
88
88
|
target="_blank"
|
|
89
|
-
rel="noopener"
|
|
89
|
+
rel="noopener noreferrer"
|
|
90
90
|
data-trackable="yourAccount"
|
|
91
91
|
>
|
|
92
92
|
account settings
|
|
@@ -141,7 +141,7 @@ exports[`Confirmation renders appropriately if nextActionBottom is not supplied
|
|
|
141
141
|
<a class="ncf__link ncf__link--external"
|
|
142
142
|
href="https://www.ft.com/myaccount/personal-details"
|
|
143
143
|
target="_blank"
|
|
144
|
-
rel="noopener"
|
|
144
|
+
rel="noopener noreferrer"
|
|
145
145
|
data-trackable="yourAccount"
|
|
146
146
|
>
|
|
147
147
|
account settings
|
|
@@ -196,7 +196,7 @@ exports[`Confirmation renders appropriately if nextActionBottom is supplied 1`]
|
|
|
196
196
|
<a class="ncf__link ncf__link--external"
|
|
197
197
|
href="https://www.ft.com/myaccount/personal-details"
|
|
198
198
|
target="_blank"
|
|
199
|
-
rel="noopener"
|
|
199
|
+
rel="noopener noreferrer"
|
|
200
200
|
data-trackable="yourAccount"
|
|
201
201
|
>
|
|
202
202
|
account settings
|
|
@@ -252,7 +252,7 @@ exports[`Confirmation renders appropriately if nextActionTop is not supplied 1`]
|
|
|
252
252
|
<a class="ncf__link ncf__link--external"
|
|
253
253
|
href="https://www.ft.com/myaccount/personal-details"
|
|
254
254
|
target="_blank"
|
|
255
|
-
rel="noopener"
|
|
255
|
+
rel="noopener noreferrer"
|
|
256
256
|
data-trackable="yourAccount"
|
|
257
257
|
>
|
|
258
258
|
account settings
|
|
@@ -308,7 +308,7 @@ exports[`Confirmation renders appropriately if nextActionTop is supplied 1`] = `
|
|
|
308
308
|
<a class="ncf__link ncf__link--external"
|
|
309
309
|
href="https://www.ft.com/myaccount/personal-details"
|
|
310
310
|
target="_blank"
|
|
311
|
-
rel="noopener"
|
|
311
|
+
rel="noopener noreferrer"
|
|
312
312
|
data-trackable="yourAccount"
|
|
313
313
|
>
|
|
314
314
|
account settings
|
|
@@ -377,7 +377,7 @@ exports[`Confirmation renders with complete details 1`] = `
|
|
|
377
377
|
<a class="ncf__link ncf__link--external"
|
|
378
378
|
href="https://www.ft.com/myaccount/personal-details"
|
|
379
379
|
target="_blank"
|
|
380
|
-
rel="noopener"
|
|
380
|
+
rel="noopener noreferrer"
|
|
381
381
|
data-trackable="yourAccount"
|
|
382
382
|
>
|
|
383
383
|
account settings
|
|
@@ -432,7 +432,7 @@ exports[`Confirmation renders with custom email 1`] = `
|
|
|
432
432
|
<a class="ncf__link ncf__link--external"
|
|
433
433
|
href="https://www.ft.com/myaccount/personal-details"
|
|
434
434
|
target="_blank"
|
|
435
|
-
rel="noopener"
|
|
435
|
+
rel="noopener noreferrer"
|
|
436
436
|
data-trackable="yourAccount"
|
|
437
437
|
>
|
|
438
438
|
account settings
|
|
@@ -487,7 +487,7 @@ exports[`Confirmation renders with default props 1`] = `
|
|
|
487
487
|
<a class="ncf__link ncf__link--external"
|
|
488
488
|
href="https://www.ft.com/myaccount/personal-details"
|
|
489
489
|
target="_blank"
|
|
490
|
-
rel="noopener"
|
|
490
|
+
rel="noopener noreferrer"
|
|
491
491
|
data-trackable="yourAccount"
|
|
492
492
|
>
|
|
493
493
|
account settings
|
|
@@ -553,7 +553,7 @@ exports[`Confirmation renders with details missing a description 1`] = `
|
|
|
553
553
|
<a class="ncf__link ncf__link--external"
|
|
554
554
|
href="https://www.ft.com/myaccount/personal-details"
|
|
555
555
|
target="_blank"
|
|
556
|
-
rel="noopener"
|
|
556
|
+
rel="noopener noreferrer"
|
|
557
557
|
data-trackable="yourAccount"
|
|
558
558
|
>
|
|
559
559
|
account settings
|
|
@@ -621,7 +621,7 @@ exports[`Confirmation renders with direct debit mandate URL 1`] = `
|
|
|
621
621
|
<a class="ncf__link ncf__link--external"
|
|
622
622
|
href="https://www.ft.com/myaccount/personal-details"
|
|
623
623
|
target="_blank"
|
|
624
|
-
rel="noopener"
|
|
624
|
+
rel="noopener noreferrer"
|
|
625
625
|
data-trackable="yourAccount"
|
|
626
626
|
>
|
|
627
627
|
account settings
|
|
@@ -185,7 +185,7 @@ exports[`DeliveryAddress renders with country different than default 1`] = `
|
|
|
185
185
|
>
|
|
186
186
|
<span class="o-forms-title">
|
|
187
187
|
<span class="o-forms-title__main">
|
|
188
|
-
|
|
188
|
+
APT/FL/STE
|
|
189
189
|
</span>
|
|
190
190
|
<span class="o-forms-title__prompt">
|
|
191
191
|
Max. 6 characters. Please enter “Apartment 2C” as “Apt 2C”, “Floor 10 as FL 10”
|
|
@@ -197,7 +197,7 @@ exports[`DeliveryAddress renders with country different than default 1`] = `
|
|
|
197
197
|
name="deliveryAddressLine3"
|
|
198
198
|
data-trackable="field-deliveryAddressLine3"
|
|
199
199
|
autocomplete="address-line3"
|
|
200
|
-
placeholder="e.g Apt
|
|
200
|
+
placeholder="e.g Apt 2C / FL 10 / STE 50"
|
|
201
201
|
maxlength="50"
|
|
202
202
|
value
|
|
203
203
|
>
|
|
@@ -71,9 +71,6 @@ exports[`GraduationDate renders with default props 1`] = `
|
|
|
71
71
|
name="graduationDateYear"
|
|
72
72
|
aria-required="false"
|
|
73
73
|
>
|
|
74
|
-
<option value="2017">
|
|
75
|
-
2017
|
|
76
|
-
</option>
|
|
77
74
|
<option value="2018">
|
|
78
75
|
2018
|
|
79
76
|
</option>
|
|
@@ -98,6 +95,9 @@ exports[`GraduationDate renders with default props 1`] = `
|
|
|
98
95
|
<option value="2025">
|
|
99
96
|
2025
|
|
100
97
|
</option>
|
|
98
|
+
<option value="2026">
|
|
99
|
+
2026
|
|
100
|
+
</option>
|
|
101
101
|
</select>
|
|
102
102
|
</span>
|
|
103
103
|
</div>
|
|
@@ -23,7 +23,7 @@ exports[`RegistrationConfirmation renders with a custom email 1`] = `
|
|
|
23
23
|
<a class="ncf__link ncf__link--external"
|
|
24
24
|
href="https://www.ft.com/myaccount/personal-details"
|
|
25
25
|
target="_blank"
|
|
26
|
-
rel="noopener"
|
|
26
|
+
rel="noopener noreferrer"
|
|
27
27
|
data-trackable="yourAccount"
|
|
28
28
|
>
|
|
29
29
|
account settings
|
|
@@ -70,7 +70,7 @@ exports[`RegistrationConfirmation renders with default props 1`] = `
|
|
|
70
70
|
<a class="ncf__link ncf__link--external"
|
|
71
71
|
href="https://www.ft.com/myaccount/personal-details"
|
|
72
72
|
target="_blank"
|
|
73
|
-
rel="noopener"
|
|
73
|
+
rel="noopener noreferrer"
|
|
74
74
|
data-trackable="yourAccount"
|
|
75
75
|
>
|
|
76
76
|
account settings
|
|
@@ -4,7 +4,9 @@ import classNames from 'classnames';
|
|
|
4
4
|
|
|
5
5
|
const DEFAULT_AGE_RESTRICTION = '16';
|
|
6
6
|
|
|
7
|
-
export function AcceptTerms({
|
|
7
|
+
export function AcceptTerms ({
|
|
8
|
+
isAuthFirstAccount = false,
|
|
9
|
+
isAuthFirstPayment = false,
|
|
8
10
|
hasError = false,
|
|
9
11
|
isSignup = false,
|
|
10
12
|
isRegister = false,
|
|
@@ -46,6 +48,54 @@ export function AcceptTerms({
|
|
|
46
48
|
...(isChecked && { defaultChecked: true }),
|
|
47
49
|
};
|
|
48
50
|
|
|
51
|
+
const authFirstStepTerms = (
|
|
52
|
+
<>
|
|
53
|
+
<ul className="o-typography-list ncf__accept-terms-list">
|
|
54
|
+
<li>
|
|
55
|
+
<span className="terms-auth-first-step">
|
|
56
|
+
For more information about how we use your data, please refer to our <a
|
|
57
|
+
className="ncf__link--external"
|
|
58
|
+
href="http://help.ft.com/help/legal-privacy/terms-conditions/"
|
|
59
|
+
target='_blank'
|
|
60
|
+
rel="noopener noreferrer"
|
|
61
|
+
data-trackable="terms-and-conditions"
|
|
62
|
+
>
|
|
63
|
+
privacy
|
|
64
|
+
</a> and
|
|
65
|
+
<a
|
|
66
|
+
className="ncf__link--external"
|
|
67
|
+
href="http://help.ft.com/help/legal-privacy/terms-conditions/"
|
|
68
|
+
target='_blank'
|
|
69
|
+
rel="noopener noreferrer"
|
|
70
|
+
data-trackable="terms-and-conditions"
|
|
71
|
+
>
|
|
72
|
+
cookie
|
|
73
|
+
</a> policies.
|
|
74
|
+
</span>
|
|
75
|
+
</li>
|
|
76
|
+
</ul>
|
|
77
|
+
<label className={labelClassName} htmlFor="termsAcceptance">
|
|
78
|
+
<input {...inputProps} />
|
|
79
|
+
<span className="o-forms-input__label terms-auth-first-step">
|
|
80
|
+
I confirm that I am {ageRestriction} years or older and agree to the full {' '}
|
|
81
|
+
<a
|
|
82
|
+
className="ncf__link--external"
|
|
83
|
+
href="http://help.ft.com/help/legal-privacy/terms-conditions/"
|
|
84
|
+
target={isEmbedded ? '_top' : '_blank'}
|
|
85
|
+
rel="noopener noreferrer"
|
|
86
|
+
data-trackable="terms-and-conditions"
|
|
87
|
+
>
|
|
88
|
+
Terms & Conditions
|
|
89
|
+
</a>
|
|
90
|
+
.
|
|
91
|
+
</span>
|
|
92
|
+
<p className="o-forms-input__error">
|
|
93
|
+
Please accept our terms & conditions
|
|
94
|
+
</p>
|
|
95
|
+
</label>
|
|
96
|
+
</>
|
|
97
|
+
);
|
|
98
|
+
|
|
49
99
|
const registerTerms = (
|
|
50
100
|
<label className={labelClassName} htmlFor="termsAcceptance">
|
|
51
101
|
<input {...inputProps} />
|
|
@@ -154,9 +204,12 @@ export function AcceptTerms({
|
|
|
154
204
|
{transitionType === 'immediate' ? (
|
|
155
205
|
<li>
|
|
156
206
|
<span className="terms-transition terms-transition--immediate">
|
|
157
|
-
By placing my order, my subscription will start immediately
|
|
158
|
-
|
|
159
|
-
|
|
207
|
+
By placing my order, my subscription will start immediately and I am
|
|
208
|
+
aware and agree that I will therefore lose my statutory right to cancel my
|
|
209
|
+
subscription within 14 days of acceptance of my order. Any notice of
|
|
210
|
+
cancellation that I provide will only take effect at the end of my subscription
|
|
211
|
+
period and previously paid amounts are non-refundable, except in the event that
|
|
212
|
+
there is a fault in the provision of the services.
|
|
160
213
|
</span>
|
|
161
214
|
</li>
|
|
162
215
|
) : (
|
|
@@ -192,6 +245,7 @@ export function AcceptTerms({
|
|
|
192
245
|
const printSignupTermText = isTrial
|
|
193
246
|
? 'Credits for delivery suspension or delivery failure are not available during introductory offer periods.'
|
|
194
247
|
: 'Credit for delivery suspensions is only available for hand-delivered subscriptions and is limited to a maximum of 24 issues per yearly subscription terms (4 issues per yearly FT Weekend subscription term).';
|
|
248
|
+
|
|
195
249
|
const signupTerms = isSignup && (
|
|
196
250
|
<>
|
|
197
251
|
{isPrintProduct ? (
|
|
@@ -234,10 +288,12 @@ export function AcceptTerms({
|
|
|
234
288
|
</li>
|
|
235
289
|
<li>
|
|
236
290
|
<span className="terms-signup">
|
|
237
|
-
By placing my order, my subscription will start immediately
|
|
238
|
-
|
|
239
|
-
subscription
|
|
240
|
-
|
|
291
|
+
By placing my order, my subscription will start immediately and I am
|
|
292
|
+
aware and agree that I will therefore lose my statutory right to cancel
|
|
293
|
+
my subscription within 14 days of acceptance of my order. Any notice of
|
|
294
|
+
cancellation that I provide will only take effect at the end of my
|
|
295
|
+
subscription period and previously paid amounts are non-refundable,
|
|
296
|
+
except in the event that there is a fault in the provision of the services.
|
|
241
297
|
</span>
|
|
242
298
|
</li>
|
|
243
299
|
<li>
|
|
@@ -294,10 +350,12 @@ export function AcceptTerms({
|
|
|
294
350
|
b2cPartnershipTerms
|
|
295
351
|
) : isRegister ? (
|
|
296
352
|
registerTerms
|
|
353
|
+
) : isAuthFirstAccount ? (
|
|
354
|
+
authFirstStepTerms
|
|
297
355
|
) : (
|
|
298
356
|
<>
|
|
299
357
|
<ul className="o-typography-list ncf__accept-terms-list">
|
|
300
|
-
{b2bTerms}
|
|
358
|
+
{!isAuthFirstPayment && b2bTerms}
|
|
301
359
|
{corpSignupTerms}
|
|
302
360
|
{transitionTerms}
|
|
303
361
|
{signupTerms}
|
|
@@ -16,6 +16,18 @@ describe('AcceptTerms', () => {
|
|
|
16
16
|
expect(AcceptTerms).toRenderCorrectly(props);
|
|
17
17
|
});
|
|
18
18
|
|
|
19
|
+
it('renders appropriately if a isAuthFirstAccount', () => {
|
|
20
|
+
const props = { isAuthFirstAccount: true };
|
|
21
|
+
|
|
22
|
+
expect(AcceptTerms).toRenderCorrectly(props);
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it('renders appropriately if a isAuthFirstPayment', () => {
|
|
26
|
+
const props = { isAuthFirstPayment: true };
|
|
27
|
+
|
|
28
|
+
expect(AcceptTerms).toRenderCorrectly(props);
|
|
29
|
+
});
|
|
30
|
+
|
|
19
31
|
it('renders appropriately if a signup', () => {
|
|
20
32
|
const props = { isSignup: true };
|
|
21
33
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
|
|
3
|
-
export function AppBanner() {
|
|
3
|
+
export function AppBanner () {
|
|
4
4
|
return (
|
|
5
5
|
<div id="appBanner" className="ncf ncf__app-banner">
|
|
6
6
|
<div className="ncf__app-banner-inner">
|
|
@@ -21,6 +21,7 @@ export function AppBanner() {
|
|
|
21
21
|
href="https://itunes.apple.com/app/apple-store/id1200842933?pt=246269&ct=onsite-app-promotion&mt=8"
|
|
22
22
|
target="_blank"
|
|
23
23
|
role="link"
|
|
24
|
+
rel="noreferrer"
|
|
24
25
|
>
|
|
25
26
|
<img
|
|
26
27
|
src="https://www.ft.com/__assets/creatives/tour/apps/ios-download.svg"
|
|
@@ -34,6 +35,7 @@ export function AppBanner() {
|
|
|
34
35
|
href="https://play.google.com/store/apps/details?id=com.ft.news&referrer=utm_source%3Donsite-app-promotion%26utm_campaign%3DOnsite%2520Messaging"
|
|
35
36
|
target="_blank"
|
|
36
37
|
role="link"
|
|
38
|
+
rel="noreferrer"
|
|
37
39
|
>
|
|
38
40
|
<img
|
|
39
41
|
src="https://www.ft.com/__origami/service/image/v2/images/raw/https%253A%252F%252Fwww.ft.com%252F__assets%252Fcreatives%252Ftour%252Fapps%252Fgoogle-play-badge-3x.png?source=ip-envoy"
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
|
|
4
|
-
export function B2CPartnershipConfirmation ({
|
|
5
|
-
ctaElement = null,
|
|
6
|
-
}) {
|
|
7
|
-
|
|
4
|
+
export function B2CPartnershipConfirmation ({ ctaElement = null }) {
|
|
8
5
|
const readingLinkProps = {
|
|
9
6
|
href: '/',
|
|
10
7
|
className: 'ncf__link',
|
|
@@ -37,10 +34,13 @@ export function B2CPartnershipConfirmation ({
|
|
|
37
34
|
content.
|
|
38
35
|
</p>
|
|
39
36
|
|
|
40
|
-
{ctaElement ||
|
|
37
|
+
{ctaElement || (
|
|
41
38
|
<p className="ncf__paragraph ncf__center">
|
|
42
|
-
<a className="ncf__button ncf__button--submit" href="/myft">
|
|
43
|
-
|
|
39
|
+
<a className="ncf__button ncf__button--submit" href="/myft">
|
|
40
|
+
Go to myFT
|
|
41
|
+
</a>
|
|
42
|
+
</p>
|
|
43
|
+
)}
|
|
44
44
|
|
|
45
45
|
<p className="ncf__paragraph ncf__center">
|
|
46
46
|
<a {...readingLinkProps}>Start reading</a>
|
|
@@ -55,7 +55,6 @@ export function B2CPartnershipConfirmation ({
|
|
|
55
55
|
);
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
|
|
59
58
|
B2CPartnershipConfirmation.propTypes = {
|
|
60
59
|
ctaElement: PropTypes.node,
|
|
61
60
|
};
|
|
@@ -5,7 +5,7 @@ expect.extend(expectToRenderCorrectly);
|
|
|
5
5
|
|
|
6
6
|
describe('B2CPartnershipConfirmation', () => {
|
|
7
7
|
it('renders as default', () => {
|
|
8
|
-
const props = {ctaElement: 'hello'};
|
|
8
|
+
const props = { ctaElement: 'hello' };
|
|
9
9
|
|
|
10
10
|
expect(B2CPartnershipConfirmation).toRenderCorrectly(props);
|
|
11
11
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
|
|
4
|
-
export function B2cPartnershipPaymentTerm({
|
|
4
|
+
export function B2cPartnershipPaymentTerm ({
|
|
5
5
|
fieldId = 'paymentTermField',
|
|
6
6
|
inputName = 'paymentTerm',
|
|
7
7
|
options = [],
|
|
@@ -30,7 +30,10 @@ export function B2cPartnershipPaymentTerm({
|
|
|
30
30
|
{options.map(
|
|
31
31
|
(option) =>
|
|
32
32
|
option.selected && (
|
|
33
|
-
<div
|
|
33
|
+
<div
|
|
34
|
+
className="ncf__payment-term__item o-forms-input--radio-round"
|
|
35
|
+
key={option.value}
|
|
36
|
+
>
|
|
34
37
|
<input
|
|
35
38
|
type="radio"
|
|
36
39
|
id={option.value}
|
|
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
|
|
|
3
3
|
import classNames from 'classnames';
|
|
4
4
|
import { getCountries } from '../utils/countries';
|
|
5
5
|
|
|
6
|
-
export function BillingCountry({
|
|
6
|
+
export function BillingCountry ({
|
|
7
7
|
fieldId = 'billingCountryField',
|
|
8
8
|
filterList = [],
|
|
9
9
|
hasError = false,
|
|
@@ -87,7 +87,9 @@ describe('CompanyName', () => {
|
|
|
87
87
|
it('renders as required field', () => {
|
|
88
88
|
const component = mount(CompanyName({}));
|
|
89
89
|
|
|
90
|
-
expect(
|
|
90
|
+
expect(
|
|
91
|
+
component.find('#companyNameField').hasClass('o-forms-field--optional')
|
|
92
|
+
).toBe(false);
|
|
91
93
|
expect(component.find('input#companyName').prop('required')).toBe(true);
|
|
92
94
|
});
|
|
93
95
|
|
|
@@ -102,7 +104,9 @@ describe('CompanyName', () => {
|
|
|
102
104
|
|
|
103
105
|
const component = mount(CompanyName(props));
|
|
104
106
|
|
|
105
|
-
expect(
|
|
107
|
+
expect(
|
|
108
|
+
component.find('#companyNameField').hasClass('o-forms-field--optional')
|
|
109
|
+
).toBe(true);
|
|
106
110
|
expect(component.find('input#companyName').prop('required')).toBe(false);
|
|
107
111
|
});
|
|
108
112
|
|
|
@@ -111,6 +115,8 @@ describe('CompanyName', () => {
|
|
|
111
115
|
|
|
112
116
|
const component = mount(CompanyName(props));
|
|
113
117
|
|
|
114
|
-
expect(component.find('#companyNameField').hasClass('ncf__hidden')).toBe(
|
|
118
|
+
expect(component.find('#companyNameField').hasClass('ncf__hidden')).toBe(
|
|
119
|
+
true
|
|
120
|
+
);
|
|
115
121
|
});
|
|
116
122
|
});
|
package/components/country.jsx
CHANGED
|
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
|
|
|
3
3
|
import classNames from 'classnames';
|
|
4
4
|
import { getCountries } from '../utils/countries';
|
|
5
5
|
|
|
6
|
-
export function Country({
|
|
6
|
+
export function Country ({
|
|
7
7
|
fieldId = 'countryField',
|
|
8
8
|
filterList = [],
|
|
9
9
|
hasError = false,
|
|
@@ -52,7 +52,8 @@ export function Country({
|
|
|
52
52
|
const fieldErrorClassNames = classNames([
|
|
53
53
|
'o-forms-input__error',
|
|
54
54
|
{
|
|
55
|
-
'additional-field-information__with-field-error':
|
|
55
|
+
'additional-field-information__with-field-error':
|
|
56
|
+
additionalFieldInformation,
|
|
56
57
|
},
|
|
57
58
|
]);
|
|
58
59
|
|
|
@@ -6,7 +6,7 @@ const DEFAULT_HEADER_TEXT = 'Sorry, this is not available online';
|
|
|
6
6
|
const DEFAULT_MESSAGE_TEXT =
|
|
7
7
|
'Speak now to our Customer Care team to discuss your options';
|
|
8
8
|
|
|
9
|
-
export function CustomerCare({
|
|
9
|
+
export function CustomerCare ({
|
|
10
10
|
header = DEFAULT_HEADER_TEXT,
|
|
11
11
|
isCompact = false,
|
|
12
12
|
message = DEFAULT_MESSAGE_TEXT,
|
package/components/debug.jsx
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
|
|
4
|
-
export function Debug({ isTest = false, showHelpers = false, links = {} }) {
|
|
4
|
+
export function Debug ({ isTest = false, showHelpers = false, links = {} }) {
|
|
5
5
|
// Strings are used rather than JSX as this component is injected into HTML
|
|
6
6
|
// along with onclick handlers, styles and javascript. JSX will escape and
|
|
7
7
|
// modify the HTML which we do not want. Once our applications are on JSX
|