@capillarytech/creatives-library 7.12.50 → 7.12.53

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 (57) hide show
  1. package/config/app.js +0 -1
  2. package/package.json +1 -1
  3. package/services/api.js +15 -2
  4. package/v2Components/CapImageUpload/index.js +33 -17
  5. package/v2Components/CapImageUpload/messages.js +11 -3
  6. package/v2Components/CapWhatsappCTA/constants.js +12 -1
  7. package/v2Components/CapWhatsappCTA/index.js +88 -29
  8. package/v2Components/CapWhatsappCTA/index.scss +4 -6
  9. package/v2Components/CapWhatsappCTA/messages.js +24 -0
  10. package/v2Components/TemplatePreview/_templatePreview.scss +9 -8
  11. package/v2Components/TemplatePreview/index.js +8 -6
  12. package/v2Components/TemplatePreview/tests/__snapshots__/index.test.js.snap +3 -19
  13. package/v2Components/TemplatePreview/tests/index.test.js +0 -2
  14. package/v2Components/WhatsappStatusContainer/index.js +42 -52
  15. package/v2Containers/Cap/tests/index.test.js +2 -2
  16. package/v2Containers/CreativesContainer/SlideBoxContent.js +8 -8
  17. package/v2Containers/CreativesContainer/tests/SlideBoxContent.test.js +28 -36
  18. package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxContent.test.js.snap +165 -344
  19. package/v2Containers/CreativesContainer/tests/index.test.js +0 -3
  20. package/v2Containers/Line/Container/ImageCarousel/Content.js +15 -29
  21. package/v2Containers/Line/Container/ImageCarousel/constants.js +3 -0
  22. package/v2Containers/Line/Container/ImageCarousel/index.js +28 -40
  23. package/v2Containers/Line/Container/ImageCarousel/messages.js +2 -2
  24. package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/content.test.js.snap +9851 -0
  25. package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/index.test.js.snap +21113 -0
  26. package/v2Containers/Line/Container/ImageCarousel/tests/content.test.js +71 -0
  27. package/v2Containers/Line/Container/ImageCarousel/tests/index.test.js +58 -0
  28. package/v2Containers/Line/Container/ImageCarousel/tests/mockData.js +1322 -0
  29. package/v2Containers/Line/Container/ImageCarousel/tests/utils.test.js +13 -0
  30. package/v2Containers/Line/Container/ImageCarousel/utils.js +12 -0
  31. package/v2Containers/Line/Container/Wrapper/tests/__snapshots__/index.test.js.snap +84451 -0
  32. package/v2Containers/Line/Container/Wrapper/tests/index.test.js +58 -0
  33. package/v2Containers/Line/Container/Wrapper/tests/mockData.js +171 -0
  34. package/v2Containers/Line/Container/index.js +5 -1
  35. package/v2Containers/Line/Container/tests/__snapshots__/index.test.js.snap +63597 -0
  36. package/v2Containers/Line/Container/tests/index.test.js +105 -0
  37. package/v2Containers/Line/Container/tests/mockData.js +1334 -0
  38. package/v2Containers/Templates/_templates.scss +5 -0
  39. package/v2Containers/Templates/actions.js +7 -0
  40. package/v2Containers/Templates/constants.js +9 -1
  41. package/v2Containers/Templates/index.js +45 -30
  42. package/v2Containers/Templates/messages.js +1 -1
  43. package/v2Containers/Templates/reducer.js +15 -0
  44. package/v2Containers/Templates/sagas.js +32 -0
  45. package/v2Containers/Templates/tests/__snapshots__/index.test.js.snap +1774 -1881
  46. package/v2Containers/Templates/tests/index.test.js +14 -3
  47. package/v2Containers/Whatsapp/actions.js +22 -0
  48. package/v2Containers/Whatsapp/constants.js +56 -23
  49. package/v2Containers/Whatsapp/index.js +204 -66
  50. package/v2Containers/Whatsapp/index.scss +18 -2
  51. package/v2Containers/Whatsapp/messages.js +35 -7
  52. package/v2Containers/Whatsapp/reducer.js +35 -1
  53. package/v2Containers/Whatsapp/sagas.js +30 -1
  54. package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +44349 -32926
  55. package/v2Containers/Whatsapp/tests/__snapshots__/utils.test.js.snap +15 -21
  56. package/v2Containers/Whatsapp/utils.js +16 -9
  57. package/v2Containers/mockdata.js +210 -555
@@ -1,58 +1,48 @@
1
1
  import React from 'react';
2
- import { CapRow, CapStatus, CapColoredTag } from '@capillarytech/cap-ui-library';
3
- import { WHATSAPP } from '../../v2Containers/CreativesContainer/constants';
2
+ import { get } from 'lodash';
4
3
  import {
5
- CATEGORY as WHATSAPP_CATEGORY,
6
- STATUS as WHATSAPP_STATUS,
7
- } from '../../v2Containers/Whatsapp/constants';
8
- import { getWhatsappCategory, getWhatsappStatus } from '../../v2Containers/Whatsapp/utils';
4
+ CapRow,
5
+ CapStatus,
6
+ CapColoredTag,
7
+ } from '@capillarytech/cap-ui-library';
8
+ import {
9
+ getWhatsappCategory,
10
+ getWhatsappStatus,
11
+ } from '../../v2Containers/Whatsapp/utils';
9
12
  import './_whatsappStatusContainer.scss';
10
13
 
11
14
  export const WhatsappStatusContainer = (props) => {
15
+ const {
16
+ status = '',
17
+ category = '',
18
+ hostName = '',
19
+ } = get(props, 'template.versions.base.content.whatsapp', {});
20
+ const categoryObj = getWhatsappCategory(category, hostName) || {};
21
+ const {
22
+ label: categoryLabel,
23
+ tagColor: categoryTagColor,
24
+ tagTextColor: categoryTextColor,
25
+ } = categoryObj;
26
+ return (
27
+ <CapRow type="flex" align="middle" className="whatsapp-status-container">
28
+ <CapStatus
29
+ type={status}
30
+ text={getWhatsappStatus(status)?.label}
31
+ labelType="label3"
32
+ />
33
+ {categoryLabel ? (
34
+ <CapColoredTag
35
+ tagColor={categoryTagColor}
36
+ tagTextColor={categoryTextColor}
37
+ tagHeight="20px"
38
+ tagFontSize="12px"
39
+ className="whatsapp-category-tag"
40
+ >
41
+ {categoryLabel}
42
+ </CapColoredTag>
43
+ ) : null}
44
+ </CapRow>
45
+ );
46
+ };
12
47
 
13
- const { template } = props;
14
-
15
- const {
16
- versions: {
17
- base: {
18
- content: {
19
- [WHATSAPP.toLowerCase()]: {
20
- [WHATSAPP_STATUS]: status,
21
- [WHATSAPP_CATEGORY]: category,
22
- } = {},
23
- } = {},
24
- } = {},
25
- } = {},
26
- } = template;
27
-
28
- const categoryObj = getWhatsappCategory(category) || {};
29
- const {
30
- label: categoryLabel,
31
- tagColor: categoryTagColor,
32
- tagTextColor: categoryTextColor,
33
- } = categoryObj;
34
- return (
35
- <CapRow type="flex" align="middle" className="whatsapp-status-container">
36
- <CapStatus
37
- type={status}
38
- text={getWhatsappStatus(status)?.label}
39
- labelType="label3"
40
- />
41
- {
42
- categoryLabel ? (
43
- <CapColoredTag
44
- tagColor={categoryTagColor}
45
- tagTextColor={categoryTextColor}
46
- tagHeight="20px"
47
- tagFontSize="12px"
48
- className="whatsapp-category-tag"
49
- >
50
- {categoryLabel}
51
- </CapColoredTag>
52
- ) : null
53
- }
54
- </CapRow>
55
- )
56
- }
57
-
58
- export default WhatsappStatusContainer;
48
+ export default WhatsappStatusContainer;
@@ -3,9 +3,9 @@ import { injectIntl } from 'react-intl';
3
3
 
4
4
  import * as actions from '../actions';
5
5
  import {Cap} from '../index';
6
- import mockdata from '../../mockdata';
6
+ import mockData from '../../mockdata';
7
7
  import { shallowWithIntl } from '../../../helpers/intl-enzym-test-helpers';
8
- const { match, location, capGlobal, language } = mockdata;
8
+ const { match, location, capGlobal, language } = mockData;
9
9
 
10
10
  jest.mock('@capillarytech/cap-ui-utils', () => ({
11
11
  GA: {
@@ -6,7 +6,6 @@ import cloneDeep from 'lodash/cloneDeep';
6
6
  import TemplatesV2 from '../TemplatesV2';
7
7
  import TemplatePreview from '../../v2Components/TemplatePreview';
8
8
  import SmsWrapper from '../SmsWrapper';
9
- import isEmpty from 'lodash/isEmpty';
10
9
  // import SmsEdit from '../Sms/Edit';
11
10
  import Email from '../Email';
12
11
  import EmailWrapper from '../EmailWrapper';
@@ -240,9 +239,10 @@ export function SlideBoxContent(props) {
240
239
  baseUrl,
241
240
  video,
242
241
  template,
243
- contents,
242
+ contents = {},
243
+ type = '',
244
244
  }) => {
245
- const isNewLineFormat = isEmpty(template) && !isEmpty(contents);
245
+ const isNewLineFormat = type === 'flex';
246
246
  const {
247
247
  originalContentUrl,
248
248
  externalLink: {
@@ -262,10 +262,11 @@ export function SlideBoxContent(props) {
262
262
  previewContent.video = originalContentUrl;
263
263
  previewContent.actionUrl = linkUri;
264
264
  if (isNewLineFormat) {
265
- previewContent.imageCarousel = get(contents, 'contents', [{}]).map(({
266
- hero: { url = ''} = {},
267
- footer: { contents: [{ action: { label = '' } = {} }] = [{}] } = {},
268
- }) => ({ imageUrl: url, actionLabel: label }));
265
+ const { contents: flexContent = [] } = contents;
266
+ previewContent.imageCarousel = flexContent.map((data) => ({
267
+ imageUrl: get(data, "hero.url", ""),
268
+ actionLabel: get(data, "footer.contents[0].action.label", ""),
269
+ }));
269
270
  } else {
270
271
  previewContent.imageCarousel = get(template, 'columns', [{}]).map(({ imageUrl, action: { label: actionLabel } = {} }) => ({ imageUrl, actionLabel }) );
271
272
  }
@@ -413,7 +414,6 @@ export function SlideBoxContent(props) {
413
414
  content={getChannelPreviewContent(templateData)}
414
415
  viberBrandName={selectedAccount || ""}
415
416
  viberAccountName={(selectedAccount || "")[0]}
416
- whatsappAccountName={selectedAccount}
417
417
  unicodeEnabled={get(templateData, `versions.base['unicode-validity']`)}
418
418
  channel={(templateData.type || '').toLowerCase()}
419
419
  charCounterEnabled={channel === constants.SMS}
@@ -4,11 +4,22 @@ import { shallowWithIntl } from '../../../helpers/intl-enzym-test-helpers';
4
4
  import { SlideBoxContent } from '../SlideBoxContent';
5
5
  import mockdata from '../../mockdata';
6
6
 
7
- const { whatsappEditTemplateData, whatsappPreviewTemplateData, rcsEditTemplateData, rcsPreviewTemplateData, lineEditTemplateData, linePreviewTemplateData1, linePreviewTemplateData2, linePreviewTemplateData3, linePreviewTemplateData4, linePreviewTemplateContent, viberPreviewTemplateData } = mockdata;
8
-
9
- jest.mock("../../../v2Components/FormBuilder", () => ({
7
+ const {
8
+ whatsappEditTemplateData,
9
+ whatsappPreviewTemplateData,
10
+ rcsEditTemplateData,
11
+ rcsPreviewTemplateData,
12
+ linePreviewTemplateData1,
13
+ linePreviewTemplateData2,
14
+ } = mockdata;
15
+
16
+ jest.mock('../../../v2Components/FormBuilder', () => ({
10
17
  __esModule: true,
11
- default: (props) => <div className="FormBuilder-mock" {...props}>FormBuilder</div>,
18
+ default: (props) => (
19
+ <div className="FormBuilder-mock" {...props}>
20
+ FormBuilder
21
+ </div>
22
+ ),
12
23
  }));
13
24
 
14
25
  describe('Test SlideBoxContent container', () => {
@@ -22,76 +33,57 @@ describe('Test SlideBoxContent container', () => {
22
33
  currentChannel={channel}
23
34
  templateData={templateData}
24
35
  onCreateComplete={onCreateComplete}
25
- />
36
+ />,
26
37
  );
27
38
  };
28
39
 
29
40
  it('Should render correct component for whatsapp channel create mode', () => {
30
- renderFunction("WHATSAPP", "createTemplate", { mode: "create" });
41
+ renderFunction('WHATSAPP', 'createTemplate', { mode: 'create' });
31
42
  expect(renderedComponent).toMatchSnapshot();
32
43
  });
33
44
 
34
45
  it('Should render correct component for whatsapp channel edit mode', () => {
35
- renderFunction("WHATSAPP", "editTemplate", whatsappEditTemplateData);
46
+ renderFunction('WHATSAPP', 'editTemplate', whatsappEditTemplateData);
36
47
  expect(renderedComponent).toMatchSnapshot();
37
48
  });
38
49
 
39
50
  it('Should render correct component for whatsapp channel preview mode', () => {
40
- renderFunction("WHATSAPP", "preview", whatsappPreviewTemplateData);
51
+ renderFunction('WHATSAPP', 'preview', whatsappPreviewTemplateData);
41
52
  expect(renderedComponent).toMatchSnapshot();
42
53
  });
43
54
 
44
55
  it('Should render correct component for whatsapp channel templates mode', () => {
45
- renderFunction("WHATSAPP", "templates");
56
+ renderFunction('WHATSAPP', 'templates');
46
57
  expect(renderedComponent).toMatchSnapshot();
47
58
  });
48
59
 
49
60
  it('Should render correct component for rcs channel create mode', () => {
50
- renderFunction("RCS", "createTemplate", { mode: "create" });
61
+ renderFunction('RCS', 'createTemplate', { mode: 'create' });
51
62
  expect(renderedComponent).toMatchSnapshot();
52
63
  });
53
64
 
54
65
  it('Should render correct component for rcs channel edit mode', () => {
55
- renderFunction("RCs", "editTemplate", rcsEditTemplateData);
66
+ renderFunction('RCs', 'editTemplate', rcsEditTemplateData);
56
67
  expect(renderedComponent).toMatchSnapshot();
57
68
  });
58
69
 
59
70
  it('Should render correct component for rcs channel preview mode', () => {
60
- renderFunction("RCS", "preview", rcsPreviewTemplateData);
71
+ renderFunction('RCS', 'preview', rcsPreviewTemplateData);
61
72
  expect(renderedComponent).toMatchSnapshot();
62
73
  });
63
74
 
64
75
  it('Should render correct component for rcs channel templates mode', () => {
65
- renderFunction("RCS", "templates");
66
- expect(renderedComponent).toMatchSnapshot();
67
- });
68
-
69
- it('Should render correct component for line channel create mode', () => {
70
- renderFunction("LINE", "createTemplate", { mode: "create" });
71
- expect(renderedComponent).toMatchSnapshot();
72
- });
73
-
74
- it('Should render correct component for line channel edit mode', () => {
75
- renderFunction("LINE", "editTemplate", lineEditTemplateData);
76
+ renderFunction('RCS', 'templates');
76
77
  expect(renderedComponent).toMatchSnapshot();
77
78
  });
78
79
 
79
80
  it('Should render correct component for line channel preview mode', () => {
80
- renderFunction("LINE", "preview", linePreviewTemplateData1);
81
+ renderFunction('LINE', 'preview', linePreviewTemplateData1);
81
82
  expect(renderedComponent).toMatchSnapshot();
82
- renderFunction("LINE", "preview", linePreviewTemplateData2);
83
+ renderFunction('LINE', 'preview', linePreviewTemplateData2);
83
84
  expect(renderedComponent).toMatchSnapshot();
84
- renderFunction("LINE", "preview", linePreviewTemplateData3);
85
- expect(renderedComponent).toMatchSnapshot();
86
- renderFunction("LINE", "preview", linePreviewTemplateData4);
87
- expect(renderedComponent).toMatchSnapshot();
88
- renderFunction("LINE", "preview", linePreviewTemplateContent);
89
- expect(renderedComponent).toMatchSnapshot();
90
- });
91
-
92
- it('Should render correct component for viber channel preview mode', () => {
93
- renderFunction("VIBER", "preview", viberPreviewTemplateData);
85
+ delete linePreviewTemplateData2.versions.base.content.messages[0].contents;
86
+ renderFunction('LINE', 'preview', linePreviewTemplateData2);
94
87
  expect(renderedComponent).toMatchSnapshot();
95
88
  });
96
-
97
89
  });