@financial-times/n-conversion-forms 20.3.0 → 20.3.4

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.
Files changed (112) hide show
  1. package/.circleci/config.yml +8 -6
  2. package/.circleci/shared-helpers/helper-npm-install-peer-deps +6 -5
  3. package/.eslintignore +3 -0
  4. package/.github/workflows/gh-pages-deploy.yml +2 -1
  5. package/build-state/npm-shrinkwrap.json +47805 -8576
  6. package/components/__snapshots__/accept-terms.spec.js.snap +94 -6
  7. package/components/__snapshots__/app-banner.spec.js.snap +2 -0
  8. package/components/__snapshots__/confirmation.spec.js.snap +11 -11
  9. package/components/__snapshots__/delivery-address.spec.js.snap +18 -1
  10. package/components/__snapshots__/delivery-postcode.spec.js.snap +24 -4
  11. package/components/__snapshots__/registration-confirmation.spec.js.snap +2 -2
  12. package/components/accept-terms.jsx +67 -9
  13. package/components/accept-terms.spec.js +12 -0
  14. package/components/app-banner.jsx +3 -1
  15. package/components/b2c-partnership-confirmation.jsx +7 -8
  16. package/components/b2c-partnership-confirmation.spec.js +1 -1
  17. package/components/b2c-partnership-payment-term.jsx +5 -2
  18. package/components/billing-country.jsx +1 -1
  19. package/components/billing-postcode.jsx +1 -1
  20. package/components/company-name.spec.js +9 -3
  21. package/components/confirmation.jsx +1 -1
  22. package/components/continue-reading.jsx +1 -1
  23. package/components/country.jsx +3 -2
  24. package/components/customer-care.jsx +1 -1
  25. package/components/debug.jsx +1 -1
  26. package/components/decision-maker.jsx +1 -1
  27. package/components/delivery-address-type.jsx +9 -9
  28. package/components/delivery-address-type.stories.js +10 -2
  29. package/components/delivery-address.jsx +115 -73
  30. package/components/delivery-address.spec.js +3 -1
  31. package/components/delivery-address.stories.js +1 -1
  32. package/components/delivery-city.jsx +2 -2
  33. package/components/delivery-county.jsx +1 -1
  34. package/components/delivery-instructions.jsx +48 -18
  35. package/components/delivery-instructions.spec.js +6 -2
  36. package/components/delivery-option.jsx +6 -2
  37. package/components/delivery-option.spec.js +4 -4
  38. package/components/delivery-option.stories.js +17 -5
  39. package/components/delivery-po-box.jsx +3 -5
  40. package/components/delivery-po-box.spec.js +3 -1
  41. package/components/delivery-po-box.stories.js +1 -1
  42. package/components/delivery-postcode.jsx +19 -3
  43. package/components/delivery-security-instructions.jsx +1 -2
  44. package/components/delivery-start-date.jsx +3 -1
  45. package/components/education-job-title.jsx +1 -1
  46. package/components/email.jsx +1 -1
  47. package/components/error-page.jsx +1 -1
  48. package/components/fieldset.jsx +1 -1
  49. package/components/first-name.jsx +1 -1
  50. package/components/form.jsx +1 -1
  51. package/components/google-sign-in.jsx +8 -4
  52. package/components/google-sign-in.stories.js +2 -1
  53. package/components/graduation-date.jsx +1 -1
  54. package/components/graduation-date.spec.js +1 -9
  55. package/components/industry.jsx +2 -2
  56. package/components/industry.spec.js +3 -1
  57. package/components/job-title.jsx +2 -2
  58. package/components/job-title.spec.js +3 -1
  59. package/components/last-name.jsx +1 -1
  60. package/components/licence-confirmation.jsx +7 -5
  61. package/components/licence-confirmation.stories.js +3 -1
  62. package/components/licence-header.jsx +2 -2
  63. package/components/licence-sign-in.jsx +2 -2
  64. package/components/licence-title.jsx +2 -2
  65. package/components/lite-sub-confirmation.jsx +92 -40
  66. package/components/lite-sub-confirmation.stories.js +3 -3
  67. package/components/loader.jsx +1 -1
  68. package/components/message.jsx +1 -1
  69. package/components/message.spec.jsx +1 -1
  70. package/components/organisation.jsx +1 -1
  71. package/components/package-change.jsx +13 -4
  72. package/components/password.jsx +1 -1
  73. package/components/payment-term.jsx +1 -1
  74. package/components/payment-type.jsx +7 -4
  75. package/components/personal-title.jsx +0 -1
  76. package/components/personal-title.spec.js +8 -6
  77. package/components/phone.jsx +2 -2
  78. package/components/phone.spec.js +3 -1
  79. package/components/position.jsx +2 -2
  80. package/components/position.spec.js +3 -1
  81. package/components/progress-indicator.jsx +4 -4
  82. package/components/registration-confirmation.jsx +1 -1
  83. package/components/responsibility.jsx +3 -5
  84. package/components/responsibility.spec.js +3 -1
  85. package/components/section.jsx +1 -1
  86. package/components/state.jsx +1 -1
  87. package/components/submit.jsx +1 -1
  88. package/components/trial-banner.jsx +1 -1
  89. package/dist/accept-terms.js +40 -5
  90. package/dist/app-banner.js +4 -2
  91. package/dist/confirmation.js +1 -1
  92. package/dist/delivery-address.js +15 -5
  93. package/dist/delivery-postcode.js +14 -2
  94. package/dist/delivery-security-instructions.js +0 -1
  95. package/dist/graduation-date.js +1 -1
  96. package/dist/index.js +42 -42
  97. package/dist/lite-sub-confirmation.js +7 -7
  98. package/dist/package-change.js +1 -1
  99. package/dist/payment-type.js +1 -1
  100. package/dist/registration-confirmation.js +1 -1
  101. package/jest.config.js +6 -1
  102. package/package.json +24 -13
  103. package/utils/billing-country.js +2 -3
  104. package/utils/company-name.spec.js +11 -3
  105. package/utils/delivery-address-type.js +4 -1
  106. package/utils/delivery-address-type.spec.js +11 -3
  107. package/utils/delivery-option-messages.js +61 -32
  108. package/utils/delivery-option-messages.spec.js +42 -12
  109. package/utils/delivery-option.js +14 -7
  110. package/utils/delivery-option.spec.js +7 -3
  111. package/utils/delivery-start-date.js +5 -3
  112. 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 &amp; Conditions
53
+ </a>
54
+ .
55
+ </span>
56
+ <p class="o-forms-input__error">
57
+ Please accept our terms &amp; 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 &amp; conditions.
83
+ </span>
84
+ <p class="o-forms-input__error">
85
+ Please accept our terms &amp; 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. Cancellation notice would take effect at the end of the subscription period and previously paid amounts are non-refundable.
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. Cancellation notice would take effect at the end of the subscription period and previously paid amounts are non-refundable.
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. Cancellation notice would take effect at the end of the subscription period and previously paid amounts are non-refundable.
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. Cancellation notice would take effect at the end of the subscription period and previously paid amounts are non-refundable.
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. Cancellation notice would take effect at the end of the subscription period and previously paid amounts are non-refundable.
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. Cancellation notice would take effect at the end of the subscription period and previously paid amounts are non-refundable.
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&amp;ct=onsite-app-promotion&amp;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&amp;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
@@ -57,6 +57,8 @@ exports[`DeliveryAddress renders default props 1`] = `
57
57
  <span class="o-forms-title__main">
58
58
  Address line 3
59
59
  </span>
60
+ <span class="o-forms-title__prompt">
61
+ </span>
60
62
  </span>
61
63
  <span class="o-forms-input o-forms-input--text">
62
64
  <input type="text"
@@ -130,6 +132,8 @@ exports[`DeliveryAddress renders with an error 1`] = `
130
132
  <span class="o-forms-title__main">
131
133
  Address line 3
132
134
  </span>
135
+ <span class="o-forms-title__prompt">
136
+ </span>
133
137
  </span>
134
138
  <span class="o-forms-input o-forms-input--text o-forms-input--invalid">
135
139
  <input type="text"
@@ -183,6 +187,9 @@ exports[`DeliveryAddress renders with country different than default 1`] = `
183
187
  <span class="o-forms-title__main">
184
188
  Apt/Floor/Suite
185
189
  </span>
190
+ <span class="o-forms-title__prompt">
191
+ Max. 6 characters. Please enter “Apartment 2C” as “Apt 2C”, “Floor 10 as FL 10”
192
+ </span>
186
193
  </span>
187
194
  <span class="o-forms-input o-forms-input--text">
188
195
  <input type="text"
@@ -190,7 +197,7 @@ exports[`DeliveryAddress renders with country different than default 1`] = `
190
197
  name="deliveryAddressLine3"
191
198
  data-trackable="field-deliveryAddressLine3"
192
199
  autocomplete="address-line3"
193
- placeholder="e.g. Apt. 1"
200
+ placeholder="e.g Apt 2C / FL 10 / STE 5"
194
201
  maxlength="50"
195
202
  value
196
203
  >
@@ -276,6 +283,8 @@ exports[`DeliveryAddress renders with custom line 1 value 1`] = `
276
283
  <span class="o-forms-title__main">
277
284
  Address line 3
278
285
  </span>
286
+ <span class="o-forms-title__prompt">
287
+ </span>
279
288
  </span>
280
289
  <span class="o-forms-input o-forms-input--text">
281
290
  <input type="text"
@@ -349,6 +358,8 @@ exports[`DeliveryAddress renders with custom line 2 value 1`] = `
349
358
  <span class="o-forms-title__main">
350
359
  Address line 3
351
360
  </span>
361
+ <span class="o-forms-title__prompt">
362
+ </span>
352
363
  </span>
353
364
  <span class="o-forms-input o-forms-input--text">
354
365
  <input type="text"
@@ -422,6 +433,8 @@ exports[`DeliveryAddress renders with custom line 3 value 1`] = `
422
433
  <span class="o-forms-title__main">
423
434
  Address line 3
424
435
  </span>
436
+ <span class="o-forms-title__prompt">
437
+ </span>
425
438
  </span>
426
439
  <span class="o-forms-input o-forms-input--text">
427
440
  <input type="text"
@@ -497,6 +510,8 @@ exports[`DeliveryAddress renders with disabled input elements 1`] = `
497
510
  <span class="o-forms-title__main">
498
511
  Address line 3
499
512
  </span>
513
+ <span class="o-forms-title__prompt">
514
+ </span>
500
515
  </span>
501
516
  <span class="o-forms-input o-forms-input--text">
502
517
  <input type="text"
@@ -571,6 +586,8 @@ exports[`DeliveryAddress renders with hidden input elements 1`] = `
571
586
  <span class="o-forms-title__main">
572
587
  Address line 3
573
588
  </span>
589
+ <span class="o-forms-title__prompt">
590
+ </span>
574
591
  </span>
575
592
  <span class="o-forms-input o-forms-input--text">
576
593
  <input type="text"
@@ -12,6 +12,8 @@ exports[`Delivery Postcode renders a disable input 1`] = `
12
12
  Postcode
13
13
  </span>
14
14
  </span>
15
+ <span class="o-forms-title__prompt">
16
+ </span>
15
17
  </span>
16
18
  <span class="o-forms-input o-forms-input--text">
17
19
  <input type="text"
@@ -49,6 +51,8 @@ exports[`Delivery Postcode renders a postcode input with a label set as Postcode
49
51
  Postcode
50
52
  </span>
51
53
  </span>
54
+ <span class="o-forms-title__prompt">
55
+ </span>
52
56
  </span>
53
57
  <span class="o-forms-input o-forms-input--text">
54
58
  <input type="text"
@@ -85,12 +89,15 @@ exports[`Delivery Postcode renders a postcode input with a label set as Zip Code
85
89
  Zip Code
86
90
  </span>
87
91
  </span>
92
+ <span class="o-forms-title__prompt">
93
+ Please enter your 5 digit Zip Code
94
+ </span>
88
95
  </span>
89
96
  <span class="o-forms-input o-forms-input--text">
90
97
  <input type="text"
91
98
  id="deliveryPostcode"
92
99
  name="deliveryPostcode"
93
- placeholder="Enter your Zip Code"
100
+ placeholder="e.g. 60411"
94
101
  autocomplete="postal-code"
95
102
  data-trackable="delivery-postcode"
96
103
  aria-required="true"
@@ -121,12 +128,15 @@ exports[`Delivery Postcode renders a postcode input with a label set as Zip Code
121
128
  Zip Code
122
129
  </span>
123
130
  </span>
131
+ <span class="o-forms-title__prompt">
132
+ Please enter your 5 digit Zip Code
133
+ </span>
124
134
  </span>
125
135
  <span class="o-forms-input o-forms-input--text">
126
136
  <input type="text"
127
137
  id="deliveryPostcode"
128
138
  name="deliveryPostcode"
129
- placeholder="Enter your Zip Code"
139
+ placeholder="e.g. 60411"
130
140
  autocomplete="postal-code"
131
141
  data-trackable="delivery-postcode"
132
142
  aria-required="true"
@@ -157,12 +167,15 @@ exports[`Delivery Postcode renders a postcode input with a label set as postal c
157
167
  Postal Code
158
168
  </span>
159
169
  </span>
170
+ <span class="o-forms-title__prompt">
171
+ Please enter your 6 digit postal code
172
+ </span>
160
173
  </span>
161
174
  <span class="o-forms-input o-forms-input--text">
162
175
  <input type="text"
163
176
  id="deliveryPostcode"
164
177
  name="deliveryPostcode"
165
- placeholder="Enter your Postal Code"
178
+ placeholder="e.g. M4W 2C6"
166
179
  autocomplete="postal-code"
167
180
  data-trackable="delivery-postcode"
168
181
  aria-required="true"
@@ -193,6 +206,8 @@ exports[`Delivery Postcode renders a postcode input with default label 1`] = `
193
206
  Postcode
194
207
  </span>
195
208
  </span>
209
+ <span class="o-forms-title__prompt">
210
+ </span>
196
211
  </span>
197
212
  <span class="o-forms-input o-forms-input--text">
198
213
  <input type="text"
@@ -229,6 +244,8 @@ exports[`Delivery Postcode renders different styles 1`] = `
229
244
  Postcode
230
245
  </span>
231
246
  </span>
247
+ <span class="o-forms-title__prompt">
248
+ </span>
232
249
  </span>
233
250
  <span class="o-forms-input o-forms-input--text o-forms-input--invalid">
234
251
  <input type="text"
@@ -265,12 +282,15 @@ exports[`Delivery Postcode renders with link to change the value 1`] = `
265
282
  Zip Code
266
283
  </span>
267
284
  </span>
285
+ <span class="o-forms-title__prompt">
286
+ Please enter your 5 digit Zip Code
287
+ </span>
268
288
  </span>
269
289
  <span class="o-forms-input o-forms-input--text">
270
290
  <input type="text"
271
291
  id="deliveryPostcode"
272
292
  name="deliveryPostcode"
273
- placeholder="Enter your Zip Code"
293
+ placeholder="e.g. 60411"
274
294
  autocomplete="postal-code"
275
295
  data-trackable="delivery-postcode"
276
296
  aria-required="true"
@@ -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&nbsp;
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 &amp; Conditions
89
+ </a>
90
+ .
91
+ </span>
92
+ <p className="o-forms-input__error">
93
+ Please accept our terms &amp; 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
- Cancellation notice would take effect at the end of the subscription
159
- period and previously paid amounts are non-refundable.
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
- Cancellation notice would take effect at the end of the
239
- subscription period and previously paid amounts are
240
- non-refundable.
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">Go to myFT</a>
43
- </p>}
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
  });