@financial-times/n-conversion-forms 30.1.0 → 31.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.
Files changed (91) hide show
  1. package/.circleci/config.yml +97 -150
  2. package/.toolkitrc.yml +19 -0
  3. package/.toolkitstate/ci.json +6 -0
  4. package/README.md +2 -2
  5. package/jest.config.js +2 -0
  6. package/package.json +30 -16
  7. package/.circleci/shared-helpers/.github/settings.yml +0 -1
  8. package/.circleci/shared-helpers/CODEOWNERS +0 -3
  9. package/.circleci/shared-helpers/README.md +0 -72
  10. package/.circleci/shared-helpers/helper-check-service-ready +0 -37
  11. package/.circleci/shared-helpers/helper-configure-awscli +0 -20
  12. package/.circleci/shared-helpers/helper-generate-build-state-artifacts +0 -29
  13. package/.circleci/shared-helpers/helper-install-awscli +0 -14
  14. package/.circleci/shared-helpers/helper-install-puppeteer-deps +0 -25
  15. package/.circleci/shared-helpers/helper-npm-install-peer-deps +0 -40
  16. package/.circleci/shared-helpers/helper-npm-store-auth-token +0 -14
  17. package/.circleci/shared-helpers/helper-npm-update +0 -26
  18. package/.circleci/shared-helpers/helper-npm-version-and-publish-public +0 -19
  19. package/.circleci/shared-helpers/helper-publish-github-pages +0 -43
  20. package/.circleci/shared-helpers/helper-setup-heroku-cli +0 -46
  21. package/.circleci/shared-helpers/helper-setup-s3-upload +0 -17
  22. package/.circleci/shared-helpers/helper-upload-assets-to-s3 +0 -69
  23. package/.circleci/shared-helpers/helper.example +0 -13
  24. package/build-state/npm-shrinkwrap.json +0 -58461
  25. package/dist/accept-terms-business.js +0 -74
  26. package/dist/accept-terms-business.spec.js +0 -40
  27. package/dist/accept-terms-privacy-policy.js +0 -71
  28. package/dist/accept-terms-subscription.js +0 -150
  29. package/dist/accept-terms.js +0 -217
  30. package/dist/app-banner.js +0 -51
  31. package/dist/b2c-partnership-confirmation.js +0 -64
  32. package/dist/billing-city.js +0 -58
  33. package/dist/billing-country.js +0 -43
  34. package/dist/billing-postcode.js +0 -76
  35. package/dist/company-name.js +0 -78
  36. package/dist/confirmation.js +0 -117
  37. package/dist/continue-reading.js +0 -45
  38. package/dist/country.js +0 -106
  39. package/dist/customer-care.js +0 -52
  40. package/dist/debug.js +0 -50
  41. package/dist/decision-maker.js +0 -72
  42. package/dist/deferred-billing-terms.js +0 -112
  43. package/dist/delivery-address-map.js +0 -184
  44. package/dist/delivery-address-type.js +0 -74
  45. package/dist/delivery-address.js +0 -123
  46. package/dist/delivery-city.js +0 -70
  47. package/dist/delivery-county.js +0 -48
  48. package/dist/delivery-instructions.js +0 -123
  49. package/dist/delivery-option.js +0 -77
  50. package/dist/delivery-po-box.js +0 -75
  51. package/dist/delivery-postcode.js +0 -116
  52. package/dist/delivery-security-instructions.js +0 -72
  53. package/dist/delivery-start-date.js +0 -77
  54. package/dist/education-job-title.js +0 -67
  55. package/dist/email.js +0 -90
  56. package/dist/error-page.js +0 -45
  57. package/dist/fieldset.js +0 -58
  58. package/dist/first-name.js +0 -73
  59. package/dist/form.js +0 -29
  60. package/dist/google-sign-in.js +0 -24
  61. package/dist/graduation-date.js +0 -112
  62. package/dist/index.js +0 -432
  63. package/dist/industry.js +0 -81
  64. package/dist/job-title.js +0 -65
  65. package/dist/last-name.js +0 -73
  66. package/dist/licence-confirmation.js +0 -67
  67. package/dist/licence-header.js +0 -52
  68. package/dist/licence-sign-in.js +0 -36
  69. package/dist/licence-title.js +0 -46
  70. package/dist/lite-sub-confirmation.js +0 -118
  71. package/dist/loader.js +0 -54
  72. package/dist/message.js +0 -101
  73. package/dist/message.spec.js +0 -96
  74. package/dist/organisation.js +0 -73
  75. package/dist/package-change.js +0 -38
  76. package/dist/password.js +0 -95
  77. package/dist/payment-term.js +0 -328
  78. package/dist/payment-type.js +0 -213
  79. package/dist/personal-title.js +0 -94
  80. package/dist/phone.js +0 -85
  81. package/dist/position.js +0 -86
  82. package/dist/progress-indicator.js +0 -66
  83. package/dist/province.js +0 -80
  84. package/dist/registration-confirmation.js +0 -108
  85. package/dist/responsibility.js +0 -84
  86. package/dist/section.js +0 -20
  87. package/dist/seven-day-pass-experiment-confirmation.js +0 -93
  88. package/dist/state.js +0 -80
  89. package/dist/submit.js +0 -52
  90. package/dist/text-input.js +0 -78
  91. package/dist/trial-banner.js +0 -29
@@ -1,38 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.PackageChange = PackageChange;
8
- var _react = _interopRequireDefault(require("react"));
9
- var _propTypes = _interopRequireDefault(require("prop-types"));
10
- function PackageChange(_ref) {
11
- var changePackageUrl = _ref.changePackageUrl,
12
- currentPackage = _ref.currentPackage,
13
- packageDescription = _ref.packageDescription,
14
- is7DayPassExperiment = _ref.is7DayPassExperiment;
15
- return /*#__PURE__*/_react["default"].createElement("div", {
16
- className: "ncf__package-change"
17
- }, /*#__PURE__*/_react["default"].createElement("div", {
18
- className: "ncf__package-change__package"
19
- }, /*#__PURE__*/_react["default"].createElement("div", {
20
- className: "ncf__package-change__content"
21
- }, /*#__PURE__*/_react["default"].createElement("p", null, "You have chosen", ' ', /*#__PURE__*/_react["default"].createElement("span", {
22
- className: "ncf__strong"
23
- }, currentPackage)), packageDescription && /*#__PURE__*/_react["default"].createElement("p", {
24
- className: "ncf__package-change__content__description"
25
- }, packageDescription)), !is7DayPassExperiment && /*#__PURE__*/_react["default"].createElement("div", {
26
- className: "ncf__package-change__actions"
27
- }, /*#__PURE__*/_react["default"].createElement("a", {
28
- href: changePackageUrl,
29
- className: "ncf__button ncf__button--mono ncf__button--baseline",
30
- "data-trackable": "change"
31
- }, "Change"))));
32
- }
33
- PackageChange.propTypes = {
34
- changePackageUrl: _propTypes["default"].string.isRequired,
35
- currentPackage: _propTypes["default"].string.isRequired,
36
- packageDescription: _propTypes["default"].string,
37
- is7DayPassExperiment: _propTypes["default"].bool
38
- };
package/dist/password.js DELETED
@@ -1,95 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.Password = Password;
8
- var _react = _interopRequireDefault(require("react"));
9
- var _propTypes = _interopRequireDefault(require("prop-types"));
10
- var _classnames = _interopRequireDefault(require("classnames"));
11
- function Password(_ref) {
12
- var _ref$unknownUser = _ref.unknownUser,
13
- unknownUser = _ref$unknownUser === void 0 ? false : _ref$unknownUser,
14
- _ref$hasError = _ref.hasError,
15
- hasError = _ref$hasError === void 0 ? false : _ref$hasError,
16
- _ref$pattern = _ref.pattern,
17
- pattern = _ref$pattern === void 0 ? null : _ref$pattern,
18
- _ref$isDisabled = _ref.isDisabled,
19
- isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled,
20
- _ref$fieldId = _ref.fieldId,
21
- fieldId = _ref$fieldId === void 0 ? 'passwordField' : _ref$fieldId,
22
- _ref$inputId = _ref.inputId,
23
- inputId = _ref$inputId === void 0 ? 'password' : _ref$inputId,
24
- inputName = _ref.inputName,
25
- _ref$label = _ref.label,
26
- label = _ref$label === void 0 ? 'Password' : _ref$label,
27
- _ref$placeholder = _ref.placeholder,
28
- placeholder = _ref$placeholder === void 0 ? 'Enter a password' : _ref$placeholder,
29
- _ref$description = _ref.description,
30
- description = _ref$description === void 0 ? 'Use 8 or more characters. You can use letters, numbers or symbols' : _ref$description,
31
- _ref$showDescription = _ref.showDescription,
32
- showDescription = _ref$showDescription === void 0 ? true : _ref$showDescription,
33
- _ref$hasShowPassword = _ref.hasShowPassword,
34
- hasShowPassword = _ref$hasShowPassword === void 0 ? true : _ref$hasShowPassword;
35
- // This is necessary to make this backward compatible with the Handlebars partial.
36
- var showPasswordId = inputId === 'password' ? 'showPassword' : "".concat(inputId, "-showPassword");
37
- var showPasswordName = showPasswordId;
38
- // Use inputId if inputName is not explicitly passed.
39
- inputName = inputName || inputId;
40
- var fieldClassNames = (0, _classnames["default"])(['o-forms-field', 'ncf__password-field', 'ncf__validation-error', {
41
- 'js-unknown-user-field': unknownUser
42
- }]);
43
- var inputWrapperClassNames = (0, _classnames["default"])(['o-forms-input', 'o-forms-input--password', 'o-forms-input--checkbox', 'o-forms-input--suffix', {
44
- 'o-forms-input--invalid': hasError
45
- }]);
46
- return /*#__PURE__*/_react["default"].createElement("div", {
47
- id: fieldId,
48
- className: fieldClassNames,
49
- "data-validate": "required,password"
50
- }, /*#__PURE__*/_react["default"].createElement("label", {
51
- htmlFor: inputId,
52
- className: "o-forms-title"
53
- }, /*#__PURE__*/_react["default"].createElement("span", {
54
- className: "o-forms-title__main"
55
- }, label), showDescription ? /*#__PURE__*/_react["default"].createElement("span", {
56
- className: "o-forms-title__prompt"
57
- }, description) : null), /*#__PURE__*/_react["default"].createElement("div", {
58
- className: inputWrapperClassNames
59
- }, /*#__PURE__*/_react["default"].createElement("input", {
60
- type: "password",
61
- id: inputId,
62
- name: inputName,
63
- placeholder: placeholder,
64
- autoComplete: "new-password",
65
- "data-trackable": "field-password",
66
- "aria-required": "true",
67
- required: true,
68
- pattern: pattern,
69
- disabled: isDisabled
70
- }), hasShowPassword ? /*#__PURE__*/_react["default"].createElement("label", {
71
- className: "ncf__password-field--show-password"
72
- }, /*#__PURE__*/_react["default"].createElement("input", {
73
- type: "checkbox",
74
- id: showPasswordId,
75
- name: showPasswordName,
76
- "data-trackable": "field-show-password",
77
- "aria-label": "Show password"
78
- }), /*#__PURE__*/_react["default"].createElement("span", {
79
- className: "o-forms-input__label",
80
- "aria-hidden": "true"
81
- }, "Show password")) : null, /*#__PURE__*/_react["default"].createElement("div", {
82
- className: "o-forms-input__error"
83
- }, "Please enter a valid password")));
84
- }
85
- Password.propTypes = {
86
- unknownUser: _propTypes["default"].bool,
87
- hasError: _propTypes["default"].bool,
88
- pattern: _propTypes["default"].string,
89
- isDisabled: _propTypes["default"].bool,
90
- fieldId: _propTypes["default"].string,
91
- inputId: _propTypes["default"].string,
92
- inputName: _propTypes["default"].string,
93
- label: _propTypes["default"].string,
94
- placeholder: _propTypes["default"].string
95
- };
@@ -1,328 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.PaymentTerm = PaymentTerm;
8
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
- var _react = _interopRequireDefault(require("react"));
10
- var _propTypes = _interopRequireDefault(require("prop-types"));
11
- var _classnames = _interopRequireDefault(require("classnames"));
12
- var _nPricing = require("@financial-times/n-pricing");
13
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
14
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
15
- function PaymentTerm(_ref) {
16
- var _ref$fieldId = _ref.fieldId,
17
- fieldId = _ref$fieldId === void 0 ? 'paymentTermField' : _ref$fieldId,
18
- _ref$inputName = _ref.inputName,
19
- inputName = _ref$inputName === void 0 ? 'paymentTerm' : _ref$inputName,
20
- _ref$isPrintOrBundle = _ref.isPrintOrBundle,
21
- isPrintOrBundle = _ref$isPrintOrBundle === void 0 ? false : _ref$isPrintOrBundle,
22
- _ref$isEpaper = _ref.isEpaper,
23
- isEpaper = _ref$isEpaper === void 0 ? false : _ref$isEpaper,
24
- _ref$options = _ref.options,
25
- options = _ref$options === void 0 ? [] : _ref$options,
26
- _ref$isFixedTermOffer = _ref.isFixedTermOffer,
27
- isFixedTermOffer = _ref$isFixedTermOffer === void 0 ? false : _ref$isFixedTermOffer,
28
- offerDisplayName = _ref.offerDisplayName,
29
- _ref$showLegal = _ref.showLegal,
30
- showLegal = _ref$showLegal === void 0 ? true : _ref$showLegal,
31
- _ref$largePrice = _ref.largePrice,
32
- largePrice = _ref$largePrice === void 0 ? false : _ref$largePrice,
33
- _ref$optionsInARow = _ref.optionsInARow,
34
- optionsInARow = _ref$optionsInARow === void 0 ? false : _ref$optionsInARow,
35
- _ref$billingCountry = _ref.billingCountry,
36
- billingCountry = _ref$billingCountry === void 0 ? '' : _ref$billingCountry,
37
- _ref$is7DayPassExperi = _ref.is7DayPassExperiment,
38
- is7DayPassExperiment = _ref$is7DayPassExperi === void 0 ? false : _ref$is7DayPassExperi;
39
- /**
40
- * Compute monthly price for given term name
41
- * @param {number} amount price in number format
42
- * @param {string} currency country id of the currency
43
- * @param {string} period PxY (yearly) or PxM (montly) where x is the amount of years/months
44
- * @returns {string}
45
- */
46
- var getMontlyPriceFromPeriod = function getMontlyPriceFromPeriod(amount, currency, period) {
47
- var periodObj = new _nPricing.Period(period);
48
- var monthlyPrice = periodObj.calculatePrice('P1M', amount);
49
- return new _nPricing.Monthly({
50
- value: monthlyPrice,
51
- currency: currency
52
- }).getAmount('monthly');
53
- };
54
-
55
- /**
56
- * returns period converted to time if found
57
- * otherwise returns empty string to avoid show information not mapped
58
- * @param {string} period PxY (yearly) or PxM (montly) where x is the amount of years/months
59
- * @returns {string}
60
- */
61
- var getTimeFromPeriod = function getTimeFromPeriod(period) {
62
- var freq = period.substring(period.length - 1) === 'Y' ? 'years' : 'months';
63
- var amount = period.substring(1, period.length - 1);
64
- return period ? "".concat(amount, " ").concat(freq) : '';
65
- };
66
- var isValidPeriod = function isValidPeriod(period) {
67
- try {
68
- // Period should throw an error if it is not properly provided
69
- // in order to validate it, we just send in case type is string
70
- new _nPricing.Period(typeof period === 'string' ? period : '');
71
- return true;
72
- } catch (e) {
73
- return false;
74
- }
75
- };
76
- var nameMap = {
77
- annual: {
78
- title: 'Annual',
79
- price: function price(_price) {
80
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, "Single", ' ', /*#__PURE__*/_react["default"].createElement("span", {
81
- className: "ncf__payment-term__price ncf__strong"
82
- }, _price), ' ', "payment");
83
- },
84
- trialPrice: function trialPrice(price) {
85
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, "Unless you cancel during your trial you will be billed", ' ', /*#__PURE__*/_react["default"].createElement("span", {
86
- className: "ncf__payment-term__price"
87
- }, price), " per year after the trial period.");
88
- },
89
- monthlyPrice: function monthlyPrice(price) {
90
- return price && /*#__PURE__*/_react["default"].createElement("span", {
91
- className: "ncf__payment-term__equivalent-price"
92
- }, "That\u2019s equivalent to", ' ', /*#__PURE__*/_react["default"].createElement("span", {
93
- className: "ncf__payment-term__monthly-price"
94
- }, price), ' ', "per month");
95
- },
96
- renewsText: function renewsText() {
97
- return /*#__PURE__*/_react["default"].createElement("p", {
98
- className: "ncf__payment-term__renews-text"
99
- }, "Renews annually unless cancelled");
100
- }
101
- },
102
- quarterly: {
103
- title: 'Quarterly',
104
- price: function price(_price2) {
105
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("span", {
106
- className: "ncf__payment-term__price"
107
- }, _price2), " per quarter");
108
- },
109
- trialPrice: function trialPrice(price) {
110
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, "Unless you cancel during your trial you will be billed", ' ', /*#__PURE__*/_react["default"].createElement("span", {
111
- className: "ncf__payment-term__price"
112
- }, price), " per quarter after the trial period.");
113
- },
114
- monthlyPrice: function monthlyPrice() {},
115
- renewsText: function renewsText() {
116
- return /*#__PURE__*/_react["default"].createElement("p", {
117
- className: "ncf__payment-term__renews-text"
118
- }, "Renews quarterly unless cancelled");
119
- }
120
- },
121
- monthly: {
122
- title: 'Monthly',
123
- price: function price(_price3, is7DayPassExperiment) {
124
- var paymentIntervalTextToDisplay = function () {
125
- switch (true) {
126
- case is7DayPassExperiment:
127
- return ' one-time payment';
128
- default:
129
- return ' per month';
130
- }
131
- }();
132
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("span", {
133
- className: "ncf__payment-term__price"
134
- }, _price3), paymentIntervalTextToDisplay);
135
- },
136
- trialPrice: function trialPrice(price) {
137
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, "Unless you cancel during your trial you will be billed", ' ', /*#__PURE__*/_react["default"].createElement("span", {
138
- className: "ncf__payment-term__price"
139
- }, price), " per month after the trial period.");
140
- },
141
- monthlyPrice: function monthlyPrice() {},
142
- renewsText: function renewsText(isFixedTermOffer, is7DayPassExperiment) {
143
- var textToDisplay = function () {
144
- switch (true) {
145
- case is7DayPassExperiment:
146
- return 'This subscription is for 7 days, charged at the outset.';
147
- case isFixedTermOffer:
148
- return 'This subscription is for 3 months, charged monthly. You can cancel at anytime';
149
- default:
150
- return 'Renews monthly unless cancelled';
151
- }
152
- }();
153
- return /*#__PURE__*/_react["default"].createElement("p", {
154
- className: "ncf__payment-term__renews-text"
155
- }, textToDisplay);
156
- }
157
- },
158
- custom: {
159
- price: function price(_price4) {
160
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, "Single", ' ', /*#__PURE__*/_react["default"].createElement("span", {
161
- className: "ncf__payment-term__price ncf__strong"
162
- }, _price4), ' ', "payment");
163
- },
164
- trialPrice: function trialPrice(_trialPrice, trialPeriod) {
165
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, "Unless you cancel during your trial you will be billed", ' ', /*#__PURE__*/_react["default"].createElement("span", {
166
- className: "ncf__payment-term__price"
167
- }, _trialPrice), " per", ' ', trialPeriod, "after the trial period.");
168
- },
169
- monthlyPrice: function monthlyPrice(_monthlyPrice) {
170
- return Boolean(_monthlyPrice) && /*#__PURE__*/_react["default"].createElement("span", {
171
- className: "ncf__payment-term__equivalent-price"
172
- }, "That\u2019s equivalent to", ' ', /*#__PURE__*/_react["default"].createElement("span", {
173
- className: "ncf__payment-term__monthly-price"
174
- }, _monthlyPrice), ' ', "per month");
175
- },
176
- renewsText: function renewsText(renewalPeriod) {
177
- return Boolean(renewalPeriod) && /*#__PURE__*/_react["default"].createElement("p", {
178
- className: "ncf__payment-term__renews-text"
179
- }, "Renews every ", renewalPeriod, " unless cancelled");
180
- }
181
- }
182
- };
183
- var createPaymentTerm = function createPaymentTerm(option) {
184
- var className = (0, _classnames["default"])(['ncf__payment-term__item', 'o-forms-input--radio-round', {
185
- 'ncf__payment-term__item--discount': option.discount
186
- }]);
187
- var props = _objectSpread({
188
- type: 'radio',
189
- id: option.value,
190
- 'data-base-amount': option.isTrial ? option.trialAmount : option.amount,
191
- name: inputName,
192
- value: option.value,
193
- className: 'o-forms-input__radio o-forms-input__radio--right ncf__payment-term__input'
194
- }, option.selected && {
195
- defaultChecked: true
196
- });
197
- var createDiscount = function createDiscount() {
198
- return option.discount && /*#__PURE__*/_react["default"].createElement("span", {
199
- className: "ncf__payment-term__discount"
200
- }, option.bestOffer ? 'Best offer' : "Save ".concat(option.discount, " off RRP"));
201
- };
202
- var createB2cDiscountCopy = function createB2cDiscountCopy() {
203
- return option.name === 'annual' && option.b2cPartnership && option.b2cDiscountCopy && /*#__PURE__*/_react["default"].createElement("span", {
204
- className: "ncf__payment-term__discount"
205
- }, option.b2cDiscountCopy);
206
- };
207
- var createDescription = function createDescription() {
208
- return option.isTrial ? /*#__PURE__*/_react["default"].createElement("div", {
209
- className: "ncf__payment-term__description"
210
- }, option.trialDuration || '4 weeks', " for", ' ', /*#__PURE__*/_react["default"].createElement("span", {
211
- className: "ncf__payment-term__trial-price"
212
- }, option.trialPrice), /*#__PURE__*/_react["default"].createElement("br", null), nameMap[option.name] && nameMap[option.name].trialPrice(option.price)) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, nameMap[option.name] ? /*#__PURE__*/_react["default"].createElement("div", {
213
- className: "ncf__payment-term__description"
214
- }, nameMap[option.name].price(option.price, is7DayPassExperiment), nameMap[option.name].monthlyPrice(option.monthlyPrice), nameMap[option.name].renewsText(isFixedTermOffer, is7DayPassExperiment)) :
215
- // this should cover the cases different than annual, quarterly and monthly
216
- // for those containing period on option.value, render custom template, for the rest keep legacy render
217
- isValidPeriod(option.value) ? /*#__PURE__*/_react["default"].createElement("div", {
218
- className: "ncf__payment-term__description"
219
- }, nameMap['custom'].price(option.price), nameMap['custom'].monthlyPrice(option.monthlyPrice && option.monthlyPrice !== '0' ? Number(option.monthlyPrice) : getMontlyPriceFromPeriod(option.amount, option.currency, option.value)), nameMap['custom'].renewsText(getTimeFromPeriod(option.value))) : /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("span", {
220
- className: largePrice ? 'ncf__payment-term__large-price' : ''
221
- }, option.price), option.chargeOnText && /*#__PURE__*/_react["default"].createElement("p", {
222
- className: "ncf__payment-term__charge-on-text"
223
- }, option.chargeOnText)));
224
- };
225
- var getTermDisplayName = function getTermDisplayName() {
226
- var showTrialCopyInTitle = option.isTrial && !isPrintOrBundle && !isEpaper;
227
- var defaultTitle = function () {
228
- switch (true) {
229
- case is7DayPassExperiment:
230
- return '';
231
- case Boolean(option.name && nameMap[option.name]):
232
- return nameMap[option.name].title;
233
- default:
234
- return '';
235
- }
236
- }();
237
- var title = isFixedTermOffer ? [offerDisplayName, defaultTitle].filter(Boolean).join(' - ') : defaultTitle;
238
- var termDisplayName = '';
239
- if (showTrialCopyInTitle) {
240
- var termName = option.displayName ? option.displayName : 'Premium Digital';
241
- termDisplayName = "Trial: ".concat(termName, " - ");
242
- }
243
- var getTermPeriod = function getTermPeriod() {
244
- // annual, quarterly and monthly
245
- if (nameMap[option.name]) {
246
- return title;
247
- }
248
- // custom offer with period provided
249
- if (isValidPeriod(option.value)) {
250
- return getTimeFromPeriod(option.value);
251
- }
252
- // custom legacy cases, where period is not provided
253
- return option.title;
254
- };
255
- var termPeriod = getTermPeriod();
256
- termDisplayName = "".concat(termDisplayName).concat(termPeriod, " ");
257
- return termDisplayName;
258
- };
259
- return /*#__PURE__*/_react["default"].createElement("div", {
260
- key: option.value,
261
- className: className
262
- }, /*#__PURE__*/_react["default"].createElement("input", props), /*#__PURE__*/_react["default"].createElement("label", {
263
- htmlFor: option.value,
264
- className: "o-forms-input__label ncf__payment-term__label"
265
- }, createDiscount(), createB2cDiscountCopy(), /*#__PURE__*/_react["default"].createElement("span", {
266
- className: (0, _classnames["default"])(['ncf__payment-term__title', {
267
- 'ncf__payment-term__title--large-price': largePrice
268
- }])
269
- }, getTermDisplayName(), option.subTitle && /*#__PURE__*/_react["default"].createElement("span", {
270
- className: "ncf__regular ncf__payment-term__sub-title"
271
- }, option.subTitle)), createDescription()));
272
- };
273
- return /*#__PURE__*/_react["default"].createElement("div", {
274
- id: fieldId,
275
- className: "o-forms__group ncf__payment-term",
276
- "data-country-code": billingCountry
277
- }, /*#__PURE__*/_react["default"].createElement("div", {
278
- className: optionsInARow ? 'ncf__payment-term__options-grid' : ''
279
- }, options.map(function (option) {
280
- return createPaymentTerm(option);
281
- })), showLegal && /*#__PURE__*/_react["default"].createElement("div", {
282
- className: "ncf__payment-term__legal"
283
- }, isFixedTermOffer ? /*#__PURE__*/_react["default"].createElement("p", null, "Find out more about our cancellation policy in our", ' ', /*#__PURE__*/_react["default"].createElement("a", {
284
- className: "ncf__link--external",
285
- href: "https://help.ft.com/legal-privacy/terms-and-conditions/",
286
- title: "FT Legal Terms and Conditions help page",
287
- target: "_blank",
288
- rel: "noopener noreferrer"
289
- }, "Terms & Conditions"), ".") : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("p", null, "With all subscription types, we will automatically renew your subscription using the payment method provided unless you cancel before your renewal date."), /*#__PURE__*/_react["default"].createElement("p", null, "We will notify you at least 14 days in advance of any changes to the price in your subscription that would apply upon next renewal. Find out more about our cancellation policy in our", ' ', /*#__PURE__*/_react["default"].createElement("a", {
290
- className: "ncf__link--external",
291
- href: "https://help.ft.com/legal-privacy/terms-and-conditions/",
292
- title: "FT Legal Terms and Conditions help page",
293
- target: "_blank",
294
- rel: "noopener noreferrer"
295
- }, "Terms & Conditions"), "."))));
296
- }
297
- PaymentTerm.propTypes = {
298
- fieldId: _propTypes["default"].string,
299
- inputName: _propTypes["default"].string,
300
- isPrintOrBundle: _propTypes["default"].bool,
301
- isEpaper: _propTypes["default"].bool,
302
- options: _propTypes["default"].arrayOf(_propTypes["default"].shape({
303
- b2cDiscountCopy: _propTypes["default"].string,
304
- isB2cPartnership: _propTypes["default"].bool,
305
- discount: _propTypes["default"].string,
306
- isTrial: _propTypes["default"].bool,
307
- name: _propTypes["default"].string.isRequired,
308
- price: _propTypes["default"].string.isRequired,
309
- selected: _propTypes["default"].bool,
310
- trialDuration: _propTypes["default"].string,
311
- trialPrice: _propTypes["default"].string,
312
- amount: _propTypes["default"].string,
313
- trialAmount: _propTypes["default"].number,
314
- value: _propTypes["default"].string.isRequired,
315
- monthlyPrice: _propTypes["default"].string,
316
- title: _propTypes["default"].string,
317
- subTitle: _propTypes["default"].string,
318
- bestOffer: _propTypes["default"].bool,
319
- chargeOnText: _propTypes["default"].string,
320
- fulfilmentOption: _propTypes["default"].string
321
- })),
322
- isFixedTermOffer: _propTypes["default"].bool,
323
- offerDisplayName: _propTypes["default"].string,
324
- showLegal: _propTypes["default"].bool,
325
- largePrice: _propTypes["default"].bool,
326
- optionsInARow: _propTypes["default"].bool,
327
- billingCountry: _propTypes["default"].string
328
- };