@comicrelief/component-library 7.22.0 → 7.23.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/cypress/e2e/components/organisms/impactSlider.cy.js +72 -0
- package/dist/components/Atoms/Button/Button.js +4 -16
- package/dist/components/Atoms/Button/Button.test.js +0 -5
- package/dist/components/Atoms/ButtonWithStates/ButtonWithStates.js +14 -31
- package/dist/components/Atoms/Checkbox/Checkbox.js +4 -17
- package/dist/components/Atoms/Checkbox/Checkbox.test.js +0 -5
- package/dist/components/Atoms/Confetti/Confetti.js +8 -23
- package/dist/components/Atoms/Confetti/_TriggerConfetti.js +5 -13
- package/dist/components/Atoms/ErrorText/ErrorText.js +2 -14
- package/dist/components/Atoms/ErrorText/ErrorText.test.js +0 -5
- package/dist/components/Atoms/Icons/Arrow.js +7 -21
- package/dist/components/Atoms/Icons/AtSign.js +4 -14
- package/dist/components/Atoms/Icons/Chevron.js +7 -21
- package/dist/components/Atoms/Icons/Curve.js +1 -6
- package/dist/components/Atoms/Icons/Download.js +4 -14
- package/dist/components/Atoms/Icons/External.js +4 -14
- package/dist/components/Atoms/Icons/Favourite.js +4 -14
- package/dist/components/Atoms/Icons/Internal.js +4 -14
- package/dist/components/Atoms/Icons/index.js +14 -22
- package/dist/components/Atoms/Input/Input.js +15 -35
- package/dist/components/Atoms/Input/input.test.js +0 -5
- package/dist/components/Atoms/Label/Label.js +12 -24
- package/dist/components/Atoms/Link/Link.js +18 -35
- package/dist/components/Atoms/Link/Link.style.js +9 -25
- package/dist/components/Atoms/Link/Link.test.js +0 -6
- package/dist/components/Atoms/Logo/Logo.js +5 -22
- package/dist/components/Atoms/Logo/Logo.test.js +0 -5
- package/dist/components/Atoms/Pagination/Item/Item.js +3 -11
- package/dist/components/Atoms/Pagination/Item/Item.style.js +18 -30
- package/dist/components/Atoms/Pagination/List/List.js +10 -21
- package/dist/components/Atoms/Pagination/Pagination.js +25 -47
- package/dist/components/Atoms/Pagination/Pagination.test.js +0 -5
- package/dist/components/Atoms/Pagination/Utils/PaginationCalculator.js +14 -30
- package/dist/components/Atoms/Picture/Picture.js +19 -39
- package/dist/components/Atoms/Picture/Picture.test.js +0 -6
- package/dist/components/Atoms/RadioButton/RadioButton.js +6 -18
- package/dist/components/Atoms/RadioButton/RadioButton.test.js +0 -5
- package/dist/components/Atoms/RichText/RichText.js +4 -15
- package/dist/components/Atoms/RichText/RichText.test.js +0 -5
- package/dist/components/Atoms/Select/Select.js +19 -39
- package/dist/components/Atoms/Select/Select.test.js +0 -5
- package/dist/components/Atoms/SocialIcons/Icon/Icon.js +6 -18
- package/dist/components/Atoms/SocialIcons/SocialIcons.js +3 -17
- package/dist/components/Atoms/SocialIcons/SocialIcons.test.js +0 -5
- package/dist/components/Atoms/SocialIcons/Utils/Icons.js +2 -9
- package/dist/components/Atoms/SocialIcons/Utils/Links.js +2 -5
- package/dist/components/Atoms/Text/Text.js +16 -29
- package/dist/components/Atoms/Text/Text.test.js +0 -5
- package/dist/components/Atoms/TextArea/TextArea.js +10 -25
- package/dist/components/Atoms/TextArea/TextArea.test.js +0 -5
- package/dist/components/Atoms/TextInputWithDropdown/TextInputWithDropdown.js +26 -53
- package/dist/components/Atoms/TextInputWithDropdown/TextInputWithDropdown.style.js +8 -28
- package/dist/components/Atoms/TextInputWithDropdown/TextInputWithDropdown.test.js +0 -6
- package/dist/components/Molecules/Accordion/Accordion.js +8 -29
- package/dist/components/Molecules/Accordion/Accordion.test.js +0 -6
- package/dist/components/Molecules/ArticleTeaser/ArticleTeaser.js +14 -38
- package/dist/components/Molecules/ArticleTeaser/ArticleTeaser.test.js +0 -6
- package/dist/components/Molecules/Banner/Banner.js +3 -13
- package/dist/components/Molecules/Banner/Banner.test.js +0 -6
- package/dist/components/Molecules/Box/Box.js +9 -22
- package/dist/components/Molecules/Box/Box.test.js +0 -6
- package/dist/components/Molecules/Card/Card.js +11 -24
- package/dist/components/Molecules/Card/Card.test.js +0 -6
- package/dist/components/Molecules/CardDs/CardDs.js +17 -41
- package/dist/components/Molecules/CardDs/CardDs.test.js +0 -7
- package/dist/components/Molecules/Chip/Chip.js +4 -10
- package/dist/components/Molecules/Chip/Chip.style.js +8 -48
- package/dist/components/Molecules/Chip/Chip.test.js +0 -6
- package/dist/components/Molecules/Countdown/Countdown.js +17 -32
- package/dist/components/Molecules/Countdown/Countdown.style.js +4 -13
- package/dist/components/Molecules/Descriptor/Descriptor.js +6 -50
- package/dist/components/Molecules/Descriptor/Descriptor.test.js +0 -5
- package/dist/components/Molecules/DoubleCopy/DoubleCopy.js +2 -8
- package/dist/components/Molecules/DoubleCopy/DoubleCopy.style.js +4 -13
- package/dist/components/Molecules/DoubleCopy/DoubleCopy.test.js +0 -6
- package/dist/components/Molecules/HeroBanner/HeroBanner.js +4 -13
- package/dist/components/Molecules/InfoBanner/InfoBanner.js +8 -19
- package/dist/components/Molecules/InfoBanner/InfoBanner.test.js +0 -5
- package/dist/components/Molecules/Logos/Logos.js +1 -11
- package/dist/components/Molecules/Lookup/Lookup.js +25 -57
- package/dist/components/Molecules/PartnerLink/PartnerLink.js +3 -14
- package/dist/components/Molecules/PartnerLink/PartnerLink.style.js +4 -13
- package/dist/components/Molecules/PartnerLink/PartnerLink.test.js +0 -7
- package/dist/components/Molecules/Promo/Promo.js +43 -50
- package/dist/components/Molecules/Promo/Promo.md +18 -35
- package/dist/components/Molecules/Promo/Promo.style.js +23 -41
- package/dist/components/Molecules/Promo/Promo.test.js +0 -8
- package/dist/components/Molecules/Promo/_ProgressRing.js +7 -20
- package/dist/components/Molecules/Promo/_PromoVideo.js +42 -54
- package/dist/components/Molecules/Promo/_PromoVideoButton.js +5 -12
- package/dist/components/Molecules/Promo/_PromoVideoButton.style.js +33 -59
- package/dist/components/Molecules/Promo/__snapshots__/Promo.test.js.snap +116 -72
- package/dist/components/Molecules/SchoolLookup/SchoolLookup.js +6 -23
- package/dist/components/Molecules/SchoolLookup/SchoolLookup.test.js +0 -5
- package/dist/components/Molecules/SearchInput/SearchInput.js +4 -12
- package/dist/components/Molecules/SearchInput/SearchInput.style.js +7 -25
- package/dist/components/Molecules/SearchInput/SearchInput.test.js +0 -5
- package/dist/components/Molecules/SearchResult/SearchResult.js +11 -25
- package/dist/components/Molecules/SearchResult/SearchResult.test.js +0 -6
- package/dist/components/Molecules/ShareButton/ShareButton.js +10 -23
- package/dist/components/Molecules/ShareButton/ShareButton.style.js +6 -21
- package/dist/components/Molecules/ShareButton/ShareButton.test.js +0 -5
- package/dist/components/Molecules/ShareButton/assets/ShareIcons.js +1 -6
- package/dist/components/Molecules/SimpleSchoolLookup/SimpleSchoolLookup.js +4 -25
- package/dist/components/Molecules/SingleMessage/SingleMessage.js +48 -68
- package/dist/components/Molecules/SingleMessage/SingleMessage.style.js +19 -47
- package/dist/components/Molecules/SingleMessage/SingleMessage.test.js +0 -8
- package/dist/components/Molecules/SingleMessageDS/SingleMessageDs.js +22 -46
- package/dist/components/Molecules/SingleMessageDS/SingleMessageDs.style.js +13 -44
- package/dist/components/Molecules/SingleMessageDS/SingleMessageDs.test.js +0 -8
- package/dist/components/Molecules/Typeahead/Typeahead.js +25 -51
- package/dist/components/Molecules/Typeahead/Typeahead.test.js +0 -12
- package/dist/components/Molecules/VideoBanner/VideoBanner.js +14 -28
- package/dist/components/Molecules/VideoBanner/VideoBanner.test.js +0 -6
- package/dist/components/Organisms/CookieBanner/CookieBanner.js +3 -9
- package/dist/components/Organisms/CookieBanner/CookieBanner.style.js +6 -18
- package/dist/components/Organisms/CookieBanner/CookieBanner.test.js +0 -5
- package/dist/components/Organisms/Donate/Donate.js +36 -48
- package/dist/components/Organisms/Donate/Donate.style.js +23 -71
- package/dist/components/Organisms/Donate/Donate.test.js +0 -8
- package/dist/components/Organisms/Donate/Form/Form.js +53 -80
- package/dist/components/Organisms/Donate/Form/PopUpComponent.js +9 -27
- package/dist/components/Organisms/Donate/GivingSelector/GivingSelector.js +4 -12
- package/dist/components/Organisms/Donate/GivingSelector/GivingSelector.style.js +7 -25
- package/dist/components/Organisms/Donate/MoneyBuy/MoneyBuy.js +7 -21
- package/dist/components/Organisms/Donate/dev-data/data-high-value.js +2 -3
- package/dist/components/Organisms/Donate/dev-data/data-single.js +2 -3
- package/dist/components/Organisms/Donate/dev-data/data.js +2 -3
- package/dist/components/Organisms/EmailSignUp/EmailSignUp.style.js +12 -37
- package/dist/components/Organisms/EmailSignUp/EmailSignUp.test.js +0 -9
- package/dist/components/Organisms/EmailSignUp/EmailSignUpForm.js +3 -24
- package/dist/components/Organisms/EmailSignUp/_EmailSignUp.js +19 -32
- package/dist/components/Organisms/EmailSignUp/_EmailSignUpConfig.js +6 -18
- package/dist/components/Organisms/EmailSignUp/_TextInput.js +7 -16
- package/dist/components/Organisms/Footer/Footer.js +5 -17
- package/dist/components/Organisms/Footer/Footer.style.js +10 -35
- package/dist/components/Organisms/Footer/Footer.test.js +1 -7
- package/dist/components/Organisms/Footer/Nav/Nav.js +15 -39
- package/dist/components/Organisms/Footer/Nav/Nav.style.js +16 -37
- package/dist/components/Organisms/Footer/data/data.js +2 -3
- package/dist/components/Organisms/Footer/data/footerCopy.js +2 -3
- package/dist/components/Organisms/Header/Burger/BurgerMenu.js +3 -8
- package/dist/components/Organisms/Header/Burger/BurgerMenu.style.js +8 -19
- package/dist/components/Organisms/Header/Header.js +4 -14
- package/dist/components/Organisms/Header/Header.style.js +5 -22
- package/dist/components/Organisms/Header/Nav/Nav.js +19 -44
- package/dist/components/Organisms/Header/Nav/Nav.style.js +19 -46
- package/dist/components/Organisms/Header/data/data.js +2 -3
- package/dist/components/Organisms/Header/header.test.js +5 -2
- package/dist/components/Organisms/ImpactSlider/ImpactMoneybuys.style.js +61 -0
- package/dist/components/Organisms/ImpactSlider/ImpactSlider.js +71 -0
- package/dist/components/Organisms/ImpactSlider/ImpactSlider.md +42 -0
- package/dist/components/Organisms/ImpactSlider/ImpactSlider.style.js +56 -0
- package/dist/components/Organisms/ImpactSlider/Slider.style.js +30 -0
- package/dist/components/Organisms/ImpactSlider/_ImpactMoneybuys.js +42 -0
- package/dist/components/Organisms/ImpactSlider/_Slider.js +32 -0
- package/dist/components/Organisms/ImpactSlider/_utils.js +30 -0
- package/dist/components/Organisms/MarketingPreferencesDS/MarketingPreferencesDS.style.js +15 -54
- package/dist/components/Organisms/MarketingPreferencesDS/MarketingPreferencesDSForm.js +11 -20
- package/dist/components/Organisms/MarketingPreferencesDS/_AssociatedFields.js +1 -2
- package/dist/components/Organisms/MarketingPreferencesDS/_CheckAnswer.js +12 -23
- package/dist/components/Organisms/MarketingPreferencesDS/_DefaultCopy.js +4 -14
- package/dist/components/Organisms/MarketingPreferencesDS/_MarketingPreferencesDS.js +23 -35
- package/dist/components/Organisms/MarketingPreferencesDS/_MarketingPrefsConfig.js +10 -19
- package/dist/components/Organisms/MarketingPreferencesDS/_TextInput.js +7 -16
- package/dist/components/Organisms/Membership/Form/Form.js +50 -83
- package/dist/components/Organisms/Membership/Membership.js +13 -21
- package/dist/components/Organisms/Membership/Membership.style.js +21 -63
- package/dist/components/Organisms/Membership/Membership.test.js +0 -7
- package/dist/components/Organisms/Membership/MoneyBox/MoneyBox.js +9 -21
- package/dist/components/Organisms/Membership/dev-data/data.js +2 -3
- package/dist/hoc/shallowWithTheme.js +0 -6
- package/dist/index.js +134 -187
- package/dist/styleguide/CRLogo.js +1 -9
- package/dist/styleguide/StyleGuideRenderer.js +6 -10
- package/dist/styleguide/ThemeWrapper.js +1 -8
- package/dist/styleguide/data/data.js +20 -5
- package/dist/theme/ThemeProvider.js +1 -5
- package/dist/theme/crTheme/buttonColors.js +2 -11
- package/dist/theme/crTheme/colors.js +3 -9
- package/dist/theme/crTheme/fontSizes.js +2 -6
- package/dist/theme/crTheme/linkStyles.js +2 -11
- package/dist/theme/crTheme/theme.js +2 -11
- package/dist/theme/shared/breakpoint.js +4 -9
- package/dist/theme/shared/fontFamilies.js +2 -7
- package/dist/theme/shared/hideVisually.js +1 -4
- package/dist/theme/shared/size.js +5 -11
- package/dist/theme/shared/spacing.js +1 -5
- package/dist/theme/shared/zIndex.js +1 -8
- package/dist/theme/srTheme/buttonColors.js +2 -11
- package/dist/theme/srTheme/colors.js +3 -9
- package/dist/theme/srTheme/fontSizes.js +2 -6
- package/dist/theme/srTheme/linkStyles.js +2 -11
- package/dist/theme/srTheme/theme.js +2 -11
- package/dist/utils/Membership.js +11 -28
- package/dist/utils/ShareButton/sharePopUpHelper.js +3 -8
- package/dist/utils/ShareButton/shareTracking.js +1 -5
- package/dist/utils/ShareButton/shareUrlHelper.js +3 -5
- package/dist/utils/allowListed.js +1 -5
- package/dist/utils/allowListed.test.js +0 -2
- package/dist/utils/internalLinkHelper.js +11 -20
- package/dist/utils/navHelper.js +1 -6
- package/package.json +2 -1
- package/react-range-slider-input.d.ts +2 -0
- package/src/components/Molecules/Promo/Promo.js +14 -8
- package/src/components/Molecules/Promo/Promo.md +18 -35
- package/src/components/Molecules/Promo/Promo.style.js +28 -16
- package/src/components/Molecules/Promo/_PromoVideo.js +13 -8
- package/src/components/Molecules/Promo/_PromoVideoButton.js +1 -1
- package/src/components/Molecules/Promo/_PromoVideoButton.style.js +26 -21
- package/src/components/Molecules/Promo/__snapshots__/Promo.test.js.snap +116 -72
- package/src/components/Organisms/ImpactSlider/ImpactMoneybuys.style.js +96 -0
- package/src/components/Organisms/ImpactSlider/ImpactSlider.js +92 -0
- package/src/components/Organisms/ImpactSlider/ImpactSlider.md +42 -0
- package/src/components/Organisms/ImpactSlider/ImpactSlider.style.js +72 -0
- package/src/components/Organisms/ImpactSlider/Slider.style.js +70 -0
- package/src/components/Organisms/ImpactSlider/_ImpactMoneybuys.js +43 -0
- package/src/components/Organisms/ImpactSlider/_Slider.js +39 -0
- package/src/components/Organisms/ImpactSlider/_utils.js +32 -0
- package/src/index.js +1 -0
- package/src/styleguide/data/data.js +26 -1
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import styled from 'styled-components';
|
|
2
|
+
import Text from '../../Atoms/Text/Text';
|
|
3
|
+
import Button from '../../Atoms/Button/Button';
|
|
4
|
+
|
|
5
|
+
const OuterWrapper = styled.div`
|
|
6
|
+
position: relative;
|
|
7
|
+
margin: 0 auto;
|
|
8
|
+
max-width: 100%;
|
|
9
|
+
background-color: ${props => props.theme.color('grey_extra_light')};
|
|
10
|
+
padding: 32px 16px;
|
|
11
|
+
|
|
12
|
+
@media ${({ theme }) => theme.breakpoint('small')} {
|
|
13
|
+
padding: 50px;
|
|
14
|
+
}
|
|
15
|
+
@media ${({ theme }) => theme.breakpoint('medium')} {
|
|
16
|
+
padding: 64px 0;
|
|
17
|
+
}
|
|
18
|
+
`;
|
|
19
|
+
|
|
20
|
+
const InnerWrapper = styled.div`
|
|
21
|
+
width: 100%;
|
|
22
|
+
max-width: 780px;
|
|
23
|
+
margin: 0 auto;
|
|
24
|
+
|
|
25
|
+
@media ${({ theme }) => theme.breakpoint('medium')} {
|
|
26
|
+
h1 {
|
|
27
|
+
font-size: 48px;
|
|
28
|
+
line-height: 48px;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
`;
|
|
32
|
+
|
|
33
|
+
const Copy = styled.div`
|
|
34
|
+
position: relative;
|
|
35
|
+
@media ${({ theme }) => theme.breakpoint('medium')} {
|
|
36
|
+
p {
|
|
37
|
+
font-size: 20px;
|
|
38
|
+
line-height: 24.38px;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
`;
|
|
42
|
+
|
|
43
|
+
const CurrentAmountCopy = styled(Text)`
|
|
44
|
+
font-weight: bold;
|
|
45
|
+
margin-top: 16px;
|
|
46
|
+
|
|
47
|
+
@media ${({ theme }) => theme.breakpoint('medium')} {
|
|
48
|
+
font-size: 20px;
|
|
49
|
+
line-height: 24.38px;
|
|
50
|
+
margin: 24px 0 38px;
|
|
51
|
+
}
|
|
52
|
+
`;
|
|
53
|
+
|
|
54
|
+
const SubmitButton = styled(Button)`
|
|
55
|
+
margin: 32px auto 0;
|
|
56
|
+
width: 100%;
|
|
57
|
+
font-family: ${({ theme }) => theme.fontFamilies(theme.font.regular)};
|
|
58
|
+
display: block;
|
|
59
|
+
|
|
60
|
+
@media ${({ theme }) => theme.breakpoint('small')} {
|
|
61
|
+
width: 70%;
|
|
62
|
+
margin: 40px auto 0;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
@media ${({ theme }) => theme.breakpoint('medium')} {
|
|
66
|
+
width: 100%;
|
|
67
|
+
}
|
|
68
|
+
`;
|
|
69
|
+
|
|
70
|
+
export {
|
|
71
|
+
OuterWrapper, Copy, CurrentAmountCopy, SubmitButton, InnerWrapper
|
|
72
|
+
};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import styled from 'styled-components';
|
|
2
|
+
import RangeSlider from 'react-range-slider-input';
|
|
3
|
+
|
|
4
|
+
const thumbSize = 30;
|
|
5
|
+
const outlineSize = thumbSize / 2.5;
|
|
6
|
+
const sizeMultiplier = 1.4;
|
|
7
|
+
|
|
8
|
+
const StyledRangerSlider = styled(RangeSlider)`
|
|
9
|
+
background: white;
|
|
10
|
+
height: 16px;
|
|
11
|
+
border-radius: 16px;
|
|
12
|
+
border: 1px solid ${props => props.theme.color('black')};
|
|
13
|
+
|
|
14
|
+
.range-slider__range {
|
|
15
|
+
height: 14px;
|
|
16
|
+
border-radius: 10px;
|
|
17
|
+
background-color: ${props => props.theme.color('red')};
|
|
18
|
+
z-index: 2;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.range-slider__thumb[data-upper] {
|
|
22
|
+
&:after {
|
|
23
|
+
background-color: white;
|
|
24
|
+
width: ${thumbSize}px;
|
|
25
|
+
height: ${thumbSize}px;
|
|
26
|
+
content: "";
|
|
27
|
+
position: absolute;
|
|
28
|
+
transform: translate(-50%, -50%);
|
|
29
|
+
top: 50%;
|
|
30
|
+
left: 50%;
|
|
31
|
+
border-radius: 50%;
|
|
32
|
+
border: ${outlineSize}px solid ${props => props.theme.color('red')};
|
|
33
|
+
transition-property: width, height, border-width;
|
|
34
|
+
transition-duration: 0.15s;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
&:hover {
|
|
38
|
+
&:after {
|
|
39
|
+
width: ${thumbSize * sizeMultiplier}px;
|
|
40
|
+
height: ${thumbSize * sizeMultiplier}px;
|
|
41
|
+
border-width: ${outlineSize}px;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// Hide other slider thumb, as per example from the docs
|
|
47
|
+
.range-slider__thumb[data-lower] {
|
|
48
|
+
width: 0;
|
|
49
|
+
}
|
|
50
|
+
`;
|
|
51
|
+
|
|
52
|
+
const SliderWrapper = styled.div`
|
|
53
|
+
width: 100%;
|
|
54
|
+
margin-top: 25px;
|
|
55
|
+
`;
|
|
56
|
+
|
|
57
|
+
const SliderLabel = styled.label`
|
|
58
|
+
border: 0;
|
|
59
|
+
clip: rect(0 0 0 0);
|
|
60
|
+
height: 1px;
|
|
61
|
+
margin: -1px;
|
|
62
|
+
overflow: hidden;
|
|
63
|
+
padding: 0;
|
|
64
|
+
position: absolute;
|
|
65
|
+
width: 1px;
|
|
66
|
+
`;
|
|
67
|
+
|
|
68
|
+
export {
|
|
69
|
+
StyledRangerSlider, SliderWrapper, SliderLabel
|
|
70
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import React, { Fragment } from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
MoneybuyWrapper, Moneybuy, OrLabel, MoneybuyImage, MoneybuyAmount, MoneybuyDescription
|
|
6
|
+
} from './ImpactMoneybuys.style';
|
|
7
|
+
|
|
8
|
+
const Moneybuys = ({ items, currentAmount, opacityAnimation }) => (
|
|
9
|
+
<MoneybuyWrapper>
|
|
10
|
+
{items.map((item, index) => {
|
|
11
|
+
const roundedPerPound = Math.floor(item.poundsPerItem);
|
|
12
|
+
const thisAmount = Math.floor(currentAmount / roundedPerPound);
|
|
13
|
+
const isInactive = !(!opacityAnimation || currentAmount >= roundedPerPound);
|
|
14
|
+
|
|
15
|
+
return (
|
|
16
|
+
<Fragment key={roundedPerPound}>
|
|
17
|
+
<Moneybuy isInactive={isInactive} data-testid={`impact-slider--moneybuy-${index + 1}`}>
|
|
18
|
+
<MoneybuyImage imageURL={item.imageURL} />
|
|
19
|
+
<MoneybuyAmount tag="p" family="Anton" uppercase weight="normal" size="xl" data-testid="moneybuy-amount">{thisAmount}</MoneybuyAmount>
|
|
20
|
+
<MoneybuyDescription tag="p" size="sm" data-testid="moneybuy-description">{item.description}</MoneybuyDescription>
|
|
21
|
+
</Moneybuy>
|
|
22
|
+
{ index < (items.length - 1) && (
|
|
23
|
+
<OrLabel tag="span">Or</OrLabel>
|
|
24
|
+
)}
|
|
25
|
+
</Fragment>
|
|
26
|
+
);
|
|
27
|
+
})}
|
|
28
|
+
</MoneybuyWrapper>
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
Moneybuys.propTypes = {
|
|
32
|
+
items: PropTypes.arrayOf(
|
|
33
|
+
PropTypes.shape({
|
|
34
|
+
poundsPerItem: PropTypes.number.isRequired,
|
|
35
|
+
description: PropTypes.string.isRequired,
|
|
36
|
+
imageURL: PropTypes.string.isRequired
|
|
37
|
+
})
|
|
38
|
+
).isRequired,
|
|
39
|
+
currentAmount: PropTypes.number.isRequired,
|
|
40
|
+
opacityAnimation: PropTypes.bool.isRequired
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
export default Moneybuys;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import 'react-range-slider-input/dist/style.css';
|
|
4
|
+
|
|
5
|
+
import {
|
|
6
|
+
StyledRangerSlider, SliderWrapper, SliderLabel
|
|
7
|
+
} from './Slider.style';
|
|
8
|
+
|
|
9
|
+
const Slider = ({
|
|
10
|
+
min, max, currentAmount, handleChange, steps
|
|
11
|
+
}) => (
|
|
12
|
+
<SliderWrapper>
|
|
13
|
+
<SliderLabel htmlFor="ImpactSlider">
|
|
14
|
+
Slider label to be hidden
|
|
15
|
+
</SliderLabel>
|
|
16
|
+
<StyledRangerSlider
|
|
17
|
+
id="ImpactSlider"
|
|
18
|
+
name="ImpactSlider"
|
|
19
|
+
min={min}
|
|
20
|
+
max={max}
|
|
21
|
+
width="100%"
|
|
22
|
+
value={[0, currentAmount]}
|
|
23
|
+
onInput={handleChange}
|
|
24
|
+
step={steps}
|
|
25
|
+
thumbsDisabled={[true, false]}
|
|
26
|
+
rangeSlideDisabled
|
|
27
|
+
/>
|
|
28
|
+
</SliderWrapper>
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
Slider.propTypes = {
|
|
32
|
+
min: PropTypes.number.isRequired,
|
|
33
|
+
max: PropTypes.number.isRequired,
|
|
34
|
+
steps: PropTypes.number.isRequired,
|
|
35
|
+
currentAmount: PropTypes.number.isRequired,
|
|
36
|
+
handleChange: PropTypes.func.isRequired
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export default Slider;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
const getUrlParameter = name => {
|
|
2
|
+
const text = name.replace(/\[]/, '\\[').replace(/[\]]/, '\\]');
|
|
3
|
+
const regex = new RegExp(`[\\?&]${text}=([^&#]*)`);
|
|
4
|
+
const results = regex.exec(window.location.search);
|
|
5
|
+
const param = results === null
|
|
6
|
+
? 'generic'
|
|
7
|
+
: decodeURIComponent(results[1].replace(/\+/g, ' '));
|
|
8
|
+
return param;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
const handleSubmission = (amount, donateLink, cartID, rowID) => {
|
|
12
|
+
let currentpageUrl = window.location.href;
|
|
13
|
+
|
|
14
|
+
const affiliateValue = getUrlParameter(currentpageUrl);
|
|
15
|
+
|
|
16
|
+
const reg = /[#?|[\]\\]/g;
|
|
17
|
+
|
|
18
|
+
if (currentpageUrl.match(reg) !== null) {
|
|
19
|
+
const thisMatch = currentpageUrl.match(reg)[0];
|
|
20
|
+
currentpageUrl = currentpageUrl.substring(0, currentpageUrl.indexOf(thisMatch));
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// - Q: do we need client IDs? A: 99% of examples just use 'donate' (or 'test' for staging)
|
|
24
|
+
//
|
|
25
|
+
// - I guess we still need rowID for the back-browsing scroll stuff?
|
|
26
|
+
// - TO-DO: add in said scroll stuff
|
|
27
|
+
const forwardingUrl = `${donateLink}/?cartID=${cartID}&amount=${amount}&clientOverride=donate¤cy=GBP&givingType=single&affiliate=${affiliateValue}&siteurl=${currentpageUrl}&rowID=${rowID}`;
|
|
28
|
+
|
|
29
|
+
window.location.href = forwardingUrl;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export default handleSubmission;
|
package/src/index.js
CHANGED
|
@@ -26,4 +26,29 @@ const mobileImages = {
|
|
|
26
26
|
'//https://images.ctfassets.net/zsfivwzfgl3t/54DHIEgtwbr9TDkf70lToB/ffe8d6a8e9bbc224343f475a5c55c832/-CROP-Promo-Des_2000x945-_Kate.jpg?w=200&h=150&q=50 200w,//images.ctfassets.net/zsfivwzfgl3t/54DHIEgtwbr9TDkf70lToB/ffe8d6a8e9bbc224343f475a5c55c832/-CROP-Promo-Des_2000x945-_Kate.jpg?w=400&h=300&q=50 400w,//images.ctfassets.net/zsfivwzfgl3t/54DHIEgtwbr9TDkf70lToB/ffe8d6a8e9bbc224343f475a5c55c832/-CROP-Promo-Des_2000x945-_Kate.jpg?w=800&h=600&q=50 800w,//images.ctfassets.net/zsfivwzfgl3t/54DHIEgtwbr9TDkf70lToB/ffe8d6a8e9bbc224343f475a5c55c832/-CROP-Promo-Des_2000x945-_Kate.jpg?w=1200&h=900&q=50 1200w,//images.ctfassets.net/zsfivwzfgl3t/54DHIEgtwbr9TDkf70lToB/ffe8d6a8e9bbc224343f475a5c55c832/-CROP-Promo-Des_2000x945-_Kate.jpg?w=1440&h=1080&q=50 1440w'
|
|
27
27
|
};
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
const testImpactSliderItems = [
|
|
30
|
+
{
|
|
31
|
+
poundsPerItem: 1,
|
|
32
|
+
description: 'Fresh water pumps',
|
|
33
|
+
imageURL: 'https://images.ctfassets.net/zsfivwzfgl3t/28sKInxW6EsmvOTahWdm8E/3fb8e1488f95bac6a3087b133ae7ce9f/ImpactSliderMoneybuy1.png'
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
poundsPerItem: 10,
|
|
37
|
+
description: 'Food Sachets',
|
|
38
|
+
imageURL: 'https://images.ctfassets.net/zsfivwzfgl3t/lzxmQMII5PElb4G40vFfk/988486dedd9e45e7cf78cda6f6d0aeaf/ImpactSliderMoneybuy2.png'
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
poundsPerItem: 15,
|
|
42
|
+
description: 'Midwife birthing kits',
|
|
43
|
+
imageURL: 'https://images.ctfassets.net/zsfivwzfgl3t/53ZeFXhjdpGpAvRRL4v2kI/d70d1cbf3b46bc28703fabb4ec60fef6/ImpactSliderMoneybuy3.png'
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
poundsPerItem: 20,
|
|
47
|
+
description: 'School in a bag kit',
|
|
48
|
+
imageURL: 'https://images.ctfassets.net/zsfivwzfgl3t/PPIJtSArW4wYy1CXvRGk9/c9de72766db42a0e158889a140c90445/ImpactSliderMoneybuy4.png'
|
|
49
|
+
}
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
export {
|
|
53
|
+
defaultData, mobileImages, testImpactSliderItems
|
|
54
|
+
};
|