@capillarytech/creatives-library 8.0.329 → 8.0.330

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 (122) hide show
  1. package/constants/unified.js +0 -14
  2. package/package.json +1 -1
  3. package/services/api.js +0 -17
  4. package/services/tests/api.test.js +0 -85
  5. package/utils/commonUtils.js +0 -10
  6. package/utils/tests/commonUtil.test.js +0 -169
  7. package/v2Components/CapTagList/index.js +0 -10
  8. package/v2Components/CommonTestAndPreview/CustomValuesEditor.js +49 -70
  9. package/v2Components/CommonTestAndPreview/DeliverySettings/DeliverySettings.scss +2 -8
  10. package/v2Components/CommonTestAndPreview/DeliverySettings/ModifyDeliverySettings.js +21 -207
  11. package/v2Components/CommonTestAndPreview/DeliverySettings/constants.js +0 -16
  12. package/v2Components/CommonTestAndPreview/DeliverySettings/index.js +10 -85
  13. package/v2Components/CommonTestAndPreview/DeliverySettings/messages.js +0 -30
  14. package/v2Components/CommonTestAndPreview/DeliverySettings/utils/parseSenderDetailsResponse.js +11 -79
  15. package/v2Components/CommonTestAndPreview/SendTestMessage.js +53 -87
  16. package/v2Components/CommonTestAndPreview/UnifiedPreview/_unifiedPreview.scss +1 -20
  17. package/v2Components/CommonTestAndPreview/UnifiedPreview/index.js +4 -133
  18. package/v2Components/CommonTestAndPreview/_commonTestAndPreview.scss +34 -145
  19. package/v2Components/CommonTestAndPreview/actions.js +0 -10
  20. package/v2Components/CommonTestAndPreview/constants.js +1 -53
  21. package/v2Components/CommonTestAndPreview/index.js +168 -1006
  22. package/v2Components/CommonTestAndPreview/messages.js +3 -147
  23. package/v2Components/CommonTestAndPreview/reducer.js +0 -10
  24. package/v2Components/CommonTestAndPreview/sagas.js +6 -15
  25. package/v2Components/CommonTestAndPreview/tests/CustomValuesEditor.test.js +286 -328
  26. package/v2Components/CommonTestAndPreview/tests/DeliverySettings/ModifyDeliverySettings.test.js +65 -231
  27. package/v2Components/CommonTestAndPreview/tests/DeliverySettings/index.test.js +5 -118
  28. package/v2Components/CommonTestAndPreview/tests/DeliverySettings/utils/parseSenderDetailsResponse.test.js +0 -341
  29. package/v2Components/CommonTestAndPreview/tests/SendTestMessage.test.js +24 -65
  30. package/v2Components/CommonTestAndPreview/tests/UnifiedPreview/index.test.js +1 -199
  31. package/v2Components/CommonTestAndPreview/tests/constants.test.js +1 -31
  32. package/v2Components/CommonTestAndPreview/tests/index.test.js +4 -168
  33. package/v2Components/CommonTestAndPreview/tests/reducer.test.js +0 -71
  34. package/v2Components/CommonTestAndPreview/tests/sagas.test.js +2 -2
  35. package/v2Components/CommonTestAndPreview/tests/selectors.test.js +0 -17
  36. package/v2Components/FormBuilder/index.js +1 -7
  37. package/v2Components/TestAndPreviewSlidebox/index.js +1 -8
  38. package/v2Components/TestAndPreviewSlidebox/sagas.js +4 -11
  39. package/v2Components/TestAndPreviewSlidebox/tests/saga.test.js +1 -3
  40. package/v2Containers/CreativesContainer/SlideBoxContent.js +4 -36
  41. package/v2Containers/CreativesContainer/SlideBoxFooter.js +1 -10
  42. package/v2Containers/CreativesContainer/SlideBoxHeader.js +4 -29
  43. package/v2Containers/CreativesContainer/constants.js +0 -9
  44. package/v2Containers/CreativesContainer/index.js +93 -286
  45. package/v2Containers/CreativesContainer/index.scss +1 -51
  46. package/v2Containers/CreativesContainer/tests/SlideBoxFooter.test.js +34 -78
  47. package/v2Containers/CreativesContainer/tests/SlideBoxHeader.test.js +16 -79
  48. package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxContent.test.js.snap +0 -8
  49. package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxHeader.test.js.snap +98 -357
  50. package/v2Containers/CreativesContainer/tests/__snapshots__/index.test.js.snap +10 -20
  51. package/v2Containers/CreativesContainer/tests/index.test.js +9 -71
  52. package/v2Containers/Rcs/constants.js +1 -34
  53. package/v2Containers/Rcs/index.js +884 -999
  54. package/v2Containers/Rcs/index.scss +6 -85
  55. package/v2Containers/Rcs/messages.js +1 -10
  56. package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +2453 -41456
  57. package/v2Containers/Rcs/tests/__snapshots__/utils.test.js.snap +5 -0
  58. package/v2Containers/Rcs/tests/index.test.js +38 -41
  59. package/v2Containers/Rcs/tests/mockData.js +0 -38
  60. package/v2Containers/Rcs/tests/utils.test.js +1 -379
  61. package/v2Containers/Rcs/utils.js +10 -358
  62. package/v2Containers/Sms/Create/index.js +38 -100
  63. package/v2Containers/SmsTrai/Create/index.js +4 -9
  64. package/v2Containers/SmsTrai/Edit/constants.js +0 -2
  65. package/v2Containers/SmsTrai/Edit/index.js +128 -609
  66. package/v2Containers/SmsTrai/Edit/messages.js +4 -9
  67. package/v2Containers/SmsTrai/Edit/tests/__snapshots__/index.test.js.snap +2600 -4586
  68. package/v2Containers/SmsWrapper/index.js +8 -37
  69. package/v2Containers/TagList/index.js +0 -6
  70. package/v2Containers/Templates/_templates.scss +2 -63
  71. package/v2Containers/Templates/actions.js +0 -11
  72. package/v2Containers/Templates/constants.js +0 -2
  73. package/v2Containers/Templates/index.js +40 -90
  74. package/v2Containers/Templates/sagas.js +12 -57
  75. package/v2Containers/Templates/tests/__snapshots__/index.test.js.snap +1079 -1043
  76. package/v2Containers/Templates/tests/sagas.test.js +123 -193
  77. package/v2Containers/TemplatesV2/TemplatesV2.style.js +1 -72
  78. package/v2Containers/TemplatesV2/index.js +23 -86
  79. package/v2Containers/Whatsapp/index.js +20 -3
  80. package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +4872 -5790
  81. package/utils/templateVarUtils.js +0 -172
  82. package/utils/tests/templateVarUtils.test.js +0 -160
  83. package/v2Components/CommonTestAndPreview/AddTestCustomer.js +0 -42
  84. package/v2Components/CommonTestAndPreview/CustomerCreationModal.js +0 -155
  85. package/v2Components/CommonTestAndPreview/ExistingCustomerModal.js +0 -93
  86. package/v2Components/CommonTestAndPreview/previewApiUtils.js +0 -59
  87. package/v2Components/CommonTestAndPreview/tests/AddTestCustomer.test.js +0 -66
  88. package/v2Components/CommonTestAndPreview/tests/CommonTestAndPreview.addTestCustomer.test.js +0 -648
  89. package/v2Components/CommonTestAndPreview/tests/CustomerCreationModal.test.js +0 -174
  90. package/v2Components/CommonTestAndPreview/tests/ExistingCustomerModal.test.js +0 -114
  91. package/v2Components/CommonTestAndPreview/tests/previewApiUtils.test.js +0 -67
  92. package/v2Components/SmsFallback/SmsFallbackLocalSelector.js +0 -87
  93. package/v2Components/SmsFallback/constants.js +0 -73
  94. package/v2Components/SmsFallback/index.js +0 -955
  95. package/v2Components/SmsFallback/index.scss +0 -265
  96. package/v2Components/SmsFallback/messages.js +0 -78
  97. package/v2Components/SmsFallback/smsFallbackUtils.js +0 -107
  98. package/v2Components/SmsFallback/tests/SmsFallbackLocalSelector.test.js +0 -50
  99. package/v2Components/SmsFallback/tests/rcsSmsFallback.acceptance.test.js +0 -147
  100. package/v2Components/SmsFallback/tests/smsFallbackHandlers.test.js +0 -304
  101. package/v2Components/SmsFallback/tests/smsFallbackUi.test.js +0 -197
  102. package/v2Components/SmsFallback/tests/smsFallbackUtils.test.js +0 -261
  103. package/v2Components/SmsFallback/tests/useLocalTemplateList.test.js +0 -422
  104. package/v2Components/SmsFallback/useLocalTemplateList.js +0 -92
  105. package/v2Components/VarSegmentMessageEditor/constants.js +0 -2
  106. package/v2Components/VarSegmentMessageEditor/index.js +0 -125
  107. package/v2Components/VarSegmentMessageEditor/index.scss +0 -46
  108. package/v2Containers/CreativesContainer/CreativesSlideBoxWrapper.js +0 -43
  109. package/v2Containers/CreativesContainer/embeddedSlideboxUtils.js +0 -67
  110. package/v2Containers/CreativesContainer/tests/SlideBoxContent.localTemplates.test.js +0 -90
  111. package/v2Containers/CreativesContainer/tests/embeddedSlideboxUtils.test.js +0 -258
  112. package/v2Containers/CreativesContainer/tests/useLocalTemplatesProp.test.js +0 -125
  113. package/v2Containers/Rcs/rcsLibraryHydrationUtils.js +0 -205
  114. package/v2Containers/Rcs/tests/rcsLibraryHydrationUtils.test.js +0 -251
  115. package/v2Containers/Sms/smsFormDataHelpers.js +0 -67
  116. package/v2Containers/Sms/tests/smsFormDataHelpers.test.js +0 -253
  117. package/v2Containers/SmsTrai/Edit/index.scss +0 -121
  118. package/v2Containers/Templates/TemplatesActionBar.js +0 -101
  119. package/v2Containers/Templates/tests/TemplatesActionBar.test.js +0 -120
  120. package/v2Containers/Templates/tests/smsTemplatesListApi.test.js +0 -180
  121. package/v2Containers/Templates/utils/smsTemplatesListApi.js +0 -79
  122. package/v2Containers/TemplatesV2/tests/TemplatesV2.localTemplates.test.js +0 -131
@@ -531,106 +531,62 @@ describe('shouldCheckValidation (line 79)', () => {
531
531
  });
532
532
  });
533
533
 
534
- describe('SlideBoxFooter — isHtmlEditorValidationStateActive via issueCounts', () => {
534
+ describe('SlideBoxFooter — continue and preview states', () => {
535
535
  beforeEach(() => {
536
536
  jest.clearAllMocks();
537
- });
538
-
539
- it('activates via issueCounts.total > 0 even when validationComplete=false and hasErrors=false', () => {
540
537
  const { hasSupportCKEditor } = require('../../../utils/common');
541
538
  hasSupportCKEditor.mockReturnValue(false);
539
+ });
542
540
 
541
+ it('renders the Continue button when shouldShowContinueFooter returns true', () => {
543
542
  renderComponent({
544
543
  ...baseFooterProps,
545
- currentChannel: 'EMAIL',
546
- slidBoxContent: 'editTemplate',
547
- htmlEditorValidationState: {
548
- validationComplete: false,
549
- hasErrors: false,
550
- errorsAcknowledged: false,
551
- isContentEmpty: false,
552
- issueCounts: { html: 1, label: 0, liquid: 0, total: 1 },
553
- },
544
+ shouldShowDoneFooter: jest.fn().mockReturnValue(false),
545
+ shouldShowContinueFooter: jest.fn().mockReturnValue(true),
546
+ isContinueButtonDisabled: false,
547
+ // null lets the component fall back to messages.continue (has a valid id)
548
+ // The defaultProp {} has no id, which causes FormattedMessage to throw
549
+ continueButtonLabel: null,
554
550
  });
555
- // isHtmlEditorValidationStateActive = true (via issueCounts.total > 0)
556
- // isHTMLEditorModeInEdit = true, shouldCheckValidation = true
557
- // hasValidationErrors = false, shouldDisableButtons = false (no hasErrors)
558
- const updateBtn = screen.getByRole('button', { name: /update/i });
559
- expect(updateBtn).toBeEnabled();
551
+ const continueBtn = screen.getByRole('button', { name: /continue/i });
552
+ expect(continueBtn).toBeTruthy();
553
+ expect(continueBtn).toBeEnabled();
560
554
  });
561
555
 
562
- it('issueCounts.total=0 with validationComplete=false not activated (BEE edit mode)', () => {
563
- const { hasSupportCKEditor } = require('../../../utils/common');
564
- hasSupportCKEditor.mockReturnValue(false);
565
-
556
+ it('disables the Continue button when isContinueButtonDisabled is true', () => {
566
557
  renderComponent({
567
558
  ...baseFooterProps,
568
- currentChannel: 'EMAIL',
569
- slidBoxContent: 'editTemplate',
570
- htmlEditorValidationState: {
571
- validationComplete: false,
572
- hasErrors: false,
573
- errorsAcknowledged: false,
574
- isContentEmpty: false,
575
- issueCounts: { html: 0, label: 0, liquid: 0, total: 0 },
576
- },
559
+ shouldShowDoneFooter: jest.fn().mockReturnValue(false),
560
+ shouldShowContinueFooter: jest.fn().mockReturnValue(true),
561
+ isContinueButtonDisabled: true,
562
+ continueButtonLabel: null,
577
563
  });
578
- // isHtmlEditorValidationStateActive = false isHTMLEditorModeInEdit = false
579
- // isBEEEditor = true (isEditMode && !isHtmlEditorValidationStateActive)
580
- // shouldCheckValidation = false → button enabled
581
- const updateBtn = screen.getByRole('button', { name: /update/i });
582
- expect(updateBtn).toBeEnabled();
564
+ const continueBtn = screen.getByRole('button', { name: /continue/i });
565
+ expect(continueBtn).toBeDisabled();
583
566
  });
584
- });
585
-
586
- describe('SlideBoxFooter — isBEEEditor detection in create mode via emailCreateMode=editor', () => {
587
- beforeEach(() => {
588
- jest.clearAllMocks();
589
- });
590
-
591
- it('detects BEE editor when emailCreateMode=editor and selectedEmailCreateMode is not html_editor (create mode)', () => {
592
- const { hasSupportCKEditor } = require('../../../utils/common');
593
- hasSupportCKEditor.mockReturnValue(false);
594
567
 
568
+ it('renders the Edit button when slidBoxContent is preview', () => {
595
569
  renderComponent({
596
570
  ...baseFooterProps,
597
- currentChannel: 'EMAIL',
598
- slidBoxContent: 'createTemplate',
599
- emailCreateMode: 'editor',
600
- selectedEmailCreateMode: 'drag_drop',
601
- htmlEditorValidationState: {
602
- validationComplete: false,
603
- hasErrors: false,
604
- isContentEmpty: false,
605
- issueCounts: { html: 0, label: 0, liquid: 0, total: 0 },
606
- },
571
+ slidBoxContent: 'preview',
572
+ shouldShowDoneFooter: jest.fn().mockReturnValue(false),
573
+ shouldShowContinueFooter: jest.fn().mockReturnValue(false),
574
+ onEditTemplate: jest.fn(),
607
575
  });
608
- // selectedEmailCreateMode=drag_drop isBEEEditor = true (DRAG_DROP branch)
609
- // shouldCheckValidation = false → button not disabled by validation
610
- const createBtn = screen.getByRole('button', { name: /create/i });
611
- expect(createBtn).toBeInTheDocument();
576
+ const editBtn = screen.getByRole('button', { name: /edit/i });
577
+ expect(editBtn).toBeTruthy();
612
578
  });
613
579
 
614
- it('enables primary action button when emailCreateMode=editor but mode is not HTML editor (BEE editor path)', () => {
615
- const { hasSupportCKEditor } = require('../../../utils/common');
616
- hasSupportCKEditor.mockReturnValue(false);
617
-
580
+ it('calls onEditTemplate when the Edit button is clicked in preview mode', () => {
581
+ const onEditTemplate = jest.fn();
618
582
  renderComponent({
619
583
  ...baseFooterProps,
620
- currentChannel: 'EMAIL',
621
- slidBoxContent: 'createTemplate',
622
- emailCreateMode: 'editor',
623
- selectedEmailCreateMode: undefined,
624
- htmlEditorValidationState: {
625
- validationComplete: false,
626
- hasErrors: false,
627
- isContentEmpty: false,
628
- issueCounts: { html: 0, label: 0, liquid: 0, total: 0 },
629
- },
584
+ slidBoxContent: 'preview',
585
+ shouldShowDoneFooter: jest.fn().mockReturnValue(false),
586
+ shouldShowContinueFooter: jest.fn().mockReturnValue(false),
587
+ onEditTemplate,
630
588
  });
631
- // isHTMLEditorModeInCreate = false (selectedEmailCreateMode is undefined, not html_editor)
632
- // emailCreateMode === 'editor' && !isHTMLEditorMode → isBEEEditor = true
633
- const createBtn = screen.getByRole('button', { name: /create/i });
634
- expect(createBtn).toBeInTheDocument();
589
+ screen.getByRole('button', { name: /edit/i }).click();
590
+ expect(onEditTemplate).toHaveBeenCalled();
635
591
  });
636
592
  });
@@ -73,111 +73,48 @@ describe('Test SlideBoxHeader container', () => {
73
73
  expect(renderedComponent).toMatchSnapshot();
74
74
  });
75
75
 
76
- it('renders templateNameRenderProp when isFullMode and shouldShowTemplateName are both true', () => {
77
- const templateNameRenderProp = jest.fn().mockReturnValue(null);
76
+ it('Should render correct component for inapp channel edit mode (non-fullmode)', () => {
78
77
  renderedComponent = shallowWithIntl(
79
78
  <SlideBoxHeader
80
79
  slidBoxContent="editTemplate"
81
- channel="SMS"
82
- templateData={{ name: 'My Template' }}
83
- onCreateComplete={onCreateComplete}
84
- isFullMode
85
- shouldShowTemplateName
86
- templateNameRenderProp={templateNameRenderProp}
87
- moduleType="journey"
88
- />
89
- );
90
- expect(templateNameRenderProp).toHaveBeenCalled();
91
- expect(renderedComponent).toMatchSnapshot();
92
- });
93
-
94
- it('does not call templateNameRenderProp when isFullMode is false (showTemplateNameHeader=false)', () => {
95
- const templateNameRenderProp = jest.fn().mockReturnValue(null);
96
- renderedComponent = shallowWithIntl(
97
- <SlideBoxHeader
98
- slidBoxContent="editTemplate"
99
- channel="SMS"
100
- templateData={{ name: 'My Template' }}
80
+ channel="INAPP"
81
+ templateData={{ name: 'InApp Template' }}
101
82
  onCreateComplete={onCreateComplete}
102
83
  isFullMode={false}
103
- shouldShowTemplateName
104
- templateNameRenderProp={templateNameRenderProp}
105
84
  moduleType="journey"
106
85
  />
107
86
  );
108
- expect(templateNameRenderProp).not.toHaveBeenCalled();
109
87
  expect(renderedComponent).toMatchSnapshot();
110
88
  });
111
89
 
112
- it('does not call templateNameRenderProp when shouldShowTemplateName is false (showTemplateNameHeader=false)', () => {
113
- const templateNameRenderProp = jest.fn().mockReturnValue(null);
90
+ it('Should render correct component for inapp channel create mode', () => {
114
91
  renderedComponent = shallowWithIntl(
115
92
  <SlideBoxHeader
116
- slidBoxContent="editTemplate"
117
- channel="SMS"
118
- templateData={{ name: 'My Template' }}
119
- onCreateComplete={onCreateComplete}
120
- isFullMode
121
- shouldShowTemplateName={false}
122
- templateNameRenderProp={templateNameRenderProp}
123
- moduleType="journey"
124
- />
125
- );
126
- expect(templateNameRenderProp).not.toHaveBeenCalled();
127
- expect(renderedComponent).toMatchSnapshot();
128
- });
129
-
130
- it('shows edit header for InApp edit without fullMode (shouldShowInAppEditHeader=true)', () => {
131
- renderedComponent = shallowWithIntl(
132
- <SlideBoxHeader
133
- slidBoxContent="editTemplate"
134
- channel="inapp"
135
- templateData={{ name: 'InApp Tpl' }}
93
+ slidBoxContent="createTemplate"
94
+ channel="INAPP"
95
+ templateData={{}}
136
96
  onCreateComplete={onCreateComplete}
137
97
  isFullMode={false}
138
98
  moduleType="journey"
99
+ templateStep="modeSelection"
139
100
  />
140
101
  );
141
102
  expect(renderedComponent).toMatchSnapshot();
142
103
  });
143
104
 
144
- it('hides edit header for InApp edit with fullMode (shouldShowInAppEditHeader=false, isInAppCreate guard)', () => {
105
+ it('Should render wechat map template create steps (mapTemplateCreate path)', () => {
145
106
  renderedComponent = shallowWithIntl(
146
107
  <SlideBoxHeader
147
- slidBoxContent="editTemplate"
148
- channel="inapp"
149
- templateData={{ name: 'InApp Tpl' }}
150
- onCreateComplete={onCreateComplete}
151
- isFullMode
152
- moduleType="journey"
153
- />
154
- );
155
- expect(renderedComponent).toMatchSnapshot();
156
- });
157
-
158
- it('renders whatsappOverview=true header when WHATSAPP edit in fullMode', () => {
159
- renderedComponent = shallowWithIntl(
160
- <SlideBoxHeader
161
- slidBoxContent="editTemplate"
162
- channel="WHATSAPP"
163
- templateData={whatsappEditTemplateData}
164
- onCreateComplete={onCreateComplete}
165
- isFullMode
166
- moduleType="journey"
167
- />
168
- );
169
- expect(renderedComponent).toMatchSnapshot();
170
- });
171
-
172
- it('renders whatsappOverview=false header when WHATSAPP edit without fullMode', () => {
173
- renderedComponent = shallowWithIntl(
174
- <SlideBoxHeader
175
- slidBoxContent="editTemplate"
176
- channel="WHATSAPP"
177
- templateData={whatsappEditTemplateData}
108
+ slidBoxContent="createTemplate"
109
+ channel="WECHAT"
110
+ templateData={{}}
178
111
  onCreateComplete={onCreateComplete}
179
112
  isFullMode={false}
180
113
  moduleType="journey"
114
+ weChatTemplateType="mapTemplate"
115
+ templateStep="createTemplateContent"
116
+ onWeChatMaptemplateStepChange={jest.fn()}
117
+ weChatMaptemplateStep={0}
181
118
  />
182
119
  );
183
120
  expect(renderedComponent).toMatchSnapshot();
@@ -859,11 +859,6 @@ exports[`Test SlideBoxContent container Should render correct component for rcs
859
859
  }
860
860
  }
861
861
  onCreateComplete={[MockFunction]}
862
- templateData={
863
- Object {
864
- "mode": "create",
865
- }
866
- }
867
862
  />
868
863
  </SlideBoxContent__CreativesWrapper>
869
864
  `;
@@ -973,7 +968,6 @@ exports[`Test SlideBoxContent container Should render correct component for rcs
973
968
  <Connect(UserIsAuthenticated(Connect(InjectIntl(withStyles__StyledComponent))))
974
969
  FTPMode="create"
975
970
  channel="rcs"
976
- localTemplatesConfig={Object {}}
977
971
  loyaltyMetaData={Object {}}
978
972
  messageDetails={Object {}}
979
973
  onCreateComplete={[MockFunction]}
@@ -1382,7 +1376,6 @@ exports[`Test SlideBoxContent container Should render correct component for what
1382
1376
  <Connect(UserIsAuthenticated(Connect(InjectIntl(withStyles__StyledComponent))))
1383
1377
  FTPMode="create"
1384
1378
  channel="whatsapp"
1385
- localTemplatesConfig={Object {}}
1386
1379
  loyaltyMetaData={Object {}}
1387
1380
  messageDetails={Object {}}
1388
1381
  onCreateComplete={[MockFunction]}
@@ -3372,7 +3365,6 @@ exports[`Test SlideBoxContent container getViber utility function Should handle
3372
3365
  "name": "sms",
3373
3366
  }
3374
3367
  }
3375
- templateData={null}
3376
3368
  />
3377
3369
  </SlideBoxContent__CreativesWrapper>
3378
3370
  `;