@capillarytech/creatives-library 8.0.250 → 8.0.252

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 +2 -2
  4. package/initialReducer.js +2 -0
  5. package/package.json +1 -1
  6. package/services/api.js +10 -5
  7. package/services/tests/api.test.js +34 -0
  8. package/translations/en.json +3 -4
  9. package/utils/common.js +5 -6
  10. package/utils/commonUtils.js +28 -5
  11. package/utils/tests/commonUtil.test.js +224 -0
  12. package/utils/tests/transformerUtils.test.js +0 -297
  13. package/utils/transformTemplateConfig.js +0 -10
  14. package/utils/transformerUtils.js +0 -40
  15. package/v2Components/CapDeviceContent/index.js +61 -56
  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 +6 -1
  21. package/v2Components/CapTagListWithInput/index.js +5 -1
  22. package/v2Components/CapTagListWithInput/messages.js +1 -1
  23. package/v2Components/CapWhatsappCTA/tests/index.test.js +5 -0
  24. package/v2Components/ErrorInfoNote/index.js +455 -72
  25. package/v2Components/ErrorInfoNote/messages.js +36 -6
  26. package/v2Components/ErrorInfoNote/style.scss +280 -4
  27. package/v2Components/FormBuilder/tests/index.test.js +13 -4
  28. package/v2Components/HtmlEditor/HTMLEditor.js +547 -94
  29. package/v2Components/HtmlEditor/__tests__/HTMLEditor.apiErrors.test.js +874 -0
  30. package/v2Components/HtmlEditor/__tests__/HTMLEditor.test.js +1358 -133
  31. package/v2Components/HtmlEditor/__tests__/index.lazy.test.js +27 -16
  32. package/v2Components/HtmlEditor/_htmlEditor.scss +108 -45
  33. package/v2Components/HtmlEditor/_index.lazy.scss +1 -1
  34. package/v2Components/HtmlEditor/components/CodeEditorPane/_codeEditorPane.scss +22 -101
  35. package/v2Components/HtmlEditor/components/CodeEditorPane/index.js +146 -140
  36. package/v2Components/HtmlEditor/components/DeviceToggle/_deviceToggle.scss +2 -1
  37. package/v2Components/HtmlEditor/components/DeviceToggle/index.js +3 -3
  38. package/v2Components/HtmlEditor/components/EditorToolbar/_editorToolbar.scss +9 -0
  39. package/v2Components/HtmlEditor/components/EditorToolbar/index.js +1 -1
  40. package/v2Components/HtmlEditor/components/FullscreenModal/_fullscreenModal.scss +22 -0
  41. package/v2Components/HtmlEditor/components/InAppPreviewPane/DeviceFrame.js +4 -7
  42. package/v2Components/HtmlEditor/components/InAppPreviewPane/__tests__/DeviceFrame.test.js +35 -45
  43. package/v2Components/HtmlEditor/components/InAppPreviewPane/_inAppPreviewPane.scss +1 -3
  44. package/v2Components/HtmlEditor/components/InAppPreviewPane/constants.js +33 -33
  45. package/v2Components/HtmlEditor/components/InAppPreviewPane/index.js +7 -6
  46. package/v2Components/HtmlEditor/components/PreviewPane/_previewPane.scss +3 -6
  47. package/v2Components/HtmlEditor/components/PreviewPane/index.js +24 -34
  48. package/v2Components/HtmlEditor/components/SplitContainer/_splitContainer.scss +1 -1
  49. package/v2Components/HtmlEditor/components/ValidationErrorDisplay/index.js +49 -31
  50. package/v2Components/HtmlEditor/components/ValidationPanel/_validationPanel.scss +50 -34
  51. package/v2Components/HtmlEditor/components/ValidationPanel/constants.js +6 -0
  52. package/v2Components/HtmlEditor/components/ValidationPanel/index.js +70 -41
  53. package/v2Components/HtmlEditor/components/ValidationTabs/_validationTabs.scss +254 -0
  54. package/v2Components/HtmlEditor/components/ValidationTabs/index.js +364 -0
  55. package/v2Components/HtmlEditor/components/ValidationTabs/messages.js +51 -0
  56. package/v2Components/HtmlEditor/constants.js +42 -20
  57. package/v2Components/HtmlEditor/hooks/__tests__/useInAppContent.test.js +373 -16
  58. package/v2Components/HtmlEditor/hooks/__tests__/useValidation.apiErrors.test.js +795 -0
  59. package/v2Components/HtmlEditor/hooks/useEditorContent.js +5 -2
  60. package/v2Components/HtmlEditor/hooks/useInAppContent.js +88 -146
  61. package/v2Components/HtmlEditor/hooks/useValidation.js +189 -53
  62. package/v2Components/HtmlEditor/index.js +1 -1
  63. package/v2Components/HtmlEditor/messages.js +95 -85
  64. package/v2Components/HtmlEditor/utils/__tests__/htmlValidator.enhanced.test.js +94 -45
  65. package/v2Components/HtmlEditor/utils/__tests__/validationAdapter.test.js +134 -0
  66. package/v2Components/HtmlEditor/utils/contentSanitizer.js +40 -41
  67. package/v2Components/HtmlEditor/utils/htmlValidator.js +71 -72
  68. package/v2Components/HtmlEditor/utils/liquidTemplateSupport.js +134 -102
  69. package/v2Components/HtmlEditor/utils/properSyntaxHighlighting.js +23 -25
  70. package/v2Components/HtmlEditor/utils/validationAdapter.js +66 -41
  71. package/v2Components/HtmlEditor/utils/validationConstants.js +40 -0
  72. package/v2Components/MobilePushPreviewV2/index.js +32 -7
  73. package/v2Components/TemplatePreview/_templatePreview.scss +55 -24
  74. package/v2Components/TemplatePreview/index.js +47 -32
  75. package/v2Components/TemplatePreview/messages.js +4 -0
  76. package/v2Components/TestAndPreviewSlidebox/_testAndPreviewSlidebox.scss +1 -0
  77. package/v2Containers/App/constants.js +0 -5
  78. package/v2Containers/BeeEditor/index.js +172 -90
  79. package/v2Containers/BeePopupEditor/_beePopupEditor.scss +14 -0
  80. package/v2Containers/BeePopupEditor/constants.js +10 -0
  81. package/v2Containers/BeePopupEditor/index.js +194 -0
  82. package/v2Containers/BeePopupEditor/tests/index.test.js +627 -0
  83. package/v2Containers/Cap/tests/__snapshots__/index.test.js.snap +3 -4
  84. package/v2Containers/CreativesContainer/SlideBoxContent.js +129 -107
  85. package/v2Containers/CreativesContainer/SlideBoxFooter.js +163 -13
  86. package/v2Containers/CreativesContainer/SlideBoxHeader.js +2 -2
  87. package/v2Containers/CreativesContainer/constants.js +1 -3
  88. package/v2Containers/CreativesContainer/index.js +239 -214
  89. package/v2Containers/CreativesContainer/messages.js +8 -4
  90. package/v2Containers/CreativesContainer/tests/SlideBoxContent.test.js +0 -210
  91. package/v2Containers/CreativesContainer/tests/SlideBoxFooter.test.js +11 -2
  92. package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxContent.test.js.snap +38 -354
  93. package/v2Containers/CreativesContainer/tests/__snapshots__/index.test.js.snap +106 -0
  94. package/v2Containers/Email/actions.js +7 -0
  95. package/v2Containers/Email/constants.js +5 -1
  96. package/v2Containers/Email/index.js +241 -32
  97. package/v2Containers/Email/messages.js +32 -0
  98. package/v2Containers/Email/reducer.js +12 -1
  99. package/v2Containers/Email/sagas.js +61 -7
  100. package/v2Containers/Email/tests/__snapshots__/reducer.test.js.snap +2 -0
  101. package/v2Containers/Email/tests/reducer.test.js +46 -0
  102. package/v2Containers/Email/tests/sagas.test.js +320 -29
  103. package/v2Containers/EmailWrapper/components/EmailHTMLEditor.js +1285 -0
  104. package/v2Containers/EmailWrapper/components/EmailWrapperView.js +207 -19
  105. package/v2Containers/EmailWrapper/components/HTMLEditorTesting.js +40 -74
  106. package/v2Containers/EmailWrapper/components/__tests__/EmailHTMLEditor.test.js +1870 -0
  107. package/v2Containers/EmailWrapper/components/__tests__/EmailWrapperView.test.js +520 -0
  108. package/v2Containers/EmailWrapper/components/__tests__/HTMLEditorTesting.test.js +2 -67
  109. package/v2Containers/EmailWrapper/constants.js +2 -0
  110. package/v2Containers/EmailWrapper/hooks/useEmailWrapper.js +629 -77
  111. package/v2Containers/EmailWrapper/index.js +103 -23
  112. package/v2Containers/EmailWrapper/messages.js +61 -1
  113. package/v2Containers/EmailWrapper/tests/useEmailWrapper.edgeCases.test.js +643 -0
  114. package/v2Containers/EmailWrapper/tests/useEmailWrapper.test.js +594 -77
  115. package/v2Containers/InApp/__tests__/InAppHTMLEditor.test.js +376 -0
  116. package/v2Containers/InApp/__tests__/sagas.test.js +363 -0
  117. package/v2Containers/InApp/actions.js +7 -0
  118. package/v2Containers/InApp/constants.js +20 -4
  119. package/v2Containers/InApp/index.js +802 -359
  120. package/v2Containers/InApp/index.scss +4 -3
  121. package/v2Containers/InApp/messages.js +7 -3
  122. package/v2Containers/InApp/reducer.js +21 -3
  123. package/v2Containers/InApp/sagas.js +29 -9
  124. package/v2Containers/InApp/selectors.js +25 -5
  125. package/v2Containers/InApp/tests/index.test.js +154 -50
  126. package/v2Containers/InApp/tests/reducer.test.js +34 -0
  127. package/v2Containers/InApp/tests/sagas.test.js +61 -9
  128. package/v2Containers/InApp/tests/selectors.test.js +612 -0
  129. package/v2Containers/InAppWrapper/components/InAppWrapperView.js +151 -0
  130. package/v2Containers/InAppWrapper/components/__tests__/InAppWrapperView.test.js +267 -0
  131. package/v2Containers/InAppWrapper/components/inAppWrapperView.scss +23 -0
  132. package/v2Containers/InAppWrapper/constants.js +16 -0
  133. package/v2Containers/InAppWrapper/hooks/__tests__/useInAppWrapper.test.js +473 -0
  134. package/v2Containers/InAppWrapper/hooks/useInAppWrapper.js +198 -0
  135. package/v2Containers/InAppWrapper/index.js +148 -0
  136. package/v2Containers/InAppWrapper/messages.js +49 -0
  137. package/v2Containers/InappAdvance/index.js +1099 -0
  138. package/v2Containers/InappAdvance/index.scss +10 -0
  139. package/v2Containers/InappAdvance/tests/index.test.js +448 -0
  140. package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/content.test.js.snap +12 -12
  141. package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/index.test.js.snap +8 -8
  142. package/v2Containers/Line/Container/Wrapper/tests/__snapshots__/index.test.js.snap +77 -100
  143. package/v2Containers/Line/Container/tests/__snapshots__/index.test.js.snap +63 -72
  144. package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +186 -232
  145. package/v2Containers/SmsTrai/Create/tests/__snapshots__/index.test.js.snap +12 -16
  146. package/v2Containers/SmsTrai/Edit/tests/__snapshots__/index.test.js.snap +40 -48
  147. package/v2Containers/TagList/index.js +62 -19
  148. package/v2Containers/Templates/ChannelTypeIllustration.js +1 -13
  149. package/v2Containers/Templates/_templates.scss +56 -202
  150. package/v2Containers/Templates/actions.js +1 -2
  151. package/v2Containers/Templates/constants.js +0 -1
  152. package/v2Containers/Templates/index.js +123 -278
  153. package/v2Containers/Templates/messages.js +4 -24
  154. package/v2Containers/Templates/reducer.js +0 -4
  155. package/v2Containers/Templates/tests/index.test.js +0 -10
  156. package/v2Containers/TemplatesV2/index.js +7 -15
  157. package/v2Containers/TemplatesV2/messages.js +0 -4
  158. package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +520 -648
  159. package/utils/imageUrlUpload.js +0 -141
  160. package/v2Components/CapImageUrlUpload/constants.js +0 -26
  161. package/v2Components/CapImageUrlUpload/index.js +0 -365
  162. package/v2Components/CapImageUrlUpload/index.scss +0 -35
  163. package/v2Components/CapImageUrlUpload/messages.js +0 -47
  164. package/v2Components/HtmlEditor/components/ValidationErrorDisplay/__tests__/index.test.js +0 -152
  165. package/v2Containers/EmailWrapper/tests/EmailWrapperView.test.js +0 -214
  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
@@ -17,18 +17,17 @@ import {
17
17
  CapImage,
18
18
  CapError,
19
19
  } from '@capillarytech/cap-ui-library';
20
- import { injectIntl, FormattedMessage, intlShape } from 'react-intl';
20
+ import { injectIntl, FormattedMessage, intlShape} from 'react-intl';
21
21
  import { isEmpty, get } from 'lodash';
22
22
  import './index.scss';
23
23
  import Gallery from '../../v2Containers/Assets/Gallery';
24
24
  import { MAX_SUPPORTED_IMAGE_SIZE } from './constants';
25
25
  import {
26
- FACEBOOK, INAPP, RCS, WHATSAPP, VIBER, WEBPUSH, WEBPUSH_BRAND_ICON
26
+ FACEBOOK, INAPP, RCS, WHATSAPP, VIBER,
27
27
  } from "../../v2Containers/CreativesContainer/constants";
28
28
 
29
29
  import messages from './messages';
30
30
  import { MOBILEPUSH } from '../CapVideoUpload/constants';
31
- import { CAP_SPACE_16 } from '@capillarytech/cap-ui-library/styled/variables';
32
31
  function CapImageUpload(props) {
33
32
  const {
34
33
  intl,
@@ -51,8 +50,6 @@ function CapImageUpload(props) {
51
50
  channelSpecificStyle,
52
51
  showReUploadButton = true,
53
52
  disableAutoRestore = false, // New prop to disable automatic restoration
54
- recommendedDimensions, // Array of {width, height} objects for recommended dimensions
55
- disabled = false,
56
53
  } = props;
57
54
  const {
58
55
  formatMessage,
@@ -75,7 +72,7 @@ function CapImageUpload(props) {
75
72
  const [isImageError, updateImageErrorMessage] = useState(false);
76
73
  const [isDrawerRequired, updateDrawerRequirement] = useState(false);
77
74
 
78
- const { CapHeadingSpan } = CapHeading;
75
+ const {CapHeadingSpan} = CapHeading;
79
76
  const ImageComponent = useCallback(
80
77
  () => (
81
78
  <>
@@ -94,7 +91,7 @@ function CapImageUpload(props) {
94
91
 
95
92
  const WithLabel = LabelHOC(ImageComponent);
96
93
 
97
- const uploadImages = useCallback((e, { files }) => {
94
+ const uploadImages = useCallback((e, {files}) => {
98
95
  if (e) {
99
96
  e.preventDefault();
100
97
  }
@@ -112,13 +109,13 @@ function CapImageUpload(props) {
112
109
  height: img.height,
113
110
  error: file && (file.size / (1e+6) > 5), // Checking if file exists and its size is greater than 5MB (5 * 10^6 bytes)
114
111
  };
115
- submitAction({ file, type: 'image', fileParams }, incorrectFile);
112
+ submitAction({file, type: 'image', fileParams}, incorrectFile);
116
113
  };
117
114
  img.onerror = () => {
118
115
  const fileParams = {
119
116
  error: true,
120
117
  };
121
- submitAction({ fileParams }, incorrectFile);
118
+ submitAction({fileParams}, incorrectFile);
122
119
  };
123
120
  if (e) {
124
121
  const event = e;
@@ -126,7 +123,7 @@ function CapImageUpload(props) {
126
123
  }
127
124
  }, []);
128
125
 
129
- const rcsValidation = useCallback((incorrectFile, data, size, height, width, error) => {
126
+ const rcsValidation = useCallback((incorrectFile, data, size, height, width, error) => {
130
127
  if (incorrectFile || size < minImgSize || size > imgSize || height !== imgHeight || width !== imgWidth || error) {
131
128
  updateImageErrorMessage(formatMessage(messages.imageErrorDesc));
132
129
  } else {
@@ -149,19 +146,6 @@ function CapImageUpload(props) {
149
146
  const { height, width, error } = fileParams || {};
150
147
  if (channel === RCS) {
151
148
  rcsValidation(incorrectFile, data, size, height, width, error);
152
- } else if ([WEBPUSH, WEBPUSH_BRAND_ICON].includes(channel)) {
153
- // For WEBPUSH, only validate file extension, size, and format - no dimension validation
154
- if (incorrectFile || size > imgSize || error) {
155
- updateImageErrorMessage(formatMessage(messages.imageErrorDesc));
156
- } else {
157
- updateImageErrorMessage('');
158
- uploadAsset(
159
- data.file,
160
- data.type,
161
- data.fileParams,
162
- index,
163
- );
164
- }
165
149
  } else if (incorrectFile || size > imgSize || height > imgHeight || width > imgWidth || error) {
166
150
  updateImageErrorMessage(formatMessage(messages.imageErrorDesc));
167
151
  } else {
@@ -176,7 +160,7 @@ function CapImageUpload(props) {
176
160
  }, [isImageError]);
177
161
 
178
162
  const capUploaderCustomRequest = useCallback((uploadData) => {
179
- uploadImages(undefined, { files: [uploadData.file] });
163
+ uploadImages(undefined, {files: [uploadData.file]});
180
164
  }, [uploadImages]);
181
165
 
182
166
  const setDrawerVisibility = useCallback((drawervisibleFlag) => updateDrawerRequirement(drawervisibleFlag), [isDrawerRequired]);
@@ -197,27 +181,19 @@ function CapImageUpload(props) {
197
181
  secure_file_path: image, width, height, file_size: size,
198
182
  } = get(imageTemplate, 'metaInfo', {});
199
183
  updateDrawerRequirement(false);
200
- // For WEBPUSH, skip dimension validation - only check extension, size
201
- if ([WEBPUSH, WEBPUSH_BRAND_ICON].includes(channel)) {
202
- if (!allowedExtensionsRegex.test(image) || size > imgSize) {
203
- updateImageErrorMessage(formatMessage(messages.imageErrorDesc));
204
- } else {
205
- updateImageErrorMessage('');
206
- updateImageSrc(image);
207
- }
208
- } else if (!allowedExtensionsRegex.test(image) || height > imgHeight || width > imgWidth || size > imgSize) {
184
+ if (!allowedExtensionsRegex.test(image) || height > imgHeight || width > imgWidth || size > imgSize ) {
209
185
  updateImageErrorMessage(formatMessage(messages.imageErrorDesc));
210
186
  } else {
211
187
  updateImageErrorMessage('');
212
188
  updateImageSrc(image);
213
189
  }
214
- }, [isImageError, isDrawerRequired, channel, allowedExtensionsRegex, imgSize, formatMessage]);
190
+ }, [isImageError, isDrawerRequired]);
215
191
 
216
192
  const getGalleryDrawerContent = useCallback(() => {
217
193
  const locationGallery = {
218
194
  pathname: `/assets`,
219
195
  search: '',
220
- query: !isFullMode ? { type: 'embedded', module: 'library' } : {},
196
+ query: !isFullMode ? {type: 'embedded', module: 'library'} : {},
221
197
  };
222
198
  return (
223
199
  <>
@@ -254,7 +230,6 @@ function CapImageUpload(props) {
254
230
  customRequest={capUploaderCustomRequest}
255
231
  className="form-builder-dragger grey-background"
256
232
  showUploadList={!isImageError}
257
- disabled={disabled}
258
233
  >
259
234
  <CapHeading className="dragger-title" type="h7">
260
235
  <FormattedMessage {...messages.dragAndDrop} />
@@ -262,7 +237,7 @@ function CapImageUpload(props) {
262
237
  <CapHeading className="dragger-or" type="label6">
263
238
  <FormattedMessage {...messages.or} />
264
239
  </CapHeading>
265
- <CapButton className="dragger-button upload-image" type="secondary" disabled={disabled} tabIndex={disabled ? -1 : undefined}>
240
+ <CapButton className="dragger-button upload-image" type="secondary">
266
241
  <FormattedMessage {...messages.uploadComputer} />
267
242
  </CapButton>
268
243
  {channel !== WHATSAPP && (
@@ -270,8 +245,6 @@ function CapImageUpload(props) {
270
245
  className="dragger-button gallery-select"
271
246
  type="secondary"
272
247
  onClick={onGalleryClick}
273
- disabled={disabled}
274
- tabIndex={disabled ? -1 : undefined}
275
248
  >
276
249
  <FormattedMessage {...messages.uploadGallery} />
277
250
  </CapButton>
@@ -289,15 +262,13 @@ function CapImageUpload(props) {
289
262
  className="dragger-button re-upload"
290
263
  type="flat"
291
264
  onClick={onReUpload}
292
- style={channelSpecificStyle ? { marginTop: `-${CAP_SPACE_16}` } : {}}
293
- disabled={disabled}
294
- tabIndex={disabled ? -1 : undefined}
265
+ style={channelSpecificStyle ? { marginTop: '-16px'} : {}}
295
266
  >
296
267
  <FormattedMessage {...messages.imageReUpload} />
297
268
  </CapButton>
298
269
  );
299
270
  }
300
- }, [isImageError, imageSrc, disabled, showReUploadButton, channel, channelSpecificStyle, capUploaderCustomRequest, onGalleryClick, onReUpload]);
271
+ }, [isImageError, imageSrc]);
301
272
 
302
273
  return (
303
274
  <div style={style} className="cap-custom-image-upload">
@@ -314,8 +285,6 @@ function CapImageUpload(props) {
314
285
  type="file"
315
286
  onChange={(e) => uploadImages(e, { files: e.target.files })}
316
287
  accept={supportedExtensions || "image/*"}
317
- disabled={disabled}
318
- tabIndex={disabled ? -1 : undefined}
319
288
  />
320
289
  {getImageSection()}
321
290
  <CapDrawer
@@ -336,18 +305,7 @@ function CapImageUpload(props) {
336
305
  )}
337
306
  {![WHATSAPP, INAPP].includes(channel) && (
338
307
  <CapHeadingSpan type="label2" className="image-dimension">
339
- {[WEBPUSH, WEBPUSH_BRAND_ICON].includes(channel) && recommendedDimensions?.length ? (
340
- <FormattedMessage
341
- {...messages.recommendedDimensions}
342
- values={{
343
- dimensions: recommendedDimensions
344
- .map((dim) => `${dim.width} x ${dim.height}px`)
345
- .join(', '),
346
- }}
347
- />
348
- ) : (
349
- <FormattedMessage {...messages.imageDimenstionDescription} values={{ width: imgWidth, height: imgHeight }} />
350
- )}
308
+ <FormattedMessage {...messages.imageDimenstionDescription} values={{ width: imgWidth, height: imgHeight }} />
351
309
  </CapHeadingSpan>
352
310
  )}
353
311
  {channel === FACEBOOK && (
@@ -370,7 +328,7 @@ function CapImageUpload(props) {
370
328
  getImageSizeLabel()
371
329
  )
372
330
  )}
373
- {[VIBER, INAPP, MOBILEPUSH, WEBPUSH, WEBPUSH_BRAND_ICON].includes(channel) && getImageSizeLabel()}
331
+ {[VIBER, INAPP, MOBILEPUSH].includes(channel) && getImageSizeLabel()}
374
332
  <CapHeadingSpan type="label2" className="image-format">
375
333
  {channel === INAPP ? <FormattedMessage {...messages.format2} /> : <FormattedMessage {...messages.format} />}
376
334
  </CapHeadingSpan>
@@ -399,13 +357,6 @@ CapImageUpload.propTypes = {
399
357
  channel: PropTypes.string,
400
358
  channelSpecificStyle: PropTypes.bool,
401
359
  disableAutoRestore: PropTypes.bool,
402
- recommendedDimensions: PropTypes.arrayOf(
403
- PropTypes.shape({
404
- width: PropTypes.number.isRequired,
405
- height: PropTypes.number.isRequired,
406
- })
407
- ),
408
- disabled: PropTypes.bool,
409
360
  };
410
361
 
411
362
  export default injectIntl(CapImageUpload);
@@ -19,8 +19,5 @@ $classPrefix: cap-custom-image-upload;
19
19
  }
20
20
  .upload-image-error{
21
21
  margin-top: $CAP_SPACE_04;
22
- }
23
- .ant-upload-list-item{
24
- height: 1.65rem;
25
- }
22
+ }
26
23
  }
@@ -34,10 +34,6 @@ export default defineMessages({
34
34
  id: `${scope}.imageDimenstionDescription`,
35
35
  defaultMessage: 'Dimensions upto: {width}px x {height}px',
36
36
  },
37
- recommendedDimensions: {
38
- id: `${scope}.recommendedDimensions`,
39
- defaultMessage: 'Recommended dimensions: {dimensions}',
40
- },
41
37
  format: {
42
38
  id: `${scope}.format`,
43
39
  defaultMessage: 'Format: JPEG, JPG, PNG',
@@ -61,7 +57,7 @@ export default defineMessages({
61
57
  },
62
58
  channelImageSize: {
63
59
  id: `${scope}.channelImageSize`,
64
- defaultMessage: 'Size up to: {size}MB',
60
+ defaultMessage: 'Size upto: {size}MB',
65
61
  },
66
62
  RcschannelImageSize: {
67
63
  id: `${scope}.RcschannelImageSize`,
@@ -227,6 +227,10 @@ class CapTagList extends React.Component { // eslint-disable-line react/prefer-s
227
227
 
228
228
  togglePopoverVisibility = (visible) => {
229
229
  this.setState({visible});
230
+ // Call onVisibleChange callback if provided (for triggering API calls when popover opens)
231
+ if (this.props.onVisibleChange) {
232
+ this.props.onVisibleChange(visible);
233
+ }
230
234
  };
231
235
 
232
236
  renderDynamicTagFlow = () => {
@@ -468,7 +472,7 @@ class CapTagList extends React.Component { // eslint-disable-line react/prefer-s
468
472
  onVisibleChange={this.togglePopoverVisibility}
469
473
  content={contentSection}
470
474
  trigger="click"
471
- placement={channel === EMAIL.toUpperCase() ? "leftTop" : "rightTop"}
475
+ placement={this.props.popoverPlacement || (channel === EMAIL.toUpperCase() ? "leftTop" : "rightTop")}
472
476
  >
473
477
  <CapTooltip
474
478
  title={
@@ -535,6 +539,7 @@ CapTagList.propTypes = {
535
539
  channel: PropTypes.string,
536
540
  disabled: PropTypes.bool,
537
541
  fetchingSchemaError: PropTypes.bool,
542
+ popoverPlacement: PropTypes.string,
538
543
  };
539
544
 
540
545
  CapTagList.defaultValue = {
@@ -48,13 +48,14 @@ export const CapTagListWithInput = (props) => {
48
48
  showTagList = true,
49
49
  showInput = true,
50
50
  inputProps = {},
51
+ popoverPlacement,
51
52
  } = props;
52
53
 
53
54
  const { formatMessage } = intl;
54
55
 
55
56
  return (
56
57
  <CapColumn style={containerStyle}>
57
- <CapRow style={{display: 'flex', flexDirection: 'row'}}>
58
+ <CapRow align="middle" type="flex">
58
59
  {showHeading && headingText && (
59
60
  <CapHeading type={headingType} style={headingStyle}>
60
61
  {headingText}
@@ -76,6 +77,7 @@ export const CapTagListWithInput = (props) => {
76
77
  selectedOfferDetails={selectedOfferDetails}
77
78
  eventContextTags={eventContextTags}
78
79
  style={tagListStyle}
80
+ popoverPlacement={popoverPlacement}
79
81
  />
80
82
  )}
81
83
  </CapRow>
@@ -136,6 +138,7 @@ CapTagListWithInput.propTypes = {
136
138
  showHeading: PropTypes.bool,
137
139
  showTagList: PropTypes.bool,
138
140
  showInput: PropTypes.bool,
141
+ popoverPlacement: PropTypes.string,
139
142
  };
140
143
 
141
144
  CapTagListWithInput.defaultProps = {
@@ -164,6 +167,7 @@ CapTagListWithInput.defaultProps = {
164
167
  showTagList: true,
165
168
  showInput: true,
166
169
  inputProps: {},
170
+ popoverPlacement: undefined,
167
171
  };
168
172
 
169
173
  export default injectIntl(CapTagListWithInput);
@@ -5,6 +5,6 @@ const prefix = 'creatives.componentsV2.CapTagListWithInput';
5
5
  export default defineMessages({
6
6
  addLabels: {
7
7
  id: `${prefix}.addLabels`,
8
- defaultMessage: 'Add labels',
8
+ defaultMessage: 'Add label',
9
9
  },
10
10
  });
@@ -4,6 +4,11 @@ import '@testing-library/jest-dom';
4
4
  import { render, screen, fireEvent } from '../../../utils/test-utils';
5
5
  import { CapWhatsappCTA } from '../index';
6
6
 
7
+ // Mock the missing reducer
8
+ jest.mock('@capillarytech/cap-ui-library/CapCollapsibleLeftNavigation/reducer', () => {
9
+ return (state = {}) => state;
10
+ }, { virtual: true });
11
+
7
12
  const updateHandler = jest.fn();
8
13
  const deleteHandler = jest.fn();
9
14
  const initializeComponent = (