@capillarytech/creatives-library 2.0.79 → 2.0.81

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 (108) hide show
  1. package/components/CardGrid/index.js +1 -0
  2. package/components/EmailPreview/assets/images/iPad.svg +10 -0
  3. package/components/EmailPreview/assets/images/mobile.png +0 -0
  4. package/components/FormBuilder/index.js +3 -2
  5. package/components/FormBuilder/test +1845 -0
  6. package/containers/CallTask/_callTask.scss +5 -0
  7. package/containers/CallTask/actions.js +15 -0
  8. package/containers/CallTask/constants.js +7 -0
  9. package/containers/CallTask/index.js +141 -0
  10. package/containers/CallTask/messages.js +21 -0
  11. package/containers/CallTask/reducer.js +23 -0
  12. package/containers/CallTask/sagas.js +11 -0
  13. package/containers/CallTask/selectors.js +25 -0
  14. package/containers/CallTask/tests/actions.test.js +18 -0
  15. package/containers/CallTask/tests/index.test.js +10 -0
  16. package/containers/CallTask/tests/reducer.test.js +9 -0
  17. package/containers/CallTask/tests/sagas.test.js +15 -0
  18. package/containers/CallTask/tests/selectors.test.js +10 -0
  19. package/containers/ChannelTemplates/actions.js +20 -0
  20. package/containers/ChannelTemplates/constants.js +8 -0
  21. package/containers/ChannelTemplates/index.js +48 -0
  22. package/containers/ChannelTemplates/messages.js +13 -0
  23. package/containers/ChannelTemplates/reducer.js +34 -0
  24. package/containers/ChannelTemplates/sagas.js +32 -0
  25. package/containers/ChannelTemplates/selectors.js +25 -0
  26. package/containers/ChannelTemplates/tests/actions.test.js +18 -0
  27. package/containers/ChannelTemplates/tests/index.test.js +10 -0
  28. package/containers/ChannelTemplates/tests/reducer.test.js +9 -0
  29. package/containers/ChannelTemplates/tests/sagas.test.js +15 -0
  30. package/containers/ChannelTemplates/tests/selectors.test.js +10 -0
  31. package/containers/CreativesContainer/SlideBoxContent.js +248 -0
  32. package/containers/CreativesContainer/SlideBoxFooter.js +38 -0
  33. package/containers/CreativesContainer/SlideBoxHeader.js +65 -0
  34. package/containers/CreativesContainer/actions.js +27 -0
  35. package/containers/CreativesContainer/constants.js +13 -0
  36. package/containers/CreativesContainer/index.js +418 -0
  37. package/containers/CreativesContainer/index.scss +27 -0
  38. package/containers/CreativesContainer/messages.js +17 -0
  39. package/containers/CreativesContainer/reducer.js +29 -0
  40. package/containers/CreativesContainer/sagas.js +11 -0
  41. package/containers/CreativesContainer/selectors.js +30 -0
  42. package/containers/CreativesContainer/tests/actions.test.js +18 -0
  43. package/containers/CreativesContainer/tests/index.test.js +10 -0
  44. package/containers/CreativesContainer/tests/reducer.test.js +9 -0
  45. package/containers/CreativesContainer/tests/sagas.test.js +15 -0
  46. package/containers/CreativesContainer/tests/selectors.test.js +10 -0
  47. package/containers/EmailWrapper/actions.js +15 -0
  48. package/containers/EmailWrapper/constants.js +7 -0
  49. package/containers/EmailWrapper/index.js +238 -0
  50. package/containers/EmailWrapper/messages.js +57 -0
  51. package/containers/EmailWrapper/reducer.js +23 -0
  52. package/containers/EmailWrapper/sagas.js +11 -0
  53. package/containers/EmailWrapper/selectors.js +25 -0
  54. package/containers/EmailWrapper/tests/actions.test.js +18 -0
  55. package/containers/EmailWrapper/tests/index.test.js +10 -0
  56. package/containers/EmailWrapper/tests/reducer.test.js +9 -0
  57. package/containers/EmailWrapper/tests/sagas.test.js +15 -0
  58. package/containers/EmailWrapper/tests/selectors.test.js +10 -0
  59. package/containers/Line/Create/index.js +1 -1
  60. package/containers/MobilePush/Create/selectors.js +1 -1
  61. package/containers/MobilePush/Edit/selectors.js +1 -1
  62. package/containers/MobilePush/commonMethods.js +249 -0
  63. package/containers/MobilePush/eventsMap.js +127 -0
  64. package/containers/MobilePush/initialSchema.js +1739 -0
  65. package/containers/MobilepushWrapper/_mobilepushWrapper.scss +18 -0
  66. package/containers/MobilepushWrapper/index.js +97 -0
  67. package/containers/MobilepushWrapper/messages.js +25 -0
  68. package/containers/MobilepushWrapper/tests/index.test.js +10 -0
  69. package/containers/Templates/index.js +18 -14
  70. package/containers/TemplatesV2/_templatesV2.scss +5 -0
  71. package/containers/TemplatesV2/actions.js +16 -0
  72. package/containers/TemplatesV2/constants.js +10 -0
  73. package/containers/TemplatesV2/index.js +207 -0
  74. package/containers/TemplatesV2/messages.js +29 -0
  75. package/containers/TemplatesV2/selectors.js +25 -0
  76. package/containers/TemplatesV2/tests/actions.test.js +18 -0
  77. package/containers/TemplatesV2/tests/index.test.js +10 -0
  78. package/containers/TemplatesV2/tests/reducer.test.js +9 -0
  79. package/containers/TemplatesV2/tests/sagas.test.js +15 -0
  80. package/containers/TemplatesV2/tests/selectors.test.js +10 -0
  81. package/containers/WeChat/RichmediaTemplates/Create/testschema.js +379 -0
  82. package/containers/WeChat/_wechat.scss +8 -0
  83. package/containers/WeChat/actions.js +52 -0
  84. package/containers/WeChat/constants.js +28 -0
  85. package/containers/WeChat/index.js +1635 -0
  86. package/containers/WeChat/messages.js +73 -0
  87. package/containers/WeChat/reducer.js +74 -0
  88. package/containers/WeChat/sagas.js +86 -0
  89. package/containers/WeChat/selectors.js +25 -0
  90. package/containers/WeChat/tests/actions.test.js +18 -0
  91. package/{components/SmsPreviewV2 → containers/WeChat}/tests/index.test.js +2 -2
  92. package/containers/WeChat/tests/reducer.test.js +9 -0
  93. package/containers/WeChat/tests/sagas.test.js +15 -0
  94. package/containers/WeChat/tests/selectors.test.js +10 -0
  95. package/index.js +4 -3
  96. package/package.json +1 -1
  97. package/v2Containers/MobilePush/Create/index.js +43 -9
  98. package/v2Containers/MobilePush/Create/messages.js +16 -0
  99. package/v2Containers/MobilePush/Create/selectors.js +2 -1
  100. package/v2Containers/MobilePush/Edit/index.js +54 -22
  101. package/v2Containers/MobilePush/Edit/messages.js +17 -1
  102. package/v2Containers/MobilePush/Edit/selectors.js +2 -1
  103. package/v2Containers/MobilePush/commonMethods.js +9 -7
  104. package/v2Containers/WeChat/MapTemplates/index.js +5 -5
  105. package/assets/android-message-gui-2.svg +0 -55
  106. package/components/SmsPreviewV2/_smsPreviewV2.scss +0 -353
  107. package/components/SmsPreviewV2/index.js +0 -69
  108. package/components/SmsPreviewV2/messages.js +0 -13
@@ -0,0 +1,249 @@
1
+ import {get, filter, cloneDeep} from 'lodash';
2
+
3
+ function getPrimaryCtaFields({inputFields, fieldIndex, deepLinkOptions}) {
4
+ const newInputFields = cloneDeep(inputFields);
5
+ newInputFields.splice(fieldIndex + 1, 0, {
6
+ rowClassName: 'mobile-push-row',
7
+ identifier: `cta-deeplink${this.state.currentTab > 1 ? this.state.currentTab : ''}`,
8
+
9
+ cols: [
10
+ {
11
+ id: `cta-deeplink${this.state.currentTab > 1 ? this.state.currentTab : ''}`,
12
+ type: "radioGroup", //Resembles component to be used
13
+ metaType: "text",
14
+ datatype: "string",
15
+ options: ["Deeplink", "External Link"],
16
+ inductiveText: ["A page within mobile app", "An external web page"],
17
+ value: "Deeplink",
18
+ required: true,
19
+ width: 18,
20
+ offset: 1,
21
+ errorMessage: "Please select link type",
22
+ fluid: true,
23
+ styling: "semantic",
24
+ order: 1,
25
+ customComponent: false,
26
+ supportedEvents: ["onChange"],
27
+ },
28
+
29
+ ],
30
+ });
31
+ newInputFields.splice(fieldIndex + 2, 0, {
32
+ rowClassName: 'mobile-push-row',
33
+ id: 'cta-deeplink-select-section',
34
+ identifier: `cta-deeplink${this.state.currentTab > 1 ? this.state.currentTab : ''}-select`,
35
+
36
+ cols: [
37
+
38
+ {
39
+ id: `cta-deeplink${this.state.currentTab > 1 ? this.state.currentTab : ''}-select`,
40
+ placeholder: "Select DeepLink",
41
+ type: "select", //Resembles component to be used
42
+ options: deepLinkOptions,
43
+ metaType: "text",
44
+ datatype: "string",
45
+ required: true,
46
+ errorMessage: "Select a deeplink",
47
+ fluid: true,
48
+ width: 18,
49
+ offset: 1,
50
+ style: {
51
+ width: '100%',
52
+
53
+
54
+ marginBottom: '16px',
55
+ },
56
+ styling: "semantic",
57
+ order: 1,
58
+ customComponent: false,
59
+ supportedEvents: [
60
+ 'onSelect',
61
+ ],
62
+ },
63
+ ],
64
+ });
65
+ return newInputFields;
66
+ }
67
+
68
+ function getSecondaryCtaFields({inputFields, fieldIndex, deepLinkOptions}) {
69
+ const inputId = `secondary-cta-${get(inputFields[fieldIndex], 'cols[0]').fieldsCount}`;
70
+ const newInputFields = cloneDeep(inputFields);
71
+ newInputFields.splice(fieldIndex + 1, 0, {
72
+ rowClassName: 'mobile-push-row',
73
+ cols: [
74
+
75
+ {
76
+ id: `${inputId}-label`,
77
+ label: "Button label",
78
+ type: "input", //Resembles component to be used
79
+ metaType: "text",
80
+ datatype: "string",
81
+ required: true,
82
+ width: 18,
83
+ offset: 1,
84
+ placeholder: "Enter CTA Label here",
85
+ fluid: true,
86
+ styling: "semantic",
87
+ order: 1,
88
+ customComponent: false,
89
+ errorMessage: "CTA label cannot be empty.",
90
+ },
91
+
92
+ ],
93
+ });
94
+ newInputFields.splice(fieldIndex + 2, 0, {
95
+ rowClassName: 'mobile-push-row',
96
+ identifier: `cta-deeplink-${inputId}`,
97
+ cols: [
98
+
99
+ {
100
+ id: `cta-deeplink-${inputId}`,
101
+ type: "radioGroup", //Resembles component to be used
102
+ metaType: "text",
103
+ datatype: "string",
104
+ options: ["Deeplink", "External Link"],
105
+ inductiveText: ["A page within mobile app", "An external web page"],
106
+ value: "Deeplink",
107
+ required: true,
108
+ width: 18,
109
+ offset: 1,
110
+ errorMessage: "Please select link type",
111
+ fluid: true,
112
+ styling: "semantic",
113
+ order: 1,
114
+
115
+ customComponent: false,
116
+ supportedEvents: ["onChange"],
117
+ },
118
+ ],
119
+ });
120
+ newInputFields.splice(fieldIndex + 3, 0, {
121
+ rowClassName: 'mobile-push-row',
122
+ id: 'cta-deeplink-select-section',
123
+ identifier: `cta-deeplink-${inputId}-select`,
124
+ cols: [
125
+
126
+
127
+ {
128
+ id: `cta-deeplink-${inputId}-select`,
129
+ placeholder: "Select DeepLink",
130
+ type: "select", //Resembles component to be used
131
+ options: deepLinkOptions,
132
+ errorMessage: "Select a deeplink",
133
+ metaType: "text",
134
+ datatype: "string",
135
+ required: true,
136
+ fluid: true,
137
+ width: 18,
138
+ offset: 1,
139
+ style: {
140
+ width: '100%',
141
+ marginBottom: '16px',
142
+ },
143
+ styling: "semantic",
144
+ order: 1,
145
+ customComponent: false,
146
+ supportedEvents: [
147
+ 'onSelect',
148
+ ],
149
+ },
150
+ ],
151
+ });
152
+ return newInputFields;
153
+ }
154
+ function getLinkTypeFields({inputFieldsArgs, fieldIndex, deepLinkOptions, formData, field}) {
155
+ const inputFields = cloneDeep(inputFieldsArgs);
156
+ const deeplinks = this.props.Templates.selectedWeChatAccount && this.props.Templates.selectedWeChatAccount.configs && !!this.props.Templates.selectedWeChatAccount.configs.deeplink ? this.props.Templates.selectedWeChatAccount.configs.deeplink : '[]';
157
+ const deeplinkValue = formData[this.state.currentTab - 1][field.id];
158
+ const componentIndex = fieldIndex + 1;
159
+ const inputId = deeplinkValue && deeplinkValue.toLowerCase() === "deeplink" ? `${field.id}-select` : `${field.id}-text`;
160
+ if ( deeplinkValue && deeplinkValue.toLowerCase() === "deeplink" && (fieldIndex === inputFields.length - 1 || inputFields[componentIndex].id !== "cta-deeplink-select-section")) {
161
+ const deleteCount = get(inputFields, `[${componentIndex}].id`) === "cta-external-link" ? 1 : 0;
162
+ inputFields.splice(componentIndex, deleteCount, {
163
+ rowClassName: 'mobile-push-row',
164
+ id: 'cta-deeplink-select-section',
165
+ identifier: inputId,
166
+ cols: [
167
+
168
+ {
169
+ id: inputId,
170
+ placeholder: "Select DeepLink",
171
+ type: "select", //Resembles component to be used
172
+ options: deepLinkOptions,
173
+ metaType: "text",
174
+ datatype: "string",
175
+ errorMessage: "Select a deeplink",
176
+ required: true,
177
+ fluid: true,
178
+ width: 18,
179
+ offset: 1,
180
+ style: {
181
+ width: '100%',
182
+
183
+ marginBottom: '16px',
184
+ },
185
+ styling: "semantic",
186
+ order: 1,
187
+ customComponent: false,
188
+ supportedEvents: [
189
+ 'onSelect',
190
+ ],
191
+ },
192
+ ],
193
+ });
194
+ } else if ( deeplinkValue && deeplinkValue.toLowerCase() === "external link") {
195
+ const row = {
196
+ rowClassName: 'mobile-push-row',
197
+ id: 'cta-external-link',
198
+ identifier: inputId,
199
+
200
+ cols: [
201
+
202
+ {
203
+ id: inputId,
204
+ placeholder: "External Link",
205
+ type: "input", //Resembles component to be used
206
+ metaType: "text",
207
+ datatype: "string",
208
+ errorMessage: "External Link cannot be empty",
209
+ required: true,
210
+ fluid: true,
211
+ width: 18,
212
+ offset: 1,
213
+ style: {
214
+ width: '100%',
215
+
216
+ marginBottom: '16px',
217
+ },
218
+ styling: "semantic",
219
+ order: 1,
220
+ customComponent: false,
221
+ standalone: false,
222
+ },
223
+ ],
224
+ };
225
+ if (!inputFields[fieldIndex + 1] || inputFields[componentIndex].id === "cta-deeplink-select-section") {
226
+ inputFields[componentIndex] = row;
227
+ if (inputFields[componentIndex + 1] && inputFields[componentIndex + 1].id === "show-cta-deeplink-keys-label") {
228
+ inputFields.splice(componentIndex + 1, 1);
229
+ }
230
+ if (inputFields[componentIndex + 1] && inputFields[componentIndex + 1].id === "cta-deeplink-keys") {
231
+ let configkeys = filter(JSON.parse(deeplinks), (dl) => dl.link === formData[this.state.currentTab - 1][`${field.id}-select`]);
232
+ if (configkeys[0]) {
233
+ configkeys = configkeys[0].keys;
234
+ }
235
+ if (configkeys.length) {
236
+ //inputFields = inputFields.slice(0, componentIndex + 1).concat(inputFields.slice( componentIndex + 1 + configkeys.length, inputFields.length));
237
+
238
+ inputFields.splice(componentIndex + 1, configkeys.length);
239
+ }
240
+ }
241
+ } else {
242
+ inputFields.splice(componentIndex, 0, row);
243
+ }
244
+ }
245
+ return inputFields;
246
+ }
247
+ export {
248
+ getPrimaryCtaFields, getSecondaryCtaFields, getLinkTypeFields,
249
+ };
@@ -0,0 +1,127 @@
1
+ const getEventsMap = (context) => ({
2
+ "template-name": {
3
+ onChange: context.onTemplateNameChange,
4
+ },
5
+ "cta-deeplink-secondary-cta-0": {
6
+ onChange: context.onLinkTypeChange,
7
+ },
8
+ "cta-deeplink-secondary-cta-1": {
9
+ onChange: context.onLinkTypeChange,
10
+ },
11
+ "cta-deeplink-secondary-cta-12": {
12
+ onChange: context.onLinkTypeChange,
13
+ },
14
+ "cta-deeplink-delete": {
15
+ onDelete: context.deletePrimaryCTA,
16
+ },
17
+ "cta-deeplink2-delete": {
18
+ onDelete: context.deletePrimaryCTA,
19
+ },
20
+ "secondary-cta-0-delete": {
21
+ onDelete: context.deleteSecondaryCTA,
22
+ },
23
+ "secondary-cta-1-delete": {
24
+ onDelete: context.deleteSecondaryCTA,
25
+ },
26
+ "secondary-cta-1-delete-ios": {
27
+ onDelete: context.deleteSecondaryCtaIos,
28
+ },
29
+ "discard-button": {
30
+ discardValues: context.discardValues,
31
+ },
32
+ "cancel-button": {
33
+ cancelTemplate: context.cancelTemplate,
34
+ },
35
+ "copy-android-content": {
36
+ onClick: context.copyAndroidContent,
37
+ },
38
+ "copy-iphone-content": {
39
+ onClick: context.copyIphoneContent,
40
+ },
41
+ "save-button": {
42
+ saveFormData: context.saveFormData,
43
+ },
44
+ "message-editor": {
45
+ onChange: context.onTemplateContentChange,
46
+ },
47
+ "message-editor2": {
48
+ onChange: context.onTemplateContentChange,
49
+ },
50
+ "message-tagList": {
51
+ onTagSelect: context.onTagSelect,
52
+ },
53
+ "message-tagList2": {
54
+ onTagSelect: context.onTagSelect,
55
+ },
56
+ "title-tagList": {
57
+ onTagSelect: context.onTagSelect,
58
+ },
59
+ "title-tagList2": {
60
+ onTagSelect: context.onTagSelect,
61
+ },
62
+ "pane": {
63
+ onTabChange: context.onTabChange,
64
+ },
65
+ "cta-deeplink": {
66
+ onChange: context.onLinkTypeChange,
67
+ },
68
+ "cta-deeplink2": {
69
+ onChange: context.onLinkTypeChange,
70
+ },
71
+ "cta-deeplink-secondary-cta-1-select": {
72
+ onSelect: context.showCtaKeys,
73
+ },
74
+ "cta-deeplink-secondary-cta-0-select": {
75
+ onSelect: context.showCtaKeys,
76
+ },
77
+ "cta-deeplink-secondary-cta-1-select2": {
78
+ onSelect: context.showCtaKeys,
79
+ },
80
+ "cta-deeplink-select": {
81
+ onSelect: context.showCtaKeys,
82
+ },
83
+ "cta-deeplink2-select": {
84
+ onSelect: context.showCtaKeys,
85
+ },
86
+ "add-pri-cta": {
87
+ addPrimaryCta: context.addPrimaryCta,
88
+ },
89
+ "add-pri-cta-ios": {
90
+ addPrimaryCta: context.addPrimaryCta,
91
+ },
92
+ "add-sec-cta": {
93
+ addSecondaryCta: context.addSecondoryCta,
94
+ },
95
+ "add-sec-cta-2": {
96
+ addSecondaryCta: context.addSecondoryCta,
97
+ },
98
+ "add-sec-cta-ios": {
99
+ addSecondaryCtaIos: context.addSecondoryCtaIos,
100
+ },
101
+
102
+ "image-upload-android": {
103
+ onUpload: context.uploadImage,
104
+ },
105
+ "image-upload-ios": {
106
+ onUpload: context.uploadImage,
107
+ },
108
+ "secondary-cta-1-table": {
109
+ onRowClick: context.selectCtaIos,
110
+ },
111
+ "cta-deeplink-select-show-keys": {
112
+ onShowCtaKeys: context.showCtaKeys,
113
+ },
114
+ "cta-deeplink-secondary-cta-0-select-show-keys": {
115
+ onShowCtaKeys: context.showCtaKeys,
116
+ },
117
+ "cta-deeplink-secondary-cta-1-select-show-keys": {
118
+ onShowCtaKeys: context.showCtaKeys,
119
+ },
120
+ "wechat-template": {
121
+ onSelect: context.onTemplateChange,
122
+ },
123
+ "mobilepush-template": {
124
+ onSelect: context.onTemplateChange,
125
+ },
126
+ });
127
+ export default getEventsMap;