@financial-times/n-conversion-forms 38.0.0 → 39.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.
- package/.toolkitstate/ci.json +2 -2
- package/components/__snapshots__/b2c-partnership-confirmation.spec.js.snap +18 -18
- package/components/__snapshots__/confirmation.spec.js.snap +1 -1
- package/components/__snapshots__/delivery-option.spec.js.snap +1 -1
- package/components/b2c-partnership-confirmation.jsx +2 -2
- package/components/b2c-partnership-confirmation.spec.js +2 -2
- package/components/confirmation.spec.js +1 -1
- package/components/payment-term.jsx +3 -3
- package/dist/b2c-partnership-confirmation.jsx +2 -2
- package/dist/payment-term.jsx +4 -4
- package/package.json +1 -1
- package/utils/delivery-option-messages.js +3 -3
- package/utils/delivery-option-messages.spec.js +3 -3
package/.toolkitstate/ci.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
|
-
exports[`B2CPartnershipConfirmation renders
|
|
3
|
+
exports[`B2CPartnershipConfirmation renders Digital Edition access for Digital Edition subscription lowercase 1`] = `
|
|
4
4
|
<div class="ncf ncf__wrapper">
|
|
5
5
|
<div class="ncf__center">
|
|
6
6
|
<div class="ncf__icon ncf__icon--tick ncf__icon--large">
|
|
7
7
|
</div>
|
|
8
8
|
<div class="ncf__paragraph">
|
|
9
9
|
<h1 class="ncf__header ncf__header--confirmation">
|
|
10
|
-
Welcome to your
|
|
10
|
+
Welcome to your Digital Edition access
|
|
11
11
|
</h1>
|
|
12
12
|
</div>
|
|
13
13
|
</div>
|
|
@@ -40,14 +40,14 @@ exports[`B2CPartnershipConfirmation renders FT access if subscription prop is nu
|
|
|
40
40
|
</div>
|
|
41
41
|
`;
|
|
42
42
|
|
|
43
|
-
exports[`B2CPartnershipConfirmation renders
|
|
43
|
+
exports[`B2CPartnershipConfirmation renders Digital Edition access for Digital Edition subscription uppercase 1`] = `
|
|
44
44
|
<div class="ncf ncf__wrapper">
|
|
45
45
|
<div class="ncf__center">
|
|
46
46
|
<div class="ncf__icon ncf__icon--tick ncf__icon--large">
|
|
47
47
|
</div>
|
|
48
48
|
<div class="ncf__paragraph">
|
|
49
49
|
<h1 class="ncf__header ncf__header--confirmation">
|
|
50
|
-
Welcome to your
|
|
50
|
+
Welcome to your Digital Edition access
|
|
51
51
|
</h1>
|
|
52
52
|
</div>
|
|
53
53
|
</div>
|
|
@@ -80,14 +80,14 @@ exports[`B2CPartnershipConfirmation renders FT access if subscription prop is un
|
|
|
80
80
|
</div>
|
|
81
81
|
`;
|
|
82
82
|
|
|
83
|
-
exports[`B2CPartnershipConfirmation renders
|
|
83
|
+
exports[`B2CPartnershipConfirmation renders FT access if subscription prop is null 1`] = `
|
|
84
84
|
<div class="ncf ncf__wrapper">
|
|
85
85
|
<div class="ncf__center">
|
|
86
86
|
<div class="ncf__icon ncf__icon--tick ncf__icon--large">
|
|
87
87
|
</div>
|
|
88
88
|
<div class="ncf__paragraph">
|
|
89
89
|
<h1 class="ncf__header ncf__header--confirmation">
|
|
90
|
-
Welcome to your
|
|
90
|
+
Welcome to your FT access
|
|
91
91
|
</h1>
|
|
92
92
|
</div>
|
|
93
93
|
</div>
|
|
@@ -120,14 +120,14 @@ exports[`B2CPartnershipConfirmation renders Premium access for premium subscript
|
|
|
120
120
|
</div>
|
|
121
121
|
`;
|
|
122
122
|
|
|
123
|
-
exports[`B2CPartnershipConfirmation renders
|
|
123
|
+
exports[`B2CPartnershipConfirmation renders FT access if subscription prop is undefined 1`] = `
|
|
124
124
|
<div class="ncf ncf__wrapper">
|
|
125
125
|
<div class="ncf__center">
|
|
126
126
|
<div class="ncf__icon ncf__icon--tick ncf__icon--large">
|
|
127
127
|
</div>
|
|
128
128
|
<div class="ncf__paragraph">
|
|
129
129
|
<h1 class="ncf__header ncf__header--confirmation">
|
|
130
|
-
Welcome to your
|
|
130
|
+
Welcome to your FT access
|
|
131
131
|
</h1>
|
|
132
132
|
</div>
|
|
133
133
|
</div>
|
|
@@ -160,14 +160,14 @@ exports[`B2CPartnershipConfirmation renders Premium access for premium subscript
|
|
|
160
160
|
</div>
|
|
161
161
|
`;
|
|
162
162
|
|
|
163
|
-
exports[`B2CPartnershipConfirmation renders
|
|
163
|
+
exports[`B2CPartnershipConfirmation renders Premium access for premium subscription lowercase 1`] = `
|
|
164
164
|
<div class="ncf ncf__wrapper">
|
|
165
165
|
<div class="ncf__center">
|
|
166
166
|
<div class="ncf__icon ncf__icon--tick ncf__icon--large">
|
|
167
167
|
</div>
|
|
168
168
|
<div class="ncf__paragraph">
|
|
169
169
|
<h1 class="ncf__header ncf__header--confirmation">
|
|
170
|
-
Welcome to your
|
|
170
|
+
Welcome to your Premium access
|
|
171
171
|
</h1>
|
|
172
172
|
</div>
|
|
173
173
|
</div>
|
|
@@ -200,14 +200,14 @@ exports[`B2CPartnershipConfirmation renders Standard access for standard subscri
|
|
|
200
200
|
</div>
|
|
201
201
|
`;
|
|
202
202
|
|
|
203
|
-
exports[`B2CPartnershipConfirmation renders
|
|
203
|
+
exports[`B2CPartnershipConfirmation renders Premium access for premium subscription uppercase 1`] = `
|
|
204
204
|
<div class="ncf ncf__wrapper">
|
|
205
205
|
<div class="ncf__center">
|
|
206
206
|
<div class="ncf__icon ncf__icon--tick ncf__icon--large">
|
|
207
207
|
</div>
|
|
208
208
|
<div class="ncf__paragraph">
|
|
209
209
|
<h1 class="ncf__header ncf__header--confirmation">
|
|
210
|
-
Welcome to your
|
|
210
|
+
Welcome to your Premium access
|
|
211
211
|
</h1>
|
|
212
212
|
</div>
|
|
213
213
|
</div>
|
|
@@ -240,14 +240,14 @@ exports[`B2CPartnershipConfirmation renders Standard access for standard subscri
|
|
|
240
240
|
</div>
|
|
241
241
|
`;
|
|
242
242
|
|
|
243
|
-
exports[`B2CPartnershipConfirmation renders
|
|
243
|
+
exports[`B2CPartnershipConfirmation renders Standard access for standard subscription lowercase 1`] = `
|
|
244
244
|
<div class="ncf ncf__wrapper">
|
|
245
245
|
<div class="ncf__center">
|
|
246
246
|
<div class="ncf__icon ncf__icon--tick ncf__icon--large">
|
|
247
247
|
</div>
|
|
248
248
|
<div class="ncf__paragraph">
|
|
249
249
|
<h1 class="ncf__header ncf__header--confirmation">
|
|
250
|
-
Welcome to your
|
|
250
|
+
Welcome to your Standard access
|
|
251
251
|
</h1>
|
|
252
252
|
</div>
|
|
253
253
|
</div>
|
|
@@ -280,14 +280,14 @@ exports[`B2CPartnershipConfirmation renders as default 1`] = `
|
|
|
280
280
|
</div>
|
|
281
281
|
`;
|
|
282
282
|
|
|
283
|
-
exports[`B2CPartnershipConfirmation renders
|
|
283
|
+
exports[`B2CPartnershipConfirmation renders Standard access for standard subscription uppercase 1`] = `
|
|
284
284
|
<div class="ncf ncf__wrapper">
|
|
285
285
|
<div class="ncf__center">
|
|
286
286
|
<div class="ncf__icon ncf__icon--tick ncf__icon--large">
|
|
287
287
|
</div>
|
|
288
288
|
<div class="ncf__paragraph">
|
|
289
289
|
<h1 class="ncf__header ncf__header--confirmation">
|
|
290
|
-
Welcome to your
|
|
290
|
+
Welcome to your Standard access
|
|
291
291
|
</h1>
|
|
292
292
|
</div>
|
|
293
293
|
</div>
|
|
@@ -320,14 +320,14 @@ exports[`B2CPartnershipConfirmation renders ePaper access for ePaper subscriptio
|
|
|
320
320
|
</div>
|
|
321
321
|
`;
|
|
322
322
|
|
|
323
|
-
exports[`B2CPartnershipConfirmation renders
|
|
323
|
+
exports[`B2CPartnershipConfirmation renders as default 1`] = `
|
|
324
324
|
<div class="ncf ncf__wrapper">
|
|
325
325
|
<div class="ncf__center">
|
|
326
326
|
<div class="ncf__icon ncf__icon--tick ncf__icon--large">
|
|
327
327
|
</div>
|
|
328
328
|
<div class="ncf__paragraph">
|
|
329
329
|
<h1 class="ncf__header ncf__header--confirmation">
|
|
330
|
-
Welcome to your
|
|
330
|
+
Welcome to your FT access
|
|
331
331
|
</h1>
|
|
332
332
|
</div>
|
|
333
333
|
</div>
|
|
@@ -40,7 +40,7 @@ exports[`DeliveryOption renders with USA print offer 1`] = `
|
|
|
40
40
|
Mail
|
|
41
41
|
</span>
|
|
42
42
|
<div class="ncf__delivery-option__description">
|
|
43
|
-
We can only deliver the FT Weekend newspaper to your location by postal mail which means your delivery will arrive up to 5 business days after the date of publication and will not include the HTSI Magazine. We also fly the newspaper to your location which means delivery is subject to flight delays/cancellations outside the FT's control. If you prefer to read the printed content on the day of publication, please proceed to subscribe to the FT
|
|
43
|
+
We can only deliver the FT Weekend newspaper to your location by postal mail which means your delivery will arrive up to 5 business days after the date of publication and will not include the HTSI Magazine. We also fly the newspaper to your location which means delivery is subject to flight delays/cancellations outside the FT's control. If you prefer to read the printed content on the day of publication, please proceed to subscribe to the FT Digital Edition - a digital replica of the print edition.
|
|
44
44
|
</div>
|
|
45
45
|
</span>
|
|
46
46
|
</label>
|
|
@@ -4,7 +4,7 @@ import PropTypes from 'prop-types';
|
|
|
4
4
|
const productCodeMapping = {
|
|
5
5
|
P1: 'Standard',
|
|
6
6
|
P2: 'Premium',
|
|
7
|
-
EP: '
|
|
7
|
+
EP: 'Digital Edition',
|
|
8
8
|
};
|
|
9
9
|
|
|
10
10
|
export function B2CPartnershipConfirmation({
|
|
@@ -23,7 +23,7 @@ export function B2CPartnershipConfirmation({
|
|
|
23
23
|
|
|
24
24
|
// Welcome to your Standard access
|
|
25
25
|
// Welcome to your Premium access
|
|
26
|
-
// Welcome to your
|
|
26
|
+
// Welcome to your Digital Edition access
|
|
27
27
|
// Welcome to your FT access (default)
|
|
28
28
|
const accessType = productCodeMapping[productCode?.toUpperCase()] || 'FT';
|
|
29
29
|
|
|
@@ -34,13 +34,13 @@ describe('B2CPartnershipConfirmation', () => {
|
|
|
34
34
|
expect(B2CPartnershipConfirmation).toRenderCorrectly(props);
|
|
35
35
|
});
|
|
36
36
|
|
|
37
|
-
it('renders
|
|
37
|
+
it('renders Digital Edition access for Digital Edition subscription lowercase', () => {
|
|
38
38
|
const props = { ctaElement: 'hello', productCode: 'ep' };
|
|
39
39
|
|
|
40
40
|
expect(B2CPartnershipConfirmation).toRenderCorrectly(props);
|
|
41
41
|
});
|
|
42
42
|
|
|
43
|
-
it('renders
|
|
43
|
+
it('renders Digital Edition access for Digital Edition subscription uppercase', () => {
|
|
44
44
|
const props = { ctaElement: 'hello', productCode: 'EP' };
|
|
45
45
|
|
|
46
46
|
expect(B2CPartnershipConfirmation).toRenderCorrectly(props);
|
|
@@ -5,7 +5,7 @@ expect.extend(expectToRenderCorrectly);
|
|
|
5
5
|
|
|
6
6
|
const OFFER_TEXT = 'Offer text';
|
|
7
7
|
const nextActionTop = ['i might take you to tailor your experience'];
|
|
8
|
-
const nextActionBottom = ['i might take you to the
|
|
8
|
+
const nextActionBottom = ['i might take you to the Digital Edition'];
|
|
9
9
|
const newsletterScheduleExplainer = [
|
|
10
10
|
'You will receive your first newsletter on the next weekday to foo@bar.com',
|
|
11
11
|
];
|
|
@@ -7,7 +7,7 @@ export function PaymentTerm({
|
|
|
7
7
|
fieldId = 'paymentTermField',
|
|
8
8
|
inputName = 'paymentTerm',
|
|
9
9
|
isPrintOrBundle = false,
|
|
10
|
-
|
|
10
|
+
isDigitalEdition = false,
|
|
11
11
|
options = [],
|
|
12
12
|
showLegal = true,
|
|
13
13
|
largePrice = false,
|
|
@@ -278,7 +278,7 @@ export function PaymentTerm({
|
|
|
278
278
|
|
|
279
279
|
const getTermDisplayName = () => {
|
|
280
280
|
const showTrialCopyInTitle =
|
|
281
|
-
option.isTrial && !isPrintOrBundle && !
|
|
281
|
+
option.isTrial && !isPrintOrBundle && !isDigitalEdition;
|
|
282
282
|
|
|
283
283
|
// https://financialtimes.atlassian.net/browse/ACQ-2592
|
|
284
284
|
// We need to have one specific trial offer to have terms displayed as non-trial.
|
|
@@ -410,7 +410,7 @@ PaymentTerm.propTypes = {
|
|
|
410
410
|
fieldId: PropTypes.string,
|
|
411
411
|
inputName: PropTypes.string,
|
|
412
412
|
isPrintOrBundle: PropTypes.bool,
|
|
413
|
-
|
|
413
|
+
isDigitalEdition: PropTypes.bool,
|
|
414
414
|
options: PropTypes.arrayOf(
|
|
415
415
|
PropTypes.shape({
|
|
416
416
|
b2cDiscountCopy: PropTypes.string,
|
|
@@ -10,7 +10,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
|
10
10
|
var productCodeMapping = {
|
|
11
11
|
P1: 'Standard',
|
|
12
12
|
P2: 'Premium',
|
|
13
|
-
EP: '
|
|
13
|
+
EP: 'Digital Edition'
|
|
14
14
|
};
|
|
15
15
|
function B2CPartnershipConfirmation(_ref) {
|
|
16
16
|
var _ref$ctaElement = _ref.ctaElement,
|
|
@@ -28,7 +28,7 @@ function B2CPartnershipConfirmation(_ref) {
|
|
|
28
28
|
|
|
29
29
|
// Welcome to your Standard access
|
|
30
30
|
// Welcome to your Premium access
|
|
31
|
-
// Welcome to your
|
|
31
|
+
// Welcome to your Digital Edition access
|
|
32
32
|
// Welcome to your FT access (default)
|
|
33
33
|
var accessType = productCodeMapping[productCode === null || productCode === void 0 ? void 0 : productCode.toUpperCase()] || 'FT';
|
|
34
34
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
package/dist/payment-term.jsx
CHANGED
|
@@ -19,8 +19,8 @@ function PaymentTerm(_ref) {
|
|
|
19
19
|
inputName = _ref$inputName === void 0 ? 'paymentTerm' : _ref$inputName,
|
|
20
20
|
_ref$isPrintOrBundle = _ref.isPrintOrBundle,
|
|
21
21
|
isPrintOrBundle = _ref$isPrintOrBundle === void 0 ? false : _ref$isPrintOrBundle,
|
|
22
|
-
_ref$
|
|
23
|
-
|
|
22
|
+
_ref$isDigitalEdition = _ref.isDigitalEdition,
|
|
23
|
+
isDigitalEdition = _ref$isDigitalEdition === void 0 ? false : _ref$isDigitalEdition,
|
|
24
24
|
_ref$options = _ref.options,
|
|
25
25
|
options = _ref$options === void 0 ? [] : _ref$options,
|
|
26
26
|
_ref$showLegal = _ref.showLegal,
|
|
@@ -221,7 +221,7 @@ function PaymentTerm(_ref) {
|
|
|
221
221
|
}, option.chargeOnText)));
|
|
222
222
|
};
|
|
223
223
|
var getTermDisplayName = function getTermDisplayName() {
|
|
224
|
-
var showTrialCopyInTitle = option.isTrial && !isPrintOrBundle && !
|
|
224
|
+
var showTrialCopyInTitle = option.isTrial && !isPrintOrBundle && !isDigitalEdition;
|
|
225
225
|
|
|
226
226
|
// https://financialtimes.atlassian.net/browse/ACQ-2592
|
|
227
227
|
// We need to have one specific trial offer to have terms displayed as non-trial.
|
|
@@ -296,7 +296,7 @@ PaymentTerm.propTypes = {
|
|
|
296
296
|
fieldId: _propTypes["default"].string,
|
|
297
297
|
inputName: _propTypes["default"].string,
|
|
298
298
|
isPrintOrBundle: _propTypes["default"].bool,
|
|
299
|
-
|
|
299
|
+
isDigitalEdition: _propTypes["default"].bool,
|
|
300
300
|
options: _propTypes["default"].arrayOf(_propTypes["default"].shape({
|
|
301
301
|
b2cDiscountCopy: _propTypes["default"].string,
|
|
302
302
|
isB2cPartnership: _propTypes["default"].bool,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@financial-times/n-conversion-forms",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "39.0.0",
|
|
4
4
|
"description": "Containing jsx components and styles for forms included on Accounts and Acquisition apps (next-signup, next-profile, next-retention, etc).",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -171,7 +171,7 @@ const deliveryOptionMessages = [
|
|
|
171
171
|
customId: 'ML',
|
|
172
172
|
flightMarket: true,
|
|
173
173
|
description:
|
|
174
|
-
'Enjoy delivery of the newspaper to your home or office address. Note this is a postal delivery - expect delivery after the day of publication. If you would prefer to read the newspaper on the day of publication, purchase an FT
|
|
174
|
+
'Enjoy delivery of the newspaper to your home or office address. Note this is a postal delivery - expect delivery after the day of publication. If you would prefer to read the newspaper on the day of publication, purchase an FT Digital Edition subscription, our digital replica of each daily edition.',
|
|
175
175
|
},
|
|
176
176
|
{
|
|
177
177
|
deliveryFrequency: [
|
|
@@ -197,7 +197,7 @@ const deliveryOptionMessages = [
|
|
|
197
197
|
title: 'Mail',
|
|
198
198
|
customId: 'ML',
|
|
199
199
|
description:
|
|
200
|
-
"We can only deliver the newspaper to your location by postal mail which means your delivery will arrive up to 5 business days after the date of publication and will not include the HTSI Magazine. We also fly the newspaper to your location which means delivery is subject to flight delays/cancellations outside the FT's control. If you prefer to read the printed content on the day of publication, please proceed to subscribe to the FT
|
|
200
|
+
"We can only deliver the newspaper to your location by postal mail which means your delivery will arrive up to 5 business days after the date of publication and will not include the HTSI Magazine. We also fly the newspaper to your location which means delivery is subject to flight delays/cancellations outside the FT's control. If you prefer to read the printed content on the day of publication, please proceed to subscribe to the FT Digital Edition - a digital replica of the print edition.",
|
|
201
201
|
},
|
|
202
202
|
{
|
|
203
203
|
deliveryFrequency: [ONLY_WEEKEND_DELIVERY_FREQ],
|
|
@@ -246,7 +246,7 @@ const deliveryOptionMessages = [
|
|
|
246
246
|
title: 'Mail',
|
|
247
247
|
customId: 'ML',
|
|
248
248
|
description:
|
|
249
|
-
"We can only deliver the FT Weekend newspaper to your location by postal mail which means your delivery will arrive up to 5 business days after the date of publication and will not include the HTSI Magazine. We also fly the newspaper to your location which means delivery is subject to flight delays/cancellations outside the FT's control. If you prefer to read the printed content on the day of publication, please proceed to subscribe to the FT
|
|
249
|
+
"We can only deliver the FT Weekend newspaper to your location by postal mail which means your delivery will arrive up to 5 business days after the date of publication and will not include the HTSI Magazine. We also fly the newspaper to your location which means delivery is subject to flight delays/cancellations outside the FT's control. If you prefer to read the printed content on the day of publication, please proceed to subscribe to the FT Digital Edition - a digital replica of the print edition.",
|
|
250
250
|
},
|
|
251
251
|
];
|
|
252
252
|
|
|
@@ -103,7 +103,7 @@ describe('Find Custom Delivery Option', () => {
|
|
|
103
103
|
title: 'Mail',
|
|
104
104
|
customId: 'ML',
|
|
105
105
|
description:
|
|
106
|
-
"We can only deliver the newspaper to your location by postal mail which means your delivery will arrive up to 5 business days after the date of publication and will not include the HTSI Magazine. We also fly the newspaper to your location which means delivery is subject to flight delays/cancellations outside the FT's control. If you prefer to read the printed content on the day of publication, please proceed to subscribe to the FT
|
|
106
|
+
"We can only deliver the newspaper to your location by postal mail which means your delivery will arrive up to 5 business days after the date of publication and will not include the HTSI Magazine. We also fly the newspaper to your location which means delivery is subject to flight delays/cancellations outside the FT's control. If you prefer to read the printed content on the day of publication, please proceed to subscribe to the FT Digital Edition - a digital replica of the print edition.",
|
|
107
107
|
};
|
|
108
108
|
|
|
109
109
|
const deliveryOption = getDeliveryOption({
|
|
@@ -121,7 +121,7 @@ describe('Find Custom Delivery Option', () => {
|
|
|
121
121
|
title: 'Mail',
|
|
122
122
|
customId: 'ML',
|
|
123
123
|
description:
|
|
124
|
-
"We can only deliver the FT Weekend newspaper to your location by postal mail which means your delivery will arrive up to 5 business days after the date of publication and will not include the HTSI Magazine. We also fly the newspaper to your location which means delivery is subject to flight delays/cancellations outside the FT's control. If you prefer to read the printed content on the day of publication, please proceed to subscribe to the FT
|
|
124
|
+
"We can only deliver the FT Weekend newspaper to your location by postal mail which means your delivery will arrive up to 5 business days after the date of publication and will not include the HTSI Magazine. We also fly the newspaper to your location which means delivery is subject to flight delays/cancellations outside the FT's control. If you prefer to read the printed content on the day of publication, please proceed to subscribe to the FT Digital Edition - a digital replica of the print edition.",
|
|
125
125
|
};
|
|
126
126
|
|
|
127
127
|
const deliveryOption = getDeliveryOption({
|
|
@@ -200,7 +200,7 @@ describe('Find Custom Delivery Option', () => {
|
|
|
200
200
|
title: 'Mail Delivery',
|
|
201
201
|
customId: 'ML',
|
|
202
202
|
description:
|
|
203
|
-
'Enjoy delivery of the newspaper to your home or office address. Note this is a postal delivery - expect delivery after the day of publication. If you would prefer to read the newspaper on the day of publication, purchase an FT
|
|
203
|
+
'Enjoy delivery of the newspaper to your home or office address. Note this is a postal delivery - expect delivery after the day of publication. If you would prefer to read the newspaper on the day of publication, purchase an FT Digital Edition subscription, our digital replica of each daily edition.',
|
|
204
204
|
};
|
|
205
205
|
|
|
206
206
|
const deliveryOption = getDeliveryOption({
|