@comicrelief/component-library 7.27.0 → 7.28.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/dist/components/Organisms/Donate/Donate.js +32 -8
- package/dist/components/Organisms/Donate/Donate.md +96 -1
- package/dist/components/Organisms/Donate/Form/Form.js +13 -5
- package/dist/components/Organisms/Donate/__snapshots__/Donate.test.js.snap +12 -0
- package/dist/components/Organisms/Donate/_utils.js +39 -0
- package/package.json +1 -1
- package/src/components/Organisms/Donate/Donate.js +38 -11
- package/src/components/Organisms/Donate/Donate.md +96 -1
- package/src/components/Organisms/Donate/Form/Form.js +19 -6
- package/src/components/Organisms/Donate/__snapshots__/Donate.test.js.snap +12 -0
- package/src/components/Organisms/Donate/_utils.js +28 -0
|
@@ -12,6 +12,7 @@ var _size = require("../../../theme/shared/size");
|
|
|
12
12
|
var _Text = _interopRequireDefault(require("../../Atoms/Text/Text"));
|
|
13
13
|
var _Picture = _interopRequireDefault(require("../../Atoms/Picture/Picture"));
|
|
14
14
|
var _Form = _interopRequireDefault(require("./Form/Form"));
|
|
15
|
+
var _utils = require("./_utils");
|
|
15
16
|
var _Donate = require("./Donate.style");
|
|
16
17
|
const Donate = _ref => {
|
|
17
18
|
let {
|
|
@@ -43,7 +44,12 @@ const Donate = _ref => {
|
|
|
43
44
|
otherAmountValue,
|
|
44
45
|
additionalSingleCopy,
|
|
45
46
|
additionalMonthlyCopy,
|
|
46
|
-
defaultGivingType
|
|
47
|
+
defaultGivingType,
|
|
48
|
+
monthlyTitle,
|
|
49
|
+
monthlySubtitle,
|
|
50
|
+
// Just to keep the function call character length under control
|
|
51
|
+
monthlyChooseAmountText: monthlyChoose,
|
|
52
|
+
monthlyOtherAmountText: monthlyOther
|
|
47
53
|
} = _ref;
|
|
48
54
|
let isDesktop = (0, _reactResponsive.useMediaQuery)({
|
|
49
55
|
query: "(min-width: ".concat(_size.screen.medium, ")")
|
|
@@ -51,6 +57,7 @@ const Donate = _ref => {
|
|
|
51
57
|
|
|
52
58
|
// To let us store any updated override, and force a re-render
|
|
53
59
|
const [overrideValue, setOverrideValue] = (0, _react.useState)(null);
|
|
60
|
+
const [givingType, setGivingType] = (0, _react.useState)();
|
|
54
61
|
|
|
55
62
|
// Store the updated override value
|
|
56
63
|
(0, _react.useEffect)(() => {
|
|
@@ -59,6 +66,17 @@ const Donate = _ref => {
|
|
|
59
66
|
|
|
60
67
|
// If a boolean value has been passed, let it replace our 'internal' value
|
|
61
68
|
isDesktop = overrideValue !== null ? overrideValue : isDesktop;
|
|
69
|
+
|
|
70
|
+
// Handy helper functions to process copy, based on givingType
|
|
71
|
+
const {
|
|
72
|
+
showCopy,
|
|
73
|
+
thisTitle,
|
|
74
|
+
thisSubtitle
|
|
75
|
+
} = (0, _utils.handleTitles)(givingType, title, subtitle, monthlyTitle, monthlySubtitle);
|
|
76
|
+
const {
|
|
77
|
+
thisOtherAmountText,
|
|
78
|
+
thisChooseAmountText
|
|
79
|
+
} = (0, _utils.handleCopy)(givingType, otherAmountText, chooseAmountText, monthlyOther, monthlyChoose);
|
|
62
80
|
return /*#__PURE__*/_react.default.createElement(_Donate.Container, {
|
|
63
81
|
mobileBackgroundColor: mobileBackgroundColor,
|
|
64
82
|
desktopOverlayColor: desktopOverlayColor,
|
|
@@ -88,32 +106,34 @@ const Donate = _ref => {
|
|
|
88
106
|
"aria-live": "polite"
|
|
89
107
|
}, /*#__PURE__*/_react.default.createElement(_Donate.Header, {
|
|
90
108
|
formAlignRight: formAlignRight
|
|
91
|
-
}, /*#__PURE__*/_react.default.createElement(_Donate.HeaderInner, null,
|
|
109
|
+
}, /*#__PURE__*/_react.default.createElement(_Donate.HeaderInner, null, showCopy && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Text.default, {
|
|
92
110
|
tag: "h2",
|
|
93
111
|
color: textColor,
|
|
94
112
|
size: "big",
|
|
95
113
|
family: "Anton",
|
|
96
114
|
weight: "normal",
|
|
97
115
|
uppercase: true
|
|
98
|
-
},
|
|
116
|
+
}, thisTitle), /*#__PURE__*/_react.default.createElement(_Text.default, {
|
|
99
117
|
tag: "p",
|
|
100
118
|
color: textColor,
|
|
101
119
|
size: "m"
|
|
102
|
-
},
|
|
120
|
+
}, thisSubtitle)))), /*#__PURE__*/_react.default.createElement(_Form.default, {
|
|
103
121
|
data: data,
|
|
104
|
-
otherAmountText:
|
|
122
|
+
otherAmountText: thisOtherAmountText,
|
|
105
123
|
cartID: cartID,
|
|
106
124
|
clientID: clientID,
|
|
107
125
|
mbshipID: mbshipID,
|
|
108
126
|
donateLink: donateLink,
|
|
109
127
|
noMoneyBuys: noMoneyBuys,
|
|
110
128
|
PopUpText: PopUpText,
|
|
111
|
-
chooseAmountText:
|
|
129
|
+
chooseAmountText: thisChooseAmountText,
|
|
112
130
|
submitButtonColor: submitButtonColor,
|
|
113
131
|
otherAmountValue: otherAmountValue,
|
|
114
132
|
additionalSingleCopy: additionalSingleCopy,
|
|
115
133
|
additionalMonthlyCopy: additionalMonthlyCopy,
|
|
116
|
-
defaultGivingType: defaultGivingType
|
|
134
|
+
defaultGivingType: defaultGivingType,
|
|
135
|
+
givingType: givingType,
|
|
136
|
+
changeGivingType: setGivingType
|
|
117
137
|
})));
|
|
118
138
|
};
|
|
119
139
|
Donate.defaultProps = {
|
|
@@ -142,6 +162,10 @@ Donate.defaultProps = {
|
|
|
142
162
|
title: null,
|
|
143
163
|
additionalSingleCopy: null,
|
|
144
164
|
additionalMonthlyCopy: null,
|
|
145
|
-
defaultGivingType: null
|
|
165
|
+
defaultGivingType: null,
|
|
166
|
+
monthlyTitle: null,
|
|
167
|
+
monthlySubtitle: null,
|
|
168
|
+
monthlyChooseAmountText: null,
|
|
169
|
+
monthlyOtherAmountText: null
|
|
146
170
|
};
|
|
147
171
|
var _default = exports.default = Donate;
|
|
@@ -513,7 +513,7 @@ const desktopPictures = require('../../../styleguide/data/data').defaultData;
|
|
|
513
513
|
mobileImageLow={mobilePictures.imageLow}
|
|
514
514
|
mobileImages={mobilePictures.images}
|
|
515
515
|
data={data}
|
|
516
|
-
mbshipID="mship-
|
|
516
|
+
mbshipID="mship-16"
|
|
517
517
|
donateLink="https://donation.comicrelief.com/"
|
|
518
518
|
clientID="donate"
|
|
519
519
|
cartID="default-comicrelief"
|
|
@@ -521,4 +521,99 @@ const desktopPictures = require('../../../styleguide/data/data').defaultData;
|
|
|
521
521
|
subtitle="Please help us fund life-changing projects in the UK and around the world."
|
|
522
522
|
noMoneyBuys
|
|
523
523
|
/>;
|
|
524
|
+
```
|
|
525
|
+
|
|
526
|
+
## Monthly 'Choose Amount' and 'Other Amount' copy overrides
|
|
527
|
+
|
|
528
|
+
```js
|
|
529
|
+
import data from './dev-data/data';
|
|
530
|
+
const mobilePictures = require('../../../styleguide/data/data').mobileImages;
|
|
531
|
+
const desktopPictures = require('../../../styleguide/data/data').defaultData;
|
|
532
|
+
|
|
533
|
+
<Donate
|
|
534
|
+
alt="Background image"
|
|
535
|
+
mobileBackgroundColor="deep_violet_dark"
|
|
536
|
+
desktopOverlayColor="red"
|
|
537
|
+
submitButtonColor="blue_dark"
|
|
538
|
+
formAlignRight={true}
|
|
539
|
+
imageLow={desktopPictures.imageLow}
|
|
540
|
+
images={desktopPictures.images}
|
|
541
|
+
mobileImageLow={mobilePictures.imageLow}
|
|
542
|
+
mobileImages={mobilePictures.images}
|
|
543
|
+
data={data}
|
|
544
|
+
mbshipID="mship-17"
|
|
545
|
+
donateLink="https://donation.comicrelief.com/"
|
|
546
|
+
clientID="donate"
|
|
547
|
+
cartID="default-comicrelief"
|
|
548
|
+
title="Standard title here"
|
|
549
|
+
subtitle="Standard subtitle here"
|
|
550
|
+
otherAmountText="Here's an otherAmountText override"
|
|
551
|
+
chooseAmountText="Here's an chooseAmountText override"
|
|
552
|
+
monthlyChooseAmountText="monthlyChooseAmountText here"
|
|
553
|
+
monthlyOtherAmountText="monthlyOtherAmountText here"
|
|
554
|
+
/>;
|
|
555
|
+
```
|
|
556
|
+
|
|
557
|
+
## Monthly Title and Subtitle overrides
|
|
558
|
+
|
|
559
|
+
```js
|
|
560
|
+
import data from './dev-data/data';
|
|
561
|
+
const mobilePictures = require('../../../styleguide/data/data').mobileImages;
|
|
562
|
+
const desktopPictures = require('../../../styleguide/data/data').defaultData;
|
|
563
|
+
|
|
564
|
+
<Donate
|
|
565
|
+
alt="Background image"
|
|
566
|
+
mobileBackgroundColor="deep_violet_dark"
|
|
567
|
+
desktopOverlayColor="red"
|
|
568
|
+
submitButtonColor="blue_dark"
|
|
569
|
+
formAlignRight={true}
|
|
570
|
+
imageLow={desktopPictures.imageLow}
|
|
571
|
+
images={desktopPictures.images}
|
|
572
|
+
mobileImageLow={mobilePictures.imageLow}
|
|
573
|
+
mobileImages={mobilePictures.images}
|
|
574
|
+
data={data}
|
|
575
|
+
mbshipID="mship-18"
|
|
576
|
+
donateLink="https://donation.comicrelief.com/"
|
|
577
|
+
clientID="donate"
|
|
578
|
+
cartID="default-comicrelief"
|
|
579
|
+
title="Standard title here"
|
|
580
|
+
subtitle="Standard subtitle here"
|
|
581
|
+
otherAmountText="Here's an otherAmountText override"
|
|
582
|
+
chooseAmountText="Here's an chooseAmountText override"
|
|
583
|
+
monthlyTitle="Monthly Title here"
|
|
584
|
+
monthlySubtitle="Monthly Subtitle here"
|
|
585
|
+
/>;
|
|
586
|
+
```
|
|
587
|
+
|
|
588
|
+
## All monthly overrides
|
|
589
|
+
|
|
590
|
+
```js
|
|
591
|
+
import data from './dev-data/data';
|
|
592
|
+
const mobilePictures = require('../../../styleguide/data/data').mobileImages;
|
|
593
|
+
const desktopPictures = require('../../../styleguide/data/data').defaultData;
|
|
594
|
+
|
|
595
|
+
<Donate
|
|
596
|
+
alt="Background image"
|
|
597
|
+
mobileBackgroundColor="deep_violet_dark"
|
|
598
|
+
desktopOverlayColor="red"
|
|
599
|
+
submitButtonColor="blue_dark"
|
|
600
|
+
formAlignRight={true}
|
|
601
|
+
imageLow={desktopPictures.imageLow}
|
|
602
|
+
images={desktopPictures.images}
|
|
603
|
+
mobileImageLow={mobilePictures.imageLow}
|
|
604
|
+
mobileImages={mobilePictures.images}
|
|
605
|
+
data={data}
|
|
606
|
+
mbshipID="mship-19"
|
|
607
|
+
donateLink="https://donation.comicrelief.com/"
|
|
608
|
+
clientID="donate"
|
|
609
|
+
cartID="default-comicrelief"
|
|
610
|
+
title="Standard title here"
|
|
611
|
+
subtitle="Standard subtitle here"
|
|
612
|
+
otherAmountText="Here's an otherAmountText override"
|
|
613
|
+
chooseAmountText="Here's an chooseAmountText override"
|
|
614
|
+
monthlyTitle="Monthly Title here"
|
|
615
|
+
monthlySubtitle="Monthly Subtitle here"
|
|
616
|
+
monthlyChooseAmountText="monthlyChooseAmountText here"
|
|
617
|
+
monthlyOtherAmountText="monthlyOtherAmountText here"
|
|
618
|
+
/>;
|
|
524
619
|
```
|
|
@@ -32,9 +32,13 @@ const Signup = _ref => {
|
|
|
32
32
|
additionalSingleCopy,
|
|
33
33
|
additionalMonthlyCopy,
|
|
34
34
|
defaultGivingType,
|
|
35
|
+
monthlyChooseAmountCopy,
|
|
36
|
+
monthlyOtherAmountCopy,
|
|
37
|
+
changeGivingType,
|
|
38
|
+
givingType,
|
|
35
39
|
...rest
|
|
36
40
|
} = _ref;
|
|
37
|
-
const [givingType, setGivingType] =
|
|
41
|
+
// const [givingType, setGivingType] = useState();
|
|
38
42
|
const [errorMsg, setErrorMsg] = (0, _react.useState)(false);
|
|
39
43
|
const [amountDonate, setAmountDonate] = (0, _react.useState)(10);
|
|
40
44
|
const [moneyBuyCopy, setMoneyBuyCopy] = (0, _react.useState)(true);
|
|
@@ -55,7 +59,9 @@ const Signup = _ref => {
|
|
|
55
59
|
const thisAmount = givingData.moneybuys[1] ? givingData.moneybuys[1].value : givingData.moneybuys[0].value;
|
|
56
60
|
setAmountDonate(thisAmount);
|
|
57
61
|
}
|
|
58
|
-
|
|
62
|
+
// Pass givingType up to parent for copy-switching logic:
|
|
63
|
+
changeGivingType(givingType);
|
|
64
|
+
}, [givingType, singleGiving, regularGiving, otherAmountValue, changeGivingType]);
|
|
59
65
|
(0, _react.useEffect)(() => {
|
|
60
66
|
if (givingType) {
|
|
61
67
|
const givingData = givingType === 'single' ? singleGiving : regularGiving;
|
|
@@ -84,13 +90,15 @@ const Signup = _ref => {
|
|
|
84
90
|
|
|
85
91
|
// On load, determine what should actually be the default giving type
|
|
86
92
|
(0, _react.useEffect)(() => {
|
|
93
|
+
let newGivingType;
|
|
87
94
|
// Use any explicit setting
|
|
88
95
|
if (defaultGivingType) {
|
|
89
|
-
|
|
96
|
+
newGivingType = defaultGivingType;
|
|
90
97
|
} else {
|
|
91
98
|
// Else, use whatever's available
|
|
92
|
-
|
|
99
|
+
newGivingType = singleGiving !== null ? 'single' : 'monthly';
|
|
93
100
|
}
|
|
101
|
+
changeGivingType(newGivingType);
|
|
94
102
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
95
103
|
}, []);
|
|
96
104
|
const submitDonation = (event, amount, clientId, cartId, mbshipId, donateURL) => {
|
|
@@ -159,7 +167,7 @@ const Signup = _ref => {
|
|
|
159
167
|
const additionalCopy = showAdditionalSingleCopy || showAdditionalMonthlyCopy;
|
|
160
168
|
return /*#__PURE__*/_react.default.createElement(_Donate.FormWrapper, null, showGivingSelector && /*#__PURE__*/_react.default.createElement(_GivingSelector.default, {
|
|
161
169
|
givingType: givingType,
|
|
162
|
-
changeGivingType: data =>
|
|
170
|
+
changeGivingType: data => changeGivingType(data),
|
|
163
171
|
setPopOpen: setPopOpen,
|
|
164
172
|
mbshipID: mbshipID
|
|
165
173
|
}), popOpen && /*#__PURE__*/_react.default.createElement(_PopUpComponent.default, {
|
|
@@ -432,6 +432,10 @@ exports[`"Single Giving, No Money Buys, with overridden manual input value" rend
|
|
|
432
432
|
}
|
|
433
433
|
}
|
|
434
434
|
|
|
435
|
+
@media (min-width:1024px) {
|
|
436
|
+
|
|
437
|
+
}
|
|
438
|
+
|
|
435
439
|
@media (min-width:740px) {
|
|
436
440
|
.c1 {
|
|
437
441
|
padding: 4rem 1rem;
|
|
@@ -1718,6 +1722,14 @@ exports[`Single donation renders correctly 1`] = `
|
|
|
1718
1722
|
}
|
|
1719
1723
|
}
|
|
1720
1724
|
|
|
1725
|
+
@media (min-width:740px) {
|
|
1726
|
+
|
|
1727
|
+
}
|
|
1728
|
+
|
|
1729
|
+
@media (min-width:1024px) {
|
|
1730
|
+
|
|
1731
|
+
}
|
|
1732
|
+
|
|
1721
1733
|
@media (min-width:1024px) {
|
|
1722
1734
|
.c2 {
|
|
1723
1735
|
width: 50%;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.handleTitles = exports.handleCopy = void 0;
|
|
7
|
+
const handleTitles = (givingType, title, subtitle, monthlyTitle, monthlySubtitle) => {
|
|
8
|
+
let thisTitle;
|
|
9
|
+
let thisSubtitle;
|
|
10
|
+
const showMonthlyCopy = givingType === 'monthly' && Boolean(monthlySubtitle) && Boolean(monthlyTitle);
|
|
11
|
+
// Overall flag as to whether we render copy *at all*
|
|
12
|
+
const showCopy = showMonthlyCopy || Boolean(subtitle) && Boolean(title);
|
|
13
|
+
|
|
14
|
+
// Apply the override if we've got monthly content AND giving type:
|
|
15
|
+
if (showMonthlyCopy) {
|
|
16
|
+
thisTitle = monthlyTitle;
|
|
17
|
+
thisSubtitle = monthlyTitle;
|
|
18
|
+
} else if (showCopy) {
|
|
19
|
+
// Else, fall back to the default, after checking it's appropriate
|
|
20
|
+
thisTitle = title;
|
|
21
|
+
thisSubtitle = subtitle;
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
showCopy,
|
|
25
|
+
thisTitle,
|
|
26
|
+
thisSubtitle
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
exports.handleTitles = handleTitles;
|
|
30
|
+
const handleCopy = (gType, otherAmount, chooseAmount, monthlyOtherAmount, monthlyChooseAmount) => {
|
|
31
|
+
// Only use any monthly overrides for the appropriate givingType
|
|
32
|
+
const thisOtherAmountText = gType === 'monthly' && Boolean(monthlyOtherAmount) ? monthlyOtherAmount : otherAmount;
|
|
33
|
+
const thisChooseAmountText = gType === 'monthly' && Boolean(monthlyChooseAmount) ? monthlyChooseAmount : chooseAmount;
|
|
34
|
+
return {
|
|
35
|
+
thisOtherAmountText,
|
|
36
|
+
thisChooseAmountText
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
exports.handleCopy = handleCopy;
|
package/package.json
CHANGED
|
@@ -6,6 +6,8 @@ import { screen } from '../../../theme/shared/size';
|
|
|
6
6
|
import Text from '../../Atoms/Text/Text';
|
|
7
7
|
import Picture from '../../Atoms/Picture/Picture';
|
|
8
8
|
import Form from './Form/Form';
|
|
9
|
+
import { handleTitles, handleCopy } from './_utils';
|
|
10
|
+
|
|
9
11
|
import {
|
|
10
12
|
BgImage,
|
|
11
13
|
Container,
|
|
@@ -43,12 +45,18 @@ const Donate = ({
|
|
|
43
45
|
otherAmountValue,
|
|
44
46
|
additionalSingleCopy,
|
|
45
47
|
additionalMonthlyCopy,
|
|
46
|
-
defaultGivingType
|
|
48
|
+
defaultGivingType,
|
|
49
|
+
monthlyTitle,
|
|
50
|
+
monthlySubtitle,
|
|
51
|
+
// Just to keep the function call character length under control
|
|
52
|
+
monthlyChooseAmountText: monthlyChoose,
|
|
53
|
+
monthlyOtherAmountText: monthlyOther
|
|
47
54
|
}) => {
|
|
48
55
|
let isDesktop = useMediaQuery({ query: `(min-width: ${screen.medium})` });
|
|
49
56
|
|
|
50
57
|
// To let us store any updated override, and force a re-render
|
|
51
58
|
const [overrideValue, setOverrideValue] = useState(null);
|
|
59
|
+
const [givingType, setGivingType] = useState();
|
|
52
60
|
|
|
53
61
|
// Store the updated override value
|
|
54
62
|
useEffect(() => {
|
|
@@ -58,6 +66,18 @@ const Donate = ({
|
|
|
58
66
|
// If a boolean value has been passed, let it replace our 'internal' value
|
|
59
67
|
isDesktop = overrideValue !== null ? overrideValue : isDesktop;
|
|
60
68
|
|
|
69
|
+
// Handy helper functions to process copy, based on givingType
|
|
70
|
+
const {
|
|
71
|
+
showCopy,
|
|
72
|
+
thisTitle,
|
|
73
|
+
thisSubtitle
|
|
74
|
+
} = handleTitles(givingType, title, subtitle, monthlyTitle, monthlySubtitle);
|
|
75
|
+
|
|
76
|
+
const {
|
|
77
|
+
thisOtherAmountText,
|
|
78
|
+
thisChooseAmountText
|
|
79
|
+
} = handleCopy(givingType, otherAmountText, chooseAmountText, monthlyOther, monthlyChoose);
|
|
80
|
+
|
|
61
81
|
return (
|
|
62
82
|
<Container
|
|
63
83
|
mobileBackgroundColor={mobileBackgroundColor}
|
|
@@ -95,9 +115,8 @@ const Donate = ({
|
|
|
95
115
|
<Wrapper formAlignRight={formAlignRight} aria-live="polite">
|
|
96
116
|
<Header formAlignRight={formAlignRight}>
|
|
97
117
|
<HeaderInner>
|
|
98
|
-
{
|
|
118
|
+
{showCopy && (
|
|
99
119
|
<>
|
|
100
|
-
{Boolean(title) && (
|
|
101
120
|
<Text
|
|
102
121
|
tag="h2"
|
|
103
122
|
color={textColor}
|
|
@@ -106,12 +125,10 @@ const Donate = ({
|
|
|
106
125
|
weight="normal"
|
|
107
126
|
uppercase
|
|
108
127
|
>
|
|
109
|
-
{
|
|
128
|
+
{thisTitle}
|
|
110
129
|
</Text>
|
|
111
|
-
)}
|
|
112
|
-
|
|
113
130
|
<Text tag="p" color={textColor} size="m">
|
|
114
|
-
{
|
|
131
|
+
{thisSubtitle}
|
|
115
132
|
</Text>
|
|
116
133
|
</>
|
|
117
134
|
)}
|
|
@@ -120,19 +137,21 @@ const Donate = ({
|
|
|
120
137
|
|
|
121
138
|
<Form
|
|
122
139
|
data={data}
|
|
123
|
-
otherAmountText={
|
|
140
|
+
otherAmountText={thisOtherAmountText}
|
|
124
141
|
cartID={cartID}
|
|
125
142
|
clientID={clientID}
|
|
126
143
|
mbshipID={mbshipID}
|
|
127
144
|
donateLink={donateLink}
|
|
128
145
|
noMoneyBuys={noMoneyBuys}
|
|
129
146
|
PopUpText={PopUpText}
|
|
130
|
-
chooseAmountText={
|
|
147
|
+
chooseAmountText={thisChooseAmountText}
|
|
131
148
|
submitButtonColor={submitButtonColor}
|
|
132
149
|
otherAmountValue={otherAmountValue}
|
|
133
150
|
additionalSingleCopy={additionalSingleCopy}
|
|
134
151
|
additionalMonthlyCopy={additionalMonthlyCopy}
|
|
135
152
|
defaultGivingType={defaultGivingType}
|
|
153
|
+
givingType={givingType}
|
|
154
|
+
changeGivingType={setGivingType}
|
|
136
155
|
/>
|
|
137
156
|
</Wrapper>
|
|
138
157
|
</Container>
|
|
@@ -168,7 +187,11 @@ Donate.propTypes = {
|
|
|
168
187
|
otherAmountValue: PropTypes.number,
|
|
169
188
|
additionalSingleCopy: PropTypes.string,
|
|
170
189
|
additionalMonthlyCopy: PropTypes.string,
|
|
171
|
-
defaultGivingType: PropTypes.string
|
|
190
|
+
defaultGivingType: PropTypes.string,
|
|
191
|
+
monthlyTitle: PropTypes.string,
|
|
192
|
+
monthlySubtitle: PropTypes.string,
|
|
193
|
+
monthlyChooseAmountText: PropTypes.string,
|
|
194
|
+
monthlyOtherAmountText: PropTypes.string
|
|
172
195
|
};
|
|
173
196
|
|
|
174
197
|
Donate.defaultProps = {
|
|
@@ -198,7 +221,11 @@ Donate.defaultProps = {
|
|
|
198
221
|
title: null,
|
|
199
222
|
additionalSingleCopy: null,
|
|
200
223
|
additionalMonthlyCopy: null,
|
|
201
|
-
defaultGivingType: null
|
|
224
|
+
defaultGivingType: null,
|
|
225
|
+
monthlyTitle: null,
|
|
226
|
+
monthlySubtitle: null,
|
|
227
|
+
monthlyChooseAmountText: null,
|
|
228
|
+
monthlyOtherAmountText: null
|
|
202
229
|
};
|
|
203
230
|
|
|
204
231
|
export default Donate;
|
|
@@ -513,7 +513,7 @@ const desktopPictures = require('../../../styleguide/data/data').defaultData;
|
|
|
513
513
|
mobileImageLow={mobilePictures.imageLow}
|
|
514
514
|
mobileImages={mobilePictures.images}
|
|
515
515
|
data={data}
|
|
516
|
-
mbshipID="mship-
|
|
516
|
+
mbshipID="mship-16"
|
|
517
517
|
donateLink="https://donation.comicrelief.com/"
|
|
518
518
|
clientID="donate"
|
|
519
519
|
cartID="default-comicrelief"
|
|
@@ -521,4 +521,99 @@ const desktopPictures = require('../../../styleguide/data/data').defaultData;
|
|
|
521
521
|
subtitle="Please help us fund life-changing projects in the UK and around the world."
|
|
522
522
|
noMoneyBuys
|
|
523
523
|
/>;
|
|
524
|
+
```
|
|
525
|
+
|
|
526
|
+
## Monthly 'Choose Amount' and 'Other Amount' copy overrides
|
|
527
|
+
|
|
528
|
+
```js
|
|
529
|
+
import data from './dev-data/data';
|
|
530
|
+
const mobilePictures = require('../../../styleguide/data/data').mobileImages;
|
|
531
|
+
const desktopPictures = require('../../../styleguide/data/data').defaultData;
|
|
532
|
+
|
|
533
|
+
<Donate
|
|
534
|
+
alt="Background image"
|
|
535
|
+
mobileBackgroundColor="deep_violet_dark"
|
|
536
|
+
desktopOverlayColor="red"
|
|
537
|
+
submitButtonColor="blue_dark"
|
|
538
|
+
formAlignRight={true}
|
|
539
|
+
imageLow={desktopPictures.imageLow}
|
|
540
|
+
images={desktopPictures.images}
|
|
541
|
+
mobileImageLow={mobilePictures.imageLow}
|
|
542
|
+
mobileImages={mobilePictures.images}
|
|
543
|
+
data={data}
|
|
544
|
+
mbshipID="mship-17"
|
|
545
|
+
donateLink="https://donation.comicrelief.com/"
|
|
546
|
+
clientID="donate"
|
|
547
|
+
cartID="default-comicrelief"
|
|
548
|
+
title="Standard title here"
|
|
549
|
+
subtitle="Standard subtitle here"
|
|
550
|
+
otherAmountText="Here's an otherAmountText override"
|
|
551
|
+
chooseAmountText="Here's an chooseAmountText override"
|
|
552
|
+
monthlyChooseAmountText="monthlyChooseAmountText here"
|
|
553
|
+
monthlyOtherAmountText="monthlyOtherAmountText here"
|
|
554
|
+
/>;
|
|
555
|
+
```
|
|
556
|
+
|
|
557
|
+
## Monthly Title and Subtitle overrides
|
|
558
|
+
|
|
559
|
+
```js
|
|
560
|
+
import data from './dev-data/data';
|
|
561
|
+
const mobilePictures = require('../../../styleguide/data/data').mobileImages;
|
|
562
|
+
const desktopPictures = require('../../../styleguide/data/data').defaultData;
|
|
563
|
+
|
|
564
|
+
<Donate
|
|
565
|
+
alt="Background image"
|
|
566
|
+
mobileBackgroundColor="deep_violet_dark"
|
|
567
|
+
desktopOverlayColor="red"
|
|
568
|
+
submitButtonColor="blue_dark"
|
|
569
|
+
formAlignRight={true}
|
|
570
|
+
imageLow={desktopPictures.imageLow}
|
|
571
|
+
images={desktopPictures.images}
|
|
572
|
+
mobileImageLow={mobilePictures.imageLow}
|
|
573
|
+
mobileImages={mobilePictures.images}
|
|
574
|
+
data={data}
|
|
575
|
+
mbshipID="mship-18"
|
|
576
|
+
donateLink="https://donation.comicrelief.com/"
|
|
577
|
+
clientID="donate"
|
|
578
|
+
cartID="default-comicrelief"
|
|
579
|
+
title="Standard title here"
|
|
580
|
+
subtitle="Standard subtitle here"
|
|
581
|
+
otherAmountText="Here's an otherAmountText override"
|
|
582
|
+
chooseAmountText="Here's an chooseAmountText override"
|
|
583
|
+
monthlyTitle="Monthly Title here"
|
|
584
|
+
monthlySubtitle="Monthly Subtitle here"
|
|
585
|
+
/>;
|
|
586
|
+
```
|
|
587
|
+
|
|
588
|
+
## All monthly overrides
|
|
589
|
+
|
|
590
|
+
```js
|
|
591
|
+
import data from './dev-data/data';
|
|
592
|
+
const mobilePictures = require('../../../styleguide/data/data').mobileImages;
|
|
593
|
+
const desktopPictures = require('../../../styleguide/data/data').defaultData;
|
|
594
|
+
|
|
595
|
+
<Donate
|
|
596
|
+
alt="Background image"
|
|
597
|
+
mobileBackgroundColor="deep_violet_dark"
|
|
598
|
+
desktopOverlayColor="red"
|
|
599
|
+
submitButtonColor="blue_dark"
|
|
600
|
+
formAlignRight={true}
|
|
601
|
+
imageLow={desktopPictures.imageLow}
|
|
602
|
+
images={desktopPictures.images}
|
|
603
|
+
mobileImageLow={mobilePictures.imageLow}
|
|
604
|
+
mobileImages={mobilePictures.images}
|
|
605
|
+
data={data}
|
|
606
|
+
mbshipID="mship-19"
|
|
607
|
+
donateLink="https://donation.comicrelief.com/"
|
|
608
|
+
clientID="donate"
|
|
609
|
+
cartID="default-comicrelief"
|
|
610
|
+
title="Standard title here"
|
|
611
|
+
subtitle="Standard subtitle here"
|
|
612
|
+
otherAmountText="Here's an otherAmountText override"
|
|
613
|
+
chooseAmountText="Here's an chooseAmountText override"
|
|
614
|
+
monthlyTitle="Monthly Title here"
|
|
615
|
+
monthlySubtitle="Monthly Subtitle here"
|
|
616
|
+
monthlyChooseAmountText="monthlyChooseAmountText here"
|
|
617
|
+
monthlyOtherAmountText="monthlyOtherAmountText here"
|
|
618
|
+
/>;
|
|
524
619
|
```
|
|
@@ -41,9 +41,13 @@ const Signup = ({
|
|
|
41
41
|
additionalSingleCopy,
|
|
42
42
|
additionalMonthlyCopy,
|
|
43
43
|
defaultGivingType,
|
|
44
|
+
monthlyChooseAmountCopy,
|
|
45
|
+
monthlyOtherAmountCopy,
|
|
46
|
+
changeGivingType,
|
|
47
|
+
givingType,
|
|
44
48
|
...rest
|
|
45
49
|
}) => {
|
|
46
|
-
const [givingType, setGivingType] = useState();
|
|
50
|
+
// const [givingType, setGivingType] = useState();
|
|
47
51
|
const [errorMsg, setErrorMsg] = useState(false);
|
|
48
52
|
const [amountDonate, setAmountDonate] = useState(10);
|
|
49
53
|
const [moneyBuyCopy, setMoneyBuyCopy] = useState(true);
|
|
@@ -68,7 +72,9 @@ const Signup = ({
|
|
|
68
72
|
|
|
69
73
|
setAmountDonate(thisAmount);
|
|
70
74
|
}
|
|
71
|
-
|
|
75
|
+
// Pass givingType up to parent for copy-switching logic:
|
|
76
|
+
changeGivingType(givingType);
|
|
77
|
+
}, [givingType, singleGiving, regularGiving, otherAmountValue, changeGivingType]);
|
|
72
78
|
|
|
73
79
|
useEffect(() => {
|
|
74
80
|
if (givingType) {
|
|
@@ -115,13 +121,16 @@ const Signup = ({
|
|
|
115
121
|
|
|
116
122
|
// On load, determine what should actually be the default giving type
|
|
117
123
|
useEffect(() => {
|
|
124
|
+
let newGivingType;
|
|
118
125
|
// Use any explicit setting
|
|
119
126
|
if (defaultGivingType) {
|
|
120
|
-
|
|
127
|
+
newGivingType = defaultGivingType;
|
|
121
128
|
} else {
|
|
122
129
|
// Else, use whatever's available
|
|
123
|
-
|
|
130
|
+
newGivingType = singleGiving !== null ? 'single' : 'monthly';
|
|
124
131
|
}
|
|
132
|
+
|
|
133
|
+
changeGivingType(newGivingType);
|
|
125
134
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
126
135
|
}, []);
|
|
127
136
|
|
|
@@ -217,7 +226,7 @@ const Signup = ({
|
|
|
217
226
|
{showGivingSelector && (
|
|
218
227
|
<GivingSelector
|
|
219
228
|
givingType={givingType}
|
|
220
|
-
changeGivingType={data =>
|
|
229
|
+
changeGivingType={data => changeGivingType(data)}
|
|
221
230
|
setPopOpen={setPopOpen}
|
|
222
231
|
mbshipID={mbshipID}
|
|
223
232
|
/>
|
|
@@ -333,7 +342,11 @@ Signup.propTypes = {
|
|
|
333
342
|
otherAmountValue: PropTypes.number,
|
|
334
343
|
additionalSingleCopy: PropTypes.string,
|
|
335
344
|
additionalMonthlyCopy: PropTypes.string,
|
|
336
|
-
defaultGivingType: PropTypes.string
|
|
345
|
+
defaultGivingType: PropTypes.string,
|
|
346
|
+
monthlyChooseAmountCopy: PropTypes.string.isRequired,
|
|
347
|
+
monthlyOtherAmountCopy: PropTypes.string.isRequired,
|
|
348
|
+
changeGivingType: PropTypes.func.isRequired,
|
|
349
|
+
givingType: PropTypes.string.isRequired
|
|
337
350
|
};
|
|
338
351
|
|
|
339
352
|
Signup.defaultProps = {
|
|
@@ -432,6 +432,10 @@ exports[`"Single Giving, No Money Buys, with overridden manual input value" rend
|
|
|
432
432
|
}
|
|
433
433
|
}
|
|
434
434
|
|
|
435
|
+
@media (min-width:1024px) {
|
|
436
|
+
|
|
437
|
+
}
|
|
438
|
+
|
|
435
439
|
@media (min-width:740px) {
|
|
436
440
|
.c1 {
|
|
437
441
|
padding: 4rem 1rem;
|
|
@@ -1718,6 +1722,14 @@ exports[`Single donation renders correctly 1`] = `
|
|
|
1718
1722
|
}
|
|
1719
1723
|
}
|
|
1720
1724
|
|
|
1725
|
+
@media (min-width:740px) {
|
|
1726
|
+
|
|
1727
|
+
}
|
|
1728
|
+
|
|
1729
|
+
@media (min-width:1024px) {
|
|
1730
|
+
|
|
1731
|
+
}
|
|
1732
|
+
|
|
1721
1733
|
@media (min-width:1024px) {
|
|
1722
1734
|
.c2 {
|
|
1723
1735
|
width: 50%;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
const handleTitles = (givingType, title, subtitle, monthlyTitle, monthlySubtitle) => {
|
|
2
|
+
let thisTitle; let thisSubtitle;
|
|
3
|
+
const showMonthlyCopy = givingType === 'monthly' && Boolean(monthlySubtitle) && Boolean(monthlyTitle);
|
|
4
|
+
// Overall flag as to whether we render copy *at all*
|
|
5
|
+
const showCopy = showMonthlyCopy || (Boolean(subtitle) && Boolean(title));
|
|
6
|
+
|
|
7
|
+
// Apply the override if we've got monthly content AND giving type:
|
|
8
|
+
if (showMonthlyCopy) {
|
|
9
|
+
thisTitle = monthlyTitle;
|
|
10
|
+
thisSubtitle = monthlyTitle;
|
|
11
|
+
} else if (showCopy) {
|
|
12
|
+
// Else, fall back to the default, after checking it's appropriate
|
|
13
|
+
thisTitle = title;
|
|
14
|
+
thisSubtitle = subtitle;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return { showCopy, thisTitle, thisSubtitle };
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
const handleCopy = (gType, otherAmount, chooseAmount, monthlyOtherAmount, monthlyChooseAmount) => {
|
|
21
|
+
// Only use any monthly overrides for the appropriate givingType
|
|
22
|
+
const thisOtherAmountText = (gType === 'monthly' && Boolean(monthlyOtherAmount) ? monthlyOtherAmount : otherAmount);
|
|
23
|
+
const thisChooseAmountText = (gType === 'monthly' && Boolean(monthlyChooseAmount) ? monthlyChooseAmount : chooseAmount);
|
|
24
|
+
|
|
25
|
+
return { thisOtherAmountText, thisChooseAmountText };
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export { handleTitles, handleCopy };
|