@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.
Files changed (118) hide show
  1. package/.circleci/config.yml +8 -6
  2. package/.circleci/shared-helpers/helper-npm-install-peer-deps +6 -6
  3. package/.eslintignore +3 -0
  4. package/.github/workflows/gh-pages-deploy.yml +2 -1
  5. package/build-state/npm-shrinkwrap.json +47829 -8580
  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 +2 -2
  10. package/components/__snapshots__/graduation-date.spec.js.snap +3 -3
  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 +108 -77
  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 +6 -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 +42 -7
  90. package/dist/app-banner.js +4 -2
  91. package/dist/confirmation.js +3 -3
  92. package/dist/continue-reading.js +2 -2
  93. package/dist/decision-maker.js +2 -2
  94. package/dist/delivery-address.js +7 -7
  95. package/dist/delivery-instructions.js +2 -2
  96. package/dist/delivery-security-instructions.js +2 -3
  97. package/dist/delivery-start-date.js +2 -2
  98. package/dist/fieldset.js +2 -2
  99. package/dist/licence-confirmation.js +2 -2
  100. package/dist/lite-sub-confirmation.js +7 -7
  101. package/dist/loader.js +2 -2
  102. package/dist/message.spec.js +2 -2
  103. package/dist/package-change.js +1 -1
  104. package/dist/payment-term.js +2 -2
  105. package/dist/payment-type.js +3 -3
  106. package/dist/registration-confirmation.js +1 -1
  107. package/jest.config.js +6 -1
  108. package/package.json +23 -12
  109. package/utils/billing-country.js +2 -3
  110. package/utils/company-name.spec.js +11 -3
  111. package/utils/delivery-address-type.js +4 -1
  112. package/utils/delivery-address-type.spec.js +11 -3
  113. package/utils/delivery-option-messages.js +61 -32
  114. package/utils/delivery-option-messages.spec.js +42 -12
  115. package/utils/delivery-option.js +14 -7
  116. package/utils/delivery-option.spec.js +7 -3
  117. package/utils/delivery-start-date.js +5 -3
  118. package/utils/zuora.js +6 -1
@@ -42,7 +42,9 @@ export function DeliveryStartDate ({
42
42
  htmlFor={inputProps.id}
43
43
  >
44
44
  <span className="o-forms-title">
45
- <span className="o-forms-title__main" id="start-date-picker-title-span">Delivery start date</span>
45
+ <span className="o-forms-title__main" id="start-date-picker-title-span">
46
+ Delivery start date
47
+ </span>
46
48
  <span className="o-forms-title__prompt">
47
49
  Earliest available delivery date: {date}
48
50
  </span>
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import classNames from 'classnames';
4
4
 
5
- export function EducationJobTitle({
5
+ export function EducationJobTitle ({
6
6
  value = '',
7
7
  isDisabled = false,
8
8
  hasError = false,
@@ -79,5 +79,5 @@ Email.propTypes = {
79
79
  value: PropTypes.string,
80
80
  isEducationalLicence: PropTypes.bool,
81
81
  isB2cPartnershipLicence: PropTypes.bool,
82
- showTitle: PropTypes.bool
82
+ showTitle: PropTypes.bool,
83
83
  };
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
 
4
- export function ErrorPage({
4
+ export function ErrorPage ({
5
5
  children,
6
6
  header = 'Sorry, something went wrong',
7
7
  message = 'Speak to our Customer Care team now so we can help.',
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import classNames from 'classnames';
4
4
 
5
- export function Fieldset({
5
+ export function Fieldset ({
6
6
  children = null,
7
7
  name = null,
8
8
  legend = null,
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import classNames from 'classnames';
4
4
 
5
- export function FirstName({
5
+ export function FirstName ({
6
6
  dataTrackable = 'field-name',
7
7
  errorText = 'Please enter your first name',
8
8
  fieldId = 'firstNameField',
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
 
4
- export function Form({ children, action = '', method = 'POST' }) {
4
+ export function Form ({ children, action = '', method = 'POST' }) {
5
5
  return (
6
6
  <div className="ncf__wrapper">
7
7
  <form className="ncf" action={action} method={method} noValidate>
@@ -1,13 +1,17 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
 
4
- export function GoogleSignIn({ signInRedirectUrl }) {
5
-
4
+ export function GoogleSignIn ({ signInRedirectUrl }) {
6
5
  return (
7
6
  <>
8
- <link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet"></link>
7
+ <link
8
+ href="https://fonts.googleapis.com/css?family=Roboto"
9
+ rel="stylesheet"
10
+ ></link>
9
11
  <base target="_parent" />
10
- <a className="google_button" href={signInRedirectUrl}>Sign in with Google</a>
12
+ <a className="google_button" href={signInRedirectUrl}>
13
+ Sign in with Google
14
+ </a>
11
15
  </>
12
16
  );
13
17
  }
@@ -8,5 +8,6 @@ export default {
8
8
 
9
9
  export const Basic = (args) => <GoogleSignIn {...args} />;
10
10
  Basic.args = {
11
- signInRedirectUrl: 'https://social-login-svc-eu-test.memb.ft.com/login/google',
11
+ signInRedirectUrl:
12
+ 'https://social-login-svc-eu-test.memb.ft.com/login/google',
12
13
  };
@@ -40,7 +40,7 @@ export const Compliance = () => (
40
40
  </div>
41
41
  );
42
42
 
43
- export function GraduationDate({
43
+ export function GraduationDate ({
44
44
  value,
45
45
  isDisabled = false,
46
46
  isRequired = false,
@@ -76,15 +76,7 @@ describe('GraduationDate', () => {
76
76
  .map((node) => node.prop('value'));
77
77
 
78
78
  expect(values).toEqual([
79
- 2016,
80
- 2017,
81
- 2018,
82
- 2019,
83
- 2020,
84
- 2021,
85
- 2022,
86
- 2023,
87
- 2024,
79
+ 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024,
88
80
  ]);
89
81
 
90
82
  jest.restoreAllMocks();
@@ -4,7 +4,7 @@ import classNames from 'classnames';
4
4
  import { demographics } from 'n-common-static-data';
5
5
  const defaultOptions = demographics.industries.industries;
6
6
 
7
- export function Industry({
7
+ export function Industry ({
8
8
  value,
9
9
  isDisabled = false,
10
10
  hasError = false,
@@ -23,7 +23,7 @@ export function Industry({
23
23
 
24
24
  const fieldTitleClassName = classNames([
25
25
  'o-forms-title',
26
- { 'o-forms-field--optional': !isRequired }
26
+ { 'o-forms-field--optional': !isRequired },
27
27
  ]);
28
28
 
29
29
  return (
@@ -88,6 +88,8 @@ describe('Industry', () => {
88
88
  const props = { isRequired: false };
89
89
  const component = mount(Industry(props));
90
90
 
91
- expect(component.find('.o-forms-title.o-forms-field--optional').length).toEqual(1);
91
+ expect(
92
+ component.find('.o-forms-title.o-forms-field--optional').length
93
+ ).toEqual(1);
92
94
  });
93
95
  });
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import classNames from 'classnames';
4
4
 
5
- export function JobTitle({
5
+ export function JobTitle ({
6
6
  value = '',
7
7
  isDisabled = false,
8
8
  hasError = false,
@@ -19,7 +19,7 @@ export function JobTitle({
19
19
 
20
20
  const fieldTitleClassName = classNames([
21
21
  'o-forms-title',
22
- { 'o-forms-field--optional': !isRequired }
22
+ { 'o-forms-field--optional': !isRequired },
23
23
  ]);
24
24
 
25
25
  return (
@@ -63,6 +63,8 @@ describe('JobTitle', () => {
63
63
  const props = { isRequired: false };
64
64
  const component = mount(JobTitle(props));
65
65
 
66
- expect(component.find('.o-forms-title.o-forms-field--optional').length).toEqual(1);
66
+ expect(
67
+ component.find('.o-forms-title.o-forms-field--optional').length
68
+ ).toEqual(1);
67
69
  });
68
70
  });
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import classNames from 'classnames';
4
4
 
5
- export function LastName({
5
+ export function LastName ({
6
6
  dataTrackable = 'field-lastname',
7
7
  errorText = 'Please enter your last name',
8
8
  fieldId = 'lastNameField',
@@ -7,9 +7,8 @@ export function LicenceConfirmation ({
7
7
  duration = null,
8
8
  isEducationalLicence = false,
9
9
  contentId = '',
10
- ctaElement=null,
10
+ ctaElement = null,
11
11
  }) {
12
-
13
12
  const readingLinkProps = {
14
13
  href: contentId === '' ? '/' : `/content/${contentId}`,
15
14
  className: 'ncf__link',
@@ -44,10 +43,13 @@ export function LicenceConfirmation ({
44
43
  content.
45
44
  </p>
46
45
 
47
- {ctaElement ||
46
+ {ctaElement || (
48
47
  <p className="ncf__paragraph ncf__center">
49
- <a className="ncf__button ncf__button--submit" href="/myft">Go to myFT</a>
50
- </p>}
48
+ <a className="ncf__button ncf__button--submit" href="/myft">
49
+ Go to myFT
50
+ </a>
51
+ </p>
52
+ )}
51
53
 
52
54
  <p className="ncf__paragraph ncf__center">
53
55
  <a {...readingLinkProps}>Start reading</a>
@@ -8,7 +8,9 @@ export default {
8
8
 
9
9
  const goToMyFtElement = (
10
10
  <p className="ncf__paragraph ncf__center">
11
- <a className="ncf__button ncf__button--submit" href="/myft">Go to myFT</a>
11
+ <a className="ncf__button ncf__button--submit" href="/myft">
12
+ Go to myFT
13
+ </a>
12
14
  </p>
13
15
  );
14
16
 
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
3
3
  import { LicenceSignIn } from './licence-sign-in';
4
4
  import { LicenceTitle } from './licence-title';
5
5
 
6
- export function LicenceHeader(props) {
6
+ export function LicenceHeader (props) {
7
7
  const {
8
8
  displayName = '',
9
9
  isTrial = false,
@@ -11,7 +11,7 @@ export function LicenceHeader(props) {
11
11
  welcomeText = '',
12
12
  url = '',
13
13
  } = props;
14
- function createMarkup(text) {
14
+ function createMarkup (text) {
15
15
  return { __html: text };
16
16
  }
17
17
 
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
 
4
- export function LicenceSignIn({ displayName = '', url = '' }) {
4
+ export function LicenceSignIn ({ displayName = '', url = '' }) {
5
5
  return (
6
6
  <div className="ncf__center">
7
7
  {renderSignInTitle(displayName)}
@@ -19,7 +19,7 @@ export function LicenceSignIn({ displayName = '', url = '' }) {
19
19
  );
20
20
  }
21
21
 
22
- function renderSignInTitle(displayName) {
22
+ function renderSignInTitle (displayName) {
23
23
  let signInTitle;
24
24
 
25
25
  if (displayName !== '') {
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
 
4
- export function LicenceTitle({
4
+ export function LicenceTitle ({
5
5
  displayName = '',
6
6
  isTrial = false,
7
7
  isB2cPartnershipLicence = false,
@@ -21,7 +21,7 @@ export function LicenceTitle({
21
21
  }
22
22
  }
23
23
 
24
- function renderB2BTitle(displayName) {
24
+ function renderB2BTitle (displayName) {
25
25
  if (!displayName) {
26
26
  return (
27
27
  <h1 className="ncf__header ncf__center">Join your FT.com subscription</h1>
@@ -6,18 +6,14 @@ const PREMIUM_OFFER = 'P2';
6
6
 
7
7
  const isPremium = (productCode) => productCode === PREMIUM_OFFER;
8
8
 
9
- const DetailsMobileView = ({details}) => (
9
+ const DetailsMobileView = ({ details }) => (
10
10
  <dl className="ncf__list ncf__lite-sub__details ncf__lite-sub-confirmation--hidden-md ncf__lite-sub-confirmation--hidden-lg">
11
- {
12
- details.map((detail, index) =>
13
- (
14
- <React.Fragment key={index}>
15
- <dt className="ncf__list-title">{detail.title}</dt>
16
- <dd className="ncf__list-data">{detail.data}</dd>
17
- </React.Fragment>
18
- )
19
- )
20
- }
11
+ {details.map((detail, index) => (
12
+ <React.Fragment key={index}>
13
+ <dt className="ncf__list-title">{detail.title}</dt>
14
+ <dd className="ncf__list-data">{detail.data}</dd>
15
+ </React.Fragment>
16
+ ))}
21
17
  </dl>
22
18
  );
23
19
 
@@ -27,59 +23,113 @@ export function LiteSubConfirmation ({
27
23
  subscriptionAmount = '',
28
24
  email = EMAIL_DEFAULT_TEXT,
29
25
  details = [],
30
-
31
26
  }) {
32
27
  const detailElements = details && (
33
28
  <React.Fragment>
34
29
  <h2 className="ncf__header2--afterline">Your billing details</h2>
35
30
  <dl className="ncf__list ncf__lite-sub-confirmation--hidden-sm">
36
- {
37
- details.map((detail, index) =>
38
- (
39
- <React.Fragment key={index}>
40
- <dt className="ncf__list-title">{detail.title}</dt>
41
- <dd className="ncf__list-data">{detail.data}</dd>
42
- </React.Fragment>
43
- )
44
- )
45
- }
31
+ {details.map((detail, index) => (
32
+ <React.Fragment key={index}>
33
+ <dt className="ncf__list-title">{detail.title}</dt>
34
+ <dd className="ncf__list-data">{detail.data}</dd>
35
+ </React.Fragment>
36
+ ))}
46
37
  </dl>
47
- <DetailsMobileView details={details}/>
38
+ <DetailsMobileView details={details} />
48
39
  </React.Fragment>
49
40
  );
50
41
 
51
-
52
42
  return (
53
43
  <div className="ncf ncf__wrapper">
54
44
  <div className="ncf__center">
55
45
  <div className="ncf__icon ncf__icon--tick ncf__icon--large"></div>
56
- <p className="ncf__paragraph--reduced-padding ncf__paragraph--subscription-confirmation">You&apos;ve been upgraded to:</p>
57
- <h1 className="ncf__header ncf__header--confirmation">{isPremium(productCode) ? 'Premium Digital' : 'Standard Digital'}</h1>
46
+ <p className="ncf__paragraph--reduced-padding ncf__paragraph--subscription-confirmation">
47
+ You&apos;ve been upgraded to:
48
+ </p>
49
+ <h1 className="ncf__header ncf__header--confirmation">
50
+ {isPremium(productCode) ? 'Premium Digital' : 'Standard Digital'}
51
+ </h1>
58
52
  </div>
59
- <p className="ncf__paragraph">Thank you for choosing to subscribe to <strong>{offerName}</strong>. We are not quite ready to deliver this type of subscription, so we have upgraded you to a {isPremium(productCode) ? 'Premium' : 'Digital'} 3 month subscription at no additional cost.</p>
60
- <p className="ncf__paragraph">For {subscriptionAmount} a month, here&apos;s what your subscription covers:</p>
53
+ <p className="ncf__paragraph">
54
+ Thank you for choosing to subscribe to <strong>{offerName}</strong>. We
55
+ are not quite ready to deliver this type of subscription, so we have
56
+ upgraded you to a {isPremium(productCode) ? 'Premium' : 'Digital'} 3
57
+ month subscription at no additional cost.
58
+ </p>
59
+ <p className="ncf__paragraph">
60
+ For {subscriptionAmount} a month, here&apos;s what your subscription
61
+ covers:
62
+ </p>
61
63
  <ul className="ncf__unordered-list">
62
- <li>Access to stories from over 600 journalists in 50+ countries covering markets, politics, business, tech and more</li>
63
- <li>FirstFT: a daily newsletter with the global stories you need to know</li>
64
+ <li>
65
+ Access to stories from over 600 journalists in 50+ countries covering
66
+ markets, politics, business, tech and more
67
+ </li>
68
+ <li>
69
+ FirstFT: a daily newsletter with the global stories you need to know
70
+ </li>
64
71
  <li>Share 10 articles per month with colleagues, family and friends</li>
65
72
  </ul>
66
- <p className="ncf__paragraph">However, if you would like to cancel your subscription, please contact our <a className="ncf__link ncf__link--external" href="https://help.ft.com/contact/" target="_blank" rel="noopener noreferrer">customer care team</a> and they will arrange this for you.</p>
73
+ <p className="ncf__paragraph">
74
+ However, if you would like to cancel your subscription, please contact
75
+ our{' '}
76
+ <a
77
+ className="ncf__link ncf__link--external"
78
+ href="https://help.ft.com/contact/"
79
+ target="_blank"
80
+ rel="noopener noreferrer"
81
+ >
82
+ customer care team
83
+ </a>{' '}
84
+ and they will arrange this for you.
85
+ </p>
67
86
  <p className="ncf__center">
68
- <a href="/" className="ncf__button ncf__button--submit ncf__button--margin ncf__lite-sub-confirmation--lite-sub-cta">Go to FT.com</a>
87
+ <a
88
+ href="/"
89
+ className="ncf__button ncf__button--submit ncf__button--margin ncf__lite-sub-confirmation--lite-sub-cta"
90
+ >
91
+ Go to FT.com
92
+ </a>
69
93
  </p>
70
94
  <p className="ncf__paragraph">
71
- We&apos;ve sent confirmation to {email}. Make sure you check your spam folder if you don’t receive it.
95
+ We&apos;ve sent confirmation to {email}. Make sure you check your spam
96
+ folder if you don’t receive it.
72
97
  </p>
73
98
  <p className="ncf__paragraph">
74
- Here&apos;s a summary of your {isPremium(productCode) ? 'Premium Digital' : 'Standard Digital'} subscription:
99
+ Here&apos;s a summary of your{' '}
100
+ {isPremium(productCode) ? 'Premium Digital' : 'Standard Digital'}{' '}
101
+ subscription:
75
102
  </p>
76
103
 
77
- { detailElements}
104
+ {detailElements}
78
105
 
79
106
  <div className="ncf__headed-paragraph">
80
107
  <h3 className="ncf__header">Something not right?</h3>
81
108
  <p className="ncf__paragraph">
82
- Go to your <a className="ncf__link ncf__link--external" href="https://www.ft.com/myaccount/personal-details" target="_blank" rel="noopener noreferrer" data-trackable="yourAccount">account settings</a> to view or edit your account. If you need to get in touch call us on <a href="tel:+18556852372" className="ncf__link ncf__link--external">+1 855 685 2372</a>. Or <a className="ncf__link ncf__link--external" href="https://help.ft.com/contact/" target="_blank" rel="noopener noreferrer">contact us</a> for additional support.
109
+ Go to your{' '}
110
+ <a
111
+ className="ncf__link ncf__link--external"
112
+ href="https://www.ft.com/myaccount/personal-details"
113
+ target="_blank"
114
+ rel="noopener noreferrer"
115
+ data-trackable="yourAccount"
116
+ >
117
+ account settings
118
+ </a>{' '}
119
+ to view or edit your account. If you need to get in touch call us on{' '}
120
+ <a href="tel:+18556852372" className="ncf__link ncf__link--external">
121
+ +1 855 685 2372
122
+ </a>
123
+ . Or{' '}
124
+ <a
125
+ className="ncf__link ncf__link--external"
126
+ href="https://help.ft.com/contact/"
127
+ target="_blank"
128
+ rel="noopener noreferrer"
129
+ >
130
+ contact us
131
+ </a>{' '}
132
+ for additional support.
83
133
  </p>
84
134
  </div>
85
135
  </div>
@@ -91,8 +141,10 @@ LiteSubConfirmation.propTypes = {
91
141
  subscriptionAmount: PropTypes.string.isRequired,
92
142
  productCode: PropTypes.string,
93
143
  email: PropTypes.string,
94
- details: PropTypes.arrayOf(PropTypes.shape({
95
- title: PropTypes.string.isRequired,
96
- data: PropTypes.string.isRequired,
97
- })),
144
+ details: PropTypes.arrayOf(
145
+ PropTypes.shape({
146
+ title: PropTypes.string.isRequired,
147
+ data: PropTypes.string.isRequired,
148
+ })
149
+ ),
98
150
  };
@@ -6,8 +6,8 @@ export default {
6
6
  component: LiteSubConfirmation,
7
7
  argTypes: {
8
8
  details: { control: 'array' },
9
- offerType: { control: 'string'},
10
- offerName: { control: 'string'},
9
+ offerType: { control: 'string' },
10
+ offerName: { control: 'string' },
11
11
  },
12
12
  };
13
13
 
@@ -26,7 +26,7 @@ Basic.args = {
26
26
  {
27
27
  title: 'Payment method',
28
28
  data: 'Credit / Debit Card',
29
- }
29
+ },
30
30
  ],
31
31
  offerName: 'Standard',
32
32
  subscriptionAmount: '$5',
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import classNames from 'classnames';
4
4
 
5
- export function Loader({ children, showLoader, title, inElement }) {
5
+ export function Loader ({ children, showLoader, title, inElement }) {
6
6
  const label = title ? (
7
7
  <div className="ncf__loader__content__title" id="loader-aria-label">
8
8
  {title}
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import classNames from 'classnames';
4
4
 
5
- export function Message({
5
+ export function Message ({
6
6
  title,
7
7
  message,
8
8
  additional = [],
@@ -50,7 +50,7 @@ describe('Message', () => {
50
50
  const props = {
51
51
  title: 'Reggatta de Blanc',
52
52
  message: 'My message in a bottle',
53
- actions: [{...ACTION_MOCK, isSecondary: true}],
53
+ actions: [{ ...ACTION_MOCK, isSecondary: true }],
54
54
  };
55
55
 
56
56
  expect(Message).toRenderCorrectly(props);
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import classNames from 'classnames';
4
4
 
5
- export function Organisation({
5
+ export function Organisation ({
6
6
  dataTrackable = 'organization',
7
7
  errorText = 'Please enter your organisation',
8
8
  fieldId = 'organisationField',
@@ -1,16 +1,25 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
 
4
- export function PackageChange({ changePackageUrl, currentPackage, packageDescription }) {
4
+ export function PackageChange ({
5
+ changePackageUrl,
6
+ currentPackage,
7
+ packageDescription,
8
+ }) {
5
9
  return (
6
10
  <div className="ncf__package-change">
7
11
  <div className="ncf__package-change__package">
8
12
  <div className="ncf__package-change__content">
9
13
  <p>
10
- You have chosen <span className="ncf__strong">{currentPackage}</span>
14
+ You have chosen{' '}
15
+ <span className="ncf__strong">{currentPackage}</span>
11
16
  </p>
12
- {packageDescription && <p className="ncf__package-change__content__description">{packageDescription}</p>}
13
- </div>
17
+ {packageDescription && (
18
+ <p className="ncf__package-change__content__description">
19
+ {packageDescription}
20
+ </p>
21
+ )}
22
+ </div>
14
23
  <div className="ncf__package-change__actions">
15
24
  <a
16
25
  href={changePackageUrl}
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import classNames from 'classnames';
4
4
 
5
- export function Password({
5
+ export function Password ({
6
6
  unknownUser = false,
7
7
  hasError = false,
8
8
  pattern = null,
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import classNames from 'classnames';
4
- export function PaymentTerm({
4
+ export function PaymentTerm ({
5
5
  fieldId = 'paymentTermField',
6
6
  inputName = 'paymentTerm',
7
7
  isPrintOrBundle = false,
@@ -13,7 +13,7 @@ const PaypalCustomerCareMessage = () => {
13
13
  <div className="o-message__container">
14
14
  <div className="o-message__content">
15
15
  <p className="o-message__content-main">
16
- If you'd like to change your payment method to Paypal please{' '}
16
+ If you{'\''}d like to change your payment method to Paypal please{' '}
17
17
  <a
18
18
  className="o-message__actions__secondary"
19
19
  href="https://help.ft.com"
@@ -29,7 +29,7 @@ const PaypalCustomerCareMessage = () => {
29
29
  );
30
30
  };
31
31
 
32
- export function PaymentType({
32
+ export function PaymentType ({
33
33
  enableApplepay = false,
34
34
  enableCreditcard = false,
35
35
  enableDirectdebit = false,
@@ -250,8 +250,11 @@ export function PaymentType({
250
250
 
251
251
  {isSingleTerm && (
252
252
  <>
253
- <label className='o-forms-input o-forms-input--checkbox o-forms-input--suffix ncf__payment-type-pay-faster-next-time-checkbox' htmlFor="payFasterNextTime">
254
- <input {...inputCheckProps}/>
253
+ <label
254
+ className="o-forms-input o-forms-input--checkbox o-forms-input--suffix ncf__payment-type-pay-faster-next-time-checkbox"
255
+ htmlFor="payFasterNextTime"
256
+ >
257
+ <input {...inputCheckProps} />
255
258
  <span className="o-forms-input__label">
256
259
  Use these details to pay faster next time
257
260
  </span>
@@ -83,4 +83,3 @@ PersonalTitle.propTypes = {
83
83
  fieldLabel: PropTypes.string,
84
84
  isRequired: PropTypes.bool,
85
85
  };
86
-