@capillarytech/creatives-library 9.0.15-alpha.3 → 9.0.16-beta.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 (146) hide show
  1. package/AppRoot.js +80 -0
  2. package/app.js +5 -3
  3. package/constants/unified.js +0 -29
  4. package/entry.js +67 -1
  5. package/global-styles.js +1 -1
  6. package/mfe-exposed-components.js +2 -4
  7. package/package.json +2 -2
  8. package/services/api.js +1 -1
  9. package/services/tests/api.test.js +20 -35
  10. package/styles/containers/layout/_layoutPage.scss +8 -6
  11. package/utils/commonUtils.js +1 -19
  12. package/utils/getDataLayer.js +15 -0
  13. package/utils/gtmTrackers/gtmEvents/creativeDetails.js +2 -1
  14. package/utils/mfeDetect.js +1 -0
  15. package/v2Components/CapActionButton/constants.js +1 -8
  16. package/v2Components/CapActionButton/index.js +144 -202
  17. package/v2Components/CapActionButton/index.scss +14 -232
  18. package/v2Components/CapActionButton/messages.js +3 -19
  19. package/v2Components/CapActionButton/tests/index.test.js +18 -42
  20. package/v2Components/CapImageUpload/index.js +2 -2
  21. package/v2Components/CapTagList/index.js +0 -10
  22. package/v2Components/CommonTestAndPreview/CustomValuesEditor.js +48 -70
  23. package/v2Components/CommonTestAndPreview/DeliverySettings/DeliverySettings.scss +2 -8
  24. package/v2Components/CommonTestAndPreview/DeliverySettings/ModifyDeliverySettings.js +21 -214
  25. package/v2Components/CommonTestAndPreview/DeliverySettings/constants.js +0 -16
  26. package/v2Components/CommonTestAndPreview/DeliverySettings/index.js +9 -83
  27. package/v2Components/CommonTestAndPreview/DeliverySettings/messages.js +0 -30
  28. package/v2Components/CommonTestAndPreview/DeliverySettings/utils/parseSenderDetailsResponse.js +11 -60
  29. package/v2Components/CommonTestAndPreview/SendTestMessage.js +5 -10
  30. package/v2Components/CommonTestAndPreview/UnifiedPreview/RcsPreviewContent.js +22 -202
  31. package/v2Components/CommonTestAndPreview/UnifiedPreview/_unifiedPreview.scss +80 -381
  32. package/v2Components/CommonTestAndPreview/UnifiedPreview/index.js +8 -155
  33. package/v2Components/CommonTestAndPreview/_commonTestAndPreview.scss +0 -11
  34. package/v2Components/CommonTestAndPreview/constants.js +2 -38
  35. package/v2Components/CommonTestAndPreview/index.js +222 -761
  36. package/v2Components/CommonTestAndPreview/messages.js +3 -45
  37. package/v2Components/CommonTestAndPreview/sagas.js +6 -25
  38. package/v2Components/CommonTestAndPreview/tests/CommonTestAndPreview.addTestCustomer.test.js +0 -1
  39. package/v2Components/CommonTestAndPreview/tests/CustomValuesEditor.test.js +267 -284
  40. package/v2Components/CommonTestAndPreview/tests/DeliverySettings/ModifyDeliverySettings.test.js +65 -231
  41. package/v2Components/CommonTestAndPreview/tests/DeliverySettings/index.test.js +5 -118
  42. package/v2Components/CommonTestAndPreview/tests/DeliverySettings/utils/parseSenderDetailsResponse.test.js +0 -341
  43. package/v2Components/CommonTestAndPreview/tests/PreviewSection.test.js +1 -8
  44. package/v2Components/CommonTestAndPreview/tests/SendTestMessage.test.js +13 -34
  45. package/v2Components/CommonTestAndPreview/tests/UnifiedPreview/RcsPreviewContent.test.js +283 -281
  46. package/v2Components/CommonTestAndPreview/tests/UnifiedPreview/index.test.js +1 -199
  47. package/v2Components/CommonTestAndPreview/tests/index.test.js +4 -133
  48. package/v2Components/CommonTestAndPreview/tests/sagas.test.js +24 -31
  49. package/v2Components/NavigationBar/index.js +9 -7
  50. package/v2Components/NavigationBar/mfeModuleHeader.config.js +16 -0
  51. package/v2Components/Pagination/_pagination.scss +2 -0
  52. package/v2Components/TemplatePreview/_templatePreview.scss +25 -45
  53. package/v2Components/TemplatePreview/index.js +32 -147
  54. package/v2Components/TemplatePreview/tests/index.test.js +0 -142
  55. package/v2Components/TestAndPreviewSlidebox/CustomValuesEditor.js +6 -6
  56. package/v2Components/TestAndPreviewSlidebox/index.js +1 -13
  57. package/v2Components/TestAndPreviewSlidebox/sagas.js +4 -11
  58. package/v2Components/TestAndPreviewSlidebox/tests/saga.test.js +1 -3
  59. package/v2Containers/Cap/constants.js +1 -0
  60. package/v2Containers/Cap/index.js +47 -21
  61. package/v2Containers/Cap/sagas.js +19 -0
  62. package/v2Containers/CommunicationFlow/Tests/CommunicationFlow.test.js +1 -4
  63. package/v2Containers/CommunicationFlow/steps/DeliverySettingsStep/Tests/DeliverySettingsSection.test.js +0 -4
  64. package/v2Containers/CommunicationFlow/steps/DeliverySettingsStep/Tests/SenderDetails.test.js +20 -20
  65. package/v2Containers/CreativesContainer/SlideBoxContent.js +7 -37
  66. package/v2Containers/CreativesContainer/SlideBoxFooter.js +5 -14
  67. package/v2Containers/CreativesContainer/SlideBoxHeader.js +5 -36
  68. package/v2Containers/CreativesContainer/constants.js +0 -11
  69. package/v2Containers/CreativesContainer/index.js +104 -323
  70. package/v2Containers/CreativesContainer/index.scss +1 -83
  71. package/v2Containers/CreativesContainer/tests/SlideBoxFooter.test.js +34 -79
  72. package/v2Containers/CreativesContainer/tests/SlideBoxHeader.test.js +16 -79
  73. package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxContent.test.js.snap +0 -8
  74. package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxHeader.test.js.snap +90 -333
  75. package/v2Containers/CreativesContainer/tests/__snapshots__/index.test.js.snap +15 -20
  76. package/v2Containers/CreativesContainer/tests/index.test.js +9 -71
  77. package/v2Containers/MobilePush/Create/test/saga.test.js +2 -2
  78. package/v2Containers/Rcs/constants.js +11 -131
  79. package/v2Containers/Rcs/index.js +829 -2682
  80. package/v2Containers/Rcs/index.scss +8 -443
  81. package/v2Containers/Rcs/messages.js +6 -45
  82. package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +39409 -74176
  83. package/v2Containers/Rcs/tests/__snapshots__/utils.test.js.snap +74 -10
  84. package/v2Containers/Rcs/tests/index.test.js +40 -151
  85. package/v2Containers/Rcs/tests/mockData.js +0 -38
  86. package/v2Containers/Rcs/tests/utils.test.js +30 -643
  87. package/v2Containers/Rcs/utils.js +12 -466
  88. package/v2Containers/Sms/Create/index.js +48 -115
  89. package/v2Containers/SmsTrai/Create/index.js +4 -9
  90. package/v2Containers/SmsTrai/Edit/constants.js +0 -2
  91. package/v2Containers/SmsTrai/Edit/index.js +169 -678
  92. package/v2Containers/SmsTrai/Edit/messages.js +4 -14
  93. package/v2Containers/SmsTrai/Edit/tests/__snapshots__/index.test.js.snap +2854 -5455
  94. package/v2Containers/SmsWrapper/index.js +8 -37
  95. package/v2Containers/TagList/index.js +0 -6
  96. package/v2Containers/Templates/_templates.scss +11 -196
  97. package/v2Containers/Templates/actions.js +0 -11
  98. package/v2Containers/Templates/constants.js +0 -2
  99. package/v2Containers/Templates/index.js +60 -131
  100. package/v2Containers/Templates/sagas.js +13 -57
  101. package/v2Containers/Templates/tests/__snapshots__/index.test.js.snap +1015 -1060
  102. package/v2Containers/Templates/tests/sagas.test.js +16 -199
  103. package/v2Containers/TemplatesV2/TemplatesV2.style.js +10 -75
  104. package/v2Containers/TemplatesV2/index.js +43 -86
  105. package/v2Containers/WeChat/MapTemplates/test/saga.test.js +9 -9
  106. package/v2Containers/Whatsapp/index.js +25 -4
  107. package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +34 -578
  108. package/utils/rcsPayloadUtils.js +0 -92
  109. package/utils/templateVarUtils.js +0 -201
  110. package/utils/tests/rcsPayloadUtils.test.js +0 -226
  111. package/utils/tests/templateVarUtils.test.js +0 -204
  112. package/v2Components/CommonTestAndPreview/previewApiUtils.js +0 -59
  113. package/v2Components/CommonTestAndPreview/tests/previewApiUtils.test.js +0 -67
  114. package/v2Components/CommonTestAndPreview/utils.js +0 -84
  115. package/v2Components/SmsFallback/SmsFallbackLocalSelector.js +0 -91
  116. package/v2Components/SmsFallback/constants.js +0 -94
  117. package/v2Components/SmsFallback/index.js +0 -958
  118. package/v2Components/SmsFallback/index.scss +0 -266
  119. package/v2Components/SmsFallback/messages.js +0 -78
  120. package/v2Components/SmsFallback/smsFallbackUtils.js +0 -120
  121. package/v2Components/SmsFallback/tests/SmsFallbackLocalSelector.test.js +0 -50
  122. package/v2Components/SmsFallback/tests/rcsSmsFallback.acceptance.test.js +0 -147
  123. package/v2Components/SmsFallback/tests/smsFallbackHandlers.test.js +0 -304
  124. package/v2Components/SmsFallback/tests/smsFallbackUi.test.js +0 -208
  125. package/v2Components/SmsFallback/tests/smsFallbackUtils.test.js +0 -309
  126. package/v2Components/SmsFallback/tests/useLocalTemplateList.test.js +0 -422
  127. package/v2Components/SmsFallback/useLocalTemplateList.js +0 -92
  128. package/v2Components/TemplatePreview/constants.js +0 -2
  129. package/v2Components/VarSegmentMessageEditor/constants.js +0 -2
  130. package/v2Components/VarSegmentMessageEditor/index.js +0 -125
  131. package/v2Components/VarSegmentMessageEditor/index.scss +0 -46
  132. package/v2Containers/CreativesContainer/CreativesSlideBoxWrapper.js +0 -17
  133. package/v2Containers/CreativesContainer/embeddedSlideboxUtils.js +0 -79
  134. package/v2Containers/CreativesContainer/tests/SlideBoxContent.localTemplates.test.js +0 -90
  135. package/v2Containers/CreativesContainer/tests/embeddedSlideboxUtils.test.js +0 -258
  136. package/v2Containers/CreativesContainer/tests/useLocalTemplatesProp.test.js +0 -125
  137. package/v2Containers/Rcs/rcsLibraryHydrationUtils.js +0 -227
  138. package/v2Containers/Rcs/tests/rcsLibraryHydrationUtils.test.js +0 -318
  139. package/v2Containers/Sms/smsFormDataHelpers.js +0 -67
  140. package/v2Containers/Sms/tests/smsFormDataHelpers.test.js +0 -253
  141. package/v2Containers/SmsTrai/Edit/index.scss +0 -126
  142. package/v2Containers/Templates/TemplatesActionBar.js +0 -101
  143. package/v2Containers/Templates/tests/TemplatesActionBar.test.js +0 -120
  144. package/v2Containers/Templates/tests/smsTemplatesListApi.test.js +0 -180
  145. package/v2Containers/Templates/utils/smsTemplatesListApi.js +0 -79
  146. package/v2Containers/TemplatesV2/tests/TemplatesV2.localTemplates.test.js +0 -131
@@ -1,309 +0,0 @@
1
- import {
2
- buildFallbackDataFromTemplate,
3
- mapFallbackValueToEditTemplateData,
4
- getBaseFromSmsTraiFormData,
5
- getSmsFallbackCardDisplayContent,
6
- resolveContentFromTraiBase,
7
- filterSmsTemplatesByCategory,
8
- buildFallbackDataFromCreativesPayload,
9
- } from '../smsFallbackUtils';
10
- import { SMS_CATEGORY_FILTERS } from '../constants';
11
-
12
- describe('smsFallbackUtils', () => {
13
- describe('buildFallbackDataFromTemplate', () => {
14
- it('returns safe defaults when template is nullish', () => {
15
- expect(buildFallbackDataFromTemplate(null)).toEqual({
16
- smsTemplateId: '',
17
- templateName: '',
18
- content: '',
19
- templateContent: '',
20
- senderId: '',
21
- registeredSenderIds: [],
22
- unicodeValidity: true,
23
- });
24
- });
25
-
26
- it('maps template versions.base and header sender list', () => {
27
- const template = {
28
- name: 'My SMS',
29
- versions: {
30
- base: {
31
- 'sms-editor': 'Hello {{1}}',
32
- header: ['S1', 'S2'],
33
- 'unicode-validity': false,
34
- template_id: 'tid',
35
- },
36
- },
37
- };
38
- expect(buildFallbackDataFromTemplate(template)).toEqual({
39
- smsTemplateId: 'tid',
40
- templateName: 'My SMS',
41
- content: 'Hello {{1}}',
42
- templateContent: 'Hello {{1}}',
43
- senderId: 'S1',
44
- registeredSenderIds: ['S1', 'S2'],
45
- unicodeValidity: false,
46
- });
47
- });
48
-
49
- it('falls back to senderId when header is missing', () => {
50
- const template = {
51
- _id: '',
52
- name: '',
53
- versions: { base: { 'sms-editor': 'x', senderId: 'SID' } },
54
- };
55
- expect(buildFallbackDataFromTemplate(template).senderId).toBe('SID');
56
- expect(buildFallbackDataFromTemplate(template).registeredSenderIds).toEqual([]);
57
- });
58
-
59
- it('defaults unicodeValidity to true when not a boolean', () => {
60
- const template = {
61
- versions: { base: { 'sms-editor': '' } },
62
- };
63
- expect(buildFallbackDataFromTemplate(template).unicodeValidity).toBe(true);
64
- });
65
-
66
- it('uses versions.base.template_name when root name is empty (DLT detail shape)', () => {
67
- const template = {
68
- _id: 'dlt1',
69
- name: '',
70
- versions: {
71
- base: {
72
- template_name: 'DLT Registered Name',
73
- 'sms-editor': 'Hi',
74
- header: ['H1'],
75
- },
76
- },
77
- };
78
- expect(buildFallbackDataFromTemplate(template).templateName).toBe('DLT Registered Name');
79
- });
80
- });
81
-
82
- describe('getSmsFallbackCardDisplayContent', () => {
83
- it('returns raw template when rcsSmsFallbackVarMapped is empty', () => {
84
- expect(
85
- getSmsFallbackCardDisplayContent({
86
- templateContent: 'A {#var#} B',
87
- rcsSmsFallbackVarMapped: {},
88
- }),
89
- ).toBe('A {#var#} B');
90
- });
91
-
92
- it('substitutes slot values like preview when var map is set', () => {
93
- expect(
94
- getSmsFallbackCardDisplayContent({
95
- templateContent: 'Hi {{name}}',
96
- rcsSmsFallbackVarMapped: { '{{name}}_1': 'Pat' },
97
- }),
98
- ).toBe('Hi Pat');
99
- });
100
-
101
- it('shows raw {#var#} in card when slots saved empty (DLT, no labels)', () => {
102
- expect(
103
- getSmsFallbackCardDisplayContent({
104
- templateContent: 'Balance {#var#}',
105
- rcsSmsFallbackVarMapped: { '{#var#}_1': '' },
106
- }),
107
- ).toBe('Balance {#var#}');
108
- });
109
- });
110
-
111
- describe('mapFallbackValueToEditTemplateData', () => {
112
- it('returns null when source is missing', () => {
113
- expect(mapFallbackValueToEditTemplateData(null)).toBeNull();
114
- expect(mapFallbackValueToEditTemplateData(undefined)).toBeNull();
115
- });
116
-
117
- it('maps content, optional header and unicode flag', () => {
118
- const source = {
119
- smsTemplateId: 'id1',
120
- templateName: 'N',
121
- templateContent: 'body',
122
- registeredSenderIds: ['h1'],
123
- unicodeValidity: false,
124
- };
125
- expect(mapFallbackValueToEditTemplateData(source)).toEqual({
126
- _id: 'id1',
127
- name: 'N',
128
- versions: {
129
- base: {
130
- 'sms-editor': 'body',
131
- template_name: 'N',
132
- header: ['h1'],
133
- 'unicode-validity': false,
134
- },
135
- },
136
- });
137
- });
138
-
139
- it('uses content when templateContent is empty', () => {
140
- const source = {
141
- smsTemplateId: 'x',
142
- templateName: 'y',
143
- content: 'from-content',
144
- };
145
- expect(mapFallbackValueToEditTemplateData(source).versions.base['sms-editor']).toBe('from-content');
146
- });
147
-
148
- it('omits header when registeredSenderIds is empty', () => {
149
- const source = {
150
- smsTemplateId: 'x',
151
- templateName: 'y',
152
- templateContent: 't',
153
- registeredSenderIds: [],
154
- };
155
- expect(mapFallbackValueToEditTemplateData(source).versions.base.header).toBeUndefined();
156
- });
157
-
158
- it('omits unicode-validity when value is not a boolean', () => {
159
- const source = {
160
- smsTemplateId: 'x',
161
- templateName: 'y',
162
- templateContent: 't',
163
- unicodeValidity: 'yes',
164
- };
165
- expect(mapFallbackValueToEditTemplateData(source).versions.base['unicode-validity']).toBeUndefined();
166
- });
167
- });
168
-
169
- describe('getBaseFromSmsTraiFormData', () => {
170
- it('reads versions.base', () => {
171
- const fd = { versions: { base: { 'sms-editor': 'a' } } };
172
- expect(getBaseFromSmsTraiFormData(fd)).toEqual({ base: { 'sms-editor': 'a' } });
173
- });
174
-
175
- it('falls back to value.base', () => {
176
- const fd = { value: { base: { 'sms-editor': 'b' } } };
177
- expect(getBaseFromSmsTraiFormData(fd)).toEqual({ base: { 'sms-editor': 'b' } });
178
- });
179
-
180
- it('uses empty base when neither path exists', () => {
181
- expect(getBaseFromSmsTraiFormData({})).toEqual({ base: {} });
182
- });
183
-
184
- it('normalizes null versions.base to empty object', () => {
185
- expect(getBaseFromSmsTraiFormData({ versions: { base: null } })).toEqual({ base: {} });
186
- });
187
- });
188
-
189
- describe('resolveContentFromTraiBase', () => {
190
- it('returns sms-editor string', () => {
191
- expect(resolveContentFromTraiBase({ 'sms-editor': 'z' })).toBe('z');
192
- });
193
-
194
- it('returns empty string when missing', () => {
195
- expect(resolveContentFromTraiBase({})).toBe('');
196
- });
197
-
198
- it('returns empty string for nullish base', () => {
199
- expect(resolveContentFromTraiBase(null)).toBe('');
200
- expect(resolveContentFromTraiBase(undefined)).toBe('');
201
- });
202
- });
203
-
204
- describe('filterSmsTemplatesByCategory', () => {
205
- const templates = [
206
- { versions: { base: { type: 'Promo' } } },
207
- { versions: { base: { type: 'Explicit' } } },
208
- ];
209
-
210
- it('returns empty array for non-array input', () => {
211
- expect(filterSmsTemplatesByCategory(null, SMS_CATEGORY_FILTERS.PROMOTIONAL)).toEqual([]);
212
- });
213
-
214
- it('returns all templates for ALL or missing filter', () => {
215
- expect(filterSmsTemplatesByCategory(templates, SMS_CATEGORY_FILTERS.ALL)).toEqual(templates);
216
- expect(filterSmsTemplatesByCategory(templates, null)).toEqual(templates);
217
- });
218
-
219
- it('filters by lowercase type substring', () => {
220
- const filtered = filterSmsTemplatesByCategory(templates, SMS_CATEGORY_FILTERS.PROMOTIONAL);
221
- expect(filtered).toHaveLength(1);
222
- expect(filtered[0].versions.base.type).toBe('Promo');
223
- });
224
-
225
- it('treats missing type as empty string for filtering', () => {
226
- const mixed = [{}, { versions: { base: {} } }];
227
- expect(filterSmsTemplatesByCategory(mixed, SMS_CATEGORY_FILTERS.PROMOTIONAL)).toEqual([]);
228
- });
229
- });
230
-
231
- describe('buildFallbackDataFromCreativesPayload', () => {
232
- it('returns null for missing or non-SMS channel', () => {
233
- expect(buildFallbackDataFromCreativesPayload(null)).toBeNull();
234
- expect(buildFallbackDataFromCreativesPayload({ channel: 'RCS' })).toBeNull();
235
- });
236
-
237
- it('maps SMS payload with messageBody and templateConfigs', () => {
238
- const creativesData = {
239
- channel: 'SMS',
240
- messageBody: 'Hello',
241
- templateConfigs: {
242
- templateId: 99,
243
- templateName: 'T',
244
- template: 'Template str',
245
- registeredSenderIds: ['R1'],
246
- },
247
- };
248
- expect(buildFallbackDataFromCreativesPayload(creativesData)).toEqual({
249
- smsTemplateId: '99',
250
- templateName: 'T',
251
- content: 'Hello',
252
- templateContent: 'Template str',
253
- senderId: 'R1',
254
- registeredSenderIds: ['R1'],
255
- unicodeValidity: true,
256
- });
257
- });
258
-
259
- it('uses template string as body when messageBody is not a string', () => {
260
- const creativesData = {
261
- channel: 'SMS',
262
- messageBody: null,
263
- templateConfigs: {
264
- template: 'only-template',
265
- },
266
- };
267
- const out = buildFallbackDataFromCreativesPayload(creativesData);
268
- expect(out.content).toBe('only-template');
269
- expect(out.templateContent).toBe('only-template');
270
- });
271
-
272
- it('stringifies templateId and templateName when present', () => {
273
- const creativesData = {
274
- channel: 'SMS',
275
- messageBody: 'm',
276
- templateConfigs: { templateId: 0, templateName: null },
277
- };
278
- const out = buildFallbackDataFromCreativesPayload(creativesData);
279
- expect(out.smsTemplateId).toBe('0');
280
- expect(out.templateName).toBe('');
281
- });
282
-
283
- it('uses empty templateConfigs when null', () => {
284
- const creativesData = {
285
- channel: 'SMS',
286
- messageBody: 'only-body',
287
- templateConfigs: null,
288
- };
289
- const out = buildFallbackDataFromCreativesPayload(creativesData);
290
- expect(out.templateContent).toBe('only-body');
291
- expect(out.content).toBe('only-body');
292
- });
293
-
294
- it('falls back to templateConfigs.senderId when registeredSenderIds is empty', () => {
295
- const creativesData = {
296
- channel: 'SMS',
297
- messageBody: 'hello',
298
- templateConfigs: {
299
- template: 'hello',
300
- senderId: 'SID_123',
301
- registeredSenderIds: [],
302
- },
303
- };
304
- const out = buildFallbackDataFromCreativesPayload(creativesData);
305
- expect(out.senderId).toBe('SID_123');
306
- expect(out.registeredSenderIds).toEqual([]);
307
- });
308
- });
309
- });