@financial-times/n-conversion-forms 28.9.0 → 29.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,215 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import classNames from 'classnames';
4
+
5
+ export function AcceptTermsSubscription({
6
+ hasError = false,
7
+ isSignup = false,
8
+ isEmbedded = false,
9
+ isTrial = false,
10
+ isPrintProduct = false,
11
+ isSingleTerm = false,
12
+ isTransition = false,
13
+ transitionType = null,
14
+ isDeferredBilling = false,
15
+ }) {
16
+ const divProps = {
17
+ id: 'acceptTermsField',
18
+ className: 'o-forms-field o-layout-typography ncf__validation-error',
19
+ 'data-validate': 'required,checked',
20
+ ...(isSignup && { 'data-trackable': 'sign-up-terms' }),
21
+ };
22
+ const labelClassName = classNames([
23
+ 'o-forms-input',
24
+ 'o-forms-input--checkbox',
25
+ {
26
+ 'o-forms-input--invalid': hasError,
27
+ },
28
+ ]);
29
+
30
+ const inputProps = {
31
+ id: 'termsAcceptance',
32
+ type: 'checkbox',
33
+ name: 'termsAcceptance',
34
+ value: 'true',
35
+ 'data-trackable': 'field-terms',
36
+ 'aria-required': 'true',
37
+ required: true,
38
+ };
39
+
40
+ const transitionTerms = isTransition && (
41
+ <>
42
+ {!isSingleTerm && (
43
+ <li>
44
+ <span className="terms-transition">
45
+ I give consent for my chosen payment method to be charged
46
+ automatically at the end of each subscription term until I cancel it
47
+ by contacting{' '}
48
+ <a
49
+ className="ncf__link--external"
50
+ href="https://help.ft.com/help/contact-us/"
51
+ target="_blank"
52
+ rel="noopener noreferrer"
53
+ >
54
+ customer care through chat, phone or email
55
+ </a>
56
+ .
57
+ </span>
58
+ </li>
59
+ )}
60
+ {transitionType === 'immediate' ? (
61
+ <li>
62
+ <span className="terms-transition terms-transition--immediate">
63
+ By placing my order, my subscription will start immediately and I am
64
+ aware and agree that I will therefore lose my statutory right to
65
+ cancel my subscription within 14 days of acceptance of my order. Any
66
+ notice of cancellation that I provide will only take effect at the
67
+ end of my subscription period and previously paid amounts are
68
+ non-refundable, except in the event that there is a fault in the
69
+ provision of the services.
70
+ </span>
71
+ </li>
72
+ ) : (
73
+ <li>
74
+ <span className="terms-transition terms-transition--other">
75
+ By placing my order, I acknowledge that my subscription will start
76
+ {isSingleTerm
77
+ ? ' and the chosen payment method will be charged '
78
+ : ' '}
79
+ on the date given above. Any cancellation notice received after that
80
+ date will take effect at the end of my subscription term and
81
+ previously paid amounts are non-refundable.
82
+ </span>
83
+ </li>
84
+ )}
85
+ <li>
86
+ <span className="terms-transition">
87
+ Find out more about our cancellation policy in our{' '}
88
+ <a
89
+ className="ncf__link--external"
90
+ href="http://help.ft.com/help/legal-privacy/terms-conditions/"
91
+ target="_blank"
92
+ rel="noopener noreferrer"
93
+ >
94
+ Terms &amp; Conditions
95
+ </a>
96
+ .
97
+ </span>
98
+ </li>
99
+ </>
100
+ );
101
+
102
+ const deferredBillingTerms = isDeferredBilling && (
103
+ <li>
104
+ <span className="terms-deferred">
105
+ Please note if you fail to make payment for your deferred billing plan
106
+ within due date your subscription will be automatically cancelled.
107
+ </span>
108
+ </li>
109
+ );
110
+
111
+ const printSignupTermText = isTrial
112
+ ? 'Credits for delivery suspension or delivery failure are not available during introductory offer periods.'
113
+ : '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).';
114
+
115
+ const printTerms = (
116
+ <>
117
+ <li>
118
+ <span className="terms-print">{printSignupTermText}</span>
119
+ </li>
120
+ <li>
121
+ <span className="terms-print">
122
+ Find out more about your delivery start date in our{' '}
123
+ <a
124
+ className="ncf__link--external"
125
+ href="http://help.ft.com/help/legal-privacy/terms-conditions/"
126
+ target={isEmbedded ? '_top' : '_blank'}
127
+ rel="noopener noreferrer"
128
+ >
129
+ Terms &amp; Conditions
130
+ </a>
131
+ .
132
+ </span>
133
+ </li>
134
+ </>
135
+ );
136
+
137
+ const nonPrintTerms = (
138
+ <>
139
+ <li>
140
+ <span className="terms-signup">
141
+ I give consent for my chosen payment method to be charged
142
+ automatically at the end of each subscription term until I cancel it
143
+ by contacting{' '}
144
+ <a
145
+ className="ncf__link--external"
146
+ href="https://help.ft.com/help/contact-us/"
147
+ target={isEmbedded ? '_top' : '_blank'}
148
+ rel="noopener noreferrer"
149
+ >
150
+ customer care through chat, phone or email
151
+ </a>
152
+ .
153
+ </span>
154
+ </li>
155
+ <li>
156
+ <span className="terms-signup">
157
+ By placing my order, my subscription will start immediately and I am
158
+ aware and agree that I will therefore lose my statutory right to
159
+ cancel my subscription within 14 days of acceptance of my order. Any
160
+ notice of cancellation that I provide will only take effect at the end
161
+ of my subscription period and previously paid amounts are
162
+ non-refundable, except in the event that there is a fault in the
163
+ provision of the services.
164
+ </span>
165
+ </li>
166
+ <li>
167
+ <span className="terms-signup">
168
+ Find out more about our cancellation policy in our{' '}
169
+ <a
170
+ className="ncf__link--external"
171
+ href="https://help.ft.com/legal-privacy/terms-and-conditions/"
172
+ target={isEmbedded ? '_top' : '_blank'}
173
+ rel="noopener noreferrer"
174
+ >
175
+ Terms &amp; Conditions
176
+ </a>
177
+ .
178
+ </span>
179
+ </li>
180
+ </>
181
+ );
182
+
183
+ const signupTerms = <>{isPrintProduct ? printTerms : nonPrintTerms}</>;
184
+
185
+ return (
186
+ <div {...divProps}>
187
+ <ul className="o-typography-list ncf__accept-terms-list">
188
+ {transitionTerms}
189
+ {signupTerms}
190
+ {deferredBillingTerms}
191
+ </ul>
192
+ <label className={labelClassName} htmlFor="termsAcceptance">
193
+ <input {...inputProps} />
194
+ <span className="o-forms-input__label">
195
+ I agree to the above terms &amp; conditions.
196
+ </span>
197
+ <p className="o-forms-input__error">
198
+ Please accept our terms &amp; conditions
199
+ </p>
200
+ </label>
201
+ </div>
202
+ );
203
+ }
204
+
205
+ AcceptTermsSubscription.propTypes = {
206
+ hasError: PropTypes.bool,
207
+ isSignup: PropTypes.bool,
208
+ isEmbedded: PropTypes.bool,
209
+ isTrial: PropTypes.bool,
210
+ isPrintProduct: PropTypes.bool,
211
+ isSingleTerm: PropTypes.bool,
212
+ isTransition: PropTypes.bool,
213
+ transitionType: PropTypes.string,
214
+ isDeferredBilling: PropTypes.bool,
215
+ };
@@ -0,0 +1,94 @@
1
+ import React from 'react';
2
+ import { mount } from 'enzyme';
3
+ import { AcceptTermsSubscription } from './index';
4
+
5
+ describe('AcceptTermsSubscription', () => {
6
+ it('renders with "o-forms-input--invalid" class when hasError prop is true', () => {
7
+ const props = { hasError: true };
8
+
9
+ const component = mount(<AcceptTermsSubscription {...props} />);
10
+
11
+ const labelElement = component.find('label');
12
+ expect(labelElement.hasClass('o-forms-input--invalid')).toBe(true);
13
+ });
14
+
15
+ it('renders without data-trackable attribute when isSignup prop is false', () => {
16
+ const props = {
17
+ isSignup: false,
18
+ };
19
+
20
+ const component = mount(<AcceptTermsSubscription {...props} />);
21
+
22
+ const labelElement = component.find(
23
+ 'label[data-trackable="sign-up-terms"]'
24
+ );
25
+ expect(labelElement.exists()).toBe(false);
26
+ });
27
+
28
+ it('renders the external link with target="_top" when isEmbedded prop is true', () => {
29
+ const props = {
30
+ isEmbedded: true,
31
+ };
32
+
33
+ const component = mount(<AcceptTermsSubscription {...props} />);
34
+
35
+ const externalLink = component.find('.ncf__link--external').first();
36
+ expect(externalLink.prop('target')).toBe('_top');
37
+ });
38
+
39
+ it('does not render the trial-specific terms when isTrial prop is false', () => {
40
+ const props = {
41
+ isTrial: false,
42
+ };
43
+
44
+ const component = mount(<AcceptTermsSubscription {...props} />);
45
+
46
+ const trialTerms = component.find('.terms-print');
47
+ expect(trialTerms.exists()).toBe(false);
48
+ });
49
+
50
+ it('renders the print-specific terms when isPrintProduct prop is true', () => {
51
+ const props = {
52
+ isPrintProduct: true,
53
+ };
54
+
55
+ const component = mount(<AcceptTermsSubscription {...props} />);
56
+
57
+ const printTerms = component.find('.terms-print');
58
+ expect(printTerms.exists()).toBe(true);
59
+ });
60
+
61
+ it('renders the transition terms when isSingleTerm prop is true and isTransition prop is true', () => {
62
+ const props = {
63
+ isSingleTerm: true,
64
+ isTransition: true,
65
+ };
66
+
67
+ const component = mount(<AcceptTermsSubscription {...props} />);
68
+
69
+ const transitionTerms = component.find('.terms-transition');
70
+ expect(transitionTerms.exists()).toBe(true);
71
+ });
72
+
73
+ it('does not render the transition terms when transitionType prop is null', () => {
74
+ const props = {
75
+ transitionType: null,
76
+ };
77
+
78
+ const component = mount(<AcceptTermsSubscription {...props} />);
79
+
80
+ const transitionTerms = component.find('.terms-transition');
81
+ expect(transitionTerms.exists()).toBe(false);
82
+ });
83
+
84
+ it('renders the deferred billing terms when isDeferredBilling prop is true', () => {
85
+ const props = {
86
+ isDeferredBilling: true,
87
+ };
88
+
89
+ const component = mount(<AcceptTermsSubscription {...props} />);
90
+
91
+ const deferredBillingTerms = component.find('.terms-deferred');
92
+ expect(deferredBillingTerms.exists()).toBe(true);
93
+ });
94
+ });
@@ -0,0 +1,51 @@
1
+ import React from 'react';
2
+ import { AcceptTermsSubscription } from './accept-terms-subscription';
3
+
4
+ export default {
5
+ title: 'Accept Terms Subscription',
6
+ component: AcceptTermsSubscription,
7
+ };
8
+
9
+ export const Basic = (args) => <AcceptTermsSubscription {...args} />;
10
+ Basic.args = {};
11
+
12
+ export const PrintProduct = (args) => <AcceptTermsSubscription {...args} />;
13
+
14
+ PrintProduct.args = {
15
+ isPrintProduct: true,
16
+ };
17
+
18
+ export const PrintProductTrial = (args) => (
19
+ <AcceptTermsSubscription {...args} />
20
+ );
21
+
22
+ PrintProductTrial.args = {
23
+ isPrintProduct: true,
24
+ isTrial: true,
25
+ };
26
+
27
+ export const isSingleTerm = (args) => <AcceptTermsSubscription {...args} />;
28
+
29
+ isSingleTerm.args = {
30
+ isSingleTerm: true,
31
+ };
32
+
33
+ export const isTransition = (args) => <AcceptTermsSubscription {...args} />;
34
+
35
+ isTransition.args = {
36
+ isTransition: true,
37
+ };
38
+
39
+ export const transitionType = (args) => <AcceptTermsSubscription {...args} />;
40
+
41
+ transitionType.args = {
42
+ transitionType: true,
43
+ };
44
+
45
+ export const isDeferredBilling = (args) => (
46
+ <AcceptTermsSubscription {...args} />
47
+ );
48
+
49
+ isDeferredBilling.args = {
50
+ isDeferredBilling: true,
51
+ };
@@ -6,11 +6,9 @@ const DEFAULT_AGE_RESTRICTION = '16';
6
6
  const DEFAULT_PRIVACY_POLICIES_POSITION = 'top';
7
7
 
8
8
  export function AcceptTerms({
9
- isAuthFirstAccount = false,
10
- isAuthFirstPayment = false,
9
+ withPrivacyPolicyTerms = false,
11
10
  hasError = false,
12
11
  isSignup = false,
13
- isRegister = false,
14
12
  isChecked = false,
15
13
  isB2b = false,
16
14
  isB2cPartnership = false,
@@ -21,7 +19,6 @@ export function AcceptTerms({
21
19
  isTransition = false,
22
20
  transitionType = null,
23
21
  isPrintProduct = false,
24
- specialTerms = null,
25
22
  isSingleTerm = false,
26
23
  isDeferredBilling = false,
27
24
  hideConfirmTermsAndConditions = false,
@@ -33,7 +30,6 @@ export function AcceptTerms({
33
30
  className: 'o-forms-field o-layout-typography ncf__validation-error',
34
31
  'data-validate': 'required,checked',
35
32
  ...(isSignup && { 'data-trackable': 'sign-up-terms' }),
36
- ...(isRegister && { 'data-trackable': 'register-up-terms' }),
37
33
  };
38
34
 
39
35
  const labelClassName = classNames([
@@ -55,8 +51,8 @@ export function AcceptTerms({
55
51
  ...(isChecked && { defaultChecked: true }),
56
52
  };
57
53
 
58
- const authFirstStepTerms = (
59
- <div className="auth-first-step-terms">
54
+ const privacyPolicyTerms = (
55
+ <div className="privacy-policy-terms">
60
56
  <span className={`consent-text--${privacyPoliciesPosition}`}>
61
57
  For more information about how we use your data, please refer to our{' '}
62
58
  <a
@@ -106,29 +102,6 @@ export function AcceptTerms({
106
102
  </div>
107
103
  );
108
104
 
109
- const registerTerms = (
110
- <label className={labelClassName} htmlFor="termsAcceptance">
111
- <input {...inputProps} />
112
- <span className="o-forms-input__label terms-register">
113
- I confirm I am {ageRestriction} years or older and have read and agree
114
- to the{' '}
115
- <a
116
- className="ncf__link--external"
117
- href="http://help.ft.com/help/legal-privacy/terms-conditions/"
118
- target={isEmbedded ? '_top' : '_blank'}
119
- rel="noopener noreferrer"
120
- data-trackable="terms-and-conditions"
121
- >
122
- Terms &amp; Conditions
123
- </a>
124
- .
125
- </span>
126
- <p className="o-forms-input__error">
127
- Please accept our terms &amp; conditions
128
- </p>
129
- </label>
130
- );
131
-
132
105
  const b2bTerms = isB2b ? (
133
106
  <li>
134
107
  <span className="terms-b2b">
@@ -324,12 +297,6 @@ export function AcceptTerms({
324
297
  </li>
325
298
  </>
326
299
  )}
327
-
328
- {specialTerms && (
329
- <li>
330
- <span className="terms-special">{specialTerms}</span>
331
- </li>
332
- )}
333
300
  </>
334
301
  );
335
302
 
@@ -369,14 +336,12 @@ export function AcceptTerms({
369
336
  <div {...divProps}>
370
337
  {isB2cPartnership ? (
371
338
  b2cPartnershipTerms
372
- ) : isRegister ? (
373
- registerTerms
374
- ) : isAuthFirstAccount ? (
375
- authFirstStepTerms
339
+ ) : withPrivacyPolicyTerms ? (
340
+ privacyPolicyTerms
376
341
  ) : (
377
342
  <>
378
343
  <ul className="o-typography-list ncf__accept-terms-list">
379
- {!isAuthFirstPayment && b2bTerms}
344
+ {b2bTerms}
380
345
  {corpSignupTerms}
381
346
  {transitionTerms}
382
347
  {signupTerms}
@@ -398,9 +363,9 @@ export function AcceptTerms({
398
363
  }
399
364
 
400
365
  AcceptTerms.propTypes = {
366
+ withPrivacyPolicyTerms: PropTypes.bool,
401
367
  hasError: PropTypes.bool,
402
368
  isSignup: PropTypes.bool,
403
- isRegister: PropTypes.bool,
404
369
  isChecked: PropTypes.bool,
405
370
  isB2b: PropTypes.bool,
406
371
  isB2cPartnership: PropTypes.bool,
@@ -411,7 +376,6 @@ AcceptTerms.propTypes = {
411
376
  isTransition: PropTypes.bool,
412
377
  transitionType: PropTypes.string,
413
378
  isPrintProduct: PropTypes.bool,
414
- specialTerms: PropTypes.string,
415
379
  isSingleTerm: PropTypes.bool,
416
380
  isDeferredBilling: PropTypes.bool,
417
381
  hideConfirmTermsAndConditions: PropTypes.bool,
@@ -16,14 +16,8 @@ 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 };
19
+ it('renders a component matching snapshot when withPrivacyPolicyTerms is true', () => {
20
+ const props = { withPrivacyPolicyTerms: true };
27
21
 
28
22
  expect(AcceptTerms).toRenderCorrectly(props);
29
23
  });
@@ -70,21 +64,6 @@ describe('AcceptTerms', () => {
70
64
  expect(AcceptTerms).toRenderCorrectly(props);
71
65
  });
72
66
 
73
- it('renders appropriately if a signup and has special terms', () => {
74
- const props = {
75
- isSignup: true,
76
- specialTerms: 'Special terms text',
77
- };
78
-
79
- expect(AcceptTerms).toRenderCorrectly(props);
80
- });
81
-
82
- it('renders appropriately if a registration', () => {
83
- const props = { isRegister: true };
84
-
85
- expect(AcceptTerms).toRenderCorrectly(props);
86
- });
87
-
88
67
  it('renders appropriately if input is checked', () => {
89
68
  const props = { isChecked: true };
90
69
 
@@ -12,16 +12,14 @@ export default {
12
12
  options: ['immediate', 'endOfTerm'],
13
13
  },
14
14
  },
15
- isAuthFirstAccount: {
15
+ withPrivacyPolicyTerms: {
16
16
  control: 'boolean',
17
17
  table: {
18
- type: { summary: 'Show new buy flow design' },
18
+ type: { summary: 'Show privacy policy terms' },
19
19
  },
20
20
  },
21
- isAuthFirstPayment: { control: 'boolean' },
22
21
  hasError: { control: 'boolean' },
23
22
  isSignup: { control: 'boolean' },
24
- isRegister: { control: 'boolean' },
25
23
  isChecked: { control: 'boolean' },
26
24
  isB2b: { control: 'boolean' },
27
25
  isB2cPartnership: { control: 'boolean' },
@@ -36,7 +34,9 @@ export default {
36
34
  children: {
37
35
  control: false,
38
36
  table: {
39
- type: { summary: "Only rendered when 'isAuthFirstAccount' is true" },
37
+ type: {
38
+ summary: "Only rendered when 'withPrivacyPolicyTerms' is true",
39
+ },
40
40
  },
41
41
  },
42
42
  privacyPoliciesPosition: {
@@ -56,12 +56,12 @@ Basic.args = {};
56
56
 
57
57
  export const NewBuyFlow = (args) => <AcceptTerms {...args} />;
58
58
  NewBuyFlow.args = {
59
- isAuthFirstAccount: true,
59
+ withPrivacyPolicyTerms: true,
60
60
  };
61
61
 
62
62
  export const NewBuyFlowEmailVerification = (args) => <AcceptTerms {...args} />;
63
63
  NewBuyFlowEmailVerification.args = {
64
- isAuthFirstAccount: true,
64
+ withPrivacyPolicyTerms: true,
65
65
  hideConfirmTermsAndConditions: true,
66
66
  };
67
67
 
@@ -71,12 +71,12 @@ export const NewBuyFlowWithChildren = (args) => (
71
71
  </AcceptTerms>
72
72
  );
73
73
  NewBuyFlowWithChildren.args = {
74
- isAuthFirstAccount: true,
74
+ withPrivacyPolicyTerms: true,
75
75
  privacyPoliciesPosition: 'bottom',
76
76
  };
77
77
  NewBuyFlowWithChildren.parameters = {
78
78
  controls: {
79
- include: ['privacyPoliciesPosition', 'isAuthFirstAccount', 'children'],
79
+ include: ['privacyPoliciesPosition', 'withPrivacyPolicyTerms', 'children'],
80
80
  expanded: true,
81
81
  },
82
82
  };
@@ -1,4 +1,7 @@
1
1
  export { AcceptTerms } from './accept-terms';
2
+ export { AcceptTermsPrivacyPolicy } from './accept-terms-privacy-policy';
3
+ export { AcceptTermsSubscription } from './accept-terms-subscription';
4
+ export { AcceptTermsBusiness } from './accept-terms-business';
2
5
  export { AppBanner } from './app-banner';
3
6
  export { BillingCity } from './billing-city';
4
7
  export { BillingCountry } from './billing-country';
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.AcceptTermsBusiness = AcceptTermsBusiness;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
10
+ var _classnames = _interopRequireDefault(require("classnames"));
11
+ function AcceptTermsBusiness(_ref) {
12
+ var _ref$hasError = _ref.hasError,
13
+ hasError = _ref$hasError === void 0 ? false : _ref$hasError,
14
+ _ref$isB2b = _ref.isB2b,
15
+ isB2b = _ref$isB2b === void 0 ? false : _ref$isB2b,
16
+ _ref$isEmbedded = _ref.isEmbedded,
17
+ isEmbedded = _ref$isEmbedded === void 0 ? false : _ref$isEmbedded,
18
+ _ref$isTrial = _ref.isTrial,
19
+ isTrial = _ref$isTrial === void 0 ? false : _ref$isTrial;
20
+ var divProps = {
21
+ id: 'acceptTermsField',
22
+ className: 'o-forms-field o-layout-typography ncf__validation-error',
23
+ 'data-validate': 'required,checked'
24
+ };
25
+ var labelClassName = (0, _classnames["default"])(['o-forms-input', 'o-forms-input--checkbox', {
26
+ 'o-forms-input--invalid': hasError
27
+ }]);
28
+ var inputProps = {
29
+ id: 'termsAcceptance',
30
+ type: 'checkbox',
31
+ name: 'termsAcceptance',
32
+ value: 'true',
33
+ 'data-trackable': 'field-terms',
34
+ 'aria-required': 'true',
35
+ required: true
36
+ };
37
+ var b2bTerms = isB2b ? /*#__PURE__*/_react["default"].createElement("li", null, /*#__PURE__*/_react["default"].createElement("span", {
38
+ className: "terms-b2b"
39
+ }, "By submitting this form, you indicate your consent to also being contacted by Financial Times by email, post, or phone about our other products, services or special offers unless you untick this box.")) : /*#__PURE__*/_react["default"].createElement("li", null, /*#__PURE__*/_react["default"].createElement("span", {
40
+ className: "terms-default"
41
+ }, "I confirm I am 16 years or older and have read and agree to the", ' ', /*#__PURE__*/_react["default"].createElement("a", {
42
+ className: "ncf__link--external",
43
+ href: "http://help.ft.com/help/legal-privacy/terms-conditions/",
44
+ target: isEmbedded ? '_top' : '_blank',
45
+ rel: "noopener noreferrer",
46
+ "data-trackable": "terms-and-conditions"
47
+ }, "Terms & Conditions"), "."));
48
+ var corpSignupTerms = /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("li", null, /*#__PURE__*/_react["default"].createElement("span", {
49
+ className: "terms-corp-signup"
50
+ }, "Your organisation\u2019s administrator(s) may view basic usage and profile data about your account and have the ability to set up myFT topic follows on your behalf.")), /*#__PURE__*/_react["default"].createElement("li", null, /*#__PURE__*/_react["default"].createElement("span", {
51
+ className: "terms-corp-signup"
52
+ }, "Basic usage and profile data about your account can include; for example, your job title and profile information, the date you last visited, volume of content consumed, etc.")), /*#__PURE__*/_react["default"].createElement("li", null, /*#__PURE__*/_react["default"].createElement("span", {
53
+ className: "terms-corp-signup"
54
+ }, "myFT topics may be selected on your behalf by your company administrator or FT representative for you to follow. You can unfollow these topics or unsubscribe from the myFT digest through the Contact preferences section on myFT.")), isTrial && /*#__PURE__*/_react["default"].createElement("li", null, /*#__PURE__*/_react["default"].createElement("span", {
55
+ className: "terms-corp-signup"
56
+ }, "This trial is to demonstrate the value of a group subscription and we\u2019ll contact you during your trial.")));
57
+ return /*#__PURE__*/_react["default"].createElement("div", divProps, /*#__PURE__*/_react["default"].createElement("ul", {
58
+ className: "o-typography-list ncf__accept-terms-list"
59
+ }, b2bTerms, corpSignupTerms), /*#__PURE__*/_react["default"].createElement("label", {
60
+ className: labelClassName,
61
+ htmlFor: "termsAcceptance"
62
+ }, /*#__PURE__*/_react["default"].createElement("input", inputProps), /*#__PURE__*/_react["default"].createElement("span", {
63
+ className: "o-forms-input__label"
64
+ }, "I agree to the above terms & conditions."), /*#__PURE__*/_react["default"].createElement("p", {
65
+ className: "o-forms-input__error"
66
+ }, "Please accept our terms & conditions")));
67
+ }
68
+ AcceptTermsBusiness.propTypes = {
69
+ hasError: _propTypes["default"].bool,
70
+ isChecked: _propTypes["default"].bool,
71
+ isB2b: _propTypes["default"].bool,
72
+ isEmbedded: _propTypes["default"].bool,
73
+ isTrial: _propTypes["default"].bool
74
+ };