@comicrelief/component-library 7.12.2 → 7.13.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 +7 -5
- package/dist/components/Organisms/Donate/Donate.md +96 -0
- package/dist/components/Organisms/Donate/Donate.test.js +19 -0
- package/dist/components/Organisms/Donate/Form/Form.js +22 -8
- package/dist/components/Organisms/Donate/__snapshots__/Donate.test.js.snap +650 -0
- package/package.json +1 -1
- package/src/components/Organisms/Donate/Donate.js +9 -5
- package/src/components/Organisms/Donate/Donate.md +96 -0
- package/src/components/Organisms/Donate/Donate.test.js +23 -0
- package/src/components/Organisms/Donate/Form/Form.js +25 -10
- package/src/components/Organisms/Donate/__snapshots__/Donate.test.js.snap +650 -0
|
@@ -103,6 +103,102 @@ const desktopPictures = require('../../../styleguide/data/data').defaultData;
|
|
|
103
103
|
/>;
|
|
104
104
|
```
|
|
105
105
|
|
|
106
|
+
## Single Giving "No Money Buys" with overridden manual input value
|
|
107
|
+
|
|
108
|
+
```js
|
|
109
|
+
import data from './dev-data/data-single';
|
|
110
|
+
const mobilePictures = require('../../../styleguide/data/data').mobileImages;
|
|
111
|
+
const desktopPictures = require('../../../styleguide/data/data').defaultData;
|
|
112
|
+
import { useState } from 'react';
|
|
113
|
+
|
|
114
|
+
// Simulating default state of a parent componenet
|
|
115
|
+
const [amountDonate, setAmountDonate] = useState(123.45);
|
|
116
|
+
|
|
117
|
+
// Simulating state update of a parent componenet
|
|
118
|
+
setTimeout(()=>{
|
|
119
|
+
setAmountDonate(567.89);
|
|
120
|
+
}, 3000);
|
|
121
|
+
|
|
122
|
+
<Donate
|
|
123
|
+
mobileBackgroundColor="blue_dark"
|
|
124
|
+
desktopOverlayColor="blue_dark"
|
|
125
|
+
formAlignRight={false}
|
|
126
|
+
imageLow={desktopPictures.imageLow}
|
|
127
|
+
images={desktopPictures.images}
|
|
128
|
+
mobileImageLow={mobilePictures.imageLow}
|
|
129
|
+
mobileImages={mobilePictures.images}
|
|
130
|
+
data={data}
|
|
131
|
+
mbshipID="mship-4"
|
|
132
|
+
donateLink="https://donation.comicrelief.com/"
|
|
133
|
+
clientID="donate"
|
|
134
|
+
cartID="default-comicrelief"
|
|
135
|
+
title="Donate Now"
|
|
136
|
+
noMoneyBuys
|
|
137
|
+
subtitle="Please help us fund life-changing projects in the UK and around the world."
|
|
138
|
+
otherAmountValue={amountDonate}
|
|
139
|
+
/>;
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## Form align right, with red desktop overlay and purple mobile background colour, with a blue submit button, with overridden manual input value
|
|
143
|
+
|
|
144
|
+
```js
|
|
145
|
+
import data from './dev-data/data';
|
|
146
|
+
const mobilePictures = require('../../../styleguide/data/data').mobileImages;
|
|
147
|
+
const desktopPictures = require('../../../styleguide/data/data').defaultData;
|
|
148
|
+
import { useState } from 'react';
|
|
149
|
+
|
|
150
|
+
// Simulating default state of a parent componenet
|
|
151
|
+
const [amountDonate, setAmountDonate] = useState(111.22);
|
|
152
|
+
|
|
153
|
+
// Simulating state update of a parent componenet
|
|
154
|
+
setTimeout(()=>{
|
|
155
|
+
setAmountDonate(333.44);
|
|
156
|
+
}, 3000);
|
|
157
|
+
|
|
158
|
+
<Donate
|
|
159
|
+
alt="Background image"
|
|
160
|
+
formAlignRight={true}
|
|
161
|
+
imageLow={desktopPictures.imageLow}
|
|
162
|
+
images={desktopPictures.images}
|
|
163
|
+
mobileImageLow={mobilePictures.imageLow}
|
|
164
|
+
mobileImages={mobilePictures.images}
|
|
165
|
+
data={data}
|
|
166
|
+
mbshipID="mship-1"
|
|
167
|
+
donateLink="https://donation.comicrelief.com/"
|
|
168
|
+
clientID="donate"
|
|
169
|
+
cartID="default-comicrelief"
|
|
170
|
+
title="Donate Now"
|
|
171
|
+
subtitle="Please help us fund life-changing projects in the UK and around the world."
|
|
172
|
+
otherAmountValue={amountDonate}
|
|
173
|
+
/>;
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
## Form align left, with custom message after choosing an "Other amount" to donate, high value cart.
|
|
177
|
+
```js
|
|
178
|
+
import data from './dev-data/data-high-value';
|
|
179
|
+
const mobilePictures = require('../../../styleguide/data/data').mobileImages;
|
|
180
|
+
const desktopPictures = require('../../../styleguide/data/data').defaultData;
|
|
181
|
+
|
|
182
|
+
<Donate
|
|
183
|
+
mobileBackgroundColor="blue_dark"
|
|
184
|
+
desktopOverlayColor="blue_dark"
|
|
185
|
+
formAlignRight={false}
|
|
186
|
+
imageLow={desktopPictures.imageLow}
|
|
187
|
+
images={desktopPictures.images}
|
|
188
|
+
mobileImageLow={mobilePictures.imageLow}
|
|
189
|
+
mobileImages={mobilePictures.images}
|
|
190
|
+
data={data}
|
|
191
|
+
mbshipID="mship-2"
|
|
192
|
+
donateLink="https://donation.comicrelief.com/"
|
|
193
|
+
clientID="donate"
|
|
194
|
+
cartID="default-comicrelief"
|
|
195
|
+
title="Donate Now"
|
|
196
|
+
subtitle="Please help us fund life-changing projects in the UK and around the world."
|
|
197
|
+
otherAmountText="Overridden via the 'Other amount text' prop"
|
|
198
|
+
/>;
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
|
|
106
202
|
## Form align right - no subtitle
|
|
107
203
|
|
|
108
204
|
```js
|
|
@@ -72,3 +72,26 @@ it('Single donation with no Money Buys renders correctly', () => {
|
|
|
72
72
|
|
|
73
73
|
expect(tree).toMatchSnapshot();
|
|
74
74
|
});
|
|
75
|
+
|
|
76
|
+
it('"Single Giving, No Money Buys, with overridden manual input value" renders correctly', () => {
|
|
77
|
+
const tree = renderWithTheme(
|
|
78
|
+
<Donate
|
|
79
|
+
mobileBackgroundColor="blue_dark"
|
|
80
|
+
desktopOverlayColor="blue_dark"
|
|
81
|
+
formAlignRight={false}
|
|
82
|
+
imageLow={defaultData.pictures.imageLow}
|
|
83
|
+
images={defaultData.pictures.images}
|
|
84
|
+
data={data}
|
|
85
|
+
mbshipID="mship-4"
|
|
86
|
+
donateLink="https://donation.comicrelief.com/"
|
|
87
|
+
clientID="donate"
|
|
88
|
+
cartID="default-comicrelief"
|
|
89
|
+
title="Donate Now"
|
|
90
|
+
noMoneyBuys
|
|
91
|
+
subtitle="Please help us fund life-changing projects in the UK and around the world."
|
|
92
|
+
otherAmountValue={345.67}
|
|
93
|
+
/>
|
|
94
|
+
).toJSON();
|
|
95
|
+
|
|
96
|
+
expect(tree).toMatchSnapshot();
|
|
97
|
+
});
|
|
@@ -35,6 +35,7 @@ const Signup = ({
|
|
|
35
35
|
PopUpText,
|
|
36
36
|
chooseAmountText,
|
|
37
37
|
submitButtonColor,
|
|
38
|
+
otherAmountValue,
|
|
38
39
|
...rest
|
|
39
40
|
}) => {
|
|
40
41
|
const [givingType, setGivingType] = useState('single');
|
|
@@ -46,17 +47,23 @@ const Signup = ({
|
|
|
46
47
|
const [popUpShown, setPopUpShown] = useState(false);
|
|
47
48
|
|
|
48
49
|
useEffect(() => {
|
|
49
|
-
|
|
50
|
+
// If a specific 'other amount' has been passed down, use it,
|
|
51
|
+
// otherwise assign based on the associated moneybuys:
|
|
52
|
+
if (otherAmountValue) {
|
|
53
|
+
setAmountDonate(parseFloat(otherAmountValue));
|
|
54
|
+
} else {
|
|
55
|
+
const givingData = givingType === 'single' ? singleGiving : regularGiving;
|
|
50
56
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
+
// Check the 2nd moneybuy exists before using it;
|
|
58
|
+
// 'philantrophy' carts have been set up to use a single moneybuy.
|
|
59
|
+
// See ENG-1685 for more details
|
|
60
|
+
const thisAmount = givingData.moneybuys[1]
|
|
61
|
+
? givingData.moneybuys[1].value
|
|
62
|
+
: givingData.moneybuys[0].value;
|
|
57
63
|
|
|
58
|
-
|
|
59
|
-
|
|
64
|
+
setAmountDonate(parseFloat(thisAmount));
|
|
65
|
+
}
|
|
66
|
+
}, [givingType, singleGiving, regularGiving, otherAmountValue]);
|
|
60
67
|
|
|
61
68
|
useEffect(() => {
|
|
62
69
|
const givingData = givingType === 'single' ? singleGiving : regularGiving;
|
|
@@ -124,6 +131,13 @@ const Signup = ({
|
|
|
124
131
|
}
|
|
125
132
|
};
|
|
126
133
|
|
|
134
|
+
// Update the local state if the prop has been set and changed
|
|
135
|
+
useEffect(() => {
|
|
136
|
+
if (otherAmountValue) {
|
|
137
|
+
setAmountDonate(parseFloat(otherAmountValue));
|
|
138
|
+
}
|
|
139
|
+
}, [otherAmountValue, setAmountDonate]);
|
|
140
|
+
|
|
127
141
|
// Create money buy boxes
|
|
128
142
|
const givingData = givingType === 'single' ? singleGiving : regularGiving;
|
|
129
143
|
const showGivingSelector = singleGiving !== null && regularGiving !== null;
|
|
@@ -239,7 +253,8 @@ Signup.propTypes = {
|
|
|
239
253
|
data: PropTypes.objectOf(PropTypes.shape),
|
|
240
254
|
PopUpText: PropTypes.string.isRequired,
|
|
241
255
|
chooseAmountText: PropTypes.string.isRequired,
|
|
242
|
-
submitButtonColor: PropTypes.string.isRequired
|
|
256
|
+
submitButtonColor: PropTypes.string.isRequired,
|
|
257
|
+
otherAmountValue: PropTypes.number.isRequired
|
|
243
258
|
};
|
|
244
259
|
|
|
245
260
|
Signup.defaultProps = {
|