@capillarytech/creatives-library 8.0.250-alpha.2 → 8.0.251

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 (276) hide show
  1. package/assets/Android.png +0 -0
  2. package/assets/iOS.png +0 -0
  3. package/constants/unified.js +1 -3
  4. package/initialReducer.js +0 -2
  5. package/package.json +1 -1
  6. package/services/api.js +0 -15
  7. package/services/tests/api.test.js +0 -34
  8. package/translations/en.json +3 -4
  9. package/utils/common.js +0 -11
  10. package/utils/commonUtils.js +5 -28
  11. package/utils/tests/commonUtil.test.js +0 -224
  12. package/utils/tests/transformerUtils.test.js +0 -297
  13. package/utils/transformTemplateConfig.js +10 -0
  14. package/utils/transformerUtils.js +0 -40
  15. package/v2Components/CapDeviceContent/index.js +56 -61
  16. package/v2Components/CapImageUpload/constants.js +0 -2
  17. package/v2Components/CapImageUpload/index.js +16 -65
  18. package/v2Components/CapImageUpload/index.scss +1 -4
  19. package/v2Components/CapImageUpload/messages.js +1 -5
  20. package/v2Components/CapTagList/index.js +1 -6
  21. package/v2Components/CapTagListWithInput/index.js +1 -5
  22. package/v2Components/CapTagListWithInput/messages.js +1 -1
  23. package/v2Components/CapWhatsappCTA/tests/index.test.js +0 -5
  24. package/v2Components/ErrorInfoNote/index.js +72 -455
  25. package/v2Components/ErrorInfoNote/messages.js +6 -36
  26. package/v2Components/ErrorInfoNote/style.scss +4 -280
  27. package/v2Components/FormBuilder/tests/index.test.js +4 -13
  28. package/v2Components/HtmlEditor/HTMLEditor.js +94 -547
  29. package/v2Components/HtmlEditor/__tests__/HTMLEditor.test.js +133 -1358
  30. package/v2Components/HtmlEditor/__tests__/index.lazy.test.js +16 -27
  31. package/v2Components/HtmlEditor/_htmlEditor.scss +45 -108
  32. package/v2Components/HtmlEditor/_index.lazy.scss +1 -1
  33. package/v2Components/HtmlEditor/components/CodeEditorPane/_codeEditorPane.scss +101 -22
  34. package/v2Components/HtmlEditor/components/CodeEditorPane/index.js +140 -146
  35. package/v2Components/HtmlEditor/components/DeviceToggle/_deviceToggle.scss +1 -2
  36. package/v2Components/HtmlEditor/components/DeviceToggle/index.js +3 -3
  37. package/v2Components/HtmlEditor/components/EditorToolbar/_editorToolbar.scss +0 -9
  38. package/v2Components/HtmlEditor/components/EditorToolbar/index.js +1 -1
  39. package/v2Components/HtmlEditor/components/FullscreenModal/_fullscreenModal.scss +0 -22
  40. package/v2Components/HtmlEditor/components/InAppPreviewPane/DeviceFrame.js +7 -4
  41. package/v2Components/HtmlEditor/components/InAppPreviewPane/__tests__/DeviceFrame.test.js +45 -35
  42. package/v2Components/HtmlEditor/components/InAppPreviewPane/_inAppPreviewPane.scss +3 -1
  43. package/v2Components/HtmlEditor/components/InAppPreviewPane/constants.js +33 -33
  44. package/v2Components/HtmlEditor/components/InAppPreviewPane/index.js +6 -7
  45. package/v2Components/HtmlEditor/components/PreviewPane/_previewPane.scss +6 -3
  46. package/v2Components/HtmlEditor/components/PreviewPane/index.js +34 -24
  47. package/v2Components/HtmlEditor/components/SplitContainer/_splitContainer.scss +1 -1
  48. package/v2Components/HtmlEditor/components/ValidationErrorDisplay/__tests__/index.test.js +152 -0
  49. package/v2Components/HtmlEditor/components/ValidationErrorDisplay/index.js +31 -49
  50. package/v2Components/HtmlEditor/components/ValidationPanel/_validationPanel.scss +34 -50
  51. package/v2Components/HtmlEditor/components/ValidationPanel/index.js +41 -70
  52. package/v2Components/HtmlEditor/constants.js +20 -42
  53. package/v2Components/HtmlEditor/hooks/__tests__/useInAppContent.test.js +16 -373
  54. package/v2Components/HtmlEditor/hooks/useEditorContent.js +2 -5
  55. package/v2Components/HtmlEditor/hooks/useInAppContent.js +146 -88
  56. package/v2Components/HtmlEditor/hooks/useValidation.js +53 -189
  57. package/v2Components/HtmlEditor/index.js +1 -1
  58. package/v2Components/HtmlEditor/messages.js +85 -95
  59. package/v2Components/HtmlEditor/utils/__tests__/htmlValidator.enhanced.test.js +45 -94
  60. package/v2Components/HtmlEditor/utils/__tests__/validationAdapter.test.js +0 -134
  61. package/v2Components/HtmlEditor/utils/contentSanitizer.js +41 -40
  62. package/v2Components/HtmlEditor/utils/htmlValidator.js +72 -71
  63. package/v2Components/HtmlEditor/utils/liquidTemplateSupport.js +102 -134
  64. package/v2Components/HtmlEditor/utils/properSyntaxHighlighting.js +25 -23
  65. package/v2Components/HtmlEditor/utils/validationAdapter.js +41 -66
  66. package/v2Components/MobilePushPreviewV2/index.js +7 -32
  67. package/v2Components/TemplatePreview/_templatePreview.scss +24 -55
  68. package/v2Components/TemplatePreview/index.js +32 -47
  69. package/v2Components/TemplatePreview/messages.js +0 -4
  70. package/v2Components/TestAndPreviewSlidebox/_testAndPreviewSlidebox.scss +0 -1
  71. package/v2Containers/App/constants.js +0 -5
  72. package/v2Containers/BeeEditor/index.js +90 -172
  73. package/v2Containers/Cap/tests/__snapshots__/index.test.js.snap +3 -4
  74. package/v2Containers/CreativesContainer/SlideBoxContent.js +53 -184
  75. package/v2Containers/CreativesContainer/SlideBoxFooter.js +13 -163
  76. package/v2Containers/CreativesContainer/SlideBoxHeader.js +1 -3
  77. package/v2Containers/CreativesContainer/constants.js +0 -4
  78. package/v2Containers/CreativesContainer/index.js +46 -407
  79. package/v2Containers/CreativesContainer/messages.js +0 -12
  80. package/v2Containers/CreativesContainer/tests/SlideBoxContent.test.js +0 -210
  81. package/v2Containers/CreativesContainer/tests/SlideBoxFooter.test.js +2 -11
  82. package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxContent.test.js.snap +50 -342
  83. package/v2Containers/CreativesContainer/tests/__snapshots__/index.test.js.snap +0 -106
  84. package/v2Containers/Email/actions.js +0 -7
  85. package/v2Containers/Email/constants.js +1 -5
  86. package/v2Containers/Email/index.js +29 -234
  87. package/v2Containers/Email/messages.js +0 -32
  88. package/v2Containers/Email/reducer.js +1 -12
  89. package/v2Containers/Email/sagas.js +7 -61
  90. package/v2Containers/Email/tests/__snapshots__/reducer.test.js.snap +0 -2
  91. package/v2Containers/Email/tests/reducer.test.js +0 -46
  92. package/v2Containers/Email/tests/sagas.test.js +29 -320
  93. package/v2Containers/EmailWrapper/components/EmailWrapperView.js +19 -207
  94. package/v2Containers/EmailWrapper/components/HTMLEditorTesting.js +74 -40
  95. package/v2Containers/EmailWrapper/components/__tests__/HTMLEditorTesting.test.js +67 -2
  96. package/v2Containers/EmailWrapper/constants.js +0 -2
  97. package/v2Containers/EmailWrapper/hooks/useEmailWrapper.js +77 -629
  98. package/v2Containers/EmailWrapper/index.js +23 -103
  99. package/v2Containers/EmailWrapper/messages.js +1 -61
  100. package/v2Containers/EmailWrapper/tests/EmailWrapperView.test.js +214 -0
  101. package/v2Containers/EmailWrapper/tests/useEmailWrapper.test.js +77 -594
  102. package/v2Containers/InApp/actions.js +0 -7
  103. package/v2Containers/InApp/constants.js +4 -20
  104. package/v2Containers/InApp/index.js +359 -802
  105. package/v2Containers/InApp/index.scss +3 -4
  106. package/v2Containers/InApp/messages.js +3 -7
  107. package/v2Containers/InApp/reducer.js +3 -21
  108. package/v2Containers/InApp/sagas.js +9 -29
  109. package/v2Containers/InApp/selectors.js +5 -25
  110. package/v2Containers/InApp/tests/index.test.js +50 -154
  111. package/v2Containers/InApp/tests/reducer.test.js +0 -34
  112. package/v2Containers/InApp/tests/sagas.test.js +9 -61
  113. package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/content.test.js.snap +9 -15
  114. package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/index.test.js.snap +6 -10
  115. package/v2Containers/Line/Container/Wrapper/tests/__snapshots__/index.test.js.snap +75 -102
  116. package/v2Containers/Line/Container/tests/__snapshots__/index.test.js.snap +54 -81
  117. package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +174 -244
  118. package/v2Containers/SmsTrai/Create/tests/__snapshots__/index.test.js.snap +12 -16
  119. package/v2Containers/SmsTrai/Edit/tests/__snapshots__/index.test.js.snap +36 -52
  120. package/v2Containers/TagList/index.js +19 -62
  121. package/v2Containers/Templates/ChannelTypeIllustration.js +1 -13
  122. package/v2Containers/Templates/_templates.scss +1 -265
  123. package/v2Containers/Templates/actions.js +1 -2
  124. package/v2Containers/Templates/constants.js +0 -1
  125. package/v2Containers/Templates/index.js +38 -363
  126. package/v2Containers/Templates/messages.js +0 -28
  127. package/v2Containers/Templates/reducer.js +0 -4
  128. package/v2Containers/Templates/tests/index.test.js +0 -10
  129. package/v2Containers/TemplatesV2/index.js +7 -15
  130. package/v2Containers/TemplatesV2/messages.js +0 -4
  131. package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +486 -682
  132. package/utils/imageUrlUpload.js +0 -141
  133. package/v2Components/CapImageUrlUpload/constants.js +0 -26
  134. package/v2Components/CapImageUrlUpload/index.js +0 -365
  135. package/v2Components/CapImageUrlUpload/index.scss +0 -35
  136. package/v2Components/CapImageUrlUpload/messages.js +0 -47
  137. package/v2Components/HtmlEditor/__tests__/HTMLEditor.apiErrors.test.js +0 -874
  138. package/v2Components/HtmlEditor/components/ValidationPanel/constants.js +0 -6
  139. package/v2Components/HtmlEditor/components/ValidationTabs/_validationTabs.scss +0 -254
  140. package/v2Components/HtmlEditor/components/ValidationTabs/index.js +0 -364
  141. package/v2Components/HtmlEditor/components/ValidationTabs/messages.js +0 -51
  142. package/v2Components/HtmlEditor/hooks/__tests__/useValidation.apiErrors.test.js +0 -795
  143. package/v2Components/HtmlEditor/utils/validationConstants.js +0 -40
  144. package/v2Containers/BeePopupEditor/_beePopupEditor.scss +0 -14
  145. package/v2Containers/BeePopupEditor/constants.js +0 -10
  146. package/v2Containers/BeePopupEditor/index.js +0 -194
  147. package/v2Containers/BeePopupEditor/tests/index.test.js +0 -627
  148. package/v2Containers/EmailWrapper/components/EmailHTMLEditor.js +0 -1285
  149. package/v2Containers/EmailWrapper/components/__tests__/EmailHTMLEditor.test.js +0 -1870
  150. package/v2Containers/EmailWrapper/components/__tests__/EmailWrapperView.test.js +0 -520
  151. package/v2Containers/EmailWrapper/tests/useEmailWrapper.edgeCases.test.js +0 -643
  152. package/v2Containers/InApp/__tests__/InAppHTMLEditor.test.js +0 -376
  153. package/v2Containers/InApp/__tests__/sagas.test.js +0 -363
  154. package/v2Containers/InApp/tests/selectors.test.js +0 -612
  155. package/v2Containers/InAppWrapper/components/InAppWrapperView.js +0 -151
  156. package/v2Containers/InAppWrapper/components/__tests__/InAppWrapperView.test.js +0 -267
  157. package/v2Containers/InAppWrapper/components/inAppWrapperView.scss +0 -23
  158. package/v2Containers/InAppWrapper/constants.js +0 -16
  159. package/v2Containers/InAppWrapper/hooks/__tests__/useInAppWrapper.test.js +0 -473
  160. package/v2Containers/InAppWrapper/hooks/useInAppWrapper.js +0 -198
  161. package/v2Containers/InAppWrapper/index.js +0 -148
  162. package/v2Containers/InAppWrapper/messages.js +0 -49
  163. package/v2Containers/InappAdvance/index.js +0 -1099
  164. package/v2Containers/InappAdvance/index.scss +0 -10
  165. package/v2Containers/InappAdvance/tests/index.test.js +0 -448
  166. package/v2Containers/WebPush/Create/components/BrandIconSection.js +0 -108
  167. package/v2Containers/WebPush/Create/components/ButtonForm.js +0 -172
  168. package/v2Containers/WebPush/Create/components/ButtonItem.js +0 -101
  169. package/v2Containers/WebPush/Create/components/ButtonList.js +0 -107
  170. package/v2Containers/WebPush/Create/components/ButtonsLinksSection.js +0 -160
  171. package/v2Containers/WebPush/Create/components/ButtonsLinksSection.test.js +0 -476
  172. package/v2Containers/WebPush/Create/components/FormActions.js +0 -54
  173. package/v2Containers/WebPush/Create/components/FormActions.test.js +0 -163
  174. package/v2Containers/WebPush/Create/components/MediaSection.js +0 -143
  175. package/v2Containers/WebPush/Create/components/MediaSection.test.js +0 -341
  176. package/v2Containers/WebPush/Create/components/MessageSection.js +0 -103
  177. package/v2Containers/WebPush/Create/components/MessageSection.test.js +0 -268
  178. package/v2Containers/WebPush/Create/components/NotificationTitleSection.js +0 -87
  179. package/v2Containers/WebPush/Create/components/NotificationTitleSection.test.js +0 -210
  180. package/v2Containers/WebPush/Create/components/TemplateNameSection.js +0 -54
  181. package/v2Containers/WebPush/Create/components/TemplateNameSection.test.js +0 -143
  182. package/v2Containers/WebPush/Create/components/__snapshots__/ButtonsLinksSection.test.js.snap +0 -82
  183. package/v2Containers/WebPush/Create/components/__snapshots__/FormActions.test.js.snap +0 -16
  184. package/v2Containers/WebPush/Create/components/__snapshots__/MediaSection.test.js.snap +0 -41
  185. package/v2Containers/WebPush/Create/components/__snapshots__/MessageSection.test.js.snap +0 -54
  186. package/v2Containers/WebPush/Create/components/__snapshots__/NotificationTitleSection.test.js.snap +0 -37
  187. package/v2Containers/WebPush/Create/components/__snapshots__/TemplateNameSection.test.js.snap +0 -21
  188. package/v2Containers/WebPush/Create/components/_buttons.scss +0 -246
  189. package/v2Containers/WebPush/Create/components/tests/ButtonForm.test.js +0 -554
  190. package/v2Containers/WebPush/Create/components/tests/ButtonItem.test.js +0 -607
  191. package/v2Containers/WebPush/Create/components/tests/ButtonList.test.js +0 -515
  192. package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonForm.test.js.snap +0 -666
  193. package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonItem.test.js.snap +0 -74
  194. package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonList.test.js.snap +0 -46
  195. package/v2Containers/WebPush/Create/hooks/useButtonManagement.js +0 -150
  196. package/v2Containers/WebPush/Create/hooks/useButtonManagement.test.js +0 -406
  197. package/v2Containers/WebPush/Create/hooks/useCharacterCount.js +0 -30
  198. package/v2Containers/WebPush/Create/hooks/useCharacterCount.test.js +0 -151
  199. package/v2Containers/WebPush/Create/hooks/useImageUpload.js +0 -104
  200. package/v2Containers/WebPush/Create/hooks/useImageUpload.test.js +0 -538
  201. package/v2Containers/WebPush/Create/hooks/useTagManagement.js +0 -122
  202. package/v2Containers/WebPush/Create/hooks/useTagManagement.test.js +0 -633
  203. package/v2Containers/WebPush/Create/index.js +0 -1148
  204. package/v2Containers/WebPush/Create/index.scss +0 -134
  205. package/v2Containers/WebPush/Create/messages.js +0 -203
  206. package/v2Containers/WebPush/Create/preview/DevicePreviewContent.js +0 -228
  207. package/v2Containers/WebPush/Create/preview/NotificationContainer.js +0 -294
  208. package/v2Containers/WebPush/Create/preview/PreviewContent.js +0 -90
  209. package/v2Containers/WebPush/Create/preview/PreviewControls.js +0 -305
  210. package/v2Containers/WebPush/Create/preview/PreviewDisclaimer.js +0 -23
  211. package/v2Containers/WebPush/Create/preview/WebPushPreview.js +0 -155
  212. package/v2Containers/WebPush/Create/preview/assets/Light.svg +0 -53
  213. package/v2Containers/WebPush/Create/preview/assets/Top.svg +0 -5
  214. package/v2Containers/WebPush/Create/preview/assets/android-arrow-down.svg +0 -9
  215. package/v2Containers/WebPush/Create/preview/assets/android-arrow-up.svg +0 -9
  216. package/v2Containers/WebPush/Create/preview/assets/chrome-icon.png +0 -0
  217. package/v2Containers/WebPush/Create/preview/assets/edge-icon.png +0 -0
  218. package/v2Containers/WebPush/Create/preview/assets/firefox-icon.svg +0 -106
  219. package/v2Containers/WebPush/Create/preview/assets/iOS.svg +0 -26
  220. package/v2Containers/WebPush/Create/preview/assets/macos-arrow-down-icon.svg +0 -9
  221. package/v2Containers/WebPush/Create/preview/assets/macos-triple-dot-icon.svg +0 -9
  222. package/v2Containers/WebPush/Create/preview/assets/opera-icon.svg +0 -18
  223. package/v2Containers/WebPush/Create/preview/assets/safari-icon.svg +0 -29
  224. package/v2Containers/WebPush/Create/preview/assets/windows-close-icon.svg +0 -9
  225. package/v2Containers/WebPush/Create/preview/assets/windows-triple-dot-icon.svg +0 -9
  226. package/v2Containers/WebPush/Create/preview/components/AndroidMobileChromeHeader.js +0 -47
  227. package/v2Containers/WebPush/Create/preview/components/AndroidMobileExpanded.js +0 -141
  228. package/v2Containers/WebPush/Create/preview/components/IOSHeader.js +0 -45
  229. package/v2Containers/WebPush/Create/preview/components/NotificationExpandedContent.js +0 -68
  230. package/v2Containers/WebPush/Create/preview/components/NotificationHeader.js +0 -61
  231. package/v2Containers/WebPush/Create/preview/components/WindowsChromeExpanded.js +0 -99
  232. package/v2Containers/WebPush/Create/preview/components/tests/AndroidMobileExpanded.test.js +0 -733
  233. package/v2Containers/WebPush/Create/preview/components/tests/WindowsChromeExpanded.test.js +0 -571
  234. package/v2Containers/WebPush/Create/preview/components/tests/__snapshots__/AndroidMobileExpanded.test.js.snap +0 -81
  235. package/v2Containers/WebPush/Create/preview/components/tests/__snapshots__/WindowsChromeExpanded.test.js.snap +0 -81
  236. package/v2Containers/WebPush/Create/preview/config/notificationMappings.js +0 -50
  237. package/v2Containers/WebPush/Create/preview/constants.js +0 -637
  238. package/v2Containers/WebPush/Create/preview/notification-container.scss +0 -79
  239. package/v2Containers/WebPush/Create/preview/preview.scss +0 -351
  240. package/v2Containers/WebPush/Create/preview/styles/_android-mobile-chrome.scss +0 -370
  241. package/v2Containers/WebPush/Create/preview/styles/_android-mobile-edge.scss +0 -12
  242. package/v2Containers/WebPush/Create/preview/styles/_android-mobile-firefox.scss +0 -12
  243. package/v2Containers/WebPush/Create/preview/styles/_android-mobile-opera.scss +0 -12
  244. package/v2Containers/WebPush/Create/preview/styles/_android-tablet-chrome.scss +0 -47
  245. package/v2Containers/WebPush/Create/preview/styles/_android-tablet-edge.scss +0 -11
  246. package/v2Containers/WebPush/Create/preview/styles/_android-tablet-firefox.scss +0 -11
  247. package/v2Containers/WebPush/Create/preview/styles/_android-tablet-opera.scss +0 -11
  248. package/v2Containers/WebPush/Create/preview/styles/_base.scss +0 -207
  249. package/v2Containers/WebPush/Create/preview/styles/_ios.scss +0 -153
  250. package/v2Containers/WebPush/Create/preview/styles/_ipados.scss +0 -107
  251. package/v2Containers/WebPush/Create/preview/styles/_macos-chrome.scss +0 -101
  252. package/v2Containers/WebPush/Create/preview/styles/_windows-chrome.scss +0 -229
  253. package/v2Containers/WebPush/Create/preview/tests/DevicePreviewContent.test.js +0 -909
  254. package/v2Containers/WebPush/Create/preview/tests/NotificationContainer.test.js +0 -1081
  255. package/v2Containers/WebPush/Create/preview/tests/PreviewControls.test.js +0 -723
  256. package/v2Containers/WebPush/Create/preview/tests/WebPushPreview.test.js +0 -1327
  257. package/v2Containers/WebPush/Create/preview/tests/__snapshots__/DevicePreviewContent.test.js.snap +0 -131
  258. package/v2Containers/WebPush/Create/preview/tests/__snapshots__/NotificationContainer.test.js.snap +0 -112
  259. package/v2Containers/WebPush/Create/preview/tests/__snapshots__/PreviewControls.test.js.snap +0 -144
  260. package/v2Containers/WebPush/Create/preview/tests/__snapshots__/WebPushPreview.test.js.snap +0 -129
  261. package/v2Containers/WebPush/Create/utils/payloadBuilder.js +0 -96
  262. package/v2Containers/WebPush/Create/utils/payloadBuilder.test.js +0 -396
  263. package/v2Containers/WebPush/Create/utils/previewUtils.js +0 -89
  264. package/v2Containers/WebPush/Create/utils/urlValidation.js +0 -115
  265. package/v2Containers/WebPush/Create/utils/urlValidation.test.js +0 -449
  266. package/v2Containers/WebPush/Create/utils/validation.js +0 -75
  267. package/v2Containers/WebPush/Create/utils/validation.test.js +0 -283
  268. package/v2Containers/WebPush/actions.js +0 -60
  269. package/v2Containers/WebPush/constants.js +0 -132
  270. package/v2Containers/WebPush/index.js +0 -2
  271. package/v2Containers/WebPush/reducer.js +0 -104
  272. package/v2Containers/WebPush/sagas.js +0 -119
  273. package/v2Containers/WebPush/selectors.js +0 -65
  274. package/v2Containers/WebPush/tests/reducer.test.js +0 -863
  275. package/v2Containers/WebPush/tests/sagas.test.js +0 -566
  276. package/v2Containers/WebPush/tests/selectors.test.js +0 -960
@@ -40,7 +40,6 @@ export class TagList extends React.Component { // eslint-disable-line react/pref
40
40
  tags: [],
41
41
  tagsError: false,
42
42
  currentContext: null, // Track current context to detect changes
43
- hasTriggeredInitialApiCall: false, // Track if we've triggered API call when popover opens
44
43
  };
45
44
  this.renderTags = this.renderTags.bind(this);
46
45
  this.populateTags = this.populateTags.bind(this);
@@ -52,14 +51,6 @@ export class TagList extends React.Component { // eslint-disable-line react/pref
52
51
 
53
52
  componentDidMount() {
54
53
  this.generateTags(this.props);
55
- // Trigger initial API call if tags are empty (similar to Email/SMS behavior)
56
- const { tags, injectedTags, onContextChange } = this.props;
57
- const hasNoTags = (!tags || tags.length === 0) && _.isEmpty(injectedTags);
58
- if (hasNoTags && onContextChange) {
59
- // Trigger API call with default 'Outbound' context to match CapTagList default
60
- // This ensures tags are loaded when component mounts
61
- this.getTagsforContext('Outbound');
62
- }
63
54
  }
64
55
 
65
56
  componentWillReceiveProps(nextProps) {
@@ -68,27 +59,23 @@ export class TagList extends React.Component { // eslint-disable-line react/pref
68
59
  // 2. Context change is happening (detected by different tag arrays)
69
60
  const { injectedTags: currentInjectedTags, tags: currentTags } = this.props;
70
61
  const { injectedTags: nextInjectedTags, tags: nextTags, fetchingSchemaError } = nextProps;
71
-
62
+
72
63
  const isInitialLoad = _.isEmpty(currentInjectedTags) && _.isEmpty(currentTags);
73
64
  const isContextChange = !_.isEqual(nextTags, currentTags) && !_.isEmpty(currentTags);
74
-
65
+
75
66
  if (isInitialLoad || isContextChange) {
76
67
  this.setState({loading: true});
77
68
  }
78
-
69
+
79
70
  // Only reset loading for injectedTags changes if we're not currently loading due to context change
80
71
  if (!_.isEqual(nextInjectedTags, currentInjectedTags) && !this.state.loading) {
81
72
  this.setState({loading: false});
82
73
  this.clearLoadingTimeout();
83
74
  }
84
-
75
+
85
76
  if (!_.isEqual(nextTags, currentTags)) {
86
77
  this.setState({loading: false});
87
78
  this.clearLoadingTimeout();
88
- // Reset the flag when tags are received, so we can trigger API call again if needed
89
- if (nextTags && nextTags.length > 0) {
90
- this.setState({ hasTriggeredInitialApiCall: false });
91
- }
92
79
  }
93
80
  if (fetchingSchemaError) {
94
81
  this.setState({tagsError: fetchingSchemaError, loading: false});
@@ -99,7 +86,7 @@ export class TagList extends React.Component { // eslint-disable-line react/pref
99
86
  componentDidUpdate(prevProps) {
100
87
  const { tags, injectedTags, selectedOfferDetails } = this.props;
101
88
  const { tags: prevTags, injectedTags: prevInjectedTags, selectedOfferDetails: prevSelectedOfferDetails } = prevProps;
102
-
89
+
103
90
  if (tags !== prevTags || injectedTags !== prevInjectedTags || selectedOfferDetails !== prevSelectedOfferDetails) {
104
91
  this.generateTags(this.props);
105
92
  }
@@ -124,44 +111,17 @@ export class TagList extends React.Component { // eslint-disable-line react/pref
124
111
  getTagsforContext = (data) => {
125
112
  // Set loading state when context change is requested
126
113
  this.setState({loading: true, currentContext: data});
127
-
114
+
128
115
  // Set a timeout to prevent infinite loading (fallback safety)
129
116
  this.clearLoadingTimeout();
130
117
  this.loadingTimeout = setTimeout(() => {
131
118
  this.setState({loading: false});
132
119
  }, 5000); // Reduced timeout to 5 seconds for better UX
133
-
120
+
134
121
  const { onContextChange } = this.props;
135
- // Always call onContextChange if available - this triggers the API call
136
- // The API call will fetch tags from /meta/TAG endpoint
137
- if (onContextChange) {
138
- onContextChange(data);
139
- } else {
140
- console.warn('TagList: onContextChange is not available. API call will not be triggered.');
141
- }
122
+ onContextChange(data);
142
123
  }
143
124
 
144
- handlePopoverVisibilityChange = (visible) => {
145
- // When popover opens, trigger API call if tags are empty or if we haven't triggered it yet
146
- // This ensures API call happens when user clicks "Add Label" button
147
- if (visible && this.props.onContextChange) {
148
- const { tags, injectedTags } = this.props;
149
- // Check if tags array is empty or if state tags are empty
150
- const hasNoTags = (!tags || tags.length === 0) && _.isEmpty(injectedTags);
151
- const hasNoStateTags = _.isEmpty(this.state.tags);
152
- const hasNotTriggeredApiCall = !this.state.hasTriggeredInitialApiCall;
153
-
154
- // Trigger API call if tags are not loaded yet OR if we haven't triggered it yet
155
- if ((hasNoTags || hasNoStateTags || hasNotTriggeredApiCall)) {
156
- // Mark that we've triggered the API call
157
- this.setState({ hasTriggeredInitialApiCall: true });
158
- // Trigger API call with default 'Outbound' context to match CapTagList default
159
- // This will call onContextChange which triggers handleOnTagsContextChange in InApp
160
- this.getTagsforContext('Outbound');
161
- }
162
- }
163
- };
164
-
165
125
  generateTags = (props) => {
166
126
  let tags = {};
167
127
  let injectedTags = {};
@@ -189,11 +149,11 @@ export class TagList extends React.Component { // eslint-disable-line react/pref
189
149
  if (eventContextTags?.length) {
190
150
  const TAG_HEADER_MSG_LABEL = this.props.intl.formatMessage(messages.entryEvent);
191
151
  eventContextTagsObj.eventContextTags = {
192
- "name": TAG_HEADER_MSG_LABEL,
193
- "desc": TAG_HEADER_MSG_LABEL,
194
- "resolved": true,
152
+ name: TAG_HEADER_MSG_LABEL,
153
+ desc: TAG_HEADER_MSG_LABEL,
154
+ resolved: true,
195
155
  'tag-header': true,
196
- "subtags": {},
156
+ subtags: {},
197
157
  };
198
158
 
199
159
  eventContextTags.forEach((tag) => {
@@ -204,11 +164,11 @@ export class TagList extends React.Component { // eslint-disable-line react/pref
204
164
  // Initializing the tags profile if it doesn't exist
205
165
  if (!eventContextTagsObj?.eventContextTags?.subtags?.[profileId]) {
206
166
  eventContextTagsObj.eventContextTags.subtags[profileId] = {
207
- "name": profileName,
208
- "desc": profileName,
209
- "resolved": true,
167
+ name: profileName,
168
+ desc: profileName,
169
+ resolved: true,
210
170
  'tag-header': true,
211
- "subtags": {},
171
+ subtags: {},
212
172
  };
213
173
  }
214
174
  // Adding the current tag to the profile group
@@ -241,7 +201,7 @@ export class TagList extends React.Component { // eslint-disable-line react/pref
241
201
  _.forEach(tagsList, (temp) => {
242
202
  const tag = temp.definition;
243
203
  const { intl } = this.props;
244
- const { locale: userLocale } = intl || {};
204
+ const { locale: userLocale } = intl || {};
245
205
 
246
206
  // Check if the tag.value should be skipped based on feature control
247
207
  if (_.includes(excludedTags, tag.value)) {
@@ -249,8 +209,8 @@ export class TagList extends React.Component { // eslint-disable-line react/pref
249
209
  }
250
210
  if (!tag['tag-header']) {
251
211
  mainTags[tag.value] = {
252
- name: tag?.label[userLocale] ? tag?.label[userLocale] : tag?.label?.en,
253
- desc: tag?.label[userLocale] ? tag?.label[userLocale] : tag?.label?.en,
212
+ "name": tag?.label[userLocale] ? tag?.label[userLocale] : tag?.label?.en,
213
+ "desc": tag?.label[userLocale] ? tag?.label[userLocale] : tag?.label?.en,
254
214
  };
255
215
  } else if (tag['tag-header'] && mainTags[tag.value]) {
256
216
  mainTags[tag.value].subtags = _.concat(mainTags[tag.value].subtags, tag.subtags);
@@ -406,14 +366,12 @@ export class TagList extends React.Component { // eslint-disable-line react/pref
406
366
  visibleTaglist={this.props.visibleTaglist}
407
367
  hidePopover={this.props.hidePopover}
408
368
  onContextChange={this.getTagsforContext}
409
- onVisibleChange={this.handlePopoverVisibilityChange}
410
369
  moduleFilterEnabled={this.props.moduleFilterEnabled}
411
370
  modalProps={this.props.modalProps}
412
371
  currentOrgDetails={this.props.currentOrgDetails}
413
372
  channel={this.props.channel}
414
373
  disabled={this.props.disabled}
415
374
  fetchingSchemaError={this?.state?.tagsError}
416
- popoverPlacement={this.props.popoverPlacement}
417
375
  />
418
376
  </div>
419
377
  );
@@ -444,7 +402,6 @@ TagList.propTypes = {
444
402
  disabled: PropTypes.bool,
445
403
  fetchingSchemaError: PropTypes.bool,
446
404
  eventContextTags: PropTypes.array,
447
- popoverPlacement: PropTypes.string,
448
405
  intl: PropTypes.shape({
449
406
  formatMessage: PropTypes.func.isRequired,
450
407
  locale: PropTypes.string,
@@ -14,7 +14,7 @@ import inAppIllustration from '@capillarytech/cap-ui-library/assets/images/featu
14
14
  import messages from './messages';
15
15
  import { FormattedMessage } from 'react-intl';
16
16
  import { CapIllustration } from "@capillarytech/cap-ui-library";
17
- import { MOBILE_PUSH, SMS, EMAIL, LINE, VIBER, FACEBOOK, WHATSAPP, RCS, ZALO, INAPP, WEBPUSH } from '../CreativesContainer/constants';
17
+ import { MOBILE_PUSH, SMS, EMAIL, LINE, VIBER, FACEBOOK, WHATSAPP, RCS, ZALO, INAPP } from '../CreativesContainer/constants';
18
18
 
19
19
 
20
20
  // Configuration object for channel types
@@ -133,18 +133,6 @@ function ChannelTypeIllustration(props) {
133
133
  };
134
134
  }
135
135
 
136
- if (type === WEBPUSH) {
137
- return {
138
- buttonLabel: <FormattedMessage {...messages.newWebPushTemplate} values={{ template: templateText }} />,
139
- onClick: createTemplate,
140
- illustrationImage: pushIllustration,
141
- title: <FormattedMessage {...messages.webPushTitleIllustration} values={{ template: templateText }} />,
142
- description: <FormattedMessage {...messages.webPushDescIllustration} />,
143
- descriptionPosition: 'bottom',
144
- descriptionClassName: 'illustration-desc',
145
- };
146
- }
147
-
148
136
  // Handle standard channels using configuration
149
137
  const config = CHANNEL_CONFIG[type];
150
138
  if (!config) {
@@ -133,20 +133,17 @@
133
133
  .ant-card-meta-description{
134
134
  display: -webkit-box;
135
135
  -webkit-line-clamp: 13;
136
- line-clamp: 13;
137
136
  -webkit-box-orient: vertical;
138
137
  }
139
138
  }
140
139
  .truncate-text-with-button{
141
140
  .ant-card-meta-description{
142
141
  -webkit-line-clamp: 13;
143
- line-clamp: 13;
144
142
  }
145
143
  }
146
144
  .truncate-text-with-image{
147
145
  .ant-card-meta-description{
148
146
  -webkit-line-clamp: 3;
149
- line-clamp: 3;
150
147
  }
151
148
  }
152
149
 
@@ -316,131 +313,6 @@
316
313
  }
317
314
  }
318
315
  }
319
- .INAPP {
320
- margin-bottom: $CAP_SPACE_12;
321
- .inapp-container {
322
- margin-top: $CAP_SPACE_24;
323
- }
324
- // Modal Layout - centered
325
- .inapp-modal-layout {
326
- position: absolute;
327
- display: flex;
328
- width: 12rem;
329
- top: 10%;
330
- left: 10%;
331
- bottom: 5%;
332
- overflow: hidden;
333
- background-color: $CAP_WHITE;
334
- border-radius: $CAP_SPACE_08;
335
- }
336
-
337
- // Full Screen Layout
338
- .inapp-fullscreen-layout {
339
- position: absolute;
340
- display: flex;
341
- width: 12rem;
342
- left: 10%;
343
- top: 1%;
344
- bottom: 1%;
345
- overflow: hidden;
346
- background-color: $CAP_WHITE;
347
- border-radius: $CAP_SPACE_08;
348
- }
349
-
350
- // Top Banner Layout
351
- .inapp-top-banner-layout {
352
- position: absolute;
353
- display: flex;
354
- width: 12rem;
355
- left: 10%;
356
- top: 1%;
357
- bottom: 20%;
358
- overflow: hidden;
359
- background-color: $CAP_WHITE;
360
- border-radius: $CAP_SPACE_08;
361
- }
362
-
363
- // Bottom Banner Layout
364
- .inapp-bottom-banner-layout {
365
- position: absolute;
366
- display: flex;
367
- justify-content: center;
368
- width: 12rem;
369
- left: 10%;
370
- top: 50%;
371
- bottom: 2%;
372
- overflow: hidden;
373
- background-color: $CAP_WHITE;
374
- border-radius: $CAP_SPACE_08;
375
- }
376
- }
377
- }
378
-
379
- .WEBPUSH {
380
- .cap-custom-card {
381
- .ant-card-body {
382
- height: 19rem;
383
- padding: $CAP_SPACE_16;
384
- overflow: hidden;
385
-
386
- .ant-card-meta {
387
- height: 100%;
388
-
389
- .ant-card-meta-description {
390
- height: 100%;
391
- display: flex;
392
- flex-direction: column;
393
-
394
- .sms-template-content.webpush-template-content {
395
- height: 100%;
396
- overflow: hidden;
397
-
398
- .webpush-template-card {
399
- height: 100%;
400
- overflow: hidden;
401
-
402
- .webpush-template-meta {
403
- flex-shrink: 0;
404
- }
405
-
406
- .webpush-template-text {
407
- flex: 1;
408
- min-height: 0;
409
- overflow: hidden;
410
- }
411
-
412
- .webpush-media-image {
413
- max-height: 7.142rem;
414
- flex-shrink: 0;
415
- }
416
-
417
- .webpush-template-cta-section {
418
- flex-shrink: 0;
419
- margin-top: $CAP_SPACE_08;
420
- padding-top: $CAP_SPACE_08;
421
- border-top: 1px solid $CAP_G07;
422
- }
423
- }
424
- }
425
- }
426
- }
427
- }
428
- }
429
-
430
- .cap-custom-card.has-hover-option:hover {
431
- .sms-template-content.webpush-template-content {
432
- opacity: 0.2;
433
- }
434
- }
435
-
436
- &.no-image .ant-card-meta {
437
- background: $CAP_WHITE;
438
- padding: $CAP_SPACE_16;
439
-
440
- .ant-card-meta-description {
441
- height: 100%;
442
- }
443
- }
444
316
  }
445
317
 
446
318
  .create-new-link{
@@ -496,136 +368,6 @@
496
368
  width: 100%;
497
369
  }
498
370
 
499
- .sms-template-content.webpush-template-content {
500
- padding: 0;
501
- // Font-family override: needed when used in library mode where parent repo's root font-family differs
502
- font-family: 'Roboto', open-sans, sans-serif;
503
- }
504
-
505
- .webpush-template-card {
506
- display: flex;
507
- flex-direction: column;
508
-
509
- .webpush-template-meta {
510
- display: flex;
511
- align-items: flex-start;
512
- gap: $CAP_SPACE_08;
513
- }
514
-
515
- .webpush-brand-icon,
516
- .webpush-brand-icon-placeholder {
517
- width: $CAP_SPACE_20;
518
- height: $CAP_SPACE_20;
519
- border-radius: 50%;
520
- flex-shrink: 0;
521
- object-fit: cover;
522
- }
523
-
524
- .webpush-brand-icon-placeholder {
525
- background-color: $CAP_G07;
526
- }
527
-
528
- .webpush-template-text {
529
- display: flex;
530
- flex-direction: column;
531
- gap: $CAP_SPACE_04;
532
- width: 100%;
533
- }
534
-
535
- .webpush-template-header {
536
- display: flex;
537
- align-items: flex-start;
538
- justify-content: space-between;
539
- gap: $CAP_SPACE_08;
540
- }
541
-
542
- .webpush-template-title {
543
- width: 1px; // Required for text truncation with flex: 1
544
- font-weight: 600;
545
- color: $CAP_G02;
546
- font-size: $FONT_SIZE_S;
547
- line-height: $CAP_SPACE_16;
548
- word-break: break-word;
549
- flex: 1;
550
- overflow: hidden;
551
- text-overflow: ellipsis;
552
- white-space: nowrap;
553
- }
554
-
555
- .webpush-template-time {
556
- color: $CAP_G04;
557
- font-size: $FONT_SIZE_VS;
558
- line-height: $CAP_SPACE_16;
559
- white-space: nowrap;
560
- flex-shrink: 0;
561
- }
562
-
563
- .webpush-template-message {
564
- color: $CAP_G04;
565
- font-size: $FONT_SIZE_S;
566
- line-height: $CAP_SPACE_16;
567
- word-break: break-word;
568
- display: -webkit-box;
569
- -webkit-line-clamp: 3;
570
- line-clamp: 3;
571
- -webkit-box-orient: vertical;
572
- overflow: hidden;
573
- text-overflow: ellipsis;
574
- }
575
-
576
- .webpush-media-image {
577
- width: 100%;
578
- height: auto;
579
- max-height: 8.571rem;
580
- border-radius: $CAP_SPACE_08;
581
- object-fit: cover;
582
- margin-top: $CAP_SPACE_04;
583
- }
584
-
585
- .webpush-template-cta-section {
586
- display: flex;
587
- margin-top: $CAP_SPACE_08;
588
- padding-top: $CAP_SPACE_08;
589
- width: 100%;
590
-
591
- &.single-cta {
592
- justify-content: center;
593
-
594
- .webpush-template-cta-item {
595
- flex: 0 1 auto;
596
- }
597
- }
598
-
599
- .webpush-template-cta-item {
600
- flex: 1;
601
- padding: 0 $CAP_SPACE_08;
602
- display: flex;
603
- align-items: center;
604
- justify-content: center;
605
- }
606
-
607
- .webpush-template-cta-item + .webpush-template-cta-item {
608
- border-left: 1px solid $CAP_G07;
609
- }
610
-
611
- .webpush-template-cta-text {
612
- font-weight: 600;
613
- font-size: $FONT_SIZE_VS;
614
- line-height: 1rem;
615
- color: $CAP_G02;
616
- text-align: center;
617
- white-space: nowrap;
618
- overflow: hidden;
619
- text-overflow: ellipsis;
620
- width: 100%;
621
- user-select: none;
622
- -webkit-user-select: none;
623
- -moz-user-select: none;
624
- -ms-user-select: none;
625
- }
626
- }
627
- }
628
-
629
371
  .footer-container{
630
372
  padding: 8px 0 8px 16px;
631
373
  }
@@ -830,7 +572,6 @@
830
572
  text-overflow: ellipsis;
831
573
  display: -webkit-box;
832
574
  -webkit-line-clamp: 3;
833
- line-clamp: 3;
834
575
  -webkit-box-orient: vertical;
835
576
  }
836
577
  .title{
@@ -893,7 +634,6 @@
893
634
  text-overflow: ellipsis;
894
635
  display: -webkit-box;
895
636
  -webkit-line-clamp: 2;
896
- line-clamp: 2;
897
637
  -webkit-box-orient: vertical;
898
638
  }
899
639
  .actions{
@@ -955,8 +695,7 @@
955
695
  }
956
696
 
957
697
  .whatsapp-filters,
958
- .zalo-filters,
959
- .inapp-filters {
698
+ .zalo-filters {
960
699
  display: flex;
961
700
  width: 100%;
962
701
  padding-left: 8px;
@@ -972,7 +711,6 @@
972
711
  overflow: hidden;
973
712
  &.desc{
974
713
  -webkit-line-clamp: 5;
975
- line-clamp: 5;
976
714
  }
977
715
  }
978
716
 
@@ -1070,7 +808,6 @@
1070
808
  .whatsapp-message-with-media {
1071
809
  display: -webkit-box;
1072
810
  -webkit-line-clamp: 3;
1073
- line-clamp: 3;
1074
811
  -webkit-box-orient: vertical;
1075
812
  overflow: hidden;
1076
813
  }
@@ -1078,7 +815,6 @@
1078
815
  .whatsapp-message-without-media {
1079
816
  display: -webkit-box;
1080
817
  -webkit-line-clamp: 10;
1081
- line-clamp: 10;
1082
818
  -webkit-box-orient: vertical;
1083
819
  overflow: hidden;
1084
820
  }
@@ -6,7 +6,7 @@
6
6
 
7
7
  import * as types from './constants';
8
8
  import {
9
- LINE, WHATSAPP, RCS, ZALO, WEBPUSH,
9
+ LINE, WHATSAPP, RCS, ZALO,
10
10
  } from '../CreativesContainer/constants';
11
11
 
12
12
  export function getAllTemplates(channel, queryParams, intlCopyOf = '') {
@@ -68,7 +68,6 @@ export function setChannelAccount(channel, account) {
68
68
  [LINE]: types.SET_LINE_ACCOUNT,
69
69
  [WHATSAPP]: types.SET_WHATSAPP_ACCOUNT,
70
70
  [ZALO]: types.SET_ZALO_ACCOUNT,
71
- [WEBPUSH]: types.SET_WEBPUSH_ACCOUNT,
72
71
  [RCS]: types.SET_RCS_ACCOUNT,
73
72
  };
74
73
 
@@ -51,7 +51,6 @@ export const SET_FACEBOOK_ACCOUNT = "app/v2Containers/Templates/SET_FACEBOOK_ACC
51
51
  export const SET_WHATSAPP_ACCOUNT = "app/v2Containers/Templates/SET_WHATSAPP_ACCOUNT";
52
52
  export const SET_RCS_ACCOUNT = "app/v2Containers/Templates/SET_RCS_ACCOUNT";
53
53
  export const SET_ZALO_ACCOUNT = "app/v2Containers/Templates/SET_ZALO_ACCOUNT";
54
- export const SET_WEBPUSH_ACCOUNT = "app/v2Containers/Templates/SET_WEBPUSH_ACCOUNT";
55
54
 
56
55
  export const GET_DEAFULT_BEE_TEMPLATES_REQUEST = 'app/v2Containers/Templates/GET_DEAFULT_BEE_TEMPLATES_REQUEST';
57
56
  export const GET_DEAFULT_BEE_TEMPLATES_SUCCESS = 'app/v2Containers/Templates/GET_DEAFULT_BEE_TEMPLATES_SUCCESS';