@capillarytech/creatives-library 8.0.330-alpha.0 → 8.0.331-alpha.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 (111) hide show
  1. package/constants/unified.js +0 -18
  2. package/package.json +1 -1
  3. package/services/tests/api.test.js +0 -13
  4. package/utils/commonUtils.js +1 -19
  5. package/v2Components/CapTagList/index.js +0 -10
  6. package/v2Components/CommonTestAndPreview/CustomValuesEditor.js +49 -70
  7. package/v2Components/CommonTestAndPreview/DeliverySettings/DeliverySettings.scss +2 -8
  8. package/v2Components/CommonTestAndPreview/DeliverySettings/ModifyDeliverySettings.js +21 -207
  9. package/v2Components/CommonTestAndPreview/DeliverySettings/constants.js +0 -16
  10. package/v2Components/CommonTestAndPreview/DeliverySettings/index.js +10 -85
  11. package/v2Components/CommonTestAndPreview/DeliverySettings/messages.js +0 -30
  12. package/v2Components/CommonTestAndPreview/DeliverySettings/utils/parseSenderDetailsResponse.js +11 -79
  13. package/v2Components/CommonTestAndPreview/ExistingCustomerModal.js +1 -0
  14. package/v2Components/CommonTestAndPreview/SendTestMessage.js +5 -10
  15. package/v2Components/CommonTestAndPreview/UnifiedPreview/_unifiedPreview.scss +1 -20
  16. package/v2Components/CommonTestAndPreview/UnifiedPreview/index.js +4 -133
  17. package/v2Components/CommonTestAndPreview/_commonTestAndPreview.scss +0 -11
  18. package/v2Components/CommonTestAndPreview/constants.js +2 -38
  19. package/v2Components/CommonTestAndPreview/index.js +176 -672
  20. package/v2Components/CommonTestAndPreview/messages.js +3 -41
  21. package/v2Components/CommonTestAndPreview/reducer.js +3 -1
  22. package/v2Components/CommonTestAndPreview/sagas.js +8 -16
  23. package/v2Components/CommonTestAndPreview/tests/CustomValuesEditor.test.js +284 -308
  24. package/v2Components/CommonTestAndPreview/tests/DeliverySettings/ModifyDeliverySettings.test.js +65 -231
  25. package/v2Components/CommonTestAndPreview/tests/DeliverySettings/index.test.js +5 -118
  26. package/v2Components/CommonTestAndPreview/tests/DeliverySettings/utils/parseSenderDetailsResponse.test.js +0 -341
  27. package/v2Components/CommonTestAndPreview/tests/SendTestMessage.test.js +13 -34
  28. package/v2Components/CommonTestAndPreview/tests/UnifiedPreview/index.test.js +1 -199
  29. package/v2Components/CommonTestAndPreview/tests/index.test.js +4 -132
  30. package/v2Components/CommonTestAndPreview/tests/sagas.test.js +2 -2
  31. package/v2Components/FormBuilder/index.js +1 -7
  32. package/v2Components/TestAndPreviewSlidebox/index.js +1 -13
  33. package/v2Components/TestAndPreviewSlidebox/sagas.js +4 -11
  34. package/v2Components/TestAndPreviewSlidebox/tests/saga.test.js +1 -3
  35. package/v2Containers/CreativesContainer/SlideBoxContent.js +4 -36
  36. package/v2Containers/CreativesContainer/SlideBoxFooter.js +1 -10
  37. package/v2Containers/CreativesContainer/SlideBoxHeader.js +4 -29
  38. package/v2Containers/CreativesContainer/constants.js +0 -9
  39. package/v2Containers/CreativesContainer/index.js +93 -292
  40. package/v2Containers/CreativesContainer/index.scss +1 -51
  41. package/v2Containers/CreativesContainer/tests/SlideBoxFooter.test.js +34 -78
  42. package/v2Containers/CreativesContainer/tests/SlideBoxHeader.test.js +16 -79
  43. package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxContent.test.js.snap +0 -8
  44. package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxHeader.test.js.snap +98 -357
  45. package/v2Containers/CreativesContainer/tests/__snapshots__/index.test.js.snap +10 -20
  46. package/v2Containers/CreativesContainer/tests/index.test.js +9 -71
  47. package/v2Containers/Rcs/constants.js +3 -40
  48. package/v2Containers/Rcs/index.js +895 -1145
  49. package/v2Containers/Rcs/index.scss +6 -85
  50. package/v2Containers/Rcs/messages.js +2 -12
  51. package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +1432 -40783
  52. package/v2Containers/Rcs/tests/__snapshots__/utils.test.js.snap +5 -0
  53. package/v2Containers/Rcs/tests/index.test.js +38 -41
  54. package/v2Containers/Rcs/tests/mockData.js +0 -38
  55. package/v2Containers/Rcs/tests/utils.test.js +1 -435
  56. package/v2Containers/Rcs/utils.js +10 -405
  57. package/v2Containers/Sms/Create/index.js +38 -100
  58. package/v2Containers/SmsTrai/Create/index.js +4 -9
  59. package/v2Containers/SmsTrai/Edit/constants.js +0 -2
  60. package/v2Containers/SmsTrai/Edit/index.js +128 -636
  61. package/v2Containers/SmsTrai/Edit/messages.js +4 -14
  62. package/v2Containers/SmsTrai/Edit/tests/__snapshots__/index.test.js.snap +2296 -4249
  63. package/v2Containers/SmsWrapper/index.js +8 -37
  64. package/v2Containers/TagList/index.js +11 -21
  65. package/v2Containers/Templates/_templates.scss +2 -63
  66. package/v2Containers/Templates/actions.js +0 -11
  67. package/v2Containers/Templates/constants.js +0 -2
  68. package/v2Containers/Templates/index.js +40 -90
  69. package/v2Containers/Templates/sagas.js +12 -57
  70. package/v2Containers/Templates/tests/__snapshots__/index.test.js.snap +1079 -1043
  71. package/v2Containers/Templates/tests/sagas.test.js +123 -193
  72. package/v2Containers/TemplatesV2/TemplatesV2.style.js +1 -72
  73. package/v2Containers/TemplatesV2/index.js +23 -86
  74. package/v2Containers/WebPush/Create/index.js +1 -1
  75. package/v2Containers/Whatsapp/index.js +20 -3
  76. package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +34 -578
  77. package/utils/templateVarUtils.js +0 -201
  78. package/utils/tests/templateVarUtils.test.js +0 -204
  79. package/v2Components/CommonTestAndPreview/previewApiUtils.js +0 -59
  80. package/v2Components/CommonTestAndPreview/tests/previewApiUtils.test.js +0 -67
  81. package/v2Components/SmsFallback/SmsFallbackLocalSelector.js +0 -87
  82. package/v2Components/SmsFallback/constants.js +0 -73
  83. package/v2Components/SmsFallback/index.js +0 -955
  84. package/v2Components/SmsFallback/index.scss +0 -265
  85. package/v2Components/SmsFallback/messages.js +0 -78
  86. package/v2Components/SmsFallback/smsFallbackUtils.js +0 -118
  87. package/v2Components/SmsFallback/tests/SmsFallbackLocalSelector.test.js +0 -50
  88. package/v2Components/SmsFallback/tests/rcsSmsFallback.acceptance.test.js +0 -147
  89. package/v2Components/SmsFallback/tests/smsFallbackHandlers.test.js +0 -304
  90. package/v2Components/SmsFallback/tests/smsFallbackUi.test.js +0 -197
  91. package/v2Components/SmsFallback/tests/smsFallbackUtils.test.js +0 -277
  92. package/v2Components/SmsFallback/tests/useLocalTemplateList.test.js +0 -422
  93. package/v2Components/SmsFallback/useLocalTemplateList.js +0 -92
  94. package/v2Components/VarSegmentMessageEditor/constants.js +0 -2
  95. package/v2Components/VarSegmentMessageEditor/index.js +0 -125
  96. package/v2Components/VarSegmentMessageEditor/index.scss +0 -46
  97. package/v2Containers/CreativesContainer/CreativesSlideBoxWrapper.js +0 -43
  98. package/v2Containers/CreativesContainer/embeddedSlideboxUtils.js +0 -67
  99. package/v2Containers/CreativesContainer/tests/SlideBoxContent.localTemplates.test.js +0 -90
  100. package/v2Containers/CreativesContainer/tests/embeddedSlideboxUtils.test.js +0 -258
  101. package/v2Containers/CreativesContainer/tests/useLocalTemplatesProp.test.js +0 -125
  102. package/v2Containers/Rcs/rcsLibraryHydrationUtils.js +0 -225
  103. package/v2Containers/Rcs/tests/rcsLibraryHydrationUtils.test.js +0 -318
  104. package/v2Containers/Sms/smsFormDataHelpers.js +0 -67
  105. package/v2Containers/Sms/tests/smsFormDataHelpers.test.js +0 -253
  106. package/v2Containers/SmsTrai/Edit/index.scss +0 -121
  107. package/v2Containers/Templates/TemplatesActionBar.js +0 -101
  108. package/v2Containers/Templates/tests/TemplatesActionBar.test.js +0 -120
  109. package/v2Containers/Templates/tests/smsTemplatesListApi.test.js +0 -180
  110. package/v2Containers/Templates/utils/smsTemplatesListApi.js +0 -79
  111. 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
  `;