@capillarytech/creatives-library 8.0.242-alpha.10 → 8.0.242-alpha.11

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 (256) hide show
  1. package/assets/Android.png +0 -0
  2. package/assets/iOS.png +0 -0
  3. package/config/app.js +1 -1
  4. package/constants/unified.js +2 -2
  5. package/initialReducer.js +0 -2
  6. package/package.json +1 -1
  7. package/services/api.js +5 -10
  8. package/services/tests/api.test.js +0 -18
  9. package/translations/en.json +4 -3
  10. package/utils/common.js +6 -5
  11. package/utils/commonUtils.js +1 -14
  12. package/utils/imageUrlUpload.js +141 -0
  13. package/utils/tests/commonUtil.test.js +0 -224
  14. package/utils/transformTemplateConfig.js +10 -0
  15. package/v2Components/CapDeviceContent/index.js +56 -61
  16. package/v2Components/CapImageUpload/constants.js +2 -0
  17. package/v2Components/CapImageUpload/index.js +65 -16
  18. package/v2Components/CapImageUpload/index.scss +4 -1
  19. package/v2Components/CapImageUpload/messages.js +5 -1
  20. package/v2Components/CapImageUrlUpload/constants.js +26 -0
  21. package/v2Components/CapImageUrlUpload/index.js +365 -0
  22. package/v2Components/CapImageUrlUpload/index.scss +35 -0
  23. package/v2Components/CapImageUrlUpload/messages.js +47 -0
  24. package/v2Components/CapTagList/index.js +1 -6
  25. package/v2Components/CapTagListWithInput/index.js +1 -5
  26. package/v2Components/CapTagListWithInput/messages.js +1 -1
  27. package/v2Components/CapWhatsappCTA/tests/index.test.js +0 -5
  28. package/v2Components/ErrorInfoNote/index.js +72 -412
  29. package/v2Components/ErrorInfoNote/messages.js +0 -22
  30. package/v2Components/ErrorInfoNote/style.scss +2 -279
  31. package/v2Components/HtmlEditor/HTMLEditor.js +91 -220
  32. package/v2Components/HtmlEditor/__tests__/HTMLEditor.test.js +133 -1132
  33. package/v2Components/HtmlEditor/__tests__/index.lazy.test.js +12 -17
  34. package/v2Components/HtmlEditor/_htmlEditor.scss +45 -107
  35. package/v2Components/HtmlEditor/_index.lazy.scss +1 -1
  36. package/v2Components/HtmlEditor/components/CodeEditorPane/_codeEditorPane.scss +101 -13
  37. package/v2Components/HtmlEditor/components/CodeEditorPane/index.js +139 -148
  38. package/v2Components/HtmlEditor/components/DeviceToggle/_deviceToggle.scss +1 -2
  39. package/v2Components/HtmlEditor/components/DeviceToggle/index.js +3 -3
  40. package/v2Components/HtmlEditor/components/EditorToolbar/_editorToolbar.scss +0 -9
  41. package/v2Components/HtmlEditor/components/EditorToolbar/index.js +1 -1
  42. package/v2Components/HtmlEditor/components/FullscreenModal/_fullscreenModal.scss +0 -22
  43. package/v2Components/HtmlEditor/components/InAppPreviewPane/DeviceFrame.js +7 -4
  44. package/v2Components/HtmlEditor/components/InAppPreviewPane/__tests__/DeviceFrame.test.js +45 -35
  45. package/v2Components/HtmlEditor/components/InAppPreviewPane/_inAppPreviewPane.scss +3 -1
  46. package/v2Components/HtmlEditor/components/InAppPreviewPane/constants.js +33 -33
  47. package/v2Components/HtmlEditor/components/InAppPreviewPane/index.js +6 -7
  48. package/v2Components/HtmlEditor/components/PreviewPane/_previewPane.scss +6 -3
  49. package/v2Components/HtmlEditor/components/PreviewPane/index.js +11 -10
  50. package/v2Components/HtmlEditor/components/SplitContainer/_splitContainer.scss +1 -1
  51. package/v2Components/HtmlEditor/components/ValidationErrorDisplay/__tests__/index.test.js +72 -70
  52. package/v2Components/HtmlEditor/components/ValidationErrorDisplay/index.js +31 -49
  53. package/v2Components/HtmlEditor/constants.js +20 -29
  54. package/v2Components/HtmlEditor/hooks/__tests__/useInAppContent.test.js +16 -373
  55. package/v2Components/HtmlEditor/hooks/useEditorContent.js +2 -5
  56. package/v2Components/HtmlEditor/hooks/useInAppContent.js +146 -88
  57. package/v2Components/HtmlEditor/index.js +1 -1
  58. package/v2Components/HtmlEditor/messages.js +85 -95
  59. package/v2Components/HtmlEditor/utils/liquidTemplateSupport.js +101 -99
  60. package/v2Components/HtmlEditor/utils/properSyntaxHighlighting.js +25 -23
  61. package/v2Components/HtmlEditor/utils/validationAdapter.js +41 -34
  62. package/v2Components/MobilePushPreviewV2/index.js +7 -32
  63. package/v2Components/TemplatePreview/_templatePreview.scss +24 -44
  64. package/v2Components/TemplatePreview/index.js +32 -47
  65. package/v2Components/TemplatePreview/messages.js +0 -4
  66. package/v2Components/TestAndPreviewSlidebox/index.js +25 -31
  67. package/v2Containers/App/constants.js +5 -0
  68. package/v2Containers/BeeEditor/index.js +80 -82
  69. package/v2Containers/Cap/tests/__snapshots__/index.test.js.snap +4 -3
  70. package/v2Containers/CreativesContainer/SlideBoxContent.js +118 -148
  71. package/v2Containers/CreativesContainer/SlideBoxFooter.js +3 -9
  72. package/v2Containers/CreativesContainer/SlideBoxHeader.js +2 -2
  73. package/v2Containers/CreativesContainer/constants.js +2 -1
  74. package/v2Containers/CreativesContainer/index.js +41 -173
  75. package/v2Containers/CreativesContainer/messages.js +4 -4
  76. package/v2Containers/CreativesContainer/tests/SlideBoxContent.test.js +210 -0
  77. package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxContent.test.js.snap +354 -38
  78. package/v2Containers/CreativesContainer/tests/__snapshots__/index.test.js.snap +0 -36
  79. package/v2Containers/Email/actions.js +0 -7
  80. package/v2Containers/Email/constants.js +1 -5
  81. package/v2Containers/Email/index.js +0 -13
  82. package/v2Containers/Email/messages.js +0 -32
  83. package/v2Containers/Email/reducer.js +1 -12
  84. package/v2Containers/Email/sagas.js +6 -41
  85. package/v2Containers/Email/tests/__snapshots__/reducer.test.js.snap +0 -2
  86. package/v2Containers/EmailWrapper/components/EmailWrapperView.js +7 -193
  87. package/v2Containers/EmailWrapper/components/HTMLEditorTesting.js +74 -40
  88. package/v2Containers/EmailWrapper/components/__tests__/HTMLEditorTesting.test.js +67 -2
  89. package/v2Containers/EmailWrapper/constants.js +0 -2
  90. package/v2Containers/EmailWrapper/hooks/useEmailWrapper.js +67 -436
  91. package/v2Containers/EmailWrapper/index.js +23 -99
  92. package/v2Containers/EmailWrapper/messages.js +1 -61
  93. package/v2Containers/EmailWrapper/tests/EmailWrapperView.test.js +214 -0
  94. package/v2Containers/EmailWrapper/tests/useEmailWrapper.test.js +77 -111
  95. package/v2Containers/InApp/actions.js +0 -7
  96. package/v2Containers/InApp/constants.js +4 -20
  97. package/v2Containers/InApp/index.js +357 -801
  98. package/v2Containers/InApp/index.scss +3 -4
  99. package/v2Containers/InApp/messages.js +3 -7
  100. package/v2Containers/InApp/reducer.js +3 -21
  101. package/v2Containers/InApp/sagas.js +9 -29
  102. package/v2Containers/InApp/selectors.js +5 -25
  103. package/v2Containers/InApp/tests/index.test.js +50 -154
  104. package/v2Containers/InApp/tests/reducer.test.js +0 -34
  105. package/v2Containers/InApp/tests/sagas.test.js +9 -61
  106. package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/content.test.js.snap +12 -12
  107. package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/index.test.js.snap +8 -8
  108. package/v2Containers/Line/Container/Wrapper/tests/__snapshots__/index.test.js.snap +100 -77
  109. package/v2Containers/Line/Container/tests/__snapshots__/index.test.js.snap +72 -63
  110. package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +184 -150
  111. package/v2Containers/SmsTrai/Create/tests/__snapshots__/index.test.js.snap +16 -12
  112. package/v2Containers/SmsTrai/Edit/tests/__snapshots__/index.test.js.snap +32 -28
  113. package/v2Containers/TagList/index.js +1 -67
  114. package/v2Containers/Templates/ChannelTypeIllustration.js +13 -1
  115. package/v2Containers/Templates/_templates.scss +202 -56
  116. package/v2Containers/Templates/actions.js +2 -1
  117. package/v2Containers/Templates/constants.js +1 -0
  118. package/v2Containers/Templates/index.js +278 -128
  119. package/v2Containers/Templates/messages.js +24 -4
  120. package/v2Containers/Templates/reducer.js +2 -0
  121. package/v2Containers/Templates/tests/index.test.js +10 -0
  122. package/v2Containers/TemplatesV2/index.js +8 -1
  123. package/v2Containers/TemplatesV2/messages.js +4 -0
  124. package/v2Containers/WebPush/Create/components/BrandIconSection.js +108 -0
  125. package/v2Containers/WebPush/Create/components/ButtonForm.js +172 -0
  126. package/v2Containers/WebPush/Create/components/ButtonItem.js +101 -0
  127. package/v2Containers/WebPush/Create/components/ButtonList.js +145 -0
  128. package/v2Containers/WebPush/Create/components/ButtonsLinksSection.js +164 -0
  129. package/v2Containers/WebPush/Create/components/ButtonsLinksSection.test.js +463 -0
  130. package/v2Containers/WebPush/Create/components/FormActions.js +54 -0
  131. package/v2Containers/WebPush/Create/components/FormActions.test.js +163 -0
  132. package/v2Containers/WebPush/Create/components/MediaSection.js +142 -0
  133. package/v2Containers/WebPush/Create/components/MediaSection.test.js +341 -0
  134. package/v2Containers/WebPush/Create/components/MessageSection.js +103 -0
  135. package/v2Containers/WebPush/Create/components/MessageSection.test.js +268 -0
  136. package/v2Containers/WebPush/Create/components/NotificationTitleSection.js +87 -0
  137. package/v2Containers/WebPush/Create/components/NotificationTitleSection.test.js +210 -0
  138. package/v2Containers/WebPush/Create/components/TemplateNameSection.js +54 -0
  139. package/v2Containers/WebPush/Create/components/TemplateNameSection.test.js +143 -0
  140. package/v2Containers/WebPush/Create/components/__snapshots__/ButtonsLinksSection.test.js.snap +86 -0
  141. package/v2Containers/WebPush/Create/components/__snapshots__/FormActions.test.js.snap +16 -0
  142. package/v2Containers/WebPush/Create/components/__snapshots__/MediaSection.test.js.snap +41 -0
  143. package/v2Containers/WebPush/Create/components/__snapshots__/MessageSection.test.js.snap +54 -0
  144. package/v2Containers/WebPush/Create/components/__snapshots__/NotificationTitleSection.test.js.snap +37 -0
  145. package/v2Containers/WebPush/Create/components/__snapshots__/TemplateNameSection.test.js.snap +21 -0
  146. package/v2Containers/WebPush/Create/components/_buttons.scss +246 -0
  147. package/v2Containers/WebPush/Create/components/tests/ButtonForm.test.js +554 -0
  148. package/v2Containers/WebPush/Create/components/tests/ButtonItem.test.js +607 -0
  149. package/v2Containers/WebPush/Create/components/tests/ButtonList.test.js +633 -0
  150. package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonForm.test.js.snap +666 -0
  151. package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonItem.test.js.snap +74 -0
  152. package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonList.test.js.snap +78 -0
  153. package/v2Containers/WebPush/Create/hooks/useButtonManagement.js +138 -0
  154. package/v2Containers/WebPush/Create/hooks/useButtonManagement.test.js +406 -0
  155. package/v2Containers/WebPush/Create/hooks/useCharacterCount.js +30 -0
  156. package/v2Containers/WebPush/Create/hooks/useCharacterCount.test.js +151 -0
  157. package/v2Containers/WebPush/Create/hooks/useImageUpload.js +104 -0
  158. package/v2Containers/WebPush/Create/hooks/useImageUpload.test.js +538 -0
  159. package/v2Containers/WebPush/Create/hooks/useTagManagement.js +122 -0
  160. package/v2Containers/WebPush/Create/hooks/useTagManagement.test.js +633 -0
  161. package/v2Containers/WebPush/Create/index.js +1056 -0
  162. package/v2Containers/WebPush/Create/index.scss +134 -0
  163. package/v2Containers/WebPush/Create/messages.js +203 -0
  164. package/v2Containers/WebPush/Create/preview/DevicePreviewContent.js +228 -0
  165. package/v2Containers/WebPush/Create/preview/NotificationContainer.js +294 -0
  166. package/v2Containers/WebPush/Create/preview/PreviewContent.js +90 -0
  167. package/v2Containers/WebPush/Create/preview/PreviewControls.js +305 -0
  168. package/v2Containers/WebPush/Create/preview/PreviewDisclaimer.js +23 -0
  169. package/v2Containers/WebPush/Create/preview/WebPushPreview.js +150 -0
  170. package/v2Containers/WebPush/Create/preview/assets/Light.svg +53 -0
  171. package/v2Containers/WebPush/Create/preview/assets/Top.svg +5 -0
  172. package/v2Containers/WebPush/Create/preview/assets/android-arrow-down.svg +9 -0
  173. package/v2Containers/WebPush/Create/preview/assets/android-arrow-up.svg +9 -0
  174. package/v2Containers/WebPush/Create/preview/assets/chrome-icon.png +0 -0
  175. package/v2Containers/WebPush/Create/preview/assets/edge-icon.png +0 -0
  176. package/v2Containers/WebPush/Create/preview/assets/firefox-icon.svg +106 -0
  177. package/v2Containers/WebPush/Create/preview/assets/iOS.svg +26 -0
  178. package/v2Containers/WebPush/Create/preview/assets/macos-arrow-down-icon.svg +9 -0
  179. package/v2Containers/WebPush/Create/preview/assets/macos-triple-dot-icon.svg +9 -0
  180. package/v2Containers/WebPush/Create/preview/assets/opera-icon.svg +18 -0
  181. package/v2Containers/WebPush/Create/preview/assets/safari-icon.svg +29 -0
  182. package/v2Containers/WebPush/Create/preview/assets/windows-close-icon.svg +9 -0
  183. package/v2Containers/WebPush/Create/preview/assets/windows-triple-dot-icon.svg +9 -0
  184. package/v2Containers/WebPush/Create/preview/components/AndroidMobileChromeHeader.js +47 -0
  185. package/v2Containers/WebPush/Create/preview/components/AndroidMobileExpanded.js +141 -0
  186. package/v2Containers/WebPush/Create/preview/components/IOSHeader.js +45 -0
  187. package/v2Containers/WebPush/Create/preview/components/NotificationExpandedContent.js +68 -0
  188. package/v2Containers/WebPush/Create/preview/components/NotificationHeader.js +61 -0
  189. package/v2Containers/WebPush/Create/preview/components/WindowsChromeExpanded.js +99 -0
  190. package/v2Containers/WebPush/Create/preview/components/tests/AndroidMobileExpanded.test.js +733 -0
  191. package/v2Containers/WebPush/Create/preview/components/tests/WindowsChromeExpanded.test.js +571 -0
  192. package/v2Containers/WebPush/Create/preview/components/tests/__snapshots__/AndroidMobileExpanded.test.js.snap +81 -0
  193. package/v2Containers/WebPush/Create/preview/components/tests/__snapshots__/WindowsChromeExpanded.test.js.snap +81 -0
  194. package/v2Containers/WebPush/Create/preview/config/notificationMappings.js +50 -0
  195. package/v2Containers/WebPush/Create/preview/constants.js +637 -0
  196. package/v2Containers/WebPush/Create/preview/notification-container.scss +79 -0
  197. package/v2Containers/WebPush/Create/preview/preview.scss +351 -0
  198. package/v2Containers/WebPush/Create/preview/styles/_android-mobile-chrome.scss +370 -0
  199. package/v2Containers/WebPush/Create/preview/styles/_android-mobile-edge.scss +12 -0
  200. package/v2Containers/WebPush/Create/preview/styles/_android-mobile-firefox.scss +12 -0
  201. package/v2Containers/WebPush/Create/preview/styles/_android-mobile-opera.scss +12 -0
  202. package/v2Containers/WebPush/Create/preview/styles/_android-tablet-chrome.scss +47 -0
  203. package/v2Containers/WebPush/Create/preview/styles/_android-tablet-edge.scss +11 -0
  204. package/v2Containers/WebPush/Create/preview/styles/_android-tablet-firefox.scss +11 -0
  205. package/v2Containers/WebPush/Create/preview/styles/_android-tablet-opera.scss +11 -0
  206. package/v2Containers/WebPush/Create/preview/styles/_base.scss +207 -0
  207. package/v2Containers/WebPush/Create/preview/styles/_ios.scss +153 -0
  208. package/v2Containers/WebPush/Create/preview/styles/_ipados.scss +107 -0
  209. package/v2Containers/WebPush/Create/preview/styles/_macos-chrome.scss +101 -0
  210. package/v2Containers/WebPush/Create/preview/styles/_windows-chrome.scss +229 -0
  211. package/v2Containers/WebPush/Create/preview/tests/DevicePreviewContent.test.js +909 -0
  212. package/v2Containers/WebPush/Create/preview/tests/NotificationContainer.test.js +1081 -0
  213. package/v2Containers/WebPush/Create/preview/tests/PreviewControls.test.js +723 -0
  214. package/v2Containers/WebPush/Create/preview/tests/WebPushPreview.test.js +943 -0
  215. package/v2Containers/WebPush/Create/preview/tests/__snapshots__/DevicePreviewContent.test.js.snap +131 -0
  216. package/v2Containers/WebPush/Create/preview/tests/__snapshots__/NotificationContainer.test.js.snap +112 -0
  217. package/v2Containers/WebPush/Create/preview/tests/__snapshots__/PreviewControls.test.js.snap +144 -0
  218. package/v2Containers/WebPush/Create/preview/tests/__snapshots__/WebPushPreview.test.js.snap +129 -0
  219. package/v2Containers/WebPush/Create/utils/payloadBuilder.js +94 -0
  220. package/v2Containers/WebPush/Create/utils/payloadBuilder.test.js +390 -0
  221. package/v2Containers/WebPush/Create/utils/previewUtils.js +89 -0
  222. package/v2Containers/WebPush/Create/utils/urlValidation.js +115 -0
  223. package/v2Containers/WebPush/Create/utils/urlValidation.test.js +449 -0
  224. package/v2Containers/WebPush/Create/utils/validation.js +75 -0
  225. package/v2Containers/WebPush/Create/utils/validation.test.js +283 -0
  226. package/v2Containers/WebPush/actions.js +60 -0
  227. package/v2Containers/WebPush/constants.js +128 -0
  228. package/v2Containers/WebPush/index.js +2 -0
  229. package/v2Containers/WebPush/reducer.js +104 -0
  230. package/v2Containers/WebPush/sagas.js +119 -0
  231. package/v2Containers/WebPush/selectors.js +65 -0
  232. package/v2Containers/WebPush/tests/reducer.test.js +863 -0
  233. package/v2Containers/WebPush/tests/sagas.test.js +566 -0
  234. package/v2Containers/WebPush/tests/selectors.test.js +843 -0
  235. package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +528 -431
  236. package/v2Components/HtmlEditor/components/ValidationTabs/_validationTabs.scss +0 -254
  237. package/v2Components/HtmlEditor/components/ValidationTabs/index.js +0 -362
  238. package/v2Components/HtmlEditor/components/ValidationTabs/messages.js +0 -51
  239. package/v2Containers/BeePopupEditor/constants.js +0 -10
  240. package/v2Containers/BeePopupEditor/index.js +0 -193
  241. package/v2Containers/BeePopupEditor/tests/index.test.js +0 -627
  242. package/v2Containers/EmailWrapper/components/EmailHTMLEditor.js +0 -1046
  243. package/v2Containers/InApp/__tests__/InAppHTMLEditor.test.js +0 -376
  244. package/v2Containers/InApp/__tests__/sagas.test.js +0 -363
  245. package/v2Containers/InApp/tests/selectors.test.js +0 -612
  246. package/v2Containers/InAppWrapper/components/InAppWrapperView.js +0 -162
  247. package/v2Containers/InAppWrapper/components/__tests__/InAppWrapperView.test.js +0 -267
  248. package/v2Containers/InAppWrapper/components/inAppWrapperView.scss +0 -9
  249. package/v2Containers/InAppWrapper/constants.js +0 -16
  250. package/v2Containers/InAppWrapper/hooks/__tests__/useInAppWrapper.test.js +0 -473
  251. package/v2Containers/InAppWrapper/hooks/useInAppWrapper.js +0 -198
  252. package/v2Containers/InAppWrapper/index.js +0 -148
  253. package/v2Containers/InAppWrapper/messages.js +0 -49
  254. package/v2Containers/InappAdvance/index.js +0 -1099
  255. package/v2Containers/InappAdvance/index.scss +0 -10
  256. package/v2Containers/InappAdvance/tests/index.test.js +0 -448
@@ -0,0 +1,131 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`DevicePreviewContent Basic Rendering should render correctly with default props 1`] = `
4
+ <CapRow>
5
+ <CapColumn
6
+ span={24}
7
+ >
8
+ <MockPreviewControls
9
+ browserOptions={
10
+ Array [
11
+ Object {
12
+ "label": "Chrome",
13
+ "value": "Chrome",
14
+ },
15
+ Object {
16
+ "label": "Firefox",
17
+ "value": "Firefox",
18
+ },
19
+ Object {
20
+ "label": "Edge",
21
+ "value": "Edge",
22
+ },
23
+ Object {
24
+ "label": "Safari",
25
+ "value": "Safari",
26
+ },
27
+ Object {
28
+ "label": "Opera",
29
+ "value": "Opera",
30
+ },
31
+ ]
32
+ }
33
+ layoutMode="compact"
34
+ onBrowserChange={[Function]}
35
+ onOSChange={[Function]}
36
+ onStateChange={[Function]}
37
+ osOptions={
38
+ Array [
39
+ Object {
40
+ "label": "macOS",
41
+ "value": "macOS",
42
+ },
43
+ Object {
44
+ "label": "iOS",
45
+ "value": "iOS",
46
+ },
47
+ Object {
48
+ "label": "iPadOS",
49
+ "value": "iPadOS",
50
+ },
51
+ Object {
52
+ "label": "Windows",
53
+ "value": "Windows",
54
+ },
55
+ Object {
56
+ "label": "Android (Mobile)",
57
+ "value": "Android (Mobile)",
58
+ },
59
+ Object {
60
+ "label": "Android (Tablet)",
61
+ "value": "Android (Tablet)",
62
+ },
63
+ ]
64
+ }
65
+ selectedBrowser="Chrome"
66
+ selectedOS="macOS"
67
+ selectedState="Collapsed"
68
+ showStateDropdown={true}
69
+ stateDropdownDisabled={false}
70
+ stateOptions={
71
+ Array [
72
+ Object {
73
+ "label": "Collapsed",
74
+ "value": "Collapsed",
75
+ },
76
+ Object {
77
+ "label": "Expanded",
78
+ "value": "Expanded",
79
+ },
80
+ ]
81
+ }
82
+ />
83
+ <div
84
+ className="device-preview-container"
85
+ >
86
+ <div
87
+ className="device-frame-wrapper"
88
+ >
89
+ <div
90
+ className="device-frame-asset"
91
+ >
92
+ <img
93
+ alt="macOS device frame"
94
+ className="device-frame"
95
+ src="test-file-stub"
96
+ />
97
+ <div
98
+ className="device-notification-wrapper"
99
+ style={
100
+ Object {
101
+ "left": "580px",
102
+ "position": "absolute",
103
+ "top": "57px",
104
+ "zIndex": 10,
105
+ }
106
+ }
107
+ >
108
+ <MockNotificationContainer
109
+ brandIconSrc="https://example.com/icon.png"
110
+ buttons={Array []}
111
+ className="macos-chrome"
112
+ enableCtas={false}
113
+ enableMedia={false}
114
+ icon="test-file-stub"
115
+ imageSrc="https://example.com/image.jpg"
116
+ notificationBody="Test notification body text"
117
+ notificationState="Collapsed"
118
+ notificationTitle="Test Notification Title"
119
+ selectedBrowser="Chrome"
120
+ selectedOS="macOS"
121
+ showSeparateIOSCTAs={true}
122
+ supportsExpanded={false}
123
+ url="https://www.example.com"
124
+ />
125
+ </div>
126
+ </div>
127
+ </div>
128
+ </div>
129
+ </CapColumn>
130
+ </CapRow>
131
+ `;
@@ -0,0 +1,112 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`NotificationContainer Basic Rendering should render correctly with default props 1`] = `
4
+ <div
5
+ className="notification-container macos-chrome collapsed"
6
+ >
7
+ <NotificationHeader
8
+ brandIcon=""
9
+ displayUrl="example.com"
10
+ icon="test-file-stub"
11
+ isExpanded={false}
12
+ notificationBody="Test notification body text"
13
+ notificationTitle="Test Notification Title"
14
+ selectedBrowser="Chrome"
15
+ shouldShowBrandIcon={false}
16
+ />
17
+ </div>
18
+ `;
19
+
20
+ exports[`NotificationContainer Snapshot Tests should match snapshot for Android Mobile Chrome expanded 1`] = `
21
+ <div
22
+ className="notification-container android-mobile-chrome expanded"
23
+ >
24
+ <AndroidMobileExpanded
25
+ brandIcon=""
26
+ ctaButtons={Array []}
27
+ displayUrl="example.com"
28
+ enableCtas={true}
29
+ icon="test-file-stub"
30
+ mediaImageUrl=""
31
+ notificationBody="Test notification body text"
32
+ notificationTitle="Test Notification Title"
33
+ selectedBrowser="Chrome"
34
+ shouldShowBrandIcon={false}
35
+ shouldShowBrandIconExpanded={false}
36
+ />
37
+ </div>
38
+ `;
39
+
40
+ exports[`NotificationContainer Snapshot Tests should match snapshot for Windows Chrome expanded 1`] = `
41
+ <div
42
+ className="notification-container windows-chrome expanded windows-chrome-expanded"
43
+ >
44
+ <WindowsChromeExpanded
45
+ brandIcon=""
46
+ browserName="Google Chrome"
47
+ ctaButtons={Array []}
48
+ displayUrl="example.com"
49
+ enableBrandIconPreview={true}
50
+ enableCtas={true}
51
+ icon="test-file-stub"
52
+ mediaImageUrl=""
53
+ notificationBody="Test notification body text"
54
+ notificationTitle="Test Notification Title"
55
+ />
56
+ </div>
57
+ `;
58
+
59
+ exports[`NotificationContainer Snapshot Tests should match snapshot for iOS Safari collapsed 1`] = `
60
+ <div
61
+ className="notification-container ios-safari collapsed"
62
+ >
63
+ <IOSHeader
64
+ icon="test-file-stub"
65
+ notificationBody="Test notification body text"
66
+ notificationTitle="Test Notification Title"
67
+ selectedBrowser="Safari"
68
+ />
69
+ </div>
70
+ `;
71
+
72
+ exports[`NotificationContainer Snapshot Tests should match snapshot for macOS Chrome collapsed 1`] = `
73
+ <div
74
+ className="notification-container macos-chrome collapsed"
75
+ >
76
+ <NotificationHeader
77
+ brandIcon=""
78
+ displayUrl="example.com"
79
+ icon="test-file-stub"
80
+ isExpanded={false}
81
+ notificationBody="Test notification body text"
82
+ notificationTitle="Test Notification Title"
83
+ selectedBrowser="Chrome"
84
+ shouldShowBrandIcon={false}
85
+ />
86
+ </div>
87
+ `;
88
+
89
+ exports[`NotificationContainer Snapshot Tests should match snapshot for macOS Chrome expanded 1`] = `
90
+ <div
91
+ className="notification-container macos-chrome expanded"
92
+ >
93
+ <NotificationHeader
94
+ brandIcon=""
95
+ displayUrl="example.com"
96
+ icon="test-file-stub"
97
+ isExpanded={true}
98
+ notificationBody="Test notification body text"
99
+ notificationTitle="Test Notification Title"
100
+ selectedBrowser="Chrome"
101
+ shouldShowBrandIcon={false}
102
+ />
103
+ <NotificationExpandedContent
104
+ brandIcon=""
105
+ ctaButtons={Array []}
106
+ enableCtas={true}
107
+ mediaImageUrl=""
108
+ shouldRenderExpandedMedia={false}
109
+ shouldShowBrandIconInExpandedMac={false}
110
+ />
111
+ </div>
112
+ `;
@@ -0,0 +1,144 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`PreviewControls Basic Rendering should render correctly with default props 1`] = `
4
+ <Fragment>
5
+ <CapRow
6
+ className="preview-controls"
7
+ >
8
+ <CapColumn
9
+ className="preview-control-os"
10
+ span={12}
11
+ >
12
+ <CapLabel
13
+ className="preview-control-label"
14
+ fontWeight="bold"
15
+ type="label1"
16
+ >
17
+ <FormattedMessage
18
+ defaultMessage="Operating system"
19
+ id="creatives.containersV2.WebPush.operatingSystem"
20
+ values={Object {}}
21
+ />
22
+ </CapLabel>
23
+ <_Class
24
+ labelPosition="top"
25
+ onChange={[Function]}
26
+ options={
27
+ Array [
28
+ Object {
29
+ "label": "macOS",
30
+ "value": "macOS",
31
+ },
32
+ Object {
33
+ "label": "iOS",
34
+ "value": "iOS",
35
+ },
36
+ Object {
37
+ "label": "iPadOS",
38
+ "value": "iPadOS",
39
+ },
40
+ Object {
41
+ "label": "Windows",
42
+ "value": "Windows",
43
+ },
44
+ Object {
45
+ "label": "Android (Mobile)",
46
+ "value": "Android (Mobile)",
47
+ },
48
+ Object {
49
+ "label": "Android (Tablet)",
50
+ "value": "Android (Tablet)",
51
+ },
52
+ ]
53
+ }
54
+ value="macOS"
55
+ width="100%"
56
+ />
57
+ </CapColumn>
58
+ <CapColumn
59
+ className="preview-control-browser"
60
+ span={12}
61
+ >
62
+ <CapLabel
63
+ className="preview-control-label"
64
+ fontWeight="bold"
65
+ type="label1"
66
+ >
67
+ <FormattedMessage
68
+ defaultMessage="Browser"
69
+ id="creatives.containersV2.WebPush.browser"
70
+ values={Object {}}
71
+ />
72
+ </CapLabel>
73
+ <_Class
74
+ labelPosition="top"
75
+ onChange={[Function]}
76
+ options={
77
+ Array [
78
+ Object {
79
+ "label": "Chrome",
80
+ "value": "Chrome",
81
+ },
82
+ Object {
83
+ "label": "Firefox",
84
+ "value": "Firefox",
85
+ },
86
+ Object {
87
+ "label": "Edge",
88
+ "value": "Edge",
89
+ },
90
+ Object {
91
+ "label": "Safari",
92
+ "value": "Safari",
93
+ },
94
+ Object {
95
+ "label": "Opera",
96
+ "value": "Opera",
97
+ },
98
+ ]
99
+ }
100
+ value="Chrome"
101
+ width="100%"
102
+ />
103
+ </CapColumn>
104
+ </CapRow>
105
+ <CapRow
106
+ className="preview-controls-state"
107
+ >
108
+ <CapColumn
109
+ className="preview-control-state"
110
+ span={12}
111
+ >
112
+ <CapLabel
113
+ className="preview-control-label"
114
+ fontWeight="bold"
115
+ type="label1"
116
+ >
117
+ <FormattedMessage
118
+ defaultMessage="State"
119
+ id="creatives.containersV2.WebPush.state"
120
+ values={Object {}}
121
+ />
122
+ </CapLabel>
123
+ <_Class
124
+ labelPosition="top"
125
+ onChange={[MockFunction]}
126
+ options={
127
+ Array [
128
+ Object {
129
+ "label": "Collapsed",
130
+ "value": "Collapsed",
131
+ },
132
+ Object {
133
+ "label": "Expanded",
134
+ "value": "Expanded",
135
+ },
136
+ ]
137
+ }
138
+ value="Collapsed"
139
+ width="100%"
140
+ />
141
+ </CapColumn>
142
+ </CapRow>
143
+ </Fragment>
144
+ `;
@@ -0,0 +1,129 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`WebPushPreview Basic Rendering should render correctly with default props 1`] = `
4
+ <CapRow
5
+ className="webpush-preview-container"
6
+ >
7
+ <CapColumn
8
+ span={24}
9
+ >
10
+ <PreviewControls
11
+ browserOptions={
12
+ Array [
13
+ Object {
14
+ "label": "Chrome",
15
+ "value": "Chrome",
16
+ },
17
+ Object {
18
+ "label": "Firefox",
19
+ "value": "Firefox",
20
+ },
21
+ Object {
22
+ "label": "Edge",
23
+ "value": "Edge",
24
+ },
25
+ Object {
26
+ "label": "Safari",
27
+ "value": "Safari",
28
+ },
29
+ Object {
30
+ "label": "Opera",
31
+ "value": "Opera",
32
+ },
33
+ ]
34
+ }
35
+ layoutMode="newRow"
36
+ onBrowserChange={[Function]}
37
+ onOSChange={[Function]}
38
+ osOptions={
39
+ Array [
40
+ Object {
41
+ "label": "macOS",
42
+ "value": "macOS",
43
+ },
44
+ Object {
45
+ "label": "iOS",
46
+ "value": "iOS",
47
+ },
48
+ Object {
49
+ "label": "iPadOS",
50
+ "value": "iPadOS",
51
+ },
52
+ Object {
53
+ "label": "Windows",
54
+ "value": "Windows",
55
+ },
56
+ Object {
57
+ "label": "Android (Mobile)",
58
+ "value": "Android (Mobile)",
59
+ },
60
+ Object {
61
+ "label": "Android (Tablet)",
62
+ "value": "Android (Tablet)",
63
+ },
64
+ ]
65
+ }
66
+ selectedBrowser="Chrome"
67
+ selectedOS="macOS"
68
+ showStateDropdown={false}
69
+ />
70
+ <PreviewContent
71
+ brandIconSrc="https://example.com/icon.png"
72
+ buttons={Array []}
73
+ imageSrc="https://example.com/image.jpg"
74
+ notificationBody="Test notification body text"
75
+ notificationState="Collapsed"
76
+ notificationTitle="Test Notification Title"
77
+ selectedBrowser="Chrome"
78
+ selectedOS="macOS"
79
+ url="https://www.example.com"
80
+ />
81
+ <PreviewDisclaimer />
82
+ <CapRow
83
+ className="preview-all-devices-button"
84
+ >
85
+ <CapColumn
86
+ span={24}
87
+ >
88
+ <CapButton
89
+ className="preview-all-devices-trigger"
90
+ data-test-id="webpush-preview-toggle"
91
+ isAddBtn={false}
92
+ onClick={[Function]}
93
+ type="flat"
94
+ >
95
+ <FormattedMessage
96
+ defaultMessage="Preview in all devices"
97
+ id="creatives.containersV2.WebPush.previewInAllDevices"
98
+ values={Object {}}
99
+ />
100
+ </CapButton>
101
+ </CapColumn>
102
+ </CapRow>
103
+ </CapColumn>
104
+ <MockCapSlideBox
105
+ className="webpush-preview-slidebox"
106
+ content={
107
+ <DevicePreviewContent
108
+ brandIconSrc="https://example.com/icon.png"
109
+ buttons={Array []}
110
+ imageSrc="https://example.com/image.jpg"
111
+ layoutMode="compact"
112
+ notificationBody="Test notification body text"
113
+ notificationTitle="Test Notification Title"
114
+ url="https://www.example.com"
115
+ />
116
+ }
117
+ handleClose={[Function]}
118
+ header={
119
+ <FormattedMessage
120
+ defaultMessage="Web push notification preview"
121
+ id="creatives.containersV2.WebPush.webPushNotificationPreview"
122
+ values={Object {}}
123
+ />
124
+ }
125
+ show={false}
126
+ size="size-xl"
127
+ />
128
+ </CapRow>
129
+ `;
@@ -0,0 +1,94 @@
1
+ import {
2
+ WEBPUSH,
3
+ WEBPUSH_MEDIA_TYPES,
4
+ IMAGE_UPLOAD_METHODS,
5
+ BRAND_ICON_OPTIONS,
6
+ ON_CLICK_BEHAVIOUR_OPTIONS,
7
+ ACTION_TYPES,
8
+ } from '../../constants';
9
+
10
+ /**
11
+ * Creates the payload structure for Web Push template creation/editing
12
+ * @param {Object} params - All parameters needed to build the payload
13
+ * @returns {Object} The formatted Web Push payload
14
+ */
15
+ export const createWebPushPayload = ({
16
+ templateName,
17
+ notificationTitle,
18
+ message,
19
+ mediaType,
20
+ accountId,
21
+ isFullMode,
22
+ imageSrc,
23
+ imageUrl,
24
+ imageUploadMethod,
25
+ brandIconOption,
26
+ brandIconSrc,
27
+ brandIconUrl,
28
+ buttons,
29
+ onClickBehaviour,
30
+ redirectUrl,
31
+ }) => {
32
+ const trimmedTemplateName = (templateName || '').trim();
33
+ const trimmedTitle = (notificationTitle || '').trim();
34
+ const trimmedMessage = (message || '').trim();
35
+
36
+ const webpushContent = {
37
+ title: trimmedTitle,
38
+ message: trimmedMessage,
39
+ ...(mediaType && mediaType !== WEBPUSH_MEDIA_TYPES.NONE ? { mediaType } : {}),
40
+ };
41
+
42
+ // Add image data if media type is IMAGE
43
+ if (mediaType === WEBPUSH_MEDIA_TYPES.IMAGE) {
44
+ if (imageUploadMethod === IMAGE_UPLOAD_METHODS.UPLOAD_IMAGE && imageSrc) {
45
+ webpushContent.image = imageSrc;
46
+ } else if (imageUploadMethod === IMAGE_UPLOAD_METHODS.ADD_IMAGE_URL && imageSrc) {
47
+ // Use imageSrc (uploaded secure_file_path) instead of imageUrl
48
+ // NOTE: To move upload to save event, check imageUrl exists but imageSrc is empty, upload, then use secure_file_path
49
+ webpushContent.image = imageSrc;
50
+ }
51
+ }
52
+
53
+ // Add brand icon data if option is not DONT_SHOW
54
+ if (brandIconOption !== BRAND_ICON_OPTIONS.DONT_SHOW && brandIconSrc) {
55
+ webpushContent.brandIcon = brandIconSrc;
56
+ }
57
+
58
+ // Add on-click behaviour for the notification body
59
+ if (onClickBehaviour === ON_CLICK_BEHAVIOUR_OPTIONS.REDIRECT_TO_URL && redirectUrl) {
60
+ webpushContent.onClickAction = {
61
+ type: ACTION_TYPES.URL,
62
+ url: redirectUrl.trim(),
63
+ };
64
+ } else if (onClickBehaviour === ON_CLICK_BEHAVIOUR_OPTIONS.OPEN_SITE) {
65
+ webpushContent.onClickAction = {
66
+ type: ACTION_TYPES.OPEN_SITE,
67
+ };
68
+ }
69
+
70
+ // Add CTA buttons if any exist
71
+ if (buttons?.length > 0) {
72
+ webpushContent.ctas = buttons.map((button) => ({
73
+ actionText: button.text,
74
+ type: ACTION_TYPES.URL,
75
+ actionLink: button.url,
76
+ }));
77
+ }
78
+
79
+ return {
80
+ name: (isFullMode ? trimmedTemplateName : trimmedTitle) || trimmedTitle,
81
+ type: WEBPUSH,
82
+ definition: {
83
+ accountId,
84
+ },
85
+ versions: {
86
+ base: {
87
+ content: {
88
+ webpush: webpushContent,
89
+ },
90
+ },
91
+ },
92
+ };
93
+ };
94
+