@comicrelief/component-library 7.7.0 → 7.9.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 (20) hide show
  1. package/cypress/integration/components/Atoms/MarketingPreferencesDSForm.spec.js +2 -2
  2. package/dist/components/Organisms/MarketingPreferencesDS/MarketingPreferencesDS.style.js +60 -42
  3. package/dist/components/Organisms/MarketingPreferencesDS/_AssociatedFields.js +16 -4
  4. package/dist/components/Organisms/MarketingPreferencesDS/_CheckAnswer.js +5 -15
  5. package/dist/components/Organisms/MarketingPreferencesDS/_DefaultCopy.js +6 -6
  6. package/dist/components/Organisms/MarketingPreferencesDS/_MarketingPreferencesDS.js +67 -114
  7. package/dist/components/Organisms/MarketingPreferencesDS/_MarketingPrefsConfig.js +8 -11
  8. package/dist/components/Organisms/MarketingPreferencesDS/assets/CR_Tick_black.svg +1 -0
  9. package/dist/theme/crTheme/colors.js +4 -0
  10. package/package.json +1 -1
  11. package/src/components/Organisms/MarketingPreferencesDS/MarketingPreferencesDS.style.js +78 -71
  12. package/src/components/Organisms/MarketingPreferencesDS/_AssociatedFields.js +16 -4
  13. package/src/components/Organisms/MarketingPreferencesDS/_CheckAnswer.js +9 -18
  14. package/src/components/Organisms/MarketingPreferencesDS/_DefaultCopy.js +8 -8
  15. package/src/components/Organisms/MarketingPreferencesDS/_MarketingPreferencesDS.js +105 -107
  16. package/src/components/Organisms/MarketingPreferencesDS/_MarketingPrefsConfig.js +8 -11
  17. package/src/components/Organisms/MarketingPreferencesDS/assets/CR_Tick_black.svg +1 -0
  18. package/src/theme/crTheme/colors.js +4 -0
  19. package/dist/components/Organisms/MarketingPreferencesDS/_NoMessage.js +0 -40
  20. package/src/components/Organisms/MarketingPreferencesDS/_NoMessage.js +0 -27
@@ -28,7 +28,7 @@ describe('MarketingPreferencesDSForm component', () => {
28
28
  cy.get('@default')
29
29
  .should('exist')
30
30
  .find('h3')
31
- .contains('How can we contact you?');
31
+ .contains('Stay up to date with Comic Relief?');
32
32
  });
33
33
 
34
34
  it('should render correct Default example options', () => {
@@ -53,7 +53,7 @@ describe('MarketingPreferencesDSForm component', () => {
53
53
  cy.get('@customised')
54
54
  .should('exist')
55
55
  .find('h3')
56
- .contains('How can we contact you?');
56
+ .contains('Stay up to date with Comic Relief?');
57
57
  });
58
58
 
59
59
  it('should render correct Customised example options', () => {
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.ShowHideInputWrapper = exports.CheckContainer = exports.CheckInput = exports.CheckLabel = exports.FormField = exports.Head = exports.BottomCopyWrapper = exports.TopCopyWrapper = void 0;
8
+ exports.MPTextInput = exports.OuterWrapper = exports.ExtraInfo = exports.ShowHideInputWrapper = exports.CheckContainer = exports.CheckInput = exports.CheckLabel = exports.FormField = exports.Head = exports.BottomCopyWrapper = exports.TopCopyWrapper = void 0;
9
9
 
10
10
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
11
11
 
@@ -13,103 +13,121 @@ var _spacing = _interopRequireDefault(require("../../../theme/shared/spacing"));
13
13
 
14
14
  var _size = require("../../../theme/shared/size");
15
15
 
16
- var _CR_Tick = _interopRequireDefault(require("./assets/CR_Tick.svg"));
16
+ var _CR_Tick_black = _interopRequireDefault(require("./assets/CR_Tick_black.svg"));
17
17
 
18
- var _CR_ = _interopRequireDefault(require("./assets/CR_@.svg"));
19
-
20
- var _CR_Mail = _interopRequireDefault(require("./assets/CR_Mail.svg"));
21
-
22
- var _CR_Phone = _interopRequireDefault(require("./assets/CR_Phone.svg"));
23
-
24
- var _CR_SMS = _interopRequireDefault(require("./assets/CR_SMS.svg"));
18
+ var _TextInput = _interopRequireDefault(require("./_TextInput"));
25
19
 
26
20
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
27
21
 
28
22
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
29
23
 
24
+ var OuterWrapper = _styledComponents.default.div.withConfig({
25
+ displayName: "MarketingPreferencesDSstyle__OuterWrapper",
26
+ componentId: "sc-68n85q-0"
27
+ })(["display:flex;flex-direction:column;", "{flex-direction:row;flex-wrap:wrap;}"], (0, _size.media)('small'));
28
+
29
+ exports.OuterWrapper = OuterWrapper;
30
+
30
31
  var TopCopyWrapper = _styledComponents.default.div.withConfig({
31
32
  displayName: "MarketingPreferencesDSstyle__TopCopyWrapper",
32
- componentId: "sc-68n85q-0"
33
- })(["margin:", " 0;"], (0, _spacing.default)('l'));
33
+ componentId: "sc-68n85q-1"
34
+ })(["margin:", " 0;display:flex;width:100%;@media ", "{padding:10px;}"], (0, _spacing.default)('l'), function (_ref) {
35
+ var theme = _ref.theme;
36
+ return theme.breakpoint('small');
37
+ });
34
38
 
35
39
  exports.TopCopyWrapper = TopCopyWrapper;
36
40
 
37
41
  var BottomCopyWrapper = _styledComponents.default.div.withConfig({
38
42
  displayName: "MarketingPreferencesDSstyle__BottomCopyWrapper",
39
- componentId: "sc-68n85q-1"
43
+ componentId: "sc-68n85q-2"
40
44
  })(["margin:", " 0;"], (0, _spacing.default)('md'));
41
45
 
42
46
  exports.BottomCopyWrapper = BottomCopyWrapper;
43
47
 
44
48
  var Head = _styledComponents.default.div.withConfig({
45
49
  displayName: "MarketingPreferencesDSstyle__Head",
46
- componentId: "sc-68n85q-2"
50
+ componentId: "sc-68n85q-3"
47
51
  })(["display:flex;justify-content:space-between;flex-direction:column;"]);
48
52
 
49
53
  exports.Head = Head;
50
54
 
51
55
  var FormField = _styledComponents.default.div.withConfig({
52
56
  displayName: "MarketingPreferencesDSstyle__FormField",
53
- componentId: "sc-68n85q-3"
54
- })(["", ""], function (_ref) {
55
- var theme = _ref.theme;
56
- return (0, _styledComponents.css)(["position:relative;margin-bottom:", ";label{position:relative;margin-bottom:", ";width:48%;padding:10px;border:1px solid ", ";box-sizing:border-box;border-radius:8px;color:", ";@media ", "{padding:12px 16px;}}h3{position:relative;padding-left:35px;margin-bottom:", ";&:before{position:absolute;top:0;left:0;width:24px;height:24px;content:'';}}&.field-email h3:before{background:url(", ") top left/contain no-repeat;}&.field-sms h3:before{background:url(", ") top left/contain no-repeat;}&.field-phone h3:before{background:url(", ") top left/contain no-repeat;}&.field-post h3:before{background:url(", ") top left/contain no-repeat;}"], (0, _spacing.default)('md'), (0, _spacing.default)('md'), theme.color('grey'), theme.color('grey_dark'), theme.breakpoint('small'), (0, _spacing.default)('md'), _CR_.default, _CR_SMS.default, _CR_Phone.default, _CR_Mail.default);
57
+ componentId: "sc-68n85q-4"
58
+ })(["", ""], function (_ref2) {
59
+ var theme = _ref2.theme;
60
+ return (0, _styledComponents.css)(["position:relative;margin-bottom:", ";width:100%;display:flex;flex-direction:column;@media ", "{width:50%;padding:10px;}label{position:relative;margin-bottom:", ";width:100%;color:", ";}h3{position:relative;margin-bottom:", ";&:before{position:absolute;top:0;left:0;width:24px;height:24px;content:'';}}"], (0, _spacing.default)('md'), theme.breakpoint('small'), (0, _spacing.default)('md'), theme.color('grey_dark'), (0, _spacing.default)('md'));
57
61
  });
58
62
 
59
63
  exports.FormField = FormField;
60
64
 
61
65
  var CheckContainer = _styledComponents.default.div.withConfig({
62
66
  displayName: "MarketingPreferencesDSstyle__CheckContainer",
63
- componentId: "sc-68n85q-4"
64
- })(["", ""], function (_ref2) {
65
- var theme = _ref2.theme;
66
- return (0, _styledComponents.css)(["width:100%;display:flex;justify-content:space-between;font-size:", ";font-family:", ";", "{width:380px;}"], theme.fontSize('md'), theme.fontFamilies(theme.font.regular), (0, _size.media)('small'));
67
+ componentId: "sc-68n85q-5"
68
+ })(["", ""], function (_ref3) {
69
+ var theme = _ref3.theme;
70
+ return (0, _styledComponents.css)(["width:100%;display:flex;justify-content:space-between;font-size:", ";font-family:", ";"], theme.fontSize('md'), theme.fontFamilies(theme.font.regular));
67
71
  });
68
72
 
69
73
  exports.CheckContainer = CheckContainer;
70
74
 
71
75
  var CheckLabel = _styledComponents.default.label.withConfig({
72
76
  displayName: "MarketingPreferencesDSstyle__CheckLabel",
73
- componentId: "sc-68n85q-5"
74
- })(["", ""], function (_ref3) {
75
- var theme = _ref3.theme,
76
- userSelection = _ref3.userSelection;
77
- return (0, _styledComponents.css)(["display:flex;align-items:center;font-size:", ";padding:10px;@media ", "{font-size:", ";padding:12px 16px;}&:hover,&:focus{border:2px solid ", ";padding:9px;@media ", "{padding:11px 15px;}}", ""], theme.fontSize('xs'), theme.breakpoint('small'), theme.fontSize('s'), theme.color('grey'), theme.breakpoint('small'), userSelection && "\n &[for$=\"".concat(userSelection, "\"] {\n background: ").concat(theme.color('grey_medium'), ";\n padding: 9px;\n border: 2px solid ").concat(theme.color('grey'), ";\n\n @media ").concat(theme.breakpoint('small'), " {\n padding: 11px 15px;\n }\n }\n "));
77
+ componentId: "sc-68n85q-6"
78
+ })(["", ""], function (_ref4) {
79
+ var theme = _ref4.theme;
80
+ return (0, _styledComponents.css)(["display:flex;align-items:center;font-size:", ";@media ", "{font-size:", ";}"], theme.fontSize('xs'), theme.breakpoint('small'), theme.fontSize('s'));
78
81
  });
79
82
 
80
83
  exports.CheckLabel = CheckLabel;
81
84
 
82
85
  var CheckInput = _styledComponents.default.input.withConfig({
83
86
  displayName: "MarketingPreferencesDSstyle__CheckInput",
84
- componentId: "sc-68n85q-6"
85
- })(["font-size:", ";display:block;box-sizing:border-box;opacity:0;position:absolute;width:100%;height:100%;left:0;top:0;margin:0;border:1px solid ", ";+ span{margin-right:10px;width:30px;height:30px;background-color:", ";border:1px solid ", ";float:left;border-radius:8px;@media ", "{margin-right:15px;}}:checked + span{background:url(", ") no-repeat center;background-color:", ";background-size:contain;}"], function (_ref4) {
86
- var theme = _ref4.theme;
87
- return theme.fontSize('sm');
88
- }, function (_ref5) {
87
+ componentId: "sc-68n85q-7"
88
+ })(["font-size:", ";display:block;box-sizing:border-box;opacity:0;position:absolute;width:100%;height:100%;left:0;top:0;margin:0;border:1px solid ", ";+ span{margin-right:10px;width:30px;height:30px;background-color:", ";border:1px solid ", ";float:left;border-radius:8px;@media ", "{margin-right:15px;}}:checked + span{background:url(", ") no-repeat center;background-color:", ";background-size:contain;}"], function (_ref5) {
89
89
  var theme = _ref5.theme;
90
- return theme.color('grey_for_forms');
90
+ return theme.fontSize('sm');
91
91
  }, function (_ref6) {
92
92
  var theme = _ref6.theme;
93
- return theme.color('grey_light');
93
+ return theme.color('grey_for_forms');
94
94
  }, function (_ref7) {
95
95
  var theme = _ref7.theme;
96
- return theme.color('grey');
96
+ return theme.color('grey_light');
97
97
  }, function (_ref8) {
98
98
  var theme = _ref8.theme;
99
- return theme.breakpoint('small');
100
- }, _CR_Tick.default, function (_ref9) {
99
+ return theme.color('black');
100
+ }, function (_ref9) {
101
101
  var theme = _ref9.theme;
102
- return theme.color('red');
102
+ return theme.breakpoint('small');
103
+ }, _CR_Tick_black.default, function (_ref10) {
104
+ var theme = _ref10.theme;
105
+ return theme.color('grey_light');
103
106
  });
104
107
 
105
108
  exports.CheckInput = CheckInput;
106
109
 
107
110
  var ShowHideInputWrapper = _styledComponents.default.div.withConfig({
108
111
  displayName: "MarketingPreferencesDSstyle__ShowHideInputWrapper",
109
- componentId: "sc-68n85q-7"
110
- })(["display:", ";margin-bottom:", ";width:100%;", "{max-width:290px;}label{width:100%;border:none;padding:0;}"], function (_ref10) {
111
- var show = _ref10.show;
112
+ componentId: "sc-68n85q-8"
113
+ })(["display:", ";width:100%;label{width:100%;border:none;padding:0;}"], function (_ref11) {
114
+ var show = _ref11.show;
112
115
  return show ? 'block' : 'none';
113
- }, (0, _spacing.default)('lg'), (0, _size.media)('small'));
116
+ });
114
117
 
115
- exports.ShowHideInputWrapper = ShowHideInputWrapper;
118
+ exports.ShowHideInputWrapper = ShowHideInputWrapper;
119
+
120
+ var ExtraInfo = _styledComponents.default.span.withConfig({
121
+ displayName: "MarketingPreferencesDSstyle__ExtraInfo",
122
+ componentId: "sc-68n85q-9"
123
+ })(["display:block;width:100%;font-size:1rem;text-transform:inherit;font-weight:normal;line-height:normal;font-family:'Montserrat',Helvetica,Arial,sans-serif;margin-bottom:0.5rem;+ label{margin-top:20px;&[for=\"mp_email\"],&[for=\"mp_mobile\"],&[for=\"mp_phone\"]{> span:first-child{position:absolute;margin:-1px;padding:0;width:1px;height:1px;border:0;overflow:hidden;clip:rect(1px 1px 1px 1px);word-wrap:normal;}}"]);
124
+
125
+ exports.ExtraInfo = ExtraInfo;
126
+ var MPTextInput = (0, _styledComponents.default)(_TextInput.default).withConfig({
127
+ displayName: "MarketingPreferencesDSstyle__MPTextInput",
128
+ componentId: "sc-68n85q-10"
129
+ })(["input{border:1px solid ", ";;", "{max-width:none;}}"], function (_ref12) {
130
+ var theme = _ref12.theme;
131
+ return theme.color('black');
132
+ }, (0, _size.media)('small'));
133
+ exports.MPTextInput = MPTextInput;
@@ -5,10 +5,22 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var AssociatedFields = {
8
- mp_permissionSMS: ['mp_mobile'],
9
- mp_permissionPhone: ['mp_phone'],
10
- mp_permissionEmail: ['mp_email'],
11
- mp_permissionPost: ['mp_address1', 'mp_address2', 'mp_address3', 'mp_town', 'mp_postcode', 'mp_country']
8
+ mp_permissionSMS: {
9
+ fieldNames: ['mp_mobile'],
10
+ label: 'Text'
11
+ },
12
+ mp_permissionPhone: {
13
+ fieldNames: ['mp_phone'],
14
+ label: 'Phone'
15
+ },
16
+ mp_permissionEmail: {
17
+ fieldNames: ['mp_email'],
18
+ label: 'Email'
19
+ },
20
+ mp_permissionPost: {
21
+ fieldNames: ['mp_address1', 'mp_address2', 'mp_address3', 'mp_town', 'mp_postcode', 'mp_country'],
22
+ label: 'Post'
23
+ }
12
24
  };
13
25
  var _default = AssociatedFields;
14
26
  exports.default = _default;
@@ -26,25 +26,25 @@ var CheckAnswer = function CheckAnswer(_ref) {
26
26
  var newVal;
27
27
 
28
28
  if (e.target.checked) {
29
- newVal = e.target.value === 'yes' ? e.target.value : 'no';
29
+ newVal = e.target.value;
30
30
  } else {
31
31
  newVal = ''; // To ensure we're not letting invalid values get passed, reset any associated fields:
32
32
 
33
- var theseFields = _AssociatedFields.default[name];
33
+ var theseFields = _AssociatedFields.default[name].fieldNames;
34
34
  theseFields.forEach(function (fieldName) {
35
35
  setValue(fieldName, '');
36
36
  });
37
37
  } // Update the checkbox field itself
38
38
 
39
39
 
40
- setValue(name, [newVal]);
40
+ setValue(name, newVal);
41
41
  /* If the click represents either a 'none selected' or a 'not required' option
42
42
  (set in config), reset errors for all fields associated with this checkbox */
43
43
 
44
44
  var reValidate = !mpValidationOptions[name][newVal];
45
45
 
46
46
  if (reValidate) {
47
- var _theseFields = _AssociatedFields.default[name];
47
+ var _theseFields = _AssociatedFields.default[name].fieldNames;
48
48
 
49
49
  _theseFields.forEach(function (fieldName) {
50
50
  clearErrors(fieldName);
@@ -62,17 +62,7 @@ var CheckAnswer = function CheckAnswer(_ref) {
62
62
  value: "yes",
63
63
  ref: register,
64
64
  onChange: onChange
65
- }), /*#__PURE__*/_react.default.createElement("span", null), "Yes, please"), /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.CheckLabel, {
66
- htmlFor: "".concat(name, "-no"),
67
- userSelection: userSelection
68
- }, /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.CheckInput, {
69
- type: "checkbox",
70
- id: "".concat(name, "-no"),
71
- name: name,
72
- value: "no",
73
- ref: register,
74
- onChange: onChange
75
- }), /*#__PURE__*/_react.default.createElement("span", null), "No, thanks"));
65
+ }), /*#__PURE__*/_react.default.createElement("span", null), _AssociatedFields.default[name].label));
76
66
  };
77
67
 
78
68
  CheckAnswer.defaultProps = {
@@ -20,27 +20,27 @@ var defaultCopyTop = /*#__PURE__*/_react.default.createElement("div", null, /*#_
20
20
  uppercase: true,
21
21
  weight: "400",
22
22
  color: "grey_dark"
23
- }, "How can we contact you?"), /*#__PURE__*/_react.default.createElement(_Text.default, {
23
+ }, "Stay up to date with Comic Relief?"), /*#__PURE__*/_react.default.createElement(_Text.default, {
24
24
  tag: "p",
25
25
  size: "md",
26
26
  color: "grey_dark"
27
- }, "We\u2019d love to stay in touch and provide you with fundraising tips, news updates and more goodies."), /*#__PURE__*/_react.default.createElement(_Text.default, {
27
+ }, "We\u2019d like to send you updates on the work we\u2019re funding and how your support makes a difference in the UK and around the world."), /*#__PURE__*/_react.default.createElement(_Text.default, {
28
28
  tag: "p",
29
29
  size: "md",
30
30
  color: "grey_dark"
31
- }, "Please select your preferred contact options below."));
31
+ }, "Please tick the relevant boxes below if you would like to hear from us."));
32
32
 
33
33
  exports.defaultCopyTop = defaultCopyTop;
34
34
 
35
35
  var defaultCopyBottom = /*#__PURE__*/_react.default.createElement(_Text.default, {
36
36
  tag: "p",
37
37
  color: "grey_dark"
38
- }, "You can update your communication preferences at any time at", ' ', /*#__PURE__*/_react.default.createElement(_Link.default, {
38
+ }, "Update your preferences at any time by visiting our", ' ', /*#__PURE__*/_react.default.createElement(_Link.default, {
39
39
  type: "standard",
40
40
  href: "https://www.comicrelief.com/update-your-preferences"
41
- }, "update your preferences"), ". Your details will be kept safe, check out our", ' ', /*#__PURE__*/_react.default.createElement(_Link.default, {
41
+ }, "preferences centre"), ". Your details will be kept safe, see our", ' ', /*#__PURE__*/_react.default.createElement(_Link.default, {
42
42
  type: "standard",
43
43
  href: "https://www.comicrelief.com/privacy-policy"
44
- }, "privacy policy"), ' ', "for more details.");
44
+ }, "privacy policy"), ' ', "for more information.");
45
45
 
46
46
  exports.defaultCopyBottom = defaultCopyBottom;
@@ -25,21 +25,14 @@ var _reactHookForm = require("react-hook-form");
25
25
 
26
26
  var _lodash = _interopRequireDefault(require("lodash"));
27
27
 
28
- var _Text = _interopRequireDefault(require("../../Atoms/Text/Text"));
29
-
30
- var _TextInput = _interopRequireDefault(require("./_TextInput"));
31
-
32
28
  var _CheckAnswer = _interopRequireDefault(require("./_CheckAnswer"));
33
29
 
34
- var _NoMessage = _interopRequireDefault(require("./_NoMessage"));
35
-
36
30
  var _DefaultCopy = require("./_DefaultCopy");
37
31
 
38
32
  var _MarketingPreferencesDS = require("./MarketingPreferencesDS.style");
39
33
 
40
34
  var _MarketingPrefsConfig = require("./_MarketingPrefsConfig");
41
35
 
42
- /* eslint-disable camelcase */
43
36
  var MarketingPreferencesDS = function MarketingPreferencesDS(_ref) {
44
37
  var copyTop = _ref.copyTop,
45
38
  copyBottom = _ref.copyBottom,
@@ -52,32 +45,32 @@ var MarketingPreferencesDS = function MarketingPreferencesDS(_ref) {
52
45
  var emailChoice = (0, _reactHookForm.useWatch)({
53
46
  control: control,
54
47
  name: 'mp_permissionEmail',
55
- defaultValue: []
48
+ defaultValue: null
56
49
  });
57
50
  var postChoice = (0, _reactHookForm.useWatch)({
58
51
  control: control,
59
52
  name: 'mp_permissionPost',
60
- defaultValue: []
53
+ defaultValue: null
61
54
  });
62
55
  var phoneChoice = (0, _reactHookForm.useWatch)({
63
56
  control: control,
64
57
  name: 'mp_permissionPhone',
65
- defaultValue: []
58
+ defaultValue: null
66
59
  });
67
60
  var smsChoice = (0, _reactHookForm.useWatch)({
68
61
  control: control,
69
62
  name: 'mp_permissionSMS',
70
- defaultValue: []
63
+ defaultValue: null
71
64
  });
72
65
  var mp_permissionEmail = mpValidationOptions.mp_permissionEmail,
73
66
  mp_permissionSMS = mpValidationOptions.mp_permissionSMS,
74
67
  mp_permissionPhone = mpValidationOptions.mp_permissionPhone,
75
68
  mp_permissionPost = mpValidationOptions.mp_permissionPost; // If the field is not required for each No/Yes choice, remove it from the DOM entirely
76
69
 
77
- var disableEmailInput = mp_permissionEmail.yes === false && emailChoice.includes('yes') || mp_permissionEmail.no === false && emailChoice.includes('no');
78
- var disableSMSInput = mp_permissionSMS.yes === false && smsChoice.includes('yes') || mp_permissionSMS.no === false && smsChoice.includes('no');
79
- var disablePhoneInput = mp_permissionPhone.yes === false && phoneChoice.includes('yes') || mp_permissionPhone.no === false && phoneChoice.includes('no');
80
- var disablePostInput = mp_permissionPost.yes === false && postChoice.includes('yes') || mp_permissionPost.no === false && postChoice.includes('no'); // Required to track multiple errors to determine whether to show/hide the fieldset
70
+ var disableEmailInput = mp_permissionEmail.yes === false && emailChoice.includes('yes');
71
+ var disableSMSInput = mp_permissionSMS.yes === false && smsChoice.includes('yes');
72
+ var disablePhoneInput = mp_permissionPhone.yes === false && phoneChoice.includes('yes');
73
+ var disablePostInput = mp_permissionPost.yes === false && postChoice.includes('yes'); // Required to track multiple errors to determine whether to show/hide the fieldset
81
74
 
82
75
  var isAddressErroring = function isAddressErroring() {
83
76
  if (_lodash.default.isEmpty(errors)) {
@@ -90,166 +83,126 @@ var MarketingPreferencesDS = function MarketingPreferencesDS(_ref) {
90
83
  or if a choice has been made */
91
84
 
92
85
 
93
- var showEmailField = !mp_permissionEmail.hideInput && (emailChoice.length || errors.mp_email);
94
- var showSMSField = !mp_permissionSMS.hideInput && (smsChoice.length || errors.mp_mobile);
95
- var showPhoneField = !mp_permissionPhone.hideInput && (phoneChoice.length || errors.mp_phone);
96
- var showPostFields = !mp_permissionPost.hideInput && (postChoice.length || isAddressErroring());
86
+ var showEmailField = !mp_permissionEmail.hideInput && (emailChoice || errors.mp_email);
87
+ var showSMSField = !mp_permissionSMS.hideInput && (smsChoice || errors.mp_mobile);
88
+ var showPhoneField = !mp_permissionPhone.hideInput && (phoneChoice || errors.mp_phone);
89
+ var showPostFields = !mp_permissionPost.hideInput && (postChoice || isAddressErroring());
97
90
  var customId = id ? "marketing-preferences--".concat(id) : 'marketing-preferences';
98
- return /*#__PURE__*/_react.default.createElement("div", {
91
+ return /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.OuterWrapper, {
99
92
  id: customId
100
93
  }, copyTop && /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.TopCopyWrapper, null, copyTop), !mp_permissionEmail.disableOption && /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.FormField, {
101
94
  className: "field-email"
102
- }, /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.Head, null, /*#__PURE__*/_react.default.createElement(_Text.default, {
103
- tag: "h3",
104
- size: "l",
105
- family: "Anton",
106
- uppercase: true,
107
- weight: "400",
108
- color: "grey_dark"
109
- }, "Email Me"), /*#__PURE__*/_react.default.createElement(_CheckAnswer.default, {
95
+ }, /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.Head, null, /*#__PURE__*/_react.default.createElement(_CheckAnswer.default, {
110
96
  mpValidationOptions: mpValidationOptions,
111
97
  name: "mp_permissionEmail",
112
98
  id: "mp_permissionEmail",
113
- userSelection: emailChoice[0],
99
+ userSelection: emailChoice,
114
100
  formContext: formContext
115
101
  })), /*#__PURE__*/_react.default.createElement(MaybeDisabled, {
116
102
  disabled: disableEmailInput
117
103
  }, /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.ShowHideInputWrapper, {
118
104
  show: showEmailField
119
- }, emailChoice[0] === 'no' && /*#__PURE__*/_react.default.createElement(_NoMessage.default, {
120
- askingFor: "an email",
121
- optInType: "email"
122
- }), /*#__PURE__*/_react.default.createElement(_TextInput.default, {
105
+ }, /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.ExtraInfo, null, "Please confirm the email address we will use to", /*#__PURE__*/_react.default.createElement("b", null, " email "), "you:"), /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.MPTextInput, {
123
106
  placeholder: "",
124
107
  fieldName: "mp_email",
125
108
  label: "Please enter your email address" // Dynamically update the field attr based on config for current choice
126
109
  ,
127
- optional: !mp_permissionEmail[emailChoice[0]],
110
+ optional: !mp_permissionEmail[emailChoice],
128
111
  type: "email",
129
112
  id: "mp_email",
130
113
  formContext: formContext
131
- })))), !mp_permissionSMS.disableOption && /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.FormField, {
132
- className: "field-sms"
133
- }, /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.Head, null, /*#__PURE__*/_react.default.createElement(_Text.default, {
134
- tag: "h3",
135
- size: "l",
136
- family: "Anton",
137
- uppercase: true,
138
- weight: "400",
139
- color: "grey_dark"
140
- }, "Text me"), /*#__PURE__*/_react.default.createElement(_CheckAnswer.default, {
141
- name: "mp_permissionSMS",
142
- id: "mp_permissionSMS",
143
- mpValidationOptions: mpValidationOptions,
144
- userSelection: smsChoice[0],
145
- formContext: formContext
146
- })), /*#__PURE__*/_react.default.createElement(MaybeDisabled, {
147
- disabled: disableSMSInput
148
- }, /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.ShowHideInputWrapper, {
149
- show: showSMSField
150
- }, smsChoice[0] === 'no' && /*#__PURE__*/_react.default.createElement(_NoMessage.default, {
151
- askingFor: "a mobile number",
152
- optInType: "SMS"
153
- }), /*#__PURE__*/_react.default.createElement(_TextInput.default, {
154
- placeholder: "",
155
- fieldName: "mp_mobile",
156
- label: "Please enter your mobile no.",
157
- optional: !mp_permissionSMS[smsChoice[0]],
158
- id: "mp_mobile",
159
- formContext: formContext
160
- })))), !mp_permissionPhone.disableOption && /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.FormField, {
161
- className: "field-phone"
162
- }, /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.Head, null, /*#__PURE__*/_react.default.createElement(_Text.default, {
163
- tag: "h3",
164
- size: "l",
165
- family: "Anton",
166
- uppercase: true,
167
- weight: "400",
168
- color: "grey_dark"
169
- }, "Phone me"), /*#__PURE__*/_react.default.createElement(_CheckAnswer.default, {
170
- name: "mp_permissionPhone",
171
- mpValidationOptions: mpValidationOptions,
172
- id: "mp_permissionPhone",
173
- userSelection: phoneChoice[0],
174
- formContext: formContext
175
- })), /*#__PURE__*/_react.default.createElement(MaybeDisabled, {
176
- disabled: disablePhoneInput
177
- }, /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.ShowHideInputWrapper, {
178
- show: showPhoneField
179
- }, phoneChoice[0] === 'no' ? /*#__PURE__*/_react.default.createElement(_NoMessage.default, {
180
- askingFor: "a phone number",
181
- optInType: "phone"
182
- }) : '', /*#__PURE__*/_react.default.createElement(_TextInput.default, {
183
- placeholder: "",
184
- fieldName: "mp_phone",
185
- label: "Please enter your phone no.",
186
- optional: !mp_permissionPhone[phoneChoice[0]],
187
- id: "mp_phone",
188
- formContext: formContext
189
114
  })))), !mp_permissionPost.disableOption && /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.FormField, {
190
115
  className: "field-post"
191
- }, /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.Head, null, /*#__PURE__*/_react.default.createElement(_Text.default, {
192
- tag: "h3",
193
- size: "l",
194
- family: "Anton",
195
- uppercase: true,
196
- weight: "400",
197
- color: "grey_dark"
198
- }, "Send me post"), /*#__PURE__*/_react.default.createElement(_CheckAnswer.default, {
116
+ }, /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.Head, null, /*#__PURE__*/_react.default.createElement(_CheckAnswer.default, {
199
117
  name: "mp_permissionPost",
200
118
  mpValidationOptions: mpValidationOptions,
201
119
  id: "mp_permissionPost",
202
- userSelection: postChoice[0],
120
+ userSelection: postChoice,
203
121
  formContext: formContext
204
122
  })), /*#__PURE__*/_react.default.createElement(MaybeDisabled, {
205
123
  disabled: disablePostInput
206
124
  }, /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.ShowHideInputWrapper, {
207
125
  show: showPostFields
208
- }, postChoice[0] === 'no' ? /*#__PURE__*/_react.default.createElement(_NoMessage.default, {
209
- askingFor: "an address",
210
- optInType: "postal"
211
- }) : '', /*#__PURE__*/_react.default.createElement(_TextInput.default, {
126
+ }, /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.ExtraInfo, null, "Please confirm the address we will use to", /*#__PURE__*/_react.default.createElement("b", null, " post "), "to you:"), /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.MPTextInput, {
212
127
  placeholder: "",
213
128
  fieldName: "mp_address1",
214
129
  label: "Address Line 1",
215
- optional: !mp_permissionPost[postChoice[0]],
130
+ optional: !mp_permissionPost[postChoice],
216
131
  id: "mp_address1",
217
132
  formContext: formContext
218
- }), /*#__PURE__*/_react.default.createElement(_TextInput.default, {
133
+ }), /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.MPTextInput, {
219
134
  placeholder: "",
220
135
  fieldName: "mp_address2",
221
136
  label: "Address Line 2",
222
137
  optional: true,
223
138
  id: "mp_address2",
224
139
  formContext: formContext
225
- }), /*#__PURE__*/_react.default.createElement(_TextInput.default, {
140
+ }), /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.MPTextInput, {
226
141
  placeholder: "",
227
142
  fieldName: "mp_address3",
228
143
  label: "Address Line 3",
229
144
  optional: true,
230
145
  id: "mp_address3",
231
146
  formContext: formContext
232
- }), /*#__PURE__*/_react.default.createElement(_TextInput.default, {
147
+ }), /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.MPTextInput, {
233
148
  placeholder: "",
234
149
  fieldName: "mp_town",
235
150
  label: "Town/City",
236
- optional: !mp_permissionPost[postChoice[0]],
151
+ optional: !mp_permissionPost[postChoice],
237
152
  id: "mp_town",
238
153
  formContext: formContext
239
- }), /*#__PURE__*/_react.default.createElement(_TextInput.default, {
154
+ }), /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.MPTextInput, {
240
155
  placeholder: "",
241
156
  fieldName: "mp_postcode",
242
157
  label: "Postcode",
243
- optional: !mp_permissionPost[postChoice[0]],
158
+ optional: !mp_permissionPost[postChoice],
244
159
  id: "mp_postcode",
245
160
  formContext: formContext
246
- }), /*#__PURE__*/_react.default.createElement(_TextInput.default, {
161
+ }), /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.MPTextInput, {
247
162
  placeholder: "",
248
163
  fieldName: "mp_country",
249
164
  label: "Country",
250
- optional: !mp_permissionPost[postChoice[0]],
165
+ optional: !mp_permissionPost[postChoice],
251
166
  id: "mp_country",
252
167
  formContext: formContext
168
+ })))), !mp_permissionSMS.disableOption && /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.FormField, {
169
+ className: "field-sms"
170
+ }, /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.Head, null, /*#__PURE__*/_react.default.createElement(_CheckAnswer.default, {
171
+ name: "mp_permissionSMS",
172
+ id: "mp_permissionSMS",
173
+ mpValidationOptions: mpValidationOptions,
174
+ userSelection: smsChoice,
175
+ formContext: formContext
176
+ })), /*#__PURE__*/_react.default.createElement(MaybeDisabled, {
177
+ disabled: disableSMSInput
178
+ }, /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.ShowHideInputWrapper, {
179
+ show: showSMSField
180
+ }, /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.ExtraInfo, null, "Please confirm the mobile number we will use to", /*#__PURE__*/_react.default.createElement("b", null, " text "), "you on:"), /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.MPTextInput, {
181
+ placeholder: "",
182
+ fieldName: "mp_mobile",
183
+ label: "Please enter your mobile no.",
184
+ optional: !mp_permissionSMS[smsChoice],
185
+ id: "mp_mobile",
186
+ formContext: formContext
187
+ })))), !mp_permissionPhone.disableOption && /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.FormField, {
188
+ className: "field-phone"
189
+ }, /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.Head, null, /*#__PURE__*/_react.default.createElement(_CheckAnswer.default, {
190
+ name: "mp_permissionPhone",
191
+ mpValidationOptions: mpValidationOptions,
192
+ id: "mp_permissionPhone",
193
+ userSelection: phoneChoice,
194
+ formContext: formContext
195
+ })), /*#__PURE__*/_react.default.createElement(MaybeDisabled, {
196
+ disabled: disablePhoneInput
197
+ }, /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.ShowHideInputWrapper, {
198
+ show: showPhoneField
199
+ }, /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.ExtraInfo, null, "Please confirm the telephone number we will use to", /*#__PURE__*/_react.default.createElement("b", null, " phone "), "you on:"), /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.MPTextInput, {
200
+ placeholder: "",
201
+ fieldName: "mp_phone",
202
+ label: "Please enter your phone no.",
203
+ optional: !mp_permissionPhone[phoneChoice],
204
+ id: "mp_phone",
205
+ formContext: formContext
253
206
  })))), copyBottom && /*#__PURE__*/_react.default.createElement(_MarketingPreferencesDS.BottomCopyWrapper, null, copyBottom));
254
207
  }; // removes from DOM completely
255
208